diff --git a/packages/overlayscrollbars/dist/overlayscrollbars.esm.js b/packages/overlayscrollbars/dist/overlayscrollbars.esm.js index 741fb17..982a2ed 100644 --- a/packages/overlayscrollbars/dist/overlayscrollbars.esm.js +++ b/packages/overlayscrollbars/dist/overlayscrollbars.esm.js @@ -471,6 +471,7 @@ const equal = (a, b, props, propMutation) => { return false; }; const equalWH = (a, b) => equal(a, b, ['w', 'h']); +const equalXY = (a, b) => equal(a, b, ['x', 'y']); const equalTRBL = (a, b) => equal(a, b, ['t', 'r', 'b', 'l']); const equalBCRWH = (a, b, round) => equal(a, b, ['width', 'height'], round && (value => Math.round(value))); @@ -1288,18 +1289,9 @@ const createSizeObserver = (target, onSizeChangedCallback, options) => { } prependChildren(target, sizeObserver); - return { - _destroy() { - runEach(offListeners); - removeElements(sizeObserver); - }, - - _getCurrentCacheValues(force) { - return { - _directionIsRTL: directionIsRTLCache ? directionIsRTLCache[1](force) : [false, false, false] - }; - } - + return () => { + runEach(offListeners); + removeElements(sizeObserver); }; }; @@ -1308,7 +1300,7 @@ const isHeightIntrinsic = ioEntryOrSize => ioEntryOrSize.h === 0 || ioEntryOrSiz const createTrinsicObserver = (target, onTrinsicChangedCallback) => { const trinsicObserver = createDiv(classNameTrinsicObserver); const offListeners = []; - const [updateHeightIntrinsicCache, getCurrentHeightIntrinsicCache] = createCache({ + const [updateHeightIntrinsicCache] = createCache({ _initialValue: false }); @@ -1341,23 +1333,14 @@ const createTrinsicObserver = (target, onTrinsicChangedCallback) => { triggerOnTrinsicChangedCallback(newSize); }; - push(offListeners, createSizeObserver(trinsicObserver, onSizeChanged)._destroy); + push(offListeners, createSizeObserver(trinsicObserver, onSizeChanged)); onSizeChanged(); } prependChildren(target, trinsicObserver); - return { - _destroy() { - runEach(offListeners); - removeElements(trinsicObserver); - }, - - _getCurrentCacheValues(force) { - return { - _heightIntrinsic: getCurrentHeightIntrinsicCache(force) - }; - } - + return () => { + runEach(offListeners); + removeElements(trinsicObserver); }; }; @@ -1640,8 +1623,8 @@ const lifecycleHubOservers = (instance, updateLifecycles) => { } }; - const trinsicObserver = (_content || !_flexboxGlue) && createTrinsicObserver(_host, onTrinsicChanged); - const sizeObserver = createSizeObserver(_host, onSizeChanged, { + const destroyTrinsicObserver = (_content || !_flexboxGlue) && createTrinsicObserver(_host, onTrinsicChanged); + const destroySizeObserver = createSizeObserver(_host, onSizeChanged, { _appear: true, _direction: !_nativeScrollbarStyling }); @@ -1691,21 +1674,13 @@ const lifecycleHubOservers = (instance, updateLifecycles) => { }; updateViewportAttrsFromHost(); - return { - _trinsicObserver: trinsicObserver, - _sizeObserver: sizeObserver, - _updateObserverOptions: updateOptions, + return [updateOptions, () => { + contentMutationObserver && contentMutationObserver._destroy(); + destroyTrinsicObserver && destroyTrinsicObserver(); + destroySizeObserver(); - _destroy() { - contentMutationObserver && contentMutationObserver._destroy(); - trinsicObserver && trinsicObserver._destroy(); - - sizeObserver._destroy(); - - hostMutationObserver._destroy(); - } - - }; + hostMutationObserver._destroy(); + }]; }; const createTrinsicLifecycle = lifecycleHub => { @@ -1820,6 +1795,13 @@ const whCacheOptions = { h: 0 } }; +const xyCacheOptions = { + _equal: equalXY, + _initialValue: { + x: false, + y: false + } +}; const sizeFraction = elm => { const viewportOffsetSize = offsetSize(elm); @@ -1873,6 +1855,7 @@ const createOverflowLifecycle = lifecycleHub => { const [updateViewportSizeFraction, getCurrentViewportSizeFraction] = createCache(whCacheOptions, sizeFraction.bind(0, _viewport)); const [updateViewportScrollSizeCache, getCurrentViewportScrollSizeCache] = createCache(whCacheOptions, scrollSize.bind(0, _viewport)); const [updateOverflowAmountCache, getCurrentOverflowAmountCache] = createCache(whCacheOptions); + const [updateOverflowScrollCache] = createCache(xyCacheOptions); const fixFlexboxGlue = (viewportOverflowState, heightIntrinsic) => { style(_viewport, { @@ -2189,8 +2172,8 @@ const createOverflowLifecycle = lifecycleHub => { style(_viewport, viewportStyle); _setLifecycleCommunication({ - _viewportOverflowScroll: viewportOverflowState._overflowScroll, - _viewportOverflowAmount: overflowAmount + _viewportOverflowScrollCache: updateOverflowScrollCache(viewportOverflowState._overflowScroll), + _viewportOverflowAmountCache: overflowAmuntCache }); } }; @@ -2198,6 +2181,8 @@ const createOverflowLifecycle = lifecycleHub => { const getPropByPath = (obj, path) => obj ? path.split('.').reduce((o, prop) => o && hasOwnProperty(o, prop) ? o[prop] : undefined, obj) : undefined; +const applyForceToCache = (cacheValues, force) => [cacheValues[0], force || cacheValues[1], cacheValues[2]]; + const booleanCacheValuesFallback = [false, false, false]; const lifecycleCommunicationFallback = { _paddingInfo: { @@ -2209,14 +2194,14 @@ const lifecycleCommunicationFallback = { l: 0 } }, - _viewportOverflowScroll: { + _viewportOverflowScrollCache: [{ x: false, y: false - }, - _viewportOverflowAmount: { + }, false], + _viewportOverflowAmountCache: [{ w: 0, h: 0 - }, + }, false], _viewportPaddingStyle: { marginRight: 0, marginBottom: 0, @@ -2227,8 +2212,35 @@ const lifecycleCommunicationFallback = { paddingLeft: 0 } }; -const createLifecycleHub = (options, triggerEvent, structureSetup, scrollbarsSetup) => { + +const prepareUpdateHints = (leading, adaptive, force) => { + const result = {}; + const finalAdaptive = adaptive || {}; + const objKeys = keys(leading).concat(keys(finalAdaptive)); + each(objKeys, key => { + const leadingValue = leading[key]; + const adaptiveValue = finalAdaptive[key]; + result[key] = isBoolean(leadingValue) ? !!force || !!leadingValue || !!adaptiveValue : applyForceToCache(leadingValue || booleanCacheValuesFallback, force); + }); + return result; +}; + +const createOverflowChangedArgs = (overflowAmount, overflowScroll) => ({ + amount: { + x: overflowAmount.w, + y: overflowAmount.h + }, + overflow: { + x: overflowAmount.w > 0, + y: overflowAmount.h > 0 + }, + scrollableOverflow: assignDeep({}, overflowScroll) +}); + +const createLifecycleHub = (options, triggerListener, structureSetup, scrollbarsSetup) => { let lifecycleCommunication = lifecycleCommunicationFallback; + let updateObserverOptions; + let destroyObservers; const { _viewport } = structureSetup._targetObj; @@ -2254,16 +2266,14 @@ const createLifecycleHub = (options, triggerEvent, structureSetup, scrollbarsSet const lifecycles = [createTrinsicLifecycle(instance), createPaddingLifecycle(instance), createOverflowLifecycle(instance)]; const updateLifecycles = (updateHints, changedOptions, force) => { - let { - _directionIsRTL, - _heightIntrinsic, - _sizeChanged = force || false, - _hostMutation = force || false, - _contentMutation = force || false, - _paddingStyleChanged = force || false - } = updateHints || {}; - const finalDirectionIsRTL = _directionIsRTL || (_sizeObserver ? _sizeObserver._getCurrentCacheValues(force)._directionIsRTL : booleanCacheValuesFallback); - const finalHeightIntrinsic = _heightIntrinsic || (_trinsicObserver ? _trinsicObserver._getCurrentCacheValues(force)._heightIntrinsic : booleanCacheValuesFallback); + const initialUpdateHints = prepareUpdateHints(assignDeep({ + _sizeChanged: false, + _hostMutation: false, + _contentMutation: false, + _paddingStyleChanged: false, + _directionIsRTL: booleanCacheValuesFallback, + _heightIntrinsic: booleanCacheValuesFallback + }, updateHints), {}, force); const checkOption = path => [getPropByPath(options, path), force || getPropByPath(changedOptions, path) !== undefined]; @@ -2271,28 +2281,13 @@ const createLifecycleHub = (options, triggerEvent, structureSetup, scrollbarsSet const scrollOffsetX = adjustScrollOffset && scrollLeft(_viewport); const scrollOffsetY = adjustScrollOffset && scrollTop(_viewport); - if (_updateObserverOptions) { - _updateObserverOptions(checkOption); + if (updateObserverOptions) { + updateObserverOptions(checkOption); } + let adaptivedUpdateHints = initialUpdateHints; each(lifecycles, lifecycle => { - const { - _sizeChanged: adaptiveSizeChanged, - _hostMutation: adaptiveHostMutation, - _contentMutation: adaptiveContentMutation, - _paddingStyleChanged: adaptivePaddingStyleChanged - } = lifecycle({ - _directionIsRTL: finalDirectionIsRTL, - _heightIntrinsic: finalHeightIntrinsic, - _sizeChanged, - _hostMutation, - _contentMutation, - _paddingStyleChanged - }, checkOption, !!force) || {}; - _sizeChanged = adaptiveSizeChanged || _sizeChanged; - _hostMutation = adaptiveHostMutation || _hostMutation; - _contentMutation = adaptiveContentMutation || _contentMutation; - _paddingStyleChanged = adaptivePaddingStyleChanged || _paddingStyleChanged; + adaptivedUpdateHints = prepareUpdateHints(adaptivedUpdateHints, lifecycle(adaptivedUpdateHints, checkOption, !!force) || {}, force); }); if (isNumber(scrollOffsetX)) { @@ -2303,35 +2298,42 @@ const createLifecycleHub = (options, triggerEvent, structureSetup, scrollbarsSet scrollTop(_viewport, scrollOffsetY); } - triggerEvent('updated', { + const { + _viewportOverflowAmountCache: overflowAmountCache, + _viewportOverflowScrollCache: overflowScrollCache + } = lifecycleCommunication; + const [overflowAmount, overflowAmountChanged, prevOverflowAmount] = overflowAmountCache; + const [overflowScroll, overflowScrollChanged, prevOverflowScroll] = overflowScrollCache; + + if (overflowAmountChanged || overflowScrollChanged) { + triggerListener('overflowChanged', assignDeep({}, createOverflowChangedArgs(overflowAmount, overflowScroll), { + previous: createOverflowChangedArgs(prevOverflowAmount, prevOverflowScroll) + })); + } + + triggerListener('updated', { updateHints: { - sizeChanged: _sizeChanged, - contentMutation: _contentMutation, - hostMutation: _hostMutation, - directionChanged: finalDirectionIsRTL[1], - heightIntrinsicChanged: finalHeightIntrinsic[1] + sizeChanged: adaptivedUpdateHints._sizeChanged, + contentMutation: adaptivedUpdateHints._contentMutation, + hostMutation: adaptivedUpdateHints._hostMutation, + directionChanged: adaptivedUpdateHints._directionIsRTL[1], + heightIntrinsicChanged: adaptivedUpdateHints._heightIntrinsic[1] }, changedOptions: changedOptions || {}, force: !!force }); }; - const { - _sizeObserver, - _trinsicObserver, - _updateObserverOptions, - _destroy: destroyObservers - } = lifecycleHubOservers(instance, updateLifecycles); + [updateObserverOptions, destroyObservers] = lifecycleHubOservers(instance, updateLifecycles); const update = (changedOptions, force) => updateLifecycles({}, changedOptions, force); const envUpdateListener = update.bind(0, {}, true); addEnvironmentListener(envUpdateListener); - console.log(getEnvironment()); return { _update: update, _state: () => ({ - _overflowAmount: lifecycleCommunication._viewportOverflowAmount + _overflowAmount: lifecycleCommunication._viewportOverflowAmountCache[0] }), _destroy() { @@ -2417,7 +2419,7 @@ const manageListener = (callback, listener) => { each(isArray(listener) ? listener : [listener], callback); }; -const createEventHub = () => { +const createEventListenerHub = initialEventListeners => { const events = new Map(); const removeEvent = (name, listener) => { @@ -2448,14 +2450,27 @@ const createEventHub = () => { const triggerEvent = (name, args) => { const eventSet = events.get(name); each(from(eventSet), event => { - event(args); + if (args) { + event(args); + } else { + event(); + } }); }; + const initialListenerKeys = keys(initialEventListeners); + each(initialListenerKeys, key => { + addEvent(key, initialEventListeners[key]); + }); return [addEvent, removeEvent, triggerEvent]; }; -const OverlayScrollbars = (target, options) => { +const OverlayScrollbars = (target, options, eventListeners) => { + const { + _getDefaultOptions, + _nativeScrollbarIsOverlaid + } = getEnvironment(); + const plugins = getPlugins(); const instanceTarget = isHTMLElement(target) ? target : target.target; const potentialInstance = getInstance(instanceTarget); @@ -2463,10 +2478,6 @@ const OverlayScrollbars = (target, options) => { return potentialInstance; } - const { - _getDefaultOptions - } = getEnvironment(); - const plugins = getPlugins(); const optionsValidationPlugin = plugins[optionsValidationPluginName]; const validateOptions = newOptions => { @@ -2475,8 +2486,13 @@ const OverlayScrollbars = (target, options) => { return validate ? validate(opts, true) : opts; }; - const [addEvent, removeEvent, triggerEvent] = createEventHub(); const currentOptions = assignDeep({}, _getDefaultOptions(), validateOptions(options)); + const [addEvent, removeEvent, triggerEvent] = createEventListenerHub(eventListeners); + + if (_nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.y && !currentOptions.nativeScrollbarsOverlaid.initialize) { + triggerEvent('initializationWithdrawn', false); + } + const structureSetup = createStructureSetup(target); const scrollbarsSetup = createScrollbarsSetup(target, structureSetup); const lifecycleHub = createLifecycleHub(currentOptions, triggerEvent, structureSetup, scrollbarsSetup); @@ -2508,6 +2524,7 @@ const OverlayScrollbars = (target, options) => { removeInstance(instanceTarget); removeEvent(); + triggerEvent('destroyed', false); } }; each(keys(plugins), pluginName => { @@ -2519,6 +2536,7 @@ const OverlayScrollbars = (target, options) => { }); instance.update(true); addInstance(instanceTarget, instance); + triggerEvent('initialized', false); return instance; }; OverlayScrollbars.extend = addPlugin; diff --git a/packages/overlayscrollbars/dist/overlayscrollbars.esm.js.map b/packages/overlayscrollbars/dist/overlayscrollbars.esm.js.map index f0b5a7e..9c53dcd 100644 --- a/packages/overlayscrollbars/dist/overlayscrollbars.esm.js.map +++ b/packages/overlayscrollbars/dist/overlayscrollbars.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"overlayscrollbars.esm.js","sources":["../src/support/cache/cache.ts","../src/support/utils/types.ts","../src/support/utils/array.ts","../src/support/utils/object.ts","../src/support/dom/attribute.ts","../src/support/dom/traversal.ts","../src/support/dom/manipulation.ts","../src/support/dom/create.ts","../src/support/compatibility/vendors.ts","../src/support/compatibility/apis.ts","../src/support/dom/class.ts","../src/support/dom/dimensions.ts","../src/support/dom/events.ts","../src/support/utils/equal.ts","../src/support/utils/function.ts","../src/support/dom/style.ts","../src/support/dom/offset.ts","../src/classnames.ts","../../../node_modules/@babel/runtime/helpers/extends.js","../src/options.ts","../src/environment.ts","../src/setups/structureSetup.ts","../src/setups/scrollbarsSetup.ts","../src/observers/sizeObserver.ts","../src/observers/trinsicObserver.ts","../src/observers/domObserver.ts","../src/lifecycles/lifecycleHubObservers.ts","../src/lifecycles/trinsicLifecycle.ts","../src/lifecycles/paddingLifecycle.ts","../src/lifecycles/overflowLifecycle.ts","../src/lifecycles/lifecycleHub.ts","../src/plugins/plugins.ts","../src/plugins/optionsValidation/validation.ts","../src/plugins/optionsValidation/optionsValidation.ts","../src/instances.ts","../src/events.ts","../src/overlayscrollbars.ts"],"sourcesContent":["export interface CacheOptions {\r\n // initial value of _value.\r\n _initialValue: Value;\r\n // Custom comparison function if shallow compare isn't enough. Returns true if nothing changed.\r\n _equal?: EqualCachePropFunction;\r\n // If true always updates _value and _previous, otherwise they update only when they changed.\r\n _alwaysUpdateValues?: boolean;\r\n}\r\n\r\nexport type CacheValues = [\r\n T, // value\r\n boolean, // changed\r\n T | undefined // previous\r\n];\r\n\r\nexport type EqualCachePropFunction = (currentVal: Value, newVal: Value) => boolean;\r\n\r\nexport type CacheUpdater = (current: Value, previous?: Value) => Value;\r\n\r\nexport type UpdateCacheContextual = (newValue: Value, force?: boolean) => CacheValues;\r\n\r\nexport type UpdateCache = (force?: boolean) => CacheValues;\r\n\r\nexport type GetCurrentCache = (force?: boolean) => CacheValues;\r\n\r\nexport type Cache = [UpdateCache, GetCurrentCache];\r\n\r\nexport type CacheContextual = [UpdateCacheContextual, GetCurrentCache];\r\n\r\nexport function createCache(options: CacheOptions): CacheContextual;\r\nexport function createCache(\r\n options: CacheOptions,\r\n update: CacheUpdater\r\n): Cache;\r\nexport function createCache(\r\n options: CacheOptions,\r\n update?: CacheUpdater\r\n): CacheContextual | Cache {\r\n const { _initialValue, _equal, _alwaysUpdateValues } = options;\r\n let _value: Value = _initialValue;\r\n let _previous: Value | undefined;\r\n\r\n const cacheUpdateContextual: UpdateCacheContextual = (newValue, force?) => {\r\n const curr = _value;\r\n\r\n const newVal = newValue;\r\n const changed = force || (_equal ? !_equal(curr, newVal) : curr !== newVal);\r\n\r\n if (changed || _alwaysUpdateValues) {\r\n _value = newVal;\r\n _previous = curr;\r\n }\r\n\r\n return [_value, changed, _previous];\r\n };\r\n const cacheUpdateIsolated: UpdateCache = (force?) =>\r\n cacheUpdateContextual(update!(_value, _previous), force);\r\n\r\n const getCurrentCache: GetCurrentCache = (force?: boolean) => [\r\n _value,\r\n !!force, // changed\r\n _previous,\r\n ];\r\n\r\n return [update ? cacheUpdateIsolated : cacheUpdateContextual, getCurrentCache] as\r\n | CacheContextual\r\n | Cache;\r\n}\r\n","import { PlainObject } from 'typings';\r\n\r\nconst ElementNodeType = Node.ELEMENT_NODE;\r\nconst { toString, hasOwnProperty } = Object.prototype;\r\n\r\nexport function isUndefined(obj: any): obj is undefined {\r\n return obj === undefined;\r\n}\r\n\r\nexport function isNull(obj: any): obj is null {\r\n return obj === null;\r\n}\r\n\r\nexport const type: (obj: any) => string = (obj) =>\r\n isUndefined(obj) || isNull(obj)\r\n ? `${obj}`\r\n : toString\r\n .call(obj)\r\n .replace(/^\\[object (.+)\\]$/, '$1')\r\n .toLowerCase();\r\n\r\nexport function isNumber(obj: any): obj is number {\r\n return typeof obj === 'number';\r\n}\r\n\r\nexport function isString(obj: any): obj is string {\r\n return typeof obj === 'string';\r\n}\r\n\r\nexport function isBoolean(obj: any): obj is boolean {\r\n return typeof obj === 'boolean';\r\n}\r\n\r\nexport function isFunction(obj: any): obj is (...args: any[]) => any {\r\n return typeof obj === 'function';\r\n}\r\n\r\nexport function isArray(obj: any): obj is Array {\r\n return Array.isArray(obj);\r\n}\r\n\r\nexport function isObject(obj: any): boolean {\r\n return typeof obj === 'object' && !isArray(obj) && !isNull(obj);\r\n}\r\n\r\n/**\r\n * Returns true if the given object is array like, false otherwise.\r\n * @param obj The Object\r\n */\r\nexport function isArrayLike(obj: any): obj is ArrayLike {\r\n const length = !!obj && obj.length;\r\n const lengthCorrectFormat = isNumber(length) && length > -1 && length % 1 == 0; // eslint-disable-line eqeqeq\r\n\r\n return isArray(obj) || (!isFunction(obj) && lengthCorrectFormat)\r\n ? length > 0 && isObject(obj)\r\n ? length - 1 in obj\r\n : true\r\n : false;\r\n}\r\n\r\n/**\r\n * Returns true if the given object is a \"plain\" (e.g. { key: value }) object, false otherwise.\r\n * @param obj The Object.\r\n */\r\nexport function isPlainObject(obj: any): obj is PlainObject {\r\n if (!obj || !isObject(obj) || type(obj) !== 'object') return false;\r\n\r\n let key;\r\n const cstr = 'constructor';\r\n const ctor = obj[cstr];\r\n const ctorProto = ctor && ctor.prototype;\r\n const hasOwnConstructor = hasOwnProperty.call(obj, cstr);\r\n const hasIsPrototypeOf = ctorProto && hasOwnProperty.call(ctorProto, 'isPrototypeOf');\r\n\r\n if (ctor && !hasOwnConstructor && !hasIsPrototypeOf) {\r\n return false;\r\n }\r\n\r\n /* eslint-disable no-restricted-syntax */\r\n for (key in obj) {\r\n /**/\r\n }\r\n /* eslint-enable */\r\n\r\n return isUndefined(key) || hasOwnProperty.call(obj, key);\r\n}\r\n\r\n/**\r\n * Checks whether the given object is a HTMLElement.\r\n * @param obj The object which shall be checked.\r\n */\r\nexport function isHTMLElement(obj: any): obj is HTMLElement {\r\n const instanceofObj = window.HTMLElement;\r\n return obj\r\n ? instanceofObj\r\n ? obj instanceof instanceofObj\r\n : obj.nodeType === ElementNodeType\r\n : false;\r\n}\r\n\r\n/**\r\n * Checks whether the given object is a Element.\r\n * @param obj The object which shall be checked.\r\n */\r\nexport function isElement(obj: any): obj is Element {\r\n const instanceofObj = window.Element;\r\n return obj\r\n ? instanceofObj\r\n ? obj instanceof instanceofObj\r\n : obj.nodeType === ElementNodeType\r\n : false;\r\n}\r\n","import { isArrayLike, isString } from 'support/utils/types';\r\nimport { PlainObject } from 'typings';\r\n\r\ntype RunEachItem = ((...args: any) => any | any[]) | null | undefined;\r\n\r\n/**\r\n * Iterates through a array or object\r\n * @param arrayLikeOrObject The array or object through which shall be iterated.\r\n * @param callback The function which is responsible for the iteration.\r\n * If the function returns true its treated like a \"continue\" statement.\r\n * If the function returns false its treated like a \"break\" statement.\r\n */\r\nexport function each(\r\n array: Array | ReadonlyArray,\r\n callback: (value: T, indexOrKey: number, source: Array) => boolean | unknown\r\n): Array | ReadonlyArray;\r\nexport function each(\r\n array: Array | ReadonlyArray | null | undefined,\r\n callback: (value: T, indexOrKey: number, source: Array) => boolean | unknown\r\n): Array | ReadonlyArray | null | undefined;\r\nexport function each(\r\n arrayLikeObject: ArrayLike,\r\n callback: (value: T, indexOrKey: number, source: ArrayLike) => boolean | unknown\r\n): ArrayLike;\r\nexport function each(\r\n arrayLikeObject: ArrayLike | null | undefined,\r\n callback: (value: T, indexOrKey: number, source: ArrayLike) => boolean | unknown\r\n): ArrayLike | null | undefined;\r\nexport function each(\r\n obj: PlainObject,\r\n callback: (value: any, indexOrKey: string, source: PlainObject) => boolean | unknown\r\n): PlainObject;\r\nexport function each(\r\n obj: PlainObject | null | undefined,\r\n callback: (value: any, indexOrKey: string, source: PlainObject) => boolean | unknown\r\n): PlainObject | null | undefined;\r\nexport function each(\r\n source: ArrayLike | PlainObject | null | undefined,\r\n callback: (value: T, indexOrKey: any, source: any) => boolean | unknown\r\n): Array | ReadonlyArray | ArrayLike | PlainObject | null | undefined {\r\n if (isArrayLike(source)) {\r\n for (let i = 0; i < source.length; i++) {\r\n if (callback(source[i], i, source) === false) {\r\n break;\r\n }\r\n }\r\n } else if (source) {\r\n each(Object.keys(source), (key) => callback(source[key], key, source));\r\n }\r\n return source;\r\n}\r\n\r\n/**\r\n * Returns the index of the given inside the given array or -1 if the given item isn't part of the given array.\r\n * @param arr The array.\r\n * @param item The item.\r\n * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.\r\n */\r\nexport const indexOf = (arr: T[], item: T, fromIndex?: number): number =>\r\n arr.indexOf(item, fromIndex);\r\n\r\n/**\r\n * Pushesh all given items into the given array and returns it.\r\n * @param array The array the items shall be pushed into.\r\n * @param items The items which shall be pushed into the array.\r\n */\r\nexport const push = (array: T[], items: T | ArrayLike, arrayIsSingleItem?: boolean): T[] => {\r\n !arrayIsSingleItem && !isString(items) && isArrayLike(items)\r\n ? Array.prototype.push.apply(array, items as T[])\r\n : array.push(items as T);\r\n return array;\r\n};\r\n\r\n/**\r\n * Creates a shallow-copied Array instance from an array-like or iterable object.\r\n * @param arr The object from which the array instance shall be created.\r\n */\r\nexport const from = (arr?: ArrayLike | Set) => {\r\n if (Array.from && arr) {\r\n return Array.from(arr);\r\n }\r\n const result: T[] = [];\r\n\r\n if (arr instanceof Set) {\r\n arr.forEach((value) => {\r\n push(result, value);\r\n });\r\n } else {\r\n each(arr, (elm) => {\r\n push(result, elm);\r\n });\r\n }\r\n\r\n return result;\r\n};\r\n\r\n/**\r\n * Check whether the passed array is empty.\r\n * @param array The array which shall be checked.\r\n */\r\nexport const isEmptyArray = (array: any[] | null | undefined): boolean =>\r\n !!array && array.length === 0;\r\n\r\n/**\r\n * Calls all functions in the passed array/set of functions.\r\n * @param arr The array filled with function which shall be called.\r\n * @param p1 The first param.\r\n */\r\nexport const runEach = (arr: ArrayLike | Set, p1?: unknown): void => {\r\n const runFn = (fn: RunEachItem) => fn && fn(p1);\r\n if (arr instanceof Set) {\r\n arr.forEach(runFn);\r\n } else {\r\n each(arr, runFn);\r\n }\r\n};\r\n","import { isArray, isFunction, isPlainObject, isNull } from 'support/utils/types';\r\nimport { each } from 'support/utils/array';\r\n\r\n/**\r\n * Determines whether the passed object has a property with the passed name.\r\n * @param obj The object.\r\n * @param prop The name of the property.\r\n */\r\nexport const hasOwnProperty = (obj: any, prop: string | number | symbol): boolean =>\r\n Object.prototype.hasOwnProperty.call(obj, prop);\r\n\r\n/**\r\n * Returns the names of the enumerable string properties and methods of an object.\r\n * @param obj The object of which the properties shall be returned.\r\n */\r\nexport const keys = (obj: any): Array => (obj ? Object.keys(obj) : []);\r\n\r\n// https://github.com/jquery/jquery/blob/master/src/core.js#L116\r\nexport function assignDeep(target: T, object1: U): T & U;\r\nexport function assignDeep(target: T, object1: U, object2: V): T & U & V;\r\nexport function assignDeep(\r\n target: T,\r\n object1: U,\r\n object2: V,\r\n object3: W\r\n): T & U & V & W;\r\nexport function assignDeep(\r\n target: T,\r\n object1: U,\r\n object2: V,\r\n object3: W,\r\n object4: X\r\n): T & U & V & W & X;\r\nexport function assignDeep(\r\n target: T,\r\n object1: U,\r\n object2: V,\r\n object3: W,\r\n object4: X,\r\n object5: Y\r\n): T & U & V & W & X & Y;\r\nexport function assignDeep(\r\n target: T,\r\n object1?: U,\r\n object2?: V,\r\n object3?: W,\r\n object4?: X,\r\n object5?: Y,\r\n object6?: Z\r\n): T & U & V & W & X & Y & Z {\r\n const sources: Array = [object1, object2, object3, object4, object5, object6];\r\n\r\n // Handle case when target is a string or something (possible in deep copy)\r\n if ((typeof target !== 'object' || isNull(target)) && !isFunction(target)) {\r\n target = {} as T;\r\n }\r\n\r\n each(sources, (source) => {\r\n // Extend the base object\r\n each(keys(source), (key) => {\r\n const copy: any = source[key];\r\n\r\n // Prevent Object.prototype pollution\r\n // Prevent never-ending loop\r\n if (target === copy) {\r\n return true;\r\n }\r\n\r\n const copyIsArray = isArray(copy);\r\n\r\n // Recurse if we're merging plain objects or arrays\r\n if (copy && (isPlainObject(copy) || copyIsArray)) {\r\n const src = target[key];\r\n let clone: any = src;\r\n\r\n // Ensure proper type for the source value\r\n if (copyIsArray && !isArray(src)) {\r\n clone = [];\r\n } else if (!copyIsArray && !isPlainObject(src)) {\r\n clone = {};\r\n }\r\n\r\n // Never move original objects, clone them\r\n target[key] = assignDeep(clone, copy) as any;\r\n } else {\r\n target[key] = copy;\r\n }\r\n });\r\n });\r\n\r\n // Return the modified object\r\n return target as any;\r\n}\r\n\r\n/**\r\n * Returns true if the given object is empty, false otherwise.\r\n * @param obj The Object.\r\n */\r\nexport function isEmptyObject(obj: any): boolean {\r\n /* eslint-disable no-restricted-syntax, guard-for-in */\r\n for (const name in obj) return false;\r\n return true;\r\n /* eslint-enable */\r\n}\r\n","import { isUndefined } from 'support/utils/types';\r\n\r\ntype GetSetPropName = 'scrollLeft' | 'scrollTop' | 'value';\r\n\r\nfunction getSetProp(\r\n topLeft: GetSetPropName,\r\n fallback: number | string,\r\n elm: HTMLElement | HTMLInputElement | null,\r\n value?: number | string\r\n): number | string | void {\r\n if (isUndefined(value)) {\r\n return elm ? elm[topLeft] : fallback;\r\n }\r\n elm && (elm[topLeft] = value);\r\n}\r\n\r\n/**\r\n * Gets or sets a attribute with the given attribute of the given element depending whether the value attribute is given.\r\n * Returns null if the element has no attribute with the given name.\r\n * @param elm The element of which the attribute shall be get or set.\r\n * @param attrName The attribute name which shall be get or set.\r\n * @param value The value of the attribute which shall be set.\r\n */\r\nexport function attr(elm: HTMLElement | null, attrName: string): string | null;\r\nexport function attr(elm: HTMLElement | null, attrName: string, value: string): void;\r\nexport function attr(\r\n elm: HTMLElement | null,\r\n attrName: string,\r\n value?: string\r\n): string | null | void {\r\n if (isUndefined(value)) {\r\n return elm ? elm.getAttribute(attrName) : null;\r\n }\r\n elm && elm.setAttribute(attrName, value);\r\n}\r\n\r\n/**\r\n * Removes the given attribute from the given element.\r\n * @param elm The element of which the attribute shall be removed.\r\n * @param attrName The attribute name.\r\n */\r\nexport const removeAttr = (elm: Element | null, attrName: string): void => {\r\n elm && elm.removeAttribute(attrName);\r\n};\r\n\r\n/**\r\n * Gets or sets the scrollLeft value of the given element depending whether the value attribute is given.\r\n * @param elm The element of which the scrollLeft value shall be get or set.\r\n * @param value The scrollLeft value which shall be set.\r\n */\r\nexport function scrollLeft(elm: HTMLElement | null): number;\r\nexport function scrollLeft(elm: HTMLElement | null, value: number): void;\r\nexport function scrollLeft(elm: HTMLElement | null, value?: number): number | void {\r\n return getSetProp('scrollLeft', 0, elm, value) as number;\r\n}\r\n\r\n/**\r\n * Gets or sets the scrollTop value of the given element depending whether the value attribute is given.\r\n * @param elm The element of which the scrollTop value shall be get or set.\r\n * @param value The scrollTop value which shall be set.\r\n */\r\nexport function scrollTop(elm: HTMLElement | null): number;\r\nexport function scrollTop(elm: HTMLElement | null, value: number): void;\r\nexport function scrollTop(elm: HTMLElement | null, value?: number): number | void {\r\n return getSetProp('scrollTop', 0, elm, value) as number;\r\n}\r\n\r\n/**\r\n * Gets or sets the value of the given input element depending whether the value attribute is given.\r\n * @param elm The input element of which the value shall be get or set.\r\n * @param value The value which shall be set.\r\n */\r\nexport function val(elm: HTMLInputElement | null): string;\r\nexport function val(elm: HTMLInputElement | null, value: string): void;\r\nexport function val(elm: HTMLInputElement | null, value?: string): string | void {\r\n return getSetProp('value', '', elm, value) as string;\r\n}\r\n","import { isElement } from 'support/utils/types';\r\nimport { push, from } from 'support/utils/array';\r\n\r\ntype InputElementType = Element | Node | false | null | undefined;\r\ntype OutputElementType = Element | null;\r\n\r\nconst elmPrototype = Element.prototype;\r\n\r\n/**\r\n * Find all elements with the passed selector, outgoing (and including) the passed element or the document if no element was provided.\r\n * @param selector The selector which has to be searched by.\r\n * @param elm The element from which the search shall be outgoing.\r\n */\r\nconst find = (selector: string, elm?: InputElementType): Element[] => {\r\n const arr: Array = [];\r\n const rootElm = elm ? (isElement(elm) ? elm : null) : document;\r\n\r\n return rootElm ? push(arr, rootElm.querySelectorAll(selector)) : arr;\r\n};\r\n\r\n/**\r\n * Find the first element with the passed selector, outgoing (and including) the passed element or the document if no element was provided.\r\n * @param selector The selector which has to be searched by.\r\n * @param elm The element from which the search shall be outgoing.\r\n */\r\nconst findFirst = (selector: string, elm?: InputElementType): OutputElementType => {\r\n const rootElm = elm ? (isElement(elm) ? elm : null) : document;\r\n\r\n return rootElm ? rootElm.querySelector(selector) : null;\r\n};\r\n\r\n/**\r\n * Determines whether the passed element is matching with the passed selector.\r\n * @param elm The element which has to be compared with the passed selector.\r\n * @param selector The selector which has to be compared with the passed element. Additional selectors: ':visible' and ':hidden'.\r\n */\r\nconst is = (elm: InputElementType, selector: string): boolean => {\r\n if (isElement(elm)) {\r\n /* istanbul ignore next */\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n const fn: (...args: any) => boolean = elmPrototype.matches || elmPrototype.msMatchesSelector;\r\n return fn.call(elm, selector);\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Returns the children (no text-nodes or comments) of the passed element which are matching the passed selector. An empty array is returned if the passed element is null.\r\n * @param elm The element of which the children shall be returned.\r\n * @param selector The selector which must match with the children elements.\r\n */\r\nconst children = (elm: InputElementType, selector?: string): ReadonlyArray => {\r\n const childs: Array = [];\r\n\r\n return isElement(elm)\r\n ? push(\r\n childs,\r\n from(elm.children).filter((child) => (selector ? is(child, selector) : child))\r\n )\r\n : childs;\r\n};\r\n\r\n/**\r\n * Returns the childNodes (incl. text-nodes or comments etc.) of the passed element. An empty array is returned if the passed element is null.\r\n * @param elm The element of which the childNodes shall be returned.\r\n */\r\nconst contents = (elm: InputElementType): ReadonlyArray =>\r\n elm ? from(elm.childNodes) : [];\r\n\r\n/**\r\n * Returns the parent element of the passed element, or null if the passed element is null.\r\n * @param elm The element of which the parent element shall be returned.\r\n */\r\nconst parent = (elm: InputElementType): OutputElementType => (elm ? elm.parentElement : null);\r\n\r\nconst closest = (elm: InputElementType, selector: string): OutputElementType => {\r\n if (isElement(elm)) {\r\n const closestFn = elmPrototype.closest;\r\n if (closestFn) {\r\n return closestFn.call(elm, selector);\r\n }\r\n\r\n do {\r\n if (is(elm, selector)) {\r\n return elm as Element;\r\n }\r\n elm = parent(elm);\r\n } while (elm);\r\n }\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n * Determines whether the given element lies between two selectors in the DOM.\r\n * @param elm The element.\r\n * @param highBoundarySelector The high boundary selector.\r\n * @param deepBoundarySelector The deep boundary selector.\r\n */\r\nconst liesBetween = (\r\n elm: InputElementType,\r\n highBoundarySelector: string,\r\n deepBoundarySelector: string\r\n): boolean => {\r\n const closestHighBoundaryElm = elm && closest(elm, highBoundarySelector);\r\n const closestDeepBoundaryElm = elm && findFirst(deepBoundarySelector, closestHighBoundaryElm);\r\n\r\n return closestHighBoundaryElm && closestDeepBoundaryElm\r\n ? closestHighBoundaryElm === elm ||\r\n closestDeepBoundaryElm === elm ||\r\n closest(closest(elm, deepBoundarySelector), highBoundarySelector) !== closestHighBoundaryElm\r\n : false;\r\n};\r\n\r\nexport { find, findFirst, is, children, contents, parent, liesBetween };\r\n","import { isArrayLike } from 'support/utils/types';\r\nimport { each, from } from 'support/utils/array';\r\nimport { parent } from 'support/dom/traversal';\r\n\r\ntype NodeCollection = ArrayLike | Node | false | null | undefined;\r\n\r\n/**\r\n * Inserts Nodes before the given preferredAnchor element.\r\n * @param parentElm The parent of the preferredAnchor element or the element which shall be the parent of the inserted Nodes.\r\n * @param preferredAnchor The element before which the Nodes shall be inserted or null if the elements shall be appended at the end.\r\n * @param insertedElms The Nodes which shall be inserted.\r\n */\r\nconst before = (\r\n parentElm: Node | false | null | undefined,\r\n preferredAnchor: Node | null | undefined,\r\n insertedElms: NodeCollection\r\n): void => {\r\n if (insertedElms) {\r\n let anchor: Node | null | undefined = preferredAnchor;\r\n let fragment: DocumentFragment | Node | null | undefined;\r\n\r\n // parent must be defined\r\n if (parentElm) {\r\n if (isArrayLike(insertedElms)) {\r\n fragment = document.createDocumentFragment();\r\n\r\n // append all insertedElms to the fragment and if one of these is the anchor, change the anchor\r\n each(insertedElms, (insertedElm) => {\r\n if (insertedElm === anchor) {\r\n anchor = insertedElm.previousSibling;\r\n }\r\n fragment!.appendChild(insertedElm);\r\n });\r\n } else {\r\n fragment = insertedElms;\r\n }\r\n\r\n // if the preferred anchor isn't null set it to a valid anchor\r\n if (preferredAnchor) {\r\n if (!anchor) {\r\n anchor = parentElm.firstChild;\r\n } else if (anchor !== preferredAnchor) {\r\n anchor = anchor.nextSibling;\r\n }\r\n }\r\n\r\n parentElm.insertBefore(fragment, anchor || null);\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Appends the given children at the end of the given Node.\r\n * @param node The Node to which the children shall be appended.\r\n * @param children The Nodes which shall be appended.\r\n */\r\nexport const appendChildren = (node: Node | null | undefined, children: NodeCollection): void => {\r\n before(node, null, children);\r\n};\r\n\r\n/**\r\n * Prepends the given children at the start of the given Node.\r\n * @param node The Node to which the children shall be prepended.\r\n * @param children The Nodes which shall be prepended.\r\n */\r\nexport const prependChildren = (node: Node | null | undefined, children: NodeCollection): void => {\r\n before(node, node && node.firstChild, children);\r\n};\r\n\r\n/**\r\n * Inserts the given Nodes before the given Node.\r\n * @param node The Node before which the given Nodes shall be inserted.\r\n * @param insertedNodes The Nodes which shall be inserted.\r\n */\r\nexport const insertBefore = (\r\n node: Node | null | undefined,\r\n insertedNodes: NodeCollection\r\n): void => {\r\n before(parent(node), node, insertedNodes);\r\n};\r\n\r\n/**\r\n * Inserts the given Nodes after the given Node.\r\n * @param node The Node after which the given Nodes shall be inserted.\r\n * @param insertedNodes The Nodes which shall be inserted.\r\n */\r\nexport const insertAfter = (node: Node | null | undefined, insertedNodes: NodeCollection): void => {\r\n before(parent(node), node && node.nextSibling, insertedNodes);\r\n};\r\n\r\n/**\r\n * Removes the given Nodes from their parent.\r\n * @param nodes The Nodes which shall be removed.\r\n */\r\nexport const removeElements = (nodes: NodeCollection): void => {\r\n if (isArrayLike(nodes)) {\r\n each(from(nodes), (e) => removeElements(e));\r\n } else if (nodes) {\r\n const parentElm = parent(nodes);\r\n if (parentElm) {\r\n parentElm.removeChild(nodes);\r\n }\r\n }\r\n};\r\n","import { each } from 'support/utils/array';\r\nimport { attr } from 'support/dom/attribute';\r\nimport { contents } from 'support/dom/traversal';\r\nimport { removeElements } from 'support/dom/manipulation';\r\n\r\n/**\r\n * Creates a div DOM node.\r\n */\r\nexport const createDiv = (classNames?: string): HTMLDivElement => {\r\n const div = document.createElement('div');\r\n if (classNames) {\r\n attr(div, 'class', classNames);\r\n }\r\n return div;\r\n};\r\n\r\n/**\r\n * Creates DOM nodes modeled after the passed html string and returns the root dom nodes as a array.\r\n * @param html The html string after which the DOM nodes shall be created.\r\n */\r\nexport const createDOM = (html: string): ReadonlyArray => {\r\n const createdDiv = createDiv();\r\n createdDiv.innerHTML = html.trim();\r\n\r\n return each(contents(createdDiv), (elm) => removeElements(elm));\r\n};\r\n","import { each } from 'support/utils/array';\r\nimport { hasOwnProperty } from 'support/utils/object';\r\nimport { createDiv } from 'support/dom/create';\r\n\r\nconst firstLetterToUpper = (str: string): string => str.charAt(0).toUpperCase() + str.slice(1);\r\nconst getDummyStyle = (): CSSStyleDeclaration => createDiv().style;\r\n\r\n// https://developer.mozilla.org/en-US/docs/Glossary/Vendor_Prefix\r\n\r\nexport const cssPrefixes: ReadonlyArray = ['-webkit-', '-moz-', '-o-', '-ms-'];\r\nexport const jsPrefixes: ReadonlyArray = [\r\n 'WebKit',\r\n 'Moz',\r\n 'O',\r\n 'MS',\r\n 'webkit',\r\n 'moz',\r\n 'o',\r\n 'ms',\r\n];\r\n\r\nexport const jsCache: { [key: string]: any } = {};\r\nexport const cssCache: { [key: string]: string } = {};\r\n\r\n/**\r\n * Gets the name of the given CSS property with vendor prefix if it isn't supported without it, or and empty string if unsupported.\r\n * @param name The name of the CSS property which shall be get.\r\n */\r\nexport const cssProperty = (name: string): string => {\r\n let result: string | undefined = cssCache[name];\r\n\r\n if (hasOwnProperty(cssCache, name)) {\r\n return result;\r\n }\r\n\r\n const uppercasedName: string = firstLetterToUpper(name);\r\n const elmStyle: CSSStyleDeclaration = getDummyStyle();\r\n\r\n each(cssPrefixes, (prefix: string) => {\r\n const prefixWithoutDashes: string = prefix.replace(/-/g, '');\r\n const resultPossibilities: Array = [\r\n name, // transition\r\n prefix + name, // -webkit-transition\r\n prefixWithoutDashes + uppercasedName, // webkitTransition\r\n firstLetterToUpper(prefixWithoutDashes) + uppercasedName, // WebkitTransition\r\n ];\r\n\r\n // eslint-disable-next-line no-return-assign\r\n return !(result = resultPossibilities.find(\r\n (resultPossibility: string) => elmStyle[resultPossibility] !== undefined\r\n ));\r\n });\r\n\r\n // eslint-disable-next-line no-return-assign\r\n return (cssCache[name] = result || '');\r\n};\r\n\r\n/**\r\n * Get the name of the given CSS property value(s), with vendor prefix if it isn't supported without it, or an empty string if no value is supported.\r\n * @param property The CSS property to which the CSS property value(s) belong.\r\n * @param values The value(s) separated by spaces which shall be get.\r\n * @param suffix A suffix which is added to each value in case the value is a function or something else more advanced.\r\n */\r\nexport const cssPropertyValue = (property: string, values: string, suffix?: string): string => {\r\n const name = `${property} ${values}`;\r\n let result: string | undefined = cssCache[name];\r\n\r\n if (hasOwnProperty(cssCache, name)) {\r\n return result;\r\n }\r\n\r\n const dummyStyle: CSSStyleDeclaration = getDummyStyle();\r\n const possbleValues: Array = values.split(' ');\r\n const preparedSuffix: string = suffix || '';\r\n const cssPrefixesWithFirstEmpty = [''].concat(cssPrefixes);\r\n\r\n each(possbleValues, (possibleValue: string) => {\r\n each(cssPrefixesWithFirstEmpty, (prefix: string) => {\r\n const prop = prefix + possibleValue;\r\n dummyStyle.cssText = `${property}:${prop}${preparedSuffix}`;\r\n if (dummyStyle.length) {\r\n result = prop;\r\n return false;\r\n }\r\n });\r\n return !result;\r\n });\r\n\r\n // eslint-disable-next-line no-return-assign\r\n return (cssCache[name] = result || '');\r\n};\r\n\r\n/**\r\n * Get the requested JS function, object or constructor with vendor prefix if it isn't supported without or undefined if unsupported.\r\n * @param name The name of the JS function, object or constructor.\r\n */\r\nexport const jsAPI = (name: string): T | undefined => {\r\n let result: any = jsCache[name] || window[name];\r\n\r\n if (hasOwnProperty(jsCache, name)) {\r\n return result;\r\n }\r\n\r\n each(jsPrefixes, (prefix: string) => {\r\n result = result || window[prefix + firstLetterToUpper(name)];\r\n return !result;\r\n });\r\n\r\n jsCache[name] = result;\r\n return result;\r\n};\r\n","import { jsAPI } from 'support/compatibility/vendors';\r\n\r\nexport const MutationObserverConstructor = jsAPI('MutationObserver');\r\nexport const IntersectionObserverConstructor = jsAPI(\r\n 'IntersectionObserver'\r\n);\r\nexport const ResizeObserverConstructor = jsAPI('ResizeObserver');\r\nexport const cAF = jsAPI('cancelAnimationFrame');\r\nexport const rAF = jsAPI('requestAnimationFrame');\r\n","import { isString } from 'support/utils/types';\r\nimport { each } from 'support/utils/array';\r\nimport { keys } from 'support/utils/object';\r\n\r\nconst rnothtmlwhite = /[^\\x20\\t\\r\\n\\f]+/g;\r\nconst classListAction = (\r\n elm: Element | false | null | undefined,\r\n className: string,\r\n action: (elmClassList: DOMTokenList, clazz: string) => boolean | void\r\n): boolean => {\r\n let clazz: string;\r\n let i = 0;\r\n let result = false;\r\n\r\n if (elm && isString(className)) {\r\n const classes: Array = className.match(rnothtmlwhite) || [];\r\n result = classes.length > 0;\r\n while ((clazz = classes[i++])) {\r\n result = !!action(elm.classList, clazz) && result;\r\n }\r\n }\r\n return result;\r\n};\r\n\r\n/**\r\n * Check whether the given element has the given class name(s).\r\n * @param elm The element.\r\n * @param className The class name(s).\r\n */\r\nexport const hasClass = (elm: Element | false | null | undefined, className: string): boolean =>\r\n classListAction(elm, className, (classList, clazz) => classList.contains(clazz));\r\n\r\n/**\r\n * Adds the given class name(s) to the given element.\r\n * @param elm The element.\r\n * @param className The class name(s) which shall be added. (separated by spaces)\r\n */\r\nexport const addClass = (elm: Element | false | null | undefined, className: string): void => {\r\n classListAction(elm, className, (classList, clazz) => classList.add(clazz));\r\n};\r\n\r\n/**\r\n * Removes the given class name(s) from the given element.\r\n * @param elm The element.\r\n * @param className The class name(s) which shall be removed. (separated by spaces)\r\n */\r\nexport const removeClass = (elm: Element | false | null | undefined, className: string): void => {\r\n classListAction(elm, className, (classList, clazz) => classList.remove(clazz));\r\n};\r\n\r\n/**\r\n * Takes two className strings, compares them and returns the difference as array.\r\n * @param classNameA ClassName A.\r\n * @param classNameB ClassName B.\r\n */\r\nexport const diffClass = (\r\n classNameA: string | null | undefined,\r\n classNameB: string | null | undefined\r\n) => {\r\n const classNameASplit = classNameA && classNameA.split(' ');\r\n const classNameBSplit = classNameB && classNameB.split(' ');\r\n const tempObj = {};\r\n\r\n each(classNameASplit, (className) => {\r\n tempObj[className] = 1;\r\n });\r\n each(classNameBSplit, (className) => {\r\n if (tempObj[className]) {\r\n delete tempObj[className];\r\n } else {\r\n tempObj[className] = 1;\r\n }\r\n });\r\n\r\n return keys(tempObj);\r\n};\r\n","export interface WH {\r\n w: T;\r\n h: T;\r\n}\r\n\r\nconst elementHasDimensions = (elm: HTMLElement): boolean =>\r\n !!(elm.offsetWidth || elm.offsetHeight || elm.getClientRects().length);\r\nconst zeroObj: WH = {\r\n w: 0,\r\n h: 0,\r\n};\r\n\r\n/**\r\n * Returns the window inner- width and height.\r\n */\r\nexport const windowSize = (): WH => ({\r\n w: window.innerWidth,\r\n h: window.innerHeight,\r\n});\r\n\r\n/**\r\n * Returns the scroll- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the scroll- width and height shall be returned.\r\n */\r\nexport const offsetSize = (elm: HTMLElement | null | undefined): WH =>\r\n elm\r\n ? {\r\n w: elm.offsetWidth,\r\n h: elm.offsetHeight,\r\n }\r\n : zeroObj;\r\n\r\n/**\r\n * Returns the client- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the client- width and height shall be returned.\r\n */\r\nexport const clientSize = (elm: HTMLElement | null | undefined): WH =>\r\n elm\r\n ? {\r\n w: elm.clientWidth,\r\n h: elm.clientHeight,\r\n }\r\n : zeroObj;\r\n\r\n/**\r\n * Returns the client- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the client- width and height shall be returned.\r\n */\r\nexport const scrollSize = (elm: HTMLElement | null | undefined): WH =>\r\n elm\r\n ? {\r\n w: elm.scrollWidth,\r\n h: elm.scrollHeight,\r\n }\r\n : zeroObj;\r\n\r\n/**\r\n * Returns the BoundingClientRect of the passed element.\r\n * @param elm The element of which the BoundingClientRect shall be returned.\r\n */\r\nexport const getBoundingClientRect = (elm: HTMLElement): DOMRect => elm.getBoundingClientRect();\r\n\r\n/**\r\n * Determines whether the passed element has any dimensions.\r\n * @param elm The element.\r\n */\r\nexport const hasDimensions = (elm: HTMLElement | null | undefined): boolean =>\r\n elm ? elementHasDimensions(elm as HTMLElement) : false;\r\n","import { isUndefined } from 'support/utils/types';\r\nimport { each, push, runEach } from 'support/utils/array';\r\n\r\nlet passiveEventsSupport: boolean;\r\nconst supportPassiveEvents = (): boolean => {\r\n if (isUndefined(passiveEventsSupport)) {\r\n passiveEventsSupport = false;\r\n try {\r\n /* eslint-disable */\r\n // @ts-ignore\r\n window.addEventListener(\r\n 'test',\r\n null,\r\n Object.defineProperty({}, 'passive', {\r\n get: function () {\r\n passiveEventsSupport = true;\r\n },\r\n })\r\n );\r\n /* eslint-enable */\r\n } catch (e) {}\r\n }\r\n return passiveEventsSupport;\r\n};\r\nconst splitEventNames = (eventNames: string) => eventNames.split(' ');\r\n\r\nexport interface OnOptions {\r\n _capture?: boolean;\r\n _passive?: boolean;\r\n _once?: boolean;\r\n}\r\n\r\n/**\r\n * Removes the passed event listener for the passed events with the passed options.\r\n * @param target The element from which the listener shall be removed.\r\n * @param eventNames The eventsnames for which the listener shall be removed.\r\n * @param listener The listener which shall be removed.\r\n * @param capture The options of the removed listener.\r\n */\r\nexport const off = (\r\n target: EventTarget,\r\n eventNames: string,\r\n listener: (event: T) => any,\r\n capture?: boolean\r\n): void => {\r\n each(splitEventNames(eventNames), (eventName) => {\r\n target.removeEventListener(eventName, listener as EventListener, capture);\r\n });\r\n};\r\n\r\n/**\r\n * Adds the passed event listener for the passed eventnames with the passed options.\r\n * @param target The element to which the listener shall be added.\r\n * @param eventNames The eventsnames for which the listener shall be called.\r\n * @param listener The listener which is called on the eventnames.\r\n * @param options The options of the added listener.\r\n */\r\nexport const on = (\r\n target: EventTarget,\r\n eventNames: string,\r\n listener: (event: T) => any,\r\n options?: OnOptions\r\n): (() => void) => {\r\n const doSupportPassiveEvents = supportPassiveEvents();\r\n const passive = (doSupportPassiveEvents && options && options._passive) || false;\r\n const capture = (options && options._capture) || false;\r\n const once = (options && options._once) || false;\r\n const offListeners: (() => void)[] = [];\r\n const nativeOptions: AddEventListenerOptions | boolean = doSupportPassiveEvents\r\n ? {\r\n passive,\r\n capture,\r\n }\r\n : capture;\r\n\r\n each(splitEventNames(eventNames), (eventName) => {\r\n const finalListener = (once\r\n ? (evt: T) => {\r\n target.removeEventListener(eventName, finalListener, capture);\r\n listener && listener(evt);\r\n }\r\n : listener) as EventListener;\r\n\r\n push(offListeners, off.bind(null, target, eventName, finalListener, capture));\r\n target.addEventListener(eventName, finalListener, nativeOptions);\r\n });\r\n\r\n return runEach.bind(0, offListeners);\r\n};\r\n\r\n/**\r\n * Shorthand for the stopPropagation event Method.\r\n * @param evt The event of which the stopPropagation method shall be called.\r\n */\r\nexport const stopPropagation = (evt: Event): void => evt.stopPropagation();\r\n\r\n/**\r\n * Shorthand for the preventDefault event Method.\r\n * @param evt The event of which the preventDefault method shall be called.\r\n */\r\nexport const preventDefault = (evt: Event): void => evt.preventDefault();\r\n\r\n/**\r\n * Shorthand for the stopPropagation and preventDefault event Method.\r\n * @param evt The event of which the stopPropagation and preventDefault methods shall be called.\r\n */\r\nexport const stopAndPrevent = (evt: Event): void =>\r\n (stopPropagation(evt) as undefined) || (preventDefault(evt) as undefined);\r\n","import { each } from 'support/utils/array';\r\nimport { WH, XY, TRBL } from 'support/dom';\r\nimport { PlainObject } from 'typings';\r\n\r\n/**\r\n * Compares two objects and returns true if all values of the passed prop names are identical, false otherwise or if one of the two object is falsy.\r\n * @param a Object a.\r\n * @param b Object b.\r\n * @param props The props which shall be compared.\r\n */\r\nexport const equal = (\r\n a: T | undefined,\r\n b: T | undefined,\r\n props: Array,\r\n propMutation?: ((value: any) => any) | null | false\r\n): boolean => {\r\n if (a && b) {\r\n let result = true;\r\n each(props, (prop) => {\r\n const compareA = propMutation ? propMutation(a[prop]) : a[prop];\r\n const compareB = propMutation ? propMutation(b[prop]) : b[prop];\r\n if (compareA !== compareB) {\r\n result = false;\r\n }\r\n });\r\n return result;\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalWH = (a?: WH, b?: WH) => equal(a, b, ['w', 'h']);\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalXY = (a?: XY, b?: XY) => equal(a, b, ['x', 'y']);\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalTRBL = (a?: TRBL, b?: TRBL) => equal(a, b, ['t', 'r', 'b', 'l']);\r\n\r\n/**\r\n * Compares two DOM Rects for their equality of their width and height properties\r\n * Also returns false if one of the DOM Rects is undefined or null.\r\n * @param a DOM Rect a.\r\n * @param b DOM Rect b.\r\n * @param round Whether the values should be rounded.\r\n */\r\nexport const equalBCRWH = (a?: DOMRect, b?: DOMRect, round?: boolean) =>\r\n equal(a, b, ['width', 'height'], round && ((value) => Math.round(value)));\r\n","import { isNumber, isFunction } from 'support/utils/types';\r\nimport { from } from 'support/utils/array';\r\nimport { rAF, cAF } from 'support/compatibility/apis';\r\n\r\nconst clearTimeouts = (id: number | undefined) => {\r\n id && window.clearTimeout(id);\r\n id && cAF!(id);\r\n};\r\n\r\ntype DebounceTiming = number | false | null | undefined;\r\n\r\nexport interface DebounceOptions any> {\r\n /**\r\n * The timeout for debouncing. If null, no debounce is applied.\r\n */\r\n _timeout?: DebounceTiming | (() => DebounceTiming);\r\n /**\r\n * A maximum amount of ms. before the function will be called even with debounce.\r\n */\r\n _maxDelay?: DebounceTiming | (() => DebounceTiming);\r\n /**\r\n * Function which merges parameters for each canceled debounce.\r\n * If parameters can't be merged the function will return null, otherwise it returns the merged parameters.\r\n */\r\n _mergeParams?: (\r\n prev: Parameters,\r\n curr: Parameters\r\n ) => Parameters | false | null | undefined;\r\n}\r\n\r\nexport interface Debounced any> {\r\n (...args: Parameters): ReturnType;\r\n _flush(): void;\r\n}\r\n\r\nexport const noop = () => {}; // eslint-disable-line\r\n\r\n/**\r\n * Debounces the given function either with a timeout or a animation frame.\r\n * @param functionToDebounce The function which shall be debounced.\r\n * @param options Options for debouncing.\r\n */\r\nexport const debounce = any>(\r\n functionToDebounce: FunctionToDebounce,\r\n options?: DebounceOptions\r\n): Debounced => {\r\n let timeoutId: number | undefined;\r\n let maxTimeoutId: number | undefined;\r\n let prevArguments: Parameters | null | undefined;\r\n let latestArguments: Parameters | null | undefined;\r\n const { _timeout, _maxDelay, _mergeParams } = options || {};\r\n const setT = window.setTimeout;\r\n\r\n const invokeFunctionToDebounce = function (args: IArguments) {\r\n clearTimeouts(timeoutId);\r\n clearTimeouts(maxTimeoutId);\r\n maxTimeoutId = timeoutId = prevArguments = undefined;\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n functionToDebounce.apply(this, args);\r\n };\r\n\r\n const mergeParms = (\r\n curr: Parameters\r\n ): Parameters | false | null | undefined =>\r\n _mergeParams && prevArguments ? _mergeParams(prevArguments, curr) : curr;\r\n\r\n const flush = () => {\r\n /* istanbul ignore next */\r\n if (timeoutId) {\r\n invokeFunctionToDebounce(mergeParms(latestArguments!) || latestArguments!);\r\n }\r\n };\r\n\r\n const debouncedFn = function () {\r\n // eslint-disable-next-line prefer-rest-params\r\n const args: Parameters = from(arguments) as Parameters;\r\n const finalTimeout = isFunction(_timeout) ? _timeout() : _timeout;\r\n const hasTimeout = isNumber(finalTimeout) && finalTimeout >= 0;\r\n\r\n if (hasTimeout) {\r\n const finalMaxWait = isFunction(_maxDelay) ? _maxDelay() : _maxDelay;\r\n const hasMaxWait = isNumber(finalMaxWait) && finalMaxWait >= 0;\r\n const setTimeoutFn = finalTimeout > 0 ? setT : rAF!;\r\n const mergeParamsResult = mergeParms(args);\r\n const invokedArgs = mergeParamsResult || args;\r\n const boundInvoke = invokeFunctionToDebounce.bind(0, invokedArgs);\r\n\r\n // if (!mergeParamsResult) {\r\n // invokeFunctionToDebounce(prevArguments || args);\r\n // }\r\n\r\n clearTimeouts(timeoutId);\r\n timeoutId = setTimeoutFn(boundInvoke, finalTimeout as number) as number;\r\n\r\n if (hasMaxWait && !maxTimeoutId) {\r\n maxTimeoutId = setT(flush, finalMaxWait as number);\r\n }\r\n\r\n prevArguments = latestArguments = invokedArgs;\r\n } else {\r\n invokeFunctionToDebounce(args);\r\n }\r\n };\r\n debouncedFn._flush = flush;\r\n\r\n return debouncedFn as Debounced;\r\n};\r\n","import { each, keys } from 'support/utils';\r\nimport { isString, isNumber, isArray, isUndefined } from 'support/utils/types';\r\nimport { PlainObject, StyleObject } from 'typings';\r\n\r\nexport interface TRBL {\r\n t: number;\r\n r: number;\r\n b: number;\r\n l: number;\r\n}\r\n\r\nconst cssNumber = {\r\n // animationiterationcount: 1,\r\n // columncount: 1,\r\n // fillopacity: 1,\r\n // flexgrow: 1,\r\n // flexshrink: 1,\r\n // fontweight: 1,\r\n // lineheight: 1,\r\n // order: 1,\r\n // orphans: 1,\r\n // widows: 1,\r\n // zoom: 1,\r\n opacity: 1,\r\n zindex: 1,\r\n};\r\n\r\nconst parseToZeroOrNumber = (value: string, toFloat?: boolean): number => {\r\n /* istanbul ignore next */\r\n const num = toFloat ? parseFloat(value) : parseInt(value, 10);\r\n /* istanbul ignore next */\r\n return Number.isNaN(num) ? 0 : num;\r\n};\r\nconst adaptCSSVal = (prop: string, val: string | number): string | number =>\r\n !cssNumber[prop.toLowerCase()] && isNumber(val) ? `${val}px` : val;\r\nconst getCSSVal = (elm: HTMLElement, computedStyle: CSSStyleDeclaration, prop: string): string =>\r\n /* istanbul ignore next */\r\n computedStyle != null\r\n ? computedStyle[prop] || computedStyle.getPropertyValue(prop)\r\n : elm.style[prop];\r\nconst setCSSVal = (\r\n elm: HTMLElement | false | null | undefined,\r\n prop: string,\r\n val: string | number\r\n): void => {\r\n try {\r\n if (elm) {\r\n const { style: elmStyle } = elm;\r\n if (!isUndefined(elmStyle[prop])) {\r\n elmStyle[prop] = adaptCSSVal(prop, val);\r\n } else {\r\n elmStyle.setProperty(prop, val as string);\r\n }\r\n }\r\n } catch (e) {}\r\n};\r\n\r\n/**\r\n * Gets or sets the passed styles to the passed element.\r\n * @param elm The element to which the styles shall be applied to / be read from.\r\n * @param styles The styles which shall be set or read.\r\n */\r\nexport function style(\r\n elm: HTMLElement | false | null | undefined,\r\n styles: StyleObject\r\n): void;\r\nexport function style(\r\n elm: HTMLElement | false | null | undefined,\r\n styles: string\r\n): string;\r\nexport function style(\r\n elm: HTMLElement | false | null | undefined,\r\n styles: Array | string\r\n): { [key: string]: string };\r\nexport function style(\r\n elm: HTMLElement | false | null | undefined,\r\n styles: StyleObject | Array | string\r\n): { [key: string]: string } | string | void {\r\n const getSingleStyle = isString(styles);\r\n const getStyles = isArray(styles) || getSingleStyle;\r\n\r\n if (getStyles) {\r\n let getStylesResult: string | PlainObject = getSingleStyle ? '' : {};\r\n if (elm) {\r\n const computedStyle: CSSStyleDeclaration = window.getComputedStyle(elm, null);\r\n getStylesResult = getSingleStyle\r\n ? getCSSVal(elm, computedStyle, styles as string)\r\n : (styles as Array).reduce((result, key) => {\r\n result[key] = getCSSVal(elm, computedStyle, key as string);\r\n return result;\r\n }, getStylesResult);\r\n }\r\n return getStylesResult;\r\n }\r\n each(keys(styles), (key) => setCSSVal(elm, key, styles[key]));\r\n}\r\n\r\n/**\r\n * Hides the passed element (display: none).\r\n * @param elm The element which shall be hidden.\r\n */\r\nexport const hide = (elm: HTMLElement | false | null | undefined): void => {\r\n style(elm, { display: 'none' });\r\n};\r\n\r\n/**\r\n * Shows the passed element (display: block).\r\n * @param elm The element which shall be shown.\r\n */\r\nexport const show = (elm: HTMLElement | false | null | undefined): void => {\r\n style(elm, { display: 'block' });\r\n};\r\n\r\n/**\r\n * Returns the top right bottom left values of the passed css property.\r\n * @param elm The element of which the values shall be returned.\r\n * @param propertyPrefix The css property prefix. (e.g. \"border\")\r\n * @param propertySuffix The css property suffix. (e.g. \"width\")\r\n */\r\nexport const topRightBottomLeft = (\r\n elm?: HTMLElement | false | null | undefined,\r\n propertyPrefix?: string,\r\n propertySuffix?: string\r\n): TRBL => {\r\n const finalPrefix = propertyPrefix ? `${propertyPrefix}-` : '';\r\n const finalSuffix = propertySuffix ? `-${propertySuffix}` : '';\r\n const top = `${finalPrefix}top${finalSuffix}`;\r\n const right = `${finalPrefix}right${finalSuffix}`;\r\n const bottom = `${finalPrefix}bottom${finalSuffix}`;\r\n const left = `${finalPrefix}left${finalSuffix}`;\r\n const result = style(elm, [top, right, bottom, left]);\r\n return {\r\n t: parseToZeroOrNumber(result[top]),\r\n r: parseToZeroOrNumber(result[right]),\r\n b: parseToZeroOrNumber(result[bottom]),\r\n l: parseToZeroOrNumber(result[left]),\r\n };\r\n};\r\n","import { getBoundingClientRect } from 'support/dom/dimensions';\r\n\r\nexport interface XY {\r\n x: T;\r\n y: T;\r\n}\r\n\r\nconst zeroObj: XY = {\r\n x: 0,\r\n y: 0,\r\n};\r\n\r\n/**\r\n * Returns the offset- left and top coordinates of the passed element relative to the document. If the element is null the top and left values are 0.\r\n * @param elm The element of which the offset- top and left coordinates shall be returned.\r\n */\r\nexport const absoluteCoordinates = (elm: HTMLElement | null | undefined): XY => {\r\n const rect = elm ? getBoundingClientRect(elm) : 0;\r\n return rect\r\n ? {\r\n x: rect.left + window.pageYOffset,\r\n y: rect.top + window.pageXOffset,\r\n }\r\n : zeroObj;\r\n};\r\n\r\n/**\r\n * Returns the offset- left and top coordinates of the passed element. If the element is null the top and left values are 0.\r\n * @param elm The element of which the offset- top and left coordinates shall be returned.\r\n */\r\nexport const offsetCoordinates = (elm: HTMLElement | null | undefined): XY =>\r\n elm\r\n ? {\r\n x: elm.offsetLeft,\r\n y: elm.offsetTop,\r\n }\r\n : zeroObj;\r\n","export const classNameEnvironment = 'os-environment';\r\nexport const classNameEnvironmentFlexboxGlue = `${classNameEnvironment}-flexbox-glue`;\r\nexport const classNameEnvironmentFlexboxGlueMax = `${classNameEnvironmentFlexboxGlue}-max`;\r\n\r\nexport const classNameHost = 'os-host';\r\nexport const classNamePadding = 'os-padding';\r\nexport const classNameViewport = 'os-viewport';\r\nexport const classNameViewportArrange = `${classNameViewport}-arrange`;\r\nexport const classNameContent = 'os-content';\r\nexport const classNameViewportScrollbarStyling = `${classNameViewport}-scrollbar-styled`;\r\n\r\nexport const classNameSizeObserver = 'os-size-observer';\r\nexport const classNameSizeObserverAppear = `${classNameSizeObserver}-appear`;\r\nexport const classNameSizeObserverListener = `${classNameSizeObserver}-listener`;\r\nexport const classNameSizeObserverListenerScroll = `${classNameSizeObserverListener}-scroll`;\r\nexport const classNameSizeObserverListenerItem = `${classNameSizeObserverListener}-item`;\r\nexport const classNameSizeObserverListenerItemFinal = `${classNameSizeObserverListenerItem}-final`;\r\n\r\nexport const classNameTrinsicObserver = 'os-trinsic-observer';\r\n\r\nexport const classNameScrollbar = 'os-scrollbar';\r\nexport const classNameScrollbarHorizontal = `${classNameScrollbar}-horizontal`;\r\nexport const classNameScrollbarVertical = `${classNameScrollbar}-vertical`;\r\nexport const classNameScrollbarTrack = 'os-scrollbar-track';\r\nexport const classNameScrollbarHandle = 'os-scrollbar-handle';\r\n","function _extends() {\n module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import { assignDeep, each, isObject, keys, isArray, hasOwnProperty, isFunction } from 'support';\r\nimport { PartialOptions } from 'typings';\r\n\r\nconst stringify = (value: any) =>\r\n JSON.stringify(value, (_, val) => {\r\n if (isFunction(val)) {\r\n throw new Error();\r\n }\r\n return val;\r\n });\r\n\r\nexport type ResizeBehavior = 'none' | 'both' | 'horizontal' | 'vertical';\r\n\r\nexport type OverflowBehavior = 'hidden' | 'scroll' | 'visible' | 'visible-hidden';\r\n\r\nexport type VisibilityBehavior = 'visible' | 'hidden' | 'auto';\r\n\r\nexport type AutoHideBehavior = 'never' | 'scroll' | 'leave' | 'move';\r\n\r\nexport type ScrollBehavior = 'always' | 'ifneeded' | 'never';\r\n\r\nexport type BasicEventCallback = (this: any) => void;\r\n\r\nexport type ScrollEventCallback = (this: any, args?: UIEvent) => void;\r\n\r\nexport type OverflowChangedCallback = (this: any, args?: OverflowChangedArgs) => void;\r\n\r\nexport type OverflowAmountChangedCallback = (this: any, args?: OverflowAmountChangedArgs) => void;\r\n\r\nexport type DirectionChangedCallback = (this: any, args?: DirectionChangedArgs) => void;\r\n\r\nexport type SizeChangedCallback = (this: any, args?: SizeChangedArgs) => void;\r\n\r\nexport type UpdatedCallback = (this: any, args?: UpdatedArgs) => void;\r\n\r\nexport interface OSOptions {\r\n resize: ResizeBehavior;\r\n paddingAbsolute: boolean;\r\n updating: {\r\n elementEvents: Array<[string, string]> | null;\r\n attributes: string[] | null;\r\n debounce: number | [number, number] | null;\r\n };\r\n overflow: {\r\n x: OverflowBehavior;\r\n y: OverflowBehavior;\r\n };\r\n scrollbars: {\r\n visibility: VisibilityBehavior;\r\n autoHide: AutoHideBehavior;\r\n autoHideDelay: number;\r\n dragScroll: boolean;\r\n clickScroll: boolean;\r\n touch: boolean;\r\n };\r\n textarea: {\r\n dynWidth: boolean;\r\n dynHeight: boolean;\r\n inheritedAttrs: string | Array | null;\r\n };\r\n nativeScrollbarsOverlaid: {\r\n show: boolean;\r\n initialize: boolean;\r\n };\r\n callbacks: {\r\n onUpdated: (() => any) | null;\r\n };\r\n /*\r\n callbacks?: {\r\n onInitialized?: BasicEventCallback | null;\r\n onInitializationWithdrawn?: BasicEventCallback | null;\r\n onDestroyed?: BasicEventCallback | null;\r\n onScrollStart?: ScrollEventCallback | null;\r\n onScroll?: ScrollEventCallback | null;\r\n onScrollStop?: ScrollEventCallback | null;\r\n onOverflowChanged?: OverflowChangedCallback | null;\r\n onOverflowAmountChanged?: OverflowAmountChangedCallback | null;\r\n onDirectionChanged?: DirectionChangedCallback | null;\r\n onContentSizeChanged?: SizeChangedCallback | null;\r\n onHostSizeChanged?: SizeChangedCallback | null;\r\n onUpdated?: UpdatedCallback | null;\r\n };\r\n */\r\n}\r\n\r\nexport interface OverflowChangedArgs {\r\n x: boolean;\r\n y: boolean;\r\n xScrollable: boolean;\r\n yScrollable: boolean;\r\n clipped: boolean;\r\n}\r\n\r\nexport interface OverflowAmountChangedArgs {\r\n x: number;\r\n y: number;\r\n}\r\n\r\nexport interface DirectionChangedArgs {\r\n isRTL: number;\r\n dir: string;\r\n}\r\n\r\nexport interface SizeChangedArgs {\r\n width: number;\r\n height: number;\r\n}\r\n\r\nexport interface UpdatedArgs {\r\n forced: boolean;\r\n}\r\n\r\nexport const defaultOptions: OSOptions = {\r\n resize: 'none', // none || both || horizontal || vertical || n || b || h || v\r\n paddingAbsolute: false, // true || false\r\n updating: {\r\n elementEvents: [['img', 'load']], // array of tuples || null\r\n attributes: null,\r\n debounce: [0, 33], // number || number array || null\r\n },\r\n overflow: {\r\n x: 'scroll', // visible-hidden || visible-scroll || hidden || scroll || v-h || v-s || h || s\r\n y: 'scroll', // visible-hidden || visible-scroll || hidden || scroll || v-h || v-s || h || s\r\n },\r\n scrollbars: {\r\n visibility: 'auto', // visible || hidden || auto || v || h || a\r\n autoHide: 'never', // never || scroll || leave || move || n || s || l || m\r\n autoHideDelay: 800, // number\r\n dragScroll: true, // true || false\r\n clickScroll: false, // true || false\r\n touch: true, // true || false\r\n },\r\n textarea: {\r\n dynWidth: false, // true || false\r\n dynHeight: false, // true || false\r\n inheritedAttrs: ['style', 'class'], // string || array || null\r\n },\r\n nativeScrollbarsOverlaid: {\r\n show: false, // true || false\r\n initialize: false, // true || false\r\n },\r\n callbacks: {\r\n onUpdated: null,\r\n },\r\n};\r\n\r\nexport const getOptionsDiff = (\r\n currOptions: T,\r\n newOptions: PartialOptions\r\n): PartialOptions => {\r\n const diff: PartialOptions = {};\r\n const optionsKeys = keys(newOptions).concat(keys(currOptions));\r\n\r\n each(optionsKeys, (optionKey) => {\r\n const currOptionValue = currOptions[optionKey];\r\n const newOptionValue = newOptions[optionKey];\r\n\r\n if (isObject(currOptionValue) && isObject(newOptionValue)) {\r\n assignDeep((diff[optionKey] = {}), getOptionsDiff(currOptionValue, newOptionValue));\r\n } else if (hasOwnProperty(newOptions, optionKey) && newOptionValue !== currOptionValue) {\r\n let isDiff = true;\r\n\r\n if (isArray(currOptionValue) || isArray(newOptionValue)) {\r\n try {\r\n if (stringify(currOptionValue) === stringify(newOptionValue)) {\r\n isDiff = false;\r\n }\r\n } catch {}\r\n }\r\n\r\n if (isDiff) {\r\n diff[optionKey] = newOptionValue;\r\n }\r\n }\r\n });\r\n\r\n return diff;\r\n};\r\n","import {\r\n createDOM,\r\n addClass,\r\n style,\r\n appendChildren,\r\n clientSize,\r\n absoluteCoordinates,\r\n offsetSize,\r\n scrollLeft,\r\n XY,\r\n removeAttr,\r\n removeElements,\r\n windowSize,\r\n runEach,\r\n equalBCRWH,\r\n getBoundingClientRect,\r\n assignDeep,\r\n cssProperty,\r\n} from 'support';\r\nimport {\r\n classNameEnvironment,\r\n classNameEnvironmentFlexboxGlue,\r\n classNameEnvironmentFlexboxGlueMax,\r\n classNameViewportScrollbarStyling,\r\n} from 'classnames';\r\nimport { OSOptions, defaultOptions } from 'options';\r\nimport { OSTargetElement, PartialOptions } from 'typings';\r\n\r\ntype StructureInitializationElementFn = ((target: OSTargetElement) => HTMLElement | T) | T;\r\n\r\ntype ScrollbarsInitializationElementFn =\r\n | ((target: OSTargetElement, host: HTMLElement, viewport: HTMLElement) => HTMLElement | T)\r\n | T;\r\n\r\n/**\r\n * A Static element is an element which MUST be generated.\r\n * If null (or the returned result is null), the initialization function is generatig the element, otherwise\r\n * the element returned by the function acts as the generated element.\r\n */\r\nexport type StructureInitializationStaticElement = StructureInitializationElementFn;\r\n\r\n/**\r\n * A Dynamic element is an element which CAN be generated.\r\n * If null (or the returned result is null), then the default behavior is used.\r\n * If boolean (or the returned result is boolean), the generation of the element is forced (or not).\r\n * If the function returns and element, the element returned by the function acts as the generated element.\r\n */\r\nexport type StructureInitializationDynamicElement = StructureInitializationElementFn<\r\n boolean | null\r\n>;\r\n\r\nexport interface StructureInitializationStrategy {\r\n _host: StructureInitializationStaticElement;\r\n _viewport: StructureInitializationStaticElement;\r\n _padding: StructureInitializationDynamicElement;\r\n _content: StructureInitializationDynamicElement;\r\n}\r\n\r\nexport interface ScrollbarsInitializationStrategy {\r\n _scrollbarsSlot: ScrollbarsInitializationElementFn;\r\n}\r\n\r\nexport interface InitializationStrategy\r\n extends StructureInitializationStrategy,\r\n ScrollbarsInitializationStrategy {}\r\n\r\nexport type OnEnvironmentChanged = (env: Environment) => void;\r\nexport interface Environment {\r\n _nativeScrollbarSize: XY;\r\n _nativeScrollbarIsOverlaid: XY;\r\n _nativeScrollbarStyling: boolean;\r\n _rtlScrollBehavior: { n: boolean; i: boolean };\r\n _flexboxGlue: boolean;\r\n _cssCustomProperties: boolean;\r\n _addListener(listener: OnEnvironmentChanged): void;\r\n _removeListener(listener: OnEnvironmentChanged): void;\r\n _getInitializationStrategy(): InitializationStrategy;\r\n _setInitializationStrategy(newInitializationStrategy: Partial): void;\r\n _getDefaultOptions(): OSOptions;\r\n _setDefaultOptions(newDefaultOptions: PartialOptions): void;\r\n _defaultInitializationStrategy: InitializationStrategy;\r\n _defaultDefaultOptions: OSOptions;\r\n}\r\n\r\nlet environmentInstance: Environment;\r\nconst { abs, round } = Math;\r\n\r\nconst diffBiggerThanOne = (valOne: number, valTwo: number): boolean => {\r\n const absValOne = abs(valOne);\r\n const absValTwo = abs(valTwo);\r\n return !(absValOne === absValTwo || absValOne + 1 === absValTwo || absValOne - 1 === absValTwo);\r\n};\r\n\r\nconst getNativeScrollbarSize = (body: HTMLElement, measureElm: HTMLElement): XY => {\r\n appendChildren(body, measureElm);\r\n const cSize = clientSize(measureElm);\r\n const oSize = offsetSize(measureElm);\r\n\r\n return {\r\n x: oSize.h - cSize.h,\r\n y: oSize.w - cSize.w,\r\n };\r\n};\r\n\r\nconst getNativeScrollbarStyling = (testElm: HTMLElement): boolean => {\r\n let result = false;\r\n addClass(testElm, classNameViewportScrollbarStyling);\r\n try {\r\n result =\r\n style(testElm, cssProperty('scrollbar-width')) === 'none' ||\r\n window.getComputedStyle(testElm, '::-webkit-scrollbar').getPropertyValue('display') ===\r\n 'none';\r\n } catch (ex) {}\r\n\r\n return result;\r\n};\r\n\r\nconst getRtlScrollBehavior = (\r\n parentElm: HTMLElement,\r\n childElm: HTMLElement\r\n): { i: boolean; n: boolean } => {\r\n const strHidden = 'hidden';\r\n style(parentElm, { overflowX: strHidden, overflowY: strHidden, direction: 'rtl' });\r\n scrollLeft(parentElm, 0);\r\n\r\n const parentOffset = absoluteCoordinates(parentElm);\r\n const childOffset = absoluteCoordinates(childElm);\r\n scrollLeft(parentElm, -999); // https://github.com/KingSora/OverlayScrollbars/issues/187\r\n const childOffsetAfterScroll = absoluteCoordinates(childElm);\r\n return {\r\n /**\r\n * origin direction = determines if the zero scroll position is on the left or right side\r\n * 'i' means 'invert' (i === true means that the axis must be inverted to be correct)\r\n * true = on the left side\r\n * false = on the right side\r\n */\r\n i: parentOffset.x === childOffset.x,\r\n /**\r\n * negative = determines if the maximum scroll is positive or negative\r\n * 'n' means 'negate' (n === true means that the axis must be negated to be correct)\r\n * true = negative\r\n * false = positive\r\n */\r\n n: childOffset.x !== childOffsetAfterScroll.x,\r\n };\r\n};\r\n\r\nconst getFlexboxGlue = (parentElm: HTMLElement, childElm: HTMLElement): boolean => {\r\n addClass(parentElm, classNameEnvironmentFlexboxGlue);\r\n const minOffsetsizeParent = getBoundingClientRect(parentElm);\r\n const minOffsetsize = getBoundingClientRect(childElm);\r\n const supportsMin = equalBCRWH(minOffsetsize, minOffsetsizeParent, true);\r\n\r\n addClass(parentElm, classNameEnvironmentFlexboxGlueMax);\r\n const maxOffsetsizeParent = getBoundingClientRect(parentElm);\r\n const maxOffsetsize = getBoundingClientRect(childElm);\r\n const supportsMax = equalBCRWH(maxOffsetsize, maxOffsetsizeParent, true);\r\n\r\n return supportsMin && supportsMax;\r\n};\r\n\r\nconst getWindowDPR = (): number => {\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n const dDPI = window.screen.deviceXDPI || 0;\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n const sDPI = window.screen.logicalXDPI || 1;\r\n return window.devicePixelRatio || dDPI / sDPI;\r\n};\r\n\r\n// init function decides for all values\r\nconst getDefaultInitializationStrategy = (\r\n nativeScrollbarStyling: boolean\r\n): InitializationStrategy => ({\r\n _host: null,\r\n _viewport: null,\r\n _padding: null,\r\n _content: null,\r\n _scrollbarsSlot: null,\r\n});\r\n\r\nconst createEnvironment = (): Environment => {\r\n const { body } = document;\r\n const envDOM = createDOM(`
`);\r\n const envElm = envDOM[0] as HTMLElement;\r\n const envChildElm = envElm.firstChild as HTMLElement;\r\n const onChangedListener: Set = new Set();\r\n const nativeScrollbarSize = getNativeScrollbarSize(body, envElm);\r\n const nativeScrollbarStyling = getNativeScrollbarStyling(envElm);\r\n const nativeScrollbarIsOverlaid = {\r\n x: nativeScrollbarSize.x === 0,\r\n y: nativeScrollbarSize.y === 0,\r\n };\r\n const defaultInitializationStrategy = getDefaultInitializationStrategy(nativeScrollbarStyling);\r\n let initializationStrategy = defaultInitializationStrategy;\r\n let defaultDefaultOptions = defaultOptions;\r\n\r\n const env: Environment = {\r\n _nativeScrollbarSize: nativeScrollbarSize,\r\n _nativeScrollbarIsOverlaid: nativeScrollbarIsOverlaid,\r\n _nativeScrollbarStyling: nativeScrollbarStyling,\r\n _cssCustomProperties: style(envElm, 'zIndex') === '-1',\r\n _rtlScrollBehavior: getRtlScrollBehavior(envElm, envChildElm),\r\n _flexboxGlue: getFlexboxGlue(envElm, envChildElm),\r\n _addListener(listener: OnEnvironmentChanged): void {\r\n onChangedListener.add(listener);\r\n },\r\n _removeListener(listener: OnEnvironmentChanged): void {\r\n onChangedListener.delete(listener);\r\n },\r\n _getInitializationStrategy: () => ({ ...initializationStrategy }),\r\n _setInitializationStrategy(newInitializationStrategy) {\r\n initializationStrategy = assignDeep({}, initializationStrategy, newInitializationStrategy);\r\n },\r\n _getDefaultOptions: () => ({ ...defaultDefaultOptions }),\r\n _setDefaultOptions(newDefaultOptions) {\r\n defaultDefaultOptions = assignDeep({}, defaultDefaultOptions, newDefaultOptions);\r\n },\r\n _defaultInitializationStrategy: defaultInitializationStrategy,\r\n _defaultDefaultOptions: defaultDefaultOptions,\r\n };\r\n\r\n removeAttr(envElm, 'style');\r\n removeElements(envElm);\r\n\r\n if (!nativeScrollbarStyling && (!nativeScrollbarIsOverlaid.x || !nativeScrollbarIsOverlaid.y)) {\r\n let size = windowSize();\r\n let dpr = getWindowDPR();\r\n let scrollbarSize = nativeScrollbarSize;\r\n\r\n window.addEventListener('resize', () => {\r\n if (onChangedListener.size) {\r\n const sizeNew = windowSize();\r\n const deltaSize = {\r\n w: sizeNew.w - size.w,\r\n h: sizeNew.h - size.h,\r\n };\r\n\r\n if (deltaSize.w === 0 && deltaSize.h === 0) return;\r\n\r\n const deltaAbsSize = {\r\n w: abs(deltaSize.w),\r\n h: abs(deltaSize.h),\r\n };\r\n const deltaAbsRatio = {\r\n w: abs(round(sizeNew.w / (size.w / 100.0))),\r\n h: abs(round(sizeNew.h / (size.h / 100.0))),\r\n };\r\n const dprNew = getWindowDPR();\r\n const deltaIsBigger = deltaAbsSize.w > 2 && deltaAbsSize.h > 2;\r\n const difference = !diffBiggerThanOne(deltaAbsRatio.w, deltaAbsRatio.h);\r\n const dprChanged = dprNew !== dpr && dpr > 0;\r\n const isZoom = deltaIsBigger && difference && dprChanged;\r\n\r\n if (isZoom) {\r\n const newScrollbarSize = (environmentInstance._nativeScrollbarSize =\r\n getNativeScrollbarSize(body, envElm));\r\n removeElements(envElm);\r\n\r\n if (scrollbarSize.x !== newScrollbarSize.x || scrollbarSize.y !== newScrollbarSize.y) {\r\n runEach(onChangedListener);\r\n }\r\n\r\n scrollbarSize = newScrollbarSize;\r\n }\r\n\r\n size = sizeNew;\r\n dpr = dprNew;\r\n }\r\n });\r\n }\r\n\r\n return env;\r\n};\r\n\r\nexport const getEnvironment = (): Environment => {\r\n if (!environmentInstance) {\r\n environmentInstance = createEnvironment();\r\n }\r\n return environmentInstance;\r\n};\r\n","import {\r\n isHTMLElement,\r\n appendChildren,\r\n is,\r\n createDiv,\r\n contents,\r\n insertAfter,\r\n addClass,\r\n parent,\r\n indexOf,\r\n removeElements,\r\n removeClass,\r\n push,\r\n runEach,\r\n insertBefore,\r\n attr,\r\n isBoolean,\r\n isFunction,\r\n keys,\r\n} from 'support';\r\nimport {\r\n classNameHost,\r\n classNamePadding,\r\n classNameViewport,\r\n classNameViewportArrange,\r\n classNameContent,\r\n classNameViewportScrollbarStyling,\r\n} from 'classnames';\r\nimport {\r\n getEnvironment,\r\n StructureInitializationStaticElement,\r\n StructureInitializationDynamicElement,\r\n StructureInitializationStrategy,\r\n} from 'environment';\r\nimport { OSTarget, OSTargetElement, StructureInitialization } from 'typings';\r\n\r\nexport interface OSTargetContext {\r\n _isTextarea: boolean;\r\n _isBody: boolean;\r\n _htmlElm: HTMLHtmlElement;\r\n _bodyElm: HTMLBodyElement;\r\n _windowElm: Window;\r\n _documentElm: HTMLDocument;\r\n _targetIsElm: boolean;\r\n}\r\n\r\nexport interface PreparedOSTargetObject {\r\n _target: OSTargetElement;\r\n _host: HTMLElement;\r\n _viewport: HTMLElement;\r\n _padding: HTMLElement | false;\r\n _content: HTMLElement | false;\r\n _viewportArrange: HTMLStyleElement | false;\r\n}\r\n\r\nexport interface StructureSetup {\r\n _targetObj: PreparedOSTargetObject;\r\n _targetCtx: OSTargetContext;\r\n _destroy: () => void;\r\n}\r\n\r\nlet contentArrangeCounter = 0;\r\n\r\nconst unwrap = (elm: HTMLElement | false | null | undefined) => {\r\n appendChildren(parent(elm), contents(elm));\r\n removeElements(elm);\r\n};\r\n\r\nconst createUniqueViewportArrangeElement = (): HTMLStyleElement | false => {\r\n const { _nativeScrollbarStyling, _nativeScrollbarIsOverlaid, _cssCustomProperties } =\r\n getEnvironment();\r\n /* istanbul ignore next */\r\n const create =\r\n !_cssCustomProperties &&\r\n !_nativeScrollbarStyling &&\r\n (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);\r\n const result = create ? document.createElement('style') : false;\r\n\r\n if (result) {\r\n attr(result, 'id', `${classNameViewportArrange}-${contentArrangeCounter}`);\r\n contentArrangeCounter++;\r\n }\r\n\r\n return result;\r\n};\r\n\r\nconst staticCreationFromStrategy = (\r\n target: OSTargetElement,\r\n initializationValue: HTMLElement | undefined,\r\n strategy: StructureInitializationStaticElement,\r\n elementClass: string\r\n): HTMLElement => {\r\n const result =\r\n initializationValue || (isFunction(strategy) ? strategy(target) : (strategy as null));\r\n return result || createDiv(elementClass);\r\n};\r\n\r\nconst dynamicCreationFromStrategy = (\r\n target: OSTargetElement,\r\n initializationValue: HTMLElement | boolean | undefined,\r\n strategy: StructureInitializationDynamicElement,\r\n elementClass: string,\r\n defaultValue: boolean\r\n): HTMLElement | false => {\r\n const takeInitializationValue = isBoolean(initializationValue) || initializationValue;\r\n const result = takeInitializationValue\r\n ? (initializationValue as boolean | HTMLElement)\r\n : isFunction(strategy)\r\n ? strategy(target)\r\n : strategy;\r\n\r\n if (result === null) {\r\n return defaultValue ? createDiv(elementClass) : false;\r\n }\r\n\r\n return result === true ? createDiv(elementClass) : result;\r\n};\r\n\r\nexport const createStructureSetup = (\r\n target: OSTarget | StructureInitialization\r\n): StructureSetup => {\r\n const { _getInitializationStrategy, _nativeScrollbarStyling } = getEnvironment();\r\n const {\r\n _host: hostInitializationStrategy,\r\n _viewport: viewportInitializationStrategy,\r\n _padding: paddingInitializationStrategy,\r\n _content: contentInitializationStrategy,\r\n } = _getInitializationStrategy() as StructureInitializationStrategy;\r\n const targetIsElm = isHTMLElement(target);\r\n const targetStructureInitialization = target as StructureInitialization;\r\n const targetElement = targetIsElm\r\n ? (target as OSTargetElement)\r\n : targetStructureInitialization.target;\r\n const isTextarea = is(targetElement, 'textarea');\r\n const isBody = !isTextarea && is(targetElement, 'body');\r\n const ownerDocument: HTMLDocument = targetElement!.ownerDocument;\r\n const bodyElm = ownerDocument.body as HTMLBodyElement;\r\n const wnd = ownerDocument.defaultView as Window;\r\n const evaluatedTargetObj: PreparedOSTargetObject = {\r\n _target: targetElement,\r\n _host: isTextarea\r\n ? staticCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.host,\r\n hostInitializationStrategy,\r\n classNameHost\r\n )\r\n : (targetElement as HTMLElement),\r\n _viewport: staticCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.viewport,\r\n viewportInitializationStrategy,\r\n classNameViewport\r\n ),\r\n _padding: dynamicCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.padding,\r\n paddingInitializationStrategy,\r\n classNamePadding,\r\n !_nativeScrollbarStyling // default value for padding\r\n ),\r\n _content: dynamicCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.content,\r\n contentInitializationStrategy,\r\n classNameContent,\r\n false // default value for content\r\n ),\r\n _viewportArrange: createUniqueViewportArrangeElement(),\r\n };\r\n const ctx: OSTargetContext = {\r\n _windowElm: wnd,\r\n _documentElm: ownerDocument,\r\n _htmlElm: parent(bodyElm) as HTMLHtmlElement,\r\n _bodyElm: bodyElm,\r\n _isTextarea: isTextarea,\r\n _isBody: isBody,\r\n _targetIsElm: targetIsElm,\r\n };\r\n const generatedElements = keys(evaluatedTargetObj).reduce((arr, key: string) => {\r\n const value = evaluatedTargetObj[key];\r\n return push(arr, value && !parent(value) ? value : false);\r\n }, [] as HTMLElement[]);\r\n const elementIsGenerated = (elm: HTMLElement | false) =>\r\n elm ? indexOf(generatedElements, elm) > -1 : null;\r\n const { _target, _host, _padding, _viewport, _content, _viewportArrange } = evaluatedTargetObj;\r\n const destroyFns: (() => any)[] = [];\r\n const isTextareaHostGenerated = isTextarea && elementIsGenerated(_host);\r\n const targetContents = isTextarea\r\n ? _target\r\n : contents(\r\n [_content, _viewport, _padding, _host, _target].find(\r\n (elm) => elementIsGenerated(elm) === false\r\n )\r\n );\r\n const contentSlot = _content || _viewport;\r\n\r\n // only insert host for textarea after target if it was generated\r\n if (isTextareaHostGenerated) {\r\n insertAfter(_target, _host);\r\n\r\n push(destroyFns, () => {\r\n insertAfter(_host, _target);\r\n removeElements(_host);\r\n });\r\n }\r\n\r\n appendChildren(contentSlot, targetContents);\r\n appendChildren(_host, _padding);\r\n appendChildren(_padding || _host, _viewport);\r\n appendChildren(_viewport, _content);\r\n\r\n addClass(_host, classNameHost);\r\n addClass(_padding, classNamePadding);\r\n addClass(_viewport, classNameViewport);\r\n addClass(_content, classNameContent);\r\n\r\n push(destroyFns, () => {\r\n if (targetIsElm) {\r\n appendChildren(_host, contents(contentSlot));\r\n removeElements(_padding || _viewport);\r\n removeClass(_host, classNameHost);\r\n } else {\r\n if (elementIsGenerated(_content)) {\r\n unwrap(_content);\r\n }\r\n if (elementIsGenerated(_viewport)) {\r\n unwrap(_viewport);\r\n }\r\n if (elementIsGenerated(_padding)) {\r\n unwrap(_padding);\r\n }\r\n removeClass(_host, classNameHost);\r\n removeClass(_padding, classNamePadding);\r\n removeClass(_viewport, classNameViewport);\r\n removeClass(_content, classNameContent);\r\n }\r\n });\r\n\r\n if (_nativeScrollbarStyling) {\r\n push(destroyFns, removeClass.bind(0, _viewport, classNameViewportScrollbarStyling));\r\n }\r\n if (_viewportArrange) {\r\n insertBefore(_viewport, _viewportArrange);\r\n push(destroyFns, removeElements.bind(0, _viewportArrange));\r\n }\r\n\r\n return {\r\n _targetObj: evaluatedTargetObj,\r\n _targetCtx: ctx,\r\n _destroy: () => {\r\n runEach(destroyFns);\r\n },\r\n };\r\n};\r\n","import { appendChildren, createDiv, removeElements, isFunction } from 'support';\r\nimport {\r\n classNameScrollbar,\r\n classNameScrollbarHorizontal,\r\n classNameScrollbarVertical,\r\n classNameScrollbarTrack,\r\n classNameScrollbarHandle,\r\n} from 'classnames';\r\nimport { getEnvironment, ScrollbarsInitializationStrategy } from 'environment';\r\nimport { OSTarget, ScrollbarsInitialization } from 'typings';\r\nimport { StructureSetup } from 'setups/structureSetup';\r\n\r\nexport interface ScrollbarStructure {\r\n _scrollbar: HTMLElement;\r\n _track: HTMLElement;\r\n _handle: HTMLElement;\r\n}\r\n\r\nexport interface ScrollbarsSetup {\r\n _horizontalScrollbarStructure: ScrollbarStructure;\r\n _verticalScrollbarStructure: ScrollbarStructure;\r\n _destroy: () => void;\r\n}\r\n\r\nconst generateScrollbarDOM = (scrollbarClassName: string): ScrollbarStructure => {\r\n const scrollbar = createDiv(`${classNameScrollbar} ${scrollbarClassName}`);\r\n const track = createDiv(classNameScrollbarTrack);\r\n const handle = createDiv(classNameScrollbarHandle);\r\n\r\n appendChildren(scrollbar, track);\r\n appendChildren(track, handle);\r\n\r\n return {\r\n _scrollbar: scrollbar,\r\n _track: track,\r\n _handle: handle,\r\n };\r\n};\r\n\r\nexport const createScrollbarsSetup = (target: OSTarget | ScrollbarsInitialization, structureSetup: StructureSetup): ScrollbarsSetup => {\r\n const { _getInitializationStrategy } = getEnvironment();\r\n const { _scrollbarsSlot: environmentScrollbarSlot } = _getInitializationStrategy() as ScrollbarsInitializationStrategy;\r\n const { _targetObj, _targetCtx } = structureSetup;\r\n const { _target, _host, _viewport } = _targetObj;\r\n const initializationScrollbarSlot = !_targetCtx._targetIsElm && (target as ScrollbarsInitialization).scrollbarsSlot;\r\n const initializationScrollbarSlotResult = isFunction(initializationScrollbarSlot)\r\n ? initializationScrollbarSlot(_target, _host, _viewport)\r\n : initializationScrollbarSlot;\r\n const evaluatedScrollbarSlot =\r\n initializationScrollbarSlotResult ||\r\n (isFunction(environmentScrollbarSlot) ? environmentScrollbarSlot(_target, _host, _viewport) : environmentScrollbarSlot) ||\r\n _host;\r\n\r\n const horizontalScrollbarStructure = generateScrollbarDOM(classNameScrollbarHorizontal);\r\n const verticalScrollbarStructure = generateScrollbarDOM(classNameScrollbarVertical);\r\n\r\n const { _scrollbar: horizontalScrollbar } = horizontalScrollbarStructure;\r\n const { _scrollbar: verticalScrollbar } = verticalScrollbarStructure;\r\n\r\n appendChildren(evaluatedScrollbarSlot, horizontalScrollbar);\r\n appendChildren(evaluatedScrollbarSlot, verticalScrollbar);\r\n\r\n return {\r\n _horizontalScrollbarStructure: horizontalScrollbarStructure,\r\n _verticalScrollbarStructure: verticalScrollbarStructure,\r\n _destroy() {\r\n removeElements([horizontalScrollbar, verticalScrollbar]);\r\n },\r\n };\r\n};\r\n","import {\r\n Cache,\r\n CacheValues,\r\n createCache,\r\n createDOM,\r\n style,\r\n appendChildren,\r\n offsetSize,\r\n scrollLeft,\r\n scrollTop,\r\n runEach,\r\n prependChildren,\r\n removeElements,\r\n on,\r\n stopAndPrevent,\r\n addClass,\r\n equalWH,\r\n push,\r\n cAF,\r\n rAF,\r\n ResizeObserverConstructor,\r\n isArray,\r\n isBoolean,\r\n removeClass,\r\n isObject,\r\n} from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport {\r\n classNameSizeObserver,\r\n classNameSizeObserverAppear,\r\n classNameSizeObserverListener,\r\n classNameSizeObserverListenerScroll,\r\n classNameSizeObserverListenerItem,\r\n classNameSizeObserverListenerItemFinal,\r\n} from 'classnames';\r\n\r\nexport interface SizeObserverOptions {\r\n _direction?: boolean;\r\n _appear?: boolean;\r\n}\r\n\r\nexport interface SizeObserverCallbackParams {\r\n _sizeChanged: boolean;\r\n _directionIsRTLCache?: CacheValues;\r\n _appear?: boolean;\r\n}\r\n\r\nexport interface SizeObserver {\r\n _destroy(): void;\r\n _getCurrentCacheValues(\r\n force?: boolean\r\n ): {\r\n _directionIsRTL: CacheValues;\r\n };\r\n}\r\n\r\nconst animationStartEventName = 'animationstart';\r\nconst scrollEventName = 'scroll';\r\nconst scrollAmount = 3333333;\r\nconst getElmDirectionIsRTL = (elm: HTMLElement): boolean => style(elm, 'direction') === 'rtl';\r\nconst domRectHasDimensions = (rect?: DOMRectReadOnly) => rect && (rect.height || rect.width);\r\n\r\n/**\r\n * Creates a size observer which observes any size, padding, border, margin and box-sizing changes of the target element. Depending on the options also direction and appear can be observed.\r\n * @param target The target element which shall be observed.\r\n * @param onSizeChangedCallback The callback which gets called after a size change was detected.\r\n * @param options The options for size detection, whether to observe also direction and appear.\r\n * @returns A object which represents the instance of the size observer.\r\n */\r\nexport const createSizeObserver = (\r\n target: HTMLElement,\r\n onSizeChangedCallback: (params: SizeObserverCallbackParams) => any,\r\n options?: SizeObserverOptions\r\n): SizeObserver => {\r\n const { _direction: observeDirectionChange = false, _appear: observeAppearChange = false } =\r\n options || {};\r\n const { _rtlScrollBehavior: rtlScrollBehavior } = getEnvironment();\r\n const baseElements = createDOM(\r\n `
`\r\n );\r\n const sizeObserver = baseElements[0] as HTMLElement;\r\n const listenerElement = sizeObserver.firstChild as HTMLElement;\r\n const getIsDirectionRTL = getElmDirectionIsRTL.bind(0, sizeObserver);\r\n const [updateResizeObserverContentRectCache] = createCache({\r\n _initialValue: undefined,\r\n _alwaysUpdateValues: true,\r\n _equal: (currVal, newVal) =>\r\n !(\r\n !currVal || // if no initial value\r\n // if from display: none to display: block\r\n (!domRectHasDimensions(currVal) && domRectHasDimensions(newVal))\r\n ),\r\n });\r\n const onSizeChangedCallbackProxy = (\r\n sizeChangedContext?: CacheValues | ResizeObserverEntry[] | Event | boolean\r\n ) => {\r\n const isResizeObserverCall =\r\n isArray(sizeChangedContext) &&\r\n sizeChangedContext.length > 0 &&\r\n isObject(sizeChangedContext[0]);\r\n\r\n const hasDirectionCache =\r\n !isResizeObserverCall && isBoolean((sizeChangedContext as CacheValues)[0]);\r\n\r\n let skip = false;\r\n let appear: boolean | number | undefined = false;\r\n let doDirectionScroll = true; // always true if sizeChangedContext is Event (appear callback or RO. Polyfill)\r\n\r\n // if triggered from RO.\r\n if (isResizeObserverCall) {\r\n const [currRContentRect, , prevContentRect] = updateResizeObserverContentRectCache(\r\n (sizeChangedContext as ResizeObserverEntry[]).pop()!.contentRect\r\n );\r\n const hasDimensions = domRectHasDimensions(currRContentRect);\r\n const hadDimensions = domRectHasDimensions(prevContentRect);\r\n skip = !prevContentRect || !hasDimensions; // skip on initial RO. call or if display is none\r\n appear = !hadDimensions && hasDimensions;\r\n\r\n doDirectionScroll = !skip; // direction scroll when not skipping\r\n }\r\n // else if its triggered with DirectionCache\r\n else if (hasDirectionCache) {\r\n [, doDirectionScroll] = sizeChangedContext as CacheValues; // direction scroll when DirectionCache changed, false otherwise\r\n }\r\n // else if it triggered with appear from polyfill\r\n else {\r\n appear = sizeChangedContext === true;\r\n }\r\n\r\n if (observeDirectionChange && doDirectionScroll) {\r\n const rtl = hasDirectionCache\r\n ? (sizeChangedContext as CacheValues)[0]\r\n : getElmDirectionIsRTL(sizeObserver);\r\n scrollLeft(\r\n sizeObserver,\r\n rtl\r\n ? rtlScrollBehavior.n\r\n ? -scrollAmount\r\n : rtlScrollBehavior.i\r\n ? 0\r\n : scrollAmount\r\n : scrollAmount\r\n );\r\n scrollTop(sizeObserver, scrollAmount);\r\n }\r\n\r\n if (!skip) {\r\n onSizeChangedCallback({\r\n _sizeChanged: !hasDirectionCache,\r\n _directionIsRTLCache: hasDirectionCache\r\n ? (sizeChangedContext as CacheValues)\r\n : undefined,\r\n _appear: !!appear,\r\n });\r\n }\r\n };\r\n const offListeners: (() => void)[] = [];\r\n let appearCallback: ((...args: any) => any) | false = observeAppearChange\r\n ? onSizeChangedCallbackProxy\r\n : false;\r\n let directionIsRTLCache: Cache | undefined;\r\n\r\n if (ResizeObserverConstructor) {\r\n const resizeObserverInstance = new ResizeObserverConstructor(onSizeChangedCallbackProxy);\r\n resizeObserverInstance.observe(listenerElement);\r\n push(offListeners, () => {\r\n resizeObserverInstance.disconnect();\r\n });\r\n } else {\r\n const observerElementChildren = createDOM(\r\n `
`\r\n );\r\n appendChildren(listenerElement, observerElementChildren);\r\n addClass(listenerElement, classNameSizeObserverListenerScroll);\r\n const observerElementChildrenRoot = observerElementChildren[0] as HTMLElement;\r\n const shrinkElement = observerElementChildrenRoot.lastChild as HTMLElement;\r\n const expandElement = observerElementChildrenRoot.firstChild as HTMLElement;\r\n const expandElementChild = expandElement?.firstChild as HTMLElement;\r\n\r\n let cacheSize = offsetSize(observerElementChildrenRoot);\r\n let currSize = cacheSize;\r\n let isDirty = false;\r\n let rAFId: number;\r\n\r\n const reset = () => {\r\n scrollLeft(expandElement, scrollAmount);\r\n scrollTop(expandElement, scrollAmount);\r\n scrollLeft(shrinkElement, scrollAmount);\r\n scrollTop(shrinkElement, scrollAmount);\r\n };\r\n const onResized = (appear?: unknown) => {\r\n rAFId = 0;\r\n if (isDirty) {\r\n cacheSize = currSize;\r\n onSizeChangedCallbackProxy(appear === true);\r\n }\r\n };\r\n const onScroll = (scrollEvent?: Event | false) => {\r\n currSize = offsetSize(observerElementChildrenRoot);\r\n isDirty = !scrollEvent || !equalWH(currSize, cacheSize);\r\n\r\n if (scrollEvent) {\r\n stopAndPrevent(scrollEvent);\r\n\r\n if (isDirty && !rAFId) {\r\n cAF!(rAFId);\r\n rAFId = rAF!(onResized);\r\n }\r\n } else {\r\n onResized(scrollEvent === false);\r\n }\r\n\r\n reset();\r\n };\r\n\r\n push(offListeners, [\r\n on(expandElement, scrollEventName, onScroll),\r\n on(shrinkElement, scrollEventName, onScroll),\r\n ]);\r\n\r\n // lets assume that the divs will never be that large and a constant value is enough\r\n style(expandElementChild, {\r\n width: scrollAmount,\r\n height: scrollAmount,\r\n });\r\n\r\n reset();\r\n\r\n appearCallback = observeAppearChange ? onScroll.bind(0, false) : reset;\r\n }\r\n\r\n if (observeDirectionChange) {\r\n directionIsRTLCache = createCache(\r\n {\r\n _initialValue: !getIsDirectionRTL(), // invert current value to trigger initial change\r\n },\r\n getIsDirectionRTL\r\n );\r\n const [updateDirectionIsRTLCache] = directionIsRTLCache;\r\n\r\n push(\r\n offListeners,\r\n on(sizeObserver, scrollEventName, (event: Event) => {\r\n const directionIsRTLCacheValues = updateDirectionIsRTLCache();\r\n const [directionIsRTL, directionIsRTLChanged] = directionIsRTLCacheValues;\r\n\r\n if (directionIsRTLChanged) {\r\n removeClass(listenerElement, 'ltr rtl');\r\n if (directionIsRTL) {\r\n addClass(listenerElement, 'rtl');\r\n } else {\r\n addClass(listenerElement, 'ltr');\r\n }\r\n onSizeChangedCallbackProxy(directionIsRTLCacheValues);\r\n }\r\n\r\n stopAndPrevent(event);\r\n })\r\n );\r\n }\r\n\r\n // appearCallback is always needed on scroll-observer strategy to reset it\r\n if (appearCallback) {\r\n addClass(sizeObserver, classNameSizeObserverAppear);\r\n push(\r\n offListeners,\r\n on(sizeObserver, animationStartEventName, appearCallback, {\r\n // Fire only once for \"CSS is ready\" event if ResizeObserver strategy is used\r\n _once: !!ResizeObserverConstructor,\r\n })\r\n );\r\n }\r\n\r\n prependChildren(target, sizeObserver);\r\n\r\n return {\r\n _destroy() {\r\n runEach(offListeners);\r\n removeElements(sizeObserver);\r\n },\r\n _getCurrentCacheValues(force?: boolean) {\r\n return {\r\n _directionIsRTL: directionIsRTLCache\r\n ? directionIsRTLCache[1](force) // get current cache values\r\n : [false, false, false],\r\n };\r\n },\r\n };\r\n};\r\n","import {\r\n WH,\r\n CacheValues,\r\n createDiv,\r\n offsetSize,\r\n runEach,\r\n prependChildren,\r\n removeElements,\r\n createCache,\r\n push,\r\n IntersectionObserverConstructor,\r\n} from 'support';\r\nimport { createSizeObserver } from 'observers/sizeObserver';\r\nimport { classNameTrinsicObserver } from 'classnames';\r\n\r\nexport interface TrinsicObserver {\r\n _destroy(): void;\r\n _getCurrentCacheValues(\r\n force?: boolean\r\n ): {\r\n _heightIntrinsic: CacheValues;\r\n };\r\n}\r\n\r\nconst isHeightIntrinsic = (ioEntryOrSize: IntersectionObserverEntry | WH): boolean =>\r\n (ioEntryOrSize as WH).h === 0 ||\r\n (ioEntryOrSize as IntersectionObserverEntry).isIntersecting ||\r\n (ioEntryOrSize as IntersectionObserverEntry).intersectionRatio > 0;\r\n\r\n/**\r\n * Creates a trinsic observer which observes changes to intrinsic or extrinsic sizing for the height of the target element.\r\n * @param target The element which shall be observed.\r\n * @param onTrinsicChangedCallback The callback which gets called after a change was detected.\r\n * @returns A object which represents the instance of the trinsic observer.\r\n */\r\nexport const createTrinsicObserver = (\r\n target: HTMLElement,\r\n onTrinsicChangedCallback: (heightIntrinsic: CacheValues) => any\r\n): TrinsicObserver => {\r\n const trinsicObserver = createDiv(classNameTrinsicObserver);\r\n const offListeners: (() => void)[] = [];\r\n const [updateHeightIntrinsicCache, getCurrentHeightIntrinsicCache] = createCache({\r\n _initialValue: false,\r\n });\r\n\r\n const triggerOnTrinsicChangedCallback = (\r\n updateValue?: IntersectionObserverEntry | WH\r\n ) => {\r\n if (updateValue) {\r\n const heightIntrinsic = updateHeightIntrinsicCache(isHeightIntrinsic(updateValue));\r\n const [, heightIntrinsicChanged] = heightIntrinsic;\r\n\r\n if (heightIntrinsicChanged) {\r\n onTrinsicChangedCallback(heightIntrinsic);\r\n }\r\n }\r\n };\r\n\r\n if (IntersectionObserverConstructor) {\r\n const intersectionObserverInstance: IntersectionObserver = new IntersectionObserverConstructor(\r\n (entries: IntersectionObserverEntry[]) => {\r\n if (entries && entries.length > 0) {\r\n triggerOnTrinsicChangedCallback(entries.pop());\r\n }\r\n },\r\n { root: target }\r\n );\r\n intersectionObserverInstance.observe(trinsicObserver);\r\n push(offListeners, () => {\r\n intersectionObserverInstance.disconnect();\r\n });\r\n } else {\r\n const onSizeChanged = () => {\r\n const newSize = offsetSize(trinsicObserver);\r\n triggerOnTrinsicChangedCallback(newSize);\r\n };\r\n push(offListeners, createSizeObserver(trinsicObserver, onSizeChanged)._destroy);\r\n onSizeChanged();\r\n }\r\n\r\n prependChildren(target, trinsicObserver);\r\n\r\n return {\r\n _destroy() {\r\n runEach(offListeners);\r\n removeElements(trinsicObserver);\r\n },\r\n _getCurrentCacheValues(force?: boolean) {\r\n return {\r\n _heightIntrinsic: getCurrentHeightIntrinsicCache(force),\r\n };\r\n },\r\n };\r\n};\r\n","import {\r\n each,\r\n noop,\r\n debounce,\r\n indexOf,\r\n isString,\r\n MutationObserverConstructor,\r\n isEmptyArray,\r\n on,\r\n attr,\r\n is,\r\n find,\r\n push,\r\n} from 'support';\r\n\r\ntype DOMContentObserverCallback = (contentChangedTroughEvent: boolean) => any;\r\n\r\ntype DOMTargetObserverCallback = (targetChangedAttrs: string[], targetStyleChanged: boolean) => any;\r\n\r\ninterface DOMObserverOptionsBase {\r\n _attributes?: string[];\r\n _styleChangingAttributes?: string[];\r\n}\r\n\r\ninterface DOMContentObserverOptions extends DOMObserverOptionsBase {\r\n _eventContentChange?: DOMObserverEventContentChange; // [selector, eventname(s) | function returning eventname(s)] -> eventnames divided by whitespaces\r\n _nestedTargetSelector?: string;\r\n _ignoreContentChange?: DOMObserverIgnoreContentChange; // function which will prevent marking certain dom changes as content change if it returns true\r\n _ignoreNestedTargetChange?: DOMObserverIgnoreTargetChange; // a function which will prevent marking certain attributes as changed on nested targets if it returns true\r\n}\r\n\r\ninterface DOMTargetObserverOptions extends DOMObserverOptionsBase {\r\n _ignoreTargetChange?: DOMObserverIgnoreTargetChange; // a function which will prevent marking certain attributes as changed if it returns true\r\n}\r\n\r\ntype ContentChangeArrayItem = [string?, string?] | null | undefined;\r\n\r\nexport type DOMObserverEventContentChange =\r\n | Array\r\n | false\r\n | null\r\n | undefined;\r\n\r\nexport type DOMObserverIgnoreContentChange = (\r\n mutation: MutationRecord,\r\n isNestedTarget: boolean,\r\n domObserverTarget: HTMLElement,\r\n domObserverOptions?: DOMContentObserverOptions\r\n) => boolean;\r\n\r\nexport type DOMObserverIgnoreTargetChange = (\r\n target: Node,\r\n attributeName: string,\r\n oldAttributeValue: string | null,\r\n newAttributeValue: string | null\r\n) => boolean;\r\n\r\nexport type DOMObserverCallback = ContentObserver extends true\r\n ? DOMContentObserverCallback\r\n : DOMTargetObserverCallback;\r\n\r\nexport type DOMObserverOptions = ContentObserver extends true\r\n ? DOMContentObserverOptions\r\n : DOMTargetObserverOptions;\r\n\r\nexport interface DOMObserver {\r\n _destroy: () => void;\r\n _update: () => void;\r\n}\r\n\r\n/**\r\n * Creates a set of helper functions to observe events of elements inside the target element.\r\n * @param target The target element of which the children elements shall be observed. (not only direct children but also nested ones)\r\n * @param eventContentChange The event content change array. (array of tuples: selector and eventname(s))\r\n * @param callback Callback which is called if one of the elements emits the corresponding event.\r\n * @returns A object which contains a set of helper functions to destroy and update the observation of elements.\r\n */\r\nconst createEventContentChange = (\r\n target: Element,\r\n callback: (...args: any) => any,\r\n eventContentChange?: DOMObserverEventContentChange\r\n) => {\r\n let map: WeakMap any]> | undefined; // weak map to prevent memory leak for detached elements\r\n let destroyed = false;\r\n const _destroy = () => {\r\n destroyed = true;\r\n };\r\n const _updateElements = (getElements?: (selector: string) => Node[]) => {\r\n if (eventContentChange) {\r\n const eventElmList = eventContentChange.reduce>((arr, item) => {\r\n if (item) {\r\n const selector = item[0];\r\n const eventNames = item[1];\r\n const elements =\r\n eventNames &&\r\n selector &&\r\n (getElements ? getElements(selector) : find(selector, target));\r\n\r\n if (elements && elements.length && eventNames && isString(eventNames)) {\r\n push(arr, [elements, eventNames.trim()], true);\r\n }\r\n }\r\n return arr;\r\n }, []);\r\n\r\n each(eventElmList, (item) =>\r\n each(item[0], (elm) => {\r\n const eventNames = item[1];\r\n const entry = map!.get(elm);\r\n\r\n if (entry) {\r\n const entryEventNames = entry[0];\r\n const entryOff = entry[1];\r\n\r\n // in case an already registered element is registered again, unregister the previous events\r\n if (entryEventNames === eventNames) {\r\n entryOff();\r\n }\r\n }\r\n\r\n const off = on(elm, eventNames, (event: Event) => {\r\n if (destroyed) {\r\n off();\r\n map!.delete(elm);\r\n } else {\r\n callback(event);\r\n }\r\n });\r\n map!.set(elm, [eventNames, off]);\r\n })\r\n );\r\n }\r\n };\r\n\r\n if (eventContentChange) {\r\n map = new WeakMap();\r\n _updateElements();\r\n }\r\n\r\n return {\r\n _destroy,\r\n _updateElements,\r\n };\r\n};\r\n\r\n/**\r\n * Creates a DOM observer which observes DOM changes to either the target element or its children.\r\n * @param target The element which shall be observed.\r\n * @param isContentObserver Whether this observer is just observing the target or just the targets children. (not only direct children but also nested ones)\r\n * @param callback The callback which gets called if a change was detected.\r\n * @param options The options for DOM change detection.\r\n * @returns A object which represents the instance of the DOM observer.\r\n */\r\nexport const createDOMObserver = (\r\n target: HTMLElement,\r\n isContentObserver: ContentObserver,\r\n callback: DOMObserverCallback,\r\n options?: DOMObserverOptions\r\n): DOMObserver => {\r\n let isConnected = false;\r\n const {\r\n _attributes,\r\n _styleChangingAttributes,\r\n _eventContentChange,\r\n _nestedTargetSelector,\r\n _ignoreTargetChange,\r\n _ignoreNestedTargetChange,\r\n _ignoreContentChange,\r\n } = (options as DOMContentObserverOptions & DOMTargetObserverOptions) || {};\r\n const {\r\n _destroy: destroyEventContentChange,\r\n _updateElements: updateEventContentChangeElements,\r\n } = createEventContentChange(\r\n target,\r\n debounce(\r\n () => {\r\n if (isConnected) {\r\n (callback as DOMContentObserverCallback)(true);\r\n }\r\n },\r\n { _timeout: 33, _maxDelay: 99 }\r\n ),\r\n _eventContentChange\r\n );\r\n\r\n // MutationObserver\r\n const finalAttributes = _attributes || [];\r\n const finalStyleChangingAttributes = _styleChangingAttributes || [];\r\n const observedAttributes = finalAttributes.concat(finalStyleChangingAttributes);\r\n const observerCallback = (mutations: MutationRecord[]) => {\r\n const ignoreTargetChange =\r\n (isContentObserver ? _ignoreNestedTargetChange : _ignoreTargetChange) || noop;\r\n const ignoreContentChange = _ignoreContentChange || noop;\r\n const targetChangedAttrs: string[] = [];\r\n const totalAddedNodes: Node[] = [];\r\n let targetStyleChanged = false;\r\n let contentChanged = false;\r\n let childListChanged = false;\r\n each(mutations, (mutation) => {\r\n const { attributeName, target: mutationTarget, type, oldValue, addedNodes } = mutation;\r\n const isAttributesType = type === 'attributes';\r\n const isChildListType = type === 'childList';\r\n const targetIsMutationTarget = target === mutationTarget;\r\n const attributeValue =\r\n isAttributesType && isString(attributeName)\r\n ? attr(mutationTarget as HTMLElement, attributeName!)\r\n : 0;\r\n const attributeChanged = attributeValue !== 0 && oldValue !== attributeValue;\r\n const styleChangingAttrChanged =\r\n indexOf(finalStyleChangingAttributes, attributeName) > -1 && attributeChanged;\r\n\r\n // if is content observer and something changed in children\r\n if (isContentObserver && !targetIsMutationTarget) {\r\n const notOnlyAttrChanged = !isAttributesType;\r\n const contentAttrChanged = isAttributesType && styleChangingAttrChanged;\r\n const isNestedTarget =\r\n contentAttrChanged && _nestedTargetSelector && is(mutationTarget, _nestedTargetSelector);\r\n const baseAssertion = isNestedTarget\r\n ? !ignoreTargetChange(mutationTarget, attributeName!, oldValue, attributeValue)\r\n : notOnlyAttrChanged || contentAttrChanged;\r\n const contentFinalChanged =\r\n baseAssertion && !ignoreContentChange(mutation, !!isNestedTarget, target, options);\r\n\r\n push(totalAddedNodes, addedNodes);\r\n\r\n contentChanged = contentChanged || contentFinalChanged;\r\n childListChanged = childListChanged || isChildListType;\r\n }\r\n // if is target observer and target attr changed\r\n if (\r\n !isContentObserver &&\r\n targetIsMutationTarget &&\r\n attributeChanged &&\r\n !ignoreTargetChange(mutationTarget, attributeName!, oldValue, attributeValue)\r\n ) {\r\n push(targetChangedAttrs, attributeName!);\r\n targetStyleChanged = targetStyleChanged || styleChangingAttrChanged;\r\n }\r\n });\r\n\r\n if (childListChanged && !isEmptyArray(totalAddedNodes)) {\r\n // adds / removes the new elements from the event content change\r\n updateEventContentChangeElements((selector) =>\r\n totalAddedNodes.reduce((arr, node) => {\r\n push(arr, find(selector, node));\r\n return is(node, selector) ? push(arr, node) : arr;\r\n }, [])\r\n );\r\n }\r\n\r\n if (isContentObserver) {\r\n contentChanged && (callback as DOMContentObserverCallback)(false);\r\n } else if (!isEmptyArray(targetChangedAttrs) || targetStyleChanged) {\r\n (callback as DOMTargetObserverCallback)(targetChangedAttrs, targetStyleChanged);\r\n }\r\n };\r\n const mutationObserver: MutationObserver = new MutationObserverConstructor!(observerCallback);\r\n\r\n // Connect\r\n mutationObserver.observe(target, {\r\n attributes: true,\r\n attributeOldValue: true,\r\n attributeFilter: observedAttributes,\r\n subtree: isContentObserver,\r\n childList: isContentObserver,\r\n characterData: isContentObserver,\r\n });\r\n isConnected = true;\r\n\r\n return {\r\n _destroy: () => {\r\n if (isConnected) {\r\n destroyEventContentChange();\r\n mutationObserver.disconnect();\r\n isConnected = false;\r\n }\r\n },\r\n _update: () => {\r\n if (isConnected) {\r\n observerCallback(mutationObserver.takeRecords());\r\n }\r\n },\r\n };\r\n};\r\n","import {\r\n CacheValues,\r\n diffClass,\r\n debounce,\r\n isArray,\r\n isNumber,\r\n each,\r\n indexOf,\r\n isString,\r\n attr,\r\n removeAttr,\r\n} from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport { createSizeObserver, SizeObserverCallbackParams } from 'observers/sizeObserver';\r\nimport { createTrinsicObserver } from 'observers/trinsicObserver';\r\nimport { createDOMObserver, DOMObserver } from 'observers/domObserver';\r\nimport { LifecycleHub, LifecycleCheckOption, LifecycleUpdateHints } from 'lifecycles/lifecycleHub';\r\n\r\n// const hostSelector = `.${classNameHost}`;\r\n\r\n// TODO: observer textarea attrs if textarea\r\n// TODO: test _ignoreContentChange & _ignoreNestedTargetChange for content dom observer\r\n// TODO: test _ignoreTargetChange for target dom observer\r\n\r\n// const viewportSelector = `.${classNameViewport}`;\r\n// const contentSelector = `.${classNameContent}`;\r\nconst ignorePrefix = 'os-';\r\nconst viewportAttrsFromTarget = ['tabindex'];\r\nconst baseStyleChangingAttrsTextarea = ['wrap', 'cols', 'rows'];\r\nconst baseStyleChangingAttrs = ['id', 'class', 'style', 'open'];\r\n\r\nconst ignoreTargetChange = (\r\n target: Node,\r\n attrName: string,\r\n oldValue: string | null,\r\n newValue: string | null\r\n) => {\r\n if (attrName === 'class' && oldValue && newValue) {\r\n const diff = diffClass(oldValue, newValue);\r\n return !!diff.find((addedOrRemovedClass) => addedOrRemovedClass.indexOf(ignorePrefix) !== 0);\r\n }\r\n return false;\r\n};\r\n\r\nexport const lifecycleHubOservers = (\r\n instance: LifecycleHub,\r\n updateLifecycles: (updateHints: Partial) => unknown\r\n) => {\r\n let debounceTimeout: number | false | undefined;\r\n let debounceMaxDelay: number | false | undefined;\r\n let contentMutationObserver: DOMObserver | undefined;\r\n const { _structureSetup } = instance;\r\n const { _targetObj, _targetCtx } = _structureSetup;\r\n const { _host, _viewport, _content } = _targetObj;\r\n const { _isTextarea } = _targetCtx;\r\n const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment();\r\n const contentMutationObserverAttr = _isTextarea\r\n ? baseStyleChangingAttrsTextarea\r\n : baseStyleChangingAttrs.concat(baseStyleChangingAttrsTextarea);\r\n const updateLifecyclesWithDebouncedAdaptiveUpdateHints = debounce(updateLifecycles, {\r\n _timeout: () => debounceTimeout,\r\n _maxDelay: () => debounceMaxDelay,\r\n _mergeParams(prev, curr) {\r\n const {\r\n _sizeChanged: prevSizeChanged,\r\n _hostMutation: prevHostMutation,\r\n _contentMutation: prevContentMutation,\r\n } = prev[0];\r\n const {\r\n _sizeChanged: currSizeChanged,\r\n _hostMutation: currvHostMutation,\r\n _contentMutation: currContentMutation,\r\n } = curr[0];\r\n const merged: [Partial] = [\r\n {\r\n _sizeChanged: prevSizeChanged || currSizeChanged,\r\n _hostMutation: prevHostMutation || currvHostMutation,\r\n _contentMutation: prevContentMutation || currContentMutation,\r\n },\r\n ];\r\n\r\n return merged;\r\n },\r\n });\r\n\r\n const updateViewportAttrsFromHost = (attributes?: string[]) => {\r\n each(attributes || viewportAttrsFromTarget, (attribute) => {\r\n if (indexOf(viewportAttrsFromTarget, attribute) > -1) {\r\n const hostAttr = attr(_host, attribute);\r\n if (isString(hostAttr)) {\r\n attr(_viewport, attribute, hostAttr);\r\n } else {\r\n removeAttr(_viewport, attribute);\r\n }\r\n }\r\n });\r\n };\r\n const onTrinsicChanged = (heightIntrinsic: CacheValues) => {\r\n updateLifecycles({\r\n _heightIntrinsic: heightIntrinsic,\r\n });\r\n };\r\n const onSizeChanged = ({\r\n _sizeChanged,\r\n _directionIsRTLCache,\r\n _appear,\r\n }: SizeObserverCallbackParams) => {\r\n const updateFn =\r\n !_sizeChanged || _appear\r\n ? updateLifecycles\r\n : updateLifecyclesWithDebouncedAdaptiveUpdateHints;\r\n updateFn({\r\n _sizeChanged,\r\n _directionIsRTL: _directionIsRTLCache,\r\n });\r\n };\r\n const onContentMutation = (contentChangedTroughEvent: boolean) => {\r\n // if contentChangedTroughEvent is true its already debounced\r\n const updateFn = contentChangedTroughEvent\r\n ? updateLifecycles\r\n : updateLifecyclesWithDebouncedAdaptiveUpdateHints;\r\n updateFn({\r\n _contentMutation: true,\r\n });\r\n };\r\n const onHostMutation = (targetChangedAttrs: string[], targetStyleChanged: boolean) => {\r\n if (targetStyleChanged) {\r\n updateLifecyclesWithDebouncedAdaptiveUpdateHints({\r\n _hostMutation: true,\r\n });\r\n } else {\r\n updateViewportAttrsFromHost(targetChangedAttrs);\r\n }\r\n };\r\n\r\n const trinsicObserver =\r\n (_content || !_flexboxGlue) && createTrinsicObserver(_host, onTrinsicChanged);\r\n const sizeObserver = createSizeObserver(_host, onSizeChanged, {\r\n _appear: true,\r\n _direction: !_nativeScrollbarStyling,\r\n });\r\n const hostMutationObserver = createDOMObserver(_host, false, onHostMutation, {\r\n _styleChangingAttributes: baseStyleChangingAttrs,\r\n _attributes: baseStyleChangingAttrs.concat(viewportAttrsFromTarget),\r\n _ignoreTargetChange: ignoreTargetChange,\r\n });\r\n\r\n const updateOptions = (checkOption: LifecycleCheckOption) => {\r\n const [elementEvents, elementEventsChanged] = checkOption | null>(\r\n 'updating.elementEvents'\r\n );\r\n const [attributes, attributesChanged] = checkOption('updating.attributes');\r\n const [debounceValue, debounceChanged] = checkOption | number | null>(\r\n 'updating.debounce'\r\n );\r\n const updateContentMutationObserver = elementEventsChanged || attributesChanged;\r\n\r\n if (updateContentMutationObserver) {\r\n if (contentMutationObserver) {\r\n contentMutationObserver._update();\r\n contentMutationObserver._destroy();\r\n }\r\n contentMutationObserver = createDOMObserver(_content || _viewport, true, onContentMutation, {\r\n _styleChangingAttributes: contentMutationObserverAttr.concat(attributes || []),\r\n _attributes: contentMutationObserverAttr.concat(attributes || []),\r\n _eventContentChange: elementEvents,\r\n _ignoreNestedTargetChange: ignoreTargetChange,\r\n // _nestedTargetSelector: hostSelector,\r\n /*\r\n _ignoreContentChange: (mutation, isNestedTarget) => {\r\n const { target, attributeName } = mutation;\r\n return isNestedTarget\r\n ? false\r\n : attributeName\r\n ? liesBetween(target as Element, hostSelector, viewportSelector) || liesBetween(target as Element, hostSelector, contentSelector)\r\n : false;\r\n },\r\n */\r\n });\r\n }\r\n\r\n if (debounceChanged) {\r\n updateLifecyclesWithDebouncedAdaptiveUpdateHints._flush();\r\n if (isArray(debounceValue)) {\r\n const timeout = debounceValue[0];\r\n const maxWait = debounceValue[1];\r\n debounceTimeout = isNumber(timeout) ? timeout : false;\r\n debounceMaxDelay = isNumber(maxWait) ? maxWait : false;\r\n } else if (isNumber(debounceValue)) {\r\n debounceTimeout = debounceValue;\r\n debounceMaxDelay = false;\r\n } else {\r\n debounceTimeout = false;\r\n debounceMaxDelay = false;\r\n }\r\n }\r\n };\r\n\r\n updateViewportAttrsFromHost();\r\n\r\n return {\r\n _trinsicObserver: trinsicObserver,\r\n _sizeObserver: sizeObserver,\r\n _updateObserverOptions: updateOptions,\r\n _destroy() {\r\n contentMutationObserver && contentMutationObserver._destroy();\r\n trinsicObserver && trinsicObserver._destroy();\r\n sizeObserver._destroy();\r\n hostMutationObserver._destroy();\r\n },\r\n };\r\n};\r\n","import { style } from 'support';\r\nimport { LifecycleHub, Lifecycle } from 'lifecycles/lifecycleHub';\r\n\r\n/**\r\n * Lifecycle with the responsibility to adjust the trinsic behavior of the content element.\r\n * @param lifecycleHub\r\n * @returns\r\n */\r\nexport const createTrinsicLifecycle = (lifecycleHub: LifecycleHub): Lifecycle => {\r\n const { _structureSetup } = lifecycleHub;\r\n const { _content } = _structureSetup._targetObj;\r\n\r\n return (updateHints) => {\r\n const { _heightIntrinsic } = updateHints;\r\n const [heightIntrinsic, heightIntrinsicChanged] = _heightIntrinsic;\r\n\r\n if (heightIntrinsicChanged) {\r\n style(_content, {\r\n height: heightIntrinsic ? '' : '100%',\r\n display: heightIntrinsic ? '' : 'inline',\r\n });\r\n }\r\n\r\n return {\r\n _sizeChanged: heightIntrinsicChanged,\r\n _contentMutation: heightIntrinsicChanged,\r\n };\r\n };\r\n};\r\n","import { createCache, topRightBottomLeft, equalTRBL, style } from 'support';\r\nimport { LifecycleHub, Lifecycle } from 'lifecycles/lifecycleHub';\r\nimport { StyleObject } from 'typings';\r\nimport { getEnvironment } from 'environment';\r\n\r\n/**\r\n * Lifecycle with the responsibility to adjust the padding styling of the padding and viewport element.\r\n * @param lifecycleHub\r\n * @returns\r\n */\r\nexport const createPaddingLifecycle = (lifecycleHub: LifecycleHub): Lifecycle => {\r\n const { _structureSetup, _setLifecycleCommunication } = lifecycleHub;\r\n const { _host, _padding, _viewport } = _structureSetup._targetObj;\r\n const [updatePaddingCache, currentPaddingCache] = createCache(\r\n {\r\n _equal: equalTRBL,\r\n _initialValue: topRightBottomLeft(),\r\n },\r\n topRightBottomLeft.bind(0, _host, 'padding', '')\r\n );\r\n\r\n return (updateHints, checkOption, force) => {\r\n let [padding, paddingChanged] = currentPaddingCache(force);\r\n const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment();\r\n const { _sizeChanged, _directionIsRTL, _contentMutation } = updateHints;\r\n const [directionIsRTL, directionChanged] = _directionIsRTL;\r\n const [paddingAbsolute, paddingAbsoluteChanged] = checkOption('paddingAbsolute');\r\n const contentMutation = !_flexboxGlue && _contentMutation;\r\n\r\n if (_sizeChanged || paddingChanged || contentMutation) {\r\n [padding, paddingChanged] = updatePaddingCache(force);\r\n }\r\n\r\n const paddingStyleChanged = paddingAbsoluteChanged || directionChanged || paddingChanged;\r\n\r\n if (paddingStyleChanged) {\r\n // if there is no padding element and no scrollbar styling, paddingAbsolute isn't supported\r\n const paddingRelative = !paddingAbsolute || (!_padding && !_nativeScrollbarStyling);\r\n const paddingHorizontal = padding.r + padding.l;\r\n const paddingVertical = padding.t + padding.b;\r\n\r\n const paddingStyle: StyleObject = {\r\n marginRight: paddingRelative && !directionIsRTL ? -paddingHorizontal : 0,\r\n marginBottom: paddingRelative ? -paddingVertical : 0,\r\n marginLeft: paddingRelative && directionIsRTL ? -paddingHorizontal : 0,\r\n top: paddingRelative ? -padding.t : 0,\r\n right: paddingRelative ? (directionIsRTL ? -padding.r : 'auto') : 0,\r\n left: paddingRelative ? (directionIsRTL ? 'auto' : -padding.l) : 0,\r\n width: paddingRelative ? `calc(100% + ${paddingHorizontal}px)` : '',\r\n };\r\n const viewportStyle: StyleObject = {\r\n paddingTop: paddingRelative ? padding.t : 0,\r\n paddingRight: paddingRelative ? padding.r : 0,\r\n paddingBottom: paddingRelative ? padding.b : 0,\r\n paddingLeft: paddingRelative ? padding.l : 0,\r\n };\r\n\r\n // if there is no padding element apply the style to the viewport element instead\r\n style(_padding || _viewport, paddingStyle);\r\n style(_viewport, viewportStyle);\r\n\r\n _setLifecycleCommunication({\r\n _paddingInfo: {\r\n _absolute: !paddingRelative,\r\n _padding: padding,\r\n },\r\n _viewportPaddingStyle: _padding\r\n ? viewportStyle\r\n : {\r\n ...paddingStyle,\r\n ...viewportStyle,\r\n },\r\n });\r\n }\r\n\r\n return {\r\n _paddingStyleChanged: paddingStyleChanged,\r\n };\r\n };\r\n};\r\n","import {\r\n createCache,\r\n keys,\r\n attr,\r\n WH,\r\n XY,\r\n style,\r\n scrollSize,\r\n CacheValues,\r\n equalWH,\r\n addClass,\r\n removeClass,\r\n clientSize,\r\n offsetSize,\r\n getBoundingClientRect,\r\n noop,\r\n each,\r\n} from 'support';\r\nimport { LifecycleHub, Lifecycle } from 'lifecycles/lifecycleHub';\r\nimport { getEnvironment } from 'environment';\r\nimport { OverflowBehavior } from 'options';\r\nimport { StyleObject } from 'typings';\r\nimport { classNameViewportArrange, classNameViewportScrollbarStyling } from 'classnames';\r\n\r\ninterface ViewportOverflowState {\r\n _scrollbarsHideOffset: XY;\r\n _scrollbarsHideOffsetArrange: XY;\r\n _overflowScroll: XY;\r\n}\r\n\r\ninterface OverflowOption {\r\n x: OverflowBehavior;\r\n y: OverflowBehavior;\r\n}\r\n\r\ntype UndoViewportArrangeResult = [\r\n () => void, // redoViewportArrange\r\n ViewportOverflowState?\r\n];\r\n\r\nconst { max, abs, round } = Math;\r\nconst overlaidScrollbarsHideOffset = 42;\r\nconst whCacheOptions = {\r\n _equal: equalWH,\r\n _initialValue: { w: 0, h: 0 },\r\n};\r\nconst sizeFraction = (elm: HTMLElement): WH => {\r\n const viewportOffsetSize = offsetSize(elm);\r\n const viewportRect = getBoundingClientRect(elm);\r\n return {\r\n w: viewportRect.width - viewportOffsetSize.w,\r\n h: viewportRect.height - viewportOffsetSize.h,\r\n };\r\n};\r\nconst fractionalPixelRatioTollerance = () => (window.devicePixelRatio % 1 === 0 ? 0 : 1);\r\nconst setAxisOverflowStyle = (\r\n horizontal: boolean,\r\n overflowAmount: number,\r\n behavior: OverflowBehavior,\r\n styleObj: StyleObject\r\n) => {\r\n const overflowKey: keyof StyleObject = horizontal ? 'overflowX' : 'overflowY';\r\n const behaviorIsVisible = behavior.indexOf('visible') === 0;\r\n const behaviorIsVisibleHidden = behavior === 'visible-hidden';\r\n const behaviorIsScroll = behavior === 'scroll';\r\n const hasOverflow = overflowAmount > 0;\r\n\r\n if (behaviorIsVisible) {\r\n styleObj[overflowKey] = 'visible';\r\n }\r\n if (behaviorIsScroll && hasOverflow) {\r\n styleObj[overflowKey] = behavior;\r\n }\r\n\r\n return {\r\n _visible: behaviorIsVisible,\r\n _behavior: behaviorIsVisibleHidden ? 'hidden' : 'scroll',\r\n };\r\n};\r\n\r\nconst getOverflowAmount = (\r\n viewportScrollSize: WH,\r\n viewportClientSize: WH,\r\n viewportSizeFraction: WH\r\n) => ({\r\n w: max(\r\n 0,\r\n round(\r\n max(0, viewportScrollSize.w - viewportClientSize.w) -\r\n (fractionalPixelRatioTollerance() || max(0, viewportSizeFraction.w))\r\n )\r\n ),\r\n h: max(\r\n 0,\r\n round(\r\n max(0, viewportScrollSize.h - viewportClientSize.h) -\r\n (fractionalPixelRatioTollerance() || max(0, viewportSizeFraction.h))\r\n )\r\n ),\r\n});\r\n\r\n/**\r\n * Lifecycle with the responsibility to set the correct overflow and scrollbar hiding styles of the viewport element.\r\n * @param lifecycleHub\r\n * @returns\r\n */\r\nexport const createOverflowLifecycle = (lifecycleHub: LifecycleHub): Lifecycle => {\r\n const {\r\n _structureSetup,\r\n _doViewportArrange,\r\n _getLifecycleCommunication,\r\n _setLifecycleCommunication,\r\n } = lifecycleHub;\r\n\r\n const { _host, _viewport, _viewportArrange } = _structureSetup._targetObj;\r\n\r\n const [updateViewportSizeFraction, getCurrentViewportSizeFraction] = createCache>(\r\n whCacheOptions,\r\n sizeFraction.bind(0, _viewport)\r\n );\r\n\r\n const [updateViewportScrollSizeCache, getCurrentViewportScrollSizeCache] = createCache<\r\n WH\r\n >(whCacheOptions, scrollSize.bind(0, _viewport));\r\n\r\n const [updateOverflowAmountCache, getCurrentOverflowAmountCache] =\r\n createCache>(whCacheOptions);\r\n\r\n /**\r\n * Applies a fixed height to the viewport so it can't overflow or underflow the host element.\r\n * @param viewportOverflowState The current overflow state.\r\n * @param heightIntrinsic Whether the host height is intrinsic or not.\r\n */\r\n const fixFlexboxGlue = (\r\n viewportOverflowState: ViewportOverflowState,\r\n heightIntrinsic: boolean\r\n ) => {\r\n style(_viewport, {\r\n height: '',\r\n });\r\n\r\n if (heightIntrinsic) {\r\n const { _nativeScrollbarIsOverlaid } = getEnvironment();\r\n const { _absolute: paddingAbsolute, _padding: padding } =\r\n _getLifecycleCommunication()._paddingInfo;\r\n const { _overflowScroll, _scrollbarsHideOffset } = viewportOverflowState;\r\n const hostSizeFraction = sizeFraction(_host);\r\n const hostClientSize = clientSize(_host);\r\n // padding subtraction is only needed if padding is absolute or if viewport is content-box\r\n const isContentBox = style(_viewport, 'boxSizing') === 'content-box';\r\n const paddingVertical = paddingAbsolute || isContentBox ? padding.b + padding.t : 0;\r\n const fractionalClientHeight =\r\n hostClientSize.h + (abs(hostSizeFraction.h) < 1 ? hostSizeFraction.h : 0);\r\n const subtractXScrollbar = !(_nativeScrollbarIsOverlaid.x && isContentBox);\r\n\r\n style(_viewport, {\r\n height:\r\n fractionalClientHeight +\r\n (_overflowScroll.x && subtractXScrollbar ? _scrollbarsHideOffset.x : 0) -\r\n paddingVertical,\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Gets the current overflow state of the viewport.\r\n * @param showNativeOverlaidScrollbars Whether native overlaid scrollbars are shown instead of hidden.\r\n * @param viewportStyleObj The viewport style object where the overflow scroll property can be read of, or undefined if shall be determined.\r\n * @returns A object which contains informations about the current overflow state.\r\n */\r\n const getViewportOverflowState = (\r\n showNativeOverlaidScrollbars: boolean,\r\n viewportStyleObj?: StyleObject\r\n ): ViewportOverflowState => {\r\n const { _nativeScrollbarSize, _nativeScrollbarIsOverlaid, _nativeScrollbarStyling } =\r\n getEnvironment();\r\n const { x: overlaidX, y: overlaidY } = _nativeScrollbarIsOverlaid;\r\n const determineOverflow = !viewportStyleObj;\r\n const arrangeHideOffset =\r\n !_nativeScrollbarStyling && !showNativeOverlaidScrollbars ? overlaidScrollbarsHideOffset : 0;\r\n const styleObj = determineOverflow\r\n ? style(_viewport, ['overflowX', 'overflowY'])\r\n : viewportStyleObj;\r\n const scroll = {\r\n x: styleObj.overflowX === 'scroll',\r\n y: styleObj.overflowY === 'scroll',\r\n };\r\n const nonScrollbarStylingHideOffset = {\r\n x: overlaidX ? arrangeHideOffset : _nativeScrollbarSize.x,\r\n y: overlaidY ? arrangeHideOffset : _nativeScrollbarSize.y,\r\n };\r\n const scrollbarsHideOffset = {\r\n x: scroll.x && !_nativeScrollbarStyling ? nonScrollbarStylingHideOffset.x : 0,\r\n y: scroll.y && !_nativeScrollbarStyling ? nonScrollbarStylingHideOffset.y : 0,\r\n };\r\n\r\n return {\r\n _overflowScroll: scroll,\r\n _scrollbarsHideOffsetArrange: {\r\n x: overlaidX && !!arrangeHideOffset,\r\n y: overlaidY && !!arrangeHideOffset,\r\n },\r\n _scrollbarsHideOffset: scrollbarsHideOffset,\r\n };\r\n };\r\n\r\n /**\r\n * Sets the overflow property of the viewport and calculates the a overflow state according to the new parameters.\r\n * @param showNativeOverlaidScrollbars Whether to show natively overlaid scrollbars.\r\n * @param overflowAmount The overflow amount.\r\n * @param overflow The overflow behavior according to the options.\r\n * @param viewportStyleObj The viewport style object to which the overflow style shall be applied.\r\n * @returns A object which represents the newly set overflow state.\r\n */\r\n const setViewportOverflowState = (\r\n showNativeOverlaidScrollbars: boolean,\r\n overflowAmount: WH,\r\n overflow: OverflowOption,\r\n viewportStyleObj: StyleObject\r\n ): ViewportOverflowState => {\r\n const { _visible: xVisible, _behavior: xVisibleBehavior } = setAxisOverflowStyle(\r\n true,\r\n overflowAmount.w,\r\n overflow.x,\r\n viewportStyleObj\r\n );\r\n const { _visible: yVisible, _behavior: yVisibleBehavior } = setAxisOverflowStyle(\r\n false,\r\n overflowAmount.h,\r\n overflow.y,\r\n viewportStyleObj\r\n );\r\n\r\n if (xVisible && !yVisible) {\r\n viewportStyleObj.overflowX = xVisibleBehavior;\r\n }\r\n if (yVisible && !xVisible) {\r\n viewportStyleObj.overflowY = yVisibleBehavior;\r\n }\r\n\r\n return getViewportOverflowState(showNativeOverlaidScrollbars, viewportStyleObj);\r\n };\r\n\r\n /**\r\n * Sets the styles of the viewport arrange element.\r\n * @param viewportOverflowState The viewport overflow state according to which the scrollbars shall be hidden.\r\n * @param viewportScrollSize The content scroll size.\r\n * @param directionIsRTL Whether the direction is RTL or not.\r\n * @returns A boolean which indicates whether the viewport arrange element was adjusted.\r\n */\r\n const arrangeViewport = (\r\n viewportOverflowState: ViewportOverflowState,\r\n viewportScrollSize: WH,\r\n viewportSizeFraction: WH,\r\n directionIsRTL: boolean\r\n ) => {\r\n if (_doViewportArrange) {\r\n const { _scrollbarsHideOffset, _scrollbarsHideOffsetArrange } = viewportOverflowState;\r\n const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange;\r\n const { x: hideOffsetX, y: hideOffsetY } = _scrollbarsHideOffset;\r\n const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication();\r\n const viewportArrangeHorizontalPaddingKey: keyof StyleObject = directionIsRTL\r\n ? 'paddingRight'\r\n : 'paddingLeft';\r\n const viewportArrangeHorizontalPaddingValue = viewportPaddingStyle[\r\n viewportArrangeHorizontalPaddingKey\r\n ] as number;\r\n const viewportArrangeVerticalPaddingValue = viewportPaddingStyle.paddingTop as number;\r\n const fractionalContentWidth =\r\n viewportScrollSize.w + (abs(viewportSizeFraction.w) < 1 ? viewportSizeFraction.w : 0);\r\n const fractionalContenHeight =\r\n viewportScrollSize.h + (abs(viewportSizeFraction.h) < 1 ? viewportSizeFraction.h : 0);\r\n const arrangeSize = {\r\n w:\r\n hideOffsetY && arrangeY\r\n ? `${hideOffsetY + fractionalContentWidth - viewportArrangeHorizontalPaddingValue}px`\r\n : '',\r\n h:\r\n hideOffsetX && arrangeX\r\n ? `${hideOffsetX + fractionalContenHeight - viewportArrangeVerticalPaddingValue}px`\r\n : '',\r\n };\r\n\r\n // adjust content arrange / before element\r\n if (_viewportArrange) {\r\n const { sheet } = _viewportArrange;\r\n if (sheet) {\r\n const { cssRules } = sheet;\r\n if (cssRules) {\r\n if (!cssRules.length) {\r\n sheet.insertRule(\r\n `#${attr(_viewportArrange, 'id')} + .${classNameViewportArrange}::before {}`,\r\n 0\r\n );\r\n }\r\n\r\n // @ts-ignore\r\n const ruleStyle = cssRules[0].style;\r\n\r\n ruleStyle.width = arrangeSize.w;\r\n ruleStyle.height = arrangeSize.h;\r\n }\r\n }\r\n } else {\r\n style<'--os-vaw' | '--os-vah'>(_viewport, {\r\n '--os-vaw': arrangeSize.w,\r\n '--os-vah': arrangeSize.h,\r\n });\r\n }\r\n }\r\n\r\n return _doViewportArrange;\r\n };\r\n\r\n /**\r\n * Hides the native scrollbars according to the passed parameters.\r\n * @param viewportOverflowState The viewport overflow state.\r\n * @param directionIsRTL Whether the direction is RTL or not.\r\n * @param viewportArrange Whether special styles related to the viewport arrange strategy shall be applied.\r\n * @param viewportStyleObj The viewport style object to which the needed styles shall be applied.\r\n */\r\n const hideNativeScrollbars = (\r\n viewportOverflowState: ViewportOverflowState,\r\n directionIsRTL: boolean,\r\n viewportArrange: boolean,\r\n viewportStyleObj: StyleObject\r\n ) => {\r\n const { _scrollbarsHideOffset, _scrollbarsHideOffsetArrange } = viewportOverflowState;\r\n const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange;\r\n const { x: hideOffsetX, y: hideOffsetY } = _scrollbarsHideOffset;\r\n const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication();\r\n const horizontalMarginKey: keyof StyleObject = directionIsRTL ? 'marginLeft' : 'marginRight';\r\n const viewportHorizontalPaddingKey: keyof StyleObject = directionIsRTL\r\n ? 'paddingLeft'\r\n : 'paddingRight';\r\n const horizontalMarginValue = viewportPaddingStyle[horizontalMarginKey] as number;\r\n const verticalMarginValue = viewportPaddingStyle.marginBottom as number;\r\n const horizontalPaddingValue = viewportPaddingStyle[viewportHorizontalPaddingKey] as number;\r\n const verticalPaddingValue = viewportPaddingStyle.paddingBottom as number;\r\n\r\n // horizontal\r\n viewportStyleObj.width = `calc(100% + ${hideOffsetY + horizontalMarginValue * -1}px)`;\r\n viewportStyleObj[horizontalMarginKey] = -hideOffsetY + horizontalMarginValue;\r\n\r\n // vertical\r\n viewportStyleObj.marginBottom = -hideOffsetX + verticalMarginValue;\r\n\r\n // viewport arrange additional styles\r\n if (viewportArrange) {\r\n viewportStyleObj[viewportHorizontalPaddingKey] =\r\n horizontalPaddingValue + (arrangeY ? hideOffsetY : 0);\r\n viewportStyleObj.paddingBottom = verticalPaddingValue + (arrangeX ? hideOffsetX : 0);\r\n }\r\n };\r\n\r\n /**\r\n * Removes all styles applied because of the viewport arrange strategy.\r\n * @param showNativeOverlaidScrollbars Whether native overlaid scrollbars are shown instead of hidden.\r\n * @param directionIsRTL Whether the direction is RTL or not.\r\n * @param viewportOverflowState The currentviewport overflow state or undefined if it has to be determined.\r\n * @returns A object with a function which applies all the removed styles and the determined viewport vverflow state.\r\n */\r\n const undoViewportArrange = (\r\n showNativeOverlaidScrollbars: boolean,\r\n directionIsRTL: boolean,\r\n viewportOverflowState?: ViewportOverflowState\r\n ): UndoViewportArrangeResult => {\r\n if (_doViewportArrange) {\r\n const finalViewportOverflowState =\r\n viewportOverflowState || getViewportOverflowState(showNativeOverlaidScrollbars);\r\n const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication();\r\n const { _flexboxGlue } = getEnvironment();\r\n const { _scrollbarsHideOffsetArrange } = finalViewportOverflowState;\r\n const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange;\r\n const finalPaddingStyle: StyleObject = {};\r\n const assignProps = (props: string) =>\r\n each(props.split(' '), (prop) => {\r\n finalPaddingStyle[prop] = viewportPaddingStyle[prop];\r\n });\r\n\r\n if (!_flexboxGlue) {\r\n finalPaddingStyle.height = '';\r\n }\r\n\r\n if (arrangeX) {\r\n assignProps('marginBottom paddingTop paddingBottom');\r\n }\r\n\r\n if (arrangeY) {\r\n assignProps('marginLeft marginRight paddingLeft paddingRight');\r\n }\r\n\r\n const prevStyle = style(_viewport, keys(finalPaddingStyle));\r\n removeClass(_viewport, classNameViewportArrange);\r\n style(_viewport, finalPaddingStyle);\r\n\r\n return [\r\n () => {\r\n hideNativeScrollbars(\r\n finalViewportOverflowState,\r\n directionIsRTL,\r\n _doViewportArrange,\r\n prevStyle\r\n );\r\n style(_viewport, prevStyle);\r\n addClass(_viewport, classNameViewportArrange);\r\n },\r\n finalViewportOverflowState,\r\n ];\r\n }\r\n return [noop];\r\n };\r\n\r\n return (updateHints, checkOption, force) => {\r\n const {\r\n _directionIsRTL,\r\n _heightIntrinsic,\r\n _sizeChanged,\r\n _hostMutation,\r\n _contentMutation,\r\n _paddingStyleChanged,\r\n } = updateHints;\r\n const { _flexboxGlue, _nativeScrollbarStyling, _nativeScrollbarIsOverlaid } = getEnvironment();\r\n const [heightIntrinsic, heightIntrinsicChanged] = _heightIntrinsic;\r\n const [directionIsRTL, directionChanged] = _directionIsRTL;\r\n const [showNativeOverlaidScrollbarsOption, showNativeOverlaidScrollbarsChanged] =\r\n checkOption('nativeScrollbarsOverlaid.show');\r\n const showNativeOverlaidScrollbars =\r\n showNativeOverlaidScrollbarsOption &&\r\n _nativeScrollbarIsOverlaid.x &&\r\n _nativeScrollbarIsOverlaid.y;\r\n const adjustFlexboxGlue =\r\n !_flexboxGlue &&\r\n (_sizeChanged ||\r\n _contentMutation ||\r\n _hostMutation ||\r\n showNativeOverlaidScrollbarsChanged ||\r\n heightIntrinsicChanged);\r\n\r\n let viewportSizeFractionCache: CacheValues> = getCurrentViewportSizeFraction(force);\r\n let viewportScrollSizeCache: CacheValues> = getCurrentViewportScrollSizeCache(force);\r\n let overflowAmuntCache: CacheValues> = getCurrentOverflowAmountCache(force);\r\n let preMeasureViewportOverflowState: ViewportOverflowState | undefined;\r\n\r\n if (showNativeOverlaidScrollbarsChanged && _nativeScrollbarStyling) {\r\n if (showNativeOverlaidScrollbars) {\r\n removeClass(_viewport, classNameViewportScrollbarStyling);\r\n } else {\r\n addClass(_viewport, classNameViewportScrollbarStyling);\r\n }\r\n }\r\n\r\n if (adjustFlexboxGlue) {\r\n preMeasureViewportOverflowState = getViewportOverflowState(showNativeOverlaidScrollbars);\r\n fixFlexboxGlue(preMeasureViewportOverflowState, !!heightIntrinsic);\r\n }\r\n\r\n if (\r\n _sizeChanged ||\r\n _paddingStyleChanged ||\r\n _contentMutation ||\r\n showNativeOverlaidScrollbarsChanged ||\r\n directionChanged\r\n ) {\r\n const [redoViewportArrange, undoViewportArrangeOverflowState] = undoViewportArrange(\r\n showNativeOverlaidScrollbars,\r\n directionIsRTL,\r\n preMeasureViewportOverflowState\r\n );\r\n const [viewportSizeFraction, viewportSizeFractionCahnged] = (viewportSizeFractionCache =\r\n updateViewportSizeFraction(force));\r\n const [viewportScrollSize, viewportScrollSizeChanged] = (viewportScrollSizeCache =\r\n updateViewportScrollSizeCache(force));\r\n const viewportContentSize = clientSize(_viewport);\r\n let arrangedViewportScrollSize = viewportScrollSize;\r\n let arrangedViewportClientSize = viewportContentSize;\r\n\r\n redoViewportArrange();\r\n\r\n // if re measure is required (only required if content arrange strategy is used)\r\n if (\r\n (viewportScrollSizeChanged ||\r\n viewportSizeFractionCahnged ||\r\n showNativeOverlaidScrollbarsChanged) &&\r\n undoViewportArrangeOverflowState &&\r\n !showNativeOverlaidScrollbars &&\r\n arrangeViewport(\r\n undoViewportArrangeOverflowState,\r\n viewportScrollSize,\r\n viewportSizeFraction,\r\n directionIsRTL\r\n )\r\n ) {\r\n arrangedViewportClientSize = clientSize(_viewport);\r\n arrangedViewportScrollSize = scrollSize(_viewport);\r\n }\r\n\r\n overflowAmuntCache = updateOverflowAmountCache(\r\n getOverflowAmount(\r\n {\r\n w: max(viewportScrollSize.w, arrangedViewportScrollSize.w),\r\n h: max(viewportScrollSize.h, arrangedViewportScrollSize.h),\r\n }, // scroll size\r\n {\r\n w: arrangedViewportClientSize.w + max(0, viewportContentSize.w - viewportScrollSize.w),\r\n h: arrangedViewportClientSize.h + max(0, viewportContentSize.h - viewportScrollSize.h),\r\n }, // client size\r\n viewportSizeFraction\r\n ),\r\n force\r\n );\r\n }\r\n\r\n const [viewportSizeFraction, viewportSizeFractionChanged] = viewportSizeFractionCache;\r\n const [viewportScrollSize, viewportScrollSizeChanged] = viewportScrollSizeCache;\r\n const [overflowAmount, overflowAmountChanged] = overflowAmuntCache;\r\n const [overflow, overflowChanged] = checkOption('overflow');\r\n\r\n if (\r\n _paddingStyleChanged ||\r\n viewportSizeFractionChanged ||\r\n viewportScrollSizeChanged ||\r\n overflowAmountChanged ||\r\n overflowChanged ||\r\n showNativeOverlaidScrollbarsChanged ||\r\n directionChanged ||\r\n adjustFlexboxGlue\r\n ) {\r\n const viewportStyle: StyleObject = {\r\n marginRight: 0,\r\n marginBottom: 0,\r\n marginLeft: 0,\r\n width: '',\r\n overflowY: '',\r\n overflowX: '',\r\n };\r\n\r\n const viewportOverflowState = setViewportOverflowState(\r\n showNativeOverlaidScrollbars,\r\n overflowAmount,\r\n overflow,\r\n viewportStyle\r\n );\r\n const viewportArranged = arrangeViewport(\r\n viewportOverflowState,\r\n viewportScrollSize,\r\n viewportSizeFraction,\r\n directionIsRTL\r\n );\r\n hideNativeScrollbars(viewportOverflowState, directionIsRTL, viewportArranged, viewportStyle);\r\n\r\n if (adjustFlexboxGlue) {\r\n fixFlexboxGlue(viewportOverflowState, !!heightIntrinsic);\r\n }\r\n\r\n // TODO: hide host overflow if scroll x or y and no padding element there\r\n // TODO: Test without content\r\n // TODO: Test without padding\r\n // TODO: overflow: visible on padding / host if overflow visible on both axis\r\n\r\n style(_viewport, viewportStyle);\r\n\r\n _setLifecycleCommunication({\r\n _viewportOverflowScroll: viewportOverflowState._overflowScroll,\r\n _viewportOverflowAmount: overflowAmount,\r\n });\r\n }\r\n };\r\n};\r\n","import {\r\n XY,\r\n WH,\r\n TRBL,\r\n CacheValues,\r\n each,\r\n hasOwnProperty,\r\n isNumber,\r\n scrollLeft,\r\n scrollTop,\r\n assignDeep,\r\n} from 'support';\r\nimport { OSOptions } from 'options';\r\nimport { getEnvironment } from 'environment';\r\nimport { StructureSetup } from 'setups/structureSetup';\r\nimport { lifecycleHubOservers } from 'lifecycles/lifecycleHubObservers';\r\nimport { createTrinsicLifecycle } from 'lifecycles/trinsicLifecycle';\r\nimport { createPaddingLifecycle } from 'lifecycles/paddingLifecycle';\r\nimport { createOverflowLifecycle } from 'lifecycles/overflowLifecycle';\r\nimport { StyleObject, PartialOptions } from 'typings';\r\nimport { ScrollbarsSetup } from 'setups/scrollbarsSetup';\r\nimport { TriggerEvent } from '../events';\r\n\r\nexport type LifecycleCheckOption = (path: string) => LifecycleOptionInfo;\r\n\r\nexport type Lifecycle = (\r\n updateHints: LifecycleUpdateHints,\r\n checkOption: LifecycleCheckOption,\r\n force: boolean\r\n) => Partial | void;\r\n\r\nexport type LifecycleOptionInfo = [T, boolean];\r\n\r\nexport interface LifecycleCommunication {\r\n _paddingInfo: {\r\n _absolute: boolean;\r\n _padding: TRBL;\r\n };\r\n _viewportPaddingStyle: StyleObject;\r\n _viewportOverflowScroll: XY;\r\n _viewportOverflowAmount: WH;\r\n}\r\n\r\nexport interface LifecycleAdaptiveUpdateHints {\r\n _sizeChanged: boolean;\r\n _hostMutation: boolean;\r\n _contentMutation: boolean;\r\n _paddingStyleChanged: boolean;\r\n}\r\n\r\nexport interface LifecycleUpdateHints extends LifecycleAdaptiveUpdateHints {\r\n _directionIsRTL: CacheValues;\r\n _heightIntrinsic: CacheValues;\r\n}\r\n\r\nexport interface LifecycleHubState {\r\n _overflowAmount: WH;\r\n}\r\n\r\nexport interface LifecycleHubInstance {\r\n _update(changedOptions: PartialOptions, force?: boolean): void;\r\n _state(): LifecycleHubState;\r\n _destroy(): void;\r\n}\r\n\r\nexport interface LifecycleHub {\r\n _options: OSOptions;\r\n _structureSetup: StructureSetup;\r\n // whether the \"viewport arrange\" strategy must be used (true if no native scrollbar hiding and scrollbars are overlaid)\r\n _doViewportArrange: boolean;\r\n _getLifecycleCommunication(): LifecycleCommunication;\r\n _setLifecycleCommunication(newLifecycleCommunication?: Partial): void;\r\n}\r\n\r\nconst getPropByPath = (obj: any, path: string): T =>\r\n obj\r\n ? path.split('.').reduce((o, prop) => (o && hasOwnProperty(o, prop) ? o[prop] : undefined), obj)\r\n : undefined;\r\n\r\nconst booleanCacheValuesFallback: CacheValues = [false, false, false];\r\nconst lifecycleCommunicationFallback: LifecycleCommunication = {\r\n _paddingInfo: {\r\n _absolute: false,\r\n _padding: {\r\n t: 0,\r\n r: 0,\r\n b: 0,\r\n l: 0,\r\n },\r\n },\r\n _viewportOverflowScroll: {\r\n x: false,\r\n y: false,\r\n },\r\n _viewportOverflowAmount: {\r\n w: 0,\r\n h: 0,\r\n },\r\n _viewportPaddingStyle: {\r\n marginRight: 0,\r\n marginBottom: 0,\r\n marginLeft: 0,\r\n paddingTop: 0,\r\n paddingRight: 0,\r\n paddingBottom: 0,\r\n paddingLeft: 0,\r\n },\r\n};\r\n\r\nexport const createLifecycleHub = (\r\n options: OSOptions,\r\n triggerEvent: TriggerEvent,\r\n structureSetup: StructureSetup,\r\n scrollbarsSetup: ScrollbarsSetup\r\n): LifecycleHubInstance => {\r\n let lifecycleCommunication = lifecycleCommunicationFallback;\r\n const { _viewport } = structureSetup._targetObj;\r\n const {\r\n _nativeScrollbarStyling,\r\n _nativeScrollbarIsOverlaid,\r\n _flexboxGlue,\r\n _addListener: addEnvironmentListener,\r\n _removeListener: removeEnvironmentListener,\r\n } = getEnvironment();\r\n const doViewportArrange =\r\n !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);\r\n const instance: LifecycleHub = {\r\n _options: options,\r\n _structureSetup: structureSetup,\r\n _doViewportArrange: doViewportArrange,\r\n _getLifecycleCommunication: () => lifecycleCommunication,\r\n _setLifecycleCommunication(newLifecycleCommunication) {\r\n lifecycleCommunication = assignDeep({}, lifecycleCommunication, newLifecycleCommunication);\r\n },\r\n };\r\n const lifecycles: Lifecycle[] = [\r\n createTrinsicLifecycle(instance),\r\n createPaddingLifecycle(instance),\r\n createOverflowLifecycle(instance),\r\n ];\r\n\r\n const updateLifecycles = (\r\n updateHints: Partial,\r\n changedOptions?: Partial,\r\n force?: boolean\r\n ) => {\r\n let {\r\n // eslint-disable-next-line prefer-const\r\n _directionIsRTL,\r\n // eslint-disable-next-line prefer-const\r\n _heightIntrinsic,\r\n _sizeChanged = force || false,\r\n _hostMutation = force || false,\r\n _contentMutation = force || false,\r\n _paddingStyleChanged = force || false,\r\n } = updateHints || {};\r\n\r\n const finalDirectionIsRTL =\r\n _directionIsRTL ||\r\n (_sizeObserver\r\n ? _sizeObserver._getCurrentCacheValues(force)._directionIsRTL\r\n : booleanCacheValuesFallback);\r\n const finalHeightIntrinsic =\r\n _heightIntrinsic ||\r\n (_trinsicObserver\r\n ? _trinsicObserver._getCurrentCacheValues(force)._heightIntrinsic\r\n : booleanCacheValuesFallback);\r\n const checkOption: LifecycleCheckOption = (path) => [\r\n getPropByPath(options, path),\r\n force || getPropByPath(changedOptions, path) !== undefined,\r\n ];\r\n const adjustScrollOffset = doViewportArrange || !_flexboxGlue;\r\n const scrollOffsetX = adjustScrollOffset && scrollLeft(_viewport);\r\n const scrollOffsetY = adjustScrollOffset && scrollTop(_viewport);\r\n\r\n // place before updating lifecycles because of possible flushing of debounce\r\n if (_updateObserverOptions) {\r\n _updateObserverOptions(checkOption);\r\n }\r\n\r\n each(lifecycles, (lifecycle) => {\r\n const {\r\n _sizeChanged: adaptiveSizeChanged,\r\n _hostMutation: adaptiveHostMutation,\r\n _contentMutation: adaptiveContentMutation,\r\n _paddingStyleChanged: adaptivePaddingStyleChanged,\r\n } = lifecycle(\r\n {\r\n _directionIsRTL: finalDirectionIsRTL,\r\n _heightIntrinsic: finalHeightIntrinsic,\r\n _sizeChanged,\r\n _hostMutation,\r\n _contentMutation,\r\n _paddingStyleChanged,\r\n },\r\n checkOption,\r\n !!force\r\n ) || {};\r\n\r\n _sizeChanged = adaptiveSizeChanged || _sizeChanged;\r\n _hostMutation = adaptiveHostMutation || _hostMutation;\r\n _contentMutation = adaptiveContentMutation || _contentMutation;\r\n _paddingStyleChanged = adaptivePaddingStyleChanged || _paddingStyleChanged;\r\n });\r\n\r\n if (isNumber(scrollOffsetX)) {\r\n scrollLeft(_viewport, scrollOffsetX);\r\n }\r\n if (isNumber(scrollOffsetY)) {\r\n scrollTop(_viewport, scrollOffsetY);\r\n }\r\n\r\n triggerEvent('updated', {\r\n updateHints: {\r\n sizeChanged: _sizeChanged,\r\n contentMutation: _contentMutation,\r\n hostMutation: _hostMutation,\r\n directionChanged: finalDirectionIsRTL[1],\r\n heightIntrinsicChanged: finalHeightIntrinsic[1],\r\n },\r\n changedOptions: changedOptions || {},\r\n force: !!force,\r\n });\r\n };\r\n const {\r\n _sizeObserver,\r\n _trinsicObserver,\r\n _updateObserverOptions,\r\n _destroy: destroyObservers,\r\n } = lifecycleHubOservers(instance, updateLifecycles);\r\n\r\n const update = (changedOptions: Partial, force?: boolean) =>\r\n updateLifecycles({}, changedOptions, force);\r\n const envUpdateListener = update.bind(0, {}, true);\r\n addEnvironmentListener(envUpdateListener);\r\n\r\n console.log(getEnvironment());\r\n\r\n return {\r\n _update: update,\r\n _state: () => ({\r\n _overflowAmount: lifecycleCommunication._viewportOverflowAmount,\r\n }),\r\n _destroy() {\r\n destroyObservers();\r\n removeEnvironmentListener(envUpdateListener);\r\n\r\n structureSetup._destroy();\r\n scrollbarsSetup._destroy();\r\n },\r\n };\r\n};\r\n","import { assignDeep, each, isArray } from 'support';\r\nimport { OverlayScrollbars, OverlayScrollbarsStatic } from 'overlayscrollbars';\r\n\r\nexport type OSPluginInstance =\r\n | Record\r\n | ((staticObj: OverlayScrollbarsStatic, instanceObj: OverlayScrollbars) => void);\r\nexport type OSPlugin = [string, T];\r\n\r\nconst pluginRegistry: Record = {};\r\n\r\nexport const getPlugins = () => assignDeep({}, pluginRegistry);\r\n\r\nexport const addPlugin = (addedPlugin: OSPlugin | OSPlugin[]) =>\r\n each((isArray(addedPlugin) ? addedPlugin : [addedPlugin]) as OSPlugin[], (plugin) => {\r\n pluginRegistry[plugin[0]] = plugin[1];\r\n });\r\n","import { each, hasOwnProperty, keys, push, isEmptyObject } from 'support/utils';\r\nimport { type, isArray, isUndefined, isPlainObject, isString } from 'support/utils/types';\r\nimport { PlainObject, PartialOptions } from 'typings';\r\n\r\nexport type OptionsObjectType = Record;\r\nexport type OptionsFunctionType = (this: unknown, ...args: unknown[]) => unknown;\r\nexport type OptionsTemplateType = ExtractPropsKey<\r\n OptionsTemplateTypeMap,\r\n T\r\n>;\r\nexport type OptionsTemplateTypes = keyof OptionsTemplateTypeMap;\r\nexport type OptionsTemplateNativeTypes = OptionsTemplateTypeMap[keyof OptionsTemplateTypeMap];\r\n\r\nexport type OptionsTemplateValue = T extends string\r\n ? string extends T\r\n ? OptionsTemplateValueNonEnum\r\n : string\r\n : OptionsTemplateValueNonEnum;\r\n\r\nexport type OptionsTemplate = {\r\n [P in keyof T]: T[P] extends OptionsObjectType\r\n ? OptionsTemplate\r\n : T[P] extends OptionsTemplateNativeTypes\r\n ? OptionsTemplateValue\r\n : never;\r\n};\r\n\r\nexport type OptionsValidationResult = [\r\n PartialOptions, // validated\r\n Record // foreign\r\n];\r\n\r\ntype OptionsTemplateTypeMap = {\r\n __TPL_boolean_TYPE__: boolean;\r\n __TPL_number_TYPE__: number;\r\n __TPL_string_TYPE__: string;\r\n __TPL_array_TYPE__: Array | ReadonlyArray;\r\n __TPL_function_TYPE__: OptionsFunctionType;\r\n __TPL_null_TYPE__: null;\r\n __TPL_object_TYPE__: OptionsObjectType;\r\n};\r\n\r\ntype OptionsTemplateValueNonEnum =\r\n | OptionsTemplateType\r\n | [OptionsTemplateType, ...Array];\r\n\r\ntype ExtractPropsKey = {\r\n [P in keyof T]: TProps extends T[P] ? P : never;\r\n}[keyof T];\r\n\r\ntype OptionsTemplateTypesDictionary = {\r\n readonly boolean: OptionsTemplateType;\r\n readonly number: OptionsTemplateType;\r\n readonly string: OptionsTemplateType;\r\n readonly array: OptionsTemplateType>;\r\n readonly object: OptionsTemplateType;\r\n readonly function: OptionsTemplateType;\r\n readonly null: OptionsTemplateType;\r\n};\r\n\r\n/**\r\n * A prefix and suffix tuple which serves as recognition pattern for template types.\r\n */\r\nconst templateTypePrefixSuffix: readonly [string, string] = ['__TPL_', '_TYPE__'];\r\n\r\n/**\r\n * A object which serves as a mapping for \"normal\" types and template types.\r\n * Key = normal type string\r\n * value = template type string\r\n */\r\nconst optionsTemplateTypes: OptionsTemplateTypesDictionary = [\r\n 'boolean',\r\n 'number',\r\n 'string',\r\n 'array',\r\n 'object',\r\n 'function',\r\n 'null',\r\n].reduce((result, item) => {\r\n result[item] = templateTypePrefixSuffix[0] + item + templateTypePrefixSuffix[1];\r\n return result;\r\n}, {} as OptionsTemplateTypesDictionary);\r\n\r\n/**\r\n * Validates the given options object according to the given template object and returns a object which looks like:\r\n * {\r\n * foreign : a object which consists of properties which aren't defined inside the template. (foreign properties)\r\n * validated : a object which consists only of valid properties. (property name is inside the template and value has a correct type)\r\n * }\r\n * @param template The template according to which the options object shall be validated.\r\n * @param options The options object which shall be validated.\r\n * @param optionsDiff When provided the returned validated object will only have properties which are different to this objects properties.\r\n * Example (assume all properties are valid to the template):\r\n * Options object : { a: 'a', b: 'b', c: 'c' }\r\n * optionsDiff object : { a: 'a', b: 'b', c: undefined }\r\n * Returned validated object : { c: 'c' }\r\n * Because the value of the properties a and b didn't change, they aren't included in the returned object.\r\n * Without the optionsDiff object the returned validated object would be: { a: 'a', b: 'b', c: 'c' }\r\n * @param doWriteErrors True if errors shall be logged into the console, false otherwise.\r\n * @param propPath The propertyPath which lead to this object. (used for error logging)\r\n */\r\nconst validateRecursive = (\r\n template: OptionsTemplate,\r\n options: PartialOptions,\r\n doWriteErrors?: boolean,\r\n propPath?: string\r\n): OptionsValidationResult => {\r\n const validatedOptions: PartialOptions = {};\r\n const optionsCopy: PartialOptions = { ...options };\r\n const props = keys(template).filter((prop) => hasOwnProperty(options, prop));\r\n\r\n each(props, (prop: Extract) => {\r\n const optionsValue: any = options[prop];\r\n const templateValue: PlainObject | string | OptionsTemplateTypes | Array =\r\n template[prop];\r\n const templateIsComplex = isPlainObject(templateValue);\r\n const propPrefix = propPath ? `${propPath}.` : '';\r\n\r\n // if the template has a object as value, it means that the options are complex (verschachtelt)\r\n if (templateIsComplex && isPlainObject(optionsValue)) {\r\n const [validated, foreign] = validateRecursive(\r\n templateValue as T,\r\n optionsValue,\r\n doWriteErrors,\r\n propPrefix + prop\r\n );\r\n validatedOptions[prop] = validated as any;\r\n optionsCopy[prop] = foreign as any;\r\n\r\n each([optionsCopy, validatedOptions], (value) => {\r\n if (isEmptyObject(value[prop])) {\r\n delete value[prop];\r\n }\r\n });\r\n } else if (!templateIsComplex) {\r\n let isValid = false;\r\n const errorEnumStrings: Array = [];\r\n const errorPossibleTypes: Array = [];\r\n const optionsValueType = type(optionsValue);\r\n const templateValueArr: Array = !isArray(templateValue)\r\n ? [templateValue as string | OptionsTemplateTypes]\r\n : (templateValue as Array);\r\n\r\n each(templateValueArr, (currTemplateType) => {\r\n // if currType value isn't inside possibleTemplateTypes we assume its a enum string value\r\n let typeString: string | undefined;\r\n each(optionsTemplateTypes, (value: string, key: string) => {\r\n if (value === currTemplateType) {\r\n typeString = key;\r\n }\r\n });\r\n const isEnumString = isUndefined(typeString);\r\n if (isEnumString && isString(optionsValue)) {\r\n // split it into a array which contains all possible values for example: [\"yes\", \"no\", \"maybe\"]\r\n const enumStringSplit = currTemplateType.split(' ');\r\n isValid = !!enumStringSplit.find((possibility) => possibility === optionsValue);\r\n\r\n // build error message\r\n push(errorEnumStrings, enumStringSplit);\r\n } else {\r\n isValid = optionsTemplateTypes[optionsValueType] === currTemplateType;\r\n }\r\n\r\n // build error message\r\n push(errorPossibleTypes, isEnumString ? optionsTemplateTypes.string : typeString!);\r\n\r\n // continue if invalid, break if valid\r\n return !isValid;\r\n });\r\n\r\n if (isValid) {\r\n validatedOptions[prop] = optionsValue;\r\n } else if (doWriteErrors) {\r\n console.warn(\r\n `${\r\n `The option \"${propPrefix}${prop}\" wasn't set, because it doesn't accept the type [ ${optionsValueType.toUpperCase()} ] with the value of \"${optionsValue}\".\\r\\n` +\r\n `Accepted types are: [ ${errorPossibleTypes.join(', ').toUpperCase()} ].\\r\\n`\r\n }${\r\n errorEnumStrings.length > 0\r\n ? `\\r\\nValid strings are: [ ${errorEnumStrings.join(', ')} ].`\r\n : ''\r\n }`\r\n );\r\n }\r\n\r\n delete optionsCopy[prop];\r\n }\r\n });\r\n\r\n return [validatedOptions, optionsCopy]; // optionsCopy equals now to foreign options\r\n};\r\n\r\n/**\r\n * Validates the given options object according to the given template object and returns a tuple which looks like:\r\n * [\r\n * validated : a object which consists only of valid properties. (property name is inside the template and value has a correct type)\r\n * foreign : a object which consists of properties which aren't defined inside the template. (foreign properties)\r\n * ]\r\n * @param template The template according to which the options object shall be validated.\r\n * @param options The options object which shall be validated.\r\n * @param doWriteErrors True if errors shall be logged into the console, false otherwise.\r\n */\r\nconst validateOptions = (\r\n template: OptionsTemplate,\r\n options: PartialOptions,\r\n doWriteErrors?: boolean\r\n): OptionsValidationResult => validateRecursive(template, options, doWriteErrors);\r\n\r\nexport { validateOptions, optionsTemplateTypes };\r\n","import { OSPlugin } from 'plugins';\r\nimport {\r\n OSOptions,\r\n ResizeBehavior,\r\n OverflowBehavior,\r\n VisibilityBehavior,\r\n AutoHideBehavior,\r\n} from 'options';\r\nimport {\r\n validateOptions,\r\n OptionsTemplate,\r\n OptionsTemplateValue,\r\n optionsTemplateTypes as oTypes,\r\n} from 'plugins/optionsValidation/validation';\r\nimport { PartialOptions } from 'typings';\r\n\r\nconst numberAllowedValues: OptionsTemplateValue = oTypes.number;\r\nconst booleanAllowedValues: OptionsTemplateValue = oTypes.boolean;\r\nconst arrayNullValues: OptionsTemplateValue | null> = [oTypes.array, oTypes.null];\r\nconst stringArrayNullAllowedValues: OptionsTemplateValue | null> = [\r\n oTypes.string,\r\n oTypes.array,\r\n oTypes.null,\r\n];\r\nconst resizeAllowedValues: OptionsTemplateValue = 'none both horizontal vertical';\r\nconst overflowAllowedValues: OptionsTemplateValue =\r\n 'hidden scroll visible visible-hidden';\r\nconst scrollbarsVisibilityAllowedValues: OptionsTemplateValue =\r\n 'visible hidden auto';\r\nconst scrollbarsAutoHideAllowedValues: OptionsTemplateValue =\r\n 'never scroll leavemove';\r\n\r\nconst optionsTemplate: OptionsTemplate = {\r\n resize: resizeAllowedValues, // none || both || horizontal || vertical || n || b ||\r\n paddingAbsolute: booleanAllowedValues, // true || false\r\n updating: {\r\n elementEvents: arrayNullValues, // array of tuples || null\r\n attributes: arrayNullValues,\r\n debounce: [oTypes.number, oTypes.array, oTypes.null], // number || number array || null\r\n },\r\n overflow: {\r\n x: overflowAllowedValues, // visible-hidden || visible-scroll || hidden || scrol\r\n y: overflowAllowedValues, // visible-hidden || visible-scroll || hidden || scrol\r\n },\r\n scrollbars: {\r\n visibility: scrollbarsVisibilityAllowedValues, // visible || hidden || auto || v ||\r\n autoHide: scrollbarsAutoHideAllowedValues, // never || scroll || leave || move ||\r\n autoHideDelay: numberAllowedValues, // number\r\n dragScroll: booleanAllowedValues, // true || false\r\n clickScroll: booleanAllowedValues, // true || false\r\n touch: booleanAllowedValues, // true || false\r\n },\r\n textarea: {\r\n dynWidth: booleanAllowedValues, // true || false\r\n dynHeight: booleanAllowedValues, // true || false\r\n inheritedAttrs: stringArrayNullAllowedValues, // string || array || nul\r\n },\r\n nativeScrollbarsOverlaid: {\r\n show: booleanAllowedValues, // true || false\r\n initialize: booleanAllowedValues, // true || false\r\n },\r\n callbacks: {\r\n onUpdated: [oTypes.function, oTypes.null],\r\n },\r\n};\r\n\r\nexport type OptionsValidationPluginInstance = {\r\n _: (options: PartialOptions, doWriteErrors?: boolean) => PartialOptions;\r\n};\r\n\r\nexport const optionsValidationPluginName = '__osOptionsValidationPlugin';\r\n\r\nexport const optionsValidationPlugin: OSPlugin = [\r\n optionsValidationPluginName,\r\n {\r\n _: (options: PartialOptions, doWriteErrors?: boolean) => {\r\n const [validated, foreign] = validateOptions(optionsTemplate, options, doWriteErrors);\r\n return { ...foreign, ...validated };\r\n },\r\n },\r\n];\r\n","import { OverlayScrollbars } from 'overlayscrollbars';\r\n\r\nconst targets: Set = new Set();\r\nconst targetInstanceMap: WeakMap = new WeakMap();\r\n\r\n/**\r\n * Adds the given OverlayScrollbars instance to the given element.\r\n * @param target The element which is the target of the OverlayScrollbars instance.\r\n * @param osInstance The OverlayScrollbars instance.\r\n */\r\nexport const addInstance = (target: Element, osInstance: OverlayScrollbars): void => {\r\n targetInstanceMap.set(target, osInstance);\r\n targets.add(target);\r\n};\r\n\r\n/**\r\n * Removes a OverlayScrollbars instance from the given element.\r\n * @param target The element from which its OverlayScrollbars instance shall be removed.\r\n */\r\nexport const removeInstance = (target: Element): void => {\r\n targetInstanceMap.delete(target);\r\n targets.delete(target);\r\n};\r\n\r\n/**\r\n * Gets the OverlayScrollbars from the given element or undefined if it doesn't have one.\r\n * @param target The element of which its OverlayScrollbars instance shall be get.\r\n */\r\nexport const getInstance = (target: Element): OverlayScrollbars | undefined =>\r\n targetInstanceMap.get(target);\r\n\r\n/**\r\n * Gets a Map which represents all active OverayScrollbars instances.\r\n * The Key is the element and the value is the instance.\r\n */\r\nexport const allInstances = (): ReadonlyMap => {\r\n const validTargetInstanceMap: Map = new Map();\r\n\r\n targets.forEach((target: Element) => {\r\n /* istanbul ignore else */\r\n if (targetInstanceMap.has(target)) {\r\n validTargetInstanceMap.set(target, targetInstanceMap.get(target)!);\r\n }\r\n });\r\n\r\n targets.clear();\r\n\r\n validTargetInstanceMap.forEach((instance: OverlayScrollbars, validTarget: Element) => {\r\n targets.add(validTarget);\r\n });\r\n\r\n return validTargetInstanceMap;\r\n};\r\n","import { OSOptions } from 'options';\r\nimport { each, from, isArray } from 'support';\r\nimport { PartialOptions } from 'typings';\r\n\r\nexport interface onUpdatedEventArgs {\r\n updateHints: {\r\n sizeChanged: boolean;\r\n hostMutation: boolean;\r\n contentMutation: boolean;\r\n directionChanged: boolean;\r\n heightIntrinsicChanged: boolean;\r\n };\r\n changedOptions: PartialOptions;\r\n force: boolean;\r\n}\r\n\r\nexport interface EventArgsMap {\r\n updated: onUpdatedEventArgs;\r\n}\r\n\r\nexport type OSEventListener = (args: EventArgsMap[N]) => void;\r\n\r\nexport type AddEvent = (\r\n name: N,\r\n listener: OSEventListener | OSEventListener[]\r\n) => () => void;\r\n\r\nexport type RemoveEvent = (\r\n name?: N,\r\n listener?: OSEventListener | OSEventListener[]\r\n) => void;\r\n\r\nexport type TriggerEvent = (name: N, args: EventArgsMap[N]) => void;\r\n\r\nexport type EventHub = [AddEvent, RemoveEvent, TriggerEvent];\r\n\r\nconst manageListener = (\r\n callback: (listener?: OSEventListener) => void,\r\n listener?: OSEventListener | OSEventListener[]\r\n) => {\r\n each(isArray(listener) ? listener : [listener], callback);\r\n};\r\n\r\nexport const createEventHub = (): EventHub => {\r\n const events = new Map>>();\r\n const removeEvent: RemoveEvent = (name?, listener?) => {\r\n if (name) {\r\n const eventSet = events.get(name);\r\n\r\n manageListener((currListener) => {\r\n if (eventSet) {\r\n eventSet[currListener ? 'delete' : 'clear'](currListener!);\r\n }\r\n }, listener);\r\n } else {\r\n events.forEach((eventSet) => {\r\n eventSet.clear();\r\n });\r\n events.clear();\r\n }\r\n };\r\n const addEvent: AddEvent = (name, listener) => {\r\n const eventSet = events.get(name) || new Set();\r\n events.set(name, eventSet);\r\n\r\n manageListener((currListener) => {\r\n eventSet.add(currListener!);\r\n }, listener);\r\n\r\n return removeEvent.bind(0, name, listener as any);\r\n };\r\n const triggerEvent: TriggerEvent = (name, args) => {\r\n const eventSet = events.get(name);\r\n\r\n each(from(eventSet), (event) => {\r\n event(args);\r\n });\r\n };\r\n\r\n return [addEvent, removeEvent, triggerEvent];\r\n};\r\n","import { OSTarget, OSInitializationObject, PartialOptions } from 'typings';\r\nimport { assignDeep, isEmptyObject, each, isFunction, keys, isHTMLElement } from 'support';\r\nimport { createStructureSetup, StructureSetup } from 'setups/structureSetup';\r\nimport { createScrollbarsSetup, ScrollbarsSetup } from 'setups/scrollbarsSetup';\r\nimport { createLifecycleHub } from 'lifecycles/lifecycleHub';\r\nimport { getOptionsDiff, OSOptions } from 'options';\r\nimport { getEnvironment } from 'environment';\r\nimport {\r\n getPlugins,\r\n addPlugin,\r\n optionsValidationPluginName,\r\n OSPlugin,\r\n OptionsValidationPluginInstance,\r\n} from 'plugins';\r\nimport { addInstance, getInstance, removeInstance } from 'instances';\r\nimport { createEventHub, AddEvent, RemoveEvent } from './events';\r\n\r\nexport interface OverlayScrollbarsStatic {\r\n (\r\n target: OSTarget | OSInitializationObject,\r\n options?: PartialOptions,\r\n extensions?: any\r\n ): OverlayScrollbars;\r\n\r\n extend(osPlugin: OSPlugin | OSPlugin[]): void;\r\n}\r\n\r\nexport interface OverlayScrollbars {\r\n options(): OSOptions;\r\n options(newOptions?: PartialOptions): OSOptions;\r\n\r\n update(force?: boolean): void;\r\n destroy(): void;\r\n\r\n state(): any;\r\n\r\n on: AddEvent;\r\n off: RemoveEvent;\r\n}\r\n\r\nexport const OverlayScrollbars: OverlayScrollbarsStatic = (\r\n target: OSTarget | OSInitializationObject,\r\n options?: PartialOptions\r\n): OverlayScrollbars => {\r\n const instanceTarget = isHTMLElement(target) ? target : target.target;\r\n const potentialInstance = getInstance(instanceTarget);\r\n if (potentialInstance) {\r\n return potentialInstance;\r\n }\r\n\r\n const { _getDefaultOptions } = getEnvironment();\r\n const plugins = getPlugins();\r\n const optionsValidationPlugin = plugins[\r\n optionsValidationPluginName\r\n ] as OptionsValidationPluginInstance;\r\n const validateOptions = (newOptions?: PartialOptions) => {\r\n const opts = newOptions || {};\r\n const validate = optionsValidationPlugin && optionsValidationPlugin._;\r\n return validate ? validate(opts, true) : opts;\r\n };\r\n const [addEvent, removeEvent, triggerEvent] = createEventHub();\r\n const currentOptions: OSOptions = assignDeep({}, _getDefaultOptions(), validateOptions(options));\r\n const structureSetup: StructureSetup = createStructureSetup(target);\r\n const scrollbarsSetup: ScrollbarsSetup = createScrollbarsSetup(target, structureSetup);\r\n const lifecycleHub = createLifecycleHub(\r\n currentOptions,\r\n triggerEvent,\r\n structureSetup,\r\n scrollbarsSetup\r\n );\r\n\r\n const instance: OverlayScrollbars = {\r\n options(newOptions?: PartialOptions) {\r\n if (newOptions) {\r\n const changedOptions = getOptionsDiff(currentOptions, validateOptions(newOptions));\r\n\r\n if (!isEmptyObject(changedOptions)) {\r\n assignDeep(currentOptions, changedOptions);\r\n lifecycleHub._update(changedOptions);\r\n }\r\n }\r\n return currentOptions;\r\n },\r\n on: addEvent,\r\n off: removeEvent,\r\n state: () => lifecycleHub._state(),\r\n update(force?: boolean) {\r\n lifecycleHub._update({}, force);\r\n },\r\n destroy: () => {\r\n lifecycleHub._destroy();\r\n removeInstance(instanceTarget);\r\n removeEvent();\r\n },\r\n };\r\n\r\n each(keys(plugins), (pluginName) => {\r\n const pluginInstance = plugins[pluginName];\r\n if (isFunction(pluginInstance)) {\r\n pluginInstance(OverlayScrollbars, instance);\r\n }\r\n });\r\n\r\n instance.update(true);\r\n\r\n addInstance(instanceTarget, instance);\r\n\r\n return instance;\r\n};\r\n\r\nOverlayScrollbars.extend = addPlugin;\r\n"],"names":["createCache","options","update","_initialValue","_equal","_alwaysUpdateValues","_value","_previous","cacheUpdateContextual","newValue","force","curr","newVal","changed","cacheUpdateIsolated","getCurrentCache","ElementNodeType","Node","ELEMENT_NODE","toString","hasOwnProperty","Object","prototype","isUndefined","obj","undefined","isNull","type","call","replace","toLowerCase","isNumber","isString","isBoolean","isFunction","isArray","Array","isObject","isArrayLike","length","lengthCorrectFormat","isPlainObject","key","cstr","ctor","ctorProto","hasOwnConstructor","hasIsPrototypeOf","isHTMLElement","instanceofObj","window","HTMLElement","nodeType","isElement","Element","each","source","callback","i","keys","indexOf","arr","item","fromIndex","push","array","items","arrayIsSingleItem","apply","from","result","Set","forEach","value","elm","isEmptyArray","runEach","p1","runFn","fn","prop","assignDeep","target","object1","object2","object3","object4","object5","object6","sources","copy","copyIsArray","src","clone","isEmptyObject","name","getSetProp","topLeft","fallback","attr","attrName","getAttribute","setAttribute","removeAttr","removeAttribute","scrollLeft","scrollTop","elmPrototype","find","selector","rootElm","document","querySelectorAll","is","matches","msMatchesSelector","contents","childNodes","parent","parentElement","before","parentElm","preferredAnchor","insertedElms","anchor","fragment","createDocumentFragment","insertedElm","previousSibling","appendChild","firstChild","nextSibling","insertBefore","appendChildren","node","children","prependChildren","insertedNodes","insertAfter","removeElements","nodes","e","removeChild","createDiv","classNames","div","createElement","createDOM","html","createdDiv","innerHTML","trim","firstLetterToUpper","str","charAt","toUpperCase","slice","getDummyStyle","style","cssPrefixes","jsPrefixes","jsCache","cssCache","cssProperty","uppercasedName","elmStyle","prefix","prefixWithoutDashes","resultPossibilities","resultPossibility","jsAPI","MutationObserverConstructor","IntersectionObserverConstructor","ResizeObserverConstructor","cAF","rAF","rnothtmlwhite","classListAction","className","action","clazz","classes","match","classList","addClass","add","removeClass","remove","diffClass","classNameA","classNameB","classNameASplit","split","classNameBSplit","tempObj","zeroObj","w","h","windowSize","innerWidth","innerHeight","offsetSize","offsetWidth","offsetHeight","clientSize","clientWidth","clientHeight","scrollSize","scrollWidth","scrollHeight","getBoundingClientRect","passiveEventsSupport","supportPassiveEvents","addEventListener","defineProperty","get","splitEventNames","eventNames","off","listener","capture","eventName","removeEventListener","on","doSupportPassiveEvents","passive","_passive","_capture","once","_once","offListeners","nativeOptions","finalListener","evt","bind","stopPropagation","preventDefault","stopAndPrevent","equal","a","b","props","propMutation","compareA","compareB","equalWH","equalTRBL","equalBCRWH","round","Math","clearTimeouts","id","clearTimeout","noop","debounce","functionToDebounce","timeoutId","maxTimeoutId","prevArguments","latestArguments","_timeout","_maxDelay","_mergeParams","setT","setTimeout","invokeFunctionToDebounce","args","mergeParms","flush","debouncedFn","arguments","finalTimeout","hasTimeout","finalMaxWait","hasMaxWait","setTimeoutFn","mergeParamsResult","invokedArgs","boundInvoke","_flush","cssNumber","opacity","zindex","parseToZeroOrNumber","toFloat","num","parseFloat","parseInt","Number","isNaN","adaptCSSVal","val","getCSSVal","computedStyle","getPropertyValue","setCSSVal","setProperty","styles","getSingleStyle","getStyles","getStylesResult","getComputedStyle","reduce","topRightBottomLeft","propertyPrefix","propertySuffix","finalPrefix","finalSuffix","top","right","bottom","left","t","r","l","x","y","absoluteCoordinates","rect","pageYOffset","pageXOffset","classNameEnvironment","classNameEnvironmentFlexboxGlue","classNameEnvironmentFlexboxGlueMax","classNameHost","classNamePadding","classNameViewport","classNameViewportArrange","classNameContent","classNameViewportScrollbarStyling","classNameSizeObserver","classNameSizeObserverAppear","classNameSizeObserverListener","classNameSizeObserverListenerScroll","classNameSizeObserverListenerItem","classNameSizeObserverListenerItemFinal","classNameTrinsicObserver","classNameScrollbar","classNameScrollbarHorizontal","classNameScrollbarVertical","classNameScrollbarTrack","classNameScrollbarHandle","_extends","module","assign","exports","__esModule","stringify","JSON","_","Error","defaultOptions","resize","paddingAbsolute","updating","elementEvents","attributes","overflow","scrollbars","visibility","autoHide","autoHideDelay","dragScroll","clickScroll","touch","textarea","dynWidth","dynHeight","inheritedAttrs","nativeScrollbarsOverlaid","show","initialize","callbacks","onUpdated","getOptionsDiff","currOptions","newOptions","diff","optionsKeys","concat","optionKey","currOptionValue","newOptionValue","isDiff","environmentInstance","abs","diffBiggerThanOne","valOne","valTwo","absValOne","absValTwo","getNativeScrollbarSize","body","measureElm","cSize","oSize","getNativeScrollbarStyling","testElm","ex","getRtlScrollBehavior","childElm","strHidden","overflowX","overflowY","direction","parentOffset","childOffset","childOffsetAfterScroll","n","getFlexboxGlue","minOffsetsizeParent","minOffsetsize","supportsMin","maxOffsetsizeParent","maxOffsetsize","supportsMax","getWindowDPR","dDPI","screen","deviceXDPI","sDPI","logicalXDPI","devicePixelRatio","getDefaultInitializationStrategy","nativeScrollbarStyling","_host","_viewport","_padding","_content","_scrollbarsSlot","createEnvironment","envDOM","envElm","envChildElm","onChangedListener","nativeScrollbarSize","nativeScrollbarIsOverlaid","defaultInitializationStrategy","initializationStrategy","defaultDefaultOptions","env","_nativeScrollbarSize","_nativeScrollbarIsOverlaid","_nativeScrollbarStyling","_cssCustomProperties","_rtlScrollBehavior","_flexboxGlue","_addListener","_removeListener","delete","_getInitializationStrategy","_setInitializationStrategy","newInitializationStrategy","_getDefaultOptions","_setDefaultOptions","newDefaultOptions","_defaultInitializationStrategy","_defaultDefaultOptions","size","dpr","scrollbarSize","sizeNew","deltaSize","deltaAbsSize","deltaAbsRatio","dprNew","deltaIsBigger","difference","dprChanged","isZoom","newScrollbarSize","getEnvironment","contentArrangeCounter","unwrap","createUniqueViewportArrangeElement","create","staticCreationFromStrategy","initializationValue","strategy","elementClass","dynamicCreationFromStrategy","defaultValue","takeInitializationValue","createStructureSetup","hostInitializationStrategy","viewportInitializationStrategy","paddingInitializationStrategy","contentInitializationStrategy","targetIsElm","targetStructureInitialization","targetElement","isTextarea","isBody","ownerDocument","bodyElm","wnd","defaultView","evaluatedTargetObj","_target","host","viewport","padding","content","_viewportArrange","ctx","_windowElm","_documentElm","_htmlElm","_bodyElm","_isTextarea","_isBody","_targetIsElm","generatedElements","elementIsGenerated","destroyFns","isTextareaHostGenerated","targetContents","contentSlot","_targetObj","_targetCtx","_destroy","generateScrollbarDOM","scrollbarClassName","scrollbar","track","handle","_scrollbar","_track","_handle","createScrollbarsSetup","structureSetup","environmentScrollbarSlot","initializationScrollbarSlot","scrollbarsSlot","initializationScrollbarSlotResult","evaluatedScrollbarSlot","horizontalScrollbarStructure","verticalScrollbarStructure","horizontalScrollbar","verticalScrollbar","_horizontalScrollbarStructure","_verticalScrollbarStructure","animationStartEventName","scrollEventName","scrollAmount","getElmDirectionIsRTL","domRectHasDimensions","height","width","createSizeObserver","onSizeChangedCallback","_direction","observeDirectionChange","_appear","observeAppearChange","rtlScrollBehavior","baseElements","sizeObserver","listenerElement","getIsDirectionRTL","updateResizeObserverContentRectCache","currVal","onSizeChangedCallbackProxy","sizeChangedContext","isResizeObserverCall","hasDirectionCache","skip","appear","doDirectionScroll","currRContentRect","prevContentRect","pop","contentRect","hasDimensions","hadDimensions","rtl","_sizeChanged","_directionIsRTLCache","appearCallback","directionIsRTLCache","resizeObserverInstance","observe","disconnect","observerElementChildren","observerElementChildrenRoot","shrinkElement","lastChild","expandElement","expandElementChild","cacheSize","currSize","isDirty","rAFId","reset","onResized","onScroll","scrollEvent","updateDirectionIsRTLCache","event","directionIsRTLCacheValues","directionIsRTL","directionIsRTLChanged","_getCurrentCacheValues","_directionIsRTL","isHeightIntrinsic","ioEntryOrSize","isIntersecting","intersectionRatio","createTrinsicObserver","onTrinsicChangedCallback","trinsicObserver","updateHeightIntrinsicCache","getCurrentHeightIntrinsicCache","triggerOnTrinsicChangedCallback","updateValue","heightIntrinsic","heightIntrinsicChanged","intersectionObserverInstance","entries","root","onSizeChanged","newSize","_heightIntrinsic","createEventContentChange","eventContentChange","map","destroyed","_updateElements","getElements","eventElmList","elements","entry","entryEventNames","entryOff","set","WeakMap","createDOMObserver","isContentObserver","isConnected","_attributes","_styleChangingAttributes","_eventContentChange","_nestedTargetSelector","_ignoreTargetChange","_ignoreNestedTargetChange","_ignoreContentChange","destroyEventContentChange","updateEventContentChangeElements","finalAttributes","finalStyleChangingAttributes","observedAttributes","observerCallback","mutations","ignoreTargetChange","ignoreContentChange","targetChangedAttrs","totalAddedNodes","targetStyleChanged","contentChanged","childListChanged","mutation","attributeName","mutationTarget","oldValue","addedNodes","isAttributesType","isChildListType","targetIsMutationTarget","attributeValue","attributeChanged","styleChangingAttrChanged","notOnlyAttrChanged","contentAttrChanged","isNestedTarget","baseAssertion","contentFinalChanged","mutationObserver","attributeOldValue","attributeFilter","subtree","childList","characterData","_update","takeRecords","ignorePrefix","viewportAttrsFromTarget","baseStyleChangingAttrsTextarea","baseStyleChangingAttrs","addedOrRemovedClass","lifecycleHubOservers","instance","updateLifecycles","debounceTimeout","debounceMaxDelay","contentMutationObserver","_structureSetup","contentMutationObserverAttr","updateLifecyclesWithDebouncedAdaptiveUpdateHints","prev","prevSizeChanged","_hostMutation","prevHostMutation","_contentMutation","prevContentMutation","currSizeChanged","currvHostMutation","currContentMutation","merged","updateViewportAttrsFromHost","attribute","hostAttr","onTrinsicChanged","updateFn","onContentMutation","contentChangedTroughEvent","onHostMutation","hostMutationObserver","updateOptions","checkOption","elementEventsChanged","attributesChanged","debounceValue","debounceChanged","updateContentMutationObserver","timeout","maxWait","_trinsicObserver","_sizeObserver","_updateObserverOptions","createTrinsicLifecycle","lifecycleHub","updateHints","display","createPaddingLifecycle","_setLifecycleCommunication","updatePaddingCache","currentPaddingCache","paddingChanged","directionChanged","paddingAbsoluteChanged","contentMutation","paddingStyleChanged","paddingRelative","paddingHorizontal","paddingVertical","paddingStyle","marginRight","marginBottom","marginLeft","viewportStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","_paddingInfo","_absolute","_viewportPaddingStyle","_paddingStyleChanged","max","overlaidScrollbarsHideOffset","whCacheOptions","sizeFraction","viewportOffsetSize","viewportRect","fractionalPixelRatioTollerance","setAxisOverflowStyle","horizontal","overflowAmount","behavior","styleObj","overflowKey","behaviorIsVisible","behaviorIsVisibleHidden","behaviorIsScroll","hasOverflow","_visible","_behavior","getOverflowAmount","viewportScrollSize","viewportClientSize","viewportSizeFraction","createOverflowLifecycle","_doViewportArrange","_getLifecycleCommunication","updateViewportSizeFraction","getCurrentViewportSizeFraction","updateViewportScrollSizeCache","getCurrentViewportScrollSizeCache","updateOverflowAmountCache","getCurrentOverflowAmountCache","fixFlexboxGlue","viewportOverflowState","_overflowScroll","_scrollbarsHideOffset","hostSizeFraction","hostClientSize","isContentBox","fractionalClientHeight","subtractXScrollbar","getViewportOverflowState","showNativeOverlaidScrollbars","viewportStyleObj","overlaidX","overlaidY","determineOverflow","arrangeHideOffset","scroll","nonScrollbarStylingHideOffset","scrollbarsHideOffset","_scrollbarsHideOffsetArrange","setViewportOverflowState","xVisible","xVisibleBehavior","yVisible","yVisibleBehavior","arrangeViewport","arrangeX","arrangeY","hideOffsetX","hideOffsetY","viewportPaddingStyle","viewportArrangeHorizontalPaddingKey","viewportArrangeHorizontalPaddingValue","viewportArrangeVerticalPaddingValue","fractionalContentWidth","fractionalContenHeight","arrangeSize","sheet","cssRules","insertRule","ruleStyle","hideNativeScrollbars","viewportArrange","horizontalMarginKey","viewportHorizontalPaddingKey","horizontalMarginValue","verticalMarginValue","horizontalPaddingValue","verticalPaddingValue","undoViewportArrange","finalViewportOverflowState","finalPaddingStyle","assignProps","prevStyle","showNativeOverlaidScrollbarsOption","showNativeOverlaidScrollbarsChanged","adjustFlexboxGlue","viewportSizeFractionCache","viewportScrollSizeCache","overflowAmuntCache","preMeasureViewportOverflowState","redoViewportArrange","undoViewportArrangeOverflowState","viewportSizeFractionCahnged","viewportScrollSizeChanged","viewportContentSize","arrangedViewportScrollSize","arrangedViewportClientSize","viewportSizeFractionChanged","overflowAmountChanged","overflowChanged","viewportArranged","_viewportOverflowScroll","_viewportOverflowAmount","getPropByPath","path","o","booleanCacheValuesFallback","lifecycleCommunicationFallback","createLifecycleHub","triggerEvent","scrollbarsSetup","lifecycleCommunication","addEnvironmentListener","removeEnvironmentListener","doViewportArrange","_options","newLifecycleCommunication","lifecycles","changedOptions","finalDirectionIsRTL","finalHeightIntrinsic","adjustScrollOffset","scrollOffsetX","scrollOffsetY","lifecycle","adaptiveSizeChanged","adaptiveHostMutation","adaptiveContentMutation","adaptivePaddingStyleChanged","sizeChanged","hostMutation","destroyObservers","envUpdateListener","console","log","_state","_overflowAmount","pluginRegistry","getPlugins","addPlugin","addedPlugin","plugin","templateTypePrefixSuffix","optionsTemplateTypes","numberAllowedValues","oTypes","number","booleanAllowedValues","boolean","arrayNullValues","null","stringArrayNullAllowedValues","string","resizeAllowedValues","overflowAllowedValues","scrollbarsVisibilityAllowedValues","scrollbarsAutoHideAllowedValues","function","optionsValidationPluginName","targets","targetInstanceMap","addInstance","osInstance","removeInstance","getInstance","manageListener","createEventHub","events","Map","removeEvent","eventSet","currListener","clear","addEvent","OverlayScrollbars","instanceTarget","potentialInstance","plugins","optionsValidationPlugin","validateOptions","opts","validate","currentOptions","state","destroy","pluginName","pluginInstance","extend"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"overlayscrollbars.esm.js","sources":["../src/support/cache/cache.ts","../src/support/utils/types.ts","../src/support/utils/array.ts","../src/support/utils/object.ts","../src/support/dom/attribute.ts","../src/support/dom/traversal.ts","../src/support/dom/manipulation.ts","../src/support/dom/create.ts","../src/support/compatibility/vendors.ts","../src/support/compatibility/apis.ts","../src/support/dom/class.ts","../src/support/dom/dimensions.ts","../src/support/dom/events.ts","../src/support/utils/equal.ts","../src/support/utils/function.ts","../src/support/dom/style.ts","../src/support/dom/offset.ts","../src/classnames.ts","../../../node_modules/@babel/runtime/helpers/extends.js","../src/options.ts","../src/environment.ts","../src/setups/structureSetup.ts","../src/setups/scrollbarsSetup.ts","../src/observers/sizeObserver.ts","../src/observers/trinsicObserver.ts","../src/observers/domObserver.ts","../src/lifecycles/lifecycleHubObservers.ts","../src/lifecycles/trinsicLifecycle.ts","../src/lifecycles/paddingLifecycle.ts","../src/lifecycles/overflowLifecycle.ts","../src/lifecycles/lifecycleHub.ts","../src/plugins/plugins.ts","../src/plugins/optionsValidation/validation.ts","../src/plugins/optionsValidation/optionsValidation.ts","../src/instances.ts","../src/eventListeners.ts","../src/overlayscrollbars.ts"],"sourcesContent":["export interface CacheOptions {\r\n // initial value of _value.\r\n _initialValue: Value;\r\n // Custom comparison function if shallow compare isn't enough. Returns true if nothing changed.\r\n _equal?: EqualCachePropFunction;\r\n // If true always updates _value and _previous, otherwise they update only when they changed.\r\n _alwaysUpdateValues?: boolean;\r\n}\r\n\r\nexport type CacheValues = [\r\n T, // value\r\n boolean, // changed\r\n T? // previous\r\n];\r\n\r\nexport type EqualCachePropFunction = (currentVal: Value, newVal: Value) => boolean;\r\n\r\nexport type CacheUpdater = (current: Value, previous?: Value) => Value;\r\n\r\nexport type UpdateCacheContextual = (newValue: Value, force?: boolean) => CacheValues;\r\n\r\nexport type UpdateCache = (force?: boolean) => CacheValues;\r\n\r\nexport type GetCurrentCache = (force?: boolean) => CacheValues;\r\n\r\nexport type Cache = [UpdateCache, GetCurrentCache];\r\n\r\nexport type CacheContextual = [UpdateCacheContextual, GetCurrentCache];\r\n\r\nexport function createCache(options: CacheOptions): CacheContextual;\r\nexport function createCache(\r\n options: CacheOptions,\r\n update: CacheUpdater\r\n): Cache;\r\nexport function createCache(\r\n options: CacheOptions,\r\n update?: CacheUpdater\r\n): CacheContextual | Cache {\r\n const { _initialValue, _equal, _alwaysUpdateValues } = options;\r\n let _value: Value = _initialValue;\r\n let _previous: Value | undefined;\r\n\r\n const cacheUpdateContextual: UpdateCacheContextual = (newValue, force?) => {\r\n const curr = _value;\r\n\r\n const newVal = newValue;\r\n const changed = force || (_equal ? !_equal(curr, newVal) : curr !== newVal);\r\n\r\n if (changed || _alwaysUpdateValues) {\r\n _value = newVal;\r\n _previous = curr;\r\n }\r\n\r\n return [_value, changed, _previous];\r\n };\r\n const cacheUpdateIsolated: UpdateCache = (force?) =>\r\n cacheUpdateContextual(update!(_value, _previous), force);\r\n\r\n const getCurrentCache: GetCurrentCache = (force?: boolean) => [\r\n _value,\r\n !!force, // changed\r\n _previous,\r\n ];\r\n\r\n return [update ? cacheUpdateIsolated : cacheUpdateContextual, getCurrentCache] as\r\n | CacheContextual\r\n | Cache;\r\n}\r\n","import { PlainObject } from 'typings';\r\n\r\nconst ElementNodeType = Node.ELEMENT_NODE;\r\nconst { toString, hasOwnProperty } = Object.prototype;\r\n\r\nexport function isUndefined(obj: any): obj is undefined {\r\n return obj === undefined;\r\n}\r\n\r\nexport function isNull(obj: any): obj is null {\r\n return obj === null;\r\n}\r\n\r\nexport const type: (obj: any) => string = (obj) =>\r\n isUndefined(obj) || isNull(obj)\r\n ? `${obj}`\r\n : toString\r\n .call(obj)\r\n .replace(/^\\[object (.+)\\]$/, '$1')\r\n .toLowerCase();\r\n\r\nexport function isNumber(obj: any): obj is number {\r\n return typeof obj === 'number';\r\n}\r\n\r\nexport function isString(obj: any): obj is string {\r\n return typeof obj === 'string';\r\n}\r\n\r\nexport function isBoolean(obj: any): obj is boolean {\r\n return typeof obj === 'boolean';\r\n}\r\n\r\nexport function isFunction(obj: any): obj is (...args: any[]) => any {\r\n return typeof obj === 'function';\r\n}\r\n\r\nexport function isArray(obj: any): obj is Array {\r\n return Array.isArray(obj);\r\n}\r\n\r\nexport function isObject(obj: any): boolean {\r\n return typeof obj === 'object' && !isArray(obj) && !isNull(obj);\r\n}\r\n\r\n/**\r\n * Returns true if the given object is array like, false otherwise.\r\n * @param obj The Object\r\n */\r\nexport function isArrayLike(obj: any): obj is ArrayLike {\r\n const length = !!obj && obj.length;\r\n const lengthCorrectFormat = isNumber(length) && length > -1 && length % 1 == 0; // eslint-disable-line eqeqeq\r\n\r\n return isArray(obj) || (!isFunction(obj) && lengthCorrectFormat)\r\n ? length > 0 && isObject(obj)\r\n ? length - 1 in obj\r\n : true\r\n : false;\r\n}\r\n\r\n/**\r\n * Returns true if the given object is a \"plain\" (e.g. { key: value }) object, false otherwise.\r\n * @param obj The Object.\r\n */\r\nexport function isPlainObject(obj: any): obj is PlainObject {\r\n if (!obj || !isObject(obj) || type(obj) !== 'object') return false;\r\n\r\n let key;\r\n const cstr = 'constructor';\r\n const ctor = obj[cstr];\r\n const ctorProto = ctor && ctor.prototype;\r\n const hasOwnConstructor = hasOwnProperty.call(obj, cstr);\r\n const hasIsPrototypeOf = ctorProto && hasOwnProperty.call(ctorProto, 'isPrototypeOf');\r\n\r\n if (ctor && !hasOwnConstructor && !hasIsPrototypeOf) {\r\n return false;\r\n }\r\n\r\n /* eslint-disable no-restricted-syntax */\r\n for (key in obj) {\r\n /**/\r\n }\r\n /* eslint-enable */\r\n\r\n return isUndefined(key) || hasOwnProperty.call(obj, key);\r\n}\r\n\r\n/**\r\n * Checks whether the given object is a HTMLElement.\r\n * @param obj The object which shall be checked.\r\n */\r\nexport function isHTMLElement(obj: any): obj is HTMLElement {\r\n const instanceofObj = window.HTMLElement;\r\n return obj\r\n ? instanceofObj\r\n ? obj instanceof instanceofObj\r\n : obj.nodeType === ElementNodeType\r\n : false;\r\n}\r\n\r\n/**\r\n * Checks whether the given object is a Element.\r\n * @param obj The object which shall be checked.\r\n */\r\nexport function isElement(obj: any): obj is Element {\r\n const instanceofObj = window.Element;\r\n return obj\r\n ? instanceofObj\r\n ? obj instanceof instanceofObj\r\n : obj.nodeType === ElementNodeType\r\n : false;\r\n}\r\n","import { isArrayLike, isString } from 'support/utils/types';\r\nimport { PlainObject } from 'typings';\r\n\r\ntype RunEachItem = ((...args: any) => any | any[]) | null | undefined;\r\n\r\n/**\r\n * Iterates through a array or object\r\n * @param arrayLikeOrObject The array or object through which shall be iterated.\r\n * @param callback The function which is responsible for the iteration.\r\n * If the function returns true its treated like a \"continue\" statement.\r\n * If the function returns false its treated like a \"break\" statement.\r\n */\r\nexport function each(\r\n array: Array | ReadonlyArray,\r\n callback: (value: T, indexOrKey: number, source: Array) => boolean | unknown\r\n): Array | ReadonlyArray;\r\nexport function each(\r\n array: Array | ReadonlyArray | null | undefined,\r\n callback: (value: T, indexOrKey: number, source: Array) => boolean | unknown\r\n): Array | ReadonlyArray | null | undefined;\r\nexport function each(\r\n arrayLikeObject: ArrayLike,\r\n callback: (value: T, indexOrKey: number, source: ArrayLike) => boolean | unknown\r\n): ArrayLike;\r\nexport function each(\r\n arrayLikeObject: ArrayLike | null | undefined,\r\n callback: (value: T, indexOrKey: number, source: ArrayLike) => boolean | unknown\r\n): ArrayLike | null | undefined;\r\nexport function each(\r\n obj: PlainObject,\r\n callback: (value: any, indexOrKey: string, source: PlainObject) => boolean | unknown\r\n): PlainObject;\r\nexport function each(\r\n obj: PlainObject | null | undefined,\r\n callback: (value: any, indexOrKey: string, source: PlainObject) => boolean | unknown\r\n): PlainObject | null | undefined;\r\nexport function each(\r\n source: ArrayLike | PlainObject | null | undefined,\r\n callback: (value: T, indexOrKey: any, source: any) => boolean | unknown\r\n): Array | ReadonlyArray | ArrayLike | PlainObject | null | undefined {\r\n if (isArrayLike(source)) {\r\n for (let i = 0; i < source.length; i++) {\r\n if (callback(source[i], i, source) === false) {\r\n break;\r\n }\r\n }\r\n } else if (source) {\r\n each(Object.keys(source), (key) => callback(source[key], key, source));\r\n }\r\n return source;\r\n}\r\n\r\n/**\r\n * Returns the index of the given inside the given array or -1 if the given item isn't part of the given array.\r\n * @param arr The array.\r\n * @param item The item.\r\n * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.\r\n */\r\nexport const indexOf = (arr: T[], item: T, fromIndex?: number): number =>\r\n arr.indexOf(item, fromIndex);\r\n\r\n/**\r\n * Pushesh all given items into the given array and returns it.\r\n * @param array The array the items shall be pushed into.\r\n * @param items The items which shall be pushed into the array.\r\n */\r\nexport const push = (array: T[], items: T | ArrayLike, arrayIsSingleItem?: boolean): T[] => {\r\n !arrayIsSingleItem && !isString(items) && isArrayLike(items)\r\n ? Array.prototype.push.apply(array, items as T[])\r\n : array.push(items as T);\r\n return array;\r\n};\r\n\r\n/**\r\n * Creates a shallow-copied Array instance from an array-like or iterable object.\r\n * @param arr The object from which the array instance shall be created.\r\n */\r\nexport const from = (arr?: ArrayLike | Set) => {\r\n if (Array.from && arr) {\r\n return Array.from(arr);\r\n }\r\n const result: T[] = [];\r\n\r\n if (arr instanceof Set) {\r\n arr.forEach((value) => {\r\n push(result, value);\r\n });\r\n } else {\r\n each(arr, (elm) => {\r\n push(result, elm);\r\n });\r\n }\r\n\r\n return result;\r\n};\r\n\r\n/**\r\n * Check whether the passed array is empty.\r\n * @param array The array which shall be checked.\r\n */\r\nexport const isEmptyArray = (array: any[] | null | undefined): boolean =>\r\n !!array && array.length === 0;\r\n\r\n/**\r\n * Calls all functions in the passed array/set of functions.\r\n * @param arr The array filled with function which shall be called.\r\n * @param p1 The first param.\r\n */\r\nexport const runEach = (arr: ArrayLike | Set, p1?: unknown): void => {\r\n const runFn = (fn: RunEachItem) => fn && fn(p1);\r\n if (arr instanceof Set) {\r\n arr.forEach(runFn);\r\n } else {\r\n each(arr, runFn);\r\n }\r\n};\r\n","import { isArray, isFunction, isPlainObject, isNull } from 'support/utils/types';\r\nimport { each } from 'support/utils/array';\r\n\r\n/**\r\n * Determines whether the passed object has a property with the passed name.\r\n * @param obj The object.\r\n * @param prop The name of the property.\r\n */\r\nexport const hasOwnProperty = (obj: any, prop: string | number | symbol): boolean =>\r\n Object.prototype.hasOwnProperty.call(obj, prop);\r\n\r\n/**\r\n * Returns the names of the enumerable string properties and methods of an object.\r\n * @param obj The object of which the properties shall be returned.\r\n */\r\nexport const keys = (obj: any): Array => (obj ? Object.keys(obj) : []);\r\n\r\n// https://github.com/jquery/jquery/blob/master/src/core.js#L116\r\nexport function assignDeep(target: T, object1: U): T & U;\r\nexport function assignDeep(target: T, object1: U, object2: V): T & U & V;\r\nexport function assignDeep(\r\n target: T,\r\n object1: U,\r\n object2: V,\r\n object3: W\r\n): T & U & V & W;\r\nexport function assignDeep(\r\n target: T,\r\n object1: U,\r\n object2: V,\r\n object3: W,\r\n object4: X\r\n): T & U & V & W & X;\r\nexport function assignDeep(\r\n target: T,\r\n object1: U,\r\n object2: V,\r\n object3: W,\r\n object4: X,\r\n object5: Y\r\n): T & U & V & W & X & Y;\r\nexport function assignDeep(\r\n target: T,\r\n object1?: U,\r\n object2?: V,\r\n object3?: W,\r\n object4?: X,\r\n object5?: Y,\r\n object6?: Z\r\n): T & U & V & W & X & Y & Z {\r\n const sources: Array = [object1, object2, object3, object4, object5, object6];\r\n\r\n // Handle case when target is a string or something (possible in deep copy)\r\n if ((typeof target !== 'object' || isNull(target)) && !isFunction(target)) {\r\n target = {} as T;\r\n }\r\n\r\n each(sources, (source) => {\r\n // Extend the base object\r\n each(keys(source), (key) => {\r\n const copy: any = source[key];\r\n\r\n // Prevent Object.prototype pollution\r\n // Prevent never-ending loop\r\n if (target === copy) {\r\n return true;\r\n }\r\n\r\n const copyIsArray = isArray(copy);\r\n\r\n // Recurse if we're merging plain objects or arrays\r\n if (copy && (isPlainObject(copy) || copyIsArray)) {\r\n const src = target[key];\r\n let clone: any = src;\r\n\r\n // Ensure proper type for the source value\r\n if (copyIsArray && !isArray(src)) {\r\n clone = [];\r\n } else if (!copyIsArray && !isPlainObject(src)) {\r\n clone = {};\r\n }\r\n\r\n // Never move original objects, clone them\r\n target[key] = assignDeep(clone, copy) as any;\r\n } else {\r\n target[key] = copy;\r\n }\r\n });\r\n });\r\n\r\n // Return the modified object\r\n return target as any;\r\n}\r\n\r\n/**\r\n * Returns true if the given object is empty, false otherwise.\r\n * @param obj The Object.\r\n */\r\nexport function isEmptyObject(obj: any): boolean {\r\n /* eslint-disable no-restricted-syntax, guard-for-in */\r\n for (const name in obj) return false;\r\n return true;\r\n /* eslint-enable */\r\n}\r\n","import { isUndefined } from 'support/utils/types';\r\n\r\ntype GetSetPropName = 'scrollLeft' | 'scrollTop' | 'value';\r\n\r\nfunction getSetProp(\r\n topLeft: GetSetPropName,\r\n fallback: number | string,\r\n elm: HTMLElement | HTMLInputElement | null,\r\n value?: number | string\r\n): number | string | void {\r\n if (isUndefined(value)) {\r\n return elm ? elm[topLeft] : fallback;\r\n }\r\n elm && (elm[topLeft] = value);\r\n}\r\n\r\n/**\r\n * Gets or sets a attribute with the given attribute of the given element depending whether the value attribute is given.\r\n * Returns null if the element has no attribute with the given name.\r\n * @param elm The element of which the attribute shall be get or set.\r\n * @param attrName The attribute name which shall be get or set.\r\n * @param value The value of the attribute which shall be set.\r\n */\r\nexport function attr(elm: HTMLElement | null, attrName: string): string | null;\r\nexport function attr(elm: HTMLElement | null, attrName: string, value: string): void;\r\nexport function attr(\r\n elm: HTMLElement | null,\r\n attrName: string,\r\n value?: string\r\n): string | null | void {\r\n if (isUndefined(value)) {\r\n return elm ? elm.getAttribute(attrName) : null;\r\n }\r\n elm && elm.setAttribute(attrName, value);\r\n}\r\n\r\n/**\r\n * Removes the given attribute from the given element.\r\n * @param elm The element of which the attribute shall be removed.\r\n * @param attrName The attribute name.\r\n */\r\nexport const removeAttr = (elm: Element | null, attrName: string): void => {\r\n elm && elm.removeAttribute(attrName);\r\n};\r\n\r\n/**\r\n * Gets or sets the scrollLeft value of the given element depending whether the value attribute is given.\r\n * @param elm The element of which the scrollLeft value shall be get or set.\r\n * @param value The scrollLeft value which shall be set.\r\n */\r\nexport function scrollLeft(elm: HTMLElement | null): number;\r\nexport function scrollLeft(elm: HTMLElement | null, value: number): void;\r\nexport function scrollLeft(elm: HTMLElement | null, value?: number): number | void {\r\n return getSetProp('scrollLeft', 0, elm, value) as number;\r\n}\r\n\r\n/**\r\n * Gets or sets the scrollTop value of the given element depending whether the value attribute is given.\r\n * @param elm The element of which the scrollTop value shall be get or set.\r\n * @param value The scrollTop value which shall be set.\r\n */\r\nexport function scrollTop(elm: HTMLElement | null): number;\r\nexport function scrollTop(elm: HTMLElement | null, value: number): void;\r\nexport function scrollTop(elm: HTMLElement | null, value?: number): number | void {\r\n return getSetProp('scrollTop', 0, elm, value) as number;\r\n}\r\n\r\n/**\r\n * Gets or sets the value of the given input element depending whether the value attribute is given.\r\n * @param elm The input element of which the value shall be get or set.\r\n * @param value The value which shall be set.\r\n */\r\nexport function val(elm: HTMLInputElement | null): string;\r\nexport function val(elm: HTMLInputElement | null, value: string): void;\r\nexport function val(elm: HTMLInputElement | null, value?: string): string | void {\r\n return getSetProp('value', '', elm, value) as string;\r\n}\r\n","import { isElement } from 'support/utils/types';\r\nimport { push, from } from 'support/utils/array';\r\n\r\ntype InputElementType = Element | Node | false | null | undefined;\r\ntype OutputElementType = Element | null;\r\n\r\nconst elmPrototype = Element.prototype;\r\n\r\n/**\r\n * Find all elements with the passed selector, outgoing (and including) the passed element or the document if no element was provided.\r\n * @param selector The selector which has to be searched by.\r\n * @param elm The element from which the search shall be outgoing.\r\n */\r\nconst find = (selector: string, elm?: InputElementType): Element[] => {\r\n const arr: Array = [];\r\n const rootElm = elm ? (isElement(elm) ? elm : null) : document;\r\n\r\n return rootElm ? push(arr, rootElm.querySelectorAll(selector)) : arr;\r\n};\r\n\r\n/**\r\n * Find the first element with the passed selector, outgoing (and including) the passed element or the document if no element was provided.\r\n * @param selector The selector which has to be searched by.\r\n * @param elm The element from which the search shall be outgoing.\r\n */\r\nconst findFirst = (selector: string, elm?: InputElementType): OutputElementType => {\r\n const rootElm = elm ? (isElement(elm) ? elm : null) : document;\r\n\r\n return rootElm ? rootElm.querySelector(selector) : null;\r\n};\r\n\r\n/**\r\n * Determines whether the passed element is matching with the passed selector.\r\n * @param elm The element which has to be compared with the passed selector.\r\n * @param selector The selector which has to be compared with the passed element. Additional selectors: ':visible' and ':hidden'.\r\n */\r\nconst is = (elm: InputElementType, selector: string): boolean => {\r\n if (isElement(elm)) {\r\n /* istanbul ignore next */\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n const fn: (...args: any) => boolean = elmPrototype.matches || elmPrototype.msMatchesSelector;\r\n return fn.call(elm, selector);\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Returns the children (no text-nodes or comments) of the passed element which are matching the passed selector. An empty array is returned if the passed element is null.\r\n * @param elm The element of which the children shall be returned.\r\n * @param selector The selector which must match with the children elements.\r\n */\r\nconst children = (elm: InputElementType, selector?: string): ReadonlyArray => {\r\n const childs: Array = [];\r\n\r\n return isElement(elm)\r\n ? push(\r\n childs,\r\n from(elm.children).filter((child) => (selector ? is(child, selector) : child))\r\n )\r\n : childs;\r\n};\r\n\r\n/**\r\n * Returns the childNodes (incl. text-nodes or comments etc.) of the passed element. An empty array is returned if the passed element is null.\r\n * @param elm The element of which the childNodes shall be returned.\r\n */\r\nconst contents = (elm: InputElementType): ReadonlyArray =>\r\n elm ? from(elm.childNodes) : [];\r\n\r\n/**\r\n * Returns the parent element of the passed element, or null if the passed element is null.\r\n * @param elm The element of which the parent element shall be returned.\r\n */\r\nconst parent = (elm: InputElementType): OutputElementType => (elm ? elm.parentElement : null);\r\n\r\nconst closest = (elm: InputElementType, selector: string): OutputElementType => {\r\n if (isElement(elm)) {\r\n const closestFn = elmPrototype.closest;\r\n if (closestFn) {\r\n return closestFn.call(elm, selector);\r\n }\r\n\r\n do {\r\n if (is(elm, selector)) {\r\n return elm as Element;\r\n }\r\n elm = parent(elm);\r\n } while (elm);\r\n }\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n * Determines whether the given element lies between two selectors in the DOM.\r\n * @param elm The element.\r\n * @param highBoundarySelector The high boundary selector.\r\n * @param deepBoundarySelector The deep boundary selector.\r\n */\r\nconst liesBetween = (\r\n elm: InputElementType,\r\n highBoundarySelector: string,\r\n deepBoundarySelector: string\r\n): boolean => {\r\n const closestHighBoundaryElm = elm && closest(elm, highBoundarySelector);\r\n const closestDeepBoundaryElm = elm && findFirst(deepBoundarySelector, closestHighBoundaryElm);\r\n\r\n return closestHighBoundaryElm && closestDeepBoundaryElm\r\n ? closestHighBoundaryElm === elm ||\r\n closestDeepBoundaryElm === elm ||\r\n closest(closest(elm, deepBoundarySelector), highBoundarySelector) !== closestHighBoundaryElm\r\n : false;\r\n};\r\n\r\nexport { find, findFirst, is, children, contents, parent, liesBetween };\r\n","import { isArrayLike } from 'support/utils/types';\r\nimport { each, from } from 'support/utils/array';\r\nimport { parent } from 'support/dom/traversal';\r\n\r\ntype NodeCollection = ArrayLike | Node | false | null | undefined;\r\n\r\n/**\r\n * Inserts Nodes before the given preferredAnchor element.\r\n * @param parentElm The parent of the preferredAnchor element or the element which shall be the parent of the inserted Nodes.\r\n * @param preferredAnchor The element before which the Nodes shall be inserted or null if the elements shall be appended at the end.\r\n * @param insertedElms The Nodes which shall be inserted.\r\n */\r\nconst before = (\r\n parentElm: Node | false | null | undefined,\r\n preferredAnchor: Node | null | undefined,\r\n insertedElms: NodeCollection\r\n): void => {\r\n if (insertedElms) {\r\n let anchor: Node | null | undefined = preferredAnchor;\r\n let fragment: DocumentFragment | Node | null | undefined;\r\n\r\n // parent must be defined\r\n if (parentElm) {\r\n if (isArrayLike(insertedElms)) {\r\n fragment = document.createDocumentFragment();\r\n\r\n // append all insertedElms to the fragment and if one of these is the anchor, change the anchor\r\n each(insertedElms, (insertedElm) => {\r\n if (insertedElm === anchor) {\r\n anchor = insertedElm.previousSibling;\r\n }\r\n fragment!.appendChild(insertedElm);\r\n });\r\n } else {\r\n fragment = insertedElms;\r\n }\r\n\r\n // if the preferred anchor isn't null set it to a valid anchor\r\n if (preferredAnchor) {\r\n if (!anchor) {\r\n anchor = parentElm.firstChild;\r\n } else if (anchor !== preferredAnchor) {\r\n anchor = anchor.nextSibling;\r\n }\r\n }\r\n\r\n parentElm.insertBefore(fragment, anchor || null);\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Appends the given children at the end of the given Node.\r\n * @param node The Node to which the children shall be appended.\r\n * @param children The Nodes which shall be appended.\r\n */\r\nexport const appendChildren = (node: Node | null | undefined, children: NodeCollection): void => {\r\n before(node, null, children);\r\n};\r\n\r\n/**\r\n * Prepends the given children at the start of the given Node.\r\n * @param node The Node to which the children shall be prepended.\r\n * @param children The Nodes which shall be prepended.\r\n */\r\nexport const prependChildren = (node: Node | null | undefined, children: NodeCollection): void => {\r\n before(node, node && node.firstChild, children);\r\n};\r\n\r\n/**\r\n * Inserts the given Nodes before the given Node.\r\n * @param node The Node before which the given Nodes shall be inserted.\r\n * @param insertedNodes The Nodes which shall be inserted.\r\n */\r\nexport const insertBefore = (\r\n node: Node | null | undefined,\r\n insertedNodes: NodeCollection\r\n): void => {\r\n before(parent(node), node, insertedNodes);\r\n};\r\n\r\n/**\r\n * Inserts the given Nodes after the given Node.\r\n * @param node The Node after which the given Nodes shall be inserted.\r\n * @param insertedNodes The Nodes which shall be inserted.\r\n */\r\nexport const insertAfter = (node: Node | null | undefined, insertedNodes: NodeCollection): void => {\r\n before(parent(node), node && node.nextSibling, insertedNodes);\r\n};\r\n\r\n/**\r\n * Removes the given Nodes from their parent.\r\n * @param nodes The Nodes which shall be removed.\r\n */\r\nexport const removeElements = (nodes: NodeCollection): void => {\r\n if (isArrayLike(nodes)) {\r\n each(from(nodes), (e) => removeElements(e));\r\n } else if (nodes) {\r\n const parentElm = parent(nodes);\r\n if (parentElm) {\r\n parentElm.removeChild(nodes);\r\n }\r\n }\r\n};\r\n","import { each } from 'support/utils/array';\r\nimport { attr } from 'support/dom/attribute';\r\nimport { contents } from 'support/dom/traversal';\r\nimport { removeElements } from 'support/dom/manipulation';\r\n\r\n/**\r\n * Creates a div DOM node.\r\n */\r\nexport const createDiv = (classNames?: string): HTMLDivElement => {\r\n const div = document.createElement('div');\r\n if (classNames) {\r\n attr(div, 'class', classNames);\r\n }\r\n return div;\r\n};\r\n\r\n/**\r\n * Creates DOM nodes modeled after the passed html string and returns the root dom nodes as a array.\r\n * @param html The html string after which the DOM nodes shall be created.\r\n */\r\nexport const createDOM = (html: string): ReadonlyArray => {\r\n const createdDiv = createDiv();\r\n createdDiv.innerHTML = html.trim();\r\n\r\n return each(contents(createdDiv), (elm) => removeElements(elm));\r\n};\r\n","import { each } from 'support/utils/array';\r\nimport { hasOwnProperty } from 'support/utils/object';\r\nimport { createDiv } from 'support/dom/create';\r\n\r\nconst firstLetterToUpper = (str: string): string => str.charAt(0).toUpperCase() + str.slice(1);\r\nconst getDummyStyle = (): CSSStyleDeclaration => createDiv().style;\r\n\r\n// https://developer.mozilla.org/en-US/docs/Glossary/Vendor_Prefix\r\n\r\nexport const cssPrefixes: ReadonlyArray = ['-webkit-', '-moz-', '-o-', '-ms-'];\r\nexport const jsPrefixes: ReadonlyArray = [\r\n 'WebKit',\r\n 'Moz',\r\n 'O',\r\n 'MS',\r\n 'webkit',\r\n 'moz',\r\n 'o',\r\n 'ms',\r\n];\r\n\r\nexport const jsCache: { [key: string]: any } = {};\r\nexport const cssCache: { [key: string]: string } = {};\r\n\r\n/**\r\n * Gets the name of the given CSS property with vendor prefix if it isn't supported without it, or and empty string if unsupported.\r\n * @param name The name of the CSS property which shall be get.\r\n */\r\nexport const cssProperty = (name: string): string => {\r\n let result: string | undefined = cssCache[name];\r\n\r\n if (hasOwnProperty(cssCache, name)) {\r\n return result;\r\n }\r\n\r\n const uppercasedName: string = firstLetterToUpper(name);\r\n const elmStyle: CSSStyleDeclaration = getDummyStyle();\r\n\r\n each(cssPrefixes, (prefix: string) => {\r\n const prefixWithoutDashes: string = prefix.replace(/-/g, '');\r\n const resultPossibilities: Array = [\r\n name, // transition\r\n prefix + name, // -webkit-transition\r\n prefixWithoutDashes + uppercasedName, // webkitTransition\r\n firstLetterToUpper(prefixWithoutDashes) + uppercasedName, // WebkitTransition\r\n ];\r\n\r\n // eslint-disable-next-line no-return-assign\r\n return !(result = resultPossibilities.find(\r\n (resultPossibility: string) => elmStyle[resultPossibility] !== undefined\r\n ));\r\n });\r\n\r\n // eslint-disable-next-line no-return-assign\r\n return (cssCache[name] = result || '');\r\n};\r\n\r\n/**\r\n * Get the name of the given CSS property value(s), with vendor prefix if it isn't supported without it, or an empty string if no value is supported.\r\n * @param property The CSS property to which the CSS property value(s) belong.\r\n * @param values The value(s) separated by spaces which shall be get.\r\n * @param suffix A suffix which is added to each value in case the value is a function or something else more advanced.\r\n */\r\nexport const cssPropertyValue = (property: string, values: string, suffix?: string): string => {\r\n const name = `${property} ${values}`;\r\n let result: string | undefined = cssCache[name];\r\n\r\n if (hasOwnProperty(cssCache, name)) {\r\n return result;\r\n }\r\n\r\n const dummyStyle: CSSStyleDeclaration = getDummyStyle();\r\n const possbleValues: Array = values.split(' ');\r\n const preparedSuffix: string = suffix || '';\r\n const cssPrefixesWithFirstEmpty = [''].concat(cssPrefixes);\r\n\r\n each(possbleValues, (possibleValue: string) => {\r\n each(cssPrefixesWithFirstEmpty, (prefix: string) => {\r\n const prop = prefix + possibleValue;\r\n dummyStyle.cssText = `${property}:${prop}${preparedSuffix}`;\r\n if (dummyStyle.length) {\r\n result = prop;\r\n return false;\r\n }\r\n });\r\n return !result;\r\n });\r\n\r\n // eslint-disable-next-line no-return-assign\r\n return (cssCache[name] = result || '');\r\n};\r\n\r\n/**\r\n * Get the requested JS function, object or constructor with vendor prefix if it isn't supported without or undefined if unsupported.\r\n * @param name The name of the JS function, object or constructor.\r\n */\r\nexport const jsAPI = (name: string): T | undefined => {\r\n let result: any = jsCache[name] || window[name];\r\n\r\n if (hasOwnProperty(jsCache, name)) {\r\n return result;\r\n }\r\n\r\n each(jsPrefixes, (prefix: string) => {\r\n result = result || window[prefix + firstLetterToUpper(name)];\r\n return !result;\r\n });\r\n\r\n jsCache[name] = result;\r\n return result;\r\n};\r\n","import { jsAPI } from 'support/compatibility/vendors';\r\n\r\nexport const MutationObserverConstructor = jsAPI('MutationObserver');\r\nexport const IntersectionObserverConstructor = jsAPI(\r\n 'IntersectionObserver'\r\n);\r\nexport const ResizeObserverConstructor = jsAPI('ResizeObserver');\r\nexport const cAF = jsAPI('cancelAnimationFrame');\r\nexport const rAF = jsAPI('requestAnimationFrame');\r\n","import { isString } from 'support/utils/types';\r\nimport { each } from 'support/utils/array';\r\nimport { keys } from 'support/utils/object';\r\n\r\nconst rnothtmlwhite = /[^\\x20\\t\\r\\n\\f]+/g;\r\nconst classListAction = (\r\n elm: Element | false | null | undefined,\r\n className: string,\r\n action: (elmClassList: DOMTokenList, clazz: string) => boolean | void\r\n): boolean => {\r\n let clazz: string;\r\n let i = 0;\r\n let result = false;\r\n\r\n if (elm && isString(className)) {\r\n const classes: Array = className.match(rnothtmlwhite) || [];\r\n result = classes.length > 0;\r\n while ((clazz = classes[i++])) {\r\n result = !!action(elm.classList, clazz) && result;\r\n }\r\n }\r\n return result;\r\n};\r\n\r\n/**\r\n * Check whether the given element has the given class name(s).\r\n * @param elm The element.\r\n * @param className The class name(s).\r\n */\r\nexport const hasClass = (elm: Element | false | null | undefined, className: string): boolean =>\r\n classListAction(elm, className, (classList, clazz) => classList.contains(clazz));\r\n\r\n/**\r\n * Adds the given class name(s) to the given element.\r\n * @param elm The element.\r\n * @param className The class name(s) which shall be added. (separated by spaces)\r\n */\r\nexport const addClass = (elm: Element | false | null | undefined, className: string): void => {\r\n classListAction(elm, className, (classList, clazz) => classList.add(clazz));\r\n};\r\n\r\n/**\r\n * Removes the given class name(s) from the given element.\r\n * @param elm The element.\r\n * @param className The class name(s) which shall be removed. (separated by spaces)\r\n */\r\nexport const removeClass = (elm: Element | false | null | undefined, className: string): void => {\r\n classListAction(elm, className, (classList, clazz) => classList.remove(clazz));\r\n};\r\n\r\n/**\r\n * Takes two className strings, compares them and returns the difference as array.\r\n * @param classNameA ClassName A.\r\n * @param classNameB ClassName B.\r\n */\r\nexport const diffClass = (\r\n classNameA: string | null | undefined,\r\n classNameB: string | null | undefined\r\n) => {\r\n const classNameASplit = classNameA && classNameA.split(' ');\r\n const classNameBSplit = classNameB && classNameB.split(' ');\r\n const tempObj = {};\r\n\r\n each(classNameASplit, (className) => {\r\n tempObj[className] = 1;\r\n });\r\n each(classNameBSplit, (className) => {\r\n if (tempObj[className]) {\r\n delete tempObj[className];\r\n } else {\r\n tempObj[className] = 1;\r\n }\r\n });\r\n\r\n return keys(tempObj);\r\n};\r\n","export interface WH {\r\n w: T;\r\n h: T;\r\n}\r\n\r\nconst elementHasDimensions = (elm: HTMLElement): boolean =>\r\n !!(elm.offsetWidth || elm.offsetHeight || elm.getClientRects().length);\r\nconst zeroObj: WH = {\r\n w: 0,\r\n h: 0,\r\n};\r\n\r\n/**\r\n * Returns the window inner- width and height.\r\n */\r\nexport const windowSize = (): WH => ({\r\n w: window.innerWidth,\r\n h: window.innerHeight,\r\n});\r\n\r\n/**\r\n * Returns the scroll- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the scroll- width and height shall be returned.\r\n */\r\nexport const offsetSize = (elm: HTMLElement | null | undefined): WH =>\r\n elm\r\n ? {\r\n w: elm.offsetWidth,\r\n h: elm.offsetHeight,\r\n }\r\n : zeroObj;\r\n\r\n/**\r\n * Returns the client- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the client- width and height shall be returned.\r\n */\r\nexport const clientSize = (elm: HTMLElement | null | undefined): WH =>\r\n elm\r\n ? {\r\n w: elm.clientWidth,\r\n h: elm.clientHeight,\r\n }\r\n : zeroObj;\r\n\r\n/**\r\n * Returns the client- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the client- width and height shall be returned.\r\n */\r\nexport const scrollSize = (elm: HTMLElement | null | undefined): WH =>\r\n elm\r\n ? {\r\n w: elm.scrollWidth,\r\n h: elm.scrollHeight,\r\n }\r\n : zeroObj;\r\n\r\n/**\r\n * Returns the BoundingClientRect of the passed element.\r\n * @param elm The element of which the BoundingClientRect shall be returned.\r\n */\r\nexport const getBoundingClientRect = (elm: HTMLElement): DOMRect => elm.getBoundingClientRect();\r\n\r\n/**\r\n * Determines whether the passed element has any dimensions.\r\n * @param elm The element.\r\n */\r\nexport const hasDimensions = (elm: HTMLElement | null | undefined): boolean =>\r\n elm ? elementHasDimensions(elm as HTMLElement) : false;\r\n","import { isUndefined } from 'support/utils/types';\r\nimport { each, push, runEach } from 'support/utils/array';\r\n\r\nlet passiveEventsSupport: boolean;\r\nconst supportPassiveEvents = (): boolean => {\r\n if (isUndefined(passiveEventsSupport)) {\r\n passiveEventsSupport = false;\r\n try {\r\n /* eslint-disable */\r\n // @ts-ignore\r\n window.addEventListener(\r\n 'test',\r\n null,\r\n Object.defineProperty({}, 'passive', {\r\n get: function () {\r\n passiveEventsSupport = true;\r\n },\r\n })\r\n );\r\n /* eslint-enable */\r\n } catch (e) {}\r\n }\r\n return passiveEventsSupport;\r\n};\r\nconst splitEventNames = (eventNames: string) => eventNames.split(' ');\r\n\r\nexport interface OnOptions {\r\n _capture?: boolean;\r\n _passive?: boolean;\r\n _once?: boolean;\r\n}\r\n\r\n/**\r\n * Removes the passed event listener for the passed events with the passed options.\r\n * @param target The element from which the listener shall be removed.\r\n * @param eventNames The eventsnames for which the listener shall be removed.\r\n * @param listener The listener which shall be removed.\r\n * @param capture The options of the removed listener.\r\n */\r\nexport const off = (\r\n target: EventTarget,\r\n eventNames: string,\r\n listener: (event: T) => any,\r\n capture?: boolean\r\n): void => {\r\n each(splitEventNames(eventNames), (eventName) => {\r\n target.removeEventListener(eventName, listener as EventListener, capture);\r\n });\r\n};\r\n\r\n/**\r\n * Adds the passed event listener for the passed eventnames with the passed options.\r\n * @param target The element to which the listener shall be added.\r\n * @param eventNames The eventsnames for which the listener shall be called.\r\n * @param listener The listener which is called on the eventnames.\r\n * @param options The options of the added listener.\r\n */\r\nexport const on = (\r\n target: EventTarget,\r\n eventNames: string,\r\n listener: (event: T) => any,\r\n options?: OnOptions\r\n): (() => void) => {\r\n const doSupportPassiveEvents = supportPassiveEvents();\r\n const passive = (doSupportPassiveEvents && options && options._passive) || false;\r\n const capture = (options && options._capture) || false;\r\n const once = (options && options._once) || false;\r\n const offListeners: (() => void)[] = [];\r\n const nativeOptions: AddEventListenerOptions | boolean = doSupportPassiveEvents\r\n ? {\r\n passive,\r\n capture,\r\n }\r\n : capture;\r\n\r\n each(splitEventNames(eventNames), (eventName) => {\r\n const finalListener = (once\r\n ? (evt: T) => {\r\n target.removeEventListener(eventName, finalListener, capture);\r\n listener && listener(evt);\r\n }\r\n : listener) as EventListener;\r\n\r\n push(offListeners, off.bind(null, target, eventName, finalListener, capture));\r\n target.addEventListener(eventName, finalListener, nativeOptions);\r\n });\r\n\r\n return runEach.bind(0, offListeners);\r\n};\r\n\r\n/**\r\n * Shorthand for the stopPropagation event Method.\r\n * @param evt The event of which the stopPropagation method shall be called.\r\n */\r\nexport const stopPropagation = (evt: Event): void => evt.stopPropagation();\r\n\r\n/**\r\n * Shorthand for the preventDefault event Method.\r\n * @param evt The event of which the preventDefault method shall be called.\r\n */\r\nexport const preventDefault = (evt: Event): void => evt.preventDefault();\r\n\r\n/**\r\n * Shorthand for the stopPropagation and preventDefault event Method.\r\n * @param evt The event of which the stopPropagation and preventDefault methods shall be called.\r\n */\r\nexport const stopAndPrevent = (evt: Event): void =>\r\n (stopPropagation(evt) as undefined) || (preventDefault(evt) as undefined);\r\n","import { each } from 'support/utils/array';\r\nimport { WH, XY, TRBL } from 'support/dom';\r\nimport { PlainObject } from 'typings';\r\n\r\n/**\r\n * Compares two objects and returns true if all values of the passed prop names are identical, false otherwise or if one of the two object is falsy.\r\n * @param a Object a.\r\n * @param b Object b.\r\n * @param props The props which shall be compared.\r\n */\r\nexport const equal = (\r\n a: T | undefined,\r\n b: T | undefined,\r\n props: Array,\r\n propMutation?: ((value: any) => any) | null | false\r\n): boolean => {\r\n if (a && b) {\r\n let result = true;\r\n each(props, (prop) => {\r\n const compareA = propMutation ? propMutation(a[prop]) : a[prop];\r\n const compareB = propMutation ? propMutation(b[prop]) : b[prop];\r\n if (compareA !== compareB) {\r\n result = false;\r\n }\r\n });\r\n return result;\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalWH = (a?: WH, b?: WH) => equal>(a, b, ['w', 'h']);\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalXY = (a?: XY, b?: XY) => equal>(a, b, ['x', 'y']);\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalTRBL = (a?: TRBL, b?: TRBL) => equal(a, b, ['t', 'r', 'b', 'l']);\r\n\r\n/**\r\n * Compares two DOM Rects for their equality of their width and height properties\r\n * Also returns false if one of the DOM Rects is undefined or null.\r\n * @param a DOM Rect a.\r\n * @param b DOM Rect b.\r\n * @param round Whether the values should be rounded.\r\n */\r\nexport const equalBCRWH = (a?: DOMRect, b?: DOMRect, round?: boolean) =>\r\n equal(a, b, ['width', 'height'], round && ((value) => Math.round(value)));\r\n","import { isNumber, isFunction } from 'support/utils/types';\r\nimport { from } from 'support/utils/array';\r\nimport { rAF, cAF } from 'support/compatibility/apis';\r\n\r\nconst clearTimeouts = (id: number | undefined) => {\r\n id && window.clearTimeout(id);\r\n id && cAF!(id);\r\n};\r\n\r\ntype DebounceTiming = number | false | null | undefined;\r\n\r\nexport interface DebounceOptions any> {\r\n /**\r\n * The timeout for debouncing. If null, no debounce is applied.\r\n */\r\n _timeout?: DebounceTiming | (() => DebounceTiming);\r\n /**\r\n * A maximum amount of ms. before the function will be called even with debounce.\r\n */\r\n _maxDelay?: DebounceTiming | (() => DebounceTiming);\r\n /**\r\n * Function which merges parameters for each canceled debounce.\r\n * If parameters can't be merged the function will return null, otherwise it returns the merged parameters.\r\n */\r\n _mergeParams?: (\r\n prev: Parameters,\r\n curr: Parameters\r\n ) => Parameters | false | null | undefined;\r\n}\r\n\r\nexport interface Debounced any> {\r\n (...args: Parameters): ReturnType;\r\n _flush(): void;\r\n}\r\n\r\nexport const noop = () => {}; // eslint-disable-line\r\n\r\n/**\r\n * Debounces the given function either with a timeout or a animation frame.\r\n * @param functionToDebounce The function which shall be debounced.\r\n * @param options Options for debouncing.\r\n */\r\nexport const debounce = any>(\r\n functionToDebounce: FunctionToDebounce,\r\n options?: DebounceOptions\r\n): Debounced => {\r\n let timeoutId: number | undefined;\r\n let maxTimeoutId: number | undefined;\r\n let prevArguments: Parameters | null | undefined;\r\n let latestArguments: Parameters | null | undefined;\r\n const { _timeout, _maxDelay, _mergeParams } = options || {};\r\n const setT = window.setTimeout;\r\n\r\n const invokeFunctionToDebounce = function (args: IArguments) {\r\n clearTimeouts(timeoutId);\r\n clearTimeouts(maxTimeoutId);\r\n maxTimeoutId = timeoutId = prevArguments = undefined;\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n functionToDebounce.apply(this, args);\r\n };\r\n\r\n const mergeParms = (\r\n curr: Parameters\r\n ): Parameters | false | null | undefined =>\r\n _mergeParams && prevArguments ? _mergeParams(prevArguments, curr) : curr;\r\n\r\n const flush = () => {\r\n /* istanbul ignore next */\r\n if (timeoutId) {\r\n invokeFunctionToDebounce(mergeParms(latestArguments!) || latestArguments!);\r\n }\r\n };\r\n\r\n const debouncedFn = function () {\r\n // eslint-disable-next-line prefer-rest-params\r\n const args: Parameters = from(arguments) as Parameters;\r\n const finalTimeout = isFunction(_timeout) ? _timeout() : _timeout;\r\n const hasTimeout = isNumber(finalTimeout) && finalTimeout >= 0;\r\n\r\n if (hasTimeout) {\r\n const finalMaxWait = isFunction(_maxDelay) ? _maxDelay() : _maxDelay;\r\n const hasMaxWait = isNumber(finalMaxWait) && finalMaxWait >= 0;\r\n const setTimeoutFn = finalTimeout > 0 ? setT : rAF!;\r\n const mergeParamsResult = mergeParms(args);\r\n const invokedArgs = mergeParamsResult || args;\r\n const boundInvoke = invokeFunctionToDebounce.bind(0, invokedArgs);\r\n\r\n // if (!mergeParamsResult) {\r\n // invokeFunctionToDebounce(prevArguments || args);\r\n // }\r\n\r\n clearTimeouts(timeoutId);\r\n // @ts-ignore\r\n timeoutId = setTimeoutFn(boundInvoke, finalTimeout as number) as number;\r\n\r\n if (hasMaxWait && !maxTimeoutId) {\r\n maxTimeoutId = setT(flush, finalMaxWait as number);\r\n }\r\n\r\n prevArguments = latestArguments = invokedArgs;\r\n } else {\r\n invokeFunctionToDebounce(args);\r\n }\r\n };\r\n debouncedFn._flush = flush;\r\n\r\n return debouncedFn as Debounced;\r\n};\r\n","import { each, keys } from 'support/utils';\r\nimport { isString, isNumber, isArray, isUndefined } from 'support/utils/types';\r\nimport { PlainObject, StyleObject } from 'typings';\r\n\r\nexport interface TRBL {\r\n t: number;\r\n r: number;\r\n b: number;\r\n l: number;\r\n}\r\n\r\nconst cssNumber = {\r\n // animationiterationcount: 1,\r\n // columncount: 1,\r\n // fillopacity: 1,\r\n // flexgrow: 1,\r\n // flexshrink: 1,\r\n // fontweight: 1,\r\n // lineheight: 1,\r\n // order: 1,\r\n // orphans: 1,\r\n // widows: 1,\r\n // zoom: 1,\r\n opacity: 1,\r\n zindex: 1,\r\n};\r\n\r\nconst parseToZeroOrNumber = (value: string, toFloat?: boolean): number => {\r\n /* istanbul ignore next */\r\n const num = toFloat ? parseFloat(value) : parseInt(value, 10);\r\n /* istanbul ignore next */\r\n return Number.isNaN(num) ? 0 : num;\r\n};\r\nconst adaptCSSVal = (prop: string, val: string | number): string | number =>\r\n !cssNumber[prop.toLowerCase()] && isNumber(val) ? `${val}px` : val;\r\nconst getCSSVal = (elm: HTMLElement, computedStyle: CSSStyleDeclaration, prop: string): string =>\r\n /* istanbul ignore next */\r\n computedStyle != null\r\n ? computedStyle[prop] || computedStyle.getPropertyValue(prop)\r\n : elm.style[prop];\r\nconst setCSSVal = (\r\n elm: HTMLElement | false | null | undefined,\r\n prop: string,\r\n val: string | number\r\n): void => {\r\n try {\r\n if (elm) {\r\n const { style: elmStyle } = elm;\r\n if (!isUndefined(elmStyle[prop])) {\r\n elmStyle[prop] = adaptCSSVal(prop, val);\r\n } else {\r\n elmStyle.setProperty(prop, val as string);\r\n }\r\n }\r\n } catch (e) {}\r\n};\r\n\r\n/**\r\n * Gets or sets the passed styles to the passed element.\r\n * @param elm The element to which the styles shall be applied to / be read from.\r\n * @param styles The styles which shall be set or read.\r\n */\r\nexport function style(\r\n elm: HTMLElement | false | null | undefined,\r\n styles: StyleObject\r\n): void;\r\nexport function style(\r\n elm: HTMLElement | false | null | undefined,\r\n styles: string\r\n): string;\r\nexport function style(\r\n elm: HTMLElement | false | null | undefined,\r\n styles: Array | string\r\n): { [key: string]: string };\r\nexport function style(\r\n elm: HTMLElement | false | null | undefined,\r\n styles: StyleObject | Array | string\r\n): { [key: string]: string } | string | void {\r\n const getSingleStyle = isString(styles);\r\n const getStyles = isArray(styles) || getSingleStyle;\r\n\r\n if (getStyles) {\r\n let getStylesResult: string | PlainObject = getSingleStyle ? '' : {};\r\n if (elm) {\r\n const computedStyle: CSSStyleDeclaration = window.getComputedStyle(elm, null);\r\n getStylesResult = getSingleStyle\r\n ? getCSSVal(elm, computedStyle, styles as string)\r\n : (styles as Array).reduce((result, key) => {\r\n result[key] = getCSSVal(elm, computedStyle, key as string);\r\n return result;\r\n }, getStylesResult);\r\n }\r\n return getStylesResult;\r\n }\r\n each(keys(styles), (key) => setCSSVal(elm, key, styles[key]));\r\n}\r\n\r\n/**\r\n * Hides the passed element (display: none).\r\n * @param elm The element which shall be hidden.\r\n */\r\nexport const hide = (elm: HTMLElement | false | null | undefined): void => {\r\n style(elm, { display: 'none' });\r\n};\r\n\r\n/**\r\n * Shows the passed element (display: block).\r\n * @param elm The element which shall be shown.\r\n */\r\nexport const show = (elm: HTMLElement | false | null | undefined): void => {\r\n style(elm, { display: 'block' });\r\n};\r\n\r\n/**\r\n * Returns the top right bottom left values of the passed css property.\r\n * @param elm The element of which the values shall be returned.\r\n * @param propertyPrefix The css property prefix. (e.g. \"border\")\r\n * @param propertySuffix The css property suffix. (e.g. \"width\")\r\n */\r\nexport const topRightBottomLeft = (\r\n elm?: HTMLElement | false | null | undefined,\r\n propertyPrefix?: string,\r\n propertySuffix?: string\r\n): TRBL => {\r\n const finalPrefix = propertyPrefix ? `${propertyPrefix}-` : '';\r\n const finalSuffix = propertySuffix ? `-${propertySuffix}` : '';\r\n const top = `${finalPrefix}top${finalSuffix}`;\r\n const right = `${finalPrefix}right${finalSuffix}`;\r\n const bottom = `${finalPrefix}bottom${finalSuffix}`;\r\n const left = `${finalPrefix}left${finalSuffix}`;\r\n const result = style(elm, [top, right, bottom, left]);\r\n return {\r\n t: parseToZeroOrNumber(result[top]),\r\n r: parseToZeroOrNumber(result[right]),\r\n b: parseToZeroOrNumber(result[bottom]),\r\n l: parseToZeroOrNumber(result[left]),\r\n };\r\n};\r\n","import { getBoundingClientRect } from 'support/dom/dimensions';\r\n\r\nexport interface XY {\r\n x: T;\r\n y: T;\r\n}\r\n\r\nconst zeroObj: XY = {\r\n x: 0,\r\n y: 0,\r\n};\r\n\r\n/**\r\n * Returns the offset- left and top coordinates of the passed element relative to the document. If the element is null the top and left values are 0.\r\n * @param elm The element of which the offset- top and left coordinates shall be returned.\r\n */\r\nexport const absoluteCoordinates = (elm: HTMLElement | null | undefined): XY => {\r\n const rect = elm ? getBoundingClientRect(elm) : 0;\r\n return rect\r\n ? {\r\n x: rect.left + window.pageYOffset,\r\n y: rect.top + window.pageXOffset,\r\n }\r\n : zeroObj;\r\n};\r\n\r\n/**\r\n * Returns the offset- left and top coordinates of the passed element. If the element is null the top and left values are 0.\r\n * @param elm The element of which the offset- top and left coordinates shall be returned.\r\n */\r\nexport const offsetCoordinates = (elm: HTMLElement | null | undefined): XY =>\r\n elm\r\n ? {\r\n x: elm.offsetLeft,\r\n y: elm.offsetTop,\r\n }\r\n : zeroObj;\r\n","export const classNameEnvironment = 'os-environment';\r\nexport const classNameEnvironmentFlexboxGlue = `${classNameEnvironment}-flexbox-glue`;\r\nexport const classNameEnvironmentFlexboxGlueMax = `${classNameEnvironmentFlexboxGlue}-max`;\r\n\r\nexport const classNameHost = 'os-host';\r\nexport const classNamePadding = 'os-padding';\r\nexport const classNameViewport = 'os-viewport';\r\nexport const classNameViewportArrange = `${classNameViewport}-arrange`;\r\nexport const classNameContent = 'os-content';\r\nexport const classNameViewportScrollbarStyling = `${classNameViewport}-scrollbar-styled`;\r\n\r\nexport const classNameSizeObserver = 'os-size-observer';\r\nexport const classNameSizeObserverAppear = `${classNameSizeObserver}-appear`;\r\nexport const classNameSizeObserverListener = `${classNameSizeObserver}-listener`;\r\nexport const classNameSizeObserverListenerScroll = `${classNameSizeObserverListener}-scroll`;\r\nexport const classNameSizeObserverListenerItem = `${classNameSizeObserverListener}-item`;\r\nexport const classNameSizeObserverListenerItemFinal = `${classNameSizeObserverListenerItem}-final`;\r\n\r\nexport const classNameTrinsicObserver = 'os-trinsic-observer';\r\n\r\nexport const classNameScrollbar = 'os-scrollbar';\r\nexport const classNameScrollbarHorizontal = `${classNameScrollbar}-horizontal`;\r\nexport const classNameScrollbarVertical = `${classNameScrollbar}-vertical`;\r\nexport const classNameScrollbarTrack = 'os-scrollbar-track';\r\nexport const classNameScrollbarHandle = 'os-scrollbar-handle';\r\n","function _extends() {\n module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import { assignDeep, each, isObject, keys, isArray, hasOwnProperty, isFunction } from 'support';\r\nimport { PartialOptions } from 'typings';\r\n\r\nconst stringify = (value: any) =>\r\n JSON.stringify(value, (_, val) => {\r\n if (isFunction(val)) {\r\n throw new Error();\r\n }\r\n return val;\r\n });\r\n\r\nexport type ResizeBehavior = 'none' | 'both' | 'horizontal' | 'vertical';\r\n\r\nexport type OverflowBehavior = 'hidden' | 'scroll' | 'visible' | 'visible-hidden';\r\n\r\nexport type VisibilityBehavior = 'visible' | 'hidden' | 'auto';\r\n\r\nexport type AutoHideBehavior = 'never' | 'scroll' | 'leave' | 'move';\r\n\r\nexport type ScrollBehavior = 'always' | 'ifneeded' | 'never';\r\n\r\nexport type BasicEventCallback = (this: any) => void;\r\n\r\nexport type ScrollEventCallback = (this: any, args?: UIEvent) => void;\r\n\r\nexport type OverflowChangedCallback = (this: any, args?: OverflowChangedArgs) => void;\r\n\r\nexport type OverflowAmountChangedCallback = (this: any, args?: OverflowAmountChangedArgs) => void;\r\n\r\nexport type DirectionChangedCallback = (this: any, args?: DirectionChangedArgs) => void;\r\n\r\nexport type SizeChangedCallback = (this: any, args?: SizeChangedArgs) => void;\r\n\r\nexport type UpdatedCallback = (this: any, args?: UpdatedArgs) => void;\r\n\r\nexport interface OSOptions {\r\n resize: ResizeBehavior;\r\n paddingAbsolute: boolean;\r\n updating: {\r\n elementEvents: Array<[string, string]> | null;\r\n attributes: string[] | null;\r\n debounce: number | [number, number] | null;\r\n };\r\n overflow: {\r\n x: OverflowBehavior;\r\n y: OverflowBehavior;\r\n };\r\n scrollbars: {\r\n visibility: VisibilityBehavior;\r\n autoHide: AutoHideBehavior;\r\n autoHideDelay: number;\r\n dragScroll: boolean;\r\n clickScroll: boolean;\r\n touch: boolean;\r\n };\r\n textarea: {\r\n dynWidth: boolean;\r\n dynHeight: boolean;\r\n inheritedAttrs: string | Array | null;\r\n };\r\n nativeScrollbarsOverlaid: {\r\n show: boolean;\r\n initialize: boolean;\r\n };\r\n callbacks: {\r\n onUpdated: (() => any) | null;\r\n };\r\n /*\r\n callbacks?: {\r\n onInitialized?: BasicEventCallback | null;\r\n onInitializationWithdrawn?: BasicEventCallback | null;\r\n onDestroyed?: BasicEventCallback | null;\r\n onScrollStart?: ScrollEventCallback | null;\r\n onScroll?: ScrollEventCallback | null;\r\n onScrollStop?: ScrollEventCallback | null;\r\n onOverflowChanged?: OverflowChangedCallback | null;\r\n onOverflowAmountChanged?: OverflowAmountChangedCallback | null;\r\n onDirectionChanged?: DirectionChangedCallback | null;\r\n onContentSizeChanged?: SizeChangedCallback | null;\r\n onHostSizeChanged?: SizeChangedCallback | null;\r\n onUpdated?: UpdatedCallback | null;\r\n };\r\n */\r\n}\r\n\r\nexport interface OverflowChangedArgs {\r\n x: boolean;\r\n y: boolean;\r\n xScrollable: boolean;\r\n yScrollable: boolean;\r\n clipped: boolean;\r\n}\r\n\r\nexport interface OverflowAmountChangedArgs {\r\n x: number;\r\n y: number;\r\n}\r\n\r\nexport interface DirectionChangedArgs {\r\n isRTL: number;\r\n dir: string;\r\n}\r\n\r\nexport interface SizeChangedArgs {\r\n width: number;\r\n height: number;\r\n}\r\n\r\nexport interface UpdatedArgs {\r\n forced: boolean;\r\n}\r\n\r\nexport const defaultOptions: OSOptions = {\r\n resize: 'none', // none || both || horizontal || vertical || n || b || h || v\r\n paddingAbsolute: false, // true || false\r\n updating: {\r\n elementEvents: [['img', 'load']], // array of tuples || null\r\n attributes: null,\r\n debounce: [0, 33], // number || number array || null\r\n },\r\n overflow: {\r\n x: 'scroll', // visible-hidden || visible-scroll || hidden || scroll || v-h || v-s || h || s\r\n y: 'scroll', // visible-hidden || visible-scroll || hidden || scroll || v-h || v-s || h || s\r\n },\r\n scrollbars: {\r\n visibility: 'auto', // visible || hidden || auto || v || h || a\r\n autoHide: 'never', // never || scroll || leave || move || n || s || l || m\r\n autoHideDelay: 800, // number\r\n dragScroll: true, // true || false\r\n clickScroll: false, // true || false\r\n touch: true, // true || false\r\n },\r\n textarea: {\r\n dynWidth: false, // true || false\r\n dynHeight: false, // true || false\r\n inheritedAttrs: ['style', 'class'], // string || array || null\r\n },\r\n nativeScrollbarsOverlaid: {\r\n show: false, // true || false\r\n initialize: false, // true || false\r\n },\r\n callbacks: {\r\n onUpdated: null,\r\n },\r\n};\r\n\r\nexport const getOptionsDiff = (\r\n currOptions: T,\r\n newOptions: PartialOptions\r\n): PartialOptions => {\r\n const diff: PartialOptions = {};\r\n const optionsKeys = keys(newOptions).concat(keys(currOptions));\r\n\r\n each(optionsKeys, (optionKey) => {\r\n const currOptionValue = currOptions[optionKey];\r\n const newOptionValue = newOptions[optionKey];\r\n\r\n if (isObject(currOptionValue) && isObject(newOptionValue)) {\r\n assignDeep((diff[optionKey] = {}), getOptionsDiff(currOptionValue, newOptionValue));\r\n } else if (hasOwnProperty(newOptions, optionKey) && newOptionValue !== currOptionValue) {\r\n let isDiff = true;\r\n\r\n if (isArray(currOptionValue) || isArray(newOptionValue)) {\r\n try {\r\n if (stringify(currOptionValue) === stringify(newOptionValue)) {\r\n isDiff = false;\r\n }\r\n } catch {}\r\n }\r\n\r\n if (isDiff) {\r\n diff[optionKey] = newOptionValue;\r\n }\r\n }\r\n });\r\n\r\n return diff;\r\n};\r\n","import {\r\n createDOM,\r\n addClass,\r\n style,\r\n appendChildren,\r\n clientSize,\r\n absoluteCoordinates,\r\n offsetSize,\r\n scrollLeft,\r\n XY,\r\n removeAttr,\r\n removeElements,\r\n windowSize,\r\n runEach,\r\n equalBCRWH,\r\n getBoundingClientRect,\r\n assignDeep,\r\n cssProperty,\r\n} from 'support';\r\nimport {\r\n classNameEnvironment,\r\n classNameEnvironmentFlexboxGlue,\r\n classNameEnvironmentFlexboxGlueMax,\r\n classNameViewportScrollbarStyling,\r\n} from 'classnames';\r\nimport { OSOptions, defaultOptions } from 'options';\r\nimport { OSTargetElement, PartialOptions } from 'typings';\r\n\r\ntype StructureInitializationElementFn = ((target: OSTargetElement) => HTMLElement | T) | T;\r\n\r\ntype ScrollbarsInitializationElementFn =\r\n | ((target: OSTargetElement, host: HTMLElement, viewport: HTMLElement) => HTMLElement | T)\r\n | T;\r\n\r\n/**\r\n * A Static element is an element which MUST be generated.\r\n * If null (or the returned result is null), the initialization function is generatig the element, otherwise\r\n * the element returned by the function acts as the generated element.\r\n */\r\nexport type StructureInitializationStaticElement = StructureInitializationElementFn;\r\n\r\n/**\r\n * A Dynamic element is an element which CAN be generated.\r\n * If null (or the returned result is null), then the default behavior is used.\r\n * If boolean (or the returned result is boolean), the generation of the element is forced (or not).\r\n * If the function returns and element, the element returned by the function acts as the generated element.\r\n */\r\nexport type StructureInitializationDynamicElement = StructureInitializationElementFn<\r\n boolean | null\r\n>;\r\n\r\nexport interface StructureInitializationStrategy {\r\n _host: StructureInitializationStaticElement;\r\n _viewport: StructureInitializationStaticElement;\r\n _padding: StructureInitializationDynamicElement;\r\n _content: StructureInitializationDynamicElement;\r\n}\r\n\r\nexport interface ScrollbarsInitializationStrategy {\r\n _scrollbarsSlot: ScrollbarsInitializationElementFn;\r\n}\r\n\r\nexport interface InitializationStrategy\r\n extends StructureInitializationStrategy,\r\n ScrollbarsInitializationStrategy {}\r\n\r\nexport type OnEnvironmentChanged = (env: Environment) => void;\r\nexport interface Environment {\r\n _nativeScrollbarSize: XY;\r\n _nativeScrollbarIsOverlaid: XY;\r\n _nativeScrollbarStyling: boolean;\r\n _rtlScrollBehavior: { n: boolean; i: boolean };\r\n _flexboxGlue: boolean;\r\n _cssCustomProperties: boolean;\r\n _addListener(listener: OnEnvironmentChanged): void;\r\n _removeListener(listener: OnEnvironmentChanged): void;\r\n _getInitializationStrategy(): InitializationStrategy;\r\n _setInitializationStrategy(newInitializationStrategy: Partial): void;\r\n _getDefaultOptions(): OSOptions;\r\n _setDefaultOptions(newDefaultOptions: PartialOptions): void;\r\n _defaultInitializationStrategy: InitializationStrategy;\r\n _defaultDefaultOptions: OSOptions;\r\n}\r\n\r\nlet environmentInstance: Environment;\r\nconst { abs, round } = Math;\r\n\r\nconst diffBiggerThanOne = (valOne: number, valTwo: number): boolean => {\r\n const absValOne = abs(valOne);\r\n const absValTwo = abs(valTwo);\r\n return !(absValOne === absValTwo || absValOne + 1 === absValTwo || absValOne - 1 === absValTwo);\r\n};\r\n\r\nconst getNativeScrollbarSize = (body: HTMLElement, measureElm: HTMLElement): XY => {\r\n appendChildren(body, measureElm);\r\n const cSize = clientSize(measureElm);\r\n const oSize = offsetSize(measureElm);\r\n\r\n return {\r\n x: oSize.h - cSize.h,\r\n y: oSize.w - cSize.w,\r\n };\r\n};\r\n\r\nconst getNativeScrollbarStyling = (testElm: HTMLElement): boolean => {\r\n let result = false;\r\n addClass(testElm, classNameViewportScrollbarStyling);\r\n try {\r\n result =\r\n style(testElm, cssProperty('scrollbar-width')) === 'none' ||\r\n window.getComputedStyle(testElm, '::-webkit-scrollbar').getPropertyValue('display') ===\r\n 'none';\r\n } catch (ex) {}\r\n\r\n return result;\r\n};\r\n\r\nconst getRtlScrollBehavior = (\r\n parentElm: HTMLElement,\r\n childElm: HTMLElement\r\n): { i: boolean; n: boolean } => {\r\n const strHidden = 'hidden';\r\n style(parentElm, { overflowX: strHidden, overflowY: strHidden, direction: 'rtl' });\r\n scrollLeft(parentElm, 0);\r\n\r\n const parentOffset = absoluteCoordinates(parentElm);\r\n const childOffset = absoluteCoordinates(childElm);\r\n scrollLeft(parentElm, -999); // https://github.com/KingSora/OverlayScrollbars/issues/187\r\n const childOffsetAfterScroll = absoluteCoordinates(childElm);\r\n return {\r\n /**\r\n * origin direction = determines if the zero scroll position is on the left or right side\r\n * 'i' means 'invert' (i === true means that the axis must be inverted to be correct)\r\n * true = on the left side\r\n * false = on the right side\r\n */\r\n i: parentOffset.x === childOffset.x,\r\n /**\r\n * negative = determines if the maximum scroll is positive or negative\r\n * 'n' means 'negate' (n === true means that the axis must be negated to be correct)\r\n * true = negative\r\n * false = positive\r\n */\r\n n: childOffset.x !== childOffsetAfterScroll.x,\r\n };\r\n};\r\n\r\nconst getFlexboxGlue = (parentElm: HTMLElement, childElm: HTMLElement): boolean => {\r\n addClass(parentElm, classNameEnvironmentFlexboxGlue);\r\n const minOffsetsizeParent = getBoundingClientRect(parentElm);\r\n const minOffsetsize = getBoundingClientRect(childElm);\r\n const supportsMin = equalBCRWH(minOffsetsize, minOffsetsizeParent, true);\r\n\r\n addClass(parentElm, classNameEnvironmentFlexboxGlueMax);\r\n const maxOffsetsizeParent = getBoundingClientRect(parentElm);\r\n const maxOffsetsize = getBoundingClientRect(childElm);\r\n const supportsMax = equalBCRWH(maxOffsetsize, maxOffsetsizeParent, true);\r\n\r\n return supportsMin && supportsMax;\r\n};\r\n\r\nconst getWindowDPR = (): number => {\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n const dDPI = window.screen.deviceXDPI || 0;\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n const sDPI = window.screen.logicalXDPI || 1;\r\n return window.devicePixelRatio || dDPI / sDPI;\r\n};\r\n\r\n// init function decides for all values\r\nconst getDefaultInitializationStrategy = (\r\n nativeScrollbarStyling: boolean\r\n): InitializationStrategy => ({\r\n _host: null,\r\n _viewport: null,\r\n _padding: null,\r\n _content: null,\r\n _scrollbarsSlot: null,\r\n});\r\n\r\nconst createEnvironment = (): Environment => {\r\n const { body } = document;\r\n const envDOM = createDOM(`
`);\r\n const envElm = envDOM[0] as HTMLElement;\r\n const envChildElm = envElm.firstChild as HTMLElement;\r\n const onChangedListener: Set = new Set();\r\n const nativeScrollbarSize = getNativeScrollbarSize(body, envElm);\r\n const nativeScrollbarStyling = getNativeScrollbarStyling(envElm);\r\n const nativeScrollbarIsOverlaid = {\r\n x: nativeScrollbarSize.x === 0,\r\n y: nativeScrollbarSize.y === 0,\r\n };\r\n const defaultInitializationStrategy = getDefaultInitializationStrategy(nativeScrollbarStyling);\r\n let initializationStrategy = defaultInitializationStrategy;\r\n let defaultDefaultOptions = defaultOptions;\r\n\r\n const env: Environment = {\r\n _nativeScrollbarSize: nativeScrollbarSize,\r\n _nativeScrollbarIsOverlaid: nativeScrollbarIsOverlaid,\r\n _nativeScrollbarStyling: nativeScrollbarStyling,\r\n _cssCustomProperties: style(envElm, 'zIndex') === '-1',\r\n _rtlScrollBehavior: getRtlScrollBehavior(envElm, envChildElm),\r\n _flexboxGlue: getFlexboxGlue(envElm, envChildElm),\r\n _addListener(listener: OnEnvironmentChanged): void {\r\n onChangedListener.add(listener);\r\n },\r\n _removeListener(listener: OnEnvironmentChanged): void {\r\n onChangedListener.delete(listener);\r\n },\r\n _getInitializationStrategy: () => ({ ...initializationStrategy }),\r\n _setInitializationStrategy(newInitializationStrategy) {\r\n initializationStrategy = assignDeep({}, initializationStrategy, newInitializationStrategy);\r\n },\r\n _getDefaultOptions: () => ({ ...defaultDefaultOptions }),\r\n _setDefaultOptions(newDefaultOptions) {\r\n defaultDefaultOptions = assignDeep({}, defaultDefaultOptions, newDefaultOptions);\r\n },\r\n _defaultInitializationStrategy: defaultInitializationStrategy,\r\n _defaultDefaultOptions: defaultDefaultOptions,\r\n };\r\n\r\n removeAttr(envElm, 'style');\r\n removeElements(envElm);\r\n\r\n if (!nativeScrollbarStyling && (!nativeScrollbarIsOverlaid.x || !nativeScrollbarIsOverlaid.y)) {\r\n let size = windowSize();\r\n let dpr = getWindowDPR();\r\n let scrollbarSize = nativeScrollbarSize;\r\n\r\n window.addEventListener('resize', () => {\r\n if (onChangedListener.size) {\r\n const sizeNew = windowSize();\r\n const deltaSize = {\r\n w: sizeNew.w - size.w,\r\n h: sizeNew.h - size.h,\r\n };\r\n\r\n if (deltaSize.w === 0 && deltaSize.h === 0) return;\r\n\r\n const deltaAbsSize = {\r\n w: abs(deltaSize.w),\r\n h: abs(deltaSize.h),\r\n };\r\n const deltaAbsRatio = {\r\n w: abs(round(sizeNew.w / (size.w / 100.0))),\r\n h: abs(round(sizeNew.h / (size.h / 100.0))),\r\n };\r\n const dprNew = getWindowDPR();\r\n const deltaIsBigger = deltaAbsSize.w > 2 && deltaAbsSize.h > 2;\r\n const difference = !diffBiggerThanOne(deltaAbsRatio.w, deltaAbsRatio.h);\r\n const dprChanged = dprNew !== dpr && dpr > 0;\r\n const isZoom = deltaIsBigger && difference && dprChanged;\r\n\r\n if (isZoom) {\r\n const newScrollbarSize = (environmentInstance._nativeScrollbarSize =\r\n getNativeScrollbarSize(body, envElm));\r\n removeElements(envElm);\r\n\r\n if (scrollbarSize.x !== newScrollbarSize.x || scrollbarSize.y !== newScrollbarSize.y) {\r\n runEach(onChangedListener);\r\n }\r\n\r\n scrollbarSize = newScrollbarSize;\r\n }\r\n\r\n size = sizeNew;\r\n dpr = dprNew;\r\n }\r\n });\r\n }\r\n\r\n return env;\r\n};\r\n\r\nexport const getEnvironment = (): Environment => {\r\n if (!environmentInstance) {\r\n environmentInstance = createEnvironment();\r\n }\r\n return environmentInstance;\r\n};\r\n","import {\r\n isHTMLElement,\r\n appendChildren,\r\n is,\r\n createDiv,\r\n contents,\r\n insertAfter,\r\n addClass,\r\n parent,\r\n indexOf,\r\n removeElements,\r\n removeClass,\r\n push,\r\n runEach,\r\n insertBefore,\r\n attr,\r\n isBoolean,\r\n isFunction,\r\n keys,\r\n} from 'support';\r\nimport {\r\n classNameHost,\r\n classNamePadding,\r\n classNameViewport,\r\n classNameViewportArrange,\r\n classNameContent,\r\n classNameViewportScrollbarStyling,\r\n} from 'classnames';\r\nimport {\r\n getEnvironment,\r\n StructureInitializationStaticElement,\r\n StructureInitializationDynamicElement,\r\n StructureInitializationStrategy,\r\n} from 'environment';\r\nimport { OSTarget, OSTargetElement, StructureInitialization } from 'typings';\r\n\r\nexport interface OSTargetContext {\r\n _isTextarea: boolean;\r\n _isBody: boolean;\r\n _htmlElm: HTMLHtmlElement;\r\n _bodyElm: HTMLBodyElement;\r\n _windowElm: Window;\r\n _documentElm: HTMLDocument;\r\n _targetIsElm: boolean;\r\n}\r\n\r\nexport interface PreparedOSTargetObject {\r\n _target: OSTargetElement;\r\n _host: HTMLElement;\r\n _viewport: HTMLElement;\r\n _padding: HTMLElement | false;\r\n _content: HTMLElement | false;\r\n _viewportArrange: HTMLStyleElement | false;\r\n}\r\n\r\nexport interface StructureSetup {\r\n _targetObj: PreparedOSTargetObject;\r\n _targetCtx: OSTargetContext;\r\n _destroy: () => void;\r\n}\r\n\r\nlet contentArrangeCounter = 0;\r\n\r\nconst unwrap = (elm: HTMLElement | false | null | undefined) => {\r\n appendChildren(parent(elm), contents(elm));\r\n removeElements(elm);\r\n};\r\n\r\nconst createUniqueViewportArrangeElement = (): HTMLStyleElement | false => {\r\n const { _nativeScrollbarStyling, _nativeScrollbarIsOverlaid, _cssCustomProperties } =\r\n getEnvironment();\r\n /* istanbul ignore next */\r\n const create =\r\n !_cssCustomProperties &&\r\n !_nativeScrollbarStyling &&\r\n (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);\r\n const result = create ? document.createElement('style') : false;\r\n\r\n if (result) {\r\n attr(result, 'id', `${classNameViewportArrange}-${contentArrangeCounter}`);\r\n contentArrangeCounter++;\r\n }\r\n\r\n return result;\r\n};\r\n\r\nconst staticCreationFromStrategy = (\r\n target: OSTargetElement,\r\n initializationValue: HTMLElement | undefined,\r\n strategy: StructureInitializationStaticElement,\r\n elementClass: string\r\n): HTMLElement => {\r\n const result =\r\n initializationValue || (isFunction(strategy) ? strategy(target) : (strategy as null));\r\n return result || createDiv(elementClass);\r\n};\r\n\r\nconst dynamicCreationFromStrategy = (\r\n target: OSTargetElement,\r\n initializationValue: HTMLElement | boolean | undefined,\r\n strategy: StructureInitializationDynamicElement,\r\n elementClass: string,\r\n defaultValue: boolean\r\n): HTMLElement | false => {\r\n const takeInitializationValue = isBoolean(initializationValue) || initializationValue;\r\n const result = takeInitializationValue\r\n ? (initializationValue as boolean | HTMLElement)\r\n : isFunction(strategy)\r\n ? strategy(target)\r\n : strategy;\r\n\r\n if (result === null) {\r\n return defaultValue ? createDiv(elementClass) : false;\r\n }\r\n\r\n return result === true ? createDiv(elementClass) : result;\r\n};\r\n\r\nexport const createStructureSetup = (\r\n target: OSTarget | StructureInitialization\r\n): StructureSetup => {\r\n const { _getInitializationStrategy, _nativeScrollbarStyling } = getEnvironment();\r\n const {\r\n _host: hostInitializationStrategy,\r\n _viewport: viewportInitializationStrategy,\r\n _padding: paddingInitializationStrategy,\r\n _content: contentInitializationStrategy,\r\n } = _getInitializationStrategy() as StructureInitializationStrategy;\r\n const targetIsElm = isHTMLElement(target);\r\n const targetStructureInitialization = target as StructureInitialization;\r\n const targetElement = targetIsElm\r\n ? (target as OSTargetElement)\r\n : targetStructureInitialization.target;\r\n const isTextarea = is(targetElement, 'textarea');\r\n const isBody = !isTextarea && is(targetElement, 'body');\r\n const ownerDocument: HTMLDocument = targetElement!.ownerDocument;\r\n const bodyElm = ownerDocument.body as HTMLBodyElement;\r\n const wnd = ownerDocument.defaultView as Window;\r\n const evaluatedTargetObj: PreparedOSTargetObject = {\r\n _target: targetElement,\r\n _host: isTextarea\r\n ? staticCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.host,\r\n hostInitializationStrategy,\r\n classNameHost\r\n )\r\n : (targetElement as HTMLElement),\r\n _viewport: staticCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.viewport,\r\n viewportInitializationStrategy,\r\n classNameViewport\r\n ),\r\n _padding: dynamicCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.padding,\r\n paddingInitializationStrategy,\r\n classNamePadding,\r\n !_nativeScrollbarStyling // default value for padding\r\n ),\r\n _content: dynamicCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.content,\r\n contentInitializationStrategy,\r\n classNameContent,\r\n false // default value for content\r\n ),\r\n _viewportArrange: createUniqueViewportArrangeElement(),\r\n };\r\n const ctx: OSTargetContext = {\r\n _windowElm: wnd,\r\n _documentElm: ownerDocument,\r\n _htmlElm: parent(bodyElm) as HTMLHtmlElement,\r\n _bodyElm: bodyElm,\r\n _isTextarea: isTextarea,\r\n _isBody: isBody,\r\n _targetIsElm: targetIsElm,\r\n };\r\n const generatedElements = keys(evaluatedTargetObj).reduce((arr, key: string) => {\r\n const value = evaluatedTargetObj[key];\r\n return push(arr, value && !parent(value) ? value : false);\r\n }, [] as HTMLElement[]);\r\n const elementIsGenerated = (elm: HTMLElement | false) =>\r\n elm ? indexOf(generatedElements, elm) > -1 : null;\r\n const { _target, _host, _padding, _viewport, _content, _viewportArrange } = evaluatedTargetObj;\r\n const destroyFns: (() => any)[] = [];\r\n const isTextareaHostGenerated = isTextarea && elementIsGenerated(_host);\r\n const targetContents = isTextarea\r\n ? _target\r\n : contents(\r\n [_content, _viewport, _padding, _host, _target].find(\r\n (elm) => elementIsGenerated(elm) === false\r\n )\r\n );\r\n const contentSlot = _content || _viewport;\r\n\r\n // only insert host for textarea after target if it was generated\r\n if (isTextareaHostGenerated) {\r\n insertAfter(_target, _host);\r\n\r\n push(destroyFns, () => {\r\n insertAfter(_host, _target);\r\n removeElements(_host);\r\n });\r\n }\r\n\r\n appendChildren(contentSlot, targetContents);\r\n appendChildren(_host, _padding);\r\n appendChildren(_padding || _host, _viewport);\r\n appendChildren(_viewport, _content);\r\n\r\n addClass(_host, classNameHost);\r\n addClass(_padding, classNamePadding);\r\n addClass(_viewport, classNameViewport);\r\n addClass(_content, classNameContent);\r\n\r\n push(destroyFns, () => {\r\n if (targetIsElm) {\r\n appendChildren(_host, contents(contentSlot));\r\n removeElements(_padding || _viewport);\r\n removeClass(_host, classNameHost);\r\n } else {\r\n if (elementIsGenerated(_content)) {\r\n unwrap(_content);\r\n }\r\n if (elementIsGenerated(_viewport)) {\r\n unwrap(_viewport);\r\n }\r\n if (elementIsGenerated(_padding)) {\r\n unwrap(_padding);\r\n }\r\n removeClass(_host, classNameHost);\r\n removeClass(_padding, classNamePadding);\r\n removeClass(_viewport, classNameViewport);\r\n removeClass(_content, classNameContent);\r\n }\r\n });\r\n\r\n if (_nativeScrollbarStyling) {\r\n push(destroyFns, removeClass.bind(0, _viewport, classNameViewportScrollbarStyling));\r\n }\r\n if (_viewportArrange) {\r\n insertBefore(_viewport, _viewportArrange);\r\n push(destroyFns, removeElements.bind(0, _viewportArrange));\r\n }\r\n\r\n return {\r\n _targetObj: evaluatedTargetObj,\r\n _targetCtx: ctx,\r\n _destroy: () => {\r\n runEach(destroyFns);\r\n },\r\n };\r\n};\r\n","import { appendChildren, createDiv, removeElements, isFunction } from 'support';\r\nimport {\r\n classNameScrollbar,\r\n classNameScrollbarHorizontal,\r\n classNameScrollbarVertical,\r\n classNameScrollbarTrack,\r\n classNameScrollbarHandle,\r\n} from 'classnames';\r\nimport { getEnvironment, ScrollbarsInitializationStrategy } from 'environment';\r\nimport { OSTarget, ScrollbarsInitialization } from 'typings';\r\nimport { StructureSetup } from 'setups/structureSetup';\r\n\r\nexport interface ScrollbarStructure {\r\n _scrollbar: HTMLElement;\r\n _track: HTMLElement;\r\n _handle: HTMLElement;\r\n}\r\n\r\nexport interface ScrollbarsSetup {\r\n _horizontalScrollbarStructure: ScrollbarStructure;\r\n _verticalScrollbarStructure: ScrollbarStructure;\r\n _destroy: () => void;\r\n}\r\n\r\nconst generateScrollbarDOM = (scrollbarClassName: string): ScrollbarStructure => {\r\n const scrollbar = createDiv(`${classNameScrollbar} ${scrollbarClassName}`);\r\n const track = createDiv(classNameScrollbarTrack);\r\n const handle = createDiv(classNameScrollbarHandle);\r\n\r\n appendChildren(scrollbar, track);\r\n appendChildren(track, handle);\r\n\r\n return {\r\n _scrollbar: scrollbar,\r\n _track: track,\r\n _handle: handle,\r\n };\r\n};\r\n\r\nexport const createScrollbarsSetup = (target: OSTarget | ScrollbarsInitialization, structureSetup: StructureSetup): ScrollbarsSetup => {\r\n const { _getInitializationStrategy } = getEnvironment();\r\n const { _scrollbarsSlot: environmentScrollbarSlot } = _getInitializationStrategy() as ScrollbarsInitializationStrategy;\r\n const { _targetObj, _targetCtx } = structureSetup;\r\n const { _target, _host, _viewport } = _targetObj;\r\n const initializationScrollbarSlot = !_targetCtx._targetIsElm && (target as ScrollbarsInitialization).scrollbarsSlot;\r\n const initializationScrollbarSlotResult = isFunction(initializationScrollbarSlot)\r\n ? initializationScrollbarSlot(_target, _host, _viewport)\r\n : initializationScrollbarSlot;\r\n const evaluatedScrollbarSlot =\r\n initializationScrollbarSlotResult ||\r\n (isFunction(environmentScrollbarSlot) ? environmentScrollbarSlot(_target, _host, _viewport) : environmentScrollbarSlot) ||\r\n _host;\r\n\r\n const horizontalScrollbarStructure = generateScrollbarDOM(classNameScrollbarHorizontal);\r\n const verticalScrollbarStructure = generateScrollbarDOM(classNameScrollbarVertical);\r\n\r\n const { _scrollbar: horizontalScrollbar } = horizontalScrollbarStructure;\r\n const { _scrollbar: verticalScrollbar } = verticalScrollbarStructure;\r\n\r\n appendChildren(evaluatedScrollbarSlot, horizontalScrollbar);\r\n appendChildren(evaluatedScrollbarSlot, verticalScrollbar);\r\n\r\n return {\r\n _horizontalScrollbarStructure: horizontalScrollbarStructure,\r\n _verticalScrollbarStructure: verticalScrollbarStructure,\r\n _destroy() {\r\n removeElements([horizontalScrollbar, verticalScrollbar]);\r\n },\r\n };\r\n};\r\n","import {\r\n Cache,\r\n CacheValues,\r\n createCache,\r\n createDOM,\r\n style,\r\n appendChildren,\r\n offsetSize,\r\n scrollLeft,\r\n scrollTop,\r\n runEach,\r\n prependChildren,\r\n removeElements,\r\n on,\r\n stopAndPrevent,\r\n addClass,\r\n equalWH,\r\n push,\r\n cAF,\r\n rAF,\r\n ResizeObserverConstructor,\r\n isArray,\r\n isBoolean,\r\n removeClass,\r\n isObject,\r\n} from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport {\r\n classNameSizeObserver,\r\n classNameSizeObserverAppear,\r\n classNameSizeObserverListener,\r\n classNameSizeObserverListenerScroll,\r\n classNameSizeObserverListenerItem,\r\n classNameSizeObserverListenerItemFinal,\r\n} from 'classnames';\r\n\r\nexport interface SizeObserverOptions {\r\n _direction?: boolean;\r\n _appear?: boolean;\r\n}\r\n\r\nexport interface SizeObserverCallbackParams {\r\n _sizeChanged: boolean;\r\n _directionIsRTLCache?: CacheValues;\r\n _appear?: boolean;\r\n}\r\n\r\nexport type DestroySizeObserver = () => void;\r\n\r\nconst animationStartEventName = 'animationstart';\r\nconst scrollEventName = 'scroll';\r\nconst scrollAmount = 3333333;\r\nconst getElmDirectionIsRTL = (elm: HTMLElement): boolean => style(elm, 'direction') === 'rtl';\r\nconst domRectHasDimensions = (rect?: DOMRectReadOnly) => rect && (rect.height || rect.width);\r\n\r\n/**\r\n * Creates a size observer which observes any size, padding, border, margin and box-sizing changes of the target element. Depending on the options also direction and appear can be observed.\r\n * @param target The target element which shall be observed.\r\n * @param onSizeChangedCallback The callback which gets called after a size change was detected.\r\n * @param options The options for size detection, whether to observe also direction and appear.\r\n * @returns A object which represents the instance of the size observer.\r\n */\r\nexport const createSizeObserver = (\r\n target: HTMLElement,\r\n onSizeChangedCallback: (params: SizeObserverCallbackParams) => any,\r\n options?: SizeObserverOptions\r\n): DestroySizeObserver => {\r\n const { _direction: observeDirectionChange = false, _appear: observeAppearChange = false } =\r\n options || {};\r\n const { _rtlScrollBehavior: rtlScrollBehavior } = getEnvironment();\r\n const baseElements = createDOM(\r\n `
`\r\n );\r\n const sizeObserver = baseElements[0] as HTMLElement;\r\n const listenerElement = sizeObserver.firstChild as HTMLElement;\r\n const getIsDirectionRTL = getElmDirectionIsRTL.bind(0, sizeObserver);\r\n const [updateResizeObserverContentRectCache] = createCache({\r\n _initialValue: undefined,\r\n _alwaysUpdateValues: true,\r\n _equal: (currVal, newVal) =>\r\n !(\r\n !currVal || // if no initial value\r\n // if from display: none to display: block\r\n (!domRectHasDimensions(currVal) && domRectHasDimensions(newVal))\r\n ),\r\n });\r\n const onSizeChangedCallbackProxy = (\r\n sizeChangedContext?: CacheValues | ResizeObserverEntry[] | Event | boolean\r\n ) => {\r\n const isResizeObserverCall =\r\n isArray(sizeChangedContext) &&\r\n sizeChangedContext.length > 0 &&\r\n isObject(sizeChangedContext[0]);\r\n\r\n const hasDirectionCache =\r\n !isResizeObserverCall && isBoolean((sizeChangedContext as CacheValues)[0]);\r\n\r\n let skip = false;\r\n let appear: boolean | number | undefined = false;\r\n let doDirectionScroll = true; // always true if sizeChangedContext is Event (appear callback or RO. Polyfill)\r\n\r\n // if triggered from RO.\r\n if (isResizeObserverCall) {\r\n const [currRContentRect, , prevContentRect] = updateResizeObserverContentRectCache(\r\n (sizeChangedContext as ResizeObserverEntry[]).pop()!.contentRect\r\n );\r\n const hasDimensions = domRectHasDimensions(currRContentRect);\r\n const hadDimensions = domRectHasDimensions(prevContentRect);\r\n skip = !prevContentRect || !hasDimensions; // skip on initial RO. call or if display is none\r\n appear = !hadDimensions && hasDimensions;\r\n\r\n doDirectionScroll = !skip; // direction scroll when not skipping\r\n }\r\n // else if its triggered with DirectionCache\r\n else if (hasDirectionCache) {\r\n [, doDirectionScroll] = sizeChangedContext as CacheValues; // direction scroll when DirectionCache changed, false otherwise\r\n }\r\n // else if it triggered with appear from polyfill\r\n else {\r\n appear = sizeChangedContext === true;\r\n }\r\n\r\n if (observeDirectionChange && doDirectionScroll) {\r\n const rtl = hasDirectionCache\r\n ? (sizeChangedContext as CacheValues)[0]\r\n : getElmDirectionIsRTL(sizeObserver);\r\n scrollLeft(\r\n sizeObserver,\r\n rtl\r\n ? rtlScrollBehavior.n\r\n ? -scrollAmount\r\n : rtlScrollBehavior.i\r\n ? 0\r\n : scrollAmount\r\n : scrollAmount\r\n );\r\n scrollTop(sizeObserver, scrollAmount);\r\n }\r\n\r\n if (!skip) {\r\n onSizeChangedCallback({\r\n _sizeChanged: !hasDirectionCache,\r\n _directionIsRTLCache: hasDirectionCache\r\n ? (sizeChangedContext as CacheValues)\r\n : undefined,\r\n _appear: !!appear,\r\n });\r\n }\r\n };\r\n const offListeners: (() => void)[] = [];\r\n let appearCallback: ((...args: any) => any) | false = observeAppearChange\r\n ? onSizeChangedCallbackProxy\r\n : false;\r\n let directionIsRTLCache: Cache | undefined;\r\n\r\n if (ResizeObserverConstructor) {\r\n const resizeObserverInstance = new ResizeObserverConstructor(onSizeChangedCallbackProxy);\r\n resizeObserverInstance.observe(listenerElement);\r\n push(offListeners, () => {\r\n resizeObserverInstance.disconnect();\r\n });\r\n } else {\r\n const observerElementChildren = createDOM(\r\n `
`\r\n );\r\n appendChildren(listenerElement, observerElementChildren);\r\n addClass(listenerElement, classNameSizeObserverListenerScroll);\r\n const observerElementChildrenRoot = observerElementChildren[0] as HTMLElement;\r\n const shrinkElement = observerElementChildrenRoot.lastChild as HTMLElement;\r\n const expandElement = observerElementChildrenRoot.firstChild as HTMLElement;\r\n const expandElementChild = expandElement?.firstChild as HTMLElement;\r\n\r\n let cacheSize = offsetSize(observerElementChildrenRoot);\r\n let currSize = cacheSize;\r\n let isDirty = false;\r\n let rAFId: number;\r\n\r\n const reset = () => {\r\n scrollLeft(expandElement, scrollAmount);\r\n scrollTop(expandElement, scrollAmount);\r\n scrollLeft(shrinkElement, scrollAmount);\r\n scrollTop(shrinkElement, scrollAmount);\r\n };\r\n const onResized = (appear?: unknown) => {\r\n rAFId = 0;\r\n if (isDirty) {\r\n cacheSize = currSize;\r\n onSizeChangedCallbackProxy(appear === true);\r\n }\r\n };\r\n const onScroll = (scrollEvent?: Event | false) => {\r\n currSize = offsetSize(observerElementChildrenRoot);\r\n isDirty = !scrollEvent || !equalWH(currSize, cacheSize);\r\n\r\n if (scrollEvent) {\r\n stopAndPrevent(scrollEvent);\r\n\r\n if (isDirty && !rAFId) {\r\n cAF!(rAFId);\r\n rAFId = rAF!(onResized);\r\n }\r\n } else {\r\n onResized(scrollEvent === false);\r\n }\r\n\r\n reset();\r\n };\r\n\r\n push(offListeners, [\r\n on(expandElement, scrollEventName, onScroll),\r\n on(shrinkElement, scrollEventName, onScroll),\r\n ]);\r\n\r\n // lets assume that the divs will never be that large and a constant value is enough\r\n style(expandElementChild, {\r\n width: scrollAmount,\r\n height: scrollAmount,\r\n });\r\n\r\n reset();\r\n\r\n appearCallback = observeAppearChange ? onScroll.bind(0, false) : reset;\r\n }\r\n\r\n if (observeDirectionChange) {\r\n directionIsRTLCache = createCache(\r\n {\r\n _initialValue: !getIsDirectionRTL(), // invert current value to trigger initial change\r\n },\r\n getIsDirectionRTL\r\n );\r\n const [updateDirectionIsRTLCache] = directionIsRTLCache;\r\n\r\n push(\r\n offListeners,\r\n on(sizeObserver, scrollEventName, (event: Event) => {\r\n const directionIsRTLCacheValues = updateDirectionIsRTLCache();\r\n const [directionIsRTL, directionIsRTLChanged] = directionIsRTLCacheValues;\r\n\r\n if (directionIsRTLChanged) {\r\n removeClass(listenerElement, 'ltr rtl');\r\n if (directionIsRTL) {\r\n addClass(listenerElement, 'rtl');\r\n } else {\r\n addClass(listenerElement, 'ltr');\r\n }\r\n onSizeChangedCallbackProxy(directionIsRTLCacheValues);\r\n }\r\n\r\n stopAndPrevent(event);\r\n })\r\n );\r\n }\r\n\r\n // appearCallback is always needed on scroll-observer strategy to reset it\r\n if (appearCallback) {\r\n addClass(sizeObserver, classNameSizeObserverAppear);\r\n push(\r\n offListeners,\r\n on(sizeObserver, animationStartEventName, appearCallback, {\r\n // Fire only once for \"CSS is ready\" event if ResizeObserver strategy is used\r\n _once: !!ResizeObserverConstructor,\r\n })\r\n );\r\n }\r\n\r\n prependChildren(target, sizeObserver);\r\n\r\n return () => {\r\n runEach(offListeners);\r\n removeElements(sizeObserver);\r\n };\r\n};\r\n","import {\r\n WH,\r\n CacheValues,\r\n createDiv,\r\n offsetSize,\r\n runEach,\r\n prependChildren,\r\n removeElements,\r\n createCache,\r\n push,\r\n IntersectionObserverConstructor,\r\n} from 'support';\r\nimport { createSizeObserver } from 'observers/sizeObserver';\r\nimport { classNameTrinsicObserver } from 'classnames';\r\n\r\nexport type DestroyTrinsicObserver = () => void;\r\n\r\nconst isHeightIntrinsic = (ioEntryOrSize: IntersectionObserverEntry | WH): boolean =>\r\n (ioEntryOrSize as WH).h === 0 ||\r\n (ioEntryOrSize as IntersectionObserverEntry).isIntersecting ||\r\n (ioEntryOrSize as IntersectionObserverEntry).intersectionRatio > 0;\r\n\r\n/**\r\n * Creates a trinsic observer which observes changes to intrinsic or extrinsic sizing for the height of the target element.\r\n * @param target The element which shall be observed.\r\n * @param onTrinsicChangedCallback The callback which gets called after a change was detected.\r\n * @returns A object which represents the instance of the trinsic observer.\r\n */\r\nexport const createTrinsicObserver = (\r\n target: HTMLElement,\r\n onTrinsicChangedCallback: (heightIntrinsic: CacheValues) => any\r\n): DestroyTrinsicObserver => {\r\n const trinsicObserver = createDiv(classNameTrinsicObserver);\r\n const offListeners: (() => void)[] = [];\r\n const [updateHeightIntrinsicCache] = createCache({\r\n _initialValue: false,\r\n });\r\n\r\n const triggerOnTrinsicChangedCallback = (\r\n updateValue?: IntersectionObserverEntry | WH\r\n ) => {\r\n if (updateValue) {\r\n const heightIntrinsic = updateHeightIntrinsicCache(isHeightIntrinsic(updateValue));\r\n const [, heightIntrinsicChanged] = heightIntrinsic;\r\n\r\n if (heightIntrinsicChanged) {\r\n onTrinsicChangedCallback(heightIntrinsic);\r\n }\r\n }\r\n };\r\n\r\n if (IntersectionObserverConstructor) {\r\n const intersectionObserverInstance: IntersectionObserver = new IntersectionObserverConstructor(\r\n (entries: IntersectionObserverEntry[]) => {\r\n if (entries && entries.length > 0) {\r\n triggerOnTrinsicChangedCallback(entries.pop());\r\n }\r\n },\r\n { root: target }\r\n );\r\n intersectionObserverInstance.observe(trinsicObserver);\r\n push(offListeners, () => {\r\n intersectionObserverInstance.disconnect();\r\n });\r\n } else {\r\n const onSizeChanged = () => {\r\n const newSize = offsetSize(trinsicObserver);\r\n triggerOnTrinsicChangedCallback(newSize);\r\n };\r\n push(offListeners, createSizeObserver(trinsicObserver, onSizeChanged));\r\n onSizeChanged();\r\n }\r\n\r\n prependChildren(target, trinsicObserver);\r\n\r\n return () => {\r\n runEach(offListeners);\r\n removeElements(trinsicObserver);\r\n };\r\n};\r\n","import {\r\n each,\r\n noop,\r\n debounce,\r\n indexOf,\r\n isString,\r\n MutationObserverConstructor,\r\n isEmptyArray,\r\n on,\r\n attr,\r\n is,\r\n find,\r\n push,\r\n} from 'support';\r\n\r\ntype DOMContentObserverCallback = (contentChangedTroughEvent: boolean) => any;\r\n\r\ntype DOMTargetObserverCallback = (targetChangedAttrs: string[], targetStyleChanged: boolean) => any;\r\n\r\ninterface DOMObserverOptionsBase {\r\n _attributes?: string[];\r\n _styleChangingAttributes?: string[];\r\n}\r\n\r\ninterface DOMContentObserverOptions extends DOMObserverOptionsBase {\r\n _eventContentChange?: DOMObserverEventContentChange; // [selector, eventname(s) | function returning eventname(s)] -> eventnames divided by whitespaces\r\n _nestedTargetSelector?: string;\r\n _ignoreContentChange?: DOMObserverIgnoreContentChange; // function which will prevent marking certain dom changes as content change if it returns true\r\n _ignoreNestedTargetChange?: DOMObserverIgnoreTargetChange; // a function which will prevent marking certain attributes as changed on nested targets if it returns true\r\n}\r\n\r\ninterface DOMTargetObserverOptions extends DOMObserverOptionsBase {\r\n _ignoreTargetChange?: DOMObserverIgnoreTargetChange; // a function which will prevent marking certain attributes as changed if it returns true\r\n}\r\n\r\ntype ContentChangeArrayItem = [string?, string?] | null | undefined;\r\n\r\nexport type DOMObserverEventContentChange =\r\n | Array\r\n | false\r\n | null\r\n | undefined;\r\n\r\nexport type DOMObserverIgnoreContentChange = (\r\n mutation: MutationRecord,\r\n isNestedTarget: boolean,\r\n domObserverTarget: HTMLElement,\r\n domObserverOptions?: DOMContentObserverOptions\r\n) => boolean;\r\n\r\nexport type DOMObserverIgnoreTargetChange = (\r\n target: Node,\r\n attributeName: string,\r\n oldAttributeValue: string | null,\r\n newAttributeValue: string | null\r\n) => boolean;\r\n\r\nexport type DOMObserverCallback = ContentObserver extends true\r\n ? DOMContentObserverCallback\r\n : DOMTargetObserverCallback;\r\n\r\nexport type DOMObserverOptions = ContentObserver extends true\r\n ? DOMContentObserverOptions\r\n : DOMTargetObserverOptions;\r\n\r\nexport interface DOMObserver {\r\n _destroy: () => void;\r\n _update: () => void;\r\n}\r\n\r\n/**\r\n * Creates a set of helper functions to observe events of elements inside the target element.\r\n * @param target The target element of which the children elements shall be observed. (not only direct children but also nested ones)\r\n * @param eventContentChange The event content change array. (array of tuples: selector and eventname(s))\r\n * @param callback Callback which is called if one of the elements emits the corresponding event.\r\n * @returns A object which contains a set of helper functions to destroy and update the observation of elements.\r\n */\r\nconst createEventContentChange = (\r\n target: Element,\r\n callback: (...args: any) => any,\r\n eventContentChange?: DOMObserverEventContentChange\r\n) => {\r\n let map: WeakMap any]> | undefined; // weak map to prevent memory leak for detached elements\r\n let destroyed = false;\r\n const _destroy = () => {\r\n destroyed = true;\r\n };\r\n const _updateElements = (getElements?: (selector: string) => Node[]) => {\r\n if (eventContentChange) {\r\n const eventElmList = eventContentChange.reduce>((arr, item) => {\r\n if (item) {\r\n const selector = item[0];\r\n const eventNames = item[1];\r\n const elements =\r\n eventNames &&\r\n selector &&\r\n (getElements ? getElements(selector) : find(selector, target));\r\n\r\n if (elements && elements.length && eventNames && isString(eventNames)) {\r\n push(arr, [elements, eventNames.trim()], true);\r\n }\r\n }\r\n return arr;\r\n }, []);\r\n\r\n each(eventElmList, (item) =>\r\n each(item[0], (elm) => {\r\n const eventNames = item[1];\r\n const entry = map!.get(elm);\r\n\r\n if (entry) {\r\n const entryEventNames = entry[0];\r\n const entryOff = entry[1];\r\n\r\n // in case an already registered element is registered again, unregister the previous events\r\n if (entryEventNames === eventNames) {\r\n entryOff();\r\n }\r\n }\r\n\r\n const off = on(elm, eventNames, (event: Event) => {\r\n if (destroyed) {\r\n off();\r\n map!.delete(elm);\r\n } else {\r\n callback(event);\r\n }\r\n });\r\n map!.set(elm, [eventNames, off]);\r\n })\r\n );\r\n }\r\n };\r\n\r\n if (eventContentChange) {\r\n map = new WeakMap();\r\n _updateElements();\r\n }\r\n\r\n return {\r\n _destroy,\r\n _updateElements,\r\n };\r\n};\r\n\r\n/**\r\n * Creates a DOM observer which observes DOM changes to either the target element or its children.\r\n * @param target The element which shall be observed.\r\n * @param isContentObserver Whether this observer is just observing the target or just the targets children. (not only direct children but also nested ones)\r\n * @param callback The callback which gets called if a change was detected.\r\n * @param options The options for DOM change detection.\r\n * @returns A object which represents the instance of the DOM observer.\r\n */\r\nexport const createDOMObserver = (\r\n target: HTMLElement,\r\n isContentObserver: ContentObserver,\r\n callback: DOMObserverCallback,\r\n options?: DOMObserverOptions\r\n): DOMObserver => {\r\n let isConnected = false;\r\n const {\r\n _attributes,\r\n _styleChangingAttributes,\r\n _eventContentChange,\r\n _nestedTargetSelector,\r\n _ignoreTargetChange,\r\n _ignoreNestedTargetChange,\r\n _ignoreContentChange,\r\n } = (options as DOMContentObserverOptions & DOMTargetObserverOptions) || {};\r\n const {\r\n _destroy: destroyEventContentChange,\r\n _updateElements: updateEventContentChangeElements,\r\n } = createEventContentChange(\r\n target,\r\n debounce(\r\n () => {\r\n if (isConnected) {\r\n (callback as DOMContentObserverCallback)(true);\r\n }\r\n },\r\n { _timeout: 33, _maxDelay: 99 }\r\n ),\r\n _eventContentChange\r\n );\r\n\r\n // MutationObserver\r\n const finalAttributes = _attributes || [];\r\n const finalStyleChangingAttributes = _styleChangingAttributes || [];\r\n const observedAttributes = finalAttributes.concat(finalStyleChangingAttributes);\r\n const observerCallback = (mutations: MutationRecord[]) => {\r\n const ignoreTargetChange =\r\n (isContentObserver ? _ignoreNestedTargetChange : _ignoreTargetChange) || noop;\r\n const ignoreContentChange = _ignoreContentChange || noop;\r\n const targetChangedAttrs: string[] = [];\r\n const totalAddedNodes: Node[] = [];\r\n let targetStyleChanged = false;\r\n let contentChanged = false;\r\n let childListChanged = false;\r\n each(mutations, (mutation) => {\r\n const { attributeName, target: mutationTarget, type, oldValue, addedNodes } = mutation;\r\n const isAttributesType = type === 'attributes';\r\n const isChildListType = type === 'childList';\r\n const targetIsMutationTarget = target === mutationTarget;\r\n const attributeValue =\r\n isAttributesType && isString(attributeName)\r\n ? attr(mutationTarget as HTMLElement, attributeName!)\r\n : 0;\r\n const attributeChanged = attributeValue !== 0 && oldValue !== attributeValue;\r\n const styleChangingAttrChanged =\r\n indexOf(finalStyleChangingAttributes, attributeName) > -1 && attributeChanged;\r\n\r\n // if is content observer and something changed in children\r\n if (isContentObserver && !targetIsMutationTarget) {\r\n const notOnlyAttrChanged = !isAttributesType;\r\n const contentAttrChanged = isAttributesType && styleChangingAttrChanged;\r\n const isNestedTarget =\r\n contentAttrChanged && _nestedTargetSelector && is(mutationTarget, _nestedTargetSelector);\r\n const baseAssertion = isNestedTarget\r\n ? !ignoreTargetChange(mutationTarget, attributeName!, oldValue, attributeValue)\r\n : notOnlyAttrChanged || contentAttrChanged;\r\n const contentFinalChanged =\r\n baseAssertion && !ignoreContentChange(mutation, !!isNestedTarget, target, options);\r\n\r\n push(totalAddedNodes, addedNodes);\r\n\r\n contentChanged = contentChanged || contentFinalChanged;\r\n childListChanged = childListChanged || isChildListType;\r\n }\r\n // if is target observer and target attr changed\r\n if (\r\n !isContentObserver &&\r\n targetIsMutationTarget &&\r\n attributeChanged &&\r\n !ignoreTargetChange(mutationTarget, attributeName!, oldValue, attributeValue)\r\n ) {\r\n push(targetChangedAttrs, attributeName!);\r\n targetStyleChanged = targetStyleChanged || styleChangingAttrChanged;\r\n }\r\n });\r\n\r\n if (childListChanged && !isEmptyArray(totalAddedNodes)) {\r\n // adds / removes the new elements from the event content change\r\n updateEventContentChangeElements((selector) =>\r\n totalAddedNodes.reduce((arr, node) => {\r\n push(arr, find(selector, node));\r\n return is(node, selector) ? push(arr, node) : arr;\r\n }, [])\r\n );\r\n }\r\n\r\n if (isContentObserver) {\r\n contentChanged && (callback as DOMContentObserverCallback)(false);\r\n } else if (!isEmptyArray(targetChangedAttrs) || targetStyleChanged) {\r\n (callback as DOMTargetObserverCallback)(targetChangedAttrs, targetStyleChanged);\r\n }\r\n };\r\n const mutationObserver: MutationObserver = new MutationObserverConstructor!(observerCallback);\r\n\r\n // Connect\r\n mutationObserver.observe(target, {\r\n attributes: true,\r\n attributeOldValue: true,\r\n attributeFilter: observedAttributes,\r\n subtree: isContentObserver,\r\n childList: isContentObserver,\r\n characterData: isContentObserver,\r\n });\r\n isConnected = true;\r\n\r\n return {\r\n _destroy: () => {\r\n if (isConnected) {\r\n destroyEventContentChange();\r\n mutationObserver.disconnect();\r\n isConnected = false;\r\n }\r\n },\r\n _update: () => {\r\n if (isConnected) {\r\n observerCallback(mutationObserver.takeRecords());\r\n }\r\n },\r\n };\r\n};\r\n","import {\r\n diffClass,\r\n debounce,\r\n isArray,\r\n isNumber,\r\n each,\r\n indexOf,\r\n isString,\r\n attr,\r\n removeAttr,\r\n CacheValues,\r\n} from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport { createSizeObserver, SizeObserverCallbackParams } from 'observers/sizeObserver';\r\nimport { createTrinsicObserver } from 'observers/trinsicObserver';\r\nimport { createDOMObserver, DOMObserver } from 'observers/domObserver';\r\nimport { LifecycleHub, LifecycleCheckOption, LifecycleUpdateHints } from 'lifecycles/lifecycleHub';\r\n\r\nexport type UpdateObserverOptions = (checkOption: LifecycleCheckOption) => void;\r\n\r\nexport type LifecycleHubObservers = [UpdateObserverOptions, () => void];\r\n\r\n// const hostSelector = `.${classNameHost}`;\r\n\r\n// TODO: observer textarea attrs if textarea\r\n// TODO: test _ignoreContentChange & _ignoreNestedTargetChange for content dom observer\r\n// TODO: test _ignoreTargetChange for target dom observer\r\n\r\n// const viewportSelector = `.${classNameViewport}`;\r\n// const contentSelector = `.${classNameContent}`;\r\nconst ignorePrefix = 'os-';\r\nconst viewportAttrsFromTarget = ['tabindex'];\r\nconst baseStyleChangingAttrsTextarea = ['wrap', 'cols', 'rows'];\r\nconst baseStyleChangingAttrs = ['id', 'class', 'style', 'open'];\r\n\r\nconst ignoreTargetChange = (\r\n target: Node,\r\n attrName: string,\r\n oldValue: string | null,\r\n newValue: string | null\r\n) => {\r\n if (attrName === 'class' && oldValue && newValue) {\r\n const diff = diffClass(oldValue, newValue);\r\n return !!diff.find((addedOrRemovedClass) => addedOrRemovedClass.indexOf(ignorePrefix) !== 0);\r\n }\r\n return false;\r\n};\r\n\r\nexport const lifecycleHubOservers = (\r\n instance: LifecycleHub,\r\n updateLifecycles: (updateHints: Partial) => unknown\r\n): LifecycleHubObservers => {\r\n let debounceTimeout: number | false | undefined;\r\n let debounceMaxDelay: number | false | undefined;\r\n let contentMutationObserver: DOMObserver | undefined;\r\n const { _structureSetup } = instance;\r\n const { _targetObj, _targetCtx } = _structureSetup;\r\n const { _host, _viewport, _content } = _targetObj;\r\n const { _isTextarea } = _targetCtx;\r\n const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment();\r\n const contentMutationObserverAttr = _isTextarea\r\n ? baseStyleChangingAttrsTextarea\r\n : baseStyleChangingAttrs.concat(baseStyleChangingAttrsTextarea);\r\n const updateLifecyclesWithDebouncedAdaptiveUpdateHints = debounce(updateLifecycles, {\r\n _timeout: () => debounceTimeout,\r\n _maxDelay: () => debounceMaxDelay,\r\n _mergeParams(prev, curr) {\r\n const {\r\n _sizeChanged: prevSizeChanged,\r\n _hostMutation: prevHostMutation,\r\n _contentMutation: prevContentMutation,\r\n } = prev[0];\r\n const {\r\n _sizeChanged: currSizeChanged,\r\n _hostMutation: currvHostMutation,\r\n _contentMutation: currContentMutation,\r\n } = curr[0];\r\n const merged: [Partial] = [\r\n {\r\n _sizeChanged: prevSizeChanged || currSizeChanged,\r\n _hostMutation: prevHostMutation || currvHostMutation,\r\n _contentMutation: prevContentMutation || currContentMutation,\r\n },\r\n ];\r\n\r\n return merged;\r\n },\r\n });\r\n\r\n const updateViewportAttrsFromHost = (attributes?: string[]) => {\r\n each(attributes || viewportAttrsFromTarget, (attribute) => {\r\n if (indexOf(viewportAttrsFromTarget, attribute) > -1) {\r\n const hostAttr = attr(_host, attribute);\r\n if (isString(hostAttr)) {\r\n attr(_viewport, attribute, hostAttr);\r\n } else {\r\n removeAttr(_viewport, attribute);\r\n }\r\n }\r\n });\r\n };\r\n const onTrinsicChanged = (heightIntrinsic: CacheValues) => {\r\n updateLifecycles({\r\n _heightIntrinsic: heightIntrinsic,\r\n });\r\n };\r\n const onSizeChanged = ({\r\n _sizeChanged,\r\n _directionIsRTLCache,\r\n _appear,\r\n }: SizeObserverCallbackParams) => {\r\n const updateFn =\r\n !_sizeChanged || _appear\r\n ? updateLifecycles\r\n : updateLifecyclesWithDebouncedAdaptiveUpdateHints;\r\n\r\n updateFn({\r\n _sizeChanged,\r\n _directionIsRTL: _directionIsRTLCache,\r\n });\r\n };\r\n const onContentMutation = (contentChangedTroughEvent: boolean) => {\r\n // if contentChangedTroughEvent is true its already debounced\r\n const updateFn = contentChangedTroughEvent\r\n ? updateLifecycles\r\n : updateLifecyclesWithDebouncedAdaptiveUpdateHints;\r\n updateFn({\r\n _contentMutation: true,\r\n });\r\n };\r\n const onHostMutation = (targetChangedAttrs: string[], targetStyleChanged: boolean) => {\r\n if (targetStyleChanged) {\r\n updateLifecyclesWithDebouncedAdaptiveUpdateHints({\r\n _hostMutation: true,\r\n });\r\n } else {\r\n updateViewportAttrsFromHost(targetChangedAttrs);\r\n }\r\n };\r\n\r\n const destroyTrinsicObserver =\r\n (_content || !_flexboxGlue) && createTrinsicObserver(_host, onTrinsicChanged);\r\n const destroySizeObserver = createSizeObserver(_host, onSizeChanged, {\r\n _appear: true,\r\n _direction: !_nativeScrollbarStyling,\r\n });\r\n const hostMutationObserver = createDOMObserver(_host, false, onHostMutation, {\r\n _styleChangingAttributes: baseStyleChangingAttrs,\r\n _attributes: baseStyleChangingAttrs.concat(viewportAttrsFromTarget),\r\n _ignoreTargetChange: ignoreTargetChange,\r\n });\r\n\r\n const updateOptions: UpdateObserverOptions = (checkOption) => {\r\n const [elementEvents, elementEventsChanged] = checkOption | null>(\r\n 'updating.elementEvents'\r\n );\r\n const [attributes, attributesChanged] = checkOption('updating.attributes');\r\n const [debounceValue, debounceChanged] = checkOption | number | null>(\r\n 'updating.debounce'\r\n );\r\n const updateContentMutationObserver = elementEventsChanged || attributesChanged;\r\n\r\n if (updateContentMutationObserver) {\r\n if (contentMutationObserver) {\r\n contentMutationObserver._update();\r\n contentMutationObserver._destroy();\r\n }\r\n contentMutationObserver = createDOMObserver(_content || _viewport, true, onContentMutation, {\r\n _styleChangingAttributes: contentMutationObserverAttr.concat(attributes || []),\r\n _attributes: contentMutationObserverAttr.concat(attributes || []),\r\n _eventContentChange: elementEvents,\r\n _ignoreNestedTargetChange: ignoreTargetChange,\r\n // _nestedTargetSelector: hostSelector,\r\n /*\r\n _ignoreContentChange: (mutation, isNestedTarget) => {\r\n const { target, attributeName } = mutation;\r\n return isNestedTarget\r\n ? false\r\n : attributeName\r\n ? liesBetween(target as Element, hostSelector, viewportSelector) || liesBetween(target as Element, hostSelector, contentSelector)\r\n : false;\r\n },\r\n */\r\n });\r\n }\r\n\r\n if (debounceChanged) {\r\n updateLifecyclesWithDebouncedAdaptiveUpdateHints._flush();\r\n if (isArray(debounceValue)) {\r\n const timeout = debounceValue[0];\r\n const maxWait = debounceValue[1];\r\n debounceTimeout = isNumber(timeout) ? timeout : false;\r\n debounceMaxDelay = isNumber(maxWait) ? maxWait : false;\r\n } else if (isNumber(debounceValue)) {\r\n debounceTimeout = debounceValue;\r\n debounceMaxDelay = false;\r\n } else {\r\n debounceTimeout = false;\r\n debounceMaxDelay = false;\r\n }\r\n }\r\n };\r\n\r\n updateViewportAttrsFromHost();\r\n\r\n return [\r\n updateOptions,\r\n () => {\r\n contentMutationObserver && contentMutationObserver._destroy();\r\n destroyTrinsicObserver && destroyTrinsicObserver();\r\n destroySizeObserver();\r\n hostMutationObserver._destroy();\r\n },\r\n ];\r\n};\r\n","import { style } from 'support';\r\nimport { LifecycleHub, Lifecycle } from 'lifecycles/lifecycleHub';\r\n\r\n/**\r\n * Lifecycle with the responsibility to adjust the trinsic behavior of the content element.\r\n * @param lifecycleHub\r\n * @returns\r\n */\r\nexport const createTrinsicLifecycle = (lifecycleHub: LifecycleHub): Lifecycle => {\r\n const { _structureSetup } = lifecycleHub;\r\n const { _content } = _structureSetup._targetObj;\r\n\r\n return (updateHints) => {\r\n const { _heightIntrinsic } = updateHints;\r\n const [heightIntrinsic, heightIntrinsicChanged] = _heightIntrinsic;\r\n\r\n if (heightIntrinsicChanged) {\r\n style(_content, {\r\n height: heightIntrinsic ? '' : '100%',\r\n display: heightIntrinsic ? '' : 'inline',\r\n });\r\n }\r\n\r\n return {\r\n _sizeChanged: heightIntrinsicChanged,\r\n _contentMutation: heightIntrinsicChanged,\r\n };\r\n };\r\n};\r\n","import { createCache, topRightBottomLeft, equalTRBL, style } from 'support';\r\nimport { LifecycleHub, Lifecycle } from 'lifecycles/lifecycleHub';\r\nimport { StyleObject } from 'typings';\r\nimport { getEnvironment } from 'environment';\r\n\r\n/**\r\n * Lifecycle with the responsibility to adjust the padding styling of the padding and viewport element.\r\n * @param lifecycleHub\r\n * @returns\r\n */\r\nexport const createPaddingLifecycle = (lifecycleHub: LifecycleHub): Lifecycle => {\r\n const { _structureSetup, _setLifecycleCommunication } = lifecycleHub;\r\n const { _host, _padding, _viewport } = _structureSetup._targetObj;\r\n const [updatePaddingCache, currentPaddingCache] = createCache(\r\n {\r\n _equal: equalTRBL,\r\n _initialValue: topRightBottomLeft(),\r\n },\r\n topRightBottomLeft.bind(0, _host, 'padding', '')\r\n );\r\n\r\n return (updateHints, checkOption, force) => {\r\n let [padding, paddingChanged] = currentPaddingCache(force);\r\n const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment();\r\n const { _sizeChanged, _directionIsRTL, _contentMutation } = updateHints;\r\n const [directionIsRTL, directionChanged] = _directionIsRTL;\r\n const [paddingAbsolute, paddingAbsoluteChanged] = checkOption('paddingAbsolute');\r\n const contentMutation = !_flexboxGlue && _contentMutation;\r\n\r\n if (_sizeChanged || paddingChanged || contentMutation) {\r\n [padding, paddingChanged] = updatePaddingCache(force);\r\n }\r\n\r\n const paddingStyleChanged = paddingAbsoluteChanged || directionChanged || paddingChanged;\r\n\r\n if (paddingStyleChanged) {\r\n // if there is no padding element and no scrollbar styling, paddingAbsolute isn't supported\r\n const paddingRelative = !paddingAbsolute || (!_padding && !_nativeScrollbarStyling);\r\n const paddingHorizontal = padding.r + padding.l;\r\n const paddingVertical = padding.t + padding.b;\r\n\r\n const paddingStyle: StyleObject = {\r\n marginRight: paddingRelative && !directionIsRTL ? -paddingHorizontal : 0,\r\n marginBottom: paddingRelative ? -paddingVertical : 0,\r\n marginLeft: paddingRelative && directionIsRTL ? -paddingHorizontal : 0,\r\n top: paddingRelative ? -padding.t : 0,\r\n right: paddingRelative ? (directionIsRTL ? -padding.r : 'auto') : 0,\r\n left: paddingRelative ? (directionIsRTL ? 'auto' : -padding.l) : 0,\r\n width: paddingRelative ? `calc(100% + ${paddingHorizontal}px)` : '',\r\n };\r\n const viewportStyle: StyleObject = {\r\n paddingTop: paddingRelative ? padding.t : 0,\r\n paddingRight: paddingRelative ? padding.r : 0,\r\n paddingBottom: paddingRelative ? padding.b : 0,\r\n paddingLeft: paddingRelative ? padding.l : 0,\r\n };\r\n\r\n // if there is no padding element apply the style to the viewport element instead\r\n style(_padding || _viewport, paddingStyle);\r\n style(_viewport, viewportStyle);\r\n\r\n _setLifecycleCommunication({\r\n _paddingInfo: {\r\n _absolute: !paddingRelative,\r\n _padding: padding,\r\n },\r\n _viewportPaddingStyle: _padding\r\n ? viewportStyle\r\n : {\r\n ...paddingStyle,\r\n ...viewportStyle,\r\n },\r\n });\r\n }\r\n\r\n return {\r\n _paddingStyleChanged: paddingStyleChanged,\r\n };\r\n };\r\n};\r\n","import {\r\n createCache,\r\n keys,\r\n attr,\r\n WH,\r\n XY,\r\n style,\r\n scrollSize,\r\n CacheValues,\r\n equalWH,\r\n addClass,\r\n removeClass,\r\n clientSize,\r\n offsetSize,\r\n getBoundingClientRect,\r\n noop,\r\n each,\r\n equalXY,\r\n} from 'support';\r\nimport { LifecycleHub, Lifecycle } from 'lifecycles/lifecycleHub';\r\nimport { getEnvironment } from 'environment';\r\nimport { OverflowBehavior } from 'options';\r\nimport { StyleObject } from 'typings';\r\nimport { classNameViewportArrange, classNameViewportScrollbarStyling } from 'classnames';\r\n\r\ninterface ViewportOverflowState {\r\n _scrollbarsHideOffset: XY;\r\n _scrollbarsHideOffsetArrange: XY;\r\n _overflowScroll: XY;\r\n}\r\n\r\ntype UndoViewportArrangeResult = [\r\n () => void, // redoViewportArrange\r\n ViewportOverflowState?\r\n];\r\n\r\nconst { max, abs, round } = Math;\r\nconst overlaidScrollbarsHideOffset = 42;\r\nconst whCacheOptions = {\r\n _equal: equalWH,\r\n _initialValue: { w: 0, h: 0 },\r\n};\r\nconst xyCacheOptions = {\r\n _equal: equalXY,\r\n _initialValue: { x: false, y: false },\r\n};\r\nconst sizeFraction = (elm: HTMLElement): WH => {\r\n const viewportOffsetSize = offsetSize(elm);\r\n const viewportRect = getBoundingClientRect(elm);\r\n return {\r\n w: viewportRect.width - viewportOffsetSize.w,\r\n h: viewportRect.height - viewportOffsetSize.h,\r\n };\r\n};\r\nconst fractionalPixelRatioTollerance = () => (window.devicePixelRatio % 1 === 0 ? 0 : 1);\r\nconst setAxisOverflowStyle = (\r\n horizontal: boolean,\r\n overflowAmount: number,\r\n behavior: OverflowBehavior,\r\n styleObj: StyleObject\r\n) => {\r\n const overflowKey: keyof StyleObject = horizontal ? 'overflowX' : 'overflowY';\r\n const behaviorIsVisible = behavior.indexOf('visible') === 0;\r\n const behaviorIsVisibleHidden = behavior === 'visible-hidden';\r\n const behaviorIsScroll = behavior === 'scroll';\r\n const hasOverflow = overflowAmount > 0;\r\n\r\n if (behaviorIsVisible) {\r\n styleObj[overflowKey] = 'visible';\r\n }\r\n if (behaviorIsScroll && hasOverflow) {\r\n styleObj[overflowKey] = behavior;\r\n }\r\n\r\n return {\r\n _visible: behaviorIsVisible,\r\n _behavior: behaviorIsVisibleHidden ? 'hidden' : 'scroll',\r\n };\r\n};\r\n\r\nconst getOverflowAmount = (\r\n viewportScrollSize: WH,\r\n viewportClientSize: WH,\r\n viewportSizeFraction: WH\r\n) => ({\r\n w: max(\r\n 0,\r\n round(\r\n max(0, viewportScrollSize.w - viewportClientSize.w) -\r\n (fractionalPixelRatioTollerance() || max(0, viewportSizeFraction.w))\r\n )\r\n ),\r\n h: max(\r\n 0,\r\n round(\r\n max(0, viewportScrollSize.h - viewportClientSize.h) -\r\n (fractionalPixelRatioTollerance() || max(0, viewportSizeFraction.h))\r\n )\r\n ),\r\n});\r\n\r\n/**\r\n * Lifecycle with the responsibility to set the correct overflow and scrollbar hiding styles of the viewport element.\r\n * @param lifecycleHub\r\n * @returns\r\n */\r\nexport const createOverflowLifecycle = (lifecycleHub: LifecycleHub): Lifecycle => {\r\n const {\r\n _structureSetup,\r\n _doViewportArrange,\r\n _getLifecycleCommunication,\r\n _setLifecycleCommunication,\r\n } = lifecycleHub;\r\n\r\n const { _host, _viewport, _viewportArrange } = _structureSetup._targetObj;\r\n\r\n const [updateViewportSizeFraction, getCurrentViewportSizeFraction] = createCache>(\r\n whCacheOptions,\r\n sizeFraction.bind(0, _viewport)\r\n );\r\n\r\n const [updateViewportScrollSizeCache, getCurrentViewportScrollSizeCache] = createCache<\r\n WH\r\n >(whCacheOptions, scrollSize.bind(0, _viewport));\r\n\r\n const [updateOverflowAmountCache, getCurrentOverflowAmountCache] =\r\n createCache>(whCacheOptions);\r\n\r\n const [updateOverflowScrollCache] = createCache>(xyCacheOptions);\r\n\r\n /**\r\n * Applies a fixed height to the viewport so it can't overflow or underflow the host element.\r\n * @param viewportOverflowState The current overflow state.\r\n * @param heightIntrinsic Whether the host height is intrinsic or not.\r\n */\r\n const fixFlexboxGlue = (\r\n viewportOverflowState: ViewportOverflowState,\r\n heightIntrinsic: boolean\r\n ) => {\r\n style(_viewport, {\r\n height: '',\r\n });\r\n\r\n if (heightIntrinsic) {\r\n const { _nativeScrollbarIsOverlaid } = getEnvironment();\r\n const { _absolute: paddingAbsolute, _padding: padding } =\r\n _getLifecycleCommunication()._paddingInfo;\r\n const { _overflowScroll, _scrollbarsHideOffset } = viewportOverflowState;\r\n const hostSizeFraction = sizeFraction(_host);\r\n const hostClientSize = clientSize(_host);\r\n // padding subtraction is only needed if padding is absolute or if viewport is content-box\r\n const isContentBox = style(_viewport, 'boxSizing') === 'content-box';\r\n const paddingVertical = paddingAbsolute || isContentBox ? padding.b + padding.t : 0;\r\n const fractionalClientHeight =\r\n hostClientSize.h + (abs(hostSizeFraction.h) < 1 ? hostSizeFraction.h : 0);\r\n const subtractXScrollbar = !(_nativeScrollbarIsOverlaid.x && isContentBox);\r\n\r\n style(_viewport, {\r\n height:\r\n fractionalClientHeight +\r\n (_overflowScroll.x && subtractXScrollbar ? _scrollbarsHideOffset.x : 0) -\r\n paddingVertical,\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Gets the current overflow state of the viewport.\r\n * @param showNativeOverlaidScrollbars Whether native overlaid scrollbars are shown instead of hidden.\r\n * @param viewportStyleObj The viewport style object where the overflow scroll property can be read of, or undefined if shall be determined.\r\n * @returns A object which contains informations about the current overflow state.\r\n */\r\n const getViewportOverflowState = (\r\n showNativeOverlaidScrollbars: boolean,\r\n viewportStyleObj?: StyleObject\r\n ): ViewportOverflowState => {\r\n const { _nativeScrollbarSize, _nativeScrollbarIsOverlaid, _nativeScrollbarStyling } =\r\n getEnvironment();\r\n const { x: overlaidX, y: overlaidY } = _nativeScrollbarIsOverlaid;\r\n const determineOverflow = !viewportStyleObj;\r\n const arrangeHideOffset =\r\n !_nativeScrollbarStyling && !showNativeOverlaidScrollbars ? overlaidScrollbarsHideOffset : 0;\r\n const styleObj = determineOverflow\r\n ? style(_viewport, ['overflowX', 'overflowY'])\r\n : viewportStyleObj;\r\n const scroll = {\r\n x: styleObj.overflowX === 'scroll',\r\n y: styleObj.overflowY === 'scroll',\r\n };\r\n const nonScrollbarStylingHideOffset = {\r\n x: overlaidX ? arrangeHideOffset : _nativeScrollbarSize.x,\r\n y: overlaidY ? arrangeHideOffset : _nativeScrollbarSize.y,\r\n };\r\n const scrollbarsHideOffset = {\r\n x: scroll.x && !_nativeScrollbarStyling ? nonScrollbarStylingHideOffset.x : 0,\r\n y: scroll.y && !_nativeScrollbarStyling ? nonScrollbarStylingHideOffset.y : 0,\r\n };\r\n\r\n return {\r\n _overflowScroll: scroll,\r\n _scrollbarsHideOffsetArrange: {\r\n x: overlaidX && !!arrangeHideOffset,\r\n y: overlaidY && !!arrangeHideOffset,\r\n },\r\n _scrollbarsHideOffset: scrollbarsHideOffset,\r\n };\r\n };\r\n\r\n /**\r\n * Sets the overflow property of the viewport and calculates the a overflow state according to the new parameters.\r\n * @param showNativeOverlaidScrollbars Whether to show natively overlaid scrollbars.\r\n * @param overflowAmount The overflow amount.\r\n * @param overflow The overflow behavior according to the options.\r\n * @param viewportStyleObj The viewport style object to which the overflow style shall be applied.\r\n * @returns A object which represents the newly set overflow state.\r\n */\r\n const setViewportOverflowState = (\r\n showNativeOverlaidScrollbars: boolean,\r\n overflowAmount: WH,\r\n overflow: XY,\r\n viewportStyleObj: StyleObject\r\n ): ViewportOverflowState => {\r\n const { _visible: xVisible, _behavior: xVisibleBehavior } = setAxisOverflowStyle(\r\n true,\r\n overflowAmount.w,\r\n overflow.x,\r\n viewportStyleObj\r\n );\r\n const { _visible: yVisible, _behavior: yVisibleBehavior } = setAxisOverflowStyle(\r\n false,\r\n overflowAmount.h,\r\n overflow.y,\r\n viewportStyleObj\r\n );\r\n\r\n if (xVisible && !yVisible) {\r\n viewportStyleObj.overflowX = xVisibleBehavior;\r\n }\r\n if (yVisible && !xVisible) {\r\n viewportStyleObj.overflowY = yVisibleBehavior;\r\n }\r\n\r\n return getViewportOverflowState(showNativeOverlaidScrollbars, viewportStyleObj);\r\n };\r\n\r\n /**\r\n * Sets the styles of the viewport arrange element.\r\n * @param viewportOverflowState The viewport overflow state according to which the scrollbars shall be hidden.\r\n * @param viewportScrollSize The content scroll size.\r\n * @param directionIsRTL Whether the direction is RTL or not.\r\n * @returns A boolean which indicates whether the viewport arrange element was adjusted.\r\n */\r\n const arrangeViewport = (\r\n viewportOverflowState: ViewportOverflowState,\r\n viewportScrollSize: WH,\r\n viewportSizeFraction: WH,\r\n directionIsRTL: boolean\r\n ) => {\r\n if (_doViewportArrange) {\r\n const { _scrollbarsHideOffset, _scrollbarsHideOffsetArrange } = viewportOverflowState;\r\n const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange;\r\n const { x: hideOffsetX, y: hideOffsetY } = _scrollbarsHideOffset;\r\n const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication();\r\n const viewportArrangeHorizontalPaddingKey: keyof StyleObject = directionIsRTL\r\n ? 'paddingRight'\r\n : 'paddingLeft';\r\n const viewportArrangeHorizontalPaddingValue = viewportPaddingStyle[\r\n viewportArrangeHorizontalPaddingKey\r\n ] as number;\r\n const viewportArrangeVerticalPaddingValue = viewportPaddingStyle.paddingTop as number;\r\n const fractionalContentWidth =\r\n viewportScrollSize.w + (abs(viewportSizeFraction.w) < 1 ? viewportSizeFraction.w : 0);\r\n const fractionalContenHeight =\r\n viewportScrollSize.h + (abs(viewportSizeFraction.h) < 1 ? viewportSizeFraction.h : 0);\r\n const arrangeSize = {\r\n w:\r\n hideOffsetY && arrangeY\r\n ? `${hideOffsetY + fractionalContentWidth - viewportArrangeHorizontalPaddingValue}px`\r\n : '',\r\n h:\r\n hideOffsetX && arrangeX\r\n ? `${hideOffsetX + fractionalContenHeight - viewportArrangeVerticalPaddingValue}px`\r\n : '',\r\n };\r\n\r\n // adjust content arrange / before element\r\n if (_viewportArrange) {\r\n const { sheet } = _viewportArrange;\r\n if (sheet) {\r\n const { cssRules } = sheet;\r\n if (cssRules) {\r\n if (!cssRules.length) {\r\n sheet.insertRule(\r\n `#${attr(_viewportArrange, 'id')} + .${classNameViewportArrange}::before {}`,\r\n 0\r\n );\r\n }\r\n\r\n // @ts-ignore\r\n const ruleStyle = cssRules[0].style;\r\n\r\n ruleStyle.width = arrangeSize.w;\r\n ruleStyle.height = arrangeSize.h;\r\n }\r\n }\r\n } else {\r\n style<'--os-vaw' | '--os-vah'>(_viewport, {\r\n '--os-vaw': arrangeSize.w,\r\n '--os-vah': arrangeSize.h,\r\n });\r\n }\r\n }\r\n\r\n return _doViewportArrange;\r\n };\r\n\r\n /**\r\n * Hides the native scrollbars according to the passed parameters.\r\n * @param viewportOverflowState The viewport overflow state.\r\n * @param directionIsRTL Whether the direction is RTL or not.\r\n * @param viewportArrange Whether special styles related to the viewport arrange strategy shall be applied.\r\n * @param viewportStyleObj The viewport style object to which the needed styles shall be applied.\r\n */\r\n const hideNativeScrollbars = (\r\n viewportOverflowState: ViewportOverflowState,\r\n directionIsRTL: boolean,\r\n viewportArrange: boolean,\r\n viewportStyleObj: StyleObject\r\n ) => {\r\n const { _scrollbarsHideOffset, _scrollbarsHideOffsetArrange } = viewportOverflowState;\r\n const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange;\r\n const { x: hideOffsetX, y: hideOffsetY } = _scrollbarsHideOffset;\r\n const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication();\r\n const horizontalMarginKey: keyof StyleObject = directionIsRTL ? 'marginLeft' : 'marginRight';\r\n const viewportHorizontalPaddingKey: keyof StyleObject = directionIsRTL\r\n ? 'paddingLeft'\r\n : 'paddingRight';\r\n const horizontalMarginValue = viewportPaddingStyle[horizontalMarginKey] as number;\r\n const verticalMarginValue = viewportPaddingStyle.marginBottom as number;\r\n const horizontalPaddingValue = viewportPaddingStyle[viewportHorizontalPaddingKey] as number;\r\n const verticalPaddingValue = viewportPaddingStyle.paddingBottom as number;\r\n\r\n // horizontal\r\n viewportStyleObj.width = `calc(100% + ${hideOffsetY + horizontalMarginValue * -1}px)`;\r\n viewportStyleObj[horizontalMarginKey] = -hideOffsetY + horizontalMarginValue;\r\n\r\n // vertical\r\n viewportStyleObj.marginBottom = -hideOffsetX + verticalMarginValue;\r\n\r\n // viewport arrange additional styles\r\n if (viewportArrange) {\r\n viewportStyleObj[viewportHorizontalPaddingKey] =\r\n horizontalPaddingValue + (arrangeY ? hideOffsetY : 0);\r\n viewportStyleObj.paddingBottom = verticalPaddingValue + (arrangeX ? hideOffsetX : 0);\r\n }\r\n };\r\n\r\n /**\r\n * Removes all styles applied because of the viewport arrange strategy.\r\n * @param showNativeOverlaidScrollbars Whether native overlaid scrollbars are shown instead of hidden.\r\n * @param directionIsRTL Whether the direction is RTL or not.\r\n * @param viewportOverflowState The currentviewport overflow state or undefined if it has to be determined.\r\n * @returns A object with a function which applies all the removed styles and the determined viewport vverflow state.\r\n */\r\n const undoViewportArrange = (\r\n showNativeOverlaidScrollbars: boolean,\r\n directionIsRTL: boolean,\r\n viewportOverflowState?: ViewportOverflowState\r\n ): UndoViewportArrangeResult => {\r\n if (_doViewportArrange) {\r\n const finalViewportOverflowState =\r\n viewportOverflowState || getViewportOverflowState(showNativeOverlaidScrollbars);\r\n const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication();\r\n const { _flexboxGlue } = getEnvironment();\r\n const { _scrollbarsHideOffsetArrange } = finalViewportOverflowState;\r\n const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange;\r\n const finalPaddingStyle: StyleObject = {};\r\n const assignProps = (props: string) =>\r\n each(props.split(' '), (prop) => {\r\n finalPaddingStyle[prop] = viewportPaddingStyle[prop];\r\n });\r\n\r\n if (!_flexboxGlue) {\r\n finalPaddingStyle.height = '';\r\n }\r\n\r\n if (arrangeX) {\r\n assignProps('marginBottom paddingTop paddingBottom');\r\n }\r\n\r\n if (arrangeY) {\r\n assignProps('marginLeft marginRight paddingLeft paddingRight');\r\n }\r\n\r\n const prevStyle = style(_viewport, keys(finalPaddingStyle));\r\n removeClass(_viewport, classNameViewportArrange);\r\n style(_viewport, finalPaddingStyle);\r\n\r\n return [\r\n () => {\r\n hideNativeScrollbars(\r\n finalViewportOverflowState,\r\n directionIsRTL,\r\n _doViewportArrange,\r\n prevStyle\r\n );\r\n style(_viewport, prevStyle);\r\n addClass(_viewport, classNameViewportArrange);\r\n },\r\n finalViewportOverflowState,\r\n ];\r\n }\r\n return [noop];\r\n };\r\n\r\n return (updateHints, checkOption, force) => {\r\n const {\r\n _directionIsRTL,\r\n _heightIntrinsic,\r\n _sizeChanged,\r\n _hostMutation,\r\n _contentMutation,\r\n _paddingStyleChanged,\r\n } = updateHints;\r\n const { _flexboxGlue, _nativeScrollbarStyling, _nativeScrollbarIsOverlaid } = getEnvironment();\r\n const [heightIntrinsic, heightIntrinsicChanged] = _heightIntrinsic;\r\n const [directionIsRTL, directionChanged] = _directionIsRTL;\r\n const [showNativeOverlaidScrollbarsOption, showNativeOverlaidScrollbarsChanged] =\r\n checkOption('nativeScrollbarsOverlaid.show');\r\n const showNativeOverlaidScrollbars =\r\n showNativeOverlaidScrollbarsOption &&\r\n _nativeScrollbarIsOverlaid.x &&\r\n _nativeScrollbarIsOverlaid.y;\r\n const adjustFlexboxGlue =\r\n !_flexboxGlue &&\r\n (_sizeChanged ||\r\n _contentMutation ||\r\n _hostMutation ||\r\n showNativeOverlaidScrollbarsChanged ||\r\n heightIntrinsicChanged);\r\n\r\n let viewportSizeFractionCache: CacheValues> = getCurrentViewportSizeFraction(force);\r\n let viewportScrollSizeCache: CacheValues> = getCurrentViewportScrollSizeCache(force);\r\n let overflowAmuntCache: CacheValues> = getCurrentOverflowAmountCache(force);\r\n let preMeasureViewportOverflowState: ViewportOverflowState | undefined;\r\n\r\n if (showNativeOverlaidScrollbarsChanged && _nativeScrollbarStyling) {\r\n if (showNativeOverlaidScrollbars) {\r\n removeClass(_viewport, classNameViewportScrollbarStyling);\r\n } else {\r\n addClass(_viewport, classNameViewportScrollbarStyling);\r\n }\r\n }\r\n\r\n if (adjustFlexboxGlue) {\r\n preMeasureViewportOverflowState = getViewportOverflowState(showNativeOverlaidScrollbars);\r\n fixFlexboxGlue(preMeasureViewportOverflowState, !!heightIntrinsic);\r\n }\r\n\r\n if (\r\n _sizeChanged ||\r\n _paddingStyleChanged ||\r\n _contentMutation ||\r\n showNativeOverlaidScrollbarsChanged ||\r\n directionChanged\r\n ) {\r\n const [redoViewportArrange, undoViewportArrangeOverflowState] = undoViewportArrange(\r\n showNativeOverlaidScrollbars,\r\n directionIsRTL,\r\n preMeasureViewportOverflowState\r\n );\r\n const [viewportSizeFraction, viewportSizeFractionCahnged] = (viewportSizeFractionCache =\r\n updateViewportSizeFraction(force));\r\n const [viewportScrollSize, viewportScrollSizeChanged] = (viewportScrollSizeCache =\r\n updateViewportScrollSizeCache(force));\r\n const viewportContentSize = clientSize(_viewport);\r\n let arrangedViewportScrollSize = viewportScrollSize;\r\n let arrangedViewportClientSize = viewportContentSize;\r\n\r\n redoViewportArrange();\r\n\r\n // if re measure is required (only required if content arrange strategy is used)\r\n if (\r\n (viewportScrollSizeChanged ||\r\n viewportSizeFractionCahnged ||\r\n showNativeOverlaidScrollbarsChanged) &&\r\n undoViewportArrangeOverflowState &&\r\n !showNativeOverlaidScrollbars &&\r\n arrangeViewport(\r\n undoViewportArrangeOverflowState,\r\n viewportScrollSize,\r\n viewportSizeFraction,\r\n directionIsRTL\r\n )\r\n ) {\r\n arrangedViewportClientSize = clientSize(_viewport);\r\n arrangedViewportScrollSize = scrollSize(_viewport);\r\n }\r\n\r\n overflowAmuntCache = updateOverflowAmountCache(\r\n getOverflowAmount(\r\n {\r\n w: max(viewportScrollSize.w, arrangedViewportScrollSize.w),\r\n h: max(viewportScrollSize.h, arrangedViewportScrollSize.h),\r\n }, // scroll size\r\n {\r\n w: arrangedViewportClientSize.w + max(0, viewportContentSize.w - viewportScrollSize.w),\r\n h: arrangedViewportClientSize.h + max(0, viewportContentSize.h - viewportScrollSize.h),\r\n }, // client size\r\n viewportSizeFraction\r\n ),\r\n force\r\n );\r\n }\r\n\r\n const [viewportSizeFraction, viewportSizeFractionChanged] = viewportSizeFractionCache;\r\n const [viewportScrollSize, viewportScrollSizeChanged] = viewportScrollSizeCache;\r\n const [overflowAmount, overflowAmountChanged] = overflowAmuntCache;\r\n const [overflow, overflowChanged] = checkOption>('overflow');\r\n\r\n if (\r\n _paddingStyleChanged ||\r\n viewportSizeFractionChanged ||\r\n viewportScrollSizeChanged ||\r\n overflowAmountChanged ||\r\n overflowChanged ||\r\n showNativeOverlaidScrollbarsChanged ||\r\n directionChanged ||\r\n adjustFlexboxGlue\r\n ) {\r\n const viewportStyle: StyleObject = {\r\n marginRight: 0,\r\n marginBottom: 0,\r\n marginLeft: 0,\r\n width: '',\r\n overflowY: '',\r\n overflowX: '',\r\n };\r\n\r\n const viewportOverflowState = setViewportOverflowState(\r\n showNativeOverlaidScrollbars,\r\n overflowAmount,\r\n overflow,\r\n viewportStyle\r\n );\r\n const viewportArranged = arrangeViewport(\r\n viewportOverflowState,\r\n viewportScrollSize,\r\n viewportSizeFraction,\r\n directionIsRTL\r\n );\r\n hideNativeScrollbars(viewportOverflowState, directionIsRTL, viewportArranged, viewportStyle);\r\n\r\n if (adjustFlexboxGlue) {\r\n fixFlexboxGlue(viewportOverflowState, !!heightIntrinsic);\r\n }\r\n\r\n // TODO: hide host overflow if scroll x or y and no padding element there\r\n // TODO: Test without content\r\n // TODO: Test without padding\r\n // TODO: overflow: visible on padding / host if overflow visible on both axis\r\n\r\n style(_viewport, viewportStyle);\r\n\r\n _setLifecycleCommunication({\r\n _viewportOverflowScrollCache: updateOverflowScrollCache(\r\n viewportOverflowState._overflowScroll\r\n ),\r\n _viewportOverflowAmountCache: overflowAmuntCache,\r\n });\r\n }\r\n };\r\n};\r\n","import {\r\n XY,\r\n WH,\r\n TRBL,\r\n CacheValues,\r\n each,\r\n hasOwnProperty,\r\n isNumber,\r\n scrollLeft,\r\n scrollTop,\r\n assignDeep,\r\n keys,\r\n isBoolean,\r\n} from 'support';\r\nimport { OSOptions } from 'options';\r\nimport { getEnvironment } from 'environment';\r\nimport { StructureSetup } from 'setups/structureSetup';\r\nimport { lifecycleHubOservers, UpdateObserverOptions } from 'lifecycles/lifecycleHubObservers';\r\nimport { createTrinsicLifecycle } from 'lifecycles/trinsicLifecycle';\r\nimport { createPaddingLifecycle } from 'lifecycles/paddingLifecycle';\r\nimport { createOverflowLifecycle } from 'lifecycles/overflowLifecycle';\r\nimport { StyleObject, PartialOptions } from 'typings';\r\nimport { ScrollbarsSetup } from 'setups/scrollbarsSetup';\r\nimport { TriggerEventListener } from 'eventListeners';\r\n\r\nexport type LifecycleCheckOption = (path: string) => LifecycleOptionInfo;\r\n\r\nexport type Lifecycle = (\r\n updateHints: LifecycleUpdateHints,\r\n checkOption: LifecycleCheckOption,\r\n force: boolean\r\n) => Partial | void;\r\n\r\nexport type LifecycleOptionInfo = [T, boolean];\r\n\r\nexport interface LifecycleCommunication {\r\n _paddingInfo: {\r\n _absolute: boolean;\r\n _padding: TRBL;\r\n };\r\n _viewportPaddingStyle: StyleObject;\r\n _viewportOverflowScrollCache: CacheValues>;\r\n _viewportOverflowAmountCache: CacheValues>;\r\n}\r\n\r\nexport interface LifecycleUpdateHints {\r\n _sizeChanged: boolean;\r\n _hostMutation: boolean;\r\n _contentMutation: boolean;\r\n _paddingStyleChanged: boolean;\r\n _directionIsRTL: CacheValues;\r\n _heightIntrinsic: CacheValues;\r\n}\r\n\r\nexport interface LifecycleHubState {\r\n _overflowAmount: WH;\r\n}\r\n\r\nexport interface LifecycleHubInstance {\r\n _update(changedOptions: PartialOptions, force?: boolean): void;\r\n _state(): LifecycleHubState;\r\n _destroy(): void;\r\n}\r\n\r\nexport interface LifecycleHub {\r\n _options: OSOptions;\r\n _structureSetup: StructureSetup;\r\n // whether the \"viewport arrange\" strategy must be used (true if no native scrollbar hiding and scrollbars are overlaid)\r\n _doViewportArrange: boolean;\r\n _getLifecycleCommunication(): LifecycleCommunication;\r\n _setLifecycleCommunication(newLifecycleCommunication?: Partial): void;\r\n}\r\n\r\nconst getPropByPath = (obj: any, path: string): T =>\r\n obj\r\n ? path.split('.').reduce((o, prop) => (o && hasOwnProperty(o, prop) ? o[prop] : undefined), obj)\r\n : undefined;\r\n\r\nconst applyForceToCache = (cacheValues: CacheValues, force?: boolean): CacheValues => [\r\n cacheValues[0],\r\n force || cacheValues[1],\r\n cacheValues[2],\r\n];\r\nconst booleanCacheValuesFallback: CacheValues = [false, false, false];\r\nconst lifecycleCommunicationFallback: LifecycleCommunication = {\r\n _paddingInfo: {\r\n _absolute: false,\r\n _padding: {\r\n t: 0,\r\n r: 0,\r\n b: 0,\r\n l: 0,\r\n },\r\n },\r\n _viewportOverflowScrollCache: [\r\n {\r\n x: false,\r\n y: false,\r\n },\r\n false,\r\n ],\r\n _viewportOverflowAmountCache: [\r\n {\r\n w: 0,\r\n h: 0,\r\n },\r\n false,\r\n ],\r\n _viewportPaddingStyle: {\r\n marginRight: 0,\r\n marginBottom: 0,\r\n marginLeft: 0,\r\n paddingTop: 0,\r\n paddingRight: 0,\r\n paddingBottom: 0,\r\n paddingLeft: 0,\r\n },\r\n};\r\n\r\nconst prepareUpdateHints = (\r\n leading: Required,\r\n adaptive?: Partial,\r\n force?: boolean\r\n): Required => {\r\n const result = {};\r\n const finalAdaptive = adaptive || {};\r\n const objKeys = keys(leading).concat(keys(finalAdaptive));\r\n\r\n each(objKeys, (key) => {\r\n const leadingValue = leading[key];\r\n const adaptiveValue = finalAdaptive[key];\r\n result[key] = isBoolean(leadingValue)\r\n ? !!force || !!leadingValue || !!adaptiveValue\r\n : applyForceToCache(leadingValue || booleanCacheValuesFallback, force);\r\n });\r\n\r\n return result as Required;\r\n};\r\n\r\nconst createOverflowChangedArgs = (overflowAmount: WH, overflowScroll: XY) => ({\r\n amount: {\r\n x: overflowAmount.w,\r\n y: overflowAmount.h,\r\n },\r\n overflow: {\r\n x: overflowAmount.w > 0,\r\n y: overflowAmount.h > 0,\r\n },\r\n scrollableOverflow: assignDeep({}, overflowScroll),\r\n});\r\n\r\nexport const createLifecycleHub = (\r\n options: OSOptions,\r\n triggerListener: TriggerEventListener,\r\n structureSetup: StructureSetup,\r\n scrollbarsSetup: ScrollbarsSetup\r\n): LifecycleHubInstance => {\r\n let lifecycleCommunication = lifecycleCommunicationFallback;\r\n let updateObserverOptions: UpdateObserverOptions;\r\n let destroyObservers: () => void;\r\n const { _viewport } = structureSetup._targetObj;\r\n const {\r\n _nativeScrollbarStyling,\r\n _nativeScrollbarIsOverlaid,\r\n _flexboxGlue,\r\n _addListener: addEnvironmentListener,\r\n _removeListener: removeEnvironmentListener,\r\n } = getEnvironment();\r\n const doViewportArrange =\r\n !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);\r\n const instance: LifecycleHub = {\r\n _options: options,\r\n _structureSetup: structureSetup,\r\n _doViewportArrange: doViewportArrange,\r\n _getLifecycleCommunication: () => lifecycleCommunication,\r\n _setLifecycleCommunication(newLifecycleCommunication) {\r\n lifecycleCommunication = assignDeep({}, lifecycleCommunication, newLifecycleCommunication);\r\n },\r\n };\r\n const lifecycles: Lifecycle[] = [\r\n createTrinsicLifecycle(instance),\r\n createPaddingLifecycle(instance),\r\n createOverflowLifecycle(instance),\r\n ];\r\n\r\n const updateLifecycles = (\r\n updateHints: Partial,\r\n changedOptions?: Partial,\r\n force?: boolean\r\n ) => {\r\n const initialUpdateHints = prepareUpdateHints(\r\n assignDeep(\r\n {\r\n _sizeChanged: false,\r\n _hostMutation: false,\r\n _contentMutation: false,\r\n _paddingStyleChanged: false,\r\n _directionIsRTL: booleanCacheValuesFallback,\r\n _heightIntrinsic: booleanCacheValuesFallback,\r\n },\r\n updateHints\r\n ),\r\n {},\r\n force\r\n );\r\n const checkOption: LifecycleCheckOption = (path) => [\r\n getPropByPath(options, path),\r\n force || getPropByPath(changedOptions, path) !== undefined,\r\n ];\r\n const adjustScrollOffset = doViewportArrange || !_flexboxGlue;\r\n const scrollOffsetX = adjustScrollOffset && scrollLeft(_viewport);\r\n const scrollOffsetY = adjustScrollOffset && scrollTop(_viewport);\r\n\r\n // place before updating lifecycles because of possible flushing of debounce\r\n if (updateObserverOptions) {\r\n updateObserverOptions(checkOption);\r\n }\r\n\r\n let adaptivedUpdateHints: Required = initialUpdateHints;\r\n each(lifecycles, (lifecycle) => {\r\n adaptivedUpdateHints = prepareUpdateHints(\r\n adaptivedUpdateHints,\r\n lifecycle(adaptivedUpdateHints, checkOption, !!force) || {},\r\n force\r\n );\r\n });\r\n\r\n if (isNumber(scrollOffsetX)) {\r\n scrollLeft(_viewport, scrollOffsetX);\r\n }\r\n if (isNumber(scrollOffsetY)) {\r\n scrollTop(_viewport, scrollOffsetY);\r\n }\r\n\r\n const {\r\n _viewportOverflowAmountCache: overflowAmountCache,\r\n _viewportOverflowScrollCache: overflowScrollCache,\r\n } = lifecycleCommunication;\r\n const [overflowAmount, overflowAmountChanged, prevOverflowAmount] = overflowAmountCache;\r\n const [overflowScroll, overflowScrollChanged, prevOverflowScroll] = overflowScrollCache;\r\n\r\n if (overflowAmountChanged || overflowScrollChanged) {\r\n triggerListener(\r\n 'overflowChanged',\r\n assignDeep({}, createOverflowChangedArgs(overflowAmount, overflowScroll), {\r\n previous: createOverflowChangedArgs(prevOverflowAmount!, prevOverflowScroll!),\r\n })\r\n );\r\n }\r\n\r\n triggerListener('updated', {\r\n updateHints: {\r\n sizeChanged: adaptivedUpdateHints._sizeChanged,\r\n contentMutation: adaptivedUpdateHints._contentMutation,\r\n hostMutation: adaptivedUpdateHints._hostMutation,\r\n directionChanged: adaptivedUpdateHints._directionIsRTL[1],\r\n heightIntrinsicChanged: adaptivedUpdateHints._heightIntrinsic[1],\r\n },\r\n changedOptions: changedOptions || {},\r\n force: !!force,\r\n });\r\n };\r\n // eslint-disable-next-line prefer-const\r\n [updateObserverOptions, destroyObservers] = lifecycleHubOservers(instance, updateLifecycles);\r\n\r\n const update = (changedOptions: Partial, force?: boolean) =>\r\n updateLifecycles({}, changedOptions, force);\r\n const envUpdateListener = update.bind(0, {}, true);\r\n addEnvironmentListener(envUpdateListener);\r\n\r\n return {\r\n _update: update,\r\n _state: () => ({\r\n _overflowAmount: lifecycleCommunication._viewportOverflowAmountCache[0],\r\n }),\r\n _destroy() {\r\n destroyObservers();\r\n removeEnvironmentListener(envUpdateListener);\r\n\r\n structureSetup._destroy();\r\n scrollbarsSetup._destroy();\r\n },\r\n };\r\n};\r\n","import { assignDeep, each, isArray } from 'support';\r\nimport { OverlayScrollbars, OverlayScrollbarsStatic } from 'overlayscrollbars';\r\n\r\nexport type OSPluginInstance =\r\n | Record\r\n | ((staticObj: OverlayScrollbarsStatic, instanceObj: OverlayScrollbars) => void);\r\nexport type OSPlugin = [string, T];\r\n\r\nconst pluginRegistry: Record = {};\r\n\r\nexport const getPlugins = () => assignDeep({}, pluginRegistry);\r\n\r\nexport const addPlugin = (addedPlugin: OSPlugin | OSPlugin[]) =>\r\n each((isArray(addedPlugin) ? addedPlugin : [addedPlugin]) as OSPlugin[], (plugin) => {\r\n pluginRegistry[plugin[0]] = plugin[1];\r\n });\r\n","import { each, hasOwnProperty, keys, push, isEmptyObject } from 'support/utils';\r\nimport { type, isArray, isUndefined, isPlainObject, isString } from 'support/utils/types';\r\nimport { PlainObject, PartialOptions } from 'typings';\r\n\r\nexport type OptionsObjectType = Record;\r\nexport type OptionsFunctionType = (this: unknown, ...args: unknown[]) => unknown;\r\nexport type OptionsTemplateType = ExtractPropsKey<\r\n OptionsTemplateTypeMap,\r\n T\r\n>;\r\nexport type OptionsTemplateTypes = keyof OptionsTemplateTypeMap;\r\nexport type OptionsTemplateNativeTypes = OptionsTemplateTypeMap[keyof OptionsTemplateTypeMap];\r\n\r\nexport type OptionsTemplateValue = T extends string\r\n ? string extends T\r\n ? OptionsTemplateValueNonEnum\r\n : string\r\n : OptionsTemplateValueNonEnum;\r\n\r\nexport type OptionsTemplate = {\r\n [P in keyof T]: T[P] extends OptionsObjectType\r\n ? OptionsTemplate\r\n : T[P] extends OptionsTemplateNativeTypes\r\n ? OptionsTemplateValue\r\n : never;\r\n};\r\n\r\nexport type OptionsValidationResult = [\r\n PartialOptions, // validated\r\n Record // foreign\r\n];\r\n\r\ntype OptionsTemplateTypeMap = {\r\n __TPL_boolean_TYPE__: boolean;\r\n __TPL_number_TYPE__: number;\r\n __TPL_string_TYPE__: string;\r\n __TPL_array_TYPE__: Array | ReadonlyArray;\r\n __TPL_function_TYPE__: OptionsFunctionType;\r\n __TPL_null_TYPE__: null;\r\n __TPL_object_TYPE__: OptionsObjectType;\r\n};\r\n\r\ntype OptionsTemplateValueNonEnum =\r\n | OptionsTemplateType\r\n | [OptionsTemplateType, ...Array];\r\n\r\ntype ExtractPropsKey = {\r\n [P in keyof T]: TProps extends T[P] ? P : never;\r\n}[keyof T];\r\n\r\ntype OptionsTemplateTypesDictionary = {\r\n readonly boolean: OptionsTemplateType;\r\n readonly number: OptionsTemplateType;\r\n readonly string: OptionsTemplateType;\r\n readonly array: OptionsTemplateType>;\r\n readonly object: OptionsTemplateType;\r\n readonly function: OptionsTemplateType;\r\n readonly null: OptionsTemplateType;\r\n};\r\n\r\n/**\r\n * A prefix and suffix tuple which serves as recognition pattern for template types.\r\n */\r\nconst templateTypePrefixSuffix: readonly [string, string] = ['__TPL_', '_TYPE__'];\r\n\r\n/**\r\n * A object which serves as a mapping for \"normal\" types and template types.\r\n * Key = normal type string\r\n * value = template type string\r\n */\r\nconst optionsTemplateTypes: OptionsTemplateTypesDictionary = [\r\n 'boolean',\r\n 'number',\r\n 'string',\r\n 'array',\r\n 'object',\r\n 'function',\r\n 'null',\r\n].reduce((result, item) => {\r\n result[item] = templateTypePrefixSuffix[0] + item + templateTypePrefixSuffix[1];\r\n return result;\r\n}, {} as OptionsTemplateTypesDictionary);\r\n\r\n/**\r\n * Validates the given options object according to the given template object and returns a object which looks like:\r\n * {\r\n * foreign : a object which consists of properties which aren't defined inside the template. (foreign properties)\r\n * validated : a object which consists only of valid properties. (property name is inside the template and value has a correct type)\r\n * }\r\n * @param template The template according to which the options object shall be validated.\r\n * @param options The options object which shall be validated.\r\n * @param optionsDiff When provided the returned validated object will only have properties which are different to this objects properties.\r\n * Example (assume all properties are valid to the template):\r\n * Options object : { a: 'a', b: 'b', c: 'c' }\r\n * optionsDiff object : { a: 'a', b: 'b', c: undefined }\r\n * Returned validated object : { c: 'c' }\r\n * Because the value of the properties a and b didn't change, they aren't included in the returned object.\r\n * Without the optionsDiff object the returned validated object would be: { a: 'a', b: 'b', c: 'c' }\r\n * @param doWriteErrors True if errors shall be logged into the console, false otherwise.\r\n * @param propPath The propertyPath which lead to this object. (used for error logging)\r\n */\r\nconst validateRecursive = (\r\n template: OptionsTemplate,\r\n options: PartialOptions,\r\n doWriteErrors?: boolean,\r\n propPath?: string\r\n): OptionsValidationResult => {\r\n const validatedOptions: PartialOptions = {};\r\n const optionsCopy: PartialOptions = { ...options };\r\n const props = keys(template).filter((prop) => hasOwnProperty(options, prop));\r\n\r\n each(props, (prop: Extract) => {\r\n const optionsValue: any = options[prop];\r\n const templateValue: PlainObject | string | OptionsTemplateTypes | Array =\r\n template[prop];\r\n const templateIsComplex = isPlainObject(templateValue);\r\n const propPrefix = propPath ? `${propPath}.` : '';\r\n\r\n // if the template has a object as value, it means that the options are complex (verschachtelt)\r\n if (templateIsComplex && isPlainObject(optionsValue)) {\r\n const [validated, foreign] = validateRecursive(\r\n templateValue as T,\r\n optionsValue,\r\n doWriteErrors,\r\n propPrefix + prop\r\n );\r\n validatedOptions[prop] = validated as any;\r\n optionsCopy[prop] = foreign as any;\r\n\r\n each([optionsCopy, validatedOptions], (value) => {\r\n if (isEmptyObject(value[prop])) {\r\n delete value[prop];\r\n }\r\n });\r\n } else if (!templateIsComplex) {\r\n let isValid = false;\r\n const errorEnumStrings: Array = [];\r\n const errorPossibleTypes: Array = [];\r\n const optionsValueType = type(optionsValue);\r\n const templateValueArr: Array = !isArray(templateValue)\r\n ? [templateValue as string | OptionsTemplateTypes]\r\n : (templateValue as Array);\r\n\r\n each(templateValueArr, (currTemplateType) => {\r\n // if currType value isn't inside possibleTemplateTypes we assume its a enum string value\r\n let typeString: string | undefined;\r\n each(optionsTemplateTypes, (value: string, key: string) => {\r\n if (value === currTemplateType) {\r\n typeString = key;\r\n }\r\n });\r\n const isEnumString = isUndefined(typeString);\r\n if (isEnumString && isString(optionsValue)) {\r\n // split it into a array which contains all possible values for example: [\"yes\", \"no\", \"maybe\"]\r\n const enumStringSplit = currTemplateType.split(' ');\r\n isValid = !!enumStringSplit.find((possibility) => possibility === optionsValue);\r\n\r\n // build error message\r\n push(errorEnumStrings, enumStringSplit);\r\n } else {\r\n isValid = optionsTemplateTypes[optionsValueType] === currTemplateType;\r\n }\r\n\r\n // build error message\r\n push(errorPossibleTypes, isEnumString ? optionsTemplateTypes.string : typeString!);\r\n\r\n // continue if invalid, break if valid\r\n return !isValid;\r\n });\r\n\r\n if (isValid) {\r\n validatedOptions[prop] = optionsValue;\r\n } else if (doWriteErrors) {\r\n console.warn(\r\n `${\r\n `The option \"${propPrefix}${prop}\" wasn't set, because it doesn't accept the type [ ${optionsValueType.toUpperCase()} ] with the value of \"${optionsValue}\".\\r\\n` +\r\n `Accepted types are: [ ${errorPossibleTypes.join(', ').toUpperCase()} ].\\r\\n`\r\n }${\r\n errorEnumStrings.length > 0\r\n ? `\\r\\nValid strings are: [ ${errorEnumStrings.join(', ')} ].`\r\n : ''\r\n }`\r\n );\r\n }\r\n\r\n delete optionsCopy[prop];\r\n }\r\n });\r\n\r\n return [validatedOptions, optionsCopy]; // optionsCopy equals now to foreign options\r\n};\r\n\r\n/**\r\n * Validates the given options object according to the given template object and returns a tuple which looks like:\r\n * [\r\n * validated : a object which consists only of valid properties. (property name is inside the template and value has a correct type)\r\n * foreign : a object which consists of properties which aren't defined inside the template. (foreign properties)\r\n * ]\r\n * @param template The template according to which the options object shall be validated.\r\n * @param options The options object which shall be validated.\r\n * @param doWriteErrors True if errors shall be logged into the console, false otherwise.\r\n */\r\nconst validateOptions = (\r\n template: OptionsTemplate,\r\n options: PartialOptions,\r\n doWriteErrors?: boolean\r\n): OptionsValidationResult => validateRecursive(template, options, doWriteErrors);\r\n\r\nexport { validateOptions, optionsTemplateTypes };\r\n","import { OSPlugin } from 'plugins';\r\nimport {\r\n OSOptions,\r\n ResizeBehavior,\r\n OverflowBehavior,\r\n VisibilityBehavior,\r\n AutoHideBehavior,\r\n} from 'options';\r\nimport {\r\n validateOptions,\r\n OptionsTemplate,\r\n OptionsTemplateValue,\r\n optionsTemplateTypes as oTypes,\r\n} from 'plugins/optionsValidation/validation';\r\nimport { PartialOptions } from 'typings';\r\n\r\nconst numberAllowedValues: OptionsTemplateValue = oTypes.number;\r\nconst booleanAllowedValues: OptionsTemplateValue = oTypes.boolean;\r\nconst arrayNullValues: OptionsTemplateValue | null> = [oTypes.array, oTypes.null];\r\nconst stringArrayNullAllowedValues: OptionsTemplateValue | null> = [\r\n oTypes.string,\r\n oTypes.array,\r\n oTypes.null,\r\n];\r\nconst resizeAllowedValues: OptionsTemplateValue = 'none both horizontal vertical';\r\nconst overflowAllowedValues: OptionsTemplateValue =\r\n 'hidden scroll visible visible-hidden';\r\nconst scrollbarsVisibilityAllowedValues: OptionsTemplateValue =\r\n 'visible hidden auto';\r\nconst scrollbarsAutoHideAllowedValues: OptionsTemplateValue =\r\n 'never scroll leavemove';\r\n\r\nconst optionsTemplate: OptionsTemplate = {\r\n resize: resizeAllowedValues, // none || both || horizontal || vertical || n || b ||\r\n paddingAbsolute: booleanAllowedValues, // true || false\r\n updating: {\r\n elementEvents: arrayNullValues, // array of tuples || null\r\n attributes: arrayNullValues,\r\n debounce: [oTypes.number, oTypes.array, oTypes.null], // number || number array || null\r\n },\r\n overflow: {\r\n x: overflowAllowedValues, // visible-hidden || visible-scroll || hidden || scrol\r\n y: overflowAllowedValues, // visible-hidden || visible-scroll || hidden || scrol\r\n },\r\n scrollbars: {\r\n visibility: scrollbarsVisibilityAllowedValues, // visible || hidden || auto || v ||\r\n autoHide: scrollbarsAutoHideAllowedValues, // never || scroll || leave || move ||\r\n autoHideDelay: numberAllowedValues, // number\r\n dragScroll: booleanAllowedValues, // true || false\r\n clickScroll: booleanAllowedValues, // true || false\r\n touch: booleanAllowedValues, // true || false\r\n },\r\n textarea: {\r\n dynWidth: booleanAllowedValues, // true || false\r\n dynHeight: booleanAllowedValues, // true || false\r\n inheritedAttrs: stringArrayNullAllowedValues, // string || array || nul\r\n },\r\n nativeScrollbarsOverlaid: {\r\n show: booleanAllowedValues, // true || false\r\n initialize: booleanAllowedValues, // true || false\r\n },\r\n callbacks: {\r\n onUpdated: [oTypes.function, oTypes.null],\r\n },\r\n};\r\n\r\nexport type OptionsValidationPluginInstance = {\r\n _: (options: PartialOptions, doWriteErrors?: boolean) => PartialOptions;\r\n};\r\n\r\nexport const optionsValidationPluginName = '__osOptionsValidationPlugin';\r\n\r\nexport const optionsValidationPlugin: OSPlugin = [\r\n optionsValidationPluginName,\r\n {\r\n _: (options: PartialOptions, doWriteErrors?: boolean) => {\r\n const [validated, foreign] = validateOptions(optionsTemplate, options, doWriteErrors);\r\n return { ...foreign, ...validated };\r\n },\r\n },\r\n];\r\n","import { OverlayScrollbars } from 'overlayscrollbars';\r\n\r\nconst targets: Set = new Set();\r\nconst targetInstanceMap: WeakMap = new WeakMap();\r\n\r\n/**\r\n * Adds the given OverlayScrollbars instance to the given element.\r\n * @param target The element which is the target of the OverlayScrollbars instance.\r\n * @param osInstance The OverlayScrollbars instance.\r\n */\r\nexport const addInstance = (target: Element, osInstance: OverlayScrollbars): void => {\r\n targetInstanceMap.set(target, osInstance);\r\n targets.add(target);\r\n};\r\n\r\n/**\r\n * Removes a OverlayScrollbars instance from the given element.\r\n * @param target The element from which its OverlayScrollbars instance shall be removed.\r\n */\r\nexport const removeInstance = (target: Element): void => {\r\n targetInstanceMap.delete(target);\r\n targets.delete(target);\r\n};\r\n\r\n/**\r\n * Gets the OverlayScrollbars from the given element or undefined if it doesn't have one.\r\n * @param target The element of which its OverlayScrollbars instance shall be get.\r\n */\r\nexport const getInstance = (target: Element): OverlayScrollbars | undefined =>\r\n targetInstanceMap.get(target);\r\n\r\n/**\r\n * Gets a Map which represents all active OverayScrollbars instances.\r\n * The Key is the element and the value is the instance.\r\n */\r\nexport const allInstances = (): ReadonlyMap => {\r\n const validTargetInstanceMap: Map = new Map();\r\n\r\n targets.forEach((target: Element) => {\r\n /* istanbul ignore else */\r\n if (targetInstanceMap.has(target)) {\r\n validTargetInstanceMap.set(target, targetInstanceMap.get(target)!);\r\n }\r\n });\r\n\r\n targets.clear();\r\n\r\n validTargetInstanceMap.forEach((instance: OverlayScrollbars, validTarget: Element) => {\r\n targets.add(validTarget);\r\n });\r\n\r\n return validTargetInstanceMap;\r\n};\r\n","import { OSOptions } from 'options';\r\nimport { each, from, isArray, keys, XY } from 'support';\r\nimport { PartialOptions } from 'typings';\r\n/*\r\nonScrollStart : null,\r\nonScroll : null,\r\nonScrollStop : null,\r\nonOverflowChanged : null,\r\nonOverflowAmountChanged : null, // fusion with onOverflowChanged\r\nonDirectionChanged : null, // gone\r\nonContentSizeChanged : null, // gone\r\nonHostSizeChanged : null, // gone\r\n*/\r\n\r\nexport interface OnUpdatedEventListenerArgs {\r\n updateHints: {\r\n sizeChanged: boolean;\r\n hostMutation: boolean;\r\n contentMutation: boolean;\r\n directionChanged: boolean;\r\n heightIntrinsicChanged: boolean;\r\n };\r\n changedOptions: PartialOptions;\r\n force: boolean;\r\n}\r\n\r\nexport interface OnOverflowChangedEventListenerArgs {\r\n overflow: XY; // whether there is an overflow\r\n scrollableOverflow: XY; // whether there is an scrollable overflow\r\n amount: XY; // the overflow amount in pixel\r\n previous: {\r\n overflow: XY;\r\n scrollableOverflow: XY;\r\n amount: XY;\r\n };\r\n}\r\n\r\nexport interface EventListenerArgsMap {\r\n initialized: false;\r\n initializationWithdrawn: false;\r\n overflowChanged: OnOverflowChangedEventListenerArgs;\r\n updated: OnUpdatedEventListenerArgs;\r\n destroyed: false;\r\n}\r\n\r\nexport type OSEventListener = (\r\n args: EventListenerArgsMap[N]\r\n) => void;\r\n\r\nexport type AddEventListener = (\r\n name: N,\r\n listener: OSEventListener | OSEventListener[]\r\n) => () => void;\r\n\r\nexport type RemoveEventListener = (\r\n name?: N,\r\n listener?: OSEventListener | OSEventListener[]\r\n) => void;\r\n\r\nexport type TriggerEventListener = (\r\n name: N,\r\n args: EventListenerArgsMap[N]\r\n) => void;\r\n\r\nexport type EventListenersHub = [AddEventListener, RemoveEventListener, TriggerEventListener];\r\n\r\nexport type EventListenersMap = {\r\n [K in keyof EventListenerArgsMap]?: OSEventListener | OSEventListener[];\r\n};\r\n\r\nconst manageListener = (\r\n callback: (listener?: OSEventListener) => void,\r\n listener?: OSEventListener | OSEventListener[]\r\n) => {\r\n each(isArray(listener) ? listener : [listener], callback);\r\n};\r\n\r\nexport const createEventListenerHub = (\r\n initialEventListeners?: EventListenersMap\r\n): EventListenersHub => {\r\n const events = new Map>>();\r\n const removeEvent: RemoveEventListener = (name?, listener?) => {\r\n if (name) {\r\n const eventSet = events.get(name);\r\n\r\n manageListener((currListener) => {\r\n if (eventSet) {\r\n eventSet[currListener ? 'delete' : 'clear'](currListener!);\r\n }\r\n }, listener);\r\n } else {\r\n events.forEach((eventSet) => {\r\n eventSet.clear();\r\n });\r\n events.clear();\r\n }\r\n };\r\n const addEvent: AddEventListener = (name, listener) => {\r\n const eventSet = events.get(name) || new Set();\r\n events.set(name, eventSet);\r\n\r\n manageListener((currListener) => {\r\n eventSet.add(currListener!);\r\n }, listener);\r\n\r\n return removeEvent.bind(0, name, listener as any);\r\n };\r\n const triggerEvent: TriggerEventListener = (name, args?) => {\r\n const eventSet = events.get(name);\r\n\r\n each(from(eventSet), (event) => {\r\n if (args) {\r\n event(args);\r\n } else {\r\n (event as () => void)();\r\n }\r\n });\r\n };\r\n\r\n const initialListenerKeys = keys(initialEventListeners) as (keyof EventListenerArgsMap)[];\r\n each(initialListenerKeys, (key) => {\r\n addEvent(key, initialEventListeners![key] as any);\r\n });\r\n\r\n return [addEvent, removeEvent, triggerEvent];\r\n};\r\n","import { OSTarget, OSInitializationObject, PartialOptions } from 'typings';\r\nimport { assignDeep, isEmptyObject, each, isFunction, keys, isHTMLElement } from 'support';\r\nimport { createStructureSetup, StructureSetup } from 'setups/structureSetup';\r\nimport { createScrollbarsSetup, ScrollbarsSetup } from 'setups/scrollbarsSetup';\r\nimport { createLifecycleHub } from 'lifecycles/lifecycleHub';\r\nimport { getOptionsDiff, OSOptions } from 'options';\r\nimport { getEnvironment } from 'environment';\r\nimport {\r\n getPlugins,\r\n addPlugin,\r\n optionsValidationPluginName,\r\n OSPlugin,\r\n OptionsValidationPluginInstance,\r\n} from 'plugins';\r\nimport { addInstance, getInstance, removeInstance } from 'instances';\r\nimport {\r\n createEventListenerHub,\r\n EventListenersMap,\r\n AddEventListener,\r\n RemoveEventListener,\r\n} from 'eventListeners';\r\n\r\nexport interface OverlayScrollbarsStatic {\r\n (\r\n target: OSTarget | OSInitializationObject,\r\n options?: PartialOptions,\r\n eventListeners?: EventListenersMap\r\n ): OverlayScrollbars;\r\n\r\n extend(osPlugin: OSPlugin | OSPlugin[]): void;\r\n}\r\n\r\nexport interface OverlayScrollbars {\r\n options(): OSOptions;\r\n options(newOptions?: PartialOptions): OSOptions;\r\n\r\n update(force?: boolean): void;\r\n destroy(): void;\r\n\r\n state(): any;\r\n\r\n on: AddEventListener;\r\n off: RemoveEventListener;\r\n}\r\n\r\nexport const OverlayScrollbars: OverlayScrollbarsStatic = (\r\n target,\r\n options?,\r\n eventListeners?\r\n): OverlayScrollbars => {\r\n const { _getDefaultOptions, _nativeScrollbarIsOverlaid } = getEnvironment();\r\n const plugins = getPlugins();\r\n const instanceTarget = isHTMLElement(target) ? target : target.target;\r\n const potentialInstance = getInstance(instanceTarget);\r\n if (potentialInstance) {\r\n return potentialInstance;\r\n }\r\n\r\n const optionsValidationPlugin = plugins[\r\n optionsValidationPluginName\r\n ] as OptionsValidationPluginInstance;\r\n const validateOptions = (newOptions?: PartialOptions) => {\r\n const opts = newOptions || {};\r\n const validate = optionsValidationPlugin && optionsValidationPlugin._;\r\n return validate ? validate(opts, true) : opts;\r\n };\r\n const currentOptions: OSOptions = assignDeep({}, _getDefaultOptions(), validateOptions(options));\r\n const [addEvent, removeEvent, triggerEvent] = createEventListenerHub(eventListeners);\r\n\r\n if (\r\n _nativeScrollbarIsOverlaid.x &&\r\n _nativeScrollbarIsOverlaid.y &&\r\n !currentOptions.nativeScrollbarsOverlaid.initialize\r\n ) {\r\n triggerEvent('initializationWithdrawn', false);\r\n }\r\n\r\n const structureSetup: StructureSetup = createStructureSetup(target);\r\n const scrollbarsSetup: ScrollbarsSetup = createScrollbarsSetup(target, structureSetup);\r\n const lifecycleHub = createLifecycleHub(\r\n currentOptions,\r\n triggerEvent,\r\n structureSetup,\r\n scrollbarsSetup\r\n );\r\n\r\n const instance: OverlayScrollbars = {\r\n options(newOptions?: PartialOptions) {\r\n if (newOptions) {\r\n const changedOptions = getOptionsDiff(currentOptions, validateOptions(newOptions));\r\n\r\n if (!isEmptyObject(changedOptions)) {\r\n assignDeep(currentOptions, changedOptions);\r\n lifecycleHub._update(changedOptions);\r\n }\r\n }\r\n return currentOptions;\r\n },\r\n on: addEvent,\r\n off: removeEvent,\r\n state: () => lifecycleHub._state(),\r\n update(force?: boolean) {\r\n lifecycleHub._update({}, force);\r\n },\r\n destroy: () => {\r\n lifecycleHub._destroy();\r\n removeInstance(instanceTarget);\r\n removeEvent();\r\n triggerEvent('destroyed', false);\r\n },\r\n };\r\n\r\n each(keys(plugins), (pluginName) => {\r\n const pluginInstance = plugins[pluginName];\r\n if (isFunction(pluginInstance)) {\r\n pluginInstance(OverlayScrollbars, instance);\r\n }\r\n });\r\n\r\n instance.update(true);\r\n\r\n addInstance(instanceTarget, instance);\r\n\r\n triggerEvent('initialized', false);\r\n\r\n return instance;\r\n};\r\n\r\nOverlayScrollbars.extend = addPlugin;\r\n"],"names":["createCache","options","update","_initialValue","_equal","_alwaysUpdateValues","_value","_previous","cacheUpdateContextual","newValue","force","curr","newVal","changed","cacheUpdateIsolated","getCurrentCache","ElementNodeType","Node","ELEMENT_NODE","toString","hasOwnProperty","Object","prototype","isUndefined","obj","undefined","isNull","type","call","replace","toLowerCase","isNumber","isString","isBoolean","isFunction","isArray","Array","isObject","isArrayLike","length","lengthCorrectFormat","isPlainObject","key","cstr","ctor","ctorProto","hasOwnConstructor","hasIsPrototypeOf","isHTMLElement","instanceofObj","window","HTMLElement","nodeType","isElement","Element","each","source","callback","i","keys","indexOf","arr","item","fromIndex","push","array","items","arrayIsSingleItem","apply","from","result","Set","forEach","value","elm","isEmptyArray","runEach","p1","runFn","fn","prop","assignDeep","target","object1","object2","object3","object4","object5","object6","sources","copy","copyIsArray","src","clone","isEmptyObject","name","getSetProp","topLeft","fallback","attr","attrName","getAttribute","setAttribute","removeAttr","removeAttribute","scrollLeft","scrollTop","elmPrototype","find","selector","rootElm","document","querySelectorAll","is","matches","msMatchesSelector","contents","childNodes","parent","parentElement","before","parentElm","preferredAnchor","insertedElms","anchor","fragment","createDocumentFragment","insertedElm","previousSibling","appendChild","firstChild","nextSibling","insertBefore","appendChildren","node","children","prependChildren","insertedNodes","insertAfter","removeElements","nodes","e","removeChild","createDiv","classNames","div","createElement","createDOM","html","createdDiv","innerHTML","trim","firstLetterToUpper","str","charAt","toUpperCase","slice","getDummyStyle","style","cssPrefixes","jsPrefixes","jsCache","cssCache","cssProperty","uppercasedName","elmStyle","prefix","prefixWithoutDashes","resultPossibilities","resultPossibility","jsAPI","MutationObserverConstructor","IntersectionObserverConstructor","ResizeObserverConstructor","cAF","rAF","rnothtmlwhite","classListAction","className","action","clazz","classes","match","classList","addClass","add","removeClass","remove","diffClass","classNameA","classNameB","classNameASplit","split","classNameBSplit","tempObj","zeroObj","w","h","windowSize","innerWidth","innerHeight","offsetSize","offsetWidth","offsetHeight","clientSize","clientWidth","clientHeight","scrollSize","scrollWidth","scrollHeight","getBoundingClientRect","passiveEventsSupport","supportPassiveEvents","addEventListener","defineProperty","get","splitEventNames","eventNames","off","listener","capture","eventName","removeEventListener","on","doSupportPassiveEvents","passive","_passive","_capture","once","_once","offListeners","nativeOptions","finalListener","evt","bind","stopPropagation","preventDefault","stopAndPrevent","equal","a","b","props","propMutation","compareA","compareB","equalWH","equalXY","equalTRBL","equalBCRWH","round","Math","clearTimeouts","id","clearTimeout","noop","debounce","functionToDebounce","timeoutId","maxTimeoutId","prevArguments","latestArguments","_timeout","_maxDelay","_mergeParams","setT","setTimeout","invokeFunctionToDebounce","args","mergeParms","flush","debouncedFn","arguments","finalTimeout","hasTimeout","finalMaxWait","hasMaxWait","setTimeoutFn","mergeParamsResult","invokedArgs","boundInvoke","_flush","cssNumber","opacity","zindex","parseToZeroOrNumber","toFloat","num","parseFloat","parseInt","Number","isNaN","adaptCSSVal","val","getCSSVal","computedStyle","getPropertyValue","setCSSVal","setProperty","styles","getSingleStyle","getStyles","getStylesResult","getComputedStyle","reduce","topRightBottomLeft","propertyPrefix","propertySuffix","finalPrefix","finalSuffix","top","right","bottom","left","t","r","l","x","y","absoluteCoordinates","rect","pageYOffset","pageXOffset","classNameEnvironment","classNameEnvironmentFlexboxGlue","classNameEnvironmentFlexboxGlueMax","classNameHost","classNamePadding","classNameViewport","classNameViewportArrange","classNameContent","classNameViewportScrollbarStyling","classNameSizeObserver","classNameSizeObserverAppear","classNameSizeObserverListener","classNameSizeObserverListenerScroll","classNameSizeObserverListenerItem","classNameSizeObserverListenerItemFinal","classNameTrinsicObserver","classNameScrollbar","classNameScrollbarHorizontal","classNameScrollbarVertical","classNameScrollbarTrack","classNameScrollbarHandle","_extends","module","assign","exports","__esModule","stringify","JSON","_","Error","defaultOptions","resize","paddingAbsolute","updating","elementEvents","attributes","overflow","scrollbars","visibility","autoHide","autoHideDelay","dragScroll","clickScroll","touch","textarea","dynWidth","dynHeight","inheritedAttrs","nativeScrollbarsOverlaid","show","initialize","callbacks","onUpdated","getOptionsDiff","currOptions","newOptions","diff","optionsKeys","concat","optionKey","currOptionValue","newOptionValue","isDiff","environmentInstance","abs","diffBiggerThanOne","valOne","valTwo","absValOne","absValTwo","getNativeScrollbarSize","body","measureElm","cSize","oSize","getNativeScrollbarStyling","testElm","ex","getRtlScrollBehavior","childElm","strHidden","overflowX","overflowY","direction","parentOffset","childOffset","childOffsetAfterScroll","n","getFlexboxGlue","minOffsetsizeParent","minOffsetsize","supportsMin","maxOffsetsizeParent","maxOffsetsize","supportsMax","getWindowDPR","dDPI","screen","deviceXDPI","sDPI","logicalXDPI","devicePixelRatio","getDefaultInitializationStrategy","nativeScrollbarStyling","_host","_viewport","_padding","_content","_scrollbarsSlot","createEnvironment","envDOM","envElm","envChildElm","onChangedListener","nativeScrollbarSize","nativeScrollbarIsOverlaid","defaultInitializationStrategy","initializationStrategy","defaultDefaultOptions","env","_nativeScrollbarSize","_nativeScrollbarIsOverlaid","_nativeScrollbarStyling","_cssCustomProperties","_rtlScrollBehavior","_flexboxGlue","_addListener","_removeListener","delete","_getInitializationStrategy","_setInitializationStrategy","newInitializationStrategy","_getDefaultOptions","_setDefaultOptions","newDefaultOptions","_defaultInitializationStrategy","_defaultDefaultOptions","size","dpr","scrollbarSize","sizeNew","deltaSize","deltaAbsSize","deltaAbsRatio","dprNew","deltaIsBigger","difference","dprChanged","isZoom","newScrollbarSize","getEnvironment","contentArrangeCounter","unwrap","createUniqueViewportArrangeElement","create","staticCreationFromStrategy","initializationValue","strategy","elementClass","dynamicCreationFromStrategy","defaultValue","takeInitializationValue","createStructureSetup","hostInitializationStrategy","viewportInitializationStrategy","paddingInitializationStrategy","contentInitializationStrategy","targetIsElm","targetStructureInitialization","targetElement","isTextarea","isBody","ownerDocument","bodyElm","wnd","defaultView","evaluatedTargetObj","_target","host","viewport","padding","content","_viewportArrange","ctx","_windowElm","_documentElm","_htmlElm","_bodyElm","_isTextarea","_isBody","_targetIsElm","generatedElements","elementIsGenerated","destroyFns","isTextareaHostGenerated","targetContents","contentSlot","_targetObj","_targetCtx","_destroy","generateScrollbarDOM","scrollbarClassName","scrollbar","track","handle","_scrollbar","_track","_handle","createScrollbarsSetup","structureSetup","environmentScrollbarSlot","initializationScrollbarSlot","scrollbarsSlot","initializationScrollbarSlotResult","evaluatedScrollbarSlot","horizontalScrollbarStructure","verticalScrollbarStructure","horizontalScrollbar","verticalScrollbar","_horizontalScrollbarStructure","_verticalScrollbarStructure","animationStartEventName","scrollEventName","scrollAmount","getElmDirectionIsRTL","domRectHasDimensions","height","width","createSizeObserver","onSizeChangedCallback","_direction","observeDirectionChange","_appear","observeAppearChange","rtlScrollBehavior","baseElements","sizeObserver","listenerElement","getIsDirectionRTL","updateResizeObserverContentRectCache","currVal","onSizeChangedCallbackProxy","sizeChangedContext","isResizeObserverCall","hasDirectionCache","skip","appear","doDirectionScroll","currRContentRect","prevContentRect","pop","contentRect","hasDimensions","hadDimensions","rtl","_sizeChanged","_directionIsRTLCache","appearCallback","directionIsRTLCache","resizeObserverInstance","observe","disconnect","observerElementChildren","observerElementChildrenRoot","shrinkElement","lastChild","expandElement","expandElementChild","cacheSize","currSize","isDirty","rAFId","reset","onResized","onScroll","scrollEvent","updateDirectionIsRTLCache","event","directionIsRTLCacheValues","directionIsRTL","directionIsRTLChanged","isHeightIntrinsic","ioEntryOrSize","isIntersecting","intersectionRatio","createTrinsicObserver","onTrinsicChangedCallback","trinsicObserver","updateHeightIntrinsicCache","triggerOnTrinsicChangedCallback","updateValue","heightIntrinsic","heightIntrinsicChanged","intersectionObserverInstance","entries","root","onSizeChanged","newSize","createEventContentChange","eventContentChange","map","destroyed","_updateElements","getElements","eventElmList","elements","entry","entryEventNames","entryOff","set","WeakMap","createDOMObserver","isContentObserver","isConnected","_attributes","_styleChangingAttributes","_eventContentChange","_nestedTargetSelector","_ignoreTargetChange","_ignoreNestedTargetChange","_ignoreContentChange","destroyEventContentChange","updateEventContentChangeElements","finalAttributes","finalStyleChangingAttributes","observedAttributes","observerCallback","mutations","ignoreTargetChange","ignoreContentChange","targetChangedAttrs","totalAddedNodes","targetStyleChanged","contentChanged","childListChanged","mutation","attributeName","mutationTarget","oldValue","addedNodes","isAttributesType","isChildListType","targetIsMutationTarget","attributeValue","attributeChanged","styleChangingAttrChanged","notOnlyAttrChanged","contentAttrChanged","isNestedTarget","baseAssertion","contentFinalChanged","mutationObserver","attributeOldValue","attributeFilter","subtree","childList","characterData","_update","takeRecords","ignorePrefix","viewportAttrsFromTarget","baseStyleChangingAttrsTextarea","baseStyleChangingAttrs","addedOrRemovedClass","lifecycleHubOservers","instance","updateLifecycles","debounceTimeout","debounceMaxDelay","contentMutationObserver","_structureSetup","contentMutationObserverAttr","updateLifecyclesWithDebouncedAdaptiveUpdateHints","prev","prevSizeChanged","_hostMutation","prevHostMutation","_contentMutation","prevContentMutation","currSizeChanged","currvHostMutation","currContentMutation","merged","updateViewportAttrsFromHost","attribute","hostAttr","onTrinsicChanged","_heightIntrinsic","updateFn","_directionIsRTL","onContentMutation","contentChangedTroughEvent","onHostMutation","destroyTrinsicObserver","destroySizeObserver","hostMutationObserver","updateOptions","checkOption","elementEventsChanged","attributesChanged","debounceValue","debounceChanged","updateContentMutationObserver","timeout","maxWait","createTrinsicLifecycle","lifecycleHub","updateHints","display","createPaddingLifecycle","_setLifecycleCommunication","updatePaddingCache","currentPaddingCache","paddingChanged","directionChanged","paddingAbsoluteChanged","contentMutation","paddingStyleChanged","paddingRelative","paddingHorizontal","paddingVertical","paddingStyle","marginRight","marginBottom","marginLeft","viewportStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","_paddingInfo","_absolute","_viewportPaddingStyle","_paddingStyleChanged","max","overlaidScrollbarsHideOffset","whCacheOptions","xyCacheOptions","sizeFraction","viewportOffsetSize","viewportRect","fractionalPixelRatioTollerance","setAxisOverflowStyle","horizontal","overflowAmount","behavior","styleObj","overflowKey","behaviorIsVisible","behaviorIsVisibleHidden","behaviorIsScroll","hasOverflow","_visible","_behavior","getOverflowAmount","viewportScrollSize","viewportClientSize","viewportSizeFraction","createOverflowLifecycle","_doViewportArrange","_getLifecycleCommunication","updateViewportSizeFraction","getCurrentViewportSizeFraction","updateViewportScrollSizeCache","getCurrentViewportScrollSizeCache","updateOverflowAmountCache","getCurrentOverflowAmountCache","updateOverflowScrollCache","fixFlexboxGlue","viewportOverflowState","_overflowScroll","_scrollbarsHideOffset","hostSizeFraction","hostClientSize","isContentBox","fractionalClientHeight","subtractXScrollbar","getViewportOverflowState","showNativeOverlaidScrollbars","viewportStyleObj","overlaidX","overlaidY","determineOverflow","arrangeHideOffset","scroll","nonScrollbarStylingHideOffset","scrollbarsHideOffset","_scrollbarsHideOffsetArrange","setViewportOverflowState","xVisible","xVisibleBehavior","yVisible","yVisibleBehavior","arrangeViewport","arrangeX","arrangeY","hideOffsetX","hideOffsetY","viewportPaddingStyle","viewportArrangeHorizontalPaddingKey","viewportArrangeHorizontalPaddingValue","viewportArrangeVerticalPaddingValue","fractionalContentWidth","fractionalContenHeight","arrangeSize","sheet","cssRules","insertRule","ruleStyle","hideNativeScrollbars","viewportArrange","horizontalMarginKey","viewportHorizontalPaddingKey","horizontalMarginValue","verticalMarginValue","horizontalPaddingValue","verticalPaddingValue","undoViewportArrange","finalViewportOverflowState","finalPaddingStyle","assignProps","prevStyle","showNativeOverlaidScrollbarsOption","showNativeOverlaidScrollbarsChanged","adjustFlexboxGlue","viewportSizeFractionCache","viewportScrollSizeCache","overflowAmuntCache","preMeasureViewportOverflowState","redoViewportArrange","undoViewportArrangeOverflowState","viewportSizeFractionCahnged","viewportScrollSizeChanged","viewportContentSize","arrangedViewportScrollSize","arrangedViewportClientSize","viewportSizeFractionChanged","overflowAmountChanged","overflowChanged","viewportArranged","_viewportOverflowScrollCache","_viewportOverflowAmountCache","getPropByPath","path","o","applyForceToCache","cacheValues","booleanCacheValuesFallback","lifecycleCommunicationFallback","prepareUpdateHints","leading","adaptive","finalAdaptive","objKeys","leadingValue","adaptiveValue","createOverflowChangedArgs","overflowScroll","amount","scrollableOverflow","createLifecycleHub","triggerListener","scrollbarsSetup","lifecycleCommunication","updateObserverOptions","destroyObservers","addEnvironmentListener","removeEnvironmentListener","doViewportArrange","_options","newLifecycleCommunication","lifecycles","changedOptions","initialUpdateHints","adjustScrollOffset","scrollOffsetX","scrollOffsetY","adaptivedUpdateHints","lifecycle","overflowAmountCache","overflowScrollCache","prevOverflowAmount","overflowScrollChanged","prevOverflowScroll","previous","sizeChanged","hostMutation","envUpdateListener","_state","_overflowAmount","pluginRegistry","getPlugins","addPlugin","addedPlugin","plugin","templateTypePrefixSuffix","optionsTemplateTypes","numberAllowedValues","oTypes","number","booleanAllowedValues","boolean","arrayNullValues","null","stringArrayNullAllowedValues","string","resizeAllowedValues","overflowAllowedValues","scrollbarsVisibilityAllowedValues","scrollbarsAutoHideAllowedValues","function","optionsValidationPluginName","targets","targetInstanceMap","addInstance","osInstance","removeInstance","getInstance","manageListener","createEventListenerHub","initialEventListeners","events","Map","removeEvent","eventSet","currListener","clear","addEvent","triggerEvent","initialListenerKeys","OverlayScrollbars","eventListeners","plugins","instanceTarget","potentialInstance","optionsValidationPlugin","validateOptions","opts","validate","currentOptions","state","destroy","pluginName","pluginInstance","extend"],"mappings":"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"} \ No newline at end of file diff --git a/packages/overlayscrollbars/dist/overlayscrollbars.esm.min.js b/packages/overlayscrollbars/dist/overlayscrollbars.esm.min.js index 789395b..c96c720 100644 --- a/packages/overlayscrollbars/dist/overlayscrollbars.esm.min.js +++ b/packages/overlayscrollbars/dist/overlayscrollbars.esm.min.js @@ -1 +1 @@ -function t(t,e){const{o:n,s:r,u:o}=t;let i,s=n;const a=(t,e)=>{const n=s,a=t,l=e||(r?!r(n,a):n!==a);return(l||o)&&(s=a,i=n),[s,l,i]};return[e?t=>a(e(s,i),t):a,t=>[s,!!t,i]]}const e=Node.ELEMENT_NODE,{toString:n,hasOwnProperty:r}=Object.prototype;function o(t){return void 0===t}function i(t){return null===t}function s(t){return"number"==typeof t}function a(t){return"string"==typeof t}function l(t){return"boolean"==typeof t}function c(t){return"function"==typeof t}function u(t){return Array.isArray(t)}function d(t){return"object"==typeof t&&!u(t)&&!i(t)}function _(t){const e=!!t&&t.length,n=s(e)&&e>-1&&e%1==0;return!!(u(t)||!c(t)&&n)&&(!(e>0&&d(t))||e-1 in t)}function g(t){if(!t||!d(t)||"object"!==(t=>o(t)||i(t)?`${t}`:n.call(t).replace(/^\[object (.+)\]$/,"$1").toLowerCase())(t))return!1;let e;const s="constructor",a=t[s],l=a&&a.prototype,c=r.call(t,s),u=l&&r.call(l,"isPrototypeOf");if(a&&!c&&!u)return!1;for(e in t);return o(e)||r.call(t,e)}function f(t){const n=window.HTMLElement;return!!t&&(n?t instanceof n:t.nodeType===e)}function h(t){const n=window.Element;return!!t&&(n?t instanceof n:t.nodeType===e)}function v(t,e){if(_(t))for(let n=0;ne(t[n],n,t));return t}const p=(t,e,n)=>t.indexOf(e,n),b=(t,e,n)=>(n||a(e)||!_(e)?t.push(e):Array.prototype.push.apply(t,e),t),w=t=>{if(Array.from&&t)return Array.from(t);const e=[];return t instanceof Set?t.forEach(t=>{b(e,t)}):v(t,t=>{b(e,t)}),e},y=t=>!!t&&0===t.length,m=(t,e)=>{const n=t=>t&&t(e);t instanceof Set?t.forEach(n):v(t,n)},S=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),x=t=>t?Object.keys(t):[];function O(t,e,n,r,o,s,a){const l=[e,n,r,o,s,a];return"object"==typeof t&&!i(t)||c(t)||(t={}),v(l,e=>{v(x(e),n=>{const r=e[n];if(t===r)return!0;const o=u(r);if(r&&(g(r)||o)){const e=t[n];let i=e;o&&!u(e)?i=[]:o||g(e)||(i={}),t[n]=O(i,r)}else t[n]=r})}),t}function C(t,e,n,r){if(o(r))return n?n[t]:e;n&&(n[t]=r)}function $(t,e,n){if(o(n))return t?t.getAttribute(e):null;t&&t.setAttribute(e,n)}const z=(t,e)=>{t&&t.removeAttribute(e)};function I(t,e){return C("scrollLeft",0,t,e)}function L(t,e){return C("scrollTop",0,t,e)}const M=Element.prototype,A=(t,e)=>{const n=[],r=e?h(e)?e:null:document;return r?b(n,r.querySelectorAll(t)):n},T=(t,e)=>{if(h(t)){return(M.matches||M.msMatchesSelector).call(t,e)}return!1},R=t=>t?w(t.childNodes):[],j=t=>t?t.parentElement:null,V=(t,e,n)=>{if(n){let r,o=e;t&&(_(n)?(r=document.createDocumentFragment(),v(n,t=>{t===o&&(o=t.previousSibling),r.appendChild(t)})):r=n,e&&(o?o!==e&&(o=o.nextSibling):o=t.firstChild),t.insertBefore(r,o||null))}},P=(t,e)=>{V(t,null,e)},E=(t,e)=>{V(t,t&&t.firstChild,e)},H=(t,e)=>{V(j(t),t&&t.nextSibling,e)},B=t=>{if(_(t))v(w(t),t=>B(t));else if(t){const e=j(t);e&&e.removeChild(t)}},k=t=>{const e=document.createElement("div");return t&&$(e,"class",t),e},D=t=>{const e=k();return e.innerHTML=t.trim(),v(R(e),t=>B(t))},N=t=>t.charAt(0).toUpperCase()+t.slice(1),G=["-webkit-","-moz-","-o-","-ms-"],q=["WebKit","Moz","O","MS","webkit","moz","o","ms"],Y={},F={},W=t=>{let e=F[t];if(S(F,t))return e;const n=N(t),r=k().style;return v(G,o=>{const i=o.replace(/-/g,""),s=[t,o+t,i+n,N(i)+n];return!(e=s.find(t=>void 0!==r[t]))}),F[t]=e||""},X=t=>{let e=Y[t]||window[t];return S(Y,t)||(v(q,n=>(e=e||window[n+N(t)],!e)),Y[t]=e),e},U=X("MutationObserver"),J=X("IntersectionObserver"),K=X("ResizeObserver"),Q=X("cancelAnimationFrame"),Z=X("requestAnimationFrame"),tt=/[^\x20\t\r\n\f]+/g,et=(t,e,n)=>{let r,o=0,i=!1;if(t&&a(e)){const s=e.match(tt)||[];for(i=s.length>0;r=s[o++];)i=!!n(t.classList,r)&&i}return i},nt=(t,e)=>{et(t,e,(t,e)=>t.add(e))},rt=(t,e)=>{et(t,e,(t,e)=>t.remove(e))},ot={w:0,h:0},it=()=>({w:window.innerWidth,h:window.innerHeight}),st=t=>t?{w:t.offsetWidth,h:t.offsetHeight}:ot,at=t=>t?{w:t.clientWidth,h:t.clientHeight}:ot,lt=t=>t?{w:t.scrollWidth,h:t.scrollHeight}:ot,ct=t=>t.getBoundingClientRect();let ut;const dt=t=>t.split(" "),_t=(t,e,n,r)=>{v(dt(e),e=>{t.removeEventListener(e,n,r)})},gt=(t,e,n,r)=>{const i=(()=>{if(o(ut)){ut=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){ut=!0}}))}catch(t){}}return ut})(),s=i&&r&&r._||!1,a=r&&r.g||!1,l=r&&r.v||!1,c=[],u=i?{passive:s,capture:a}:a;return v(dt(e),e=>{const r=l?o=>{t.removeEventListener(e,r,a),n&&n(o)}:n;b(c,_t.bind(null,t,e,r,a)),t.addEventListener(e,r,u)}),m.bind(0,c)},ft=t=>(t=>t.stopPropagation())(t)||(t=>t.preventDefault())(t),ht=(t,e,n,r)=>{if(t&&e){let o=!0;return v(n,n=>{(r?r(t[n]):t[n])!==(r?r(e[n]):e[n])&&(o=!1)}),o}return!1},vt=(t,e)=>ht(t,e,["w","h"]),pt=(t,e)=>ht(t,e,["t","r","b","l"]),bt=(t,e,n)=>ht(t,e,["width","height"],n&&(t=>Math.round(t))),wt=t=>{t&&window.clearTimeout(t),t&&Q(t)},yt=()=>{},mt=(t,e)=>{let n,r,o,i;const{p:a,m:l,S:u}=e||{},d=window.setTimeout,_=function(e){wt(n),wt(r),r=n=o=void 0,t.apply(this,e)},g=t=>u&&o?u(o,t):t,f=()=>{n&&_(g(i)||i)},h=function(){const t=w(arguments),e=c(a)?a():a,u=s(e)&&e>=0;if(u){const a=c(l)?l():l,u=s(a)&&a>=0,h=e>0?d:Z,v=g(t)||t,p=_.bind(0,v);wt(n),n=h(p,e),u&&!r&&(r=d(f,a)),o=i=v}else _(t)};return h.O=f,h},St={opacity:1,zindex:1},xt=(t,e)=>{const n=e?parseFloat(t):parseInt(t,10);return Number.isNaN(n)?0:n},Ot=(t,e,n)=>null!=e?e[n]||e.getPropertyValue(n):t.style[n],Ct=(t,e,n)=>{try{if(t){const{style:r}=t;o(r[e])?r.setProperty(e,n):r[e]=((t,e)=>!St[t.toLowerCase()]&&s(e)?`${e}px`:e)(e,n)}}catch(r){}};function $t(t,e){const n=a(e);if(u(e)||n){let r=n?"":{};if(t){const o=window.getComputedStyle(t,null);r=n?Ot(t,o,e):e.reduce((e,n)=>(e[n]=Ot(t,o,n),e),r)}return r}v(x(e),n=>Ct(t,n,e[n]))}const zt=(t,e,n)=>{const r=e?`${e}-`:"",o=n?`-${n}`:"",i=`${r}top${o}`,s=`${r}right${o}`,a=`${r}bottom${o}`,l=`${r}left${o}`,c=$t(t,[i,s,a,l]);return{t:xt(c[i]),r:xt(c[s]),b:xt(c[a]),l:xt(c[l])}},It={x:0,y:0},Lt=t=>{const e=t?ct(t):0;return e?{x:e.left+window.pageYOffset,y:e.top+window.pageXOffset}:It},Mt="os-environment",At=`${Mt}-flexbox-glue`,Tt=`${At}-max`,Rt="os-host",jt="os-padding",Vt="os-viewport",Pt=`${Vt}-arrange`,Et="os-content",Ht=`${Vt}-scrollbar-styled`,Bt="os-size-observer",kt=`${Bt}-appear`,Dt=`${Bt}-listener`,Nt=`${Dt}-scroll`,Gt=`${Dt}-item`,qt=`${Gt}-final`,Yt="os-trinsic-observer",Ft="os-scrollbar",Wt=`${Ft}-horizontal`,Xt=`${Ft}-vertical`,Ut="os-scrollbar-track",Jt="os-scrollbar-handle";var Kt={exports:{}};!function(t){function e(){return t.exports=e=Object.assign?Object.assign.bind():function(t){for(var e=1;eJSON.stringify(t,(t,e)=>{if(c(e))throw new Error;return e}),ee={resize:"none",paddingAbsolute:!1,updating:{elementEvents:[["img","load"]],attributes:null,debounce:[0,33]},overflow:{x:"scroll",y:"scroll"},scrollbars:{visibility:"auto",autoHide:"never",autoHideDelay:800,dragScroll:!0,clickScroll:!1,touch:!0},textarea:{dynWidth:!1,dynHeight:!1,inheritedAttrs:["style","class"]},nativeScrollbarsOverlaid:{show:!1,initialize:!1},callbacks:{onUpdated:null}},ne=(t,e)=>{const n={};return v(x(e).concat(x(t)),r=>{const o=t[r],i=e[r];if(d(o)&&d(i))O(n[r]={},ne(o,i));else if(S(e,r)&&i!==o){let t=!0;if(u(o)||u(i))try{te(o)===te(i)&&(t=!1)}catch(s){}t&&(n[r]=i)}}),n};let re;const{abs:oe,round:ie}=Math,se=(t,e)=>{P(t,e);const n=at(e),r=st(e);return{x:r.h-n.h,y:r.w-n.w}},ae=(t,e)=>{const n="hidden";$t(t,{overflowX:n,overflowY:n,direction:"rtl"}),I(t,0);const r=Lt(t),o=Lt(e);I(t,-999);const i=Lt(e);return{i:r.x===o.x,n:o.x!==i.x}},le=(t,e)=>{nt(t,At);const n=ct(t),r=ct(e),o=bt(r,n,!0);nt(t,Tt);const i=ct(t),s=ct(e),a=bt(s,i,!0);return o&&a},ce=()=>{const t=window.screen.deviceXDPI||0,e=window.screen.logicalXDPI||1;return window.devicePixelRatio||t/e},ue=()=>{const{body:t}=document,e=D(`
`)[0],n=e.firstChild,r=new Set,o=se(t,e),i=(t=>{let e=!1;nt(t,Ht);try{e="none"===$t(t,W("scrollbar-width"))||"none"===window.getComputedStyle(t,"::-webkit-scrollbar").getPropertyValue("display")}catch(n){}return e})(e),s={x:0===o.x,y:0===o.y},a={$:null,I:null,L:null,M:null,A:null};let l=a,c=ee;const u={T:o,R:s,j:i,V:"-1"===$t(e,"zIndex"),P:ae(e,n),H:le(e,n),B(t){r.add(t)},k(t){r.delete(t)},D:()=>Qt({},l),N(t){l=O({},l,t)},G:()=>Qt({},c),q(t){c=O({},c,t)},Y:a,F:c};if(z(e,"style"),B(e),!(i||s.x&&s.y)){let n=it(),i=ce(),s=o;window.addEventListener("resize",()=>{if(r.size){const o=it(),a={w:o.w-n.w,h:o.h-n.h};if(0===a.w&&0===a.h)return;const l={w:oe(a.w),h:oe(a.h)},c={w:oe(ie(o.w/(n.w/100))),h:oe(ie(o.h/(n.h/100)))},u=ce(),d=l.w>2&&l.h>2,_=!((t,e)=>{const n=oe(t),r=oe(e);return!(n===r||n+1===r||n-1===r)})(c.w,c.h),g=u!==i&&i>0;if(d&&_&&g){const n=re.T=se(t,e);B(e),s.x===n.x&&s.y===n.y||m(r),s=n}n=o,i=u}})}return u},de=()=>(re||(re=ue()),re);let _e=0;const ge=t=>{P(j(t),R(t)),B(t)},fe=()=>{const{j:t,R:e,V:n}=de(),r=!!(!n&&!t&&(e.x||e.y))&&document.createElement("style");return r&&($(r,"id",`${Pt}-${_e}`),_e++),r},he=(t,e,n,r)=>e||(c(n)?n(t):n)||k(r),ve=(t,e,n,r,o)=>{const i=l(e)||e?e:c(n)?n(t):n;return null===i?!!o&&k(r):!0===i?k(r):i},pe=t=>{const{D:e,j:n}=de(),{$:r,I:o,L:i,M:s}=e(),a=f(t),l=t,c=a?t:l.target,u=T(c,"textarea"),d=!u&&T(c,"body"),_=c.ownerDocument,g=_.body,h=_.defaultView,v={W:c,$:u?he(c,l.host,r,Rt):c,I:he(c,l.viewport,o,Vt),L:ve(c,l.padding,i,jt,!n),M:ve(c,l.content,s,Et,!1),X:fe()},w={U:h,J:_,K:j(g),Z:g,tt:u,et:d,nt:a},y=x(v).reduce((t,e)=>{const n=v[e];return b(t,!(!n||j(n))&&n)},[]),S=t=>t?p(y,t)>-1:null,{W:O,$:C,L:$,I:z,M:I,X:L}=v,M=[],A=u&&S(C),E=u?O:R([I,z,$,C,O].find(t=>!1===S(t))),k=I||z;var D,N;return A&&(H(O,C),b(M,()=>{H(C,O),B(C)})),P(k,E),P(C,$),P($||C,z),P(z,I),nt(C,Rt),nt($,jt),nt(z,Vt),nt(I,Et),b(M,()=>{a?(P(C,R(k)),B($||z),rt(C,Rt)):(S(I)&&ge(I),S(z)&&ge(z),S($)&&ge($),rt(C,Rt),rt($,jt),rt(z,Vt),rt(I,Et))}),n&&b(M,rt.bind(0,z,Ht)),L&&(N=L,V(j(D=z),D,N),b(M,B.bind(0,L))),{rt:v,ot:w,it:()=>{m(M)}}},be=t=>{const e=k(`${Ft} ${t}`),n=k(Ut),r=k(Jt);return P(e,n),P(n,r),{st:e,lt:n,ct:r}},we="animationstart",ye="scroll",me=3333333,Se=t=>"rtl"===$t(t,"direction"),xe=t=>t&&(t.height||t.width),Oe=(e,n,r)=>{const{ut:o=!1,dt:i=!1}=r||{},{P:s}=de(),a=D(`
`)[0],c=a.firstChild,_=Se.bind(0,a),[g]=t({o:void 0,u:!0,s:(t,e)=>!(!t||!xe(t)&&xe(e))}),f=t=>{const e=u(t)&&t.length>0&&d(t[0]),r=!e&&l(t[0]);let i=!1,c=!1,_=!0;if(e){const[e,,n]=g(t.pop().contentRect),r=xe(e),o=xe(n);i=!n||!r,c=!o&&r,_=!i}else r?[,_]=t:c=!0===t;if(o&&_){const e=r?t[0]:Se(a);I(a,e?s.n?-me:s.i?0:me:me),L(a,me)}i||n({_t:!r,gt:r?t:void 0,dt:!!c})},h=[];let v,p=!!i&&f;if(K){const t=new K(f);t.observe(c),b(h,()=>{t.disconnect()})}else{const t=D(`
`);P(c,t),nt(c,Nt);const e=t[0],n=e.lastChild,r=e.firstChild,o=null==r?void 0:r.firstChild;let s,a=st(e),l=a,u=!1;const d=()=>{I(r,me),L(r,me),I(n,me),L(n,me)},_=t=>{s=0,u&&(a=l,f(!0===t))},g=t=>{l=st(e),u=!t||!vt(l,a),t?(ft(t),u&&!s&&(Q(s),s=Z(_))):_(!1===t),d()};b(h,[gt(r,ye,g),gt(n,ye,g)]),$t(o,{width:me,height:me}),d(),p=i?g.bind(0,!1):d}if(o){v=t({o:!_()},_);const[e]=v;b(h,gt(a,ye,t=>{const n=e(),[r,o]=n;o&&(rt(c,"ltr rtl"),nt(c,r?"rtl":"ltr"),f(n)),ft(t)}))}return p&&(nt(a,kt),b(h,gt(a,we,p,{v:!!K}))),E(e,a),{it(){m(h),B(a)},ft:t=>({ht:v?v[1](t):[!1,!1,!1]})}},Ce=(t,e,n,r)=>{let o=!1;const{vt:i,pt:s,bt:l,wt:c,yt:u,St:d,xt:_}=r||{},{it:g,Ot:f}=((t,e,n)=>{let r,o=!1;const i=i=>{if(n){v(n.reduce((e,n)=>{if(n){const r=n[0],o=n[1],s=o&&r&&(i?i(r):A(r,t));s&&s.length&&o&&a(o)&&b(e,[s,o.trim()],!0)}return e},[]),t=>v(t[0],n=>{const i=t[1],s=r.get(n);if(s){const t=s[0],e=s[1];t===i&&e()}const a=gt(n,i,t=>{o?(a(),r.delete(n)):e(t)});r.set(n,[i,a])}))}};return n&&(r=new WeakMap,i()),{it:()=>{o=!0},Ot:i}})(t,mt(()=>{o&&n(!0)},{p:33,m:99}),l),h=s||[],w=(i||[]).concat(h),m=o=>{const i=(e?d:u)||yt,s=_||yt,l=[],g=[];let w=!1,m=!1,S=!1;v(o,n=>{const{attributeName:o,target:u,type:d,oldValue:_,addedNodes:f}=n,v="attributes"===d,y="childList"===d,x=t===u,O=v&&a(o)?$(u,o):0,C=0!==O&&_!==O,z=p(h,o)>-1&&C;if(e&&!x){const e=!v,a=v&&z,l=a&&c&&T(u,c),d=(l?!i(u,o,_,O):e||a)&&!s(n,!!l,t,r);b(g,f),m=m||d,S=S||y}!e&&x&&C&&!i(u,o,_,O)&&(b(l,o),w=w||z)}),S&&!y(g)&&f(t=>g.reduce((e,n)=>(b(e,A(t,n)),T(n,t)?b(e,n):e),[])),e?m&&n(!1):y(l)&&!w||n(l,w)},S=new U(m);return S.observe(t,{attributes:!0,attributeOldValue:!0,attributeFilter:w,subtree:e,childList:e,characterData:e}),o=!0,{it:()=>{o&&(g(),S.disconnect(),o=!1)},Ct:()=>{o&&m(S.takeRecords())}}},$e="os-",ze=["tabindex"],Ie=["wrap","cols","rows"],Le=["id","class","style","open"],Me=(t,e,n,r)=>{if("class"===e&&n&&r){return!!((t,e)=>{const n=t&&t.split(" "),r=e&&e.split(" "),o={};return v(n,t=>{o[t]=1}),v(r,t=>{o[t]?delete o[t]:o[t]=1}),x(o)})(n,r).find(t=>0!==t.indexOf($e))}return!1},Ae=(e,n)=>{let r,o,i;const{$t:l}=e,{rt:c,ot:d}=l,{$:_,I:g,M:f}=c,{tt:h}=d,{j:w,H:y}=de(),S=h?Ie:Le.concat(Ie),x=mt(n,{p:()=>r,m:()=>o,S(t,e){const{_t:n,zt:r,It:o}=t[0],{_t:i,zt:s,It:a}=e[0];return[{_t:n||i,zt:r||s,It:o||a}]}}),O=t=>{v(t||ze,t=>{if(p(ze,t)>-1){const e=$(_,t);a(e)?$(g,t,e):z(g,t)}})},C=t=>{(t?n:x)({It:!0})},I=(f||!y)&&((e,n)=>{const r=k(Yt),o=[],[i,s]=t({o:!1}),a=t=>{if(t){const r=i(0===(e=t).h||e.isIntersecting||e.intersectionRatio>0),[,o]=r;o&&n(r)}var e};if(J){const t=new J(t=>{t&&t.length>0&&a(t.pop())},{root:e});t.observe(r),b(o,()=>{t.disconnect()})}else{const t=()=>{const t=st(r);a(t)};b(o,Oe(r,t).it),t()}return E(e,r),{it(){m(o),B(r)},ft:t=>({Lt:s(t)})}})(_,t=>{n({Lt:t})}),L=Oe(_,({_t:t,gt:e,dt:r})=>{(!t||r?n:x)({_t:t,ht:e})},{dt:!0,ut:!w}),M=Ce(_,!1,(t,e)=>{e?x({zt:!0}):O(t)},{pt:Le,vt:Le.concat(ze),yt:Me});return O(),{Mt:I,At:L,Tt:t=>{const[e,n]=t("updating.elementEvents"),[a,l]=t("updating.attributes"),[c,d]=t("updating.debounce");if((n||l)&&(i&&(i.Ct(),i.it()),i=Ce(f||g,!0,C,{pt:S.concat(a||[]),vt:S.concat(a||[]),bt:e,St:Me})),d)if(x.O(),u(c)){const t=c[0],e=c[1];r=!!s(t)&&t,o=!!s(e)&&e}else s(c)?(r=c,o=!1):(r=!1,o=!1)},it(){i&&i.it(),I&&I.it(),L.it(),M.it()}}},Te=t=>{const{$t:e}=t,{M:n}=e.rt;return t=>{const{Lt:e}=t,[r,o]=e;return o&&$t(n,{height:r?"":"100%",display:r?"":"inline"}),{_t:o,It:o}}},Re=e=>{const{$t:n,Rt:r}=e,{$:o,L:i,I:s}=n.rt,[a,l]=t({s:pt,o:zt()},zt.bind(0,o,"padding",""));return(t,e,n)=>{let[o,c]=l(n);const{j:u,H:d}=de(),{_t:_,ht:g,It:f}=t,[h,v]=g,[p,b]=e("paddingAbsolute");(_||c||!d&&f)&&([o,c]=a(n));const w=b||v||c;if(w){const t=!p||!i&&!u,e=o.r+o.l,n=o.t+o.b,a={marginRight:t&&!h?-e:0,marginBottom:t?-n:0,marginLeft:t&&h?-e:0,top:t?-o.t:0,right:t?h?-o.r:"auto":0,left:t?h?"auto":-o.l:0,width:t?`calc(100% + ${e}px)`:""},l={paddingTop:t?o.t:0,paddingRight:t?o.r:0,paddingBottom:t?o.b:0,paddingLeft:t?o.l:0};$t(i||s,a),$t(s,l),r({jt:{Vt:!t,L:o},Pt:i?l:Qt({},a,l)})}return{Et:w}}},{max:je,abs:Ve,round:Pe}=Math,Ee=42,He={s:vt,o:{w:0,h:0}},Be=t=>{const e=st(t),n=ct(t);return{w:n.width-e.w,h:n.height-e.h}},ke=()=>window.devicePixelRatio%1==0?0:1,De=(t,e,n,r)=>{const o=t?"overflowX":"overflowY",i=0===n.indexOf("visible"),s="visible-hidden"===n,a="scroll"===n,l=e>0;return i&&(r[o]="visible"),a&&l&&(r[o]=n),{Ht:i,Bt:s?"hidden":"scroll"}},Ne=e=>{const{$t:n,kt:r,Dt:o,Rt:i}=e,{$:s,I:a,X:l}=n.rt,[c,u]=t(He,Be.bind(0,a)),[d,_]=t(He,lt.bind(0,a)),[g,f]=t(He),h=(t,e)=>{if($t(a,{height:""}),e){const{R:e}=de(),{Vt:n,L:r}=o().jt,{Nt:i,Gt:l}=t,c=Be(s),u=at(s),d="content-box"===$t(a,"boxSizing"),_=n||d?r.b+r.t:0,g=u.h+(Ve(c.h)<1?c.h:0),f=!(e.x&&d);$t(a,{height:g+(i.x&&f?l.x:0)-_})}},p=(t,e)=>{const{T:n,R:r,j:o}=de(),{x:i,y:s}=r,l=o||t?0:Ee,c=!e?$t(a,["overflowX","overflowY"]):e,u={x:"scroll"===c.overflowX,y:"scroll"===c.overflowY},d={x:i?l:n.x,y:s?l:n.y};return{Nt:u,qt:{x:i&&!!l,y:s&&!!l},Gt:{x:u.x&&!o?d.x:0,y:u.y&&!o?d.y:0}}},b=(t,e,n,i)=>{if(r){const{Gt:r,qt:s}=t,{x:c,y:u}=s,{x:d,y:_}=r,{Pt:g}=o(),f=g[i?"paddingRight":"paddingLeft"],h=g.paddingTop,v=e.w+(Ve(n.w)<1?n.w:0),p=e.h+(Ve(n.h)<1?n.h:0),b={w:_&&u?`${_+v-f}px`:"",h:d&&c?`${d+p-h}px`:""};if(l){const{sheet:t}=l;if(t){const{cssRules:e}=t;if(e){e.length||t.insertRule(`#${$(l,"id")} + .${Pt}::before {}`,0);const n=e[0].style;n.width=b.w,n.height=b.h}}}else $t(a,{"--os-vaw":b.w,"--os-vah":b.h})}return r},w=(t,e,n,r)=>{const{Gt:i,qt:s}=t,{x:a,y:l}=s,{x:c,y:u}=i,{Pt:d}=o(),_=e?"marginLeft":"marginRight",g=e?"paddingLeft":"paddingRight",f=d[_],h=d.marginBottom,v=d[g],p=d.paddingBottom;r.width=`calc(100% + ${u+-1*f}px)`,r[_]=-u+f,r.marginBottom=-c+h,n&&(r[g]=v+(l?u:0),r.paddingBottom=p+(a?c:0))};return(t,e,n)=>{const{ht:s,Lt:l,_t:y,zt:m,It:S,Et:O}=t,{H:C,j:$,R:z}=de(),[I,L]=l,[M,A]=s,[T,R]=e("nativeScrollbarsOverlaid.show"),j=T&&z.x&&z.y,V=!C&&(y||S||m||R||L);let P,E=u(n),H=_(n),B=f(n);if(R&&$&&(j?rt(a,Ht):nt(a,Ht)),V&&(P=p(j),h(P,!!I)),y||O||S||R||A){const[t,e]=((t,e,n)=>{if(r){const i=n||p(t),{Pt:s}=o(),{H:l}=de(),{qt:c}=i,{x:u,y:d}=c,_={},g=t=>v(t.split(" "),t=>{_[t]=s[t]});l||(_.height=""),u&&g("marginBottom paddingTop paddingBottom"),d&&g("marginLeft marginRight paddingLeft paddingRight");const f=$t(a,x(_));return rt(a,Pt),$t(a,_),[()=>{w(i,e,r,f),$t(a,f),nt(a,Pt)},i]}return[yt]})(j,M,P),[i,s]=E=c(n),[l,u]=H=d(n),_=at(a);let f=l,h=_;t(),(u||s||R)&&e&&!j&&b(e,l,i,M)&&(h=at(a),f=lt(a)),B=g(((t,e,n)=>({w:je(0,Pe(je(0,t.w-e.w)-(ke()||je(0,n.w)))),h:je(0,Pe(je(0,t.h-e.h)-(ke()||je(0,n.h))))}))({w:je(l.w,f.w),h:je(l.h,f.h)},{w:h.w+je(0,_.w-l.w),h:h.h+je(0,_.h-l.h)},i),n)}const[k,D]=E,[N,G]=H,[q,Y]=B,[F,W]=e("overflow");if(O||D||G||Y||W||R||A||V){const t={marginRight:0,marginBottom:0,marginLeft:0,width:"",overflowY:"",overflowX:""},e=((t,e,n,r)=>{const{Ht:o,Bt:i}=De(!0,e.w,n.x,r),{Ht:s,Bt:a}=De(!1,e.h,n.y,r);return o&&!s&&(r.overflowX=i),s&&!o&&(r.overflowY=a),p(t,r)})(j,q,F,t),n=b(e,N,k,M);w(e,M,n,t),V&&h(e,!!I),$t(a,t),i({Yt:e.Nt,Ft:q})}}},Ge=(t,e)=>t?e.split(".").reduce((t,e)=>t&&S(t,e)?t[e]:void 0,t):void 0,qe=[!1,!1,!1],Ye={jt:{Vt:!1,L:{t:0,r:0,b:0,l:0}},Yt:{x:!1,y:!1},Ft:{w:0,h:0},Pt:{marginRight:0,marginBottom:0,marginLeft:0,paddingTop:0,paddingRight:0,paddingBottom:0,paddingLeft:0}},Fe={},We=["__TPL_","_TYPE__"],Xe=["boolean","number","string","array","object","function","null"].reduce((t,e)=>(t[e]=We[0]+e+We[1],t),{});Xe.number,Xe.boolean,Xe.array,Xe.null,Xe.string,Xe.array,Xe.null;Xe.number,Xe.array,Xe.null,Xe.function,Xe.null;const Ue="__osOptionsValidationPlugin",Je=new Set,Ke=new WeakMap,Qe=(t,e)=>{v(u(e)?e:[e],t)},Ze=(t,e)=>{const n=f(t)?t:t.target,r=(t=>Ke.get(t))(n);if(r)return r;const{G:o}=de(),i=O({},Fe),a=i[Ue],l=t=>{const e=t||{},n=a&&a.Wt;return n?n(e,!0):e},[u,d,_]=(()=>{const t=new Map,e=(e,n)=>{if(e){const r=t.get(e);Qe(t=>{r&&r[t?"delete":"clear"](t)},n)}else t.forEach(t=>{t.clear()}),t.clear()};return[(n,r)=>{const o=t.get(n)||new Set;return t.set(n,o),Qe(t=>{o.add(t)},r),e.bind(0,n,r)},e,(e,n)=>{const r=t.get(e);v(w(r),t=>{t(n)})}]})(),g=O({},o(),l(e)),h=pe(t),p=((t,e)=>{const{D:n}=de(),{A:r}=n(),{rt:o,ot:i}=e,{W:s,$:a,I:l}=o,u=!i.nt&&t.scrollbarsSlot,d=(c(u)?u(s,a,l):u)||(c(r)?r(s,a,l):r)||a,_=be(Wt),g=be(Xt),{st:f}=_,{st:h}=g;return P(d,f),P(d,h),{Xt:_,Ut:g,it(){B([f,h])}}})(t,h),b=((t,e,n,r)=>{let o=Ye;const{I:i}=n.rt,{j:a,R:l,H:c,B:u,k:d}=de(),_=!a&&(l.x||l.y),g={Jt:t,$t:n,kt:_,Dt:()=>o,Rt(t){o=O({},o,t)}},f=[Te(g),Re(g),Ne(g)],h=(n,r,o)=>{let{ht:a,Lt:l,_t:u=o||!1,zt:d=o||!1,It:g=o||!1,Et:h=o||!1}=n||{};const y=a||(p?p.ft(o).ht:qe),m=l||(b?b.ft(o).Lt:qe),S=e=>[Ge(t,e),o||void 0!==Ge(r,e)],x=_||!c,O=x&&I(i),C=x&&L(i);w&&w(S),v(f,t=>{const{_t:e,zt:n,It:r,Et:i}=t({ht:y,Lt:m,_t:u,zt:d,It:g,Et:h},S,!!o)||{};u=e||u,d=n||d,g=r||g,h=i||h}),s(O)&&I(i,O),s(C)&&L(i,C),e("updated",{updateHints:{sizeChanged:u,contentMutation:g,hostMutation:d,directionChanged:y[1],heightIntrinsicChanged:m[1]},changedOptions:r||{},force:!!o})},{At:p,Mt:b,Tt:w,it:y}=Ae(g,h),m=(t,e)=>h({},t,e),S=m.bind(0,{},!0);return u(S),console.log(de()),{Ct:m,Kt:()=>({Qt:o.Ft}),it(){y(),d(S),n.it(),r.it()}}})(g,_,h,p),y={options(t){if(t){const e=ne(g,l(t));(function(t){for(const e in t)return!1;return!0})(e)||(O(g,e),b.Ct(e))}return g},on:u,off:d,state:()=>b.Kt(),update(t){b.Ct({},t)},destroy:()=>{b.it(),(t=>{Ke.delete(t),Je.delete(t)})(n),d()}};return v(x(i),t=>{const e=i[t];c(e)&&e(Ze,y)}),y.update(!0),((t,e)=>{Ke.set(t,e),Je.add(t)})(n,y),y};Ze.extend=t=>v(u(t)?t:[t],t=>{Fe[t[0]]=t[1]});export{Ze as default}; \ No newline at end of file +function t(t,e){const{o:n,s:r,u:o}=t;let i,a=n;const s=(t,e)=>{const n=a,s=t,l=e||(r?!r(n,s):n!==s);return(l||o)&&(a=s,i=n),[a,l,i]};return[e?t=>s(e(a,i),t):s,t=>[a,!!t,i]]}const e=Node.ELEMENT_NODE,{toString:n,hasOwnProperty:r}=Object.prototype;function o(t){return void 0===t}function i(t){return null===t}function a(t){return"number"==typeof t}function s(t){return"string"==typeof t}function l(t){return"boolean"==typeof t}function c(t){return"function"==typeof t}function u(t){return Array.isArray(t)}function d(t){return"object"==typeof t&&!u(t)&&!i(t)}function _(t){const e=!!t&&t.length,n=a(e)&&e>-1&&e%1==0;return!!(u(t)||!c(t)&&n)&&(!(e>0&&d(t))||e-1 in t)}function f(t){if(!t||!d(t)||"object"!==(t=>o(t)||i(t)?`${t}`:n.call(t).replace(/^\[object (.+)\]$/,"$1").toLowerCase())(t))return!1;let e;const a="constructor",s=t[a],l=s&&s.prototype,c=r.call(t,a),u=l&&r.call(l,"isPrototypeOf");if(s&&!c&&!u)return!1;for(e in t);return o(e)||r.call(t,e)}function g(t){const n=window.HTMLElement;return!!t&&(n?t instanceof n:t.nodeType===e)}function h(t){const n=window.Element;return!!t&&(n?t instanceof n:t.nodeType===e)}function v(t,e){if(_(t))for(let n=0;ne(t[n],n,t));return t}const p=(t,e,n)=>t.indexOf(e,n),w=(t,e,n)=>(n||s(e)||!_(e)?t.push(e):Array.prototype.push.apply(t,e),t),b=t=>{if(Array.from&&t)return Array.from(t);const e=[];return t instanceof Set?t.forEach(t=>{w(e,t)}):v(t,t=>{w(e,t)}),e},y=t=>!!t&&0===t.length,m=(t,e)=>{const n=t=>t&&t(e);t instanceof Set?t.forEach(n):v(t,n)},S=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),x=t=>t?Object.keys(t):[];function O(t,e,n,r,o,a,s){const l=[e,n,r,o,a,s];return"object"==typeof t&&!i(t)||c(t)||(t={}),v(l,e=>{v(x(e),n=>{const r=e[n];if(t===r)return!0;const o=u(r);if(r&&(f(r)||o)){const e=t[n];let i=e;o&&!u(e)?i=[]:o||f(e)||(i={}),t[n]=O(i,r)}else t[n]=r})}),t}function C(t,e,n,r){if(o(r))return n?n[t]:e;n&&(n[t]=r)}function $(t,e,n){if(o(n))return t?t.getAttribute(e):null;t&&t.setAttribute(e,n)}const z=(t,e)=>{t&&t.removeAttribute(e)};function I(t,e){return C("scrollLeft",0,t,e)}function L(t,e){return C("scrollTop",0,t,e)}const A=Element.prototype,M=(t,e)=>{const n=[],r=e?h(e)?e:null:document;return r?w(n,r.querySelectorAll(t)):n},T=(t,e)=>{if(h(t)){return(A.matches||A.msMatchesSelector).call(t,e)}return!1},j=t=>t?b(t.childNodes):[],R=t=>t?t.parentElement:null,P=(t,e,n)=>{if(n){let r,o=e;t&&(_(n)?(r=document.createDocumentFragment(),v(n,t=>{t===o&&(o=t.previousSibling),r.appendChild(t)})):r=n,e&&(o?o!==e&&(o=o.nextSibling):o=t.firstChild),t.insertBefore(r,o||null))}},V=(t,e)=>{P(t,null,e)},E=(t,e)=>{P(t,t&&t.firstChild,e)},H=(t,e)=>{P(R(t),t&&t.nextSibling,e)},B=t=>{if(_(t))v(b(t),t=>B(t));else if(t){const e=R(t);e&&e.removeChild(t)}},k=t=>{const e=document.createElement("div");return t&&$(e,"class",t),e},D=t=>{const e=k();return e.innerHTML=t.trim(),v(j(e),t=>B(t))},N=t=>t.charAt(0).toUpperCase()+t.slice(1),q=["-webkit-","-moz-","-o-","-ms-"],G=["WebKit","Moz","O","MS","webkit","moz","o","ms"],W={},Y={},F=t=>{let e=Y[t];if(S(Y,t))return e;const n=N(t),r=k().style;return v(q,o=>{const i=o.replace(/-/g,""),a=[t,o+t,i+n,N(i)+n];return!(e=a.find(t=>void 0!==r[t]))}),Y[t]=e||""},X=t=>{let e=W[t]||window[t];return S(W,t)||(v(G,n=>(e=e||window[n+N(t)],!e)),W[t]=e),e},U=X("MutationObserver"),J=X("IntersectionObserver"),K=X("ResizeObserver"),Q=X("cancelAnimationFrame"),Z=X("requestAnimationFrame"),tt=/[^\x20\t\r\n\f]+/g,et=(t,e,n)=>{let r,o=0,i=!1;if(t&&s(e)){const a=e.match(tt)||[];for(i=a.length>0;r=a[o++];)i=!!n(t.classList,r)&&i}return i},nt=(t,e)=>{et(t,e,(t,e)=>t.add(e))},rt=(t,e)=>{et(t,e,(t,e)=>t.remove(e))},ot={w:0,h:0},it=()=>({w:window.innerWidth,h:window.innerHeight}),at=t=>t?{w:t.offsetWidth,h:t.offsetHeight}:ot,st=t=>t?{w:t.clientWidth,h:t.clientHeight}:ot,lt=t=>t?{w:t.scrollWidth,h:t.scrollHeight}:ot,ct=t=>t.getBoundingClientRect();let ut;const dt=t=>t.split(" "),_t=(t,e,n,r)=>{v(dt(e),e=>{t.removeEventListener(e,n,r)})},ft=(t,e,n,r)=>{const i=(()=>{if(o(ut)){ut=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){ut=!0}}))}catch(t){}}return ut})(),a=i&&r&&r._||!1,s=r&&r.g||!1,l=r&&r.v||!1,c=[],u=i?{passive:a,capture:s}:s;return v(dt(e),e=>{const r=l?o=>{t.removeEventListener(e,r,s),n&&n(o)}:n;w(c,_t.bind(null,t,e,r,s)),t.addEventListener(e,r,u)}),m.bind(0,c)},gt=t=>(t=>t.stopPropagation())(t)||(t=>t.preventDefault())(t),ht=(t,e,n,r)=>{if(t&&e){let o=!0;return v(n,n=>{(r?r(t[n]):t[n])!==(r?r(e[n]):e[n])&&(o=!1)}),o}return!1},vt=(t,e)=>ht(t,e,["w","h"]),pt=(t,e)=>ht(t,e,["t","r","b","l"]),wt=(t,e,n)=>ht(t,e,["width","height"],n&&(t=>Math.round(t))),bt=t=>{t&&window.clearTimeout(t),t&&Q(t)},yt=()=>{},mt=(t,e)=>{let n,r,o,i;const{p:s,m:l,S:u}=e||{},d=window.setTimeout,_=function(e){bt(n),bt(r),r=n=o=void 0,t.apply(this,e)},f=t=>u&&o?u(o,t):t,g=()=>{n&&_(f(i)||i)},h=function(){const t=b(arguments),e=c(s)?s():s,u=a(e)&&e>=0;if(u){const s=c(l)?l():l,u=a(s)&&s>=0,h=e>0?d:Z,v=f(t)||t,p=_.bind(0,v);bt(n),n=h(p,e),u&&!r&&(r=d(g,s)),o=i=v}else _(t)};return h.O=g,h},St={opacity:1,zindex:1},xt=(t,e)=>{const n=e?parseFloat(t):parseInt(t,10);return Number.isNaN(n)?0:n},Ot=(t,e,n)=>null!=e?e[n]||e.getPropertyValue(n):t.style[n],Ct=(t,e,n)=>{try{if(t){const{style:r}=t;o(r[e])?r.setProperty(e,n):r[e]=((t,e)=>!St[t.toLowerCase()]&&a(e)?`${e}px`:e)(e,n)}}catch(r){}};function $t(t,e){const n=s(e);if(u(e)||n){let r=n?"":{};if(t){const o=window.getComputedStyle(t,null);r=n?Ot(t,o,e):e.reduce((e,n)=>(e[n]=Ot(t,o,n),e),r)}return r}v(x(e),n=>Ct(t,n,e[n]))}const zt=(t,e,n)=>{const r=e?`${e}-`:"",o=n?`-${n}`:"",i=`${r}top${o}`,a=`${r}right${o}`,s=`${r}bottom${o}`,l=`${r}left${o}`,c=$t(t,[i,a,s,l]);return{t:xt(c[i]),r:xt(c[a]),b:xt(c[s]),l:xt(c[l])}},It={x:0,y:0},Lt=t=>{const e=t?ct(t):0;return e?{x:e.left+window.pageYOffset,y:e.top+window.pageXOffset}:It},At="os-environment",Mt=`${At}-flexbox-glue`,Tt=`${Mt}-max`,jt="os-host",Rt="os-padding",Pt="os-viewport",Vt=`${Pt}-arrange`,Et="os-content",Ht=`${Pt}-scrollbar-styled`,Bt="os-size-observer",kt=`${Bt}-appear`,Dt=`${Bt}-listener`,Nt=`${Dt}-scroll`,qt=`${Dt}-item`,Gt=`${qt}-final`,Wt="os-trinsic-observer",Yt="os-scrollbar",Ft=`${Yt}-horizontal`,Xt=`${Yt}-vertical`,Ut="os-scrollbar-track",Jt="os-scrollbar-handle";var Kt={exports:{}};!function(t){function e(){return t.exports=e=Object.assign?Object.assign.bind():function(t){for(var e=1;eJSON.stringify(t,(t,e)=>{if(c(e))throw new Error;return e}),ee={resize:"none",paddingAbsolute:!1,updating:{elementEvents:[["img","load"]],attributes:null,debounce:[0,33]},overflow:{x:"scroll",y:"scroll"},scrollbars:{visibility:"auto",autoHide:"never",autoHideDelay:800,dragScroll:!0,clickScroll:!1,touch:!0},textarea:{dynWidth:!1,dynHeight:!1,inheritedAttrs:["style","class"]},nativeScrollbarsOverlaid:{show:!1,initialize:!1},callbacks:{onUpdated:null}},ne=(t,e)=>{const n={};return v(x(e).concat(x(t)),r=>{const o=t[r],i=e[r];if(d(o)&&d(i))O(n[r]={},ne(o,i));else if(S(e,r)&&i!==o){let t=!0;if(u(o)||u(i))try{te(o)===te(i)&&(t=!1)}catch(a){}t&&(n[r]=i)}}),n};let re;const{abs:oe,round:ie}=Math,ae=(t,e)=>{V(t,e);const n=st(e),r=at(e);return{x:r.h-n.h,y:r.w-n.w}},se=(t,e)=>{const n="hidden";$t(t,{overflowX:n,overflowY:n,direction:"rtl"}),I(t,0);const r=Lt(t),o=Lt(e);I(t,-999);const i=Lt(e);return{i:r.x===o.x,n:o.x!==i.x}},le=(t,e)=>{nt(t,Mt);const n=ct(t),r=ct(e),o=wt(r,n,!0);nt(t,Tt);const i=ct(t),a=ct(e),s=wt(a,i,!0);return o&&s},ce=()=>{const t=window.screen.deviceXDPI||0,e=window.screen.logicalXDPI||1;return window.devicePixelRatio||t/e},ue=()=>{const{body:t}=document,e=D(`
`)[0],n=e.firstChild,r=new Set,o=ae(t,e),i=(t=>{let e=!1;nt(t,Ht);try{e="none"===$t(t,F("scrollbar-width"))||"none"===window.getComputedStyle(t,"::-webkit-scrollbar").getPropertyValue("display")}catch(n){}return e})(e),a={x:0===o.x,y:0===o.y},s={$:null,I:null,L:null,A:null,M:null};let l=s,c=ee;const u={T:o,j:a,R:i,P:"-1"===$t(e,"zIndex"),V:se(e,n),H:le(e,n),B(t){r.add(t)},k(t){r.delete(t)},D:()=>Qt({},l),N(t){l=O({},l,t)},q:()=>Qt({},c),G(t){c=O({},c,t)},W:s,Y:c};if(z(e,"style"),B(e),!(i||a.x&&a.y)){let n=it(),i=ce(),a=o;window.addEventListener("resize",()=>{if(r.size){const o=it(),s={w:o.w-n.w,h:o.h-n.h};if(0===s.w&&0===s.h)return;const l={w:oe(s.w),h:oe(s.h)},c={w:oe(ie(o.w/(n.w/100))),h:oe(ie(o.h/(n.h/100)))},u=ce(),d=l.w>2&&l.h>2,_=!((t,e)=>{const n=oe(t),r=oe(e);return!(n===r||n+1===r||n-1===r)})(c.w,c.h),f=u!==i&&i>0;if(d&&_&&f){const n=re.T=ae(t,e);B(e),a.x===n.x&&a.y===n.y||m(r),a=n}n=o,i=u}})}return u},de=()=>(re||(re=ue()),re);let _e=0;const fe=t=>{V(R(t),j(t)),B(t)},ge=()=>{const{R:t,j:e,P:n}=de(),r=!!(!n&&!t&&(e.x||e.y))&&document.createElement("style");return r&&($(r,"id",`${Vt}-${_e}`),_e++),r},he=(t,e,n,r)=>e||(c(n)?n(t):n)||k(r),ve=(t,e,n,r,o)=>{const i=l(e)||e?e:c(n)?n(t):n;return null===i?!!o&&k(r):!0===i?k(r):i},pe=t=>{const{D:e,R:n}=de(),{$:r,I:o,L:i,A:a}=e(),s=g(t),l=t,c=s?t:l.target,u=T(c,"textarea"),d=!u&&T(c,"body"),_=c.ownerDocument,f=_.body,h=_.defaultView,v={F:c,$:u?he(c,l.host,r,jt):c,I:he(c,l.viewport,o,Pt),L:ve(c,l.padding,i,Rt,!n),A:ve(c,l.content,a,Et,!1),X:ge()},b={U:h,J:_,K:R(f),Z:f,tt:u,et:d,nt:s},y=x(v).reduce((t,e)=>{const n=v[e];return w(t,!(!n||R(n))&&n)},[]),S=t=>t?p(y,t)>-1:null,{F:O,$:C,L:$,I:z,A:I,X:L}=v,A=[],M=u&&S(C),E=u?O:j([I,z,$,C,O].find(t=>!1===S(t))),k=I||z;var D,N;return M&&(H(O,C),w(A,()=>{H(C,O),B(C)})),V(k,E),V(C,$),V($||C,z),V(z,I),nt(C,jt),nt($,Rt),nt(z,Pt),nt(I,Et),w(A,()=>{s?(V(C,j(k)),B($||z),rt(C,jt)):(S(I)&&fe(I),S(z)&&fe(z),S($)&&fe($),rt(C,jt),rt($,Rt),rt(z,Pt),rt(I,Et))}),n&&w(A,rt.bind(0,z,Ht)),L&&(N=L,P(R(D=z),D,N),w(A,B.bind(0,L))),{rt:v,ot:b,it:()=>{m(A)}}},we=t=>{const e=k(`${Yt} ${t}`),n=k(Ut),r=k(Jt);return V(e,n),V(n,r),{at:e,st:n,lt:r}},be="animationstart",ye="scroll",me=3333333,Se=t=>"rtl"===$t(t,"direction"),xe=t=>t&&(t.height||t.width),Oe=(e,n,r)=>{const{ct:o=!1,ut:i=!1}=r||{},{V:a}=de(),s=D(`
`)[0],c=s.firstChild,_=Se.bind(0,s),[f]=t({o:void 0,u:!0,s:(t,e)=>!(!t||!xe(t)&&xe(e))}),g=t=>{const e=u(t)&&t.length>0&&d(t[0]),r=!e&&l(t[0]);let i=!1,c=!1,_=!0;if(e){const[e,,n]=f(t.pop().contentRect),r=xe(e),o=xe(n);i=!n||!r,c=!o&&r,_=!i}else r?[,_]=t:c=!0===t;if(o&&_){const e=r?t[0]:Se(s);I(s,e?a.n?-me:a.i?0:me:me),L(s,me)}i||n({dt:!r,_t:r?t:void 0,ut:!!c})},h=[];let v,p=!!i&&g;if(K){const t=new K(g);t.observe(c),w(h,()=>{t.disconnect()})}else{const t=D(`
`);V(c,t),nt(c,Nt);const e=t[0],n=e.lastChild,r=e.firstChild,o=null==r?void 0:r.firstChild;let a,s=at(e),l=s,u=!1;const d=()=>{I(r,me),L(r,me),I(n,me),L(n,me)},_=t=>{a=0,u&&(s=l,g(!0===t))},f=t=>{l=at(e),u=!t||!vt(l,s),t?(gt(t),u&&!a&&(Q(a),a=Z(_))):_(!1===t),d()};w(h,[ft(r,ye,f),ft(n,ye,f)]),$t(o,{width:me,height:me}),d(),p=i?f.bind(0,!1):d}if(o){v=t({o:!_()},_);const[e]=v;w(h,ft(s,ye,t=>{const n=e(),[r,o]=n;o&&(rt(c,"ltr rtl"),nt(c,r?"rtl":"ltr"),g(n)),gt(t)}))}return p&&(nt(s,kt),w(h,ft(s,be,p,{v:!!K}))),E(e,s),()=>{m(h),B(s)}},Ce=(t,e,n,r)=>{let o=!1;const{ft:i,gt:a,ht:l,vt:c,pt:u,wt:d,bt:_}=r||{},{it:f,yt:g}=((t,e,n)=>{let r,o=!1;const i=i=>{if(n){v(n.reduce((e,n)=>{if(n){const r=n[0],o=n[1],a=o&&r&&(i?i(r):M(r,t));a&&a.length&&o&&s(o)&&w(e,[a,o.trim()],!0)}return e},[]),t=>v(t[0],n=>{const i=t[1],a=r.get(n);if(a){const t=a[0],e=a[1];t===i&&e()}const s=ft(n,i,t=>{o?(s(),r.delete(n)):e(t)});r.set(n,[i,s])}))}};return n&&(r=new WeakMap,i()),{it:()=>{o=!0},yt:i}})(t,mt(()=>{o&&n(!0)},{p:33,m:99}),l),h=a||[],b=(i||[]).concat(h),m=o=>{const i=(e?d:u)||yt,a=_||yt,l=[],f=[];let b=!1,m=!1,S=!1;v(o,n=>{const{attributeName:o,target:u,type:d,oldValue:_,addedNodes:g}=n,v="attributes"===d,y="childList"===d,x=t===u,O=v&&s(o)?$(u,o):0,C=0!==O&&_!==O,z=p(h,o)>-1&&C;if(e&&!x){const e=!v,s=v&&z,l=s&&c&&T(u,c),d=(l?!i(u,o,_,O):e||s)&&!a(n,!!l,t,r);w(f,g),m=m||d,S=S||y}!e&&x&&C&&!i(u,o,_,O)&&(w(l,o),b=b||z)}),S&&!y(f)&&g(t=>f.reduce((e,n)=>(w(e,M(t,n)),T(n,t)?w(e,n):e),[])),e?m&&n(!1):y(l)&&!b||n(l,b)},S=new U(m);return S.observe(t,{attributes:!0,attributeOldValue:!0,attributeFilter:b,subtree:e,childList:e,characterData:e}),o=!0,{it:()=>{o&&(f(),S.disconnect(),o=!1)},St:()=>{o&&m(S.takeRecords())}}},$e="os-",ze=["tabindex"],Ie=["wrap","cols","rows"],Le=["id","class","style","open"],Ae=(t,e,n,r)=>{if("class"===e&&n&&r){return!!((t,e)=>{const n=t&&t.split(" "),r=e&&e.split(" "),o={};return v(n,t=>{o[t]=1}),v(r,t=>{o[t]?delete o[t]:o[t]=1}),x(o)})(n,r).find(t=>0!==t.indexOf($e))}return!1},Me=(e,n)=>{let r,o,i;const{xt:l}=e,{rt:c,ot:d}=l,{$:_,I:f,A:g}=c,{tt:h}=d,{R:b,H:y}=de(),S=h?Ie:Le.concat(Ie),x=mt(n,{p:()=>r,m:()=>o,S(t,e){const{dt:n,Ot:r,Ct:o}=t[0],{dt:i,Ot:a,Ct:s}=e[0];return[{dt:n||i,Ot:r||a,Ct:o||s}]}}),O=t=>{v(t||ze,t=>{if(p(ze,t)>-1){const e=$(_,t);s(e)?$(f,t,e):z(f,t)}})},C=t=>{(t?n:x)({Ct:!0})},I=(g||!y)&&((e,n)=>{const r=k(Wt),o=[],[i]=t({o:!1}),a=t=>{if(t){const r=i(0===(e=t).h||e.isIntersecting||e.intersectionRatio>0),[,o]=r;o&&n(r)}var e};if(J){const t=new J(t=>{t&&t.length>0&&a(t.pop())},{root:e});t.observe(r),w(o,()=>{t.disconnect()})}else{const t=()=>{const t=at(r);a(t)};w(o,Oe(r,t)),t()}return E(e,r),()=>{m(o),B(r)}})(_,t=>{n({$t:t})}),L=Oe(_,({dt:t,_t:e,ut:r})=>{(!t||r?n:x)({dt:t,zt:e})},{ut:!0,ct:!b}),A=Ce(_,!1,(t,e)=>{e?x({Ot:!0}):O(t)},{gt:Le,ft:Le.concat(ze),pt:Ae});return O(),[t=>{const[e,n]=t("updating.elementEvents"),[s,l]=t("updating.attributes"),[c,d]=t("updating.debounce");if((n||l)&&(i&&(i.St(),i.it()),i=Ce(g||f,!0,C,{gt:S.concat(s||[]),ft:S.concat(s||[]),ht:e,wt:Ae})),d)if(x.O(),u(c)){const t=c[0],e=c[1];r=!!a(t)&&t,o=!!a(e)&&e}else a(c)?(r=c,o=!1):(r=!1,o=!1)},()=>{i&&i.it(),I&&I(),L(),A.it()}]},Te=t=>{const{xt:e}=t,{A:n}=e.rt;return t=>{const{$t:e}=t,[r,o]=e;return o&&$t(n,{height:r?"":"100%",display:r?"":"inline"}),{dt:o,Ct:o}}},je=e=>{const{xt:n,It:r}=e,{$:o,L:i,I:a}=n.rt,[s,l]=t({s:pt,o:zt()},zt.bind(0,o,"padding",""));return(t,e,n)=>{let[o,c]=l(n);const{R:u,H:d}=de(),{dt:_,zt:f,Ct:g}=t,[h,v]=f,[p,w]=e("paddingAbsolute");(_||c||!d&&g)&&([o,c]=s(n));const b=w||v||c;if(b){const t=!p||!i&&!u,e=o.r+o.l,n=o.t+o.b,s={marginRight:t&&!h?-e:0,marginBottom:t?-n:0,marginLeft:t&&h?-e:0,top:t?-o.t:0,right:t?h?-o.r:"auto":0,left:t?h?"auto":-o.l:0,width:t?`calc(100% + ${e}px)`:""},l={paddingTop:t?o.t:0,paddingRight:t?o.r:0,paddingBottom:t?o.b:0,paddingLeft:t?o.l:0};$t(i||a,s),$t(a,l),r({Lt:{At:!t,L:o},Mt:i?l:Qt({},s,l)})}return{Tt:b}}},{max:Re,abs:Pe,round:Ve}=Math,Ee=42,He={s:vt,o:{w:0,h:0}},Be={s:(t,e)=>ht(t,e,["x","y"]),o:{x:!1,y:!1}},ke=t=>{const e=at(t),n=ct(t);return{w:n.width-e.w,h:n.height-e.h}},De=()=>window.devicePixelRatio%1==0?0:1,Ne=(t,e,n,r)=>{const o=t?"overflowX":"overflowY",i=0===n.indexOf("visible"),a="visible-hidden"===n,s="scroll"===n,l=e>0;return i&&(r[o]="visible"),s&&l&&(r[o]=n),{jt:i,Rt:a?"hidden":"scroll"}},qe=e=>{const{xt:n,Pt:r,Vt:o,It:i}=e,{$:a,I:s,X:l}=n.rt,[c,u]=t(He,ke.bind(0,s)),[d,_]=t(He,lt.bind(0,s)),[f,g]=t(He),[h]=t(Be),p=(t,e)=>{if($t(s,{height:""}),e){const{j:e}=de(),{At:n,L:r}=o().Lt,{Et:i,Ht:l}=t,c=ke(a),u=st(a),d="content-box"===$t(s,"boxSizing"),_=n||d?r.b+r.t:0,f=u.h+(Pe(c.h)<1?c.h:0),g=!(e.x&&d);$t(s,{height:f+(i.x&&g?l.x:0)-_})}},w=(t,e)=>{const{T:n,j:r,R:o}=de(),{x:i,y:a}=r,l=o||t?0:Ee,c=!e?$t(s,["overflowX","overflowY"]):e,u={x:"scroll"===c.overflowX,y:"scroll"===c.overflowY},d={x:i?l:n.x,y:a?l:n.y};return{Et:u,Bt:{x:i&&!!l,y:a&&!!l},Ht:{x:u.x&&!o?d.x:0,y:u.y&&!o?d.y:0}}},b=(t,e,n,i)=>{if(r){const{Ht:r,Bt:a}=t,{x:c,y:u}=a,{x:d,y:_}=r,{Mt:f}=o(),g=f[i?"paddingRight":"paddingLeft"],h=f.paddingTop,v=e.w+(Pe(n.w)<1?n.w:0),p=e.h+(Pe(n.h)<1?n.h:0),w={w:_&&u?`${_+v-g}px`:"",h:d&&c?`${d+p-h}px`:""};if(l){const{sheet:t}=l;if(t){const{cssRules:e}=t;if(e){e.length||t.insertRule(`#${$(l,"id")} + .${Vt}::before {}`,0);const n=e[0].style;n.width=w.w,n.height=w.h}}}else $t(s,{"--os-vaw":w.w,"--os-vah":w.h})}return r},y=(t,e,n,r)=>{const{Ht:i,Bt:a}=t,{x:s,y:l}=a,{x:c,y:u}=i,{Mt:d}=o(),_=e?"marginLeft":"marginRight",f=e?"paddingLeft":"paddingRight",g=d[_],h=d.marginBottom,v=d[f],p=d.paddingBottom;r.width=`calc(100% + ${u+-1*g}px)`,r[_]=-u+g,r.marginBottom=-c+h,n&&(r[f]=v+(l?u:0),r.paddingBottom=p+(s?c:0))};return(t,e,n)=>{const{zt:a,$t:l,dt:m,Ot:S,Ct:O,Tt:C}=t,{H:$,R:z,j:I}=de(),[L,A]=l,[M,T]=a,[j,R]=e("nativeScrollbarsOverlaid.show"),P=j&&I.x&&I.y,V=!$&&(m||O||S||R||A);let E,H=u(n),B=_(n),k=g(n);if(R&&z&&(P?rt(s,Ht):nt(s,Ht)),V&&(E=w(P),p(E,!!L)),m||C||O||R||T){const[t,e]=((t,e,n)=>{if(r){const i=n||w(t),{Mt:a}=o(),{H:l}=de(),{Bt:c}=i,{x:u,y:d}=c,_={},f=t=>v(t.split(" "),t=>{_[t]=a[t]});l||(_.height=""),u&&f("marginBottom paddingTop paddingBottom"),d&&f("marginLeft marginRight paddingLeft paddingRight");const g=$t(s,x(_));return rt(s,Vt),$t(s,_),[()=>{y(i,e,r,g),$t(s,g),nt(s,Vt)},i]}return[yt]})(P,M,E),[i,a]=H=c(n),[l,u]=B=d(n),_=st(s);let g=l,h=_;t(),(u||a||R)&&e&&!P&&b(e,l,i,M)&&(h=st(s),g=lt(s)),k=f(((t,e,n)=>({w:Re(0,Ve(Re(0,t.w-e.w)-(De()||Re(0,n.w)))),h:Re(0,Ve(Re(0,t.h-e.h)-(De()||Re(0,n.h))))}))({w:Re(l.w,g.w),h:Re(l.h,g.h)},{w:h.w+Re(0,_.w-l.w),h:h.h+Re(0,_.h-l.h)},i),n)}const[D,N]=H,[q,G]=B,[W,Y]=k,[F,X]=e("overflow");if(C||N||G||Y||X||R||T||V){const t={marginRight:0,marginBottom:0,marginLeft:0,width:"",overflowY:"",overflowX:""},e=((t,e,n,r)=>{const{jt:o,Rt:i}=Ne(!0,e.w,n.x,r),{jt:a,Rt:s}=Ne(!1,e.h,n.y,r);return o&&!a&&(r.overflowX=i),a&&!o&&(r.overflowY=s),w(t,r)})(P,W,F,t),n=b(e,q,D,M);y(e,M,n,t),V&&p(e,!!L),$t(s,t),i({kt:h(e.Et),Dt:k})}}},Ge=(t,e)=>t?e.split(".").reduce((t,e)=>t&&S(t,e)?t[e]:void 0,t):void 0,We=[!1,!1,!1],Ye={Lt:{At:!1,L:{t:0,r:0,b:0,l:0}},kt:[{x:!1,y:!1},!1],Dt:[{w:0,h:0},!1],Mt:{marginRight:0,marginBottom:0,marginLeft:0,paddingTop:0,paddingRight:0,paddingBottom:0,paddingLeft:0}},Fe=(t,e,n)=>{const r={},o=e||{};return v(x(t).concat(x(o)),e=>{const i=t[e],a=o[e];r[e]=l(i)?!!n||!!i||!!a:((t,e)=>[t[0],e||t[1],t[2]])(i||We,n)}),r},Xe=(t,e)=>({amount:{x:t.w,y:t.h},overflow:{x:t.w>0,y:t.h>0},scrollableOverflow:O({},e)}),Ue={},Je=["__TPL_","_TYPE__"],Ke=["boolean","number","string","array","object","function","null"].reduce((t,e)=>(t[e]=Je[0]+e+Je[1],t),{});Ke.number,Ke.boolean,Ke.array,Ke.null,Ke.string,Ke.array,Ke.null;Ke.number,Ke.array,Ke.null,Ke.function,Ke.null;const Qe="__osOptionsValidationPlugin",Ze=new Set,tn=new WeakMap,en=(t,e)=>{v(u(e)?e:[e],t)},nn=(t,e,n)=>{const{q:r,j:o}=de(),i=O({},Ue),s=g(t)?t:t.target,l=(t=>tn.get(t))(s);if(l)return l;const u=i[Qe],d=t=>{const e=t||{},n=u&&u.Nt;return n?n(e,!0):e},_=O({},r(),d(e)),[f,h,p]=(t=>{const e=new Map,n=(t,n)=>{if(t){const r=e.get(t);en(t=>{r&&r[t?"delete":"clear"](t)},n)}else e.forEach(t=>{t.clear()}),e.clear()},r=(t,r)=>{const o=e.get(t)||new Set;return e.set(t,o),en(t=>{o.add(t)},r),n.bind(0,t,r)};return v(x(t),e=>{r(e,t[e])}),[r,n,(t,n)=>{const r=e.get(t);v(b(r),t=>{n?t(n):t()})}]})(n);o.x&&o.y&&!_.nativeScrollbarsOverlaid.initialize&&p("initializationWithdrawn",!1);const w=pe(t),y=((t,e)=>{const{D:n}=de(),{M:r}=n(),{rt:o,ot:i}=e,{F:a,$:s,I:l}=o,u=!i.nt&&t.scrollbarsSlot,d=(c(u)?u(a,s,l):u)||(c(r)?r(a,s,l):r)||s,_=we(Ft),f=we(Xt),{at:g}=_,{at:h}=f;return V(d,g),V(d,h),{qt:_,Gt:f,it(){B([g,h])}}})(t,w),m=((t,e,n,r)=>{let o,i,s=Ye;const{I:l}=n.rt,{R:c,j:u,H:d,B:_,k:f}=de(),g=!c&&(u.x||u.y),h={Wt:t,xt:n,Pt:g,Vt:()=>s,It(t){s=O({},s,t)}},p=[Te(h),je(h),qe(h)],w=(n,r,i)=>{const c=Fe(O({dt:!1,Ot:!1,Ct:!1,Tt:!1,zt:We,$t:We},n),{},i),u=e=>[Ge(t,e),i||void 0!==Ge(r,e)],_=g||!d,f=_&&I(l),h=_&&L(l);o&&o(u);let w=c;v(p,t=>{w=Fe(w,t(w,u,!!i)||{},i)}),a(f)&&I(l,f),a(h)&&L(l,h);const{Dt:b,kt:y}=s,[m,S,x]=b,[C,$,z]=y;(S||$)&&e("overflowChanged",O({},Xe(m,C),{previous:Xe(x,z)})),e("updated",{updateHints:{sizeChanged:w.dt,contentMutation:w.Ct,hostMutation:w.Ot,directionChanged:w.zt[1],heightIntrinsicChanged:w.$t[1]},changedOptions:r||{},force:!!i})};[o,i]=Me(h,w);const b=(t,e)=>w({},t,e),y=b.bind(0,{},!0);return _(y),{St:b,Yt:()=>({Ft:s.Dt[0]}),it(){i(),f(y),n.it(),r.it()}}})(_,p,w,y),S={options(t){if(t){const e=ne(_,d(t));(function(t){for(const e in t)return!1;return!0})(e)||(O(_,e),m.St(e))}return _},on:f,off:h,state:()=>m.Yt(),update(t){m.St({},t)},destroy:()=>{m.it(),(t=>{tn.delete(t),Ze.delete(t)})(s),h(),p("destroyed",!1)}};return v(x(i),t=>{const e=i[t];c(e)&&e(nn,S)}),S.update(!0),((t,e)=>{tn.set(t,e),Ze.add(t)})(s,S),p("initialized",!1),S};nn.extend=t=>v(u(t)?t:[t],t=>{Ue[t[0]]=t[1]});export{nn as default}; \ No newline at end of file diff --git a/packages/overlayscrollbars/dist/overlayscrollbars.js b/packages/overlayscrollbars/dist/overlayscrollbars.js index fa783bc..786a231 100644 --- a/packages/overlayscrollbars/dist/overlayscrollbars.js +++ b/packages/overlayscrollbars/dist/overlayscrollbars.js @@ -532,6 +532,9 @@ var equalWH = function equalWH(a, b) { return equal(a, b, ['w', 'h']); }; + var equalXY = function equalXY(a, b) { + return equal(a, b, ['x', 'y']); + }; var equalTRBL = function equalTRBL(a, b) { return equal(a, b, ['t', 'r', 'b', 'l']); }; @@ -1363,16 +1366,9 @@ } prependChildren(target, sizeObserver); - return { - _destroy: function _destroy() { - runEach(offListeners); - removeElements(sizeObserver); - }, - _getCurrentCacheValues: function _getCurrentCacheValues(force) { - return { - _directionIsRTL: directionIsRTLCache ? directionIsRTLCache[1](force) : [false, false, false] - }; - } + return function () { + runEach(offListeners); + removeElements(sizeObserver); }; }; @@ -1387,8 +1383,7 @@ var _createCache = createCache({ _initialValue: false }), - updateHeightIntrinsicCache = _createCache[0], - getCurrentHeightIntrinsicCache = _createCache[1]; + updateHeightIntrinsicCache = _createCache[0]; var triggerOnTrinsicChangedCallback = function triggerOnTrinsicChangedCallback(updateValue) { if (updateValue) { @@ -1419,21 +1414,14 @@ triggerOnTrinsicChangedCallback(newSize); }; - push(offListeners, createSizeObserver(trinsicObserver, onSizeChanged)._destroy); + push(offListeners, createSizeObserver(trinsicObserver, onSizeChanged)); onSizeChanged(); } prependChildren(target, trinsicObserver); - return { - _destroy: function _destroy() { - runEach(offListeners); - removeElements(trinsicObserver); - }, - _getCurrentCacheValues: function _getCurrentCacheValues(force) { - return { - _heightIntrinsic: getCurrentHeightIntrinsicCache(force) - }; - } + return function () { + runEach(offListeners); + removeElements(trinsicObserver); }; }; @@ -1713,8 +1701,8 @@ } }; - var trinsicObserver = (_content || !_flexboxGlue) && createTrinsicObserver(_host, onTrinsicChanged); - var sizeObserver = createSizeObserver(_host, onSizeChanged, { + var destroyTrinsicObserver = (_content || !_flexboxGlue) && createTrinsicObserver(_host, onTrinsicChanged); + var destroySizeObserver = createSizeObserver(_host, onSizeChanged, { _appear: true, _direction: !_nativeScrollbarStyling }); @@ -1773,19 +1761,13 @@ }; updateViewportAttrsFromHost(); - return { - _trinsicObserver: trinsicObserver, - _sizeObserver: sizeObserver, - _updateObserverOptions: updateOptions, - _destroy: function _destroy() { - contentMutationObserver && contentMutationObserver._destroy(); - trinsicObserver && trinsicObserver._destroy(); + return [updateOptions, function () { + contentMutationObserver && contentMutationObserver._destroy(); + destroyTrinsicObserver && destroyTrinsicObserver(); + destroySizeObserver(); - sizeObserver._destroy(); - - hostMutationObserver._destroy(); - } - }; + hostMutationObserver._destroy(); + }]; }; var createTrinsicLifecycle = function createTrinsicLifecycle(lifecycleHub) { @@ -1903,6 +1885,13 @@ h: 0 } }; + var xyCacheOptions = { + _equal: equalXY, + _initialValue: { + x: false, + y: false + } + }; var sizeFraction = function sizeFraction(elm) { var viewportOffsetSize = offsetSize(elm); @@ -1967,6 +1956,9 @@ updateOverflowAmountCache = _createCache3[0], getCurrentOverflowAmountCache = _createCache3[1]; + var _createCache4 = createCache(xyCacheOptions), + updateOverflowScrollCache = _createCache4[0]; + var fixFlexboxGlue = function fixFlexboxGlue(viewportOverflowState, heightIntrinsic) { style(_viewport, { height: '' @@ -2277,8 +2269,8 @@ style(_viewport, viewportStyle); _setLifecycleCommunication({ - _viewportOverflowScroll: viewportOverflowState._overflowScroll, - _viewportOverflowAmount: overflowAmount + _viewportOverflowScrollCache: updateOverflowScrollCache(viewportOverflowState._overflowScroll), + _viewportOverflowAmountCache: overflowAmuntCache }); } }; @@ -2290,6 +2282,10 @@ }, obj) : undefined; }; + var applyForceToCache = function applyForceToCache(cacheValues, force) { + return [cacheValues[0], force || cacheValues[1], cacheValues[2]]; + }; + var booleanCacheValuesFallback = [false, false, false]; var lifecycleCommunicationFallback = { _paddingInfo: { @@ -2301,14 +2297,14 @@ l: 0 } }, - _viewportOverflowScroll: { + _viewportOverflowScrollCache: [{ x: false, y: false - }, - _viewportOverflowAmount: { + }, false], + _viewportOverflowAmountCache: [{ w: 0, h: 0 - }, + }, false], _viewportPaddingStyle: { marginRight: 0, marginBottom: 0, @@ -2319,8 +2315,37 @@ paddingLeft: 0 } }; - var createLifecycleHub = function createLifecycleHub(options, triggerEvent, structureSetup, scrollbarsSetup) { + + var prepareUpdateHints = function prepareUpdateHints(leading, adaptive, force) { + var result = {}; + var finalAdaptive = adaptive || {}; + var objKeys = keys(leading).concat(keys(finalAdaptive)); + each(objKeys, function (key) { + var leadingValue = leading[key]; + var adaptiveValue = finalAdaptive[key]; + result[key] = isBoolean(leadingValue) ? !!force || !!leadingValue || !!adaptiveValue : applyForceToCache(leadingValue || booleanCacheValuesFallback, force); + }); + return result; + }; + + var createOverflowChangedArgs = function createOverflowChangedArgs(overflowAmount, overflowScroll) { + return { + amount: { + x: overflowAmount.w, + y: overflowAmount.h + }, + overflow: { + x: overflowAmount.w > 0, + y: overflowAmount.h > 0 + }, + scrollableOverflow: assignDeep({}, overflowScroll) + }; + }; + + var createLifecycleHub = function createLifecycleHub(options, triggerListener, structureSetup, scrollbarsSetup) { var lifecycleCommunication = lifecycleCommunicationFallback; + var updateObserverOptions; + var destroyObservers; var _viewport = structureSetup._targetObj._viewport; var _getEnvironment = getEnvironment(), @@ -2345,20 +2370,14 @@ var lifecycles = [createTrinsicLifecycle(instance), createPaddingLifecycle(instance), createOverflowLifecycle(instance)]; var updateLifecycles = function updateLifecycles(updateHints, changedOptions, force) { - var _ref = updateHints || {}, - _directionIsRTL = _ref._directionIsRTL, - _heightIntrinsic = _ref._heightIntrinsic, - _ref$_sizeChanged = _ref._sizeChanged, - _sizeChanged = _ref$_sizeChanged === void 0 ? force || false : _ref$_sizeChanged, - _ref$_hostMutation = _ref._hostMutation, - _hostMutation = _ref$_hostMutation === void 0 ? force || false : _ref$_hostMutation, - _ref$_contentMutation = _ref._contentMutation, - _contentMutation = _ref$_contentMutation === void 0 ? force || false : _ref$_contentMutation, - _ref$_paddingStyleCha = _ref._paddingStyleChanged, - _paddingStyleChanged = _ref$_paddingStyleCha === void 0 ? force || false : _ref$_paddingStyleCha; - - var finalDirectionIsRTL = _directionIsRTL || (_sizeObserver ? _sizeObserver._getCurrentCacheValues(force)._directionIsRTL : booleanCacheValuesFallback); - var finalHeightIntrinsic = _heightIntrinsic || (_trinsicObserver ? _trinsicObserver._getCurrentCacheValues(force)._heightIntrinsic : booleanCacheValuesFallback); + var initialUpdateHints = prepareUpdateHints(assignDeep({ + _sizeChanged: false, + _hostMutation: false, + _contentMutation: false, + _paddingStyleChanged: false, + _directionIsRTL: booleanCacheValuesFallback, + _heightIntrinsic: booleanCacheValuesFallback + }, updateHints), {}, force); var checkOption = function checkOption(path) { return [getPropByPath(options, path), force || getPropByPath(changedOptions, path) !== undefined]; @@ -2368,28 +2387,13 @@ var scrollOffsetX = adjustScrollOffset && scrollLeft(_viewport); var scrollOffsetY = adjustScrollOffset && scrollTop(_viewport); - if (_updateObserverOptions) { - _updateObserverOptions(checkOption); + if (updateObserverOptions) { + updateObserverOptions(checkOption); } + var adaptivedUpdateHints = initialUpdateHints; each(lifecycles, function (lifecycle) { - var _ref2 = lifecycle({ - _directionIsRTL: finalDirectionIsRTL, - _heightIntrinsic: finalHeightIntrinsic, - _sizeChanged: _sizeChanged, - _hostMutation: _hostMutation, - _contentMutation: _contentMutation, - _paddingStyleChanged: _paddingStyleChanged - }, checkOption, !!force) || {}, - adaptiveSizeChanged = _ref2._sizeChanged, - adaptiveHostMutation = _ref2._hostMutation, - adaptiveContentMutation = _ref2._contentMutation, - adaptivePaddingStyleChanged = _ref2._paddingStyleChanged; - - _sizeChanged = adaptiveSizeChanged || _sizeChanged; - _hostMutation = adaptiveHostMutation || _hostMutation; - _contentMutation = adaptiveContentMutation || _contentMutation; - _paddingStyleChanged = adaptivePaddingStyleChanged || _paddingStyleChanged; + adaptivedUpdateHints = prepareUpdateHints(adaptivedUpdateHints, lifecycle(adaptivedUpdateHints, checkOption, !!force) || {}, force); }); if (isNumber(scrollOffsetX)) { @@ -2400,24 +2404,39 @@ scrollTop(_viewport, scrollOffsetY); } - triggerEvent('updated', { + var _lifecycleCommunicati = lifecycleCommunication, + overflowAmountCache = _lifecycleCommunicati._viewportOverflowAmountCache, + overflowScrollCache = _lifecycleCommunicati._viewportOverflowScrollCache; + var overflowAmount = overflowAmountCache[0], + overflowAmountChanged = overflowAmountCache[1], + prevOverflowAmount = overflowAmountCache[2]; + var overflowScroll = overflowScrollCache[0], + overflowScrollChanged = overflowScrollCache[1], + prevOverflowScroll = overflowScrollCache[2]; + + if (overflowAmountChanged || overflowScrollChanged) { + triggerListener('overflowChanged', assignDeep({}, createOverflowChangedArgs(overflowAmount, overflowScroll), { + previous: createOverflowChangedArgs(prevOverflowAmount, prevOverflowScroll) + })); + } + + triggerListener('updated', { updateHints: { - sizeChanged: _sizeChanged, - contentMutation: _contentMutation, - hostMutation: _hostMutation, - directionChanged: finalDirectionIsRTL[1], - heightIntrinsicChanged: finalHeightIntrinsic[1] + sizeChanged: adaptivedUpdateHints._sizeChanged, + contentMutation: adaptivedUpdateHints._contentMutation, + hostMutation: adaptivedUpdateHints._hostMutation, + directionChanged: adaptivedUpdateHints._directionIsRTL[1], + heightIntrinsicChanged: adaptivedUpdateHints._heightIntrinsic[1] }, changedOptions: changedOptions || {}, force: !!force }); }; - var _lifecycleHubOservers = lifecycleHubOservers(instance, updateLifecycles), - _sizeObserver = _lifecycleHubOservers._sizeObserver, - _trinsicObserver = _lifecycleHubOservers._trinsicObserver, - _updateObserverOptions = _lifecycleHubOservers._updateObserverOptions, - destroyObservers = _lifecycleHubOservers._destroy; + var _lifecycleHubOservers = lifecycleHubOservers(instance, updateLifecycles); + + updateObserverOptions = _lifecycleHubOservers[0]; + destroyObservers = _lifecycleHubOservers[1]; var update = function update(changedOptions, force) { return updateLifecycles({}, changedOptions, force); @@ -2425,12 +2444,11 @@ var envUpdateListener = update.bind(0, {}, true); addEnvironmentListener(envUpdateListener); - console.log(getEnvironment()); return { _update: update, _state: function _state() { return { - _overflowAmount: lifecycleCommunication._viewportOverflowAmount + _overflowAmount: lifecycleCommunication._viewportOverflowAmountCache[0] }; }, _destroy: function _destroy() { @@ -2521,7 +2539,7 @@ each(isArray(listener) ? listener : [listener], callback); }; - var createEventHub = function createEventHub() { + var createEventListenerHub = function createEventListenerHub(initialEventListeners) { var events = new Map(); var removeEvent = function removeEvent(name, listener) { @@ -2552,14 +2570,27 @@ var triggerEvent = function triggerEvent(name, args) { var eventSet = events.get(name); each(from(eventSet), function (event) { - event(args); + if (args) { + event(args); + } else { + event(); + } }); }; + var initialListenerKeys = keys(initialEventListeners); + each(initialListenerKeys, function (key) { + addEvent(key, initialEventListeners[key]); + }); return [addEvent, removeEvent, triggerEvent]; }; - var OverlayScrollbars = function OverlayScrollbars(target, options) { + var OverlayScrollbars = function OverlayScrollbars(target, options, eventListeners) { + var _getEnvironment = getEnvironment(), + _getDefaultOptions = _getEnvironment._getDefaultOptions, + _nativeScrollbarIsOverlaid = _getEnvironment._nativeScrollbarIsOverlaid; + + var plugins = getPlugins(); var instanceTarget = isHTMLElement(target) ? target : target.target; var potentialInstance = getInstance(instanceTarget); @@ -2567,10 +2598,6 @@ return potentialInstance; } - var _getEnvironment = getEnvironment(), - _getDefaultOptions = _getEnvironment._getDefaultOptions; - - var plugins = getPlugins(); var optionsValidationPlugin = plugins[optionsValidationPluginName]; var validateOptions = function validateOptions(newOptions) { @@ -2579,12 +2606,17 @@ return validate ? validate(opts, true) : opts; }; - var _createEventHub = createEventHub(), - addEvent = _createEventHub[0], - removeEvent = _createEventHub[1], - triggerEvent = _createEventHub[2]; - var currentOptions = assignDeep({}, _getDefaultOptions(), validateOptions(options)); + + var _createEventListenerH = createEventListenerHub(eventListeners), + addEvent = _createEventListenerH[0], + removeEvent = _createEventListenerH[1], + triggerEvent = _createEventListenerH[2]; + + if (_nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.y && !currentOptions.nativeScrollbarsOverlaid.initialize) { + triggerEvent('initializationWithdrawn', false); + } + var structureSetup = createStructureSetup(target); var scrollbarsSetup = createScrollbarsSetup(target, structureSetup); var lifecycleHub = createLifecycleHub(currentOptions, triggerEvent, structureSetup, scrollbarsSetup); @@ -2615,6 +2647,7 @@ removeInstance(instanceTarget); removeEvent(); + triggerEvent('destroyed', false); } }; each(keys(plugins), function (pluginName) { @@ -2626,6 +2659,7 @@ }); instance.update(true); addInstance(instanceTarget, instance); + triggerEvent('initialized', false); return instance; }; OverlayScrollbars.extend = addPlugin; diff --git a/packages/overlayscrollbars/dist/overlayscrollbars.js.map b/packages/overlayscrollbars/dist/overlayscrollbars.js.map index 1ad57ef..eaa4f8b 100644 --- a/packages/overlayscrollbars/dist/overlayscrollbars.js.map +++ b/packages/overlayscrollbars/dist/overlayscrollbars.js.map @@ -1 +1 @@ -{"version":3,"file":"overlayscrollbars.js","sources":["../src/support/cache/cache.ts","../src/support/utils/types.ts","../src/support/utils/array.ts","../src/support/utils/object.ts","../src/support/dom/attribute.ts","../src/support/dom/traversal.ts","../src/support/dom/manipulation.ts","../src/support/dom/create.ts","../src/support/compatibility/vendors.ts","../src/support/compatibility/apis.ts","../src/support/dom/class.ts","../src/support/dom/dimensions.ts","../src/support/dom/events.ts","../src/support/utils/equal.ts","../src/support/utils/function.ts","../src/support/dom/style.ts","../src/support/dom/offset.ts","../src/classnames.ts","../../../node_modules/@babel/runtime/helpers/extends.js","../src/options.ts","../src/environment.ts","../src/setups/structureSetup.ts","../src/setups/scrollbarsSetup.ts","../src/observers/sizeObserver.ts","../src/observers/trinsicObserver.ts","../src/observers/domObserver.ts","../src/lifecycles/lifecycleHubObservers.ts","../src/lifecycles/trinsicLifecycle.ts","../src/lifecycles/paddingLifecycle.ts","../src/lifecycles/overflowLifecycle.ts","../src/lifecycles/lifecycleHub.ts","../src/plugins/plugins.ts","../src/plugins/optionsValidation/validation.ts","../src/plugins/optionsValidation/optionsValidation.ts","../src/instances.ts","../src/events.ts","../src/overlayscrollbars.ts"],"sourcesContent":["export interface CacheOptions {\r\n // initial value of _value.\r\n _initialValue: Value;\r\n // Custom comparison function if shallow compare isn't enough. Returns true if nothing changed.\r\n _equal?: EqualCachePropFunction;\r\n // If true always updates _value and _previous, otherwise they update only when they changed.\r\n _alwaysUpdateValues?: boolean;\r\n}\r\n\r\nexport type CacheValues = [\r\n T, // value\r\n boolean, // changed\r\n T | undefined // previous\r\n];\r\n\r\nexport type EqualCachePropFunction = (currentVal: Value, newVal: Value) => boolean;\r\n\r\nexport type CacheUpdater = (current: Value, previous?: Value) => Value;\r\n\r\nexport type UpdateCacheContextual = (newValue: Value, force?: boolean) => CacheValues;\r\n\r\nexport type UpdateCache = (force?: boolean) => CacheValues;\r\n\r\nexport type GetCurrentCache = (force?: boolean) => CacheValues;\r\n\r\nexport type Cache = [UpdateCache, GetCurrentCache];\r\n\r\nexport type CacheContextual = [UpdateCacheContextual, GetCurrentCache];\r\n\r\nexport function createCache(options: CacheOptions): CacheContextual;\r\nexport function createCache(\r\n options: CacheOptions,\r\n update: CacheUpdater\r\n): Cache;\r\nexport function createCache(\r\n options: CacheOptions,\r\n update?: CacheUpdater\r\n): CacheContextual | Cache {\r\n const { _initialValue, _equal, _alwaysUpdateValues } = options;\r\n let _value: Value = _initialValue;\r\n let _previous: Value | undefined;\r\n\r\n const cacheUpdateContextual: UpdateCacheContextual = (newValue, force?) => {\r\n const curr = _value;\r\n\r\n const newVal = newValue;\r\n const changed = force || (_equal ? !_equal(curr, newVal) : curr !== newVal);\r\n\r\n if (changed || _alwaysUpdateValues) {\r\n _value = newVal;\r\n _previous = curr;\r\n }\r\n\r\n return [_value, changed, _previous];\r\n };\r\n const cacheUpdateIsolated: UpdateCache = (force?) =>\r\n cacheUpdateContextual(update!(_value, _previous), force);\r\n\r\n const getCurrentCache: GetCurrentCache = (force?: boolean) => [\r\n _value,\r\n !!force, // changed\r\n _previous,\r\n ];\r\n\r\n return [update ? cacheUpdateIsolated : cacheUpdateContextual, getCurrentCache] as\r\n | CacheContextual\r\n | Cache;\r\n}\r\n","import { PlainObject } from 'typings';\r\n\r\nconst ElementNodeType = Node.ELEMENT_NODE;\r\nconst { toString, hasOwnProperty } = Object.prototype;\r\n\r\nexport function isUndefined(obj: any): obj is undefined {\r\n return obj === undefined;\r\n}\r\n\r\nexport function isNull(obj: any): obj is null {\r\n return obj === null;\r\n}\r\n\r\nexport const type: (obj: any) => string = (obj) =>\r\n isUndefined(obj) || isNull(obj)\r\n ? `${obj}`\r\n : toString\r\n .call(obj)\r\n .replace(/^\\[object (.+)\\]$/, '$1')\r\n .toLowerCase();\r\n\r\nexport function isNumber(obj: any): obj is number {\r\n return typeof obj === 'number';\r\n}\r\n\r\nexport function isString(obj: any): obj is string {\r\n return typeof obj === 'string';\r\n}\r\n\r\nexport function isBoolean(obj: any): obj is boolean {\r\n return typeof obj === 'boolean';\r\n}\r\n\r\nexport function isFunction(obj: any): obj is (...args: any[]) => any {\r\n return typeof obj === 'function';\r\n}\r\n\r\nexport function isArray(obj: any): obj is Array {\r\n return Array.isArray(obj);\r\n}\r\n\r\nexport function isObject(obj: any): boolean {\r\n return typeof obj === 'object' && !isArray(obj) && !isNull(obj);\r\n}\r\n\r\n/**\r\n * Returns true if the given object is array like, false otherwise.\r\n * @param obj The Object\r\n */\r\nexport function isArrayLike(obj: any): obj is ArrayLike {\r\n const length = !!obj && obj.length;\r\n const lengthCorrectFormat = isNumber(length) && length > -1 && length % 1 == 0; // eslint-disable-line eqeqeq\r\n\r\n return isArray(obj) || (!isFunction(obj) && lengthCorrectFormat)\r\n ? length > 0 && isObject(obj)\r\n ? length - 1 in obj\r\n : true\r\n : false;\r\n}\r\n\r\n/**\r\n * Returns true if the given object is a \"plain\" (e.g. { key: value }) object, false otherwise.\r\n * @param obj The Object.\r\n */\r\nexport function isPlainObject(obj: any): obj is PlainObject {\r\n if (!obj || !isObject(obj) || type(obj) !== 'object') return false;\r\n\r\n let key;\r\n const cstr = 'constructor';\r\n const ctor = obj[cstr];\r\n const ctorProto = ctor && ctor.prototype;\r\n const hasOwnConstructor = hasOwnProperty.call(obj, cstr);\r\n const hasIsPrototypeOf = ctorProto && hasOwnProperty.call(ctorProto, 'isPrototypeOf');\r\n\r\n if (ctor && !hasOwnConstructor && !hasIsPrototypeOf) {\r\n return false;\r\n }\r\n\r\n /* eslint-disable no-restricted-syntax */\r\n for (key in obj) {\r\n /**/\r\n }\r\n /* eslint-enable */\r\n\r\n return isUndefined(key) || hasOwnProperty.call(obj, key);\r\n}\r\n\r\n/**\r\n * Checks whether the given object is a HTMLElement.\r\n * @param obj The object which shall be checked.\r\n */\r\nexport function isHTMLElement(obj: any): obj is HTMLElement {\r\n const instanceofObj = window.HTMLElement;\r\n return obj\r\n ? instanceofObj\r\n ? obj instanceof instanceofObj\r\n : obj.nodeType === ElementNodeType\r\n : false;\r\n}\r\n\r\n/**\r\n * Checks whether the given object is a Element.\r\n * @param obj The object which shall be checked.\r\n */\r\nexport function isElement(obj: any): obj is Element {\r\n const instanceofObj = window.Element;\r\n return obj\r\n ? instanceofObj\r\n ? obj instanceof instanceofObj\r\n : obj.nodeType === ElementNodeType\r\n : false;\r\n}\r\n","import { isArrayLike, isString } from 'support/utils/types';\r\nimport { PlainObject } from 'typings';\r\n\r\ntype RunEachItem = ((...args: any) => any | any[]) | null | undefined;\r\n\r\n/**\r\n * Iterates through a array or object\r\n * @param arrayLikeOrObject The array or object through which shall be iterated.\r\n * @param callback The function which is responsible for the iteration.\r\n * If the function returns true its treated like a \"continue\" statement.\r\n * If the function returns false its treated like a \"break\" statement.\r\n */\r\nexport function each(\r\n array: Array | ReadonlyArray,\r\n callback: (value: T, indexOrKey: number, source: Array) => boolean | unknown\r\n): Array | ReadonlyArray;\r\nexport function each(\r\n array: Array | ReadonlyArray | null | undefined,\r\n callback: (value: T, indexOrKey: number, source: Array) => boolean | unknown\r\n): Array | ReadonlyArray | null | undefined;\r\nexport function each(\r\n arrayLikeObject: ArrayLike,\r\n callback: (value: T, indexOrKey: number, source: ArrayLike) => boolean | unknown\r\n): ArrayLike;\r\nexport function each(\r\n arrayLikeObject: ArrayLike | null | undefined,\r\n callback: (value: T, indexOrKey: number, source: ArrayLike) => boolean | unknown\r\n): ArrayLike | null | undefined;\r\nexport function each(\r\n obj: PlainObject,\r\n callback: (value: any, indexOrKey: string, source: PlainObject) => boolean | unknown\r\n): PlainObject;\r\nexport function each(\r\n obj: PlainObject | null | undefined,\r\n callback: (value: any, indexOrKey: string, source: PlainObject) => boolean | unknown\r\n): PlainObject | null | undefined;\r\nexport function each(\r\n source: ArrayLike | PlainObject | null | undefined,\r\n callback: (value: T, indexOrKey: any, source: any) => boolean | unknown\r\n): Array | ReadonlyArray | ArrayLike | PlainObject | null | undefined {\r\n if (isArrayLike(source)) {\r\n for (let i = 0; i < source.length; i++) {\r\n if (callback(source[i], i, source) === false) {\r\n break;\r\n }\r\n }\r\n } else if (source) {\r\n each(Object.keys(source), (key) => callback(source[key], key, source));\r\n }\r\n return source;\r\n}\r\n\r\n/**\r\n * Returns the index of the given inside the given array or -1 if the given item isn't part of the given array.\r\n * @param arr The array.\r\n * @param item The item.\r\n * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.\r\n */\r\nexport const indexOf = (arr: T[], item: T, fromIndex?: number): number =>\r\n arr.indexOf(item, fromIndex);\r\n\r\n/**\r\n * Pushesh all given items into the given array and returns it.\r\n * @param array The array the items shall be pushed into.\r\n * @param items The items which shall be pushed into the array.\r\n */\r\nexport const push = (array: T[], items: T | ArrayLike, arrayIsSingleItem?: boolean): T[] => {\r\n !arrayIsSingleItem && !isString(items) && isArrayLike(items)\r\n ? Array.prototype.push.apply(array, items as T[])\r\n : array.push(items as T);\r\n return array;\r\n};\r\n\r\n/**\r\n * Creates a shallow-copied Array instance from an array-like or iterable object.\r\n * @param arr The object from which the array instance shall be created.\r\n */\r\nexport const from = (arr?: ArrayLike | Set) => {\r\n if (Array.from && arr) {\r\n return Array.from(arr);\r\n }\r\n const result: T[] = [];\r\n\r\n if (arr instanceof Set) {\r\n arr.forEach((value) => {\r\n push(result, value);\r\n });\r\n } else {\r\n each(arr, (elm) => {\r\n push(result, elm);\r\n });\r\n }\r\n\r\n return result;\r\n};\r\n\r\n/**\r\n * Check whether the passed array is empty.\r\n * @param array The array which shall be checked.\r\n */\r\nexport const isEmptyArray = (array: any[] | null | undefined): boolean =>\r\n !!array && array.length === 0;\r\n\r\n/**\r\n * Calls all functions in the passed array/set of functions.\r\n * @param arr The array filled with function which shall be called.\r\n * @param p1 The first param.\r\n */\r\nexport const runEach = (arr: ArrayLike | Set, p1?: unknown): void => {\r\n const runFn = (fn: RunEachItem) => fn && fn(p1);\r\n if (arr instanceof Set) {\r\n arr.forEach(runFn);\r\n } else {\r\n each(arr, runFn);\r\n }\r\n};\r\n","import { isArray, isFunction, isPlainObject, isNull } from 'support/utils/types';\r\nimport { each } from 'support/utils/array';\r\n\r\n/**\r\n * Determines whether the passed object has a property with the passed name.\r\n * @param obj The object.\r\n * @param prop The name of the property.\r\n */\r\nexport const hasOwnProperty = (obj: any, prop: string | number | symbol): boolean =>\r\n Object.prototype.hasOwnProperty.call(obj, prop);\r\n\r\n/**\r\n * Returns the names of the enumerable string properties and methods of an object.\r\n * @param obj The object of which the properties shall be returned.\r\n */\r\nexport const keys = (obj: any): Array => (obj ? Object.keys(obj) : []);\r\n\r\n// https://github.com/jquery/jquery/blob/master/src/core.js#L116\r\nexport function assignDeep(target: T, object1: U): T & U;\r\nexport function assignDeep(target: T, object1: U, object2: V): T & U & V;\r\nexport function assignDeep(\r\n target: T,\r\n object1: U,\r\n object2: V,\r\n object3: W\r\n): T & U & V & W;\r\nexport function assignDeep(\r\n target: T,\r\n object1: U,\r\n object2: V,\r\n object3: W,\r\n object4: X\r\n): T & U & V & W & X;\r\nexport function assignDeep(\r\n target: T,\r\n object1: U,\r\n object2: V,\r\n object3: W,\r\n object4: X,\r\n object5: Y\r\n): T & U & V & W & X & Y;\r\nexport function assignDeep(\r\n target: T,\r\n object1?: U,\r\n object2?: V,\r\n object3?: W,\r\n object4?: X,\r\n object5?: Y,\r\n object6?: Z\r\n): T & U & V & W & X & Y & Z {\r\n const sources: Array = [object1, object2, object3, object4, object5, object6];\r\n\r\n // Handle case when target is a string or something (possible in deep copy)\r\n if ((typeof target !== 'object' || isNull(target)) && !isFunction(target)) {\r\n target = {} as T;\r\n }\r\n\r\n each(sources, (source) => {\r\n // Extend the base object\r\n each(keys(source), (key) => {\r\n const copy: any = source[key];\r\n\r\n // Prevent Object.prototype pollution\r\n // Prevent never-ending loop\r\n if (target === copy) {\r\n return true;\r\n }\r\n\r\n const copyIsArray = isArray(copy);\r\n\r\n // Recurse if we're merging plain objects or arrays\r\n if (copy && (isPlainObject(copy) || copyIsArray)) {\r\n const src = target[key];\r\n let clone: any = src;\r\n\r\n // Ensure proper type for the source value\r\n if (copyIsArray && !isArray(src)) {\r\n clone = [];\r\n } else if (!copyIsArray && !isPlainObject(src)) {\r\n clone = {};\r\n }\r\n\r\n // Never move original objects, clone them\r\n target[key] = assignDeep(clone, copy) as any;\r\n } else {\r\n target[key] = copy;\r\n }\r\n });\r\n });\r\n\r\n // Return the modified object\r\n return target as any;\r\n}\r\n\r\n/**\r\n * Returns true if the given object is empty, false otherwise.\r\n * @param obj The Object.\r\n */\r\nexport function isEmptyObject(obj: any): boolean {\r\n /* eslint-disable no-restricted-syntax, guard-for-in */\r\n for (const name in obj) return false;\r\n return true;\r\n /* eslint-enable */\r\n}\r\n","import { isUndefined } from 'support/utils/types';\r\n\r\ntype GetSetPropName = 'scrollLeft' | 'scrollTop' | 'value';\r\n\r\nfunction getSetProp(\r\n topLeft: GetSetPropName,\r\n fallback: number | string,\r\n elm: HTMLElement | HTMLInputElement | null,\r\n value?: number | string\r\n): number | string | void {\r\n if (isUndefined(value)) {\r\n return elm ? elm[topLeft] : fallback;\r\n }\r\n elm && (elm[topLeft] = value);\r\n}\r\n\r\n/**\r\n * Gets or sets a attribute with the given attribute of the given element depending whether the value attribute is given.\r\n * Returns null if the element has no attribute with the given name.\r\n * @param elm The element of which the attribute shall be get or set.\r\n * @param attrName The attribute name which shall be get or set.\r\n * @param value The value of the attribute which shall be set.\r\n */\r\nexport function attr(elm: HTMLElement | null, attrName: string): string | null;\r\nexport function attr(elm: HTMLElement | null, attrName: string, value: string): void;\r\nexport function attr(\r\n elm: HTMLElement | null,\r\n attrName: string,\r\n value?: string\r\n): string | null | void {\r\n if (isUndefined(value)) {\r\n return elm ? elm.getAttribute(attrName) : null;\r\n }\r\n elm && elm.setAttribute(attrName, value);\r\n}\r\n\r\n/**\r\n * Removes the given attribute from the given element.\r\n * @param elm The element of which the attribute shall be removed.\r\n * @param attrName The attribute name.\r\n */\r\nexport const removeAttr = (elm: Element | null, attrName: string): void => {\r\n elm && elm.removeAttribute(attrName);\r\n};\r\n\r\n/**\r\n * Gets or sets the scrollLeft value of the given element depending whether the value attribute is given.\r\n * @param elm The element of which the scrollLeft value shall be get or set.\r\n * @param value The scrollLeft value which shall be set.\r\n */\r\nexport function scrollLeft(elm: HTMLElement | null): number;\r\nexport function scrollLeft(elm: HTMLElement | null, value: number): void;\r\nexport function scrollLeft(elm: HTMLElement | null, value?: number): number | void {\r\n return getSetProp('scrollLeft', 0, elm, value) as number;\r\n}\r\n\r\n/**\r\n * Gets or sets the scrollTop value of the given element depending whether the value attribute is given.\r\n * @param elm The element of which the scrollTop value shall be get or set.\r\n * @param value The scrollTop value which shall be set.\r\n */\r\nexport function scrollTop(elm: HTMLElement | null): number;\r\nexport function scrollTop(elm: HTMLElement | null, value: number): void;\r\nexport function scrollTop(elm: HTMLElement | null, value?: number): number | void {\r\n return getSetProp('scrollTop', 0, elm, value) as number;\r\n}\r\n\r\n/**\r\n * Gets or sets the value of the given input element depending whether the value attribute is given.\r\n * @param elm The input element of which the value shall be get or set.\r\n * @param value The value which shall be set.\r\n */\r\nexport function val(elm: HTMLInputElement | null): string;\r\nexport function val(elm: HTMLInputElement | null, value: string): void;\r\nexport function val(elm: HTMLInputElement | null, value?: string): string | void {\r\n return getSetProp('value', '', elm, value) as string;\r\n}\r\n","import { isElement } from 'support/utils/types';\r\nimport { push, from } from 'support/utils/array';\r\n\r\ntype InputElementType = Element | Node | false | null | undefined;\r\ntype OutputElementType = Element | null;\r\n\r\nconst elmPrototype = Element.prototype;\r\n\r\n/**\r\n * Find all elements with the passed selector, outgoing (and including) the passed element or the document if no element was provided.\r\n * @param selector The selector which has to be searched by.\r\n * @param elm The element from which the search shall be outgoing.\r\n */\r\nconst find = (selector: string, elm?: InputElementType): Element[] => {\r\n const arr: Array = [];\r\n const rootElm = elm ? (isElement(elm) ? elm : null) : document;\r\n\r\n return rootElm ? push(arr, rootElm.querySelectorAll(selector)) : arr;\r\n};\r\n\r\n/**\r\n * Find the first element with the passed selector, outgoing (and including) the passed element or the document if no element was provided.\r\n * @param selector The selector which has to be searched by.\r\n * @param elm The element from which the search shall be outgoing.\r\n */\r\nconst findFirst = (selector: string, elm?: InputElementType): OutputElementType => {\r\n const rootElm = elm ? (isElement(elm) ? elm : null) : document;\r\n\r\n return rootElm ? rootElm.querySelector(selector) : null;\r\n};\r\n\r\n/**\r\n * Determines whether the passed element is matching with the passed selector.\r\n * @param elm The element which has to be compared with the passed selector.\r\n * @param selector The selector which has to be compared with the passed element. Additional selectors: ':visible' and ':hidden'.\r\n */\r\nconst is = (elm: InputElementType, selector: string): boolean => {\r\n if (isElement(elm)) {\r\n /* istanbul ignore next */\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n const fn: (...args: any) => boolean = elmPrototype.matches || elmPrototype.msMatchesSelector;\r\n return fn.call(elm, selector);\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Returns the children (no text-nodes or comments) of the passed element which are matching the passed selector. An empty array is returned if the passed element is null.\r\n * @param elm The element of which the children shall be returned.\r\n * @param selector The selector which must match with the children elements.\r\n */\r\nconst children = (elm: InputElementType, selector?: string): ReadonlyArray => {\r\n const childs: Array = [];\r\n\r\n return isElement(elm)\r\n ? push(\r\n childs,\r\n from(elm.children).filter((child) => (selector ? is(child, selector) : child))\r\n )\r\n : childs;\r\n};\r\n\r\n/**\r\n * Returns the childNodes (incl. text-nodes or comments etc.) of the passed element. An empty array is returned if the passed element is null.\r\n * @param elm The element of which the childNodes shall be returned.\r\n */\r\nconst contents = (elm: InputElementType): ReadonlyArray =>\r\n elm ? from(elm.childNodes) : [];\r\n\r\n/**\r\n * Returns the parent element of the passed element, or null if the passed element is null.\r\n * @param elm The element of which the parent element shall be returned.\r\n */\r\nconst parent = (elm: InputElementType): OutputElementType => (elm ? elm.parentElement : null);\r\n\r\nconst closest = (elm: InputElementType, selector: string): OutputElementType => {\r\n if (isElement(elm)) {\r\n const closestFn = elmPrototype.closest;\r\n if (closestFn) {\r\n return closestFn.call(elm, selector);\r\n }\r\n\r\n do {\r\n if (is(elm, selector)) {\r\n return elm as Element;\r\n }\r\n elm = parent(elm);\r\n } while (elm);\r\n }\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n * Determines whether the given element lies between two selectors in the DOM.\r\n * @param elm The element.\r\n * @param highBoundarySelector The high boundary selector.\r\n * @param deepBoundarySelector The deep boundary selector.\r\n */\r\nconst liesBetween = (\r\n elm: InputElementType,\r\n highBoundarySelector: string,\r\n deepBoundarySelector: string\r\n): boolean => {\r\n const closestHighBoundaryElm = elm && closest(elm, highBoundarySelector);\r\n const closestDeepBoundaryElm = elm && findFirst(deepBoundarySelector, closestHighBoundaryElm);\r\n\r\n return closestHighBoundaryElm && closestDeepBoundaryElm\r\n ? closestHighBoundaryElm === elm ||\r\n closestDeepBoundaryElm === elm ||\r\n closest(closest(elm, deepBoundarySelector), highBoundarySelector) !== closestHighBoundaryElm\r\n : false;\r\n};\r\n\r\nexport { find, findFirst, is, children, contents, parent, liesBetween };\r\n","import { isArrayLike } from 'support/utils/types';\r\nimport { each, from } from 'support/utils/array';\r\nimport { parent } from 'support/dom/traversal';\r\n\r\ntype NodeCollection = ArrayLike | Node | false | null | undefined;\r\n\r\n/**\r\n * Inserts Nodes before the given preferredAnchor element.\r\n * @param parentElm The parent of the preferredAnchor element or the element which shall be the parent of the inserted Nodes.\r\n * @param preferredAnchor The element before which the Nodes shall be inserted or null if the elements shall be appended at the end.\r\n * @param insertedElms The Nodes which shall be inserted.\r\n */\r\nconst before = (\r\n parentElm: Node | false | null | undefined,\r\n preferredAnchor: Node | null | undefined,\r\n insertedElms: NodeCollection\r\n): void => {\r\n if (insertedElms) {\r\n let anchor: Node | null | undefined = preferredAnchor;\r\n let fragment: DocumentFragment | Node | null | undefined;\r\n\r\n // parent must be defined\r\n if (parentElm) {\r\n if (isArrayLike(insertedElms)) {\r\n fragment = document.createDocumentFragment();\r\n\r\n // append all insertedElms to the fragment and if one of these is the anchor, change the anchor\r\n each(insertedElms, (insertedElm) => {\r\n if (insertedElm === anchor) {\r\n anchor = insertedElm.previousSibling;\r\n }\r\n fragment!.appendChild(insertedElm);\r\n });\r\n } else {\r\n fragment = insertedElms;\r\n }\r\n\r\n // if the preferred anchor isn't null set it to a valid anchor\r\n if (preferredAnchor) {\r\n if (!anchor) {\r\n anchor = parentElm.firstChild;\r\n } else if (anchor !== preferredAnchor) {\r\n anchor = anchor.nextSibling;\r\n }\r\n }\r\n\r\n parentElm.insertBefore(fragment, anchor || null);\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Appends the given children at the end of the given Node.\r\n * @param node The Node to which the children shall be appended.\r\n * @param children The Nodes which shall be appended.\r\n */\r\nexport const appendChildren = (node: Node | null | undefined, children: NodeCollection): void => {\r\n before(node, null, children);\r\n};\r\n\r\n/**\r\n * Prepends the given children at the start of the given Node.\r\n * @param node The Node to which the children shall be prepended.\r\n * @param children The Nodes which shall be prepended.\r\n */\r\nexport const prependChildren = (node: Node | null | undefined, children: NodeCollection): void => {\r\n before(node, node && node.firstChild, children);\r\n};\r\n\r\n/**\r\n * Inserts the given Nodes before the given Node.\r\n * @param node The Node before which the given Nodes shall be inserted.\r\n * @param insertedNodes The Nodes which shall be inserted.\r\n */\r\nexport const insertBefore = (\r\n node: Node | null | undefined,\r\n insertedNodes: NodeCollection\r\n): void => {\r\n before(parent(node), node, insertedNodes);\r\n};\r\n\r\n/**\r\n * Inserts the given Nodes after the given Node.\r\n * @param node The Node after which the given Nodes shall be inserted.\r\n * @param insertedNodes The Nodes which shall be inserted.\r\n */\r\nexport const insertAfter = (node: Node | null | undefined, insertedNodes: NodeCollection): void => {\r\n before(parent(node), node && node.nextSibling, insertedNodes);\r\n};\r\n\r\n/**\r\n * Removes the given Nodes from their parent.\r\n * @param nodes The Nodes which shall be removed.\r\n */\r\nexport const removeElements = (nodes: NodeCollection): void => {\r\n if (isArrayLike(nodes)) {\r\n each(from(nodes), (e) => removeElements(e));\r\n } else if (nodes) {\r\n const parentElm = parent(nodes);\r\n if (parentElm) {\r\n parentElm.removeChild(nodes);\r\n }\r\n }\r\n};\r\n","import { each } from 'support/utils/array';\r\nimport { attr } from 'support/dom/attribute';\r\nimport { contents } from 'support/dom/traversal';\r\nimport { removeElements } from 'support/dom/manipulation';\r\n\r\n/**\r\n * Creates a div DOM node.\r\n */\r\nexport const createDiv = (classNames?: string): HTMLDivElement => {\r\n const div = document.createElement('div');\r\n if (classNames) {\r\n attr(div, 'class', classNames);\r\n }\r\n return div;\r\n};\r\n\r\n/**\r\n * Creates DOM nodes modeled after the passed html string and returns the root dom nodes as a array.\r\n * @param html The html string after which the DOM nodes shall be created.\r\n */\r\nexport const createDOM = (html: string): ReadonlyArray => {\r\n const createdDiv = createDiv();\r\n createdDiv.innerHTML = html.trim();\r\n\r\n return each(contents(createdDiv), (elm) => removeElements(elm));\r\n};\r\n","import { each } from 'support/utils/array';\r\nimport { hasOwnProperty } from 'support/utils/object';\r\nimport { createDiv } from 'support/dom/create';\r\n\r\nconst firstLetterToUpper = (str: string): string => str.charAt(0).toUpperCase() + str.slice(1);\r\nconst getDummyStyle = (): CSSStyleDeclaration => createDiv().style;\r\n\r\n// https://developer.mozilla.org/en-US/docs/Glossary/Vendor_Prefix\r\n\r\nexport const cssPrefixes: ReadonlyArray = ['-webkit-', '-moz-', '-o-', '-ms-'];\r\nexport const jsPrefixes: ReadonlyArray = [\r\n 'WebKit',\r\n 'Moz',\r\n 'O',\r\n 'MS',\r\n 'webkit',\r\n 'moz',\r\n 'o',\r\n 'ms',\r\n];\r\n\r\nexport const jsCache: { [key: string]: any } = {};\r\nexport const cssCache: { [key: string]: string } = {};\r\n\r\n/**\r\n * Gets the name of the given CSS property with vendor prefix if it isn't supported without it, or and empty string if unsupported.\r\n * @param name The name of the CSS property which shall be get.\r\n */\r\nexport const cssProperty = (name: string): string => {\r\n let result: string | undefined = cssCache[name];\r\n\r\n if (hasOwnProperty(cssCache, name)) {\r\n return result;\r\n }\r\n\r\n const uppercasedName: string = firstLetterToUpper(name);\r\n const elmStyle: CSSStyleDeclaration = getDummyStyle();\r\n\r\n each(cssPrefixes, (prefix: string) => {\r\n const prefixWithoutDashes: string = prefix.replace(/-/g, '');\r\n const resultPossibilities: Array = [\r\n name, // transition\r\n prefix + name, // -webkit-transition\r\n prefixWithoutDashes + uppercasedName, // webkitTransition\r\n firstLetterToUpper(prefixWithoutDashes) + uppercasedName, // WebkitTransition\r\n ];\r\n\r\n // eslint-disable-next-line no-return-assign\r\n return !(result = resultPossibilities.find(\r\n (resultPossibility: string) => elmStyle[resultPossibility] !== undefined\r\n ));\r\n });\r\n\r\n // eslint-disable-next-line no-return-assign\r\n return (cssCache[name] = result || '');\r\n};\r\n\r\n/**\r\n * Get the name of the given CSS property value(s), with vendor prefix if it isn't supported without it, or an empty string if no value is supported.\r\n * @param property The CSS property to which the CSS property value(s) belong.\r\n * @param values The value(s) separated by spaces which shall be get.\r\n * @param suffix A suffix which is added to each value in case the value is a function or something else more advanced.\r\n */\r\nexport const cssPropertyValue = (property: string, values: string, suffix?: string): string => {\r\n const name = `${property} ${values}`;\r\n let result: string | undefined = cssCache[name];\r\n\r\n if (hasOwnProperty(cssCache, name)) {\r\n return result;\r\n }\r\n\r\n const dummyStyle: CSSStyleDeclaration = getDummyStyle();\r\n const possbleValues: Array = values.split(' ');\r\n const preparedSuffix: string = suffix || '';\r\n const cssPrefixesWithFirstEmpty = [''].concat(cssPrefixes);\r\n\r\n each(possbleValues, (possibleValue: string) => {\r\n each(cssPrefixesWithFirstEmpty, (prefix: string) => {\r\n const prop = prefix + possibleValue;\r\n dummyStyle.cssText = `${property}:${prop}${preparedSuffix}`;\r\n if (dummyStyle.length) {\r\n result = prop;\r\n return false;\r\n }\r\n });\r\n return !result;\r\n });\r\n\r\n // eslint-disable-next-line no-return-assign\r\n return (cssCache[name] = result || '');\r\n};\r\n\r\n/**\r\n * Get the requested JS function, object or constructor with vendor prefix if it isn't supported without or undefined if unsupported.\r\n * @param name The name of the JS function, object or constructor.\r\n */\r\nexport const jsAPI = (name: string): T | undefined => {\r\n let result: any = jsCache[name] || window[name];\r\n\r\n if (hasOwnProperty(jsCache, name)) {\r\n return result;\r\n }\r\n\r\n each(jsPrefixes, (prefix: string) => {\r\n result = result || window[prefix + firstLetterToUpper(name)];\r\n return !result;\r\n });\r\n\r\n jsCache[name] = result;\r\n return result;\r\n};\r\n","import { jsAPI } from 'support/compatibility/vendors';\r\n\r\nexport const MutationObserverConstructor = jsAPI('MutationObserver');\r\nexport const IntersectionObserverConstructor = jsAPI(\r\n 'IntersectionObserver'\r\n);\r\nexport const ResizeObserverConstructor = jsAPI('ResizeObserver');\r\nexport const cAF = jsAPI('cancelAnimationFrame');\r\nexport const rAF = jsAPI('requestAnimationFrame');\r\n","import { isString } from 'support/utils/types';\r\nimport { each } from 'support/utils/array';\r\nimport { keys } from 'support/utils/object';\r\n\r\nconst rnothtmlwhite = /[^\\x20\\t\\r\\n\\f]+/g;\r\nconst classListAction = (\r\n elm: Element | false | null | undefined,\r\n className: string,\r\n action: (elmClassList: DOMTokenList, clazz: string) => boolean | void\r\n): boolean => {\r\n let clazz: string;\r\n let i = 0;\r\n let result = false;\r\n\r\n if (elm && isString(className)) {\r\n const classes: Array = className.match(rnothtmlwhite) || [];\r\n result = classes.length > 0;\r\n while ((clazz = classes[i++])) {\r\n result = !!action(elm.classList, clazz) && result;\r\n }\r\n }\r\n return result;\r\n};\r\n\r\n/**\r\n * Check whether the given element has the given class name(s).\r\n * @param elm The element.\r\n * @param className The class name(s).\r\n */\r\nexport const hasClass = (elm: Element | false | null | undefined, className: string): boolean =>\r\n classListAction(elm, className, (classList, clazz) => classList.contains(clazz));\r\n\r\n/**\r\n * Adds the given class name(s) to the given element.\r\n * @param elm The element.\r\n * @param className The class name(s) which shall be added. (separated by spaces)\r\n */\r\nexport const addClass = (elm: Element | false | null | undefined, className: string): void => {\r\n classListAction(elm, className, (classList, clazz) => classList.add(clazz));\r\n};\r\n\r\n/**\r\n * Removes the given class name(s) from the given element.\r\n * @param elm The element.\r\n * @param className The class name(s) which shall be removed. (separated by spaces)\r\n */\r\nexport const removeClass = (elm: Element | false | null | undefined, className: string): void => {\r\n classListAction(elm, className, (classList, clazz) => classList.remove(clazz));\r\n};\r\n\r\n/**\r\n * Takes two className strings, compares them and returns the difference as array.\r\n * @param classNameA ClassName A.\r\n * @param classNameB ClassName B.\r\n */\r\nexport const diffClass = (\r\n classNameA: string | null | undefined,\r\n classNameB: string | null | undefined\r\n) => {\r\n const classNameASplit = classNameA && classNameA.split(' ');\r\n const classNameBSplit = classNameB && classNameB.split(' ');\r\n const tempObj = {};\r\n\r\n each(classNameASplit, (className) => {\r\n tempObj[className] = 1;\r\n });\r\n each(classNameBSplit, (className) => {\r\n if (tempObj[className]) {\r\n delete tempObj[className];\r\n } else {\r\n tempObj[className] = 1;\r\n }\r\n });\r\n\r\n return keys(tempObj);\r\n};\r\n","export interface WH {\r\n w: T;\r\n h: T;\r\n}\r\n\r\nconst elementHasDimensions = (elm: HTMLElement): boolean =>\r\n !!(elm.offsetWidth || elm.offsetHeight || elm.getClientRects().length);\r\nconst zeroObj: WH = {\r\n w: 0,\r\n h: 0,\r\n};\r\n\r\n/**\r\n * Returns the window inner- width and height.\r\n */\r\nexport const windowSize = (): WH => ({\r\n w: window.innerWidth,\r\n h: window.innerHeight,\r\n});\r\n\r\n/**\r\n * Returns the scroll- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the scroll- width and height shall be returned.\r\n */\r\nexport const offsetSize = (elm: HTMLElement | null | undefined): WH =>\r\n elm\r\n ? {\r\n w: elm.offsetWidth,\r\n h: elm.offsetHeight,\r\n }\r\n : zeroObj;\r\n\r\n/**\r\n * Returns the client- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the client- width and height shall be returned.\r\n */\r\nexport const clientSize = (elm: HTMLElement | null | undefined): WH =>\r\n elm\r\n ? {\r\n w: elm.clientWidth,\r\n h: elm.clientHeight,\r\n }\r\n : zeroObj;\r\n\r\n/**\r\n * Returns the client- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the client- width and height shall be returned.\r\n */\r\nexport const scrollSize = (elm: HTMLElement | null | undefined): WH =>\r\n elm\r\n ? {\r\n w: elm.scrollWidth,\r\n h: elm.scrollHeight,\r\n }\r\n : zeroObj;\r\n\r\n/**\r\n * Returns the BoundingClientRect of the passed element.\r\n * @param elm The element of which the BoundingClientRect shall be returned.\r\n */\r\nexport const getBoundingClientRect = (elm: HTMLElement): DOMRect => elm.getBoundingClientRect();\r\n\r\n/**\r\n * Determines whether the passed element has any dimensions.\r\n * @param elm The element.\r\n */\r\nexport const hasDimensions = (elm: HTMLElement | null | undefined): boolean =>\r\n elm ? elementHasDimensions(elm as HTMLElement) : false;\r\n","import { isUndefined } from 'support/utils/types';\r\nimport { each, push, runEach } from 'support/utils/array';\r\n\r\nlet passiveEventsSupport: boolean;\r\nconst supportPassiveEvents = (): boolean => {\r\n if (isUndefined(passiveEventsSupport)) {\r\n passiveEventsSupport = false;\r\n try {\r\n /* eslint-disable */\r\n // @ts-ignore\r\n window.addEventListener(\r\n 'test',\r\n null,\r\n Object.defineProperty({}, 'passive', {\r\n get: function () {\r\n passiveEventsSupport = true;\r\n },\r\n })\r\n );\r\n /* eslint-enable */\r\n } catch (e) {}\r\n }\r\n return passiveEventsSupport;\r\n};\r\nconst splitEventNames = (eventNames: string) => eventNames.split(' ');\r\n\r\nexport interface OnOptions {\r\n _capture?: boolean;\r\n _passive?: boolean;\r\n _once?: boolean;\r\n}\r\n\r\n/**\r\n * Removes the passed event listener for the passed events with the passed options.\r\n * @param target The element from which the listener shall be removed.\r\n * @param eventNames The eventsnames for which the listener shall be removed.\r\n * @param listener The listener which shall be removed.\r\n * @param capture The options of the removed listener.\r\n */\r\nexport const off = (\r\n target: EventTarget,\r\n eventNames: string,\r\n listener: (event: T) => any,\r\n capture?: boolean\r\n): void => {\r\n each(splitEventNames(eventNames), (eventName) => {\r\n target.removeEventListener(eventName, listener as EventListener, capture);\r\n });\r\n};\r\n\r\n/**\r\n * Adds the passed event listener for the passed eventnames with the passed options.\r\n * @param target The element to which the listener shall be added.\r\n * @param eventNames The eventsnames for which the listener shall be called.\r\n * @param listener The listener which is called on the eventnames.\r\n * @param options The options of the added listener.\r\n */\r\nexport const on = (\r\n target: EventTarget,\r\n eventNames: string,\r\n listener: (event: T) => any,\r\n options?: OnOptions\r\n): (() => void) => {\r\n const doSupportPassiveEvents = supportPassiveEvents();\r\n const passive = (doSupportPassiveEvents && options && options._passive) || false;\r\n const capture = (options && options._capture) || false;\r\n const once = (options && options._once) || false;\r\n const offListeners: (() => void)[] = [];\r\n const nativeOptions: AddEventListenerOptions | boolean = doSupportPassiveEvents\r\n ? {\r\n passive,\r\n capture,\r\n }\r\n : capture;\r\n\r\n each(splitEventNames(eventNames), (eventName) => {\r\n const finalListener = (once\r\n ? (evt: T) => {\r\n target.removeEventListener(eventName, finalListener, capture);\r\n listener && listener(evt);\r\n }\r\n : listener) as EventListener;\r\n\r\n push(offListeners, off.bind(null, target, eventName, finalListener, capture));\r\n target.addEventListener(eventName, finalListener, nativeOptions);\r\n });\r\n\r\n return runEach.bind(0, offListeners);\r\n};\r\n\r\n/**\r\n * Shorthand for the stopPropagation event Method.\r\n * @param evt The event of which the stopPropagation method shall be called.\r\n */\r\nexport const stopPropagation = (evt: Event): void => evt.stopPropagation();\r\n\r\n/**\r\n * Shorthand for the preventDefault event Method.\r\n * @param evt The event of which the preventDefault method shall be called.\r\n */\r\nexport const preventDefault = (evt: Event): void => evt.preventDefault();\r\n\r\n/**\r\n * Shorthand for the stopPropagation and preventDefault event Method.\r\n * @param evt The event of which the stopPropagation and preventDefault methods shall be called.\r\n */\r\nexport const stopAndPrevent = (evt: Event): void =>\r\n (stopPropagation(evt) as undefined) || (preventDefault(evt) as undefined);\r\n","import { each } from 'support/utils/array';\r\nimport { WH, XY, TRBL } from 'support/dom';\r\nimport { PlainObject } from 'typings';\r\n\r\n/**\r\n * Compares two objects and returns true if all values of the passed prop names are identical, false otherwise or if one of the two object is falsy.\r\n * @param a Object a.\r\n * @param b Object b.\r\n * @param props The props which shall be compared.\r\n */\r\nexport const equal = (\r\n a: T | undefined,\r\n b: T | undefined,\r\n props: Array,\r\n propMutation?: ((value: any) => any) | null | false\r\n): boolean => {\r\n if (a && b) {\r\n let result = true;\r\n each(props, (prop) => {\r\n const compareA = propMutation ? propMutation(a[prop]) : a[prop];\r\n const compareB = propMutation ? propMutation(b[prop]) : b[prop];\r\n if (compareA !== compareB) {\r\n result = false;\r\n }\r\n });\r\n return result;\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalWH = (a?: WH, b?: WH) => equal(a, b, ['w', 'h']);\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalXY = (a?: XY, b?: XY) => equal(a, b, ['x', 'y']);\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalTRBL = (a?: TRBL, b?: TRBL) => equal(a, b, ['t', 'r', 'b', 'l']);\r\n\r\n/**\r\n * Compares two DOM Rects for their equality of their width and height properties\r\n * Also returns false if one of the DOM Rects is undefined or null.\r\n * @param a DOM Rect a.\r\n * @param b DOM Rect b.\r\n * @param round Whether the values should be rounded.\r\n */\r\nexport const equalBCRWH = (a?: DOMRect, b?: DOMRect, round?: boolean) =>\r\n equal(a, b, ['width', 'height'], round && ((value) => Math.round(value)));\r\n","import { isNumber, isFunction } from 'support/utils/types';\r\nimport { from } from 'support/utils/array';\r\nimport { rAF, cAF } from 'support/compatibility/apis';\r\n\r\nconst clearTimeouts = (id: number | undefined) => {\r\n id && window.clearTimeout(id);\r\n id && cAF!(id);\r\n};\r\n\r\ntype DebounceTiming = number | false | null | undefined;\r\n\r\nexport interface DebounceOptions any> {\r\n /**\r\n * The timeout for debouncing. If null, no debounce is applied.\r\n */\r\n _timeout?: DebounceTiming | (() => DebounceTiming);\r\n /**\r\n * A maximum amount of ms. before the function will be called even with debounce.\r\n */\r\n _maxDelay?: DebounceTiming | (() => DebounceTiming);\r\n /**\r\n * Function which merges parameters for each canceled debounce.\r\n * If parameters can't be merged the function will return null, otherwise it returns the merged parameters.\r\n */\r\n _mergeParams?: (\r\n prev: Parameters,\r\n curr: Parameters\r\n ) => Parameters | false | null | undefined;\r\n}\r\n\r\nexport interface Debounced any> {\r\n (...args: Parameters): ReturnType;\r\n _flush(): void;\r\n}\r\n\r\nexport const noop = () => {}; // eslint-disable-line\r\n\r\n/**\r\n * Debounces the given function either with a timeout or a animation frame.\r\n * @param functionToDebounce The function which shall be debounced.\r\n * @param options Options for debouncing.\r\n */\r\nexport const debounce = any>(\r\n functionToDebounce: FunctionToDebounce,\r\n options?: DebounceOptions\r\n): Debounced => {\r\n let timeoutId: number | undefined;\r\n let maxTimeoutId: number | undefined;\r\n let prevArguments: Parameters | null | undefined;\r\n let latestArguments: Parameters | null | undefined;\r\n const { _timeout, _maxDelay, _mergeParams } = options || {};\r\n const setT = window.setTimeout;\r\n\r\n const invokeFunctionToDebounce = function (args: IArguments) {\r\n clearTimeouts(timeoutId);\r\n clearTimeouts(maxTimeoutId);\r\n maxTimeoutId = timeoutId = prevArguments = undefined;\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n functionToDebounce.apply(this, args);\r\n };\r\n\r\n const mergeParms = (\r\n curr: Parameters\r\n ): Parameters | false | null | undefined =>\r\n _mergeParams && prevArguments ? _mergeParams(prevArguments, curr) : curr;\r\n\r\n const flush = () => {\r\n /* istanbul ignore next */\r\n if (timeoutId) {\r\n invokeFunctionToDebounce(mergeParms(latestArguments!) || latestArguments!);\r\n }\r\n };\r\n\r\n const debouncedFn = function () {\r\n // eslint-disable-next-line prefer-rest-params\r\n const args: Parameters = from(arguments) as Parameters;\r\n const finalTimeout = isFunction(_timeout) ? _timeout() : _timeout;\r\n const hasTimeout = isNumber(finalTimeout) && finalTimeout >= 0;\r\n\r\n if (hasTimeout) {\r\n const finalMaxWait = isFunction(_maxDelay) ? _maxDelay() : _maxDelay;\r\n const hasMaxWait = isNumber(finalMaxWait) && finalMaxWait >= 0;\r\n const setTimeoutFn = finalTimeout > 0 ? setT : rAF!;\r\n const mergeParamsResult = mergeParms(args);\r\n const invokedArgs = mergeParamsResult || args;\r\n const boundInvoke = invokeFunctionToDebounce.bind(0, invokedArgs);\r\n\r\n // if (!mergeParamsResult) {\r\n // invokeFunctionToDebounce(prevArguments || args);\r\n // }\r\n\r\n clearTimeouts(timeoutId);\r\n timeoutId = setTimeoutFn(boundInvoke, finalTimeout as number) as number;\r\n\r\n if (hasMaxWait && !maxTimeoutId) {\r\n maxTimeoutId = setT(flush, finalMaxWait as number);\r\n }\r\n\r\n prevArguments = latestArguments = invokedArgs;\r\n } else {\r\n invokeFunctionToDebounce(args);\r\n }\r\n };\r\n debouncedFn._flush = flush;\r\n\r\n return debouncedFn as Debounced;\r\n};\r\n","import { each, keys } from 'support/utils';\r\nimport { isString, isNumber, isArray, isUndefined } from 'support/utils/types';\r\nimport { PlainObject, StyleObject } from 'typings';\r\n\r\nexport interface TRBL {\r\n t: number;\r\n r: number;\r\n b: number;\r\n l: number;\r\n}\r\n\r\nconst cssNumber = {\r\n // animationiterationcount: 1,\r\n // columncount: 1,\r\n // fillopacity: 1,\r\n // flexgrow: 1,\r\n // flexshrink: 1,\r\n // fontweight: 1,\r\n // lineheight: 1,\r\n // order: 1,\r\n // orphans: 1,\r\n // widows: 1,\r\n // zoom: 1,\r\n opacity: 1,\r\n zindex: 1,\r\n};\r\n\r\nconst parseToZeroOrNumber = (value: string, toFloat?: boolean): number => {\r\n /* istanbul ignore next */\r\n const num = toFloat ? parseFloat(value) : parseInt(value, 10);\r\n /* istanbul ignore next */\r\n return Number.isNaN(num) ? 0 : num;\r\n};\r\nconst adaptCSSVal = (prop: string, val: string | number): string | number =>\r\n !cssNumber[prop.toLowerCase()] && isNumber(val) ? `${val}px` : val;\r\nconst getCSSVal = (elm: HTMLElement, computedStyle: CSSStyleDeclaration, prop: string): string =>\r\n /* istanbul ignore next */\r\n computedStyle != null\r\n ? computedStyle[prop] || computedStyle.getPropertyValue(prop)\r\n : elm.style[prop];\r\nconst setCSSVal = (\r\n elm: HTMLElement | false | null | undefined,\r\n prop: string,\r\n val: string | number\r\n): void => {\r\n try {\r\n if (elm) {\r\n const { style: elmStyle } = elm;\r\n if (!isUndefined(elmStyle[prop])) {\r\n elmStyle[prop] = adaptCSSVal(prop, val);\r\n } else {\r\n elmStyle.setProperty(prop, val as string);\r\n }\r\n }\r\n } catch (e) {}\r\n};\r\n\r\n/**\r\n * Gets or sets the passed styles to the passed element.\r\n * @param elm The element to which the styles shall be applied to / be read from.\r\n * @param styles The styles which shall be set or read.\r\n */\r\nexport function style(\r\n elm: HTMLElement | false | null | undefined,\r\n styles: StyleObject\r\n): void;\r\nexport function style(\r\n elm: HTMLElement | false | null | undefined,\r\n styles: string\r\n): string;\r\nexport function style(\r\n elm: HTMLElement | false | null | undefined,\r\n styles: Array | string\r\n): { [key: string]: string };\r\nexport function style(\r\n elm: HTMLElement | false | null | undefined,\r\n styles: StyleObject | Array | string\r\n): { [key: string]: string } | string | void {\r\n const getSingleStyle = isString(styles);\r\n const getStyles = isArray(styles) || getSingleStyle;\r\n\r\n if (getStyles) {\r\n let getStylesResult: string | PlainObject = getSingleStyle ? '' : {};\r\n if (elm) {\r\n const computedStyle: CSSStyleDeclaration = window.getComputedStyle(elm, null);\r\n getStylesResult = getSingleStyle\r\n ? getCSSVal(elm, computedStyle, styles as string)\r\n : (styles as Array).reduce((result, key) => {\r\n result[key] = getCSSVal(elm, computedStyle, key as string);\r\n return result;\r\n }, getStylesResult);\r\n }\r\n return getStylesResult;\r\n }\r\n each(keys(styles), (key) => setCSSVal(elm, key, styles[key]));\r\n}\r\n\r\n/**\r\n * Hides the passed element (display: none).\r\n * @param elm The element which shall be hidden.\r\n */\r\nexport const hide = (elm: HTMLElement | false | null | undefined): void => {\r\n style(elm, { display: 'none' });\r\n};\r\n\r\n/**\r\n * Shows the passed element (display: block).\r\n * @param elm The element which shall be shown.\r\n */\r\nexport const show = (elm: HTMLElement | false | null | undefined): void => {\r\n style(elm, { display: 'block' });\r\n};\r\n\r\n/**\r\n * Returns the top right bottom left values of the passed css property.\r\n * @param elm The element of which the values shall be returned.\r\n * @param propertyPrefix The css property prefix. (e.g. \"border\")\r\n * @param propertySuffix The css property suffix. (e.g. \"width\")\r\n */\r\nexport const topRightBottomLeft = (\r\n elm?: HTMLElement | false | null | undefined,\r\n propertyPrefix?: string,\r\n propertySuffix?: string\r\n): TRBL => {\r\n const finalPrefix = propertyPrefix ? `${propertyPrefix}-` : '';\r\n const finalSuffix = propertySuffix ? `-${propertySuffix}` : '';\r\n const top = `${finalPrefix}top${finalSuffix}`;\r\n const right = `${finalPrefix}right${finalSuffix}`;\r\n const bottom = `${finalPrefix}bottom${finalSuffix}`;\r\n const left = `${finalPrefix}left${finalSuffix}`;\r\n const result = style(elm, [top, right, bottom, left]);\r\n return {\r\n t: parseToZeroOrNumber(result[top]),\r\n r: parseToZeroOrNumber(result[right]),\r\n b: parseToZeroOrNumber(result[bottom]),\r\n l: parseToZeroOrNumber(result[left]),\r\n };\r\n};\r\n","import { getBoundingClientRect } from 'support/dom/dimensions';\r\n\r\nexport interface XY {\r\n x: T;\r\n y: T;\r\n}\r\n\r\nconst zeroObj: XY = {\r\n x: 0,\r\n y: 0,\r\n};\r\n\r\n/**\r\n * Returns the offset- left and top coordinates of the passed element relative to the document. If the element is null the top and left values are 0.\r\n * @param elm The element of which the offset- top and left coordinates shall be returned.\r\n */\r\nexport const absoluteCoordinates = (elm: HTMLElement | null | undefined): XY => {\r\n const rect = elm ? getBoundingClientRect(elm) : 0;\r\n return rect\r\n ? {\r\n x: rect.left + window.pageYOffset,\r\n y: rect.top + window.pageXOffset,\r\n }\r\n : zeroObj;\r\n};\r\n\r\n/**\r\n * Returns the offset- left and top coordinates of the passed element. If the element is null the top and left values are 0.\r\n * @param elm The element of which the offset- top and left coordinates shall be returned.\r\n */\r\nexport const offsetCoordinates = (elm: HTMLElement | null | undefined): XY =>\r\n elm\r\n ? {\r\n x: elm.offsetLeft,\r\n y: elm.offsetTop,\r\n }\r\n : zeroObj;\r\n","export const classNameEnvironment = 'os-environment';\r\nexport const classNameEnvironmentFlexboxGlue = `${classNameEnvironment}-flexbox-glue`;\r\nexport const classNameEnvironmentFlexboxGlueMax = `${classNameEnvironmentFlexboxGlue}-max`;\r\n\r\nexport const classNameHost = 'os-host';\r\nexport const classNamePadding = 'os-padding';\r\nexport const classNameViewport = 'os-viewport';\r\nexport const classNameViewportArrange = `${classNameViewport}-arrange`;\r\nexport const classNameContent = 'os-content';\r\nexport const classNameViewportScrollbarStyling = `${classNameViewport}-scrollbar-styled`;\r\n\r\nexport const classNameSizeObserver = 'os-size-observer';\r\nexport const classNameSizeObserverAppear = `${classNameSizeObserver}-appear`;\r\nexport const classNameSizeObserverListener = `${classNameSizeObserver}-listener`;\r\nexport const classNameSizeObserverListenerScroll = `${classNameSizeObserverListener}-scroll`;\r\nexport const classNameSizeObserverListenerItem = `${classNameSizeObserverListener}-item`;\r\nexport const classNameSizeObserverListenerItemFinal = `${classNameSizeObserverListenerItem}-final`;\r\n\r\nexport const classNameTrinsicObserver = 'os-trinsic-observer';\r\n\r\nexport const classNameScrollbar = 'os-scrollbar';\r\nexport const classNameScrollbarHorizontal = `${classNameScrollbar}-horizontal`;\r\nexport const classNameScrollbarVertical = `${classNameScrollbar}-vertical`;\r\nexport const classNameScrollbarTrack = 'os-scrollbar-track';\r\nexport const classNameScrollbarHandle = 'os-scrollbar-handle';\r\n","function _extends() {\n module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import { assignDeep, each, isObject, keys, isArray, hasOwnProperty, isFunction } from 'support';\r\nimport { PartialOptions } from 'typings';\r\n\r\nconst stringify = (value: any) =>\r\n JSON.stringify(value, (_, val) => {\r\n if (isFunction(val)) {\r\n throw new Error();\r\n }\r\n return val;\r\n });\r\n\r\nexport type ResizeBehavior = 'none' | 'both' | 'horizontal' | 'vertical';\r\n\r\nexport type OverflowBehavior = 'hidden' | 'scroll' | 'visible' | 'visible-hidden';\r\n\r\nexport type VisibilityBehavior = 'visible' | 'hidden' | 'auto';\r\n\r\nexport type AutoHideBehavior = 'never' | 'scroll' | 'leave' | 'move';\r\n\r\nexport type ScrollBehavior = 'always' | 'ifneeded' | 'never';\r\n\r\nexport type BasicEventCallback = (this: any) => void;\r\n\r\nexport type ScrollEventCallback = (this: any, args?: UIEvent) => void;\r\n\r\nexport type OverflowChangedCallback = (this: any, args?: OverflowChangedArgs) => void;\r\n\r\nexport type OverflowAmountChangedCallback = (this: any, args?: OverflowAmountChangedArgs) => void;\r\n\r\nexport type DirectionChangedCallback = (this: any, args?: DirectionChangedArgs) => void;\r\n\r\nexport type SizeChangedCallback = (this: any, args?: SizeChangedArgs) => void;\r\n\r\nexport type UpdatedCallback = (this: any, args?: UpdatedArgs) => void;\r\n\r\nexport interface OSOptions {\r\n resize: ResizeBehavior;\r\n paddingAbsolute: boolean;\r\n updating: {\r\n elementEvents: Array<[string, string]> | null;\r\n attributes: string[] | null;\r\n debounce: number | [number, number] | null;\r\n };\r\n overflow: {\r\n x: OverflowBehavior;\r\n y: OverflowBehavior;\r\n };\r\n scrollbars: {\r\n visibility: VisibilityBehavior;\r\n autoHide: AutoHideBehavior;\r\n autoHideDelay: number;\r\n dragScroll: boolean;\r\n clickScroll: boolean;\r\n touch: boolean;\r\n };\r\n textarea: {\r\n dynWidth: boolean;\r\n dynHeight: boolean;\r\n inheritedAttrs: string | Array | null;\r\n };\r\n nativeScrollbarsOverlaid: {\r\n show: boolean;\r\n initialize: boolean;\r\n };\r\n callbacks: {\r\n onUpdated: (() => any) | null;\r\n };\r\n /*\r\n callbacks?: {\r\n onInitialized?: BasicEventCallback | null;\r\n onInitializationWithdrawn?: BasicEventCallback | null;\r\n onDestroyed?: BasicEventCallback | null;\r\n onScrollStart?: ScrollEventCallback | null;\r\n onScroll?: ScrollEventCallback | null;\r\n onScrollStop?: ScrollEventCallback | null;\r\n onOverflowChanged?: OverflowChangedCallback | null;\r\n onOverflowAmountChanged?: OverflowAmountChangedCallback | null;\r\n onDirectionChanged?: DirectionChangedCallback | null;\r\n onContentSizeChanged?: SizeChangedCallback | null;\r\n onHostSizeChanged?: SizeChangedCallback | null;\r\n onUpdated?: UpdatedCallback | null;\r\n };\r\n */\r\n}\r\n\r\nexport interface OverflowChangedArgs {\r\n x: boolean;\r\n y: boolean;\r\n xScrollable: boolean;\r\n yScrollable: boolean;\r\n clipped: boolean;\r\n}\r\n\r\nexport interface OverflowAmountChangedArgs {\r\n x: number;\r\n y: number;\r\n}\r\n\r\nexport interface DirectionChangedArgs {\r\n isRTL: number;\r\n dir: string;\r\n}\r\n\r\nexport interface SizeChangedArgs {\r\n width: number;\r\n height: number;\r\n}\r\n\r\nexport interface UpdatedArgs {\r\n forced: boolean;\r\n}\r\n\r\nexport const defaultOptions: OSOptions = {\r\n resize: 'none', // none || both || horizontal || vertical || n || b || h || v\r\n paddingAbsolute: false, // true || false\r\n updating: {\r\n elementEvents: [['img', 'load']], // array of tuples || null\r\n attributes: null,\r\n debounce: [0, 33], // number || number array || null\r\n },\r\n overflow: {\r\n x: 'scroll', // visible-hidden || visible-scroll || hidden || scroll || v-h || v-s || h || s\r\n y: 'scroll', // visible-hidden || visible-scroll || hidden || scroll || v-h || v-s || h || s\r\n },\r\n scrollbars: {\r\n visibility: 'auto', // visible || hidden || auto || v || h || a\r\n autoHide: 'never', // never || scroll || leave || move || n || s || l || m\r\n autoHideDelay: 800, // number\r\n dragScroll: true, // true || false\r\n clickScroll: false, // true || false\r\n touch: true, // true || false\r\n },\r\n textarea: {\r\n dynWidth: false, // true || false\r\n dynHeight: false, // true || false\r\n inheritedAttrs: ['style', 'class'], // string || array || null\r\n },\r\n nativeScrollbarsOverlaid: {\r\n show: false, // true || false\r\n initialize: false, // true || false\r\n },\r\n callbacks: {\r\n onUpdated: null,\r\n },\r\n};\r\n\r\nexport const getOptionsDiff = (\r\n currOptions: T,\r\n newOptions: PartialOptions\r\n): PartialOptions => {\r\n const diff: PartialOptions = {};\r\n const optionsKeys = keys(newOptions).concat(keys(currOptions));\r\n\r\n each(optionsKeys, (optionKey) => {\r\n const currOptionValue = currOptions[optionKey];\r\n const newOptionValue = newOptions[optionKey];\r\n\r\n if (isObject(currOptionValue) && isObject(newOptionValue)) {\r\n assignDeep((diff[optionKey] = {}), getOptionsDiff(currOptionValue, newOptionValue));\r\n } else if (hasOwnProperty(newOptions, optionKey) && newOptionValue !== currOptionValue) {\r\n let isDiff = true;\r\n\r\n if (isArray(currOptionValue) || isArray(newOptionValue)) {\r\n try {\r\n if (stringify(currOptionValue) === stringify(newOptionValue)) {\r\n isDiff = false;\r\n }\r\n } catch {}\r\n }\r\n\r\n if (isDiff) {\r\n diff[optionKey] = newOptionValue;\r\n }\r\n }\r\n });\r\n\r\n return diff;\r\n};\r\n","import {\r\n createDOM,\r\n addClass,\r\n style,\r\n appendChildren,\r\n clientSize,\r\n absoluteCoordinates,\r\n offsetSize,\r\n scrollLeft,\r\n XY,\r\n removeAttr,\r\n removeElements,\r\n windowSize,\r\n runEach,\r\n equalBCRWH,\r\n getBoundingClientRect,\r\n assignDeep,\r\n cssProperty,\r\n} from 'support';\r\nimport {\r\n classNameEnvironment,\r\n classNameEnvironmentFlexboxGlue,\r\n classNameEnvironmentFlexboxGlueMax,\r\n classNameViewportScrollbarStyling,\r\n} from 'classnames';\r\nimport { OSOptions, defaultOptions } from 'options';\r\nimport { OSTargetElement, PartialOptions } from 'typings';\r\n\r\ntype StructureInitializationElementFn = ((target: OSTargetElement) => HTMLElement | T) | T;\r\n\r\ntype ScrollbarsInitializationElementFn =\r\n | ((target: OSTargetElement, host: HTMLElement, viewport: HTMLElement) => HTMLElement | T)\r\n | T;\r\n\r\n/**\r\n * A Static element is an element which MUST be generated.\r\n * If null (or the returned result is null), the initialization function is generatig the element, otherwise\r\n * the element returned by the function acts as the generated element.\r\n */\r\nexport type StructureInitializationStaticElement = StructureInitializationElementFn;\r\n\r\n/**\r\n * A Dynamic element is an element which CAN be generated.\r\n * If null (or the returned result is null), then the default behavior is used.\r\n * If boolean (or the returned result is boolean), the generation of the element is forced (or not).\r\n * If the function returns and element, the element returned by the function acts as the generated element.\r\n */\r\nexport type StructureInitializationDynamicElement = StructureInitializationElementFn<\r\n boolean | null\r\n>;\r\n\r\nexport interface StructureInitializationStrategy {\r\n _host: StructureInitializationStaticElement;\r\n _viewport: StructureInitializationStaticElement;\r\n _padding: StructureInitializationDynamicElement;\r\n _content: StructureInitializationDynamicElement;\r\n}\r\n\r\nexport interface ScrollbarsInitializationStrategy {\r\n _scrollbarsSlot: ScrollbarsInitializationElementFn;\r\n}\r\n\r\nexport interface InitializationStrategy\r\n extends StructureInitializationStrategy,\r\n ScrollbarsInitializationStrategy {}\r\n\r\nexport type OnEnvironmentChanged = (env: Environment) => void;\r\nexport interface Environment {\r\n _nativeScrollbarSize: XY;\r\n _nativeScrollbarIsOverlaid: XY;\r\n _nativeScrollbarStyling: boolean;\r\n _rtlScrollBehavior: { n: boolean; i: boolean };\r\n _flexboxGlue: boolean;\r\n _cssCustomProperties: boolean;\r\n _addListener(listener: OnEnvironmentChanged): void;\r\n _removeListener(listener: OnEnvironmentChanged): void;\r\n _getInitializationStrategy(): InitializationStrategy;\r\n _setInitializationStrategy(newInitializationStrategy: Partial): void;\r\n _getDefaultOptions(): OSOptions;\r\n _setDefaultOptions(newDefaultOptions: PartialOptions): void;\r\n _defaultInitializationStrategy: InitializationStrategy;\r\n _defaultDefaultOptions: OSOptions;\r\n}\r\n\r\nlet environmentInstance: Environment;\r\nconst { abs, round } = Math;\r\n\r\nconst diffBiggerThanOne = (valOne: number, valTwo: number): boolean => {\r\n const absValOne = abs(valOne);\r\n const absValTwo = abs(valTwo);\r\n return !(absValOne === absValTwo || absValOne + 1 === absValTwo || absValOne - 1 === absValTwo);\r\n};\r\n\r\nconst getNativeScrollbarSize = (body: HTMLElement, measureElm: HTMLElement): XY => {\r\n appendChildren(body, measureElm);\r\n const cSize = clientSize(measureElm);\r\n const oSize = offsetSize(measureElm);\r\n\r\n return {\r\n x: oSize.h - cSize.h,\r\n y: oSize.w - cSize.w,\r\n };\r\n};\r\n\r\nconst getNativeScrollbarStyling = (testElm: HTMLElement): boolean => {\r\n let result = false;\r\n addClass(testElm, classNameViewportScrollbarStyling);\r\n try {\r\n result =\r\n style(testElm, cssProperty('scrollbar-width')) === 'none' ||\r\n window.getComputedStyle(testElm, '::-webkit-scrollbar').getPropertyValue('display') ===\r\n 'none';\r\n } catch (ex) {}\r\n\r\n return result;\r\n};\r\n\r\nconst getRtlScrollBehavior = (\r\n parentElm: HTMLElement,\r\n childElm: HTMLElement\r\n): { i: boolean; n: boolean } => {\r\n const strHidden = 'hidden';\r\n style(parentElm, { overflowX: strHidden, overflowY: strHidden, direction: 'rtl' });\r\n scrollLeft(parentElm, 0);\r\n\r\n const parentOffset = absoluteCoordinates(parentElm);\r\n const childOffset = absoluteCoordinates(childElm);\r\n scrollLeft(parentElm, -999); // https://github.com/KingSora/OverlayScrollbars/issues/187\r\n const childOffsetAfterScroll = absoluteCoordinates(childElm);\r\n return {\r\n /**\r\n * origin direction = determines if the zero scroll position is on the left or right side\r\n * 'i' means 'invert' (i === true means that the axis must be inverted to be correct)\r\n * true = on the left side\r\n * false = on the right side\r\n */\r\n i: parentOffset.x === childOffset.x,\r\n /**\r\n * negative = determines if the maximum scroll is positive or negative\r\n * 'n' means 'negate' (n === true means that the axis must be negated to be correct)\r\n * true = negative\r\n * false = positive\r\n */\r\n n: childOffset.x !== childOffsetAfterScroll.x,\r\n };\r\n};\r\n\r\nconst getFlexboxGlue = (parentElm: HTMLElement, childElm: HTMLElement): boolean => {\r\n addClass(parentElm, classNameEnvironmentFlexboxGlue);\r\n const minOffsetsizeParent = getBoundingClientRect(parentElm);\r\n const minOffsetsize = getBoundingClientRect(childElm);\r\n const supportsMin = equalBCRWH(minOffsetsize, minOffsetsizeParent, true);\r\n\r\n addClass(parentElm, classNameEnvironmentFlexboxGlueMax);\r\n const maxOffsetsizeParent = getBoundingClientRect(parentElm);\r\n const maxOffsetsize = getBoundingClientRect(childElm);\r\n const supportsMax = equalBCRWH(maxOffsetsize, maxOffsetsizeParent, true);\r\n\r\n return supportsMin && supportsMax;\r\n};\r\n\r\nconst getWindowDPR = (): number => {\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n const dDPI = window.screen.deviceXDPI || 0;\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n const sDPI = window.screen.logicalXDPI || 1;\r\n return window.devicePixelRatio || dDPI / sDPI;\r\n};\r\n\r\n// init function decides for all values\r\nconst getDefaultInitializationStrategy = (\r\n nativeScrollbarStyling: boolean\r\n): InitializationStrategy => ({\r\n _host: null,\r\n _viewport: null,\r\n _padding: null,\r\n _content: null,\r\n _scrollbarsSlot: null,\r\n});\r\n\r\nconst createEnvironment = (): Environment => {\r\n const { body } = document;\r\n const envDOM = createDOM(`
`);\r\n const envElm = envDOM[0] as HTMLElement;\r\n const envChildElm = envElm.firstChild as HTMLElement;\r\n const onChangedListener: Set = new Set();\r\n const nativeScrollbarSize = getNativeScrollbarSize(body, envElm);\r\n const nativeScrollbarStyling = getNativeScrollbarStyling(envElm);\r\n const nativeScrollbarIsOverlaid = {\r\n x: nativeScrollbarSize.x === 0,\r\n y: nativeScrollbarSize.y === 0,\r\n };\r\n const defaultInitializationStrategy = getDefaultInitializationStrategy(nativeScrollbarStyling);\r\n let initializationStrategy = defaultInitializationStrategy;\r\n let defaultDefaultOptions = defaultOptions;\r\n\r\n const env: Environment = {\r\n _nativeScrollbarSize: nativeScrollbarSize,\r\n _nativeScrollbarIsOverlaid: nativeScrollbarIsOverlaid,\r\n _nativeScrollbarStyling: nativeScrollbarStyling,\r\n _cssCustomProperties: style(envElm, 'zIndex') === '-1',\r\n _rtlScrollBehavior: getRtlScrollBehavior(envElm, envChildElm),\r\n _flexboxGlue: getFlexboxGlue(envElm, envChildElm),\r\n _addListener(listener: OnEnvironmentChanged): void {\r\n onChangedListener.add(listener);\r\n },\r\n _removeListener(listener: OnEnvironmentChanged): void {\r\n onChangedListener.delete(listener);\r\n },\r\n _getInitializationStrategy: () => ({ ...initializationStrategy }),\r\n _setInitializationStrategy(newInitializationStrategy) {\r\n initializationStrategy = assignDeep({}, initializationStrategy, newInitializationStrategy);\r\n },\r\n _getDefaultOptions: () => ({ ...defaultDefaultOptions }),\r\n _setDefaultOptions(newDefaultOptions) {\r\n defaultDefaultOptions = assignDeep({}, defaultDefaultOptions, newDefaultOptions);\r\n },\r\n _defaultInitializationStrategy: defaultInitializationStrategy,\r\n _defaultDefaultOptions: defaultDefaultOptions,\r\n };\r\n\r\n removeAttr(envElm, 'style');\r\n removeElements(envElm);\r\n\r\n if (!nativeScrollbarStyling && (!nativeScrollbarIsOverlaid.x || !nativeScrollbarIsOverlaid.y)) {\r\n let size = windowSize();\r\n let dpr = getWindowDPR();\r\n let scrollbarSize = nativeScrollbarSize;\r\n\r\n window.addEventListener('resize', () => {\r\n if (onChangedListener.size) {\r\n const sizeNew = windowSize();\r\n const deltaSize = {\r\n w: sizeNew.w - size.w,\r\n h: sizeNew.h - size.h,\r\n };\r\n\r\n if (deltaSize.w === 0 && deltaSize.h === 0) return;\r\n\r\n const deltaAbsSize = {\r\n w: abs(deltaSize.w),\r\n h: abs(deltaSize.h),\r\n };\r\n const deltaAbsRatio = {\r\n w: abs(round(sizeNew.w / (size.w / 100.0))),\r\n h: abs(round(sizeNew.h / (size.h / 100.0))),\r\n };\r\n const dprNew = getWindowDPR();\r\n const deltaIsBigger = deltaAbsSize.w > 2 && deltaAbsSize.h > 2;\r\n const difference = !diffBiggerThanOne(deltaAbsRatio.w, deltaAbsRatio.h);\r\n const dprChanged = dprNew !== dpr && dpr > 0;\r\n const isZoom = deltaIsBigger && difference && dprChanged;\r\n\r\n if (isZoom) {\r\n const newScrollbarSize = (environmentInstance._nativeScrollbarSize =\r\n getNativeScrollbarSize(body, envElm));\r\n removeElements(envElm);\r\n\r\n if (scrollbarSize.x !== newScrollbarSize.x || scrollbarSize.y !== newScrollbarSize.y) {\r\n runEach(onChangedListener);\r\n }\r\n\r\n scrollbarSize = newScrollbarSize;\r\n }\r\n\r\n size = sizeNew;\r\n dpr = dprNew;\r\n }\r\n });\r\n }\r\n\r\n return env;\r\n};\r\n\r\nexport const getEnvironment = (): Environment => {\r\n if (!environmentInstance) {\r\n environmentInstance = createEnvironment();\r\n }\r\n return environmentInstance;\r\n};\r\n","import {\r\n isHTMLElement,\r\n appendChildren,\r\n is,\r\n createDiv,\r\n contents,\r\n insertAfter,\r\n addClass,\r\n parent,\r\n indexOf,\r\n removeElements,\r\n removeClass,\r\n push,\r\n runEach,\r\n insertBefore,\r\n attr,\r\n isBoolean,\r\n isFunction,\r\n keys,\r\n} from 'support';\r\nimport {\r\n classNameHost,\r\n classNamePadding,\r\n classNameViewport,\r\n classNameViewportArrange,\r\n classNameContent,\r\n classNameViewportScrollbarStyling,\r\n} from 'classnames';\r\nimport {\r\n getEnvironment,\r\n StructureInitializationStaticElement,\r\n StructureInitializationDynamicElement,\r\n StructureInitializationStrategy,\r\n} from 'environment';\r\nimport { OSTarget, OSTargetElement, StructureInitialization } from 'typings';\r\n\r\nexport interface OSTargetContext {\r\n _isTextarea: boolean;\r\n _isBody: boolean;\r\n _htmlElm: HTMLHtmlElement;\r\n _bodyElm: HTMLBodyElement;\r\n _windowElm: Window;\r\n _documentElm: HTMLDocument;\r\n _targetIsElm: boolean;\r\n}\r\n\r\nexport interface PreparedOSTargetObject {\r\n _target: OSTargetElement;\r\n _host: HTMLElement;\r\n _viewport: HTMLElement;\r\n _padding: HTMLElement | false;\r\n _content: HTMLElement | false;\r\n _viewportArrange: HTMLStyleElement | false;\r\n}\r\n\r\nexport interface StructureSetup {\r\n _targetObj: PreparedOSTargetObject;\r\n _targetCtx: OSTargetContext;\r\n _destroy: () => void;\r\n}\r\n\r\nlet contentArrangeCounter = 0;\r\n\r\nconst unwrap = (elm: HTMLElement | false | null | undefined) => {\r\n appendChildren(parent(elm), contents(elm));\r\n removeElements(elm);\r\n};\r\n\r\nconst createUniqueViewportArrangeElement = (): HTMLStyleElement | false => {\r\n const { _nativeScrollbarStyling, _nativeScrollbarIsOverlaid, _cssCustomProperties } =\r\n getEnvironment();\r\n /* istanbul ignore next */\r\n const create =\r\n !_cssCustomProperties &&\r\n !_nativeScrollbarStyling &&\r\n (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);\r\n const result = create ? document.createElement('style') : false;\r\n\r\n if (result) {\r\n attr(result, 'id', `${classNameViewportArrange}-${contentArrangeCounter}`);\r\n contentArrangeCounter++;\r\n }\r\n\r\n return result;\r\n};\r\n\r\nconst staticCreationFromStrategy = (\r\n target: OSTargetElement,\r\n initializationValue: HTMLElement | undefined,\r\n strategy: StructureInitializationStaticElement,\r\n elementClass: string\r\n): HTMLElement => {\r\n const result =\r\n initializationValue || (isFunction(strategy) ? strategy(target) : (strategy as null));\r\n return result || createDiv(elementClass);\r\n};\r\n\r\nconst dynamicCreationFromStrategy = (\r\n target: OSTargetElement,\r\n initializationValue: HTMLElement | boolean | undefined,\r\n strategy: StructureInitializationDynamicElement,\r\n elementClass: string,\r\n defaultValue: boolean\r\n): HTMLElement | false => {\r\n const takeInitializationValue = isBoolean(initializationValue) || initializationValue;\r\n const result = takeInitializationValue\r\n ? (initializationValue as boolean | HTMLElement)\r\n : isFunction(strategy)\r\n ? strategy(target)\r\n : strategy;\r\n\r\n if (result === null) {\r\n return defaultValue ? createDiv(elementClass) : false;\r\n }\r\n\r\n return result === true ? createDiv(elementClass) : result;\r\n};\r\n\r\nexport const createStructureSetup = (\r\n target: OSTarget | StructureInitialization\r\n): StructureSetup => {\r\n const { _getInitializationStrategy, _nativeScrollbarStyling } = getEnvironment();\r\n const {\r\n _host: hostInitializationStrategy,\r\n _viewport: viewportInitializationStrategy,\r\n _padding: paddingInitializationStrategy,\r\n _content: contentInitializationStrategy,\r\n } = _getInitializationStrategy() as StructureInitializationStrategy;\r\n const targetIsElm = isHTMLElement(target);\r\n const targetStructureInitialization = target as StructureInitialization;\r\n const targetElement = targetIsElm\r\n ? (target as OSTargetElement)\r\n : targetStructureInitialization.target;\r\n const isTextarea = is(targetElement, 'textarea');\r\n const isBody = !isTextarea && is(targetElement, 'body');\r\n const ownerDocument: HTMLDocument = targetElement!.ownerDocument;\r\n const bodyElm = ownerDocument.body as HTMLBodyElement;\r\n const wnd = ownerDocument.defaultView as Window;\r\n const evaluatedTargetObj: PreparedOSTargetObject = {\r\n _target: targetElement,\r\n _host: isTextarea\r\n ? staticCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.host,\r\n hostInitializationStrategy,\r\n classNameHost\r\n )\r\n : (targetElement as HTMLElement),\r\n _viewport: staticCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.viewport,\r\n viewportInitializationStrategy,\r\n classNameViewport\r\n ),\r\n _padding: dynamicCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.padding,\r\n paddingInitializationStrategy,\r\n classNamePadding,\r\n !_nativeScrollbarStyling // default value for padding\r\n ),\r\n _content: dynamicCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.content,\r\n contentInitializationStrategy,\r\n classNameContent,\r\n false // default value for content\r\n ),\r\n _viewportArrange: createUniqueViewportArrangeElement(),\r\n };\r\n const ctx: OSTargetContext = {\r\n _windowElm: wnd,\r\n _documentElm: ownerDocument,\r\n _htmlElm: parent(bodyElm) as HTMLHtmlElement,\r\n _bodyElm: bodyElm,\r\n _isTextarea: isTextarea,\r\n _isBody: isBody,\r\n _targetIsElm: targetIsElm,\r\n };\r\n const generatedElements = keys(evaluatedTargetObj).reduce((arr, key: string) => {\r\n const value = evaluatedTargetObj[key];\r\n return push(arr, value && !parent(value) ? value : false);\r\n }, [] as HTMLElement[]);\r\n const elementIsGenerated = (elm: HTMLElement | false) =>\r\n elm ? indexOf(generatedElements, elm) > -1 : null;\r\n const { _target, _host, _padding, _viewport, _content, _viewportArrange } = evaluatedTargetObj;\r\n const destroyFns: (() => any)[] = [];\r\n const isTextareaHostGenerated = isTextarea && elementIsGenerated(_host);\r\n const targetContents = isTextarea\r\n ? _target\r\n : contents(\r\n [_content, _viewport, _padding, _host, _target].find(\r\n (elm) => elementIsGenerated(elm) === false\r\n )\r\n );\r\n const contentSlot = _content || _viewport;\r\n\r\n // only insert host for textarea after target if it was generated\r\n if (isTextareaHostGenerated) {\r\n insertAfter(_target, _host);\r\n\r\n push(destroyFns, () => {\r\n insertAfter(_host, _target);\r\n removeElements(_host);\r\n });\r\n }\r\n\r\n appendChildren(contentSlot, targetContents);\r\n appendChildren(_host, _padding);\r\n appendChildren(_padding || _host, _viewport);\r\n appendChildren(_viewport, _content);\r\n\r\n addClass(_host, classNameHost);\r\n addClass(_padding, classNamePadding);\r\n addClass(_viewport, classNameViewport);\r\n addClass(_content, classNameContent);\r\n\r\n push(destroyFns, () => {\r\n if (targetIsElm) {\r\n appendChildren(_host, contents(contentSlot));\r\n removeElements(_padding || _viewport);\r\n removeClass(_host, classNameHost);\r\n } else {\r\n if (elementIsGenerated(_content)) {\r\n unwrap(_content);\r\n }\r\n if (elementIsGenerated(_viewport)) {\r\n unwrap(_viewport);\r\n }\r\n if (elementIsGenerated(_padding)) {\r\n unwrap(_padding);\r\n }\r\n removeClass(_host, classNameHost);\r\n removeClass(_padding, classNamePadding);\r\n removeClass(_viewport, classNameViewport);\r\n removeClass(_content, classNameContent);\r\n }\r\n });\r\n\r\n if (_nativeScrollbarStyling) {\r\n push(destroyFns, removeClass.bind(0, _viewport, classNameViewportScrollbarStyling));\r\n }\r\n if (_viewportArrange) {\r\n insertBefore(_viewport, _viewportArrange);\r\n push(destroyFns, removeElements.bind(0, _viewportArrange));\r\n }\r\n\r\n return {\r\n _targetObj: evaluatedTargetObj,\r\n _targetCtx: ctx,\r\n _destroy: () => {\r\n runEach(destroyFns);\r\n },\r\n };\r\n};\r\n","import { appendChildren, createDiv, removeElements, isFunction } from 'support';\r\nimport {\r\n classNameScrollbar,\r\n classNameScrollbarHorizontal,\r\n classNameScrollbarVertical,\r\n classNameScrollbarTrack,\r\n classNameScrollbarHandle,\r\n} from 'classnames';\r\nimport { getEnvironment, ScrollbarsInitializationStrategy } from 'environment';\r\nimport { OSTarget, ScrollbarsInitialization } from 'typings';\r\nimport { StructureSetup } from 'setups/structureSetup';\r\n\r\nexport interface ScrollbarStructure {\r\n _scrollbar: HTMLElement;\r\n _track: HTMLElement;\r\n _handle: HTMLElement;\r\n}\r\n\r\nexport interface ScrollbarsSetup {\r\n _horizontalScrollbarStructure: ScrollbarStructure;\r\n _verticalScrollbarStructure: ScrollbarStructure;\r\n _destroy: () => void;\r\n}\r\n\r\nconst generateScrollbarDOM = (scrollbarClassName: string): ScrollbarStructure => {\r\n const scrollbar = createDiv(`${classNameScrollbar} ${scrollbarClassName}`);\r\n const track = createDiv(classNameScrollbarTrack);\r\n const handle = createDiv(classNameScrollbarHandle);\r\n\r\n appendChildren(scrollbar, track);\r\n appendChildren(track, handle);\r\n\r\n return {\r\n _scrollbar: scrollbar,\r\n _track: track,\r\n _handle: handle,\r\n };\r\n};\r\n\r\nexport const createScrollbarsSetup = (target: OSTarget | ScrollbarsInitialization, structureSetup: StructureSetup): ScrollbarsSetup => {\r\n const { _getInitializationStrategy } = getEnvironment();\r\n const { _scrollbarsSlot: environmentScrollbarSlot } = _getInitializationStrategy() as ScrollbarsInitializationStrategy;\r\n const { _targetObj, _targetCtx } = structureSetup;\r\n const { _target, _host, _viewport } = _targetObj;\r\n const initializationScrollbarSlot = !_targetCtx._targetIsElm && (target as ScrollbarsInitialization).scrollbarsSlot;\r\n const initializationScrollbarSlotResult = isFunction(initializationScrollbarSlot)\r\n ? initializationScrollbarSlot(_target, _host, _viewport)\r\n : initializationScrollbarSlot;\r\n const evaluatedScrollbarSlot =\r\n initializationScrollbarSlotResult ||\r\n (isFunction(environmentScrollbarSlot) ? environmentScrollbarSlot(_target, _host, _viewport) : environmentScrollbarSlot) ||\r\n _host;\r\n\r\n const horizontalScrollbarStructure = generateScrollbarDOM(classNameScrollbarHorizontal);\r\n const verticalScrollbarStructure = generateScrollbarDOM(classNameScrollbarVertical);\r\n\r\n const { _scrollbar: horizontalScrollbar } = horizontalScrollbarStructure;\r\n const { _scrollbar: verticalScrollbar } = verticalScrollbarStructure;\r\n\r\n appendChildren(evaluatedScrollbarSlot, horizontalScrollbar);\r\n appendChildren(evaluatedScrollbarSlot, verticalScrollbar);\r\n\r\n return {\r\n _horizontalScrollbarStructure: horizontalScrollbarStructure,\r\n _verticalScrollbarStructure: verticalScrollbarStructure,\r\n _destroy() {\r\n removeElements([horizontalScrollbar, verticalScrollbar]);\r\n },\r\n };\r\n};\r\n","import {\r\n Cache,\r\n CacheValues,\r\n createCache,\r\n createDOM,\r\n style,\r\n appendChildren,\r\n offsetSize,\r\n scrollLeft,\r\n scrollTop,\r\n runEach,\r\n prependChildren,\r\n removeElements,\r\n on,\r\n stopAndPrevent,\r\n addClass,\r\n equalWH,\r\n push,\r\n cAF,\r\n rAF,\r\n ResizeObserverConstructor,\r\n isArray,\r\n isBoolean,\r\n removeClass,\r\n isObject,\r\n} from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport {\r\n classNameSizeObserver,\r\n classNameSizeObserverAppear,\r\n classNameSizeObserverListener,\r\n classNameSizeObserverListenerScroll,\r\n classNameSizeObserverListenerItem,\r\n classNameSizeObserverListenerItemFinal,\r\n} from 'classnames';\r\n\r\nexport interface SizeObserverOptions {\r\n _direction?: boolean;\r\n _appear?: boolean;\r\n}\r\n\r\nexport interface SizeObserverCallbackParams {\r\n _sizeChanged: boolean;\r\n _directionIsRTLCache?: CacheValues;\r\n _appear?: boolean;\r\n}\r\n\r\nexport interface SizeObserver {\r\n _destroy(): void;\r\n _getCurrentCacheValues(\r\n force?: boolean\r\n ): {\r\n _directionIsRTL: CacheValues;\r\n };\r\n}\r\n\r\nconst animationStartEventName = 'animationstart';\r\nconst scrollEventName = 'scroll';\r\nconst scrollAmount = 3333333;\r\nconst getElmDirectionIsRTL = (elm: HTMLElement): boolean => style(elm, 'direction') === 'rtl';\r\nconst domRectHasDimensions = (rect?: DOMRectReadOnly) => rect && (rect.height || rect.width);\r\n\r\n/**\r\n * Creates a size observer which observes any size, padding, border, margin and box-sizing changes of the target element. Depending on the options also direction and appear can be observed.\r\n * @param target The target element which shall be observed.\r\n * @param onSizeChangedCallback The callback which gets called after a size change was detected.\r\n * @param options The options for size detection, whether to observe also direction and appear.\r\n * @returns A object which represents the instance of the size observer.\r\n */\r\nexport const createSizeObserver = (\r\n target: HTMLElement,\r\n onSizeChangedCallback: (params: SizeObserverCallbackParams) => any,\r\n options?: SizeObserverOptions\r\n): SizeObserver => {\r\n const { _direction: observeDirectionChange = false, _appear: observeAppearChange = false } =\r\n options || {};\r\n const { _rtlScrollBehavior: rtlScrollBehavior } = getEnvironment();\r\n const baseElements = createDOM(\r\n `
`\r\n );\r\n const sizeObserver = baseElements[0] as HTMLElement;\r\n const listenerElement = sizeObserver.firstChild as HTMLElement;\r\n const getIsDirectionRTL = getElmDirectionIsRTL.bind(0, sizeObserver);\r\n const [updateResizeObserverContentRectCache] = createCache({\r\n _initialValue: undefined,\r\n _alwaysUpdateValues: true,\r\n _equal: (currVal, newVal) =>\r\n !(\r\n !currVal || // if no initial value\r\n // if from display: none to display: block\r\n (!domRectHasDimensions(currVal) && domRectHasDimensions(newVal))\r\n ),\r\n });\r\n const onSizeChangedCallbackProxy = (\r\n sizeChangedContext?: CacheValues | ResizeObserverEntry[] | Event | boolean\r\n ) => {\r\n const isResizeObserverCall =\r\n isArray(sizeChangedContext) &&\r\n sizeChangedContext.length > 0 &&\r\n isObject(sizeChangedContext[0]);\r\n\r\n const hasDirectionCache =\r\n !isResizeObserverCall && isBoolean((sizeChangedContext as CacheValues)[0]);\r\n\r\n let skip = false;\r\n let appear: boolean | number | undefined = false;\r\n let doDirectionScroll = true; // always true if sizeChangedContext is Event (appear callback or RO. Polyfill)\r\n\r\n // if triggered from RO.\r\n if (isResizeObserverCall) {\r\n const [currRContentRect, , prevContentRect] = updateResizeObserverContentRectCache(\r\n (sizeChangedContext as ResizeObserverEntry[]).pop()!.contentRect\r\n );\r\n const hasDimensions = domRectHasDimensions(currRContentRect);\r\n const hadDimensions = domRectHasDimensions(prevContentRect);\r\n skip = !prevContentRect || !hasDimensions; // skip on initial RO. call or if display is none\r\n appear = !hadDimensions && hasDimensions;\r\n\r\n doDirectionScroll = !skip; // direction scroll when not skipping\r\n }\r\n // else if its triggered with DirectionCache\r\n else if (hasDirectionCache) {\r\n [, doDirectionScroll] = sizeChangedContext as CacheValues; // direction scroll when DirectionCache changed, false otherwise\r\n }\r\n // else if it triggered with appear from polyfill\r\n else {\r\n appear = sizeChangedContext === true;\r\n }\r\n\r\n if (observeDirectionChange && doDirectionScroll) {\r\n const rtl = hasDirectionCache\r\n ? (sizeChangedContext as CacheValues)[0]\r\n : getElmDirectionIsRTL(sizeObserver);\r\n scrollLeft(\r\n sizeObserver,\r\n rtl\r\n ? rtlScrollBehavior.n\r\n ? -scrollAmount\r\n : rtlScrollBehavior.i\r\n ? 0\r\n : scrollAmount\r\n : scrollAmount\r\n );\r\n scrollTop(sizeObserver, scrollAmount);\r\n }\r\n\r\n if (!skip) {\r\n onSizeChangedCallback({\r\n _sizeChanged: !hasDirectionCache,\r\n _directionIsRTLCache: hasDirectionCache\r\n ? (sizeChangedContext as CacheValues)\r\n : undefined,\r\n _appear: !!appear,\r\n });\r\n }\r\n };\r\n const offListeners: (() => void)[] = [];\r\n let appearCallback: ((...args: any) => any) | false = observeAppearChange\r\n ? onSizeChangedCallbackProxy\r\n : false;\r\n let directionIsRTLCache: Cache | undefined;\r\n\r\n if (ResizeObserverConstructor) {\r\n const resizeObserverInstance = new ResizeObserverConstructor(onSizeChangedCallbackProxy);\r\n resizeObserverInstance.observe(listenerElement);\r\n push(offListeners, () => {\r\n resizeObserverInstance.disconnect();\r\n });\r\n } else {\r\n const observerElementChildren = createDOM(\r\n `
`\r\n );\r\n appendChildren(listenerElement, observerElementChildren);\r\n addClass(listenerElement, classNameSizeObserverListenerScroll);\r\n const observerElementChildrenRoot = observerElementChildren[0] as HTMLElement;\r\n const shrinkElement = observerElementChildrenRoot.lastChild as HTMLElement;\r\n const expandElement = observerElementChildrenRoot.firstChild as HTMLElement;\r\n const expandElementChild = expandElement?.firstChild as HTMLElement;\r\n\r\n let cacheSize = offsetSize(observerElementChildrenRoot);\r\n let currSize = cacheSize;\r\n let isDirty = false;\r\n let rAFId: number;\r\n\r\n const reset = () => {\r\n scrollLeft(expandElement, scrollAmount);\r\n scrollTop(expandElement, scrollAmount);\r\n scrollLeft(shrinkElement, scrollAmount);\r\n scrollTop(shrinkElement, scrollAmount);\r\n };\r\n const onResized = (appear?: unknown) => {\r\n rAFId = 0;\r\n if (isDirty) {\r\n cacheSize = currSize;\r\n onSizeChangedCallbackProxy(appear === true);\r\n }\r\n };\r\n const onScroll = (scrollEvent?: Event | false) => {\r\n currSize = offsetSize(observerElementChildrenRoot);\r\n isDirty = !scrollEvent || !equalWH(currSize, cacheSize);\r\n\r\n if (scrollEvent) {\r\n stopAndPrevent(scrollEvent);\r\n\r\n if (isDirty && !rAFId) {\r\n cAF!(rAFId);\r\n rAFId = rAF!(onResized);\r\n }\r\n } else {\r\n onResized(scrollEvent === false);\r\n }\r\n\r\n reset();\r\n };\r\n\r\n push(offListeners, [\r\n on(expandElement, scrollEventName, onScroll),\r\n on(shrinkElement, scrollEventName, onScroll),\r\n ]);\r\n\r\n // lets assume that the divs will never be that large and a constant value is enough\r\n style(expandElementChild, {\r\n width: scrollAmount,\r\n height: scrollAmount,\r\n });\r\n\r\n reset();\r\n\r\n appearCallback = observeAppearChange ? onScroll.bind(0, false) : reset;\r\n }\r\n\r\n if (observeDirectionChange) {\r\n directionIsRTLCache = createCache(\r\n {\r\n _initialValue: !getIsDirectionRTL(), // invert current value to trigger initial change\r\n },\r\n getIsDirectionRTL\r\n );\r\n const [updateDirectionIsRTLCache] = directionIsRTLCache;\r\n\r\n push(\r\n offListeners,\r\n on(sizeObserver, scrollEventName, (event: Event) => {\r\n const directionIsRTLCacheValues = updateDirectionIsRTLCache();\r\n const [directionIsRTL, directionIsRTLChanged] = directionIsRTLCacheValues;\r\n\r\n if (directionIsRTLChanged) {\r\n removeClass(listenerElement, 'ltr rtl');\r\n if (directionIsRTL) {\r\n addClass(listenerElement, 'rtl');\r\n } else {\r\n addClass(listenerElement, 'ltr');\r\n }\r\n onSizeChangedCallbackProxy(directionIsRTLCacheValues);\r\n }\r\n\r\n stopAndPrevent(event);\r\n })\r\n );\r\n }\r\n\r\n // appearCallback is always needed on scroll-observer strategy to reset it\r\n if (appearCallback) {\r\n addClass(sizeObserver, classNameSizeObserverAppear);\r\n push(\r\n offListeners,\r\n on(sizeObserver, animationStartEventName, appearCallback, {\r\n // Fire only once for \"CSS is ready\" event if ResizeObserver strategy is used\r\n _once: !!ResizeObserverConstructor,\r\n })\r\n );\r\n }\r\n\r\n prependChildren(target, sizeObserver);\r\n\r\n return {\r\n _destroy() {\r\n runEach(offListeners);\r\n removeElements(sizeObserver);\r\n },\r\n _getCurrentCacheValues(force?: boolean) {\r\n return {\r\n _directionIsRTL: directionIsRTLCache\r\n ? directionIsRTLCache[1](force) // get current cache values\r\n : [false, false, false],\r\n };\r\n },\r\n };\r\n};\r\n","import {\r\n WH,\r\n CacheValues,\r\n createDiv,\r\n offsetSize,\r\n runEach,\r\n prependChildren,\r\n removeElements,\r\n createCache,\r\n push,\r\n IntersectionObserverConstructor,\r\n} from 'support';\r\nimport { createSizeObserver } from 'observers/sizeObserver';\r\nimport { classNameTrinsicObserver } from 'classnames';\r\n\r\nexport interface TrinsicObserver {\r\n _destroy(): void;\r\n _getCurrentCacheValues(\r\n force?: boolean\r\n ): {\r\n _heightIntrinsic: CacheValues;\r\n };\r\n}\r\n\r\nconst isHeightIntrinsic = (ioEntryOrSize: IntersectionObserverEntry | WH): boolean =>\r\n (ioEntryOrSize as WH).h === 0 ||\r\n (ioEntryOrSize as IntersectionObserverEntry).isIntersecting ||\r\n (ioEntryOrSize as IntersectionObserverEntry).intersectionRatio > 0;\r\n\r\n/**\r\n * Creates a trinsic observer which observes changes to intrinsic or extrinsic sizing for the height of the target element.\r\n * @param target The element which shall be observed.\r\n * @param onTrinsicChangedCallback The callback which gets called after a change was detected.\r\n * @returns A object which represents the instance of the trinsic observer.\r\n */\r\nexport const createTrinsicObserver = (\r\n target: HTMLElement,\r\n onTrinsicChangedCallback: (heightIntrinsic: CacheValues) => any\r\n): TrinsicObserver => {\r\n const trinsicObserver = createDiv(classNameTrinsicObserver);\r\n const offListeners: (() => void)[] = [];\r\n const [updateHeightIntrinsicCache, getCurrentHeightIntrinsicCache] = createCache({\r\n _initialValue: false,\r\n });\r\n\r\n const triggerOnTrinsicChangedCallback = (\r\n updateValue?: IntersectionObserverEntry | WH\r\n ) => {\r\n if (updateValue) {\r\n const heightIntrinsic = updateHeightIntrinsicCache(isHeightIntrinsic(updateValue));\r\n const [, heightIntrinsicChanged] = heightIntrinsic;\r\n\r\n if (heightIntrinsicChanged) {\r\n onTrinsicChangedCallback(heightIntrinsic);\r\n }\r\n }\r\n };\r\n\r\n if (IntersectionObserverConstructor) {\r\n const intersectionObserverInstance: IntersectionObserver = new IntersectionObserverConstructor(\r\n (entries: IntersectionObserverEntry[]) => {\r\n if (entries && entries.length > 0) {\r\n triggerOnTrinsicChangedCallback(entries.pop());\r\n }\r\n },\r\n { root: target }\r\n );\r\n intersectionObserverInstance.observe(trinsicObserver);\r\n push(offListeners, () => {\r\n intersectionObserverInstance.disconnect();\r\n });\r\n } else {\r\n const onSizeChanged = () => {\r\n const newSize = offsetSize(trinsicObserver);\r\n triggerOnTrinsicChangedCallback(newSize);\r\n };\r\n push(offListeners, createSizeObserver(trinsicObserver, onSizeChanged)._destroy);\r\n onSizeChanged();\r\n }\r\n\r\n prependChildren(target, trinsicObserver);\r\n\r\n return {\r\n _destroy() {\r\n runEach(offListeners);\r\n removeElements(trinsicObserver);\r\n },\r\n _getCurrentCacheValues(force?: boolean) {\r\n return {\r\n _heightIntrinsic: getCurrentHeightIntrinsicCache(force),\r\n };\r\n },\r\n };\r\n};\r\n","import {\r\n each,\r\n noop,\r\n debounce,\r\n indexOf,\r\n isString,\r\n MutationObserverConstructor,\r\n isEmptyArray,\r\n on,\r\n attr,\r\n is,\r\n find,\r\n push,\r\n} from 'support';\r\n\r\ntype DOMContentObserverCallback = (contentChangedTroughEvent: boolean) => any;\r\n\r\ntype DOMTargetObserverCallback = (targetChangedAttrs: string[], targetStyleChanged: boolean) => any;\r\n\r\ninterface DOMObserverOptionsBase {\r\n _attributes?: string[];\r\n _styleChangingAttributes?: string[];\r\n}\r\n\r\ninterface DOMContentObserverOptions extends DOMObserverOptionsBase {\r\n _eventContentChange?: DOMObserverEventContentChange; // [selector, eventname(s) | function returning eventname(s)] -> eventnames divided by whitespaces\r\n _nestedTargetSelector?: string;\r\n _ignoreContentChange?: DOMObserverIgnoreContentChange; // function which will prevent marking certain dom changes as content change if it returns true\r\n _ignoreNestedTargetChange?: DOMObserverIgnoreTargetChange; // a function which will prevent marking certain attributes as changed on nested targets if it returns true\r\n}\r\n\r\ninterface DOMTargetObserverOptions extends DOMObserverOptionsBase {\r\n _ignoreTargetChange?: DOMObserverIgnoreTargetChange; // a function which will prevent marking certain attributes as changed if it returns true\r\n}\r\n\r\ntype ContentChangeArrayItem = [string?, string?] | null | undefined;\r\n\r\nexport type DOMObserverEventContentChange =\r\n | Array\r\n | false\r\n | null\r\n | undefined;\r\n\r\nexport type DOMObserverIgnoreContentChange = (\r\n mutation: MutationRecord,\r\n isNestedTarget: boolean,\r\n domObserverTarget: HTMLElement,\r\n domObserverOptions?: DOMContentObserverOptions\r\n) => boolean;\r\n\r\nexport type DOMObserverIgnoreTargetChange = (\r\n target: Node,\r\n attributeName: string,\r\n oldAttributeValue: string | null,\r\n newAttributeValue: string | null\r\n) => boolean;\r\n\r\nexport type DOMObserverCallback = ContentObserver extends true\r\n ? DOMContentObserverCallback\r\n : DOMTargetObserverCallback;\r\n\r\nexport type DOMObserverOptions = ContentObserver extends true\r\n ? DOMContentObserverOptions\r\n : DOMTargetObserverOptions;\r\n\r\nexport interface DOMObserver {\r\n _destroy: () => void;\r\n _update: () => void;\r\n}\r\n\r\n/**\r\n * Creates a set of helper functions to observe events of elements inside the target element.\r\n * @param target The target element of which the children elements shall be observed. (not only direct children but also nested ones)\r\n * @param eventContentChange The event content change array. (array of tuples: selector and eventname(s))\r\n * @param callback Callback which is called if one of the elements emits the corresponding event.\r\n * @returns A object which contains a set of helper functions to destroy and update the observation of elements.\r\n */\r\nconst createEventContentChange = (\r\n target: Element,\r\n callback: (...args: any) => any,\r\n eventContentChange?: DOMObserverEventContentChange\r\n) => {\r\n let map: WeakMap any]> | undefined; // weak map to prevent memory leak for detached elements\r\n let destroyed = false;\r\n const _destroy = () => {\r\n destroyed = true;\r\n };\r\n const _updateElements = (getElements?: (selector: string) => Node[]) => {\r\n if (eventContentChange) {\r\n const eventElmList = eventContentChange.reduce>((arr, item) => {\r\n if (item) {\r\n const selector = item[0];\r\n const eventNames = item[1];\r\n const elements =\r\n eventNames &&\r\n selector &&\r\n (getElements ? getElements(selector) : find(selector, target));\r\n\r\n if (elements && elements.length && eventNames && isString(eventNames)) {\r\n push(arr, [elements, eventNames.trim()], true);\r\n }\r\n }\r\n return arr;\r\n }, []);\r\n\r\n each(eventElmList, (item) =>\r\n each(item[0], (elm) => {\r\n const eventNames = item[1];\r\n const entry = map!.get(elm);\r\n\r\n if (entry) {\r\n const entryEventNames = entry[0];\r\n const entryOff = entry[1];\r\n\r\n // in case an already registered element is registered again, unregister the previous events\r\n if (entryEventNames === eventNames) {\r\n entryOff();\r\n }\r\n }\r\n\r\n const off = on(elm, eventNames, (event: Event) => {\r\n if (destroyed) {\r\n off();\r\n map!.delete(elm);\r\n } else {\r\n callback(event);\r\n }\r\n });\r\n map!.set(elm, [eventNames, off]);\r\n })\r\n );\r\n }\r\n };\r\n\r\n if (eventContentChange) {\r\n map = new WeakMap();\r\n _updateElements();\r\n }\r\n\r\n return {\r\n _destroy,\r\n _updateElements,\r\n };\r\n};\r\n\r\n/**\r\n * Creates a DOM observer which observes DOM changes to either the target element or its children.\r\n * @param target The element which shall be observed.\r\n * @param isContentObserver Whether this observer is just observing the target or just the targets children. (not only direct children but also nested ones)\r\n * @param callback The callback which gets called if a change was detected.\r\n * @param options The options for DOM change detection.\r\n * @returns A object which represents the instance of the DOM observer.\r\n */\r\nexport const createDOMObserver = (\r\n target: HTMLElement,\r\n isContentObserver: ContentObserver,\r\n callback: DOMObserverCallback,\r\n options?: DOMObserverOptions\r\n): DOMObserver => {\r\n let isConnected = false;\r\n const {\r\n _attributes,\r\n _styleChangingAttributes,\r\n _eventContentChange,\r\n _nestedTargetSelector,\r\n _ignoreTargetChange,\r\n _ignoreNestedTargetChange,\r\n _ignoreContentChange,\r\n } = (options as DOMContentObserverOptions & DOMTargetObserverOptions) || {};\r\n const {\r\n _destroy: destroyEventContentChange,\r\n _updateElements: updateEventContentChangeElements,\r\n } = createEventContentChange(\r\n target,\r\n debounce(\r\n () => {\r\n if (isConnected) {\r\n (callback as DOMContentObserverCallback)(true);\r\n }\r\n },\r\n { _timeout: 33, _maxDelay: 99 }\r\n ),\r\n _eventContentChange\r\n );\r\n\r\n // MutationObserver\r\n const finalAttributes = _attributes || [];\r\n const finalStyleChangingAttributes = _styleChangingAttributes || [];\r\n const observedAttributes = finalAttributes.concat(finalStyleChangingAttributes);\r\n const observerCallback = (mutations: MutationRecord[]) => {\r\n const ignoreTargetChange =\r\n (isContentObserver ? _ignoreNestedTargetChange : _ignoreTargetChange) || noop;\r\n const ignoreContentChange = _ignoreContentChange || noop;\r\n const targetChangedAttrs: string[] = [];\r\n const totalAddedNodes: Node[] = [];\r\n let targetStyleChanged = false;\r\n let contentChanged = false;\r\n let childListChanged = false;\r\n each(mutations, (mutation) => {\r\n const { attributeName, target: mutationTarget, type, oldValue, addedNodes } = mutation;\r\n const isAttributesType = type === 'attributes';\r\n const isChildListType = type === 'childList';\r\n const targetIsMutationTarget = target === mutationTarget;\r\n const attributeValue =\r\n isAttributesType && isString(attributeName)\r\n ? attr(mutationTarget as HTMLElement, attributeName!)\r\n : 0;\r\n const attributeChanged = attributeValue !== 0 && oldValue !== attributeValue;\r\n const styleChangingAttrChanged =\r\n indexOf(finalStyleChangingAttributes, attributeName) > -1 && attributeChanged;\r\n\r\n // if is content observer and something changed in children\r\n if (isContentObserver && !targetIsMutationTarget) {\r\n const notOnlyAttrChanged = !isAttributesType;\r\n const contentAttrChanged = isAttributesType && styleChangingAttrChanged;\r\n const isNestedTarget =\r\n contentAttrChanged && _nestedTargetSelector && is(mutationTarget, _nestedTargetSelector);\r\n const baseAssertion = isNestedTarget\r\n ? !ignoreTargetChange(mutationTarget, attributeName!, oldValue, attributeValue)\r\n : notOnlyAttrChanged || contentAttrChanged;\r\n const contentFinalChanged =\r\n baseAssertion && !ignoreContentChange(mutation, !!isNestedTarget, target, options);\r\n\r\n push(totalAddedNodes, addedNodes);\r\n\r\n contentChanged = contentChanged || contentFinalChanged;\r\n childListChanged = childListChanged || isChildListType;\r\n }\r\n // if is target observer and target attr changed\r\n if (\r\n !isContentObserver &&\r\n targetIsMutationTarget &&\r\n attributeChanged &&\r\n !ignoreTargetChange(mutationTarget, attributeName!, oldValue, attributeValue)\r\n ) {\r\n push(targetChangedAttrs, attributeName!);\r\n targetStyleChanged = targetStyleChanged || styleChangingAttrChanged;\r\n }\r\n });\r\n\r\n if (childListChanged && !isEmptyArray(totalAddedNodes)) {\r\n // adds / removes the new elements from the event content change\r\n updateEventContentChangeElements((selector) =>\r\n totalAddedNodes.reduce((arr, node) => {\r\n push(arr, find(selector, node));\r\n return is(node, selector) ? push(arr, node) : arr;\r\n }, [])\r\n );\r\n }\r\n\r\n if (isContentObserver) {\r\n contentChanged && (callback as DOMContentObserverCallback)(false);\r\n } else if (!isEmptyArray(targetChangedAttrs) || targetStyleChanged) {\r\n (callback as DOMTargetObserverCallback)(targetChangedAttrs, targetStyleChanged);\r\n }\r\n };\r\n const mutationObserver: MutationObserver = new MutationObserverConstructor!(observerCallback);\r\n\r\n // Connect\r\n mutationObserver.observe(target, {\r\n attributes: true,\r\n attributeOldValue: true,\r\n attributeFilter: observedAttributes,\r\n subtree: isContentObserver,\r\n childList: isContentObserver,\r\n characterData: isContentObserver,\r\n });\r\n isConnected = true;\r\n\r\n return {\r\n _destroy: () => {\r\n if (isConnected) {\r\n destroyEventContentChange();\r\n mutationObserver.disconnect();\r\n isConnected = false;\r\n }\r\n },\r\n _update: () => {\r\n if (isConnected) {\r\n observerCallback(mutationObserver.takeRecords());\r\n }\r\n },\r\n };\r\n};\r\n","import {\r\n CacheValues,\r\n diffClass,\r\n debounce,\r\n isArray,\r\n isNumber,\r\n each,\r\n indexOf,\r\n isString,\r\n attr,\r\n removeAttr,\r\n} from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport { createSizeObserver, SizeObserverCallbackParams } from 'observers/sizeObserver';\r\nimport { createTrinsicObserver } from 'observers/trinsicObserver';\r\nimport { createDOMObserver, DOMObserver } from 'observers/domObserver';\r\nimport { LifecycleHub, LifecycleCheckOption, LifecycleUpdateHints } from 'lifecycles/lifecycleHub';\r\n\r\n// const hostSelector = `.${classNameHost}`;\r\n\r\n// TODO: observer textarea attrs if textarea\r\n// TODO: test _ignoreContentChange & _ignoreNestedTargetChange for content dom observer\r\n// TODO: test _ignoreTargetChange for target dom observer\r\n\r\n// const viewportSelector = `.${classNameViewport}`;\r\n// const contentSelector = `.${classNameContent}`;\r\nconst ignorePrefix = 'os-';\r\nconst viewportAttrsFromTarget = ['tabindex'];\r\nconst baseStyleChangingAttrsTextarea = ['wrap', 'cols', 'rows'];\r\nconst baseStyleChangingAttrs = ['id', 'class', 'style', 'open'];\r\n\r\nconst ignoreTargetChange = (\r\n target: Node,\r\n attrName: string,\r\n oldValue: string | null,\r\n newValue: string | null\r\n) => {\r\n if (attrName === 'class' && oldValue && newValue) {\r\n const diff = diffClass(oldValue, newValue);\r\n return !!diff.find((addedOrRemovedClass) => addedOrRemovedClass.indexOf(ignorePrefix) !== 0);\r\n }\r\n return false;\r\n};\r\n\r\nexport const lifecycleHubOservers = (\r\n instance: LifecycleHub,\r\n updateLifecycles: (updateHints: Partial) => unknown\r\n) => {\r\n let debounceTimeout: number | false | undefined;\r\n let debounceMaxDelay: number | false | undefined;\r\n let contentMutationObserver: DOMObserver | undefined;\r\n const { _structureSetup } = instance;\r\n const { _targetObj, _targetCtx } = _structureSetup;\r\n const { _host, _viewport, _content } = _targetObj;\r\n const { _isTextarea } = _targetCtx;\r\n const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment();\r\n const contentMutationObserverAttr = _isTextarea\r\n ? baseStyleChangingAttrsTextarea\r\n : baseStyleChangingAttrs.concat(baseStyleChangingAttrsTextarea);\r\n const updateLifecyclesWithDebouncedAdaptiveUpdateHints = debounce(updateLifecycles, {\r\n _timeout: () => debounceTimeout,\r\n _maxDelay: () => debounceMaxDelay,\r\n _mergeParams(prev, curr) {\r\n const {\r\n _sizeChanged: prevSizeChanged,\r\n _hostMutation: prevHostMutation,\r\n _contentMutation: prevContentMutation,\r\n } = prev[0];\r\n const {\r\n _sizeChanged: currSizeChanged,\r\n _hostMutation: currvHostMutation,\r\n _contentMutation: currContentMutation,\r\n } = curr[0];\r\n const merged: [Partial] = [\r\n {\r\n _sizeChanged: prevSizeChanged || currSizeChanged,\r\n _hostMutation: prevHostMutation || currvHostMutation,\r\n _contentMutation: prevContentMutation || currContentMutation,\r\n },\r\n ];\r\n\r\n return merged;\r\n },\r\n });\r\n\r\n const updateViewportAttrsFromHost = (attributes?: string[]) => {\r\n each(attributes || viewportAttrsFromTarget, (attribute) => {\r\n if (indexOf(viewportAttrsFromTarget, attribute) > -1) {\r\n const hostAttr = attr(_host, attribute);\r\n if (isString(hostAttr)) {\r\n attr(_viewport, attribute, hostAttr);\r\n } else {\r\n removeAttr(_viewport, attribute);\r\n }\r\n }\r\n });\r\n };\r\n const onTrinsicChanged = (heightIntrinsic: CacheValues) => {\r\n updateLifecycles({\r\n _heightIntrinsic: heightIntrinsic,\r\n });\r\n };\r\n const onSizeChanged = ({\r\n _sizeChanged,\r\n _directionIsRTLCache,\r\n _appear,\r\n }: SizeObserverCallbackParams) => {\r\n const updateFn =\r\n !_sizeChanged || _appear\r\n ? updateLifecycles\r\n : updateLifecyclesWithDebouncedAdaptiveUpdateHints;\r\n updateFn({\r\n _sizeChanged,\r\n _directionIsRTL: _directionIsRTLCache,\r\n });\r\n };\r\n const onContentMutation = (contentChangedTroughEvent: boolean) => {\r\n // if contentChangedTroughEvent is true its already debounced\r\n const updateFn = contentChangedTroughEvent\r\n ? updateLifecycles\r\n : updateLifecyclesWithDebouncedAdaptiveUpdateHints;\r\n updateFn({\r\n _contentMutation: true,\r\n });\r\n };\r\n const onHostMutation = (targetChangedAttrs: string[], targetStyleChanged: boolean) => {\r\n if (targetStyleChanged) {\r\n updateLifecyclesWithDebouncedAdaptiveUpdateHints({\r\n _hostMutation: true,\r\n });\r\n } else {\r\n updateViewportAttrsFromHost(targetChangedAttrs);\r\n }\r\n };\r\n\r\n const trinsicObserver =\r\n (_content || !_flexboxGlue) && createTrinsicObserver(_host, onTrinsicChanged);\r\n const sizeObserver = createSizeObserver(_host, onSizeChanged, {\r\n _appear: true,\r\n _direction: !_nativeScrollbarStyling,\r\n });\r\n const hostMutationObserver = createDOMObserver(_host, false, onHostMutation, {\r\n _styleChangingAttributes: baseStyleChangingAttrs,\r\n _attributes: baseStyleChangingAttrs.concat(viewportAttrsFromTarget),\r\n _ignoreTargetChange: ignoreTargetChange,\r\n });\r\n\r\n const updateOptions = (checkOption: LifecycleCheckOption) => {\r\n const [elementEvents, elementEventsChanged] = checkOption | null>(\r\n 'updating.elementEvents'\r\n );\r\n const [attributes, attributesChanged] = checkOption('updating.attributes');\r\n const [debounceValue, debounceChanged] = checkOption | number | null>(\r\n 'updating.debounce'\r\n );\r\n const updateContentMutationObserver = elementEventsChanged || attributesChanged;\r\n\r\n if (updateContentMutationObserver) {\r\n if (contentMutationObserver) {\r\n contentMutationObserver._update();\r\n contentMutationObserver._destroy();\r\n }\r\n contentMutationObserver = createDOMObserver(_content || _viewport, true, onContentMutation, {\r\n _styleChangingAttributes: contentMutationObserverAttr.concat(attributes || []),\r\n _attributes: contentMutationObserverAttr.concat(attributes || []),\r\n _eventContentChange: elementEvents,\r\n _ignoreNestedTargetChange: ignoreTargetChange,\r\n // _nestedTargetSelector: hostSelector,\r\n /*\r\n _ignoreContentChange: (mutation, isNestedTarget) => {\r\n const { target, attributeName } = mutation;\r\n return isNestedTarget\r\n ? false\r\n : attributeName\r\n ? liesBetween(target as Element, hostSelector, viewportSelector) || liesBetween(target as Element, hostSelector, contentSelector)\r\n : false;\r\n },\r\n */\r\n });\r\n }\r\n\r\n if (debounceChanged) {\r\n updateLifecyclesWithDebouncedAdaptiveUpdateHints._flush();\r\n if (isArray(debounceValue)) {\r\n const timeout = debounceValue[0];\r\n const maxWait = debounceValue[1];\r\n debounceTimeout = isNumber(timeout) ? timeout : false;\r\n debounceMaxDelay = isNumber(maxWait) ? maxWait : false;\r\n } else if (isNumber(debounceValue)) {\r\n debounceTimeout = debounceValue;\r\n debounceMaxDelay = false;\r\n } else {\r\n debounceTimeout = false;\r\n debounceMaxDelay = false;\r\n }\r\n }\r\n };\r\n\r\n updateViewportAttrsFromHost();\r\n\r\n return {\r\n _trinsicObserver: trinsicObserver,\r\n _sizeObserver: sizeObserver,\r\n _updateObserverOptions: updateOptions,\r\n _destroy() {\r\n contentMutationObserver && contentMutationObserver._destroy();\r\n trinsicObserver && trinsicObserver._destroy();\r\n sizeObserver._destroy();\r\n hostMutationObserver._destroy();\r\n },\r\n };\r\n};\r\n","import { style } from 'support';\r\nimport { LifecycleHub, Lifecycle } from 'lifecycles/lifecycleHub';\r\n\r\n/**\r\n * Lifecycle with the responsibility to adjust the trinsic behavior of the content element.\r\n * @param lifecycleHub\r\n * @returns\r\n */\r\nexport const createTrinsicLifecycle = (lifecycleHub: LifecycleHub): Lifecycle => {\r\n const { _structureSetup } = lifecycleHub;\r\n const { _content } = _structureSetup._targetObj;\r\n\r\n return (updateHints) => {\r\n const { _heightIntrinsic } = updateHints;\r\n const [heightIntrinsic, heightIntrinsicChanged] = _heightIntrinsic;\r\n\r\n if (heightIntrinsicChanged) {\r\n style(_content, {\r\n height: heightIntrinsic ? '' : '100%',\r\n display: heightIntrinsic ? '' : 'inline',\r\n });\r\n }\r\n\r\n return {\r\n _sizeChanged: heightIntrinsicChanged,\r\n _contentMutation: heightIntrinsicChanged,\r\n };\r\n };\r\n};\r\n","import { createCache, topRightBottomLeft, equalTRBL, style } from 'support';\r\nimport { LifecycleHub, Lifecycle } from 'lifecycles/lifecycleHub';\r\nimport { StyleObject } from 'typings';\r\nimport { getEnvironment } from 'environment';\r\n\r\n/**\r\n * Lifecycle with the responsibility to adjust the padding styling of the padding and viewport element.\r\n * @param lifecycleHub\r\n * @returns\r\n */\r\nexport const createPaddingLifecycle = (lifecycleHub: LifecycleHub): Lifecycle => {\r\n const { _structureSetup, _setLifecycleCommunication } = lifecycleHub;\r\n const { _host, _padding, _viewport } = _structureSetup._targetObj;\r\n const [updatePaddingCache, currentPaddingCache] = createCache(\r\n {\r\n _equal: equalTRBL,\r\n _initialValue: topRightBottomLeft(),\r\n },\r\n topRightBottomLeft.bind(0, _host, 'padding', '')\r\n );\r\n\r\n return (updateHints, checkOption, force) => {\r\n let [padding, paddingChanged] = currentPaddingCache(force);\r\n const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment();\r\n const { _sizeChanged, _directionIsRTL, _contentMutation } = updateHints;\r\n const [directionIsRTL, directionChanged] = _directionIsRTL;\r\n const [paddingAbsolute, paddingAbsoluteChanged] = checkOption('paddingAbsolute');\r\n const contentMutation = !_flexboxGlue && _contentMutation;\r\n\r\n if (_sizeChanged || paddingChanged || contentMutation) {\r\n [padding, paddingChanged] = updatePaddingCache(force);\r\n }\r\n\r\n const paddingStyleChanged = paddingAbsoluteChanged || directionChanged || paddingChanged;\r\n\r\n if (paddingStyleChanged) {\r\n // if there is no padding element and no scrollbar styling, paddingAbsolute isn't supported\r\n const paddingRelative = !paddingAbsolute || (!_padding && !_nativeScrollbarStyling);\r\n const paddingHorizontal = padding.r + padding.l;\r\n const paddingVertical = padding.t + padding.b;\r\n\r\n const paddingStyle: StyleObject = {\r\n marginRight: paddingRelative && !directionIsRTL ? -paddingHorizontal : 0,\r\n marginBottom: paddingRelative ? -paddingVertical : 0,\r\n marginLeft: paddingRelative && directionIsRTL ? -paddingHorizontal : 0,\r\n top: paddingRelative ? -padding.t : 0,\r\n right: paddingRelative ? (directionIsRTL ? -padding.r : 'auto') : 0,\r\n left: paddingRelative ? (directionIsRTL ? 'auto' : -padding.l) : 0,\r\n width: paddingRelative ? `calc(100% + ${paddingHorizontal}px)` : '',\r\n };\r\n const viewportStyle: StyleObject = {\r\n paddingTop: paddingRelative ? padding.t : 0,\r\n paddingRight: paddingRelative ? padding.r : 0,\r\n paddingBottom: paddingRelative ? padding.b : 0,\r\n paddingLeft: paddingRelative ? padding.l : 0,\r\n };\r\n\r\n // if there is no padding element apply the style to the viewport element instead\r\n style(_padding || _viewport, paddingStyle);\r\n style(_viewport, viewportStyle);\r\n\r\n _setLifecycleCommunication({\r\n _paddingInfo: {\r\n _absolute: !paddingRelative,\r\n _padding: padding,\r\n },\r\n _viewportPaddingStyle: _padding\r\n ? viewportStyle\r\n : {\r\n ...paddingStyle,\r\n ...viewportStyle,\r\n },\r\n });\r\n }\r\n\r\n return {\r\n _paddingStyleChanged: paddingStyleChanged,\r\n };\r\n };\r\n};\r\n","import {\r\n createCache,\r\n keys,\r\n attr,\r\n WH,\r\n XY,\r\n style,\r\n scrollSize,\r\n CacheValues,\r\n equalWH,\r\n addClass,\r\n removeClass,\r\n clientSize,\r\n offsetSize,\r\n getBoundingClientRect,\r\n noop,\r\n each,\r\n} from 'support';\r\nimport { LifecycleHub, Lifecycle } from 'lifecycles/lifecycleHub';\r\nimport { getEnvironment } from 'environment';\r\nimport { OverflowBehavior } from 'options';\r\nimport { StyleObject } from 'typings';\r\nimport { classNameViewportArrange, classNameViewportScrollbarStyling } from 'classnames';\r\n\r\ninterface ViewportOverflowState {\r\n _scrollbarsHideOffset: XY;\r\n _scrollbarsHideOffsetArrange: XY;\r\n _overflowScroll: XY;\r\n}\r\n\r\ninterface OverflowOption {\r\n x: OverflowBehavior;\r\n y: OverflowBehavior;\r\n}\r\n\r\ntype UndoViewportArrangeResult = [\r\n () => void, // redoViewportArrange\r\n ViewportOverflowState?\r\n];\r\n\r\nconst { max, abs, round } = Math;\r\nconst overlaidScrollbarsHideOffset = 42;\r\nconst whCacheOptions = {\r\n _equal: equalWH,\r\n _initialValue: { w: 0, h: 0 },\r\n};\r\nconst sizeFraction = (elm: HTMLElement): WH => {\r\n const viewportOffsetSize = offsetSize(elm);\r\n const viewportRect = getBoundingClientRect(elm);\r\n return {\r\n w: viewportRect.width - viewportOffsetSize.w,\r\n h: viewportRect.height - viewportOffsetSize.h,\r\n };\r\n};\r\nconst fractionalPixelRatioTollerance = () => (window.devicePixelRatio % 1 === 0 ? 0 : 1);\r\nconst setAxisOverflowStyle = (\r\n horizontal: boolean,\r\n overflowAmount: number,\r\n behavior: OverflowBehavior,\r\n styleObj: StyleObject\r\n) => {\r\n const overflowKey: keyof StyleObject = horizontal ? 'overflowX' : 'overflowY';\r\n const behaviorIsVisible = behavior.indexOf('visible') === 0;\r\n const behaviorIsVisibleHidden = behavior === 'visible-hidden';\r\n const behaviorIsScroll = behavior === 'scroll';\r\n const hasOverflow = overflowAmount > 0;\r\n\r\n if (behaviorIsVisible) {\r\n styleObj[overflowKey] = 'visible';\r\n }\r\n if (behaviorIsScroll && hasOverflow) {\r\n styleObj[overflowKey] = behavior;\r\n }\r\n\r\n return {\r\n _visible: behaviorIsVisible,\r\n _behavior: behaviorIsVisibleHidden ? 'hidden' : 'scroll',\r\n };\r\n};\r\n\r\nconst getOverflowAmount = (\r\n viewportScrollSize: WH,\r\n viewportClientSize: WH,\r\n viewportSizeFraction: WH\r\n) => ({\r\n w: max(\r\n 0,\r\n round(\r\n max(0, viewportScrollSize.w - viewportClientSize.w) -\r\n (fractionalPixelRatioTollerance() || max(0, viewportSizeFraction.w))\r\n )\r\n ),\r\n h: max(\r\n 0,\r\n round(\r\n max(0, viewportScrollSize.h - viewportClientSize.h) -\r\n (fractionalPixelRatioTollerance() || max(0, viewportSizeFraction.h))\r\n )\r\n ),\r\n});\r\n\r\n/**\r\n * Lifecycle with the responsibility to set the correct overflow and scrollbar hiding styles of the viewport element.\r\n * @param lifecycleHub\r\n * @returns\r\n */\r\nexport const createOverflowLifecycle = (lifecycleHub: LifecycleHub): Lifecycle => {\r\n const {\r\n _structureSetup,\r\n _doViewportArrange,\r\n _getLifecycleCommunication,\r\n _setLifecycleCommunication,\r\n } = lifecycleHub;\r\n\r\n const { _host, _viewport, _viewportArrange } = _structureSetup._targetObj;\r\n\r\n const [updateViewportSizeFraction, getCurrentViewportSizeFraction] = createCache>(\r\n whCacheOptions,\r\n sizeFraction.bind(0, _viewport)\r\n );\r\n\r\n const [updateViewportScrollSizeCache, getCurrentViewportScrollSizeCache] = createCache<\r\n WH\r\n >(whCacheOptions, scrollSize.bind(0, _viewport));\r\n\r\n const [updateOverflowAmountCache, getCurrentOverflowAmountCache] =\r\n createCache>(whCacheOptions);\r\n\r\n /**\r\n * Applies a fixed height to the viewport so it can't overflow or underflow the host element.\r\n * @param viewportOverflowState The current overflow state.\r\n * @param heightIntrinsic Whether the host height is intrinsic or not.\r\n */\r\n const fixFlexboxGlue = (\r\n viewportOverflowState: ViewportOverflowState,\r\n heightIntrinsic: boolean\r\n ) => {\r\n style(_viewport, {\r\n height: '',\r\n });\r\n\r\n if (heightIntrinsic) {\r\n const { _nativeScrollbarIsOverlaid } = getEnvironment();\r\n const { _absolute: paddingAbsolute, _padding: padding } =\r\n _getLifecycleCommunication()._paddingInfo;\r\n const { _overflowScroll, _scrollbarsHideOffset } = viewportOverflowState;\r\n const hostSizeFraction = sizeFraction(_host);\r\n const hostClientSize = clientSize(_host);\r\n // padding subtraction is only needed if padding is absolute or if viewport is content-box\r\n const isContentBox = style(_viewport, 'boxSizing') === 'content-box';\r\n const paddingVertical = paddingAbsolute || isContentBox ? padding.b + padding.t : 0;\r\n const fractionalClientHeight =\r\n hostClientSize.h + (abs(hostSizeFraction.h) < 1 ? hostSizeFraction.h : 0);\r\n const subtractXScrollbar = !(_nativeScrollbarIsOverlaid.x && isContentBox);\r\n\r\n style(_viewport, {\r\n height:\r\n fractionalClientHeight +\r\n (_overflowScroll.x && subtractXScrollbar ? _scrollbarsHideOffset.x : 0) -\r\n paddingVertical,\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Gets the current overflow state of the viewport.\r\n * @param showNativeOverlaidScrollbars Whether native overlaid scrollbars are shown instead of hidden.\r\n * @param viewportStyleObj The viewport style object where the overflow scroll property can be read of, or undefined if shall be determined.\r\n * @returns A object which contains informations about the current overflow state.\r\n */\r\n const getViewportOverflowState = (\r\n showNativeOverlaidScrollbars: boolean,\r\n viewportStyleObj?: StyleObject\r\n ): ViewportOverflowState => {\r\n const { _nativeScrollbarSize, _nativeScrollbarIsOverlaid, _nativeScrollbarStyling } =\r\n getEnvironment();\r\n const { x: overlaidX, y: overlaidY } = _nativeScrollbarIsOverlaid;\r\n const determineOverflow = !viewportStyleObj;\r\n const arrangeHideOffset =\r\n !_nativeScrollbarStyling && !showNativeOverlaidScrollbars ? overlaidScrollbarsHideOffset : 0;\r\n const styleObj = determineOverflow\r\n ? style(_viewport, ['overflowX', 'overflowY'])\r\n : viewportStyleObj;\r\n const scroll = {\r\n x: styleObj.overflowX === 'scroll',\r\n y: styleObj.overflowY === 'scroll',\r\n };\r\n const nonScrollbarStylingHideOffset = {\r\n x: overlaidX ? arrangeHideOffset : _nativeScrollbarSize.x,\r\n y: overlaidY ? arrangeHideOffset : _nativeScrollbarSize.y,\r\n };\r\n const scrollbarsHideOffset = {\r\n x: scroll.x && !_nativeScrollbarStyling ? nonScrollbarStylingHideOffset.x : 0,\r\n y: scroll.y && !_nativeScrollbarStyling ? nonScrollbarStylingHideOffset.y : 0,\r\n };\r\n\r\n return {\r\n _overflowScroll: scroll,\r\n _scrollbarsHideOffsetArrange: {\r\n x: overlaidX && !!arrangeHideOffset,\r\n y: overlaidY && !!arrangeHideOffset,\r\n },\r\n _scrollbarsHideOffset: scrollbarsHideOffset,\r\n };\r\n };\r\n\r\n /**\r\n * Sets the overflow property of the viewport and calculates the a overflow state according to the new parameters.\r\n * @param showNativeOverlaidScrollbars Whether to show natively overlaid scrollbars.\r\n * @param overflowAmount The overflow amount.\r\n * @param overflow The overflow behavior according to the options.\r\n * @param viewportStyleObj The viewport style object to which the overflow style shall be applied.\r\n * @returns A object which represents the newly set overflow state.\r\n */\r\n const setViewportOverflowState = (\r\n showNativeOverlaidScrollbars: boolean,\r\n overflowAmount: WH,\r\n overflow: OverflowOption,\r\n viewportStyleObj: StyleObject\r\n ): ViewportOverflowState => {\r\n const { _visible: xVisible, _behavior: xVisibleBehavior } = setAxisOverflowStyle(\r\n true,\r\n overflowAmount.w,\r\n overflow.x,\r\n viewportStyleObj\r\n );\r\n const { _visible: yVisible, _behavior: yVisibleBehavior } = setAxisOverflowStyle(\r\n false,\r\n overflowAmount.h,\r\n overflow.y,\r\n viewportStyleObj\r\n );\r\n\r\n if (xVisible && !yVisible) {\r\n viewportStyleObj.overflowX = xVisibleBehavior;\r\n }\r\n if (yVisible && !xVisible) {\r\n viewportStyleObj.overflowY = yVisibleBehavior;\r\n }\r\n\r\n return getViewportOverflowState(showNativeOverlaidScrollbars, viewportStyleObj);\r\n };\r\n\r\n /**\r\n * Sets the styles of the viewport arrange element.\r\n * @param viewportOverflowState The viewport overflow state according to which the scrollbars shall be hidden.\r\n * @param viewportScrollSize The content scroll size.\r\n * @param directionIsRTL Whether the direction is RTL or not.\r\n * @returns A boolean which indicates whether the viewport arrange element was adjusted.\r\n */\r\n const arrangeViewport = (\r\n viewportOverflowState: ViewportOverflowState,\r\n viewportScrollSize: WH,\r\n viewportSizeFraction: WH,\r\n directionIsRTL: boolean\r\n ) => {\r\n if (_doViewportArrange) {\r\n const { _scrollbarsHideOffset, _scrollbarsHideOffsetArrange } = viewportOverflowState;\r\n const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange;\r\n const { x: hideOffsetX, y: hideOffsetY } = _scrollbarsHideOffset;\r\n const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication();\r\n const viewportArrangeHorizontalPaddingKey: keyof StyleObject = directionIsRTL\r\n ? 'paddingRight'\r\n : 'paddingLeft';\r\n const viewportArrangeHorizontalPaddingValue = viewportPaddingStyle[\r\n viewportArrangeHorizontalPaddingKey\r\n ] as number;\r\n const viewportArrangeVerticalPaddingValue = viewportPaddingStyle.paddingTop as number;\r\n const fractionalContentWidth =\r\n viewportScrollSize.w + (abs(viewportSizeFraction.w) < 1 ? viewportSizeFraction.w : 0);\r\n const fractionalContenHeight =\r\n viewportScrollSize.h + (abs(viewportSizeFraction.h) < 1 ? viewportSizeFraction.h : 0);\r\n const arrangeSize = {\r\n w:\r\n hideOffsetY && arrangeY\r\n ? `${hideOffsetY + fractionalContentWidth - viewportArrangeHorizontalPaddingValue}px`\r\n : '',\r\n h:\r\n hideOffsetX && arrangeX\r\n ? `${hideOffsetX + fractionalContenHeight - viewportArrangeVerticalPaddingValue}px`\r\n : '',\r\n };\r\n\r\n // adjust content arrange / before element\r\n if (_viewportArrange) {\r\n const { sheet } = _viewportArrange;\r\n if (sheet) {\r\n const { cssRules } = sheet;\r\n if (cssRules) {\r\n if (!cssRules.length) {\r\n sheet.insertRule(\r\n `#${attr(_viewportArrange, 'id')} + .${classNameViewportArrange}::before {}`,\r\n 0\r\n );\r\n }\r\n\r\n // @ts-ignore\r\n const ruleStyle = cssRules[0].style;\r\n\r\n ruleStyle.width = arrangeSize.w;\r\n ruleStyle.height = arrangeSize.h;\r\n }\r\n }\r\n } else {\r\n style<'--os-vaw' | '--os-vah'>(_viewport, {\r\n '--os-vaw': arrangeSize.w,\r\n '--os-vah': arrangeSize.h,\r\n });\r\n }\r\n }\r\n\r\n return _doViewportArrange;\r\n };\r\n\r\n /**\r\n * Hides the native scrollbars according to the passed parameters.\r\n * @param viewportOverflowState The viewport overflow state.\r\n * @param directionIsRTL Whether the direction is RTL or not.\r\n * @param viewportArrange Whether special styles related to the viewport arrange strategy shall be applied.\r\n * @param viewportStyleObj The viewport style object to which the needed styles shall be applied.\r\n */\r\n const hideNativeScrollbars = (\r\n viewportOverflowState: ViewportOverflowState,\r\n directionIsRTL: boolean,\r\n viewportArrange: boolean,\r\n viewportStyleObj: StyleObject\r\n ) => {\r\n const { _scrollbarsHideOffset, _scrollbarsHideOffsetArrange } = viewportOverflowState;\r\n const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange;\r\n const { x: hideOffsetX, y: hideOffsetY } = _scrollbarsHideOffset;\r\n const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication();\r\n const horizontalMarginKey: keyof StyleObject = directionIsRTL ? 'marginLeft' : 'marginRight';\r\n const viewportHorizontalPaddingKey: keyof StyleObject = directionIsRTL\r\n ? 'paddingLeft'\r\n : 'paddingRight';\r\n const horizontalMarginValue = viewportPaddingStyle[horizontalMarginKey] as number;\r\n const verticalMarginValue = viewportPaddingStyle.marginBottom as number;\r\n const horizontalPaddingValue = viewportPaddingStyle[viewportHorizontalPaddingKey] as number;\r\n const verticalPaddingValue = viewportPaddingStyle.paddingBottom as number;\r\n\r\n // horizontal\r\n viewportStyleObj.width = `calc(100% + ${hideOffsetY + horizontalMarginValue * -1}px)`;\r\n viewportStyleObj[horizontalMarginKey] = -hideOffsetY + horizontalMarginValue;\r\n\r\n // vertical\r\n viewportStyleObj.marginBottom = -hideOffsetX + verticalMarginValue;\r\n\r\n // viewport arrange additional styles\r\n if (viewportArrange) {\r\n viewportStyleObj[viewportHorizontalPaddingKey] =\r\n horizontalPaddingValue + (arrangeY ? hideOffsetY : 0);\r\n viewportStyleObj.paddingBottom = verticalPaddingValue + (arrangeX ? hideOffsetX : 0);\r\n }\r\n };\r\n\r\n /**\r\n * Removes all styles applied because of the viewport arrange strategy.\r\n * @param showNativeOverlaidScrollbars Whether native overlaid scrollbars are shown instead of hidden.\r\n * @param directionIsRTL Whether the direction is RTL or not.\r\n * @param viewportOverflowState The currentviewport overflow state or undefined if it has to be determined.\r\n * @returns A object with a function which applies all the removed styles and the determined viewport vverflow state.\r\n */\r\n const undoViewportArrange = (\r\n showNativeOverlaidScrollbars: boolean,\r\n directionIsRTL: boolean,\r\n viewportOverflowState?: ViewportOverflowState\r\n ): UndoViewportArrangeResult => {\r\n if (_doViewportArrange) {\r\n const finalViewportOverflowState =\r\n viewportOverflowState || getViewportOverflowState(showNativeOverlaidScrollbars);\r\n const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication();\r\n const { _flexboxGlue } = getEnvironment();\r\n const { _scrollbarsHideOffsetArrange } = finalViewportOverflowState;\r\n const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange;\r\n const finalPaddingStyle: StyleObject = {};\r\n const assignProps = (props: string) =>\r\n each(props.split(' '), (prop) => {\r\n finalPaddingStyle[prop] = viewportPaddingStyle[prop];\r\n });\r\n\r\n if (!_flexboxGlue) {\r\n finalPaddingStyle.height = '';\r\n }\r\n\r\n if (arrangeX) {\r\n assignProps('marginBottom paddingTop paddingBottom');\r\n }\r\n\r\n if (arrangeY) {\r\n assignProps('marginLeft marginRight paddingLeft paddingRight');\r\n }\r\n\r\n const prevStyle = style(_viewport, keys(finalPaddingStyle));\r\n removeClass(_viewport, classNameViewportArrange);\r\n style(_viewport, finalPaddingStyle);\r\n\r\n return [\r\n () => {\r\n hideNativeScrollbars(\r\n finalViewportOverflowState,\r\n directionIsRTL,\r\n _doViewportArrange,\r\n prevStyle\r\n );\r\n style(_viewport, prevStyle);\r\n addClass(_viewport, classNameViewportArrange);\r\n },\r\n finalViewportOverflowState,\r\n ];\r\n }\r\n return [noop];\r\n };\r\n\r\n return (updateHints, checkOption, force) => {\r\n const {\r\n _directionIsRTL,\r\n _heightIntrinsic,\r\n _sizeChanged,\r\n _hostMutation,\r\n _contentMutation,\r\n _paddingStyleChanged,\r\n } = updateHints;\r\n const { _flexboxGlue, _nativeScrollbarStyling, _nativeScrollbarIsOverlaid } = getEnvironment();\r\n const [heightIntrinsic, heightIntrinsicChanged] = _heightIntrinsic;\r\n const [directionIsRTL, directionChanged] = _directionIsRTL;\r\n const [showNativeOverlaidScrollbarsOption, showNativeOverlaidScrollbarsChanged] =\r\n checkOption('nativeScrollbarsOverlaid.show');\r\n const showNativeOverlaidScrollbars =\r\n showNativeOverlaidScrollbarsOption &&\r\n _nativeScrollbarIsOverlaid.x &&\r\n _nativeScrollbarIsOverlaid.y;\r\n const adjustFlexboxGlue =\r\n !_flexboxGlue &&\r\n (_sizeChanged ||\r\n _contentMutation ||\r\n _hostMutation ||\r\n showNativeOverlaidScrollbarsChanged ||\r\n heightIntrinsicChanged);\r\n\r\n let viewportSizeFractionCache: CacheValues> = getCurrentViewportSizeFraction(force);\r\n let viewportScrollSizeCache: CacheValues> = getCurrentViewportScrollSizeCache(force);\r\n let overflowAmuntCache: CacheValues> = getCurrentOverflowAmountCache(force);\r\n let preMeasureViewportOverflowState: ViewportOverflowState | undefined;\r\n\r\n if (showNativeOverlaidScrollbarsChanged && _nativeScrollbarStyling) {\r\n if (showNativeOverlaidScrollbars) {\r\n removeClass(_viewport, classNameViewportScrollbarStyling);\r\n } else {\r\n addClass(_viewport, classNameViewportScrollbarStyling);\r\n }\r\n }\r\n\r\n if (adjustFlexboxGlue) {\r\n preMeasureViewportOverflowState = getViewportOverflowState(showNativeOverlaidScrollbars);\r\n fixFlexboxGlue(preMeasureViewportOverflowState, !!heightIntrinsic);\r\n }\r\n\r\n if (\r\n _sizeChanged ||\r\n _paddingStyleChanged ||\r\n _contentMutation ||\r\n showNativeOverlaidScrollbarsChanged ||\r\n directionChanged\r\n ) {\r\n const [redoViewportArrange, undoViewportArrangeOverflowState] = undoViewportArrange(\r\n showNativeOverlaidScrollbars,\r\n directionIsRTL,\r\n preMeasureViewportOverflowState\r\n );\r\n const [viewportSizeFraction, viewportSizeFractionCahnged] = (viewportSizeFractionCache =\r\n updateViewportSizeFraction(force));\r\n const [viewportScrollSize, viewportScrollSizeChanged] = (viewportScrollSizeCache =\r\n updateViewportScrollSizeCache(force));\r\n const viewportContentSize = clientSize(_viewport);\r\n let arrangedViewportScrollSize = viewportScrollSize;\r\n let arrangedViewportClientSize = viewportContentSize;\r\n\r\n redoViewportArrange();\r\n\r\n // if re measure is required (only required if content arrange strategy is used)\r\n if (\r\n (viewportScrollSizeChanged ||\r\n viewportSizeFractionCahnged ||\r\n showNativeOverlaidScrollbarsChanged) &&\r\n undoViewportArrangeOverflowState &&\r\n !showNativeOverlaidScrollbars &&\r\n arrangeViewport(\r\n undoViewportArrangeOverflowState,\r\n viewportScrollSize,\r\n viewportSizeFraction,\r\n directionIsRTL\r\n )\r\n ) {\r\n arrangedViewportClientSize = clientSize(_viewport);\r\n arrangedViewportScrollSize = scrollSize(_viewport);\r\n }\r\n\r\n overflowAmuntCache = updateOverflowAmountCache(\r\n getOverflowAmount(\r\n {\r\n w: max(viewportScrollSize.w, arrangedViewportScrollSize.w),\r\n h: max(viewportScrollSize.h, arrangedViewportScrollSize.h),\r\n }, // scroll size\r\n {\r\n w: arrangedViewportClientSize.w + max(0, viewportContentSize.w - viewportScrollSize.w),\r\n h: arrangedViewportClientSize.h + max(0, viewportContentSize.h - viewportScrollSize.h),\r\n }, // client size\r\n viewportSizeFraction\r\n ),\r\n force\r\n );\r\n }\r\n\r\n const [viewportSizeFraction, viewportSizeFractionChanged] = viewportSizeFractionCache;\r\n const [viewportScrollSize, viewportScrollSizeChanged] = viewportScrollSizeCache;\r\n const [overflowAmount, overflowAmountChanged] = overflowAmuntCache;\r\n const [overflow, overflowChanged] = checkOption('overflow');\r\n\r\n if (\r\n _paddingStyleChanged ||\r\n viewportSizeFractionChanged ||\r\n viewportScrollSizeChanged ||\r\n overflowAmountChanged ||\r\n overflowChanged ||\r\n showNativeOverlaidScrollbarsChanged ||\r\n directionChanged ||\r\n adjustFlexboxGlue\r\n ) {\r\n const viewportStyle: StyleObject = {\r\n marginRight: 0,\r\n marginBottom: 0,\r\n marginLeft: 0,\r\n width: '',\r\n overflowY: '',\r\n overflowX: '',\r\n };\r\n\r\n const viewportOverflowState = setViewportOverflowState(\r\n showNativeOverlaidScrollbars,\r\n overflowAmount,\r\n overflow,\r\n viewportStyle\r\n );\r\n const viewportArranged = arrangeViewport(\r\n viewportOverflowState,\r\n viewportScrollSize,\r\n viewportSizeFraction,\r\n directionIsRTL\r\n );\r\n hideNativeScrollbars(viewportOverflowState, directionIsRTL, viewportArranged, viewportStyle);\r\n\r\n if (adjustFlexboxGlue) {\r\n fixFlexboxGlue(viewportOverflowState, !!heightIntrinsic);\r\n }\r\n\r\n // TODO: hide host overflow if scroll x or y and no padding element there\r\n // TODO: Test without content\r\n // TODO: Test without padding\r\n // TODO: overflow: visible on padding / host if overflow visible on both axis\r\n\r\n style(_viewport, viewportStyle);\r\n\r\n _setLifecycleCommunication({\r\n _viewportOverflowScroll: viewportOverflowState._overflowScroll,\r\n _viewportOverflowAmount: overflowAmount,\r\n });\r\n }\r\n };\r\n};\r\n","import {\r\n XY,\r\n WH,\r\n TRBL,\r\n CacheValues,\r\n each,\r\n hasOwnProperty,\r\n isNumber,\r\n scrollLeft,\r\n scrollTop,\r\n assignDeep,\r\n} from 'support';\r\nimport { OSOptions } from 'options';\r\nimport { getEnvironment } from 'environment';\r\nimport { StructureSetup } from 'setups/structureSetup';\r\nimport { lifecycleHubOservers } from 'lifecycles/lifecycleHubObservers';\r\nimport { createTrinsicLifecycle } from 'lifecycles/trinsicLifecycle';\r\nimport { createPaddingLifecycle } from 'lifecycles/paddingLifecycle';\r\nimport { createOverflowLifecycle } from 'lifecycles/overflowLifecycle';\r\nimport { StyleObject, PartialOptions } from 'typings';\r\nimport { ScrollbarsSetup } from 'setups/scrollbarsSetup';\r\nimport { TriggerEvent } from '../events';\r\n\r\nexport type LifecycleCheckOption = (path: string) => LifecycleOptionInfo;\r\n\r\nexport type Lifecycle = (\r\n updateHints: LifecycleUpdateHints,\r\n checkOption: LifecycleCheckOption,\r\n force: boolean\r\n) => Partial | void;\r\n\r\nexport type LifecycleOptionInfo = [T, boolean];\r\n\r\nexport interface LifecycleCommunication {\r\n _paddingInfo: {\r\n _absolute: boolean;\r\n _padding: TRBL;\r\n };\r\n _viewportPaddingStyle: StyleObject;\r\n _viewportOverflowScroll: XY;\r\n _viewportOverflowAmount: WH;\r\n}\r\n\r\nexport interface LifecycleAdaptiveUpdateHints {\r\n _sizeChanged: boolean;\r\n _hostMutation: boolean;\r\n _contentMutation: boolean;\r\n _paddingStyleChanged: boolean;\r\n}\r\n\r\nexport interface LifecycleUpdateHints extends LifecycleAdaptiveUpdateHints {\r\n _directionIsRTL: CacheValues;\r\n _heightIntrinsic: CacheValues;\r\n}\r\n\r\nexport interface LifecycleHubState {\r\n _overflowAmount: WH;\r\n}\r\n\r\nexport interface LifecycleHubInstance {\r\n _update(changedOptions: PartialOptions, force?: boolean): void;\r\n _state(): LifecycleHubState;\r\n _destroy(): void;\r\n}\r\n\r\nexport interface LifecycleHub {\r\n _options: OSOptions;\r\n _structureSetup: StructureSetup;\r\n // whether the \"viewport arrange\" strategy must be used (true if no native scrollbar hiding and scrollbars are overlaid)\r\n _doViewportArrange: boolean;\r\n _getLifecycleCommunication(): LifecycleCommunication;\r\n _setLifecycleCommunication(newLifecycleCommunication?: Partial): void;\r\n}\r\n\r\nconst getPropByPath = (obj: any, path: string): T =>\r\n obj\r\n ? path.split('.').reduce((o, prop) => (o && hasOwnProperty(o, prop) ? o[prop] : undefined), obj)\r\n : undefined;\r\n\r\nconst booleanCacheValuesFallback: CacheValues = [false, false, false];\r\nconst lifecycleCommunicationFallback: LifecycleCommunication = {\r\n _paddingInfo: {\r\n _absolute: false,\r\n _padding: {\r\n t: 0,\r\n r: 0,\r\n b: 0,\r\n l: 0,\r\n },\r\n },\r\n _viewportOverflowScroll: {\r\n x: false,\r\n y: false,\r\n },\r\n _viewportOverflowAmount: {\r\n w: 0,\r\n h: 0,\r\n },\r\n _viewportPaddingStyle: {\r\n marginRight: 0,\r\n marginBottom: 0,\r\n marginLeft: 0,\r\n paddingTop: 0,\r\n paddingRight: 0,\r\n paddingBottom: 0,\r\n paddingLeft: 0,\r\n },\r\n};\r\n\r\nexport const createLifecycleHub = (\r\n options: OSOptions,\r\n triggerEvent: TriggerEvent,\r\n structureSetup: StructureSetup,\r\n scrollbarsSetup: ScrollbarsSetup\r\n): LifecycleHubInstance => {\r\n let lifecycleCommunication = lifecycleCommunicationFallback;\r\n const { _viewport } = structureSetup._targetObj;\r\n const {\r\n _nativeScrollbarStyling,\r\n _nativeScrollbarIsOverlaid,\r\n _flexboxGlue,\r\n _addListener: addEnvironmentListener,\r\n _removeListener: removeEnvironmentListener,\r\n } = getEnvironment();\r\n const doViewportArrange =\r\n !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);\r\n const instance: LifecycleHub = {\r\n _options: options,\r\n _structureSetup: structureSetup,\r\n _doViewportArrange: doViewportArrange,\r\n _getLifecycleCommunication: () => lifecycleCommunication,\r\n _setLifecycleCommunication(newLifecycleCommunication) {\r\n lifecycleCommunication = assignDeep({}, lifecycleCommunication, newLifecycleCommunication);\r\n },\r\n };\r\n const lifecycles: Lifecycle[] = [\r\n createTrinsicLifecycle(instance),\r\n createPaddingLifecycle(instance),\r\n createOverflowLifecycle(instance),\r\n ];\r\n\r\n const updateLifecycles = (\r\n updateHints: Partial,\r\n changedOptions?: Partial,\r\n force?: boolean\r\n ) => {\r\n let {\r\n // eslint-disable-next-line prefer-const\r\n _directionIsRTL,\r\n // eslint-disable-next-line prefer-const\r\n _heightIntrinsic,\r\n _sizeChanged = force || false,\r\n _hostMutation = force || false,\r\n _contentMutation = force || false,\r\n _paddingStyleChanged = force || false,\r\n } = updateHints || {};\r\n\r\n const finalDirectionIsRTL =\r\n _directionIsRTL ||\r\n (_sizeObserver\r\n ? _sizeObserver._getCurrentCacheValues(force)._directionIsRTL\r\n : booleanCacheValuesFallback);\r\n const finalHeightIntrinsic =\r\n _heightIntrinsic ||\r\n (_trinsicObserver\r\n ? _trinsicObserver._getCurrentCacheValues(force)._heightIntrinsic\r\n : booleanCacheValuesFallback);\r\n const checkOption: LifecycleCheckOption = (path) => [\r\n getPropByPath(options, path),\r\n force || getPropByPath(changedOptions, path) !== undefined,\r\n ];\r\n const adjustScrollOffset = doViewportArrange || !_flexboxGlue;\r\n const scrollOffsetX = adjustScrollOffset && scrollLeft(_viewport);\r\n const scrollOffsetY = adjustScrollOffset && scrollTop(_viewport);\r\n\r\n // place before updating lifecycles because of possible flushing of debounce\r\n if (_updateObserverOptions) {\r\n _updateObserverOptions(checkOption);\r\n }\r\n\r\n each(lifecycles, (lifecycle) => {\r\n const {\r\n _sizeChanged: adaptiveSizeChanged,\r\n _hostMutation: adaptiveHostMutation,\r\n _contentMutation: adaptiveContentMutation,\r\n _paddingStyleChanged: adaptivePaddingStyleChanged,\r\n } = lifecycle(\r\n {\r\n _directionIsRTL: finalDirectionIsRTL,\r\n _heightIntrinsic: finalHeightIntrinsic,\r\n _sizeChanged,\r\n _hostMutation,\r\n _contentMutation,\r\n _paddingStyleChanged,\r\n },\r\n checkOption,\r\n !!force\r\n ) || {};\r\n\r\n _sizeChanged = adaptiveSizeChanged || _sizeChanged;\r\n _hostMutation = adaptiveHostMutation || _hostMutation;\r\n _contentMutation = adaptiveContentMutation || _contentMutation;\r\n _paddingStyleChanged = adaptivePaddingStyleChanged || _paddingStyleChanged;\r\n });\r\n\r\n if (isNumber(scrollOffsetX)) {\r\n scrollLeft(_viewport, scrollOffsetX);\r\n }\r\n if (isNumber(scrollOffsetY)) {\r\n scrollTop(_viewport, scrollOffsetY);\r\n }\r\n\r\n triggerEvent('updated', {\r\n updateHints: {\r\n sizeChanged: _sizeChanged,\r\n contentMutation: _contentMutation,\r\n hostMutation: _hostMutation,\r\n directionChanged: finalDirectionIsRTL[1],\r\n heightIntrinsicChanged: finalHeightIntrinsic[1],\r\n },\r\n changedOptions: changedOptions || {},\r\n force: !!force,\r\n });\r\n };\r\n const {\r\n _sizeObserver,\r\n _trinsicObserver,\r\n _updateObserverOptions,\r\n _destroy: destroyObservers,\r\n } = lifecycleHubOservers(instance, updateLifecycles);\r\n\r\n const update = (changedOptions: Partial, force?: boolean) =>\r\n updateLifecycles({}, changedOptions, force);\r\n const envUpdateListener = update.bind(0, {}, true);\r\n addEnvironmentListener(envUpdateListener);\r\n\r\n console.log(getEnvironment());\r\n\r\n return {\r\n _update: update,\r\n _state: () => ({\r\n _overflowAmount: lifecycleCommunication._viewportOverflowAmount,\r\n }),\r\n _destroy() {\r\n destroyObservers();\r\n removeEnvironmentListener(envUpdateListener);\r\n\r\n structureSetup._destroy();\r\n scrollbarsSetup._destroy();\r\n },\r\n };\r\n};\r\n","import { assignDeep, each, isArray } from 'support';\r\nimport { OverlayScrollbars, OverlayScrollbarsStatic } from 'overlayscrollbars';\r\n\r\nexport type OSPluginInstance =\r\n | Record\r\n | ((staticObj: OverlayScrollbarsStatic, instanceObj: OverlayScrollbars) => void);\r\nexport type OSPlugin = [string, T];\r\n\r\nconst pluginRegistry: Record = {};\r\n\r\nexport const getPlugins = () => assignDeep({}, pluginRegistry);\r\n\r\nexport const addPlugin = (addedPlugin: OSPlugin | OSPlugin[]) =>\r\n each((isArray(addedPlugin) ? addedPlugin : [addedPlugin]) as OSPlugin[], (plugin) => {\r\n pluginRegistry[plugin[0]] = plugin[1];\r\n });\r\n","import { each, hasOwnProperty, keys, push, isEmptyObject } from 'support/utils';\r\nimport { type, isArray, isUndefined, isPlainObject, isString } from 'support/utils/types';\r\nimport { PlainObject, PartialOptions } from 'typings';\r\n\r\nexport type OptionsObjectType = Record;\r\nexport type OptionsFunctionType = (this: unknown, ...args: unknown[]) => unknown;\r\nexport type OptionsTemplateType = ExtractPropsKey<\r\n OptionsTemplateTypeMap,\r\n T\r\n>;\r\nexport type OptionsTemplateTypes = keyof OptionsTemplateTypeMap;\r\nexport type OptionsTemplateNativeTypes = OptionsTemplateTypeMap[keyof OptionsTemplateTypeMap];\r\n\r\nexport type OptionsTemplateValue = T extends string\r\n ? string extends T\r\n ? OptionsTemplateValueNonEnum\r\n : string\r\n : OptionsTemplateValueNonEnum;\r\n\r\nexport type OptionsTemplate = {\r\n [P in keyof T]: T[P] extends OptionsObjectType\r\n ? OptionsTemplate\r\n : T[P] extends OptionsTemplateNativeTypes\r\n ? OptionsTemplateValue\r\n : never;\r\n};\r\n\r\nexport type OptionsValidationResult = [\r\n PartialOptions, // validated\r\n Record // foreign\r\n];\r\n\r\ntype OptionsTemplateTypeMap = {\r\n __TPL_boolean_TYPE__: boolean;\r\n __TPL_number_TYPE__: number;\r\n __TPL_string_TYPE__: string;\r\n __TPL_array_TYPE__: Array | ReadonlyArray;\r\n __TPL_function_TYPE__: OptionsFunctionType;\r\n __TPL_null_TYPE__: null;\r\n __TPL_object_TYPE__: OptionsObjectType;\r\n};\r\n\r\ntype OptionsTemplateValueNonEnum =\r\n | OptionsTemplateType\r\n | [OptionsTemplateType, ...Array];\r\n\r\ntype ExtractPropsKey = {\r\n [P in keyof T]: TProps extends T[P] ? P : never;\r\n}[keyof T];\r\n\r\ntype OptionsTemplateTypesDictionary = {\r\n readonly boolean: OptionsTemplateType;\r\n readonly number: OptionsTemplateType;\r\n readonly string: OptionsTemplateType;\r\n readonly array: OptionsTemplateType>;\r\n readonly object: OptionsTemplateType;\r\n readonly function: OptionsTemplateType;\r\n readonly null: OptionsTemplateType;\r\n};\r\n\r\n/**\r\n * A prefix and suffix tuple which serves as recognition pattern for template types.\r\n */\r\nconst templateTypePrefixSuffix: readonly [string, string] = ['__TPL_', '_TYPE__'];\r\n\r\n/**\r\n * A object which serves as a mapping for \"normal\" types and template types.\r\n * Key = normal type string\r\n * value = template type string\r\n */\r\nconst optionsTemplateTypes: OptionsTemplateTypesDictionary = [\r\n 'boolean',\r\n 'number',\r\n 'string',\r\n 'array',\r\n 'object',\r\n 'function',\r\n 'null',\r\n].reduce((result, item) => {\r\n result[item] = templateTypePrefixSuffix[0] + item + templateTypePrefixSuffix[1];\r\n return result;\r\n}, {} as OptionsTemplateTypesDictionary);\r\n\r\n/**\r\n * Validates the given options object according to the given template object and returns a object which looks like:\r\n * {\r\n * foreign : a object which consists of properties which aren't defined inside the template. (foreign properties)\r\n * validated : a object which consists only of valid properties. (property name is inside the template and value has a correct type)\r\n * }\r\n * @param template The template according to which the options object shall be validated.\r\n * @param options The options object which shall be validated.\r\n * @param optionsDiff When provided the returned validated object will only have properties which are different to this objects properties.\r\n * Example (assume all properties are valid to the template):\r\n * Options object : { a: 'a', b: 'b', c: 'c' }\r\n * optionsDiff object : { a: 'a', b: 'b', c: undefined }\r\n * Returned validated object : { c: 'c' }\r\n * Because the value of the properties a and b didn't change, they aren't included in the returned object.\r\n * Without the optionsDiff object the returned validated object would be: { a: 'a', b: 'b', c: 'c' }\r\n * @param doWriteErrors True if errors shall be logged into the console, false otherwise.\r\n * @param propPath The propertyPath which lead to this object. (used for error logging)\r\n */\r\nconst validateRecursive = (\r\n template: OptionsTemplate,\r\n options: PartialOptions,\r\n doWriteErrors?: boolean,\r\n propPath?: string\r\n): OptionsValidationResult => {\r\n const validatedOptions: PartialOptions = {};\r\n const optionsCopy: PartialOptions = { ...options };\r\n const props = keys(template).filter((prop) => hasOwnProperty(options, prop));\r\n\r\n each(props, (prop: Extract) => {\r\n const optionsValue: any = options[prop];\r\n const templateValue: PlainObject | string | OptionsTemplateTypes | Array =\r\n template[prop];\r\n const templateIsComplex = isPlainObject(templateValue);\r\n const propPrefix = propPath ? `${propPath}.` : '';\r\n\r\n // if the template has a object as value, it means that the options are complex (verschachtelt)\r\n if (templateIsComplex && isPlainObject(optionsValue)) {\r\n const [validated, foreign] = validateRecursive(\r\n templateValue as T,\r\n optionsValue,\r\n doWriteErrors,\r\n propPrefix + prop\r\n );\r\n validatedOptions[prop] = validated as any;\r\n optionsCopy[prop] = foreign as any;\r\n\r\n each([optionsCopy, validatedOptions], (value) => {\r\n if (isEmptyObject(value[prop])) {\r\n delete value[prop];\r\n }\r\n });\r\n } else if (!templateIsComplex) {\r\n let isValid = false;\r\n const errorEnumStrings: Array = [];\r\n const errorPossibleTypes: Array = [];\r\n const optionsValueType = type(optionsValue);\r\n const templateValueArr: Array = !isArray(templateValue)\r\n ? [templateValue as string | OptionsTemplateTypes]\r\n : (templateValue as Array);\r\n\r\n each(templateValueArr, (currTemplateType) => {\r\n // if currType value isn't inside possibleTemplateTypes we assume its a enum string value\r\n let typeString: string | undefined;\r\n each(optionsTemplateTypes, (value: string, key: string) => {\r\n if (value === currTemplateType) {\r\n typeString = key;\r\n }\r\n });\r\n const isEnumString = isUndefined(typeString);\r\n if (isEnumString && isString(optionsValue)) {\r\n // split it into a array which contains all possible values for example: [\"yes\", \"no\", \"maybe\"]\r\n const enumStringSplit = currTemplateType.split(' ');\r\n isValid = !!enumStringSplit.find((possibility) => possibility === optionsValue);\r\n\r\n // build error message\r\n push(errorEnumStrings, enumStringSplit);\r\n } else {\r\n isValid = optionsTemplateTypes[optionsValueType] === currTemplateType;\r\n }\r\n\r\n // build error message\r\n push(errorPossibleTypes, isEnumString ? optionsTemplateTypes.string : typeString!);\r\n\r\n // continue if invalid, break if valid\r\n return !isValid;\r\n });\r\n\r\n if (isValid) {\r\n validatedOptions[prop] = optionsValue;\r\n } else if (doWriteErrors) {\r\n console.warn(\r\n `${\r\n `The option \"${propPrefix}${prop}\" wasn't set, because it doesn't accept the type [ ${optionsValueType.toUpperCase()} ] with the value of \"${optionsValue}\".\\r\\n` +\r\n `Accepted types are: [ ${errorPossibleTypes.join(', ').toUpperCase()} ].\\r\\n`\r\n }${\r\n errorEnumStrings.length > 0\r\n ? `\\r\\nValid strings are: [ ${errorEnumStrings.join(', ')} ].`\r\n : ''\r\n }`\r\n );\r\n }\r\n\r\n delete optionsCopy[prop];\r\n }\r\n });\r\n\r\n return [validatedOptions, optionsCopy]; // optionsCopy equals now to foreign options\r\n};\r\n\r\n/**\r\n * Validates the given options object according to the given template object and returns a tuple which looks like:\r\n * [\r\n * validated : a object which consists only of valid properties. (property name is inside the template and value has a correct type)\r\n * foreign : a object which consists of properties which aren't defined inside the template. (foreign properties)\r\n * ]\r\n * @param template The template according to which the options object shall be validated.\r\n * @param options The options object which shall be validated.\r\n * @param doWriteErrors True if errors shall be logged into the console, false otherwise.\r\n */\r\nconst validateOptions = (\r\n template: OptionsTemplate,\r\n options: PartialOptions,\r\n doWriteErrors?: boolean\r\n): OptionsValidationResult => validateRecursive(template, options, doWriteErrors);\r\n\r\nexport { validateOptions, optionsTemplateTypes };\r\n","import { OSPlugin } from 'plugins';\r\nimport {\r\n OSOptions,\r\n ResizeBehavior,\r\n OverflowBehavior,\r\n VisibilityBehavior,\r\n AutoHideBehavior,\r\n} from 'options';\r\nimport {\r\n validateOptions,\r\n OptionsTemplate,\r\n OptionsTemplateValue,\r\n optionsTemplateTypes as oTypes,\r\n} from 'plugins/optionsValidation/validation';\r\nimport { PartialOptions } from 'typings';\r\n\r\nconst numberAllowedValues: OptionsTemplateValue = oTypes.number;\r\nconst booleanAllowedValues: OptionsTemplateValue = oTypes.boolean;\r\nconst arrayNullValues: OptionsTemplateValue | null> = [oTypes.array, oTypes.null];\r\nconst stringArrayNullAllowedValues: OptionsTemplateValue | null> = [\r\n oTypes.string,\r\n oTypes.array,\r\n oTypes.null,\r\n];\r\nconst resizeAllowedValues: OptionsTemplateValue = 'none both horizontal vertical';\r\nconst overflowAllowedValues: OptionsTemplateValue =\r\n 'hidden scroll visible visible-hidden';\r\nconst scrollbarsVisibilityAllowedValues: OptionsTemplateValue =\r\n 'visible hidden auto';\r\nconst scrollbarsAutoHideAllowedValues: OptionsTemplateValue =\r\n 'never scroll leavemove';\r\n\r\nconst optionsTemplate: OptionsTemplate = {\r\n resize: resizeAllowedValues, // none || both || horizontal || vertical || n || b ||\r\n paddingAbsolute: booleanAllowedValues, // true || false\r\n updating: {\r\n elementEvents: arrayNullValues, // array of tuples || null\r\n attributes: arrayNullValues,\r\n debounce: [oTypes.number, oTypes.array, oTypes.null], // number || number array || null\r\n },\r\n overflow: {\r\n x: overflowAllowedValues, // visible-hidden || visible-scroll || hidden || scrol\r\n y: overflowAllowedValues, // visible-hidden || visible-scroll || hidden || scrol\r\n },\r\n scrollbars: {\r\n visibility: scrollbarsVisibilityAllowedValues, // visible || hidden || auto || v ||\r\n autoHide: scrollbarsAutoHideAllowedValues, // never || scroll || leave || move ||\r\n autoHideDelay: numberAllowedValues, // number\r\n dragScroll: booleanAllowedValues, // true || false\r\n clickScroll: booleanAllowedValues, // true || false\r\n touch: booleanAllowedValues, // true || false\r\n },\r\n textarea: {\r\n dynWidth: booleanAllowedValues, // true || false\r\n dynHeight: booleanAllowedValues, // true || false\r\n inheritedAttrs: stringArrayNullAllowedValues, // string || array || nul\r\n },\r\n nativeScrollbarsOverlaid: {\r\n show: booleanAllowedValues, // true || false\r\n initialize: booleanAllowedValues, // true || false\r\n },\r\n callbacks: {\r\n onUpdated: [oTypes.function, oTypes.null],\r\n },\r\n};\r\n\r\nexport type OptionsValidationPluginInstance = {\r\n _: (options: PartialOptions, doWriteErrors?: boolean) => PartialOptions;\r\n};\r\n\r\nexport const optionsValidationPluginName = '__osOptionsValidationPlugin';\r\n\r\nexport const optionsValidationPlugin: OSPlugin = [\r\n optionsValidationPluginName,\r\n {\r\n _: (options: PartialOptions, doWriteErrors?: boolean) => {\r\n const [validated, foreign] = validateOptions(optionsTemplate, options, doWriteErrors);\r\n return { ...foreign, ...validated };\r\n },\r\n },\r\n];\r\n","import { OverlayScrollbars } from 'overlayscrollbars';\r\n\r\nconst targets: Set = new Set();\r\nconst targetInstanceMap: WeakMap = new WeakMap();\r\n\r\n/**\r\n * Adds the given OverlayScrollbars instance to the given element.\r\n * @param target The element which is the target of the OverlayScrollbars instance.\r\n * @param osInstance The OverlayScrollbars instance.\r\n */\r\nexport const addInstance = (target: Element, osInstance: OverlayScrollbars): void => {\r\n targetInstanceMap.set(target, osInstance);\r\n targets.add(target);\r\n};\r\n\r\n/**\r\n * Removes a OverlayScrollbars instance from the given element.\r\n * @param target The element from which its OverlayScrollbars instance shall be removed.\r\n */\r\nexport const removeInstance = (target: Element): void => {\r\n targetInstanceMap.delete(target);\r\n targets.delete(target);\r\n};\r\n\r\n/**\r\n * Gets the OverlayScrollbars from the given element or undefined if it doesn't have one.\r\n * @param target The element of which its OverlayScrollbars instance shall be get.\r\n */\r\nexport const getInstance = (target: Element): OverlayScrollbars | undefined =>\r\n targetInstanceMap.get(target);\r\n\r\n/**\r\n * Gets a Map which represents all active OverayScrollbars instances.\r\n * The Key is the element and the value is the instance.\r\n */\r\nexport const allInstances = (): ReadonlyMap => {\r\n const validTargetInstanceMap: Map = new Map();\r\n\r\n targets.forEach((target: Element) => {\r\n /* istanbul ignore else */\r\n if (targetInstanceMap.has(target)) {\r\n validTargetInstanceMap.set(target, targetInstanceMap.get(target)!);\r\n }\r\n });\r\n\r\n targets.clear();\r\n\r\n validTargetInstanceMap.forEach((instance: OverlayScrollbars, validTarget: Element) => {\r\n targets.add(validTarget);\r\n });\r\n\r\n return validTargetInstanceMap;\r\n};\r\n","import { OSOptions } from 'options';\r\nimport { each, from, isArray } from 'support';\r\nimport { PartialOptions } from 'typings';\r\n\r\nexport interface onUpdatedEventArgs {\r\n updateHints: {\r\n sizeChanged: boolean;\r\n hostMutation: boolean;\r\n contentMutation: boolean;\r\n directionChanged: boolean;\r\n heightIntrinsicChanged: boolean;\r\n };\r\n changedOptions: PartialOptions;\r\n force: boolean;\r\n}\r\n\r\nexport interface EventArgsMap {\r\n updated: onUpdatedEventArgs;\r\n}\r\n\r\nexport type OSEventListener = (args: EventArgsMap[N]) => void;\r\n\r\nexport type AddEvent = (\r\n name: N,\r\n listener: OSEventListener | OSEventListener[]\r\n) => () => void;\r\n\r\nexport type RemoveEvent = (\r\n name?: N,\r\n listener?: OSEventListener | OSEventListener[]\r\n) => void;\r\n\r\nexport type TriggerEvent = (name: N, args: EventArgsMap[N]) => void;\r\n\r\nexport type EventHub = [AddEvent, RemoveEvent, TriggerEvent];\r\n\r\nconst manageListener = (\r\n callback: (listener?: OSEventListener) => void,\r\n listener?: OSEventListener | OSEventListener[]\r\n) => {\r\n each(isArray(listener) ? listener : [listener], callback);\r\n};\r\n\r\nexport const createEventHub = (): EventHub => {\r\n const events = new Map>>();\r\n const removeEvent: RemoveEvent = (name?, listener?) => {\r\n if (name) {\r\n const eventSet = events.get(name);\r\n\r\n manageListener((currListener) => {\r\n if (eventSet) {\r\n eventSet[currListener ? 'delete' : 'clear'](currListener!);\r\n }\r\n }, listener);\r\n } else {\r\n events.forEach((eventSet) => {\r\n eventSet.clear();\r\n });\r\n events.clear();\r\n }\r\n };\r\n const addEvent: AddEvent = (name, listener) => {\r\n const eventSet = events.get(name) || new Set();\r\n events.set(name, eventSet);\r\n\r\n manageListener((currListener) => {\r\n eventSet.add(currListener!);\r\n }, listener);\r\n\r\n return removeEvent.bind(0, name, listener as any);\r\n };\r\n const triggerEvent: TriggerEvent = (name, args) => {\r\n const eventSet = events.get(name);\r\n\r\n each(from(eventSet), (event) => {\r\n event(args);\r\n });\r\n };\r\n\r\n return [addEvent, removeEvent, triggerEvent];\r\n};\r\n","import { OSTarget, OSInitializationObject, PartialOptions } from 'typings';\r\nimport { assignDeep, isEmptyObject, each, isFunction, keys, isHTMLElement } from 'support';\r\nimport { createStructureSetup, StructureSetup } from 'setups/structureSetup';\r\nimport { createScrollbarsSetup, ScrollbarsSetup } from 'setups/scrollbarsSetup';\r\nimport { createLifecycleHub } from 'lifecycles/lifecycleHub';\r\nimport { getOptionsDiff, OSOptions } from 'options';\r\nimport { getEnvironment } from 'environment';\r\nimport {\r\n getPlugins,\r\n addPlugin,\r\n optionsValidationPluginName,\r\n OSPlugin,\r\n OptionsValidationPluginInstance,\r\n} from 'plugins';\r\nimport { addInstance, getInstance, removeInstance } from 'instances';\r\nimport { createEventHub, AddEvent, RemoveEvent } from './events';\r\n\r\nexport interface OverlayScrollbarsStatic {\r\n (\r\n target: OSTarget | OSInitializationObject,\r\n options?: PartialOptions,\r\n extensions?: any\r\n ): OverlayScrollbars;\r\n\r\n extend(osPlugin: OSPlugin | OSPlugin[]): void;\r\n}\r\n\r\nexport interface OverlayScrollbars {\r\n options(): OSOptions;\r\n options(newOptions?: PartialOptions): OSOptions;\r\n\r\n update(force?: boolean): void;\r\n destroy(): void;\r\n\r\n state(): any;\r\n\r\n on: AddEvent;\r\n off: RemoveEvent;\r\n}\r\n\r\nexport const OverlayScrollbars: OverlayScrollbarsStatic = (\r\n target: OSTarget | OSInitializationObject,\r\n options?: PartialOptions\r\n): OverlayScrollbars => {\r\n const instanceTarget = isHTMLElement(target) ? target : target.target;\r\n const potentialInstance = getInstance(instanceTarget);\r\n if (potentialInstance) {\r\n return potentialInstance;\r\n }\r\n\r\n const { _getDefaultOptions } = getEnvironment();\r\n const plugins = getPlugins();\r\n const optionsValidationPlugin = plugins[\r\n optionsValidationPluginName\r\n ] as OptionsValidationPluginInstance;\r\n const validateOptions = (newOptions?: PartialOptions) => {\r\n const opts = newOptions || {};\r\n const validate = optionsValidationPlugin && optionsValidationPlugin._;\r\n return validate ? validate(opts, true) : opts;\r\n };\r\n const [addEvent, removeEvent, triggerEvent] = createEventHub();\r\n const currentOptions: OSOptions = assignDeep({}, _getDefaultOptions(), validateOptions(options));\r\n const structureSetup: StructureSetup = createStructureSetup(target);\r\n const scrollbarsSetup: ScrollbarsSetup = createScrollbarsSetup(target, structureSetup);\r\n const lifecycleHub = createLifecycleHub(\r\n currentOptions,\r\n triggerEvent,\r\n structureSetup,\r\n scrollbarsSetup\r\n );\r\n\r\n const instance: OverlayScrollbars = {\r\n options(newOptions?: PartialOptions) {\r\n if (newOptions) {\r\n const changedOptions = getOptionsDiff(currentOptions, validateOptions(newOptions));\r\n\r\n if (!isEmptyObject(changedOptions)) {\r\n assignDeep(currentOptions, changedOptions);\r\n lifecycleHub._update(changedOptions);\r\n }\r\n }\r\n return currentOptions;\r\n },\r\n on: addEvent,\r\n off: removeEvent,\r\n state: () => lifecycleHub._state(),\r\n update(force?: boolean) {\r\n lifecycleHub._update({}, force);\r\n },\r\n destroy: () => {\r\n lifecycleHub._destroy();\r\n removeInstance(instanceTarget);\r\n removeEvent();\r\n },\r\n };\r\n\r\n each(keys(plugins), (pluginName) => {\r\n const pluginInstance = plugins[pluginName];\r\n if (isFunction(pluginInstance)) {\r\n pluginInstance(OverlayScrollbars, instance);\r\n }\r\n });\r\n\r\n instance.update(true);\r\n\r\n addInstance(instanceTarget, instance);\r\n\r\n return instance;\r\n};\r\n\r\nOverlayScrollbars.extend = addPlugin;\r\n"],"names":["createCache","options","update","_initialValue","_equal","_alwaysUpdateValues","_value","_previous","cacheUpdateContextual","newValue","force","curr","newVal","changed","cacheUpdateIsolated","getCurrentCache","ElementNodeType","Node","ELEMENT_NODE","Object","prototype","toString","hasOwnProperty","isUndefined","obj","undefined","isNull","type","call","replace","toLowerCase","isNumber","isString","isBoolean","isFunction","isArray","Array","isObject","isArrayLike","length","lengthCorrectFormat","isPlainObject","key","cstr","ctor","ctorProto","hasOwnConstructor","hasIsPrototypeOf","isHTMLElement","instanceofObj","window","HTMLElement","nodeType","isElement","Element","each","source","callback","i","keys","indexOf","arr","item","fromIndex","push","array","items","arrayIsSingleItem","apply","from","result","Set","forEach","value","elm","isEmptyArray","runEach","p1","runFn","fn","prop","assignDeep","target","object1","object2","object3","object4","object5","object6","sources","copy","copyIsArray","src","clone","isEmptyObject","name","getSetProp","topLeft","fallback","attr","attrName","getAttribute","setAttribute","removeAttr","removeAttribute","scrollLeft","scrollTop","elmPrototype","find","selector","rootElm","document","querySelectorAll","is","matches","msMatchesSelector","contents","childNodes","parent","parentElement","before","parentElm","preferredAnchor","insertedElms","anchor","fragment","createDocumentFragment","insertedElm","previousSibling","appendChild","firstChild","nextSibling","insertBefore","appendChildren","node","children","prependChildren","insertedNodes","insertAfter","removeElements","nodes","e","removeChild","createDiv","classNames","div","createElement","createDOM","html","createdDiv","innerHTML","trim","firstLetterToUpper","str","charAt","toUpperCase","slice","getDummyStyle","style","cssPrefixes","jsPrefixes","jsCache","cssCache","cssProperty","uppercasedName","elmStyle","prefix","prefixWithoutDashes","resultPossibilities","resultPossibility","jsAPI","MutationObserverConstructor","IntersectionObserverConstructor","ResizeObserverConstructor","cAF","rAF","rnothtmlwhite","classListAction","className","action","clazz","classes","match","classList","addClass","add","removeClass","remove","diffClass","classNameA","classNameB","classNameASplit","split","classNameBSplit","tempObj","zeroObj","w","h","windowSize","innerWidth","innerHeight","offsetSize","offsetWidth","offsetHeight","clientSize","clientWidth","clientHeight","scrollSize","scrollWidth","scrollHeight","getBoundingClientRect","passiveEventsSupport","supportPassiveEvents","addEventListener","defineProperty","get","splitEventNames","eventNames","off","listener","capture","eventName","removeEventListener","on","doSupportPassiveEvents","passive","_passive","_capture","once","_once","offListeners","nativeOptions","finalListener","evt","bind","stopPropagation","preventDefault","stopAndPrevent","equal","a","b","props","propMutation","compareA","compareB","equalWH","equalTRBL","equalBCRWH","round","Math","clearTimeouts","id","clearTimeout","noop","debounce","functionToDebounce","timeoutId","maxTimeoutId","prevArguments","latestArguments","_timeout","_maxDelay","_mergeParams","setT","setTimeout","invokeFunctionToDebounce","args","mergeParms","flush","debouncedFn","arguments","finalTimeout","hasTimeout","finalMaxWait","hasMaxWait","setTimeoutFn","mergeParamsResult","invokedArgs","boundInvoke","_flush","cssNumber","opacity","zindex","parseToZeroOrNumber","toFloat","num","parseFloat","parseInt","Number","isNaN","adaptCSSVal","val","getCSSVal","computedStyle","getPropertyValue","setCSSVal","setProperty","styles","getSingleStyle","getStyles","getStylesResult","getComputedStyle","reduce","topRightBottomLeft","propertyPrefix","propertySuffix","finalPrefix","finalSuffix","top","right","bottom","left","t","r","l","x","y","absoluteCoordinates","rect","pageYOffset","pageXOffset","classNameEnvironment","classNameEnvironmentFlexboxGlue","classNameEnvironmentFlexboxGlueMax","classNameHost","classNamePadding","classNameViewport","classNameViewportArrange","classNameContent","classNameViewportScrollbarStyling","classNameSizeObserver","classNameSizeObserverAppear","classNameSizeObserverListener","classNameSizeObserverListenerScroll","classNameSizeObserverListenerItem","classNameSizeObserverListenerItemFinal","classNameTrinsicObserver","classNameScrollbar","classNameScrollbarHorizontal","classNameScrollbarVertical","classNameScrollbarTrack","classNameScrollbarHandle","_extends","module","assign","exports","__esModule","stringify","JSON","_","Error","defaultOptions","resize","paddingAbsolute","updating","elementEvents","attributes","overflow","scrollbars","visibility","autoHide","autoHideDelay","dragScroll","clickScroll","touch","textarea","dynWidth","dynHeight","inheritedAttrs","nativeScrollbarsOverlaid","show","initialize","callbacks","onUpdated","getOptionsDiff","currOptions","newOptions","diff","optionsKeys","concat","optionKey","currOptionValue","newOptionValue","isDiff","environmentInstance","abs","diffBiggerThanOne","valOne","valTwo","absValOne","absValTwo","getNativeScrollbarSize","body","measureElm","cSize","oSize","getNativeScrollbarStyling","testElm","ex","getRtlScrollBehavior","childElm","strHidden","overflowX","overflowY","direction","parentOffset","childOffset","childOffsetAfterScroll","n","getFlexboxGlue","minOffsetsizeParent","minOffsetsize","supportsMin","maxOffsetsizeParent","maxOffsetsize","supportsMax","getWindowDPR","dDPI","screen","deviceXDPI","sDPI","logicalXDPI","devicePixelRatio","getDefaultInitializationStrategy","nativeScrollbarStyling","_host","_viewport","_padding","_content","_scrollbarsSlot","createEnvironment","envDOM","envElm","envChildElm","onChangedListener","nativeScrollbarSize","nativeScrollbarIsOverlaid","defaultInitializationStrategy","initializationStrategy","defaultDefaultOptions","env","_nativeScrollbarSize","_nativeScrollbarIsOverlaid","_nativeScrollbarStyling","_cssCustomProperties","_rtlScrollBehavior","_flexboxGlue","_addListener","_removeListener","delete","_getInitializationStrategy","_setInitializationStrategy","newInitializationStrategy","_getDefaultOptions","_setDefaultOptions","newDefaultOptions","_defaultInitializationStrategy","_defaultDefaultOptions","size","dpr","scrollbarSize","sizeNew","deltaSize","deltaAbsSize","deltaAbsRatio","dprNew","deltaIsBigger","difference","dprChanged","isZoom","newScrollbarSize","getEnvironment","contentArrangeCounter","unwrap","createUniqueViewportArrangeElement","create","staticCreationFromStrategy","initializationValue","strategy","elementClass","dynamicCreationFromStrategy","defaultValue","takeInitializationValue","createStructureSetup","hostInitializationStrategy","viewportInitializationStrategy","paddingInitializationStrategy","contentInitializationStrategy","targetIsElm","targetStructureInitialization","targetElement","isTextarea","isBody","ownerDocument","bodyElm","wnd","defaultView","evaluatedTargetObj","_target","host","viewport","padding","content","_viewportArrange","ctx","_windowElm","_documentElm","_htmlElm","_bodyElm","_isTextarea","_isBody","_targetIsElm","generatedElements","elementIsGenerated","destroyFns","isTextareaHostGenerated","targetContents","contentSlot","_targetObj","_targetCtx","_destroy","generateScrollbarDOM","scrollbarClassName","scrollbar","track","handle","_scrollbar","_track","_handle","createScrollbarsSetup","structureSetup","environmentScrollbarSlot","initializationScrollbarSlot","scrollbarsSlot","initializationScrollbarSlotResult","evaluatedScrollbarSlot","horizontalScrollbarStructure","verticalScrollbarStructure","horizontalScrollbar","verticalScrollbar","_horizontalScrollbarStructure","_verticalScrollbarStructure","animationStartEventName","scrollEventName","scrollAmount","getElmDirectionIsRTL","domRectHasDimensions","height","width","createSizeObserver","onSizeChangedCallback","_direction","observeDirectionChange","_appear","observeAppearChange","rtlScrollBehavior","baseElements","sizeObserver","listenerElement","getIsDirectionRTL","currVal","updateResizeObserverContentRectCache","onSizeChangedCallbackProxy","sizeChangedContext","isResizeObserverCall","hasDirectionCache","skip","appear","doDirectionScroll","pop","contentRect","currRContentRect","prevContentRect","hasDimensions","hadDimensions","rtl","_sizeChanged","_directionIsRTLCache","appearCallback","directionIsRTLCache","resizeObserverInstance","observe","disconnect","observerElementChildren","observerElementChildrenRoot","shrinkElement","lastChild","expandElement","expandElementChild","cacheSize","currSize","isDirty","rAFId","reset","onResized","onScroll","scrollEvent","updateDirectionIsRTLCache","event","directionIsRTLCacheValues","directionIsRTL","directionIsRTLChanged","_getCurrentCacheValues","_directionIsRTL","isHeightIntrinsic","ioEntryOrSize","isIntersecting","intersectionRatio","createTrinsicObserver","onTrinsicChangedCallback","trinsicObserver","updateHeightIntrinsicCache","getCurrentHeightIntrinsicCache","triggerOnTrinsicChangedCallback","updateValue","heightIntrinsic","heightIntrinsicChanged","intersectionObserverInstance","entries","root","onSizeChanged","newSize","_heightIntrinsic","createEventContentChange","eventContentChange","map","destroyed","_updateElements","getElements","eventElmList","elements","entry","entryEventNames","entryOff","set","WeakMap","createDOMObserver","isContentObserver","isConnected","_attributes","_styleChangingAttributes","_eventContentChange","_nestedTargetSelector","_ignoreTargetChange","_ignoreNestedTargetChange","_ignoreContentChange","destroyEventContentChange","updateEventContentChangeElements","finalAttributes","finalStyleChangingAttributes","observedAttributes","observerCallback","mutations","ignoreTargetChange","ignoreContentChange","targetChangedAttrs","totalAddedNodes","targetStyleChanged","contentChanged","childListChanged","mutation","attributeName","mutationTarget","oldValue","addedNodes","isAttributesType","isChildListType","targetIsMutationTarget","attributeValue","attributeChanged","styleChangingAttrChanged","notOnlyAttrChanged","contentAttrChanged","isNestedTarget","baseAssertion","contentFinalChanged","mutationObserver","attributeOldValue","attributeFilter","subtree","childList","characterData","_update","takeRecords","ignorePrefix","viewportAttrsFromTarget","baseStyleChangingAttrsTextarea","baseStyleChangingAttrs","addedOrRemovedClass","lifecycleHubOservers","instance","updateLifecycles","debounceTimeout","debounceMaxDelay","contentMutationObserver","_structureSetup","contentMutationObserverAttr","updateLifecyclesWithDebouncedAdaptiveUpdateHints","prev","prevSizeChanged","prevHostMutation","_hostMutation","prevContentMutation","_contentMutation","currSizeChanged","currvHostMutation","currContentMutation","merged","updateViewportAttrsFromHost","attribute","hostAttr","onTrinsicChanged","updateFn","onContentMutation","contentChangedTroughEvent","onHostMutation","hostMutationObserver","updateOptions","checkOption","elementEventsChanged","attributesChanged","debounceValue","debounceChanged","updateContentMutationObserver","timeout","maxWait","_trinsicObserver","_sizeObserver","_updateObserverOptions","createTrinsicLifecycle","lifecycleHub","updateHints","display","createPaddingLifecycle","_setLifecycleCommunication","updatePaddingCache","currentPaddingCache","paddingChanged","directionChanged","paddingAbsoluteChanged","contentMutation","paddingStyleChanged","paddingRelative","paddingHorizontal","paddingVertical","paddingStyle","marginRight","marginBottom","marginLeft","viewportStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","_paddingInfo","_absolute","_viewportPaddingStyle","_paddingStyleChanged","max","overlaidScrollbarsHideOffset","whCacheOptions","sizeFraction","viewportOffsetSize","viewportRect","fractionalPixelRatioTollerance","setAxisOverflowStyle","horizontal","overflowAmount","behavior","styleObj","overflowKey","behaviorIsVisible","behaviorIsVisibleHidden","behaviorIsScroll","hasOverflow","_visible","_behavior","getOverflowAmount","viewportScrollSize","viewportClientSize","viewportSizeFraction","createOverflowLifecycle","_doViewportArrange","_getLifecycleCommunication","updateViewportSizeFraction","getCurrentViewportSizeFraction","updateViewportScrollSizeCache","getCurrentViewportScrollSizeCache","updateOverflowAmountCache","getCurrentOverflowAmountCache","fixFlexboxGlue","viewportOverflowState","_overflowScroll","_scrollbarsHideOffset","hostSizeFraction","hostClientSize","isContentBox","fractionalClientHeight","subtractXScrollbar","getViewportOverflowState","showNativeOverlaidScrollbars","viewportStyleObj","overlaidX","overlaidY","determineOverflow","arrangeHideOffset","scroll","nonScrollbarStylingHideOffset","scrollbarsHideOffset","_scrollbarsHideOffsetArrange","setViewportOverflowState","xVisible","xVisibleBehavior","yVisible","yVisibleBehavior","arrangeViewport","arrangeX","arrangeY","hideOffsetX","hideOffsetY","viewportPaddingStyle","viewportArrangeHorizontalPaddingKey","viewportArrangeHorizontalPaddingValue","viewportArrangeVerticalPaddingValue","fractionalContentWidth","fractionalContenHeight","arrangeSize","sheet","cssRules","insertRule","ruleStyle","hideNativeScrollbars","viewportArrange","horizontalMarginKey","viewportHorizontalPaddingKey","horizontalMarginValue","verticalMarginValue","horizontalPaddingValue","verticalPaddingValue","undoViewportArrange","finalViewportOverflowState","finalPaddingStyle","assignProps","prevStyle","showNativeOverlaidScrollbarsOption","showNativeOverlaidScrollbarsChanged","adjustFlexboxGlue","viewportSizeFractionCache","viewportScrollSizeCache","overflowAmuntCache","preMeasureViewportOverflowState","redoViewportArrange","undoViewportArrangeOverflowState","viewportSizeFractionCahnged","viewportScrollSizeChanged","viewportContentSize","arrangedViewportScrollSize","arrangedViewportClientSize","viewportSizeFractionChanged","overflowAmountChanged","overflowChanged","viewportArranged","_viewportOverflowScroll","_viewportOverflowAmount","getPropByPath","path","o","booleanCacheValuesFallback","lifecycleCommunicationFallback","createLifecycleHub","triggerEvent","scrollbarsSetup","lifecycleCommunication","addEnvironmentListener","removeEnvironmentListener","doViewportArrange","_options","newLifecycleCommunication","lifecycles","changedOptions","finalDirectionIsRTL","finalHeightIntrinsic","adjustScrollOffset","scrollOffsetX","scrollOffsetY","lifecycle","adaptiveSizeChanged","adaptiveHostMutation","adaptiveContentMutation","adaptivePaddingStyleChanged","sizeChanged","hostMutation","destroyObservers","envUpdateListener","console","log","_state","_overflowAmount","pluginRegistry","getPlugins","addPlugin","addedPlugin","plugin","templateTypePrefixSuffix","optionsTemplateTypes","numberAllowedValues","oTypes","number","booleanAllowedValues","boolean","arrayNullValues","null","stringArrayNullAllowedValues","string","resizeAllowedValues","overflowAllowedValues","scrollbarsVisibilityAllowedValues","scrollbarsAutoHideAllowedValues","function","optionsValidationPluginName","targets","targetInstanceMap","addInstance","osInstance","removeInstance","getInstance","manageListener","createEventHub","events","Map","removeEvent","eventSet","currListener","clear","addEvent","OverlayScrollbars","instanceTarget","potentialInstance","plugins","optionsValidationPlugin","validateOptions","opts","validate","currentOptions","state","destroy","pluginName","pluginInstance","extend"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"overlayscrollbars.js","sources":["../src/support/cache/cache.ts","../src/support/utils/types.ts","../src/support/utils/array.ts","../src/support/utils/object.ts","../src/support/dom/attribute.ts","../src/support/dom/traversal.ts","../src/support/dom/manipulation.ts","../src/support/dom/create.ts","../src/support/compatibility/vendors.ts","../src/support/compatibility/apis.ts","../src/support/dom/class.ts","../src/support/dom/dimensions.ts","../src/support/dom/events.ts","../src/support/utils/equal.ts","../src/support/utils/function.ts","../src/support/dom/style.ts","../src/support/dom/offset.ts","../src/classnames.ts","../../../node_modules/@babel/runtime/helpers/extends.js","../src/options.ts","../src/environment.ts","../src/setups/structureSetup.ts","../src/setups/scrollbarsSetup.ts","../src/observers/sizeObserver.ts","../src/observers/trinsicObserver.ts","../src/observers/domObserver.ts","../src/lifecycles/lifecycleHubObservers.ts","../src/lifecycles/trinsicLifecycle.ts","../src/lifecycles/paddingLifecycle.ts","../src/lifecycles/overflowLifecycle.ts","../src/lifecycles/lifecycleHub.ts","../src/plugins/plugins.ts","../src/plugins/optionsValidation/validation.ts","../src/plugins/optionsValidation/optionsValidation.ts","../src/instances.ts","../src/eventListeners.ts","../src/overlayscrollbars.ts"],"sourcesContent":["export interface CacheOptions {\r\n // initial value of _value.\r\n _initialValue: Value;\r\n // Custom comparison function if shallow compare isn't enough. Returns true if nothing changed.\r\n _equal?: EqualCachePropFunction;\r\n // If true always updates _value and _previous, otherwise they update only when they changed.\r\n _alwaysUpdateValues?: boolean;\r\n}\r\n\r\nexport type CacheValues = [\r\n T, // value\r\n boolean, // changed\r\n T? // previous\r\n];\r\n\r\nexport type EqualCachePropFunction = (currentVal: Value, newVal: Value) => boolean;\r\n\r\nexport type CacheUpdater = (current: Value, previous?: Value) => Value;\r\n\r\nexport type UpdateCacheContextual = (newValue: Value, force?: boolean) => CacheValues;\r\n\r\nexport type UpdateCache = (force?: boolean) => CacheValues;\r\n\r\nexport type GetCurrentCache = (force?: boolean) => CacheValues;\r\n\r\nexport type Cache = [UpdateCache, GetCurrentCache];\r\n\r\nexport type CacheContextual = [UpdateCacheContextual, GetCurrentCache];\r\n\r\nexport function createCache(options: CacheOptions): CacheContextual;\r\nexport function createCache(\r\n options: CacheOptions,\r\n update: CacheUpdater\r\n): Cache;\r\nexport function createCache(\r\n options: CacheOptions,\r\n update?: CacheUpdater\r\n): CacheContextual | Cache {\r\n const { _initialValue, _equal, _alwaysUpdateValues } = options;\r\n let _value: Value = _initialValue;\r\n let _previous: Value | undefined;\r\n\r\n const cacheUpdateContextual: UpdateCacheContextual = (newValue, force?) => {\r\n const curr = _value;\r\n\r\n const newVal = newValue;\r\n const changed = force || (_equal ? !_equal(curr, newVal) : curr !== newVal);\r\n\r\n if (changed || _alwaysUpdateValues) {\r\n _value = newVal;\r\n _previous = curr;\r\n }\r\n\r\n return [_value, changed, _previous];\r\n };\r\n const cacheUpdateIsolated: UpdateCache = (force?) =>\r\n cacheUpdateContextual(update!(_value, _previous), force);\r\n\r\n const getCurrentCache: GetCurrentCache = (force?: boolean) => [\r\n _value,\r\n !!force, // changed\r\n _previous,\r\n ];\r\n\r\n return [update ? cacheUpdateIsolated : cacheUpdateContextual, getCurrentCache] as\r\n | CacheContextual\r\n | Cache;\r\n}\r\n","import { PlainObject } from 'typings';\r\n\r\nconst ElementNodeType = Node.ELEMENT_NODE;\r\nconst { toString, hasOwnProperty } = Object.prototype;\r\n\r\nexport function isUndefined(obj: any): obj is undefined {\r\n return obj === undefined;\r\n}\r\n\r\nexport function isNull(obj: any): obj is null {\r\n return obj === null;\r\n}\r\n\r\nexport const type: (obj: any) => string = (obj) =>\r\n isUndefined(obj) || isNull(obj)\r\n ? `${obj}`\r\n : toString\r\n .call(obj)\r\n .replace(/^\\[object (.+)\\]$/, '$1')\r\n .toLowerCase();\r\n\r\nexport function isNumber(obj: any): obj is number {\r\n return typeof obj === 'number';\r\n}\r\n\r\nexport function isString(obj: any): obj is string {\r\n return typeof obj === 'string';\r\n}\r\n\r\nexport function isBoolean(obj: any): obj is boolean {\r\n return typeof obj === 'boolean';\r\n}\r\n\r\nexport function isFunction(obj: any): obj is (...args: any[]) => any {\r\n return typeof obj === 'function';\r\n}\r\n\r\nexport function isArray(obj: any): obj is Array {\r\n return Array.isArray(obj);\r\n}\r\n\r\nexport function isObject(obj: any): boolean {\r\n return typeof obj === 'object' && !isArray(obj) && !isNull(obj);\r\n}\r\n\r\n/**\r\n * Returns true if the given object is array like, false otherwise.\r\n * @param obj The Object\r\n */\r\nexport function isArrayLike(obj: any): obj is ArrayLike {\r\n const length = !!obj && obj.length;\r\n const lengthCorrectFormat = isNumber(length) && length > -1 && length % 1 == 0; // eslint-disable-line eqeqeq\r\n\r\n return isArray(obj) || (!isFunction(obj) && lengthCorrectFormat)\r\n ? length > 0 && isObject(obj)\r\n ? length - 1 in obj\r\n : true\r\n : false;\r\n}\r\n\r\n/**\r\n * Returns true if the given object is a \"plain\" (e.g. { key: value }) object, false otherwise.\r\n * @param obj The Object.\r\n */\r\nexport function isPlainObject(obj: any): obj is PlainObject {\r\n if (!obj || !isObject(obj) || type(obj) !== 'object') return false;\r\n\r\n let key;\r\n const cstr = 'constructor';\r\n const ctor = obj[cstr];\r\n const ctorProto = ctor && ctor.prototype;\r\n const hasOwnConstructor = hasOwnProperty.call(obj, cstr);\r\n const hasIsPrototypeOf = ctorProto && hasOwnProperty.call(ctorProto, 'isPrototypeOf');\r\n\r\n if (ctor && !hasOwnConstructor && !hasIsPrototypeOf) {\r\n return false;\r\n }\r\n\r\n /* eslint-disable no-restricted-syntax */\r\n for (key in obj) {\r\n /**/\r\n }\r\n /* eslint-enable */\r\n\r\n return isUndefined(key) || hasOwnProperty.call(obj, key);\r\n}\r\n\r\n/**\r\n * Checks whether the given object is a HTMLElement.\r\n * @param obj The object which shall be checked.\r\n */\r\nexport function isHTMLElement(obj: any): obj is HTMLElement {\r\n const instanceofObj = window.HTMLElement;\r\n return obj\r\n ? instanceofObj\r\n ? obj instanceof instanceofObj\r\n : obj.nodeType === ElementNodeType\r\n : false;\r\n}\r\n\r\n/**\r\n * Checks whether the given object is a Element.\r\n * @param obj The object which shall be checked.\r\n */\r\nexport function isElement(obj: any): obj is Element {\r\n const instanceofObj = window.Element;\r\n return obj\r\n ? instanceofObj\r\n ? obj instanceof instanceofObj\r\n : obj.nodeType === ElementNodeType\r\n : false;\r\n}\r\n","import { isArrayLike, isString } from 'support/utils/types';\r\nimport { PlainObject } from 'typings';\r\n\r\ntype RunEachItem = ((...args: any) => any | any[]) | null | undefined;\r\n\r\n/**\r\n * Iterates through a array or object\r\n * @param arrayLikeOrObject The array or object through which shall be iterated.\r\n * @param callback The function which is responsible for the iteration.\r\n * If the function returns true its treated like a \"continue\" statement.\r\n * If the function returns false its treated like a \"break\" statement.\r\n */\r\nexport function each(\r\n array: Array | ReadonlyArray,\r\n callback: (value: T, indexOrKey: number, source: Array) => boolean | unknown\r\n): Array | ReadonlyArray;\r\nexport function each(\r\n array: Array | ReadonlyArray | null | undefined,\r\n callback: (value: T, indexOrKey: number, source: Array) => boolean | unknown\r\n): Array | ReadonlyArray | null | undefined;\r\nexport function each(\r\n arrayLikeObject: ArrayLike,\r\n callback: (value: T, indexOrKey: number, source: ArrayLike) => boolean | unknown\r\n): ArrayLike;\r\nexport function each(\r\n arrayLikeObject: ArrayLike | null | undefined,\r\n callback: (value: T, indexOrKey: number, source: ArrayLike) => boolean | unknown\r\n): ArrayLike | null | undefined;\r\nexport function each(\r\n obj: PlainObject,\r\n callback: (value: any, indexOrKey: string, source: PlainObject) => boolean | unknown\r\n): PlainObject;\r\nexport function each(\r\n obj: PlainObject | null | undefined,\r\n callback: (value: any, indexOrKey: string, source: PlainObject) => boolean | unknown\r\n): PlainObject | null | undefined;\r\nexport function each(\r\n source: ArrayLike | PlainObject | null | undefined,\r\n callback: (value: T, indexOrKey: any, source: any) => boolean | unknown\r\n): Array | ReadonlyArray | ArrayLike | PlainObject | null | undefined {\r\n if (isArrayLike(source)) {\r\n for (let i = 0; i < source.length; i++) {\r\n if (callback(source[i], i, source) === false) {\r\n break;\r\n }\r\n }\r\n } else if (source) {\r\n each(Object.keys(source), (key) => callback(source[key], key, source));\r\n }\r\n return source;\r\n}\r\n\r\n/**\r\n * Returns the index of the given inside the given array or -1 if the given item isn't part of the given array.\r\n * @param arr The array.\r\n * @param item The item.\r\n * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.\r\n */\r\nexport const indexOf = (arr: T[], item: T, fromIndex?: number): number =>\r\n arr.indexOf(item, fromIndex);\r\n\r\n/**\r\n * Pushesh all given items into the given array and returns it.\r\n * @param array The array the items shall be pushed into.\r\n * @param items The items which shall be pushed into the array.\r\n */\r\nexport const push = (array: T[], items: T | ArrayLike, arrayIsSingleItem?: boolean): T[] => {\r\n !arrayIsSingleItem && !isString(items) && isArrayLike(items)\r\n ? Array.prototype.push.apply(array, items as T[])\r\n : array.push(items as T);\r\n return array;\r\n};\r\n\r\n/**\r\n * Creates a shallow-copied Array instance from an array-like or iterable object.\r\n * @param arr The object from which the array instance shall be created.\r\n */\r\nexport const from = (arr?: ArrayLike | Set) => {\r\n if (Array.from && arr) {\r\n return Array.from(arr);\r\n }\r\n const result: T[] = [];\r\n\r\n if (arr instanceof Set) {\r\n arr.forEach((value) => {\r\n push(result, value);\r\n });\r\n } else {\r\n each(arr, (elm) => {\r\n push(result, elm);\r\n });\r\n }\r\n\r\n return result;\r\n};\r\n\r\n/**\r\n * Check whether the passed array is empty.\r\n * @param array The array which shall be checked.\r\n */\r\nexport const isEmptyArray = (array: any[] | null | undefined): boolean =>\r\n !!array && array.length === 0;\r\n\r\n/**\r\n * Calls all functions in the passed array/set of functions.\r\n * @param arr The array filled with function which shall be called.\r\n * @param p1 The first param.\r\n */\r\nexport const runEach = (arr: ArrayLike | Set, p1?: unknown): void => {\r\n const runFn = (fn: RunEachItem) => fn && fn(p1);\r\n if (arr instanceof Set) {\r\n arr.forEach(runFn);\r\n } else {\r\n each(arr, runFn);\r\n }\r\n};\r\n","import { isArray, isFunction, isPlainObject, isNull } from 'support/utils/types';\r\nimport { each } from 'support/utils/array';\r\n\r\n/**\r\n * Determines whether the passed object has a property with the passed name.\r\n * @param obj The object.\r\n * @param prop The name of the property.\r\n */\r\nexport const hasOwnProperty = (obj: any, prop: string | number | symbol): boolean =>\r\n Object.prototype.hasOwnProperty.call(obj, prop);\r\n\r\n/**\r\n * Returns the names of the enumerable string properties and methods of an object.\r\n * @param obj The object of which the properties shall be returned.\r\n */\r\nexport const keys = (obj: any): Array => (obj ? Object.keys(obj) : []);\r\n\r\n// https://github.com/jquery/jquery/blob/master/src/core.js#L116\r\nexport function assignDeep(target: T, object1: U): T & U;\r\nexport function assignDeep(target: T, object1: U, object2: V): T & U & V;\r\nexport function assignDeep(\r\n target: T,\r\n object1: U,\r\n object2: V,\r\n object3: W\r\n): T & U & V & W;\r\nexport function assignDeep(\r\n target: T,\r\n object1: U,\r\n object2: V,\r\n object3: W,\r\n object4: X\r\n): T & U & V & W & X;\r\nexport function assignDeep(\r\n target: T,\r\n object1: U,\r\n object2: V,\r\n object3: W,\r\n object4: X,\r\n object5: Y\r\n): T & U & V & W & X & Y;\r\nexport function assignDeep(\r\n target: T,\r\n object1?: U,\r\n object2?: V,\r\n object3?: W,\r\n object4?: X,\r\n object5?: Y,\r\n object6?: Z\r\n): T & U & V & W & X & Y & Z {\r\n const sources: Array = [object1, object2, object3, object4, object5, object6];\r\n\r\n // Handle case when target is a string or something (possible in deep copy)\r\n if ((typeof target !== 'object' || isNull(target)) && !isFunction(target)) {\r\n target = {} as T;\r\n }\r\n\r\n each(sources, (source) => {\r\n // Extend the base object\r\n each(keys(source), (key) => {\r\n const copy: any = source[key];\r\n\r\n // Prevent Object.prototype pollution\r\n // Prevent never-ending loop\r\n if (target === copy) {\r\n return true;\r\n }\r\n\r\n const copyIsArray = isArray(copy);\r\n\r\n // Recurse if we're merging plain objects or arrays\r\n if (copy && (isPlainObject(copy) || copyIsArray)) {\r\n const src = target[key];\r\n let clone: any = src;\r\n\r\n // Ensure proper type for the source value\r\n if (copyIsArray && !isArray(src)) {\r\n clone = [];\r\n } else if (!copyIsArray && !isPlainObject(src)) {\r\n clone = {};\r\n }\r\n\r\n // Never move original objects, clone them\r\n target[key] = assignDeep(clone, copy) as any;\r\n } else {\r\n target[key] = copy;\r\n }\r\n });\r\n });\r\n\r\n // Return the modified object\r\n return target as any;\r\n}\r\n\r\n/**\r\n * Returns true if the given object is empty, false otherwise.\r\n * @param obj The Object.\r\n */\r\nexport function isEmptyObject(obj: any): boolean {\r\n /* eslint-disable no-restricted-syntax, guard-for-in */\r\n for (const name in obj) return false;\r\n return true;\r\n /* eslint-enable */\r\n}\r\n","import { isUndefined } from 'support/utils/types';\r\n\r\ntype GetSetPropName = 'scrollLeft' | 'scrollTop' | 'value';\r\n\r\nfunction getSetProp(\r\n topLeft: GetSetPropName,\r\n fallback: number | string,\r\n elm: HTMLElement | HTMLInputElement | null,\r\n value?: number | string\r\n): number | string | void {\r\n if (isUndefined(value)) {\r\n return elm ? elm[topLeft] : fallback;\r\n }\r\n elm && (elm[topLeft] = value);\r\n}\r\n\r\n/**\r\n * Gets or sets a attribute with the given attribute of the given element depending whether the value attribute is given.\r\n * Returns null if the element has no attribute with the given name.\r\n * @param elm The element of which the attribute shall be get or set.\r\n * @param attrName The attribute name which shall be get or set.\r\n * @param value The value of the attribute which shall be set.\r\n */\r\nexport function attr(elm: HTMLElement | null, attrName: string): string | null;\r\nexport function attr(elm: HTMLElement | null, attrName: string, value: string): void;\r\nexport function attr(\r\n elm: HTMLElement | null,\r\n attrName: string,\r\n value?: string\r\n): string | null | void {\r\n if (isUndefined(value)) {\r\n return elm ? elm.getAttribute(attrName) : null;\r\n }\r\n elm && elm.setAttribute(attrName, value);\r\n}\r\n\r\n/**\r\n * Removes the given attribute from the given element.\r\n * @param elm The element of which the attribute shall be removed.\r\n * @param attrName The attribute name.\r\n */\r\nexport const removeAttr = (elm: Element | null, attrName: string): void => {\r\n elm && elm.removeAttribute(attrName);\r\n};\r\n\r\n/**\r\n * Gets or sets the scrollLeft value of the given element depending whether the value attribute is given.\r\n * @param elm The element of which the scrollLeft value shall be get or set.\r\n * @param value The scrollLeft value which shall be set.\r\n */\r\nexport function scrollLeft(elm: HTMLElement | null): number;\r\nexport function scrollLeft(elm: HTMLElement | null, value: number): void;\r\nexport function scrollLeft(elm: HTMLElement | null, value?: number): number | void {\r\n return getSetProp('scrollLeft', 0, elm, value) as number;\r\n}\r\n\r\n/**\r\n * Gets or sets the scrollTop value of the given element depending whether the value attribute is given.\r\n * @param elm The element of which the scrollTop value shall be get or set.\r\n * @param value The scrollTop value which shall be set.\r\n */\r\nexport function scrollTop(elm: HTMLElement | null): number;\r\nexport function scrollTop(elm: HTMLElement | null, value: number): void;\r\nexport function scrollTop(elm: HTMLElement | null, value?: number): number | void {\r\n return getSetProp('scrollTop', 0, elm, value) as number;\r\n}\r\n\r\n/**\r\n * Gets or sets the value of the given input element depending whether the value attribute is given.\r\n * @param elm The input element of which the value shall be get or set.\r\n * @param value The value which shall be set.\r\n */\r\nexport function val(elm: HTMLInputElement | null): string;\r\nexport function val(elm: HTMLInputElement | null, value: string): void;\r\nexport function val(elm: HTMLInputElement | null, value?: string): string | void {\r\n return getSetProp('value', '', elm, value) as string;\r\n}\r\n","import { isElement } from 'support/utils/types';\r\nimport { push, from } from 'support/utils/array';\r\n\r\ntype InputElementType = Element | Node | false | null | undefined;\r\ntype OutputElementType = Element | null;\r\n\r\nconst elmPrototype = Element.prototype;\r\n\r\n/**\r\n * Find all elements with the passed selector, outgoing (and including) the passed element or the document if no element was provided.\r\n * @param selector The selector which has to be searched by.\r\n * @param elm The element from which the search shall be outgoing.\r\n */\r\nconst find = (selector: string, elm?: InputElementType): Element[] => {\r\n const arr: Array = [];\r\n const rootElm = elm ? (isElement(elm) ? elm : null) : document;\r\n\r\n return rootElm ? push(arr, rootElm.querySelectorAll(selector)) : arr;\r\n};\r\n\r\n/**\r\n * Find the first element with the passed selector, outgoing (and including) the passed element or the document if no element was provided.\r\n * @param selector The selector which has to be searched by.\r\n * @param elm The element from which the search shall be outgoing.\r\n */\r\nconst findFirst = (selector: string, elm?: InputElementType): OutputElementType => {\r\n const rootElm = elm ? (isElement(elm) ? elm : null) : document;\r\n\r\n return rootElm ? rootElm.querySelector(selector) : null;\r\n};\r\n\r\n/**\r\n * Determines whether the passed element is matching with the passed selector.\r\n * @param elm The element which has to be compared with the passed selector.\r\n * @param selector The selector which has to be compared with the passed element. Additional selectors: ':visible' and ':hidden'.\r\n */\r\nconst is = (elm: InputElementType, selector: string): boolean => {\r\n if (isElement(elm)) {\r\n /* istanbul ignore next */\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n const fn: (...args: any) => boolean = elmPrototype.matches || elmPrototype.msMatchesSelector;\r\n return fn.call(elm, selector);\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Returns the children (no text-nodes or comments) of the passed element which are matching the passed selector. An empty array is returned if the passed element is null.\r\n * @param elm The element of which the children shall be returned.\r\n * @param selector The selector which must match with the children elements.\r\n */\r\nconst children = (elm: InputElementType, selector?: string): ReadonlyArray => {\r\n const childs: Array = [];\r\n\r\n return isElement(elm)\r\n ? push(\r\n childs,\r\n from(elm.children).filter((child) => (selector ? is(child, selector) : child))\r\n )\r\n : childs;\r\n};\r\n\r\n/**\r\n * Returns the childNodes (incl. text-nodes or comments etc.) of the passed element. An empty array is returned if the passed element is null.\r\n * @param elm The element of which the childNodes shall be returned.\r\n */\r\nconst contents = (elm: InputElementType): ReadonlyArray =>\r\n elm ? from(elm.childNodes) : [];\r\n\r\n/**\r\n * Returns the parent element of the passed element, or null if the passed element is null.\r\n * @param elm The element of which the parent element shall be returned.\r\n */\r\nconst parent = (elm: InputElementType): OutputElementType => (elm ? elm.parentElement : null);\r\n\r\nconst closest = (elm: InputElementType, selector: string): OutputElementType => {\r\n if (isElement(elm)) {\r\n const closestFn = elmPrototype.closest;\r\n if (closestFn) {\r\n return closestFn.call(elm, selector);\r\n }\r\n\r\n do {\r\n if (is(elm, selector)) {\r\n return elm as Element;\r\n }\r\n elm = parent(elm);\r\n } while (elm);\r\n }\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n * Determines whether the given element lies between two selectors in the DOM.\r\n * @param elm The element.\r\n * @param highBoundarySelector The high boundary selector.\r\n * @param deepBoundarySelector The deep boundary selector.\r\n */\r\nconst liesBetween = (\r\n elm: InputElementType,\r\n highBoundarySelector: string,\r\n deepBoundarySelector: string\r\n): boolean => {\r\n const closestHighBoundaryElm = elm && closest(elm, highBoundarySelector);\r\n const closestDeepBoundaryElm = elm && findFirst(deepBoundarySelector, closestHighBoundaryElm);\r\n\r\n return closestHighBoundaryElm && closestDeepBoundaryElm\r\n ? closestHighBoundaryElm === elm ||\r\n closestDeepBoundaryElm === elm ||\r\n closest(closest(elm, deepBoundarySelector), highBoundarySelector) !== closestHighBoundaryElm\r\n : false;\r\n};\r\n\r\nexport { find, findFirst, is, children, contents, parent, liesBetween };\r\n","import { isArrayLike } from 'support/utils/types';\r\nimport { each, from } from 'support/utils/array';\r\nimport { parent } from 'support/dom/traversal';\r\n\r\ntype NodeCollection = ArrayLike | Node | false | null | undefined;\r\n\r\n/**\r\n * Inserts Nodes before the given preferredAnchor element.\r\n * @param parentElm The parent of the preferredAnchor element or the element which shall be the parent of the inserted Nodes.\r\n * @param preferredAnchor The element before which the Nodes shall be inserted or null if the elements shall be appended at the end.\r\n * @param insertedElms The Nodes which shall be inserted.\r\n */\r\nconst before = (\r\n parentElm: Node | false | null | undefined,\r\n preferredAnchor: Node | null | undefined,\r\n insertedElms: NodeCollection\r\n): void => {\r\n if (insertedElms) {\r\n let anchor: Node | null | undefined = preferredAnchor;\r\n let fragment: DocumentFragment | Node | null | undefined;\r\n\r\n // parent must be defined\r\n if (parentElm) {\r\n if (isArrayLike(insertedElms)) {\r\n fragment = document.createDocumentFragment();\r\n\r\n // append all insertedElms to the fragment and if one of these is the anchor, change the anchor\r\n each(insertedElms, (insertedElm) => {\r\n if (insertedElm === anchor) {\r\n anchor = insertedElm.previousSibling;\r\n }\r\n fragment!.appendChild(insertedElm);\r\n });\r\n } else {\r\n fragment = insertedElms;\r\n }\r\n\r\n // if the preferred anchor isn't null set it to a valid anchor\r\n if (preferredAnchor) {\r\n if (!anchor) {\r\n anchor = parentElm.firstChild;\r\n } else if (anchor !== preferredAnchor) {\r\n anchor = anchor.nextSibling;\r\n }\r\n }\r\n\r\n parentElm.insertBefore(fragment, anchor || null);\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Appends the given children at the end of the given Node.\r\n * @param node The Node to which the children shall be appended.\r\n * @param children The Nodes which shall be appended.\r\n */\r\nexport const appendChildren = (node: Node | null | undefined, children: NodeCollection): void => {\r\n before(node, null, children);\r\n};\r\n\r\n/**\r\n * Prepends the given children at the start of the given Node.\r\n * @param node The Node to which the children shall be prepended.\r\n * @param children The Nodes which shall be prepended.\r\n */\r\nexport const prependChildren = (node: Node | null | undefined, children: NodeCollection): void => {\r\n before(node, node && node.firstChild, children);\r\n};\r\n\r\n/**\r\n * Inserts the given Nodes before the given Node.\r\n * @param node The Node before which the given Nodes shall be inserted.\r\n * @param insertedNodes The Nodes which shall be inserted.\r\n */\r\nexport const insertBefore = (\r\n node: Node | null | undefined,\r\n insertedNodes: NodeCollection\r\n): void => {\r\n before(parent(node), node, insertedNodes);\r\n};\r\n\r\n/**\r\n * Inserts the given Nodes after the given Node.\r\n * @param node The Node after which the given Nodes shall be inserted.\r\n * @param insertedNodes The Nodes which shall be inserted.\r\n */\r\nexport const insertAfter = (node: Node | null | undefined, insertedNodes: NodeCollection): void => {\r\n before(parent(node), node && node.nextSibling, insertedNodes);\r\n};\r\n\r\n/**\r\n * Removes the given Nodes from their parent.\r\n * @param nodes The Nodes which shall be removed.\r\n */\r\nexport const removeElements = (nodes: NodeCollection): void => {\r\n if (isArrayLike(nodes)) {\r\n each(from(nodes), (e) => removeElements(e));\r\n } else if (nodes) {\r\n const parentElm = parent(nodes);\r\n if (parentElm) {\r\n parentElm.removeChild(nodes);\r\n }\r\n }\r\n};\r\n","import { each } from 'support/utils/array';\r\nimport { attr } from 'support/dom/attribute';\r\nimport { contents } from 'support/dom/traversal';\r\nimport { removeElements } from 'support/dom/manipulation';\r\n\r\n/**\r\n * Creates a div DOM node.\r\n */\r\nexport const createDiv = (classNames?: string): HTMLDivElement => {\r\n const div = document.createElement('div');\r\n if (classNames) {\r\n attr(div, 'class', classNames);\r\n }\r\n return div;\r\n};\r\n\r\n/**\r\n * Creates DOM nodes modeled after the passed html string and returns the root dom nodes as a array.\r\n * @param html The html string after which the DOM nodes shall be created.\r\n */\r\nexport const createDOM = (html: string): ReadonlyArray => {\r\n const createdDiv = createDiv();\r\n createdDiv.innerHTML = html.trim();\r\n\r\n return each(contents(createdDiv), (elm) => removeElements(elm));\r\n};\r\n","import { each } from 'support/utils/array';\r\nimport { hasOwnProperty } from 'support/utils/object';\r\nimport { createDiv } from 'support/dom/create';\r\n\r\nconst firstLetterToUpper = (str: string): string => str.charAt(0).toUpperCase() + str.slice(1);\r\nconst getDummyStyle = (): CSSStyleDeclaration => createDiv().style;\r\n\r\n// https://developer.mozilla.org/en-US/docs/Glossary/Vendor_Prefix\r\n\r\nexport const cssPrefixes: ReadonlyArray = ['-webkit-', '-moz-', '-o-', '-ms-'];\r\nexport const jsPrefixes: ReadonlyArray = [\r\n 'WebKit',\r\n 'Moz',\r\n 'O',\r\n 'MS',\r\n 'webkit',\r\n 'moz',\r\n 'o',\r\n 'ms',\r\n];\r\n\r\nexport const jsCache: { [key: string]: any } = {};\r\nexport const cssCache: { [key: string]: string } = {};\r\n\r\n/**\r\n * Gets the name of the given CSS property with vendor prefix if it isn't supported without it, or and empty string if unsupported.\r\n * @param name The name of the CSS property which shall be get.\r\n */\r\nexport const cssProperty = (name: string): string => {\r\n let result: string | undefined = cssCache[name];\r\n\r\n if (hasOwnProperty(cssCache, name)) {\r\n return result;\r\n }\r\n\r\n const uppercasedName: string = firstLetterToUpper(name);\r\n const elmStyle: CSSStyleDeclaration = getDummyStyle();\r\n\r\n each(cssPrefixes, (prefix: string) => {\r\n const prefixWithoutDashes: string = prefix.replace(/-/g, '');\r\n const resultPossibilities: Array = [\r\n name, // transition\r\n prefix + name, // -webkit-transition\r\n prefixWithoutDashes + uppercasedName, // webkitTransition\r\n firstLetterToUpper(prefixWithoutDashes) + uppercasedName, // WebkitTransition\r\n ];\r\n\r\n // eslint-disable-next-line no-return-assign\r\n return !(result = resultPossibilities.find(\r\n (resultPossibility: string) => elmStyle[resultPossibility] !== undefined\r\n ));\r\n });\r\n\r\n // eslint-disable-next-line no-return-assign\r\n return (cssCache[name] = result || '');\r\n};\r\n\r\n/**\r\n * Get the name of the given CSS property value(s), with vendor prefix if it isn't supported without it, or an empty string if no value is supported.\r\n * @param property The CSS property to which the CSS property value(s) belong.\r\n * @param values The value(s) separated by spaces which shall be get.\r\n * @param suffix A suffix which is added to each value in case the value is a function or something else more advanced.\r\n */\r\nexport const cssPropertyValue = (property: string, values: string, suffix?: string): string => {\r\n const name = `${property} ${values}`;\r\n let result: string | undefined = cssCache[name];\r\n\r\n if (hasOwnProperty(cssCache, name)) {\r\n return result;\r\n }\r\n\r\n const dummyStyle: CSSStyleDeclaration = getDummyStyle();\r\n const possbleValues: Array = values.split(' ');\r\n const preparedSuffix: string = suffix || '';\r\n const cssPrefixesWithFirstEmpty = [''].concat(cssPrefixes);\r\n\r\n each(possbleValues, (possibleValue: string) => {\r\n each(cssPrefixesWithFirstEmpty, (prefix: string) => {\r\n const prop = prefix + possibleValue;\r\n dummyStyle.cssText = `${property}:${prop}${preparedSuffix}`;\r\n if (dummyStyle.length) {\r\n result = prop;\r\n return false;\r\n }\r\n });\r\n return !result;\r\n });\r\n\r\n // eslint-disable-next-line no-return-assign\r\n return (cssCache[name] = result || '');\r\n};\r\n\r\n/**\r\n * Get the requested JS function, object or constructor with vendor prefix if it isn't supported without or undefined if unsupported.\r\n * @param name The name of the JS function, object or constructor.\r\n */\r\nexport const jsAPI = (name: string): T | undefined => {\r\n let result: any = jsCache[name] || window[name];\r\n\r\n if (hasOwnProperty(jsCache, name)) {\r\n return result;\r\n }\r\n\r\n each(jsPrefixes, (prefix: string) => {\r\n result = result || window[prefix + firstLetterToUpper(name)];\r\n return !result;\r\n });\r\n\r\n jsCache[name] = result;\r\n return result;\r\n};\r\n","import { jsAPI } from 'support/compatibility/vendors';\r\n\r\nexport const MutationObserverConstructor = jsAPI('MutationObserver');\r\nexport const IntersectionObserverConstructor = jsAPI(\r\n 'IntersectionObserver'\r\n);\r\nexport const ResizeObserverConstructor = jsAPI('ResizeObserver');\r\nexport const cAF = jsAPI('cancelAnimationFrame');\r\nexport const rAF = jsAPI('requestAnimationFrame');\r\n","import { isString } from 'support/utils/types';\r\nimport { each } from 'support/utils/array';\r\nimport { keys } from 'support/utils/object';\r\n\r\nconst rnothtmlwhite = /[^\\x20\\t\\r\\n\\f]+/g;\r\nconst classListAction = (\r\n elm: Element | false | null | undefined,\r\n className: string,\r\n action: (elmClassList: DOMTokenList, clazz: string) => boolean | void\r\n): boolean => {\r\n let clazz: string;\r\n let i = 0;\r\n let result = false;\r\n\r\n if (elm && isString(className)) {\r\n const classes: Array = className.match(rnothtmlwhite) || [];\r\n result = classes.length > 0;\r\n while ((clazz = classes[i++])) {\r\n result = !!action(elm.classList, clazz) && result;\r\n }\r\n }\r\n return result;\r\n};\r\n\r\n/**\r\n * Check whether the given element has the given class name(s).\r\n * @param elm The element.\r\n * @param className The class name(s).\r\n */\r\nexport const hasClass = (elm: Element | false | null | undefined, className: string): boolean =>\r\n classListAction(elm, className, (classList, clazz) => classList.contains(clazz));\r\n\r\n/**\r\n * Adds the given class name(s) to the given element.\r\n * @param elm The element.\r\n * @param className The class name(s) which shall be added. (separated by spaces)\r\n */\r\nexport const addClass = (elm: Element | false | null | undefined, className: string): void => {\r\n classListAction(elm, className, (classList, clazz) => classList.add(clazz));\r\n};\r\n\r\n/**\r\n * Removes the given class name(s) from the given element.\r\n * @param elm The element.\r\n * @param className The class name(s) which shall be removed. (separated by spaces)\r\n */\r\nexport const removeClass = (elm: Element | false | null | undefined, className: string): void => {\r\n classListAction(elm, className, (classList, clazz) => classList.remove(clazz));\r\n};\r\n\r\n/**\r\n * Takes two className strings, compares them and returns the difference as array.\r\n * @param classNameA ClassName A.\r\n * @param classNameB ClassName B.\r\n */\r\nexport const diffClass = (\r\n classNameA: string | null | undefined,\r\n classNameB: string | null | undefined\r\n) => {\r\n const classNameASplit = classNameA && classNameA.split(' ');\r\n const classNameBSplit = classNameB && classNameB.split(' ');\r\n const tempObj = {};\r\n\r\n each(classNameASplit, (className) => {\r\n tempObj[className] = 1;\r\n });\r\n each(classNameBSplit, (className) => {\r\n if (tempObj[className]) {\r\n delete tempObj[className];\r\n } else {\r\n tempObj[className] = 1;\r\n }\r\n });\r\n\r\n return keys(tempObj);\r\n};\r\n","export interface WH {\r\n w: T;\r\n h: T;\r\n}\r\n\r\nconst elementHasDimensions = (elm: HTMLElement): boolean =>\r\n !!(elm.offsetWidth || elm.offsetHeight || elm.getClientRects().length);\r\nconst zeroObj: WH = {\r\n w: 0,\r\n h: 0,\r\n};\r\n\r\n/**\r\n * Returns the window inner- width and height.\r\n */\r\nexport const windowSize = (): WH => ({\r\n w: window.innerWidth,\r\n h: window.innerHeight,\r\n});\r\n\r\n/**\r\n * Returns the scroll- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the scroll- width and height shall be returned.\r\n */\r\nexport const offsetSize = (elm: HTMLElement | null | undefined): WH =>\r\n elm\r\n ? {\r\n w: elm.offsetWidth,\r\n h: elm.offsetHeight,\r\n }\r\n : zeroObj;\r\n\r\n/**\r\n * Returns the client- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the client- width and height shall be returned.\r\n */\r\nexport const clientSize = (elm: HTMLElement | null | undefined): WH =>\r\n elm\r\n ? {\r\n w: elm.clientWidth,\r\n h: elm.clientHeight,\r\n }\r\n : zeroObj;\r\n\r\n/**\r\n * Returns the client- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the client- width and height shall be returned.\r\n */\r\nexport const scrollSize = (elm: HTMLElement | null | undefined): WH =>\r\n elm\r\n ? {\r\n w: elm.scrollWidth,\r\n h: elm.scrollHeight,\r\n }\r\n : zeroObj;\r\n\r\n/**\r\n * Returns the BoundingClientRect of the passed element.\r\n * @param elm The element of which the BoundingClientRect shall be returned.\r\n */\r\nexport const getBoundingClientRect = (elm: HTMLElement): DOMRect => elm.getBoundingClientRect();\r\n\r\n/**\r\n * Determines whether the passed element has any dimensions.\r\n * @param elm The element.\r\n */\r\nexport const hasDimensions = (elm: HTMLElement | null | undefined): boolean =>\r\n elm ? elementHasDimensions(elm as HTMLElement) : false;\r\n","import { isUndefined } from 'support/utils/types';\r\nimport { each, push, runEach } from 'support/utils/array';\r\n\r\nlet passiveEventsSupport: boolean;\r\nconst supportPassiveEvents = (): boolean => {\r\n if (isUndefined(passiveEventsSupport)) {\r\n passiveEventsSupport = false;\r\n try {\r\n /* eslint-disable */\r\n // @ts-ignore\r\n window.addEventListener(\r\n 'test',\r\n null,\r\n Object.defineProperty({}, 'passive', {\r\n get: function () {\r\n passiveEventsSupport = true;\r\n },\r\n })\r\n );\r\n /* eslint-enable */\r\n } catch (e) {}\r\n }\r\n return passiveEventsSupport;\r\n};\r\nconst splitEventNames = (eventNames: string) => eventNames.split(' ');\r\n\r\nexport interface OnOptions {\r\n _capture?: boolean;\r\n _passive?: boolean;\r\n _once?: boolean;\r\n}\r\n\r\n/**\r\n * Removes the passed event listener for the passed events with the passed options.\r\n * @param target The element from which the listener shall be removed.\r\n * @param eventNames The eventsnames for which the listener shall be removed.\r\n * @param listener The listener which shall be removed.\r\n * @param capture The options of the removed listener.\r\n */\r\nexport const off = (\r\n target: EventTarget,\r\n eventNames: string,\r\n listener: (event: T) => any,\r\n capture?: boolean\r\n): void => {\r\n each(splitEventNames(eventNames), (eventName) => {\r\n target.removeEventListener(eventName, listener as EventListener, capture);\r\n });\r\n};\r\n\r\n/**\r\n * Adds the passed event listener for the passed eventnames with the passed options.\r\n * @param target The element to which the listener shall be added.\r\n * @param eventNames The eventsnames for which the listener shall be called.\r\n * @param listener The listener which is called on the eventnames.\r\n * @param options The options of the added listener.\r\n */\r\nexport const on = (\r\n target: EventTarget,\r\n eventNames: string,\r\n listener: (event: T) => any,\r\n options?: OnOptions\r\n): (() => void) => {\r\n const doSupportPassiveEvents = supportPassiveEvents();\r\n const passive = (doSupportPassiveEvents && options && options._passive) || false;\r\n const capture = (options && options._capture) || false;\r\n const once = (options && options._once) || false;\r\n const offListeners: (() => void)[] = [];\r\n const nativeOptions: AddEventListenerOptions | boolean = doSupportPassiveEvents\r\n ? {\r\n passive,\r\n capture,\r\n }\r\n : capture;\r\n\r\n each(splitEventNames(eventNames), (eventName) => {\r\n const finalListener = (once\r\n ? (evt: T) => {\r\n target.removeEventListener(eventName, finalListener, capture);\r\n listener && listener(evt);\r\n }\r\n : listener) as EventListener;\r\n\r\n push(offListeners, off.bind(null, target, eventName, finalListener, capture));\r\n target.addEventListener(eventName, finalListener, nativeOptions);\r\n });\r\n\r\n return runEach.bind(0, offListeners);\r\n};\r\n\r\n/**\r\n * Shorthand for the stopPropagation event Method.\r\n * @param evt The event of which the stopPropagation method shall be called.\r\n */\r\nexport const stopPropagation = (evt: Event): void => evt.stopPropagation();\r\n\r\n/**\r\n * Shorthand for the preventDefault event Method.\r\n * @param evt The event of which the preventDefault method shall be called.\r\n */\r\nexport const preventDefault = (evt: Event): void => evt.preventDefault();\r\n\r\n/**\r\n * Shorthand for the stopPropagation and preventDefault event Method.\r\n * @param evt The event of which the stopPropagation and preventDefault methods shall be called.\r\n */\r\nexport const stopAndPrevent = (evt: Event): void =>\r\n (stopPropagation(evt) as undefined) || (preventDefault(evt) as undefined);\r\n","import { each } from 'support/utils/array';\r\nimport { WH, XY, TRBL } from 'support/dom';\r\nimport { PlainObject } from 'typings';\r\n\r\n/**\r\n * Compares two objects and returns true if all values of the passed prop names are identical, false otherwise or if one of the two object is falsy.\r\n * @param a Object a.\r\n * @param b Object b.\r\n * @param props The props which shall be compared.\r\n */\r\nexport const equal = (\r\n a: T | undefined,\r\n b: T | undefined,\r\n props: Array,\r\n propMutation?: ((value: any) => any) | null | false\r\n): boolean => {\r\n if (a && b) {\r\n let result = true;\r\n each(props, (prop) => {\r\n const compareA = propMutation ? propMutation(a[prop]) : a[prop];\r\n const compareB = propMutation ? propMutation(b[prop]) : b[prop];\r\n if (compareA !== compareB) {\r\n result = false;\r\n }\r\n });\r\n return result;\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalWH = (a?: WH, b?: WH) => equal>(a, b, ['w', 'h']);\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalXY = (a?: XY, b?: XY) => equal>(a, b, ['x', 'y']);\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalTRBL = (a?: TRBL, b?: TRBL) => equal(a, b, ['t', 'r', 'b', 'l']);\r\n\r\n/**\r\n * Compares two DOM Rects for their equality of their width and height properties\r\n * Also returns false if one of the DOM Rects is undefined or null.\r\n * @param a DOM Rect a.\r\n * @param b DOM Rect b.\r\n * @param round Whether the values should be rounded.\r\n */\r\nexport const equalBCRWH = (a?: DOMRect, b?: DOMRect, round?: boolean) =>\r\n equal(a, b, ['width', 'height'], round && ((value) => Math.round(value)));\r\n","import { isNumber, isFunction } from 'support/utils/types';\r\nimport { from } from 'support/utils/array';\r\nimport { rAF, cAF } from 'support/compatibility/apis';\r\n\r\nconst clearTimeouts = (id: number | undefined) => {\r\n id && window.clearTimeout(id);\r\n id && cAF!(id);\r\n};\r\n\r\ntype DebounceTiming = number | false | null | undefined;\r\n\r\nexport interface DebounceOptions any> {\r\n /**\r\n * The timeout for debouncing. If null, no debounce is applied.\r\n */\r\n _timeout?: DebounceTiming | (() => DebounceTiming);\r\n /**\r\n * A maximum amount of ms. before the function will be called even with debounce.\r\n */\r\n _maxDelay?: DebounceTiming | (() => DebounceTiming);\r\n /**\r\n * Function which merges parameters for each canceled debounce.\r\n * If parameters can't be merged the function will return null, otherwise it returns the merged parameters.\r\n */\r\n _mergeParams?: (\r\n prev: Parameters,\r\n curr: Parameters\r\n ) => Parameters | false | null | undefined;\r\n}\r\n\r\nexport interface Debounced any> {\r\n (...args: Parameters): ReturnType;\r\n _flush(): void;\r\n}\r\n\r\nexport const noop = () => {}; // eslint-disable-line\r\n\r\n/**\r\n * Debounces the given function either with a timeout or a animation frame.\r\n * @param functionToDebounce The function which shall be debounced.\r\n * @param options Options for debouncing.\r\n */\r\nexport const debounce = any>(\r\n functionToDebounce: FunctionToDebounce,\r\n options?: DebounceOptions\r\n): Debounced => {\r\n let timeoutId: number | undefined;\r\n let maxTimeoutId: number | undefined;\r\n let prevArguments: Parameters | null | undefined;\r\n let latestArguments: Parameters | null | undefined;\r\n const { _timeout, _maxDelay, _mergeParams } = options || {};\r\n const setT = window.setTimeout;\r\n\r\n const invokeFunctionToDebounce = function (args: IArguments) {\r\n clearTimeouts(timeoutId);\r\n clearTimeouts(maxTimeoutId);\r\n maxTimeoutId = timeoutId = prevArguments = undefined;\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n functionToDebounce.apply(this, args);\r\n };\r\n\r\n const mergeParms = (\r\n curr: Parameters\r\n ): Parameters | false | null | undefined =>\r\n _mergeParams && prevArguments ? _mergeParams(prevArguments, curr) : curr;\r\n\r\n const flush = () => {\r\n /* istanbul ignore next */\r\n if (timeoutId) {\r\n invokeFunctionToDebounce(mergeParms(latestArguments!) || latestArguments!);\r\n }\r\n };\r\n\r\n const debouncedFn = function () {\r\n // eslint-disable-next-line prefer-rest-params\r\n const args: Parameters = from(arguments) as Parameters;\r\n const finalTimeout = isFunction(_timeout) ? _timeout() : _timeout;\r\n const hasTimeout = isNumber(finalTimeout) && finalTimeout >= 0;\r\n\r\n if (hasTimeout) {\r\n const finalMaxWait = isFunction(_maxDelay) ? _maxDelay() : _maxDelay;\r\n const hasMaxWait = isNumber(finalMaxWait) && finalMaxWait >= 0;\r\n const setTimeoutFn = finalTimeout > 0 ? setT : rAF!;\r\n const mergeParamsResult = mergeParms(args);\r\n const invokedArgs = mergeParamsResult || args;\r\n const boundInvoke = invokeFunctionToDebounce.bind(0, invokedArgs);\r\n\r\n // if (!mergeParamsResult) {\r\n // invokeFunctionToDebounce(prevArguments || args);\r\n // }\r\n\r\n clearTimeouts(timeoutId);\r\n // @ts-ignore\r\n timeoutId = setTimeoutFn(boundInvoke, finalTimeout as number) as number;\r\n\r\n if (hasMaxWait && !maxTimeoutId) {\r\n maxTimeoutId = setT(flush, finalMaxWait as number);\r\n }\r\n\r\n prevArguments = latestArguments = invokedArgs;\r\n } else {\r\n invokeFunctionToDebounce(args);\r\n }\r\n };\r\n debouncedFn._flush = flush;\r\n\r\n return debouncedFn as Debounced;\r\n};\r\n","import { each, keys } from 'support/utils';\r\nimport { isString, isNumber, isArray, isUndefined } from 'support/utils/types';\r\nimport { PlainObject, StyleObject } from 'typings';\r\n\r\nexport interface TRBL {\r\n t: number;\r\n r: number;\r\n b: number;\r\n l: number;\r\n}\r\n\r\nconst cssNumber = {\r\n // animationiterationcount: 1,\r\n // columncount: 1,\r\n // fillopacity: 1,\r\n // flexgrow: 1,\r\n // flexshrink: 1,\r\n // fontweight: 1,\r\n // lineheight: 1,\r\n // order: 1,\r\n // orphans: 1,\r\n // widows: 1,\r\n // zoom: 1,\r\n opacity: 1,\r\n zindex: 1,\r\n};\r\n\r\nconst parseToZeroOrNumber = (value: string, toFloat?: boolean): number => {\r\n /* istanbul ignore next */\r\n const num = toFloat ? parseFloat(value) : parseInt(value, 10);\r\n /* istanbul ignore next */\r\n return Number.isNaN(num) ? 0 : num;\r\n};\r\nconst adaptCSSVal = (prop: string, val: string | number): string | number =>\r\n !cssNumber[prop.toLowerCase()] && isNumber(val) ? `${val}px` : val;\r\nconst getCSSVal = (elm: HTMLElement, computedStyle: CSSStyleDeclaration, prop: string): string =>\r\n /* istanbul ignore next */\r\n computedStyle != null\r\n ? computedStyle[prop] || computedStyle.getPropertyValue(prop)\r\n : elm.style[prop];\r\nconst setCSSVal = (\r\n elm: HTMLElement | false | null | undefined,\r\n prop: string,\r\n val: string | number\r\n): void => {\r\n try {\r\n if (elm) {\r\n const { style: elmStyle } = elm;\r\n if (!isUndefined(elmStyle[prop])) {\r\n elmStyle[prop] = adaptCSSVal(prop, val);\r\n } else {\r\n elmStyle.setProperty(prop, val as string);\r\n }\r\n }\r\n } catch (e) {}\r\n};\r\n\r\n/**\r\n * Gets or sets the passed styles to the passed element.\r\n * @param elm The element to which the styles shall be applied to / be read from.\r\n * @param styles The styles which shall be set or read.\r\n */\r\nexport function style(\r\n elm: HTMLElement | false | null | undefined,\r\n styles: StyleObject\r\n): void;\r\nexport function style(\r\n elm: HTMLElement | false | null | undefined,\r\n styles: string\r\n): string;\r\nexport function style(\r\n elm: HTMLElement | false | null | undefined,\r\n styles: Array | string\r\n): { [key: string]: string };\r\nexport function style(\r\n elm: HTMLElement | false | null | undefined,\r\n styles: StyleObject | Array | string\r\n): { [key: string]: string } | string | void {\r\n const getSingleStyle = isString(styles);\r\n const getStyles = isArray(styles) || getSingleStyle;\r\n\r\n if (getStyles) {\r\n let getStylesResult: string | PlainObject = getSingleStyle ? '' : {};\r\n if (elm) {\r\n const computedStyle: CSSStyleDeclaration = window.getComputedStyle(elm, null);\r\n getStylesResult = getSingleStyle\r\n ? getCSSVal(elm, computedStyle, styles as string)\r\n : (styles as Array).reduce((result, key) => {\r\n result[key] = getCSSVal(elm, computedStyle, key as string);\r\n return result;\r\n }, getStylesResult);\r\n }\r\n return getStylesResult;\r\n }\r\n each(keys(styles), (key) => setCSSVal(elm, key, styles[key]));\r\n}\r\n\r\n/**\r\n * Hides the passed element (display: none).\r\n * @param elm The element which shall be hidden.\r\n */\r\nexport const hide = (elm: HTMLElement | false | null | undefined): void => {\r\n style(elm, { display: 'none' });\r\n};\r\n\r\n/**\r\n * Shows the passed element (display: block).\r\n * @param elm The element which shall be shown.\r\n */\r\nexport const show = (elm: HTMLElement | false | null | undefined): void => {\r\n style(elm, { display: 'block' });\r\n};\r\n\r\n/**\r\n * Returns the top right bottom left values of the passed css property.\r\n * @param elm The element of which the values shall be returned.\r\n * @param propertyPrefix The css property prefix. (e.g. \"border\")\r\n * @param propertySuffix The css property suffix. (e.g. \"width\")\r\n */\r\nexport const topRightBottomLeft = (\r\n elm?: HTMLElement | false | null | undefined,\r\n propertyPrefix?: string,\r\n propertySuffix?: string\r\n): TRBL => {\r\n const finalPrefix = propertyPrefix ? `${propertyPrefix}-` : '';\r\n const finalSuffix = propertySuffix ? `-${propertySuffix}` : '';\r\n const top = `${finalPrefix}top${finalSuffix}`;\r\n const right = `${finalPrefix}right${finalSuffix}`;\r\n const bottom = `${finalPrefix}bottom${finalSuffix}`;\r\n const left = `${finalPrefix}left${finalSuffix}`;\r\n const result = style(elm, [top, right, bottom, left]);\r\n return {\r\n t: parseToZeroOrNumber(result[top]),\r\n r: parseToZeroOrNumber(result[right]),\r\n b: parseToZeroOrNumber(result[bottom]),\r\n l: parseToZeroOrNumber(result[left]),\r\n };\r\n};\r\n","import { getBoundingClientRect } from 'support/dom/dimensions';\r\n\r\nexport interface XY {\r\n x: T;\r\n y: T;\r\n}\r\n\r\nconst zeroObj: XY = {\r\n x: 0,\r\n y: 0,\r\n};\r\n\r\n/**\r\n * Returns the offset- left and top coordinates of the passed element relative to the document. If the element is null the top and left values are 0.\r\n * @param elm The element of which the offset- top and left coordinates shall be returned.\r\n */\r\nexport const absoluteCoordinates = (elm: HTMLElement | null | undefined): XY => {\r\n const rect = elm ? getBoundingClientRect(elm) : 0;\r\n return rect\r\n ? {\r\n x: rect.left + window.pageYOffset,\r\n y: rect.top + window.pageXOffset,\r\n }\r\n : zeroObj;\r\n};\r\n\r\n/**\r\n * Returns the offset- left and top coordinates of the passed element. If the element is null the top and left values are 0.\r\n * @param elm The element of which the offset- top and left coordinates shall be returned.\r\n */\r\nexport const offsetCoordinates = (elm: HTMLElement | null | undefined): XY =>\r\n elm\r\n ? {\r\n x: elm.offsetLeft,\r\n y: elm.offsetTop,\r\n }\r\n : zeroObj;\r\n","export const classNameEnvironment = 'os-environment';\r\nexport const classNameEnvironmentFlexboxGlue = `${classNameEnvironment}-flexbox-glue`;\r\nexport const classNameEnvironmentFlexboxGlueMax = `${classNameEnvironmentFlexboxGlue}-max`;\r\n\r\nexport const classNameHost = 'os-host';\r\nexport const classNamePadding = 'os-padding';\r\nexport const classNameViewport = 'os-viewport';\r\nexport const classNameViewportArrange = `${classNameViewport}-arrange`;\r\nexport const classNameContent = 'os-content';\r\nexport const classNameViewportScrollbarStyling = `${classNameViewport}-scrollbar-styled`;\r\n\r\nexport const classNameSizeObserver = 'os-size-observer';\r\nexport const classNameSizeObserverAppear = `${classNameSizeObserver}-appear`;\r\nexport const classNameSizeObserverListener = `${classNameSizeObserver}-listener`;\r\nexport const classNameSizeObserverListenerScroll = `${classNameSizeObserverListener}-scroll`;\r\nexport const classNameSizeObserverListenerItem = `${classNameSizeObserverListener}-item`;\r\nexport const classNameSizeObserverListenerItemFinal = `${classNameSizeObserverListenerItem}-final`;\r\n\r\nexport const classNameTrinsicObserver = 'os-trinsic-observer';\r\n\r\nexport const classNameScrollbar = 'os-scrollbar';\r\nexport const classNameScrollbarHorizontal = `${classNameScrollbar}-horizontal`;\r\nexport const classNameScrollbarVertical = `${classNameScrollbar}-vertical`;\r\nexport const classNameScrollbarTrack = 'os-scrollbar-track';\r\nexport const classNameScrollbarHandle = 'os-scrollbar-handle';\r\n","function _extends() {\n module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import { assignDeep, each, isObject, keys, isArray, hasOwnProperty, isFunction } from 'support';\r\nimport { PartialOptions } from 'typings';\r\n\r\nconst stringify = (value: any) =>\r\n JSON.stringify(value, (_, val) => {\r\n if (isFunction(val)) {\r\n throw new Error();\r\n }\r\n return val;\r\n });\r\n\r\nexport type ResizeBehavior = 'none' | 'both' | 'horizontal' | 'vertical';\r\n\r\nexport type OverflowBehavior = 'hidden' | 'scroll' | 'visible' | 'visible-hidden';\r\n\r\nexport type VisibilityBehavior = 'visible' | 'hidden' | 'auto';\r\n\r\nexport type AutoHideBehavior = 'never' | 'scroll' | 'leave' | 'move';\r\n\r\nexport type ScrollBehavior = 'always' | 'ifneeded' | 'never';\r\n\r\nexport type BasicEventCallback = (this: any) => void;\r\n\r\nexport type ScrollEventCallback = (this: any, args?: UIEvent) => void;\r\n\r\nexport type OverflowChangedCallback = (this: any, args?: OverflowChangedArgs) => void;\r\n\r\nexport type OverflowAmountChangedCallback = (this: any, args?: OverflowAmountChangedArgs) => void;\r\n\r\nexport type DirectionChangedCallback = (this: any, args?: DirectionChangedArgs) => void;\r\n\r\nexport type SizeChangedCallback = (this: any, args?: SizeChangedArgs) => void;\r\n\r\nexport type UpdatedCallback = (this: any, args?: UpdatedArgs) => void;\r\n\r\nexport interface OSOptions {\r\n resize: ResizeBehavior;\r\n paddingAbsolute: boolean;\r\n updating: {\r\n elementEvents: Array<[string, string]> | null;\r\n attributes: string[] | null;\r\n debounce: number | [number, number] | null;\r\n };\r\n overflow: {\r\n x: OverflowBehavior;\r\n y: OverflowBehavior;\r\n };\r\n scrollbars: {\r\n visibility: VisibilityBehavior;\r\n autoHide: AutoHideBehavior;\r\n autoHideDelay: number;\r\n dragScroll: boolean;\r\n clickScroll: boolean;\r\n touch: boolean;\r\n };\r\n textarea: {\r\n dynWidth: boolean;\r\n dynHeight: boolean;\r\n inheritedAttrs: string | Array | null;\r\n };\r\n nativeScrollbarsOverlaid: {\r\n show: boolean;\r\n initialize: boolean;\r\n };\r\n callbacks: {\r\n onUpdated: (() => any) | null;\r\n };\r\n /*\r\n callbacks?: {\r\n onInitialized?: BasicEventCallback | null;\r\n onInitializationWithdrawn?: BasicEventCallback | null;\r\n onDestroyed?: BasicEventCallback | null;\r\n onScrollStart?: ScrollEventCallback | null;\r\n onScroll?: ScrollEventCallback | null;\r\n onScrollStop?: ScrollEventCallback | null;\r\n onOverflowChanged?: OverflowChangedCallback | null;\r\n onOverflowAmountChanged?: OverflowAmountChangedCallback | null;\r\n onDirectionChanged?: DirectionChangedCallback | null;\r\n onContentSizeChanged?: SizeChangedCallback | null;\r\n onHostSizeChanged?: SizeChangedCallback | null;\r\n onUpdated?: UpdatedCallback | null;\r\n };\r\n */\r\n}\r\n\r\nexport interface OverflowChangedArgs {\r\n x: boolean;\r\n y: boolean;\r\n xScrollable: boolean;\r\n yScrollable: boolean;\r\n clipped: boolean;\r\n}\r\n\r\nexport interface OverflowAmountChangedArgs {\r\n x: number;\r\n y: number;\r\n}\r\n\r\nexport interface DirectionChangedArgs {\r\n isRTL: number;\r\n dir: string;\r\n}\r\n\r\nexport interface SizeChangedArgs {\r\n width: number;\r\n height: number;\r\n}\r\n\r\nexport interface UpdatedArgs {\r\n forced: boolean;\r\n}\r\n\r\nexport const defaultOptions: OSOptions = {\r\n resize: 'none', // none || both || horizontal || vertical || n || b || h || v\r\n paddingAbsolute: false, // true || false\r\n updating: {\r\n elementEvents: [['img', 'load']], // array of tuples || null\r\n attributes: null,\r\n debounce: [0, 33], // number || number array || null\r\n },\r\n overflow: {\r\n x: 'scroll', // visible-hidden || visible-scroll || hidden || scroll || v-h || v-s || h || s\r\n y: 'scroll', // visible-hidden || visible-scroll || hidden || scroll || v-h || v-s || h || s\r\n },\r\n scrollbars: {\r\n visibility: 'auto', // visible || hidden || auto || v || h || a\r\n autoHide: 'never', // never || scroll || leave || move || n || s || l || m\r\n autoHideDelay: 800, // number\r\n dragScroll: true, // true || false\r\n clickScroll: false, // true || false\r\n touch: true, // true || false\r\n },\r\n textarea: {\r\n dynWidth: false, // true || false\r\n dynHeight: false, // true || false\r\n inheritedAttrs: ['style', 'class'], // string || array || null\r\n },\r\n nativeScrollbarsOverlaid: {\r\n show: false, // true || false\r\n initialize: false, // true || false\r\n },\r\n callbacks: {\r\n onUpdated: null,\r\n },\r\n};\r\n\r\nexport const getOptionsDiff = (\r\n currOptions: T,\r\n newOptions: PartialOptions\r\n): PartialOptions => {\r\n const diff: PartialOptions = {};\r\n const optionsKeys = keys(newOptions).concat(keys(currOptions));\r\n\r\n each(optionsKeys, (optionKey) => {\r\n const currOptionValue = currOptions[optionKey];\r\n const newOptionValue = newOptions[optionKey];\r\n\r\n if (isObject(currOptionValue) && isObject(newOptionValue)) {\r\n assignDeep((diff[optionKey] = {}), getOptionsDiff(currOptionValue, newOptionValue));\r\n } else if (hasOwnProperty(newOptions, optionKey) && newOptionValue !== currOptionValue) {\r\n let isDiff = true;\r\n\r\n if (isArray(currOptionValue) || isArray(newOptionValue)) {\r\n try {\r\n if (stringify(currOptionValue) === stringify(newOptionValue)) {\r\n isDiff = false;\r\n }\r\n } catch {}\r\n }\r\n\r\n if (isDiff) {\r\n diff[optionKey] = newOptionValue;\r\n }\r\n }\r\n });\r\n\r\n return diff;\r\n};\r\n","import {\r\n createDOM,\r\n addClass,\r\n style,\r\n appendChildren,\r\n clientSize,\r\n absoluteCoordinates,\r\n offsetSize,\r\n scrollLeft,\r\n XY,\r\n removeAttr,\r\n removeElements,\r\n windowSize,\r\n runEach,\r\n equalBCRWH,\r\n getBoundingClientRect,\r\n assignDeep,\r\n cssProperty,\r\n} from 'support';\r\nimport {\r\n classNameEnvironment,\r\n classNameEnvironmentFlexboxGlue,\r\n classNameEnvironmentFlexboxGlueMax,\r\n classNameViewportScrollbarStyling,\r\n} from 'classnames';\r\nimport { OSOptions, defaultOptions } from 'options';\r\nimport { OSTargetElement, PartialOptions } from 'typings';\r\n\r\ntype StructureInitializationElementFn = ((target: OSTargetElement) => HTMLElement | T) | T;\r\n\r\ntype ScrollbarsInitializationElementFn =\r\n | ((target: OSTargetElement, host: HTMLElement, viewport: HTMLElement) => HTMLElement | T)\r\n | T;\r\n\r\n/**\r\n * A Static element is an element which MUST be generated.\r\n * If null (or the returned result is null), the initialization function is generatig the element, otherwise\r\n * the element returned by the function acts as the generated element.\r\n */\r\nexport type StructureInitializationStaticElement = StructureInitializationElementFn;\r\n\r\n/**\r\n * A Dynamic element is an element which CAN be generated.\r\n * If null (or the returned result is null), then the default behavior is used.\r\n * If boolean (or the returned result is boolean), the generation of the element is forced (or not).\r\n * If the function returns and element, the element returned by the function acts as the generated element.\r\n */\r\nexport type StructureInitializationDynamicElement = StructureInitializationElementFn<\r\n boolean | null\r\n>;\r\n\r\nexport interface StructureInitializationStrategy {\r\n _host: StructureInitializationStaticElement;\r\n _viewport: StructureInitializationStaticElement;\r\n _padding: StructureInitializationDynamicElement;\r\n _content: StructureInitializationDynamicElement;\r\n}\r\n\r\nexport interface ScrollbarsInitializationStrategy {\r\n _scrollbarsSlot: ScrollbarsInitializationElementFn;\r\n}\r\n\r\nexport interface InitializationStrategy\r\n extends StructureInitializationStrategy,\r\n ScrollbarsInitializationStrategy {}\r\n\r\nexport type OnEnvironmentChanged = (env: Environment) => void;\r\nexport interface Environment {\r\n _nativeScrollbarSize: XY;\r\n _nativeScrollbarIsOverlaid: XY;\r\n _nativeScrollbarStyling: boolean;\r\n _rtlScrollBehavior: { n: boolean; i: boolean };\r\n _flexboxGlue: boolean;\r\n _cssCustomProperties: boolean;\r\n _addListener(listener: OnEnvironmentChanged): void;\r\n _removeListener(listener: OnEnvironmentChanged): void;\r\n _getInitializationStrategy(): InitializationStrategy;\r\n _setInitializationStrategy(newInitializationStrategy: Partial): void;\r\n _getDefaultOptions(): OSOptions;\r\n _setDefaultOptions(newDefaultOptions: PartialOptions): void;\r\n _defaultInitializationStrategy: InitializationStrategy;\r\n _defaultDefaultOptions: OSOptions;\r\n}\r\n\r\nlet environmentInstance: Environment;\r\nconst { abs, round } = Math;\r\n\r\nconst diffBiggerThanOne = (valOne: number, valTwo: number): boolean => {\r\n const absValOne = abs(valOne);\r\n const absValTwo = abs(valTwo);\r\n return !(absValOne === absValTwo || absValOne + 1 === absValTwo || absValOne - 1 === absValTwo);\r\n};\r\n\r\nconst getNativeScrollbarSize = (body: HTMLElement, measureElm: HTMLElement): XY => {\r\n appendChildren(body, measureElm);\r\n const cSize = clientSize(measureElm);\r\n const oSize = offsetSize(measureElm);\r\n\r\n return {\r\n x: oSize.h - cSize.h,\r\n y: oSize.w - cSize.w,\r\n };\r\n};\r\n\r\nconst getNativeScrollbarStyling = (testElm: HTMLElement): boolean => {\r\n let result = false;\r\n addClass(testElm, classNameViewportScrollbarStyling);\r\n try {\r\n result =\r\n style(testElm, cssProperty('scrollbar-width')) === 'none' ||\r\n window.getComputedStyle(testElm, '::-webkit-scrollbar').getPropertyValue('display') ===\r\n 'none';\r\n } catch (ex) {}\r\n\r\n return result;\r\n};\r\n\r\nconst getRtlScrollBehavior = (\r\n parentElm: HTMLElement,\r\n childElm: HTMLElement\r\n): { i: boolean; n: boolean } => {\r\n const strHidden = 'hidden';\r\n style(parentElm, { overflowX: strHidden, overflowY: strHidden, direction: 'rtl' });\r\n scrollLeft(parentElm, 0);\r\n\r\n const parentOffset = absoluteCoordinates(parentElm);\r\n const childOffset = absoluteCoordinates(childElm);\r\n scrollLeft(parentElm, -999); // https://github.com/KingSora/OverlayScrollbars/issues/187\r\n const childOffsetAfterScroll = absoluteCoordinates(childElm);\r\n return {\r\n /**\r\n * origin direction = determines if the zero scroll position is on the left or right side\r\n * 'i' means 'invert' (i === true means that the axis must be inverted to be correct)\r\n * true = on the left side\r\n * false = on the right side\r\n */\r\n i: parentOffset.x === childOffset.x,\r\n /**\r\n * negative = determines if the maximum scroll is positive or negative\r\n * 'n' means 'negate' (n === true means that the axis must be negated to be correct)\r\n * true = negative\r\n * false = positive\r\n */\r\n n: childOffset.x !== childOffsetAfterScroll.x,\r\n };\r\n};\r\n\r\nconst getFlexboxGlue = (parentElm: HTMLElement, childElm: HTMLElement): boolean => {\r\n addClass(parentElm, classNameEnvironmentFlexboxGlue);\r\n const minOffsetsizeParent = getBoundingClientRect(parentElm);\r\n const minOffsetsize = getBoundingClientRect(childElm);\r\n const supportsMin = equalBCRWH(minOffsetsize, minOffsetsizeParent, true);\r\n\r\n addClass(parentElm, classNameEnvironmentFlexboxGlueMax);\r\n const maxOffsetsizeParent = getBoundingClientRect(parentElm);\r\n const maxOffsetsize = getBoundingClientRect(childElm);\r\n const supportsMax = equalBCRWH(maxOffsetsize, maxOffsetsizeParent, true);\r\n\r\n return supportsMin && supportsMax;\r\n};\r\n\r\nconst getWindowDPR = (): number => {\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n const dDPI = window.screen.deviceXDPI || 0;\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n const sDPI = window.screen.logicalXDPI || 1;\r\n return window.devicePixelRatio || dDPI / sDPI;\r\n};\r\n\r\n// init function decides for all values\r\nconst getDefaultInitializationStrategy = (\r\n nativeScrollbarStyling: boolean\r\n): InitializationStrategy => ({\r\n _host: null,\r\n _viewport: null,\r\n _padding: null,\r\n _content: null,\r\n _scrollbarsSlot: null,\r\n});\r\n\r\nconst createEnvironment = (): Environment => {\r\n const { body } = document;\r\n const envDOM = createDOM(`
`);\r\n const envElm = envDOM[0] as HTMLElement;\r\n const envChildElm = envElm.firstChild as HTMLElement;\r\n const onChangedListener: Set = new Set();\r\n const nativeScrollbarSize = getNativeScrollbarSize(body, envElm);\r\n const nativeScrollbarStyling = getNativeScrollbarStyling(envElm);\r\n const nativeScrollbarIsOverlaid = {\r\n x: nativeScrollbarSize.x === 0,\r\n y: nativeScrollbarSize.y === 0,\r\n };\r\n const defaultInitializationStrategy = getDefaultInitializationStrategy(nativeScrollbarStyling);\r\n let initializationStrategy = defaultInitializationStrategy;\r\n let defaultDefaultOptions = defaultOptions;\r\n\r\n const env: Environment = {\r\n _nativeScrollbarSize: nativeScrollbarSize,\r\n _nativeScrollbarIsOverlaid: nativeScrollbarIsOverlaid,\r\n _nativeScrollbarStyling: nativeScrollbarStyling,\r\n _cssCustomProperties: style(envElm, 'zIndex') === '-1',\r\n _rtlScrollBehavior: getRtlScrollBehavior(envElm, envChildElm),\r\n _flexboxGlue: getFlexboxGlue(envElm, envChildElm),\r\n _addListener(listener: OnEnvironmentChanged): void {\r\n onChangedListener.add(listener);\r\n },\r\n _removeListener(listener: OnEnvironmentChanged): void {\r\n onChangedListener.delete(listener);\r\n },\r\n _getInitializationStrategy: () => ({ ...initializationStrategy }),\r\n _setInitializationStrategy(newInitializationStrategy) {\r\n initializationStrategy = assignDeep({}, initializationStrategy, newInitializationStrategy);\r\n },\r\n _getDefaultOptions: () => ({ ...defaultDefaultOptions }),\r\n _setDefaultOptions(newDefaultOptions) {\r\n defaultDefaultOptions = assignDeep({}, defaultDefaultOptions, newDefaultOptions);\r\n },\r\n _defaultInitializationStrategy: defaultInitializationStrategy,\r\n _defaultDefaultOptions: defaultDefaultOptions,\r\n };\r\n\r\n removeAttr(envElm, 'style');\r\n removeElements(envElm);\r\n\r\n if (!nativeScrollbarStyling && (!nativeScrollbarIsOverlaid.x || !nativeScrollbarIsOverlaid.y)) {\r\n let size = windowSize();\r\n let dpr = getWindowDPR();\r\n let scrollbarSize = nativeScrollbarSize;\r\n\r\n window.addEventListener('resize', () => {\r\n if (onChangedListener.size) {\r\n const sizeNew = windowSize();\r\n const deltaSize = {\r\n w: sizeNew.w - size.w,\r\n h: sizeNew.h - size.h,\r\n };\r\n\r\n if (deltaSize.w === 0 && deltaSize.h === 0) return;\r\n\r\n const deltaAbsSize = {\r\n w: abs(deltaSize.w),\r\n h: abs(deltaSize.h),\r\n };\r\n const deltaAbsRatio = {\r\n w: abs(round(sizeNew.w / (size.w / 100.0))),\r\n h: abs(round(sizeNew.h / (size.h / 100.0))),\r\n };\r\n const dprNew = getWindowDPR();\r\n const deltaIsBigger = deltaAbsSize.w > 2 && deltaAbsSize.h > 2;\r\n const difference = !diffBiggerThanOne(deltaAbsRatio.w, deltaAbsRatio.h);\r\n const dprChanged = dprNew !== dpr && dpr > 0;\r\n const isZoom = deltaIsBigger && difference && dprChanged;\r\n\r\n if (isZoom) {\r\n const newScrollbarSize = (environmentInstance._nativeScrollbarSize =\r\n getNativeScrollbarSize(body, envElm));\r\n removeElements(envElm);\r\n\r\n if (scrollbarSize.x !== newScrollbarSize.x || scrollbarSize.y !== newScrollbarSize.y) {\r\n runEach(onChangedListener);\r\n }\r\n\r\n scrollbarSize = newScrollbarSize;\r\n }\r\n\r\n size = sizeNew;\r\n dpr = dprNew;\r\n }\r\n });\r\n }\r\n\r\n return env;\r\n};\r\n\r\nexport const getEnvironment = (): Environment => {\r\n if (!environmentInstance) {\r\n environmentInstance = createEnvironment();\r\n }\r\n return environmentInstance;\r\n};\r\n","import {\r\n isHTMLElement,\r\n appendChildren,\r\n is,\r\n createDiv,\r\n contents,\r\n insertAfter,\r\n addClass,\r\n parent,\r\n indexOf,\r\n removeElements,\r\n removeClass,\r\n push,\r\n runEach,\r\n insertBefore,\r\n attr,\r\n isBoolean,\r\n isFunction,\r\n keys,\r\n} from 'support';\r\nimport {\r\n classNameHost,\r\n classNamePadding,\r\n classNameViewport,\r\n classNameViewportArrange,\r\n classNameContent,\r\n classNameViewportScrollbarStyling,\r\n} from 'classnames';\r\nimport {\r\n getEnvironment,\r\n StructureInitializationStaticElement,\r\n StructureInitializationDynamicElement,\r\n StructureInitializationStrategy,\r\n} from 'environment';\r\nimport { OSTarget, OSTargetElement, StructureInitialization } from 'typings';\r\n\r\nexport interface OSTargetContext {\r\n _isTextarea: boolean;\r\n _isBody: boolean;\r\n _htmlElm: HTMLHtmlElement;\r\n _bodyElm: HTMLBodyElement;\r\n _windowElm: Window;\r\n _documentElm: HTMLDocument;\r\n _targetIsElm: boolean;\r\n}\r\n\r\nexport interface PreparedOSTargetObject {\r\n _target: OSTargetElement;\r\n _host: HTMLElement;\r\n _viewport: HTMLElement;\r\n _padding: HTMLElement | false;\r\n _content: HTMLElement | false;\r\n _viewportArrange: HTMLStyleElement | false;\r\n}\r\n\r\nexport interface StructureSetup {\r\n _targetObj: PreparedOSTargetObject;\r\n _targetCtx: OSTargetContext;\r\n _destroy: () => void;\r\n}\r\n\r\nlet contentArrangeCounter = 0;\r\n\r\nconst unwrap = (elm: HTMLElement | false | null | undefined) => {\r\n appendChildren(parent(elm), contents(elm));\r\n removeElements(elm);\r\n};\r\n\r\nconst createUniqueViewportArrangeElement = (): HTMLStyleElement | false => {\r\n const { _nativeScrollbarStyling, _nativeScrollbarIsOverlaid, _cssCustomProperties } =\r\n getEnvironment();\r\n /* istanbul ignore next */\r\n const create =\r\n !_cssCustomProperties &&\r\n !_nativeScrollbarStyling &&\r\n (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);\r\n const result = create ? document.createElement('style') : false;\r\n\r\n if (result) {\r\n attr(result, 'id', `${classNameViewportArrange}-${contentArrangeCounter}`);\r\n contentArrangeCounter++;\r\n }\r\n\r\n return result;\r\n};\r\n\r\nconst staticCreationFromStrategy = (\r\n target: OSTargetElement,\r\n initializationValue: HTMLElement | undefined,\r\n strategy: StructureInitializationStaticElement,\r\n elementClass: string\r\n): HTMLElement => {\r\n const result =\r\n initializationValue || (isFunction(strategy) ? strategy(target) : (strategy as null));\r\n return result || createDiv(elementClass);\r\n};\r\n\r\nconst dynamicCreationFromStrategy = (\r\n target: OSTargetElement,\r\n initializationValue: HTMLElement | boolean | undefined,\r\n strategy: StructureInitializationDynamicElement,\r\n elementClass: string,\r\n defaultValue: boolean\r\n): HTMLElement | false => {\r\n const takeInitializationValue = isBoolean(initializationValue) || initializationValue;\r\n const result = takeInitializationValue\r\n ? (initializationValue as boolean | HTMLElement)\r\n : isFunction(strategy)\r\n ? strategy(target)\r\n : strategy;\r\n\r\n if (result === null) {\r\n return defaultValue ? createDiv(elementClass) : false;\r\n }\r\n\r\n return result === true ? createDiv(elementClass) : result;\r\n};\r\n\r\nexport const createStructureSetup = (\r\n target: OSTarget | StructureInitialization\r\n): StructureSetup => {\r\n const { _getInitializationStrategy, _nativeScrollbarStyling } = getEnvironment();\r\n const {\r\n _host: hostInitializationStrategy,\r\n _viewport: viewportInitializationStrategy,\r\n _padding: paddingInitializationStrategy,\r\n _content: contentInitializationStrategy,\r\n } = _getInitializationStrategy() as StructureInitializationStrategy;\r\n const targetIsElm = isHTMLElement(target);\r\n const targetStructureInitialization = target as StructureInitialization;\r\n const targetElement = targetIsElm\r\n ? (target as OSTargetElement)\r\n : targetStructureInitialization.target;\r\n const isTextarea = is(targetElement, 'textarea');\r\n const isBody = !isTextarea && is(targetElement, 'body');\r\n const ownerDocument: HTMLDocument = targetElement!.ownerDocument;\r\n const bodyElm = ownerDocument.body as HTMLBodyElement;\r\n const wnd = ownerDocument.defaultView as Window;\r\n const evaluatedTargetObj: PreparedOSTargetObject = {\r\n _target: targetElement,\r\n _host: isTextarea\r\n ? staticCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.host,\r\n hostInitializationStrategy,\r\n classNameHost\r\n )\r\n : (targetElement as HTMLElement),\r\n _viewport: staticCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.viewport,\r\n viewportInitializationStrategy,\r\n classNameViewport\r\n ),\r\n _padding: dynamicCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.padding,\r\n paddingInitializationStrategy,\r\n classNamePadding,\r\n !_nativeScrollbarStyling // default value for padding\r\n ),\r\n _content: dynamicCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.content,\r\n contentInitializationStrategy,\r\n classNameContent,\r\n false // default value for content\r\n ),\r\n _viewportArrange: createUniqueViewportArrangeElement(),\r\n };\r\n const ctx: OSTargetContext = {\r\n _windowElm: wnd,\r\n _documentElm: ownerDocument,\r\n _htmlElm: parent(bodyElm) as HTMLHtmlElement,\r\n _bodyElm: bodyElm,\r\n _isTextarea: isTextarea,\r\n _isBody: isBody,\r\n _targetIsElm: targetIsElm,\r\n };\r\n const generatedElements = keys(evaluatedTargetObj).reduce((arr, key: string) => {\r\n const value = evaluatedTargetObj[key];\r\n return push(arr, value && !parent(value) ? value : false);\r\n }, [] as HTMLElement[]);\r\n const elementIsGenerated = (elm: HTMLElement | false) =>\r\n elm ? indexOf(generatedElements, elm) > -1 : null;\r\n const { _target, _host, _padding, _viewport, _content, _viewportArrange } = evaluatedTargetObj;\r\n const destroyFns: (() => any)[] = [];\r\n const isTextareaHostGenerated = isTextarea && elementIsGenerated(_host);\r\n const targetContents = isTextarea\r\n ? _target\r\n : contents(\r\n [_content, _viewport, _padding, _host, _target].find(\r\n (elm) => elementIsGenerated(elm) === false\r\n )\r\n );\r\n const contentSlot = _content || _viewport;\r\n\r\n // only insert host for textarea after target if it was generated\r\n if (isTextareaHostGenerated) {\r\n insertAfter(_target, _host);\r\n\r\n push(destroyFns, () => {\r\n insertAfter(_host, _target);\r\n removeElements(_host);\r\n });\r\n }\r\n\r\n appendChildren(contentSlot, targetContents);\r\n appendChildren(_host, _padding);\r\n appendChildren(_padding || _host, _viewport);\r\n appendChildren(_viewport, _content);\r\n\r\n addClass(_host, classNameHost);\r\n addClass(_padding, classNamePadding);\r\n addClass(_viewport, classNameViewport);\r\n addClass(_content, classNameContent);\r\n\r\n push(destroyFns, () => {\r\n if (targetIsElm) {\r\n appendChildren(_host, contents(contentSlot));\r\n removeElements(_padding || _viewport);\r\n removeClass(_host, classNameHost);\r\n } else {\r\n if (elementIsGenerated(_content)) {\r\n unwrap(_content);\r\n }\r\n if (elementIsGenerated(_viewport)) {\r\n unwrap(_viewport);\r\n }\r\n if (elementIsGenerated(_padding)) {\r\n unwrap(_padding);\r\n }\r\n removeClass(_host, classNameHost);\r\n removeClass(_padding, classNamePadding);\r\n removeClass(_viewport, classNameViewport);\r\n removeClass(_content, classNameContent);\r\n }\r\n });\r\n\r\n if (_nativeScrollbarStyling) {\r\n push(destroyFns, removeClass.bind(0, _viewport, classNameViewportScrollbarStyling));\r\n }\r\n if (_viewportArrange) {\r\n insertBefore(_viewport, _viewportArrange);\r\n push(destroyFns, removeElements.bind(0, _viewportArrange));\r\n }\r\n\r\n return {\r\n _targetObj: evaluatedTargetObj,\r\n _targetCtx: ctx,\r\n _destroy: () => {\r\n runEach(destroyFns);\r\n },\r\n };\r\n};\r\n","import { appendChildren, createDiv, removeElements, isFunction } from 'support';\r\nimport {\r\n classNameScrollbar,\r\n classNameScrollbarHorizontal,\r\n classNameScrollbarVertical,\r\n classNameScrollbarTrack,\r\n classNameScrollbarHandle,\r\n} from 'classnames';\r\nimport { getEnvironment, ScrollbarsInitializationStrategy } from 'environment';\r\nimport { OSTarget, ScrollbarsInitialization } from 'typings';\r\nimport { StructureSetup } from 'setups/structureSetup';\r\n\r\nexport interface ScrollbarStructure {\r\n _scrollbar: HTMLElement;\r\n _track: HTMLElement;\r\n _handle: HTMLElement;\r\n}\r\n\r\nexport interface ScrollbarsSetup {\r\n _horizontalScrollbarStructure: ScrollbarStructure;\r\n _verticalScrollbarStructure: ScrollbarStructure;\r\n _destroy: () => void;\r\n}\r\n\r\nconst generateScrollbarDOM = (scrollbarClassName: string): ScrollbarStructure => {\r\n const scrollbar = createDiv(`${classNameScrollbar} ${scrollbarClassName}`);\r\n const track = createDiv(classNameScrollbarTrack);\r\n const handle = createDiv(classNameScrollbarHandle);\r\n\r\n appendChildren(scrollbar, track);\r\n appendChildren(track, handle);\r\n\r\n return {\r\n _scrollbar: scrollbar,\r\n _track: track,\r\n _handle: handle,\r\n };\r\n};\r\n\r\nexport const createScrollbarsSetup = (target: OSTarget | ScrollbarsInitialization, structureSetup: StructureSetup): ScrollbarsSetup => {\r\n const { _getInitializationStrategy } = getEnvironment();\r\n const { _scrollbarsSlot: environmentScrollbarSlot } = _getInitializationStrategy() as ScrollbarsInitializationStrategy;\r\n const { _targetObj, _targetCtx } = structureSetup;\r\n const { _target, _host, _viewport } = _targetObj;\r\n const initializationScrollbarSlot = !_targetCtx._targetIsElm && (target as ScrollbarsInitialization).scrollbarsSlot;\r\n const initializationScrollbarSlotResult = isFunction(initializationScrollbarSlot)\r\n ? initializationScrollbarSlot(_target, _host, _viewport)\r\n : initializationScrollbarSlot;\r\n const evaluatedScrollbarSlot =\r\n initializationScrollbarSlotResult ||\r\n (isFunction(environmentScrollbarSlot) ? environmentScrollbarSlot(_target, _host, _viewport) : environmentScrollbarSlot) ||\r\n _host;\r\n\r\n const horizontalScrollbarStructure = generateScrollbarDOM(classNameScrollbarHorizontal);\r\n const verticalScrollbarStructure = generateScrollbarDOM(classNameScrollbarVertical);\r\n\r\n const { _scrollbar: horizontalScrollbar } = horizontalScrollbarStructure;\r\n const { _scrollbar: verticalScrollbar } = verticalScrollbarStructure;\r\n\r\n appendChildren(evaluatedScrollbarSlot, horizontalScrollbar);\r\n appendChildren(evaluatedScrollbarSlot, verticalScrollbar);\r\n\r\n return {\r\n _horizontalScrollbarStructure: horizontalScrollbarStructure,\r\n _verticalScrollbarStructure: verticalScrollbarStructure,\r\n _destroy() {\r\n removeElements([horizontalScrollbar, verticalScrollbar]);\r\n },\r\n };\r\n};\r\n","import {\r\n Cache,\r\n CacheValues,\r\n createCache,\r\n createDOM,\r\n style,\r\n appendChildren,\r\n offsetSize,\r\n scrollLeft,\r\n scrollTop,\r\n runEach,\r\n prependChildren,\r\n removeElements,\r\n on,\r\n stopAndPrevent,\r\n addClass,\r\n equalWH,\r\n push,\r\n cAF,\r\n rAF,\r\n ResizeObserverConstructor,\r\n isArray,\r\n isBoolean,\r\n removeClass,\r\n isObject,\r\n} from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport {\r\n classNameSizeObserver,\r\n classNameSizeObserverAppear,\r\n classNameSizeObserverListener,\r\n classNameSizeObserverListenerScroll,\r\n classNameSizeObserverListenerItem,\r\n classNameSizeObserverListenerItemFinal,\r\n} from 'classnames';\r\n\r\nexport interface SizeObserverOptions {\r\n _direction?: boolean;\r\n _appear?: boolean;\r\n}\r\n\r\nexport interface SizeObserverCallbackParams {\r\n _sizeChanged: boolean;\r\n _directionIsRTLCache?: CacheValues;\r\n _appear?: boolean;\r\n}\r\n\r\nexport type DestroySizeObserver = () => void;\r\n\r\nconst animationStartEventName = 'animationstart';\r\nconst scrollEventName = 'scroll';\r\nconst scrollAmount = 3333333;\r\nconst getElmDirectionIsRTL = (elm: HTMLElement): boolean => style(elm, 'direction') === 'rtl';\r\nconst domRectHasDimensions = (rect?: DOMRectReadOnly) => rect && (rect.height || rect.width);\r\n\r\n/**\r\n * Creates a size observer which observes any size, padding, border, margin and box-sizing changes of the target element. Depending on the options also direction and appear can be observed.\r\n * @param target The target element which shall be observed.\r\n * @param onSizeChangedCallback The callback which gets called after a size change was detected.\r\n * @param options The options for size detection, whether to observe also direction and appear.\r\n * @returns A object which represents the instance of the size observer.\r\n */\r\nexport const createSizeObserver = (\r\n target: HTMLElement,\r\n onSizeChangedCallback: (params: SizeObserverCallbackParams) => any,\r\n options?: SizeObserverOptions\r\n): DestroySizeObserver => {\r\n const { _direction: observeDirectionChange = false, _appear: observeAppearChange = false } =\r\n options || {};\r\n const { _rtlScrollBehavior: rtlScrollBehavior } = getEnvironment();\r\n const baseElements = createDOM(\r\n `
`\r\n );\r\n const sizeObserver = baseElements[0] as HTMLElement;\r\n const listenerElement = sizeObserver.firstChild as HTMLElement;\r\n const getIsDirectionRTL = getElmDirectionIsRTL.bind(0, sizeObserver);\r\n const [updateResizeObserverContentRectCache] = createCache({\r\n _initialValue: undefined,\r\n _alwaysUpdateValues: true,\r\n _equal: (currVal, newVal) =>\r\n !(\r\n !currVal || // if no initial value\r\n // if from display: none to display: block\r\n (!domRectHasDimensions(currVal) && domRectHasDimensions(newVal))\r\n ),\r\n });\r\n const onSizeChangedCallbackProxy = (\r\n sizeChangedContext?: CacheValues | ResizeObserverEntry[] | Event | boolean\r\n ) => {\r\n const isResizeObserverCall =\r\n isArray(sizeChangedContext) &&\r\n sizeChangedContext.length > 0 &&\r\n isObject(sizeChangedContext[0]);\r\n\r\n const hasDirectionCache =\r\n !isResizeObserverCall && isBoolean((sizeChangedContext as CacheValues)[0]);\r\n\r\n let skip = false;\r\n let appear: boolean | number | undefined = false;\r\n let doDirectionScroll = true; // always true if sizeChangedContext is Event (appear callback or RO. Polyfill)\r\n\r\n // if triggered from RO.\r\n if (isResizeObserverCall) {\r\n const [currRContentRect, , prevContentRect] = updateResizeObserverContentRectCache(\r\n (sizeChangedContext as ResizeObserverEntry[]).pop()!.contentRect\r\n );\r\n const hasDimensions = domRectHasDimensions(currRContentRect);\r\n const hadDimensions = domRectHasDimensions(prevContentRect);\r\n skip = !prevContentRect || !hasDimensions; // skip on initial RO. call or if display is none\r\n appear = !hadDimensions && hasDimensions;\r\n\r\n doDirectionScroll = !skip; // direction scroll when not skipping\r\n }\r\n // else if its triggered with DirectionCache\r\n else if (hasDirectionCache) {\r\n [, doDirectionScroll] = sizeChangedContext as CacheValues; // direction scroll when DirectionCache changed, false otherwise\r\n }\r\n // else if it triggered with appear from polyfill\r\n else {\r\n appear = sizeChangedContext === true;\r\n }\r\n\r\n if (observeDirectionChange && doDirectionScroll) {\r\n const rtl = hasDirectionCache\r\n ? (sizeChangedContext as CacheValues)[0]\r\n : getElmDirectionIsRTL(sizeObserver);\r\n scrollLeft(\r\n sizeObserver,\r\n rtl\r\n ? rtlScrollBehavior.n\r\n ? -scrollAmount\r\n : rtlScrollBehavior.i\r\n ? 0\r\n : scrollAmount\r\n : scrollAmount\r\n );\r\n scrollTop(sizeObserver, scrollAmount);\r\n }\r\n\r\n if (!skip) {\r\n onSizeChangedCallback({\r\n _sizeChanged: !hasDirectionCache,\r\n _directionIsRTLCache: hasDirectionCache\r\n ? (sizeChangedContext as CacheValues)\r\n : undefined,\r\n _appear: !!appear,\r\n });\r\n }\r\n };\r\n const offListeners: (() => void)[] = [];\r\n let appearCallback: ((...args: any) => any) | false = observeAppearChange\r\n ? onSizeChangedCallbackProxy\r\n : false;\r\n let directionIsRTLCache: Cache | undefined;\r\n\r\n if (ResizeObserverConstructor) {\r\n const resizeObserverInstance = new ResizeObserverConstructor(onSizeChangedCallbackProxy);\r\n resizeObserverInstance.observe(listenerElement);\r\n push(offListeners, () => {\r\n resizeObserverInstance.disconnect();\r\n });\r\n } else {\r\n const observerElementChildren = createDOM(\r\n `
`\r\n );\r\n appendChildren(listenerElement, observerElementChildren);\r\n addClass(listenerElement, classNameSizeObserverListenerScroll);\r\n const observerElementChildrenRoot = observerElementChildren[0] as HTMLElement;\r\n const shrinkElement = observerElementChildrenRoot.lastChild as HTMLElement;\r\n const expandElement = observerElementChildrenRoot.firstChild as HTMLElement;\r\n const expandElementChild = expandElement?.firstChild as HTMLElement;\r\n\r\n let cacheSize = offsetSize(observerElementChildrenRoot);\r\n let currSize = cacheSize;\r\n let isDirty = false;\r\n let rAFId: number;\r\n\r\n const reset = () => {\r\n scrollLeft(expandElement, scrollAmount);\r\n scrollTop(expandElement, scrollAmount);\r\n scrollLeft(shrinkElement, scrollAmount);\r\n scrollTop(shrinkElement, scrollAmount);\r\n };\r\n const onResized = (appear?: unknown) => {\r\n rAFId = 0;\r\n if (isDirty) {\r\n cacheSize = currSize;\r\n onSizeChangedCallbackProxy(appear === true);\r\n }\r\n };\r\n const onScroll = (scrollEvent?: Event | false) => {\r\n currSize = offsetSize(observerElementChildrenRoot);\r\n isDirty = !scrollEvent || !equalWH(currSize, cacheSize);\r\n\r\n if (scrollEvent) {\r\n stopAndPrevent(scrollEvent);\r\n\r\n if (isDirty && !rAFId) {\r\n cAF!(rAFId);\r\n rAFId = rAF!(onResized);\r\n }\r\n } else {\r\n onResized(scrollEvent === false);\r\n }\r\n\r\n reset();\r\n };\r\n\r\n push(offListeners, [\r\n on(expandElement, scrollEventName, onScroll),\r\n on(shrinkElement, scrollEventName, onScroll),\r\n ]);\r\n\r\n // lets assume that the divs will never be that large and a constant value is enough\r\n style(expandElementChild, {\r\n width: scrollAmount,\r\n height: scrollAmount,\r\n });\r\n\r\n reset();\r\n\r\n appearCallback = observeAppearChange ? onScroll.bind(0, false) : reset;\r\n }\r\n\r\n if (observeDirectionChange) {\r\n directionIsRTLCache = createCache(\r\n {\r\n _initialValue: !getIsDirectionRTL(), // invert current value to trigger initial change\r\n },\r\n getIsDirectionRTL\r\n );\r\n const [updateDirectionIsRTLCache] = directionIsRTLCache;\r\n\r\n push(\r\n offListeners,\r\n on(sizeObserver, scrollEventName, (event: Event) => {\r\n const directionIsRTLCacheValues = updateDirectionIsRTLCache();\r\n const [directionIsRTL, directionIsRTLChanged] = directionIsRTLCacheValues;\r\n\r\n if (directionIsRTLChanged) {\r\n removeClass(listenerElement, 'ltr rtl');\r\n if (directionIsRTL) {\r\n addClass(listenerElement, 'rtl');\r\n } else {\r\n addClass(listenerElement, 'ltr');\r\n }\r\n onSizeChangedCallbackProxy(directionIsRTLCacheValues);\r\n }\r\n\r\n stopAndPrevent(event);\r\n })\r\n );\r\n }\r\n\r\n // appearCallback is always needed on scroll-observer strategy to reset it\r\n if (appearCallback) {\r\n addClass(sizeObserver, classNameSizeObserverAppear);\r\n push(\r\n offListeners,\r\n on(sizeObserver, animationStartEventName, appearCallback, {\r\n // Fire only once for \"CSS is ready\" event if ResizeObserver strategy is used\r\n _once: !!ResizeObserverConstructor,\r\n })\r\n );\r\n }\r\n\r\n prependChildren(target, sizeObserver);\r\n\r\n return () => {\r\n runEach(offListeners);\r\n removeElements(sizeObserver);\r\n };\r\n};\r\n","import {\r\n WH,\r\n CacheValues,\r\n createDiv,\r\n offsetSize,\r\n runEach,\r\n prependChildren,\r\n removeElements,\r\n createCache,\r\n push,\r\n IntersectionObserverConstructor,\r\n} from 'support';\r\nimport { createSizeObserver } from 'observers/sizeObserver';\r\nimport { classNameTrinsicObserver } from 'classnames';\r\n\r\nexport type DestroyTrinsicObserver = () => void;\r\n\r\nconst isHeightIntrinsic = (ioEntryOrSize: IntersectionObserverEntry | WH): boolean =>\r\n (ioEntryOrSize as WH).h === 0 ||\r\n (ioEntryOrSize as IntersectionObserverEntry).isIntersecting ||\r\n (ioEntryOrSize as IntersectionObserverEntry).intersectionRatio > 0;\r\n\r\n/**\r\n * Creates a trinsic observer which observes changes to intrinsic or extrinsic sizing for the height of the target element.\r\n * @param target The element which shall be observed.\r\n * @param onTrinsicChangedCallback The callback which gets called after a change was detected.\r\n * @returns A object which represents the instance of the trinsic observer.\r\n */\r\nexport const createTrinsicObserver = (\r\n target: HTMLElement,\r\n onTrinsicChangedCallback: (heightIntrinsic: CacheValues) => any\r\n): DestroyTrinsicObserver => {\r\n const trinsicObserver = createDiv(classNameTrinsicObserver);\r\n const offListeners: (() => void)[] = [];\r\n const [updateHeightIntrinsicCache] = createCache({\r\n _initialValue: false,\r\n });\r\n\r\n const triggerOnTrinsicChangedCallback = (\r\n updateValue?: IntersectionObserverEntry | WH\r\n ) => {\r\n if (updateValue) {\r\n const heightIntrinsic = updateHeightIntrinsicCache(isHeightIntrinsic(updateValue));\r\n const [, heightIntrinsicChanged] = heightIntrinsic;\r\n\r\n if (heightIntrinsicChanged) {\r\n onTrinsicChangedCallback(heightIntrinsic);\r\n }\r\n }\r\n };\r\n\r\n if (IntersectionObserverConstructor) {\r\n const intersectionObserverInstance: IntersectionObserver = new IntersectionObserverConstructor(\r\n (entries: IntersectionObserverEntry[]) => {\r\n if (entries && entries.length > 0) {\r\n triggerOnTrinsicChangedCallback(entries.pop());\r\n }\r\n },\r\n { root: target }\r\n );\r\n intersectionObserverInstance.observe(trinsicObserver);\r\n push(offListeners, () => {\r\n intersectionObserverInstance.disconnect();\r\n });\r\n } else {\r\n const onSizeChanged = () => {\r\n const newSize = offsetSize(trinsicObserver);\r\n triggerOnTrinsicChangedCallback(newSize);\r\n };\r\n push(offListeners, createSizeObserver(trinsicObserver, onSizeChanged));\r\n onSizeChanged();\r\n }\r\n\r\n prependChildren(target, trinsicObserver);\r\n\r\n return () => {\r\n runEach(offListeners);\r\n removeElements(trinsicObserver);\r\n };\r\n};\r\n","import {\r\n each,\r\n noop,\r\n debounce,\r\n indexOf,\r\n isString,\r\n MutationObserverConstructor,\r\n isEmptyArray,\r\n on,\r\n attr,\r\n is,\r\n find,\r\n push,\r\n} from 'support';\r\n\r\ntype DOMContentObserverCallback = (contentChangedTroughEvent: boolean) => any;\r\n\r\ntype DOMTargetObserverCallback = (targetChangedAttrs: string[], targetStyleChanged: boolean) => any;\r\n\r\ninterface DOMObserverOptionsBase {\r\n _attributes?: string[];\r\n _styleChangingAttributes?: string[];\r\n}\r\n\r\ninterface DOMContentObserverOptions extends DOMObserverOptionsBase {\r\n _eventContentChange?: DOMObserverEventContentChange; // [selector, eventname(s) | function returning eventname(s)] -> eventnames divided by whitespaces\r\n _nestedTargetSelector?: string;\r\n _ignoreContentChange?: DOMObserverIgnoreContentChange; // function which will prevent marking certain dom changes as content change if it returns true\r\n _ignoreNestedTargetChange?: DOMObserverIgnoreTargetChange; // a function which will prevent marking certain attributes as changed on nested targets if it returns true\r\n}\r\n\r\ninterface DOMTargetObserverOptions extends DOMObserverOptionsBase {\r\n _ignoreTargetChange?: DOMObserverIgnoreTargetChange; // a function which will prevent marking certain attributes as changed if it returns true\r\n}\r\n\r\ntype ContentChangeArrayItem = [string?, string?] | null | undefined;\r\n\r\nexport type DOMObserverEventContentChange =\r\n | Array\r\n | false\r\n | null\r\n | undefined;\r\n\r\nexport type DOMObserverIgnoreContentChange = (\r\n mutation: MutationRecord,\r\n isNestedTarget: boolean,\r\n domObserverTarget: HTMLElement,\r\n domObserverOptions?: DOMContentObserverOptions\r\n) => boolean;\r\n\r\nexport type DOMObserverIgnoreTargetChange = (\r\n target: Node,\r\n attributeName: string,\r\n oldAttributeValue: string | null,\r\n newAttributeValue: string | null\r\n) => boolean;\r\n\r\nexport type DOMObserverCallback = ContentObserver extends true\r\n ? DOMContentObserverCallback\r\n : DOMTargetObserverCallback;\r\n\r\nexport type DOMObserverOptions = ContentObserver extends true\r\n ? DOMContentObserverOptions\r\n : DOMTargetObserverOptions;\r\n\r\nexport interface DOMObserver {\r\n _destroy: () => void;\r\n _update: () => void;\r\n}\r\n\r\n/**\r\n * Creates a set of helper functions to observe events of elements inside the target element.\r\n * @param target The target element of which the children elements shall be observed. (not only direct children but also nested ones)\r\n * @param eventContentChange The event content change array. (array of tuples: selector and eventname(s))\r\n * @param callback Callback which is called if one of the elements emits the corresponding event.\r\n * @returns A object which contains a set of helper functions to destroy and update the observation of elements.\r\n */\r\nconst createEventContentChange = (\r\n target: Element,\r\n callback: (...args: any) => any,\r\n eventContentChange?: DOMObserverEventContentChange\r\n) => {\r\n let map: WeakMap any]> | undefined; // weak map to prevent memory leak for detached elements\r\n let destroyed = false;\r\n const _destroy = () => {\r\n destroyed = true;\r\n };\r\n const _updateElements = (getElements?: (selector: string) => Node[]) => {\r\n if (eventContentChange) {\r\n const eventElmList = eventContentChange.reduce>((arr, item) => {\r\n if (item) {\r\n const selector = item[0];\r\n const eventNames = item[1];\r\n const elements =\r\n eventNames &&\r\n selector &&\r\n (getElements ? getElements(selector) : find(selector, target));\r\n\r\n if (elements && elements.length && eventNames && isString(eventNames)) {\r\n push(arr, [elements, eventNames.trim()], true);\r\n }\r\n }\r\n return arr;\r\n }, []);\r\n\r\n each(eventElmList, (item) =>\r\n each(item[0], (elm) => {\r\n const eventNames = item[1];\r\n const entry = map!.get(elm);\r\n\r\n if (entry) {\r\n const entryEventNames = entry[0];\r\n const entryOff = entry[1];\r\n\r\n // in case an already registered element is registered again, unregister the previous events\r\n if (entryEventNames === eventNames) {\r\n entryOff();\r\n }\r\n }\r\n\r\n const off = on(elm, eventNames, (event: Event) => {\r\n if (destroyed) {\r\n off();\r\n map!.delete(elm);\r\n } else {\r\n callback(event);\r\n }\r\n });\r\n map!.set(elm, [eventNames, off]);\r\n })\r\n );\r\n }\r\n };\r\n\r\n if (eventContentChange) {\r\n map = new WeakMap();\r\n _updateElements();\r\n }\r\n\r\n return {\r\n _destroy,\r\n _updateElements,\r\n };\r\n};\r\n\r\n/**\r\n * Creates a DOM observer which observes DOM changes to either the target element or its children.\r\n * @param target The element which shall be observed.\r\n * @param isContentObserver Whether this observer is just observing the target or just the targets children. (not only direct children but also nested ones)\r\n * @param callback The callback which gets called if a change was detected.\r\n * @param options The options for DOM change detection.\r\n * @returns A object which represents the instance of the DOM observer.\r\n */\r\nexport const createDOMObserver = (\r\n target: HTMLElement,\r\n isContentObserver: ContentObserver,\r\n callback: DOMObserverCallback,\r\n options?: DOMObserverOptions\r\n): DOMObserver => {\r\n let isConnected = false;\r\n const {\r\n _attributes,\r\n _styleChangingAttributes,\r\n _eventContentChange,\r\n _nestedTargetSelector,\r\n _ignoreTargetChange,\r\n _ignoreNestedTargetChange,\r\n _ignoreContentChange,\r\n } = (options as DOMContentObserverOptions & DOMTargetObserverOptions) || {};\r\n const {\r\n _destroy: destroyEventContentChange,\r\n _updateElements: updateEventContentChangeElements,\r\n } = createEventContentChange(\r\n target,\r\n debounce(\r\n () => {\r\n if (isConnected) {\r\n (callback as DOMContentObserverCallback)(true);\r\n }\r\n },\r\n { _timeout: 33, _maxDelay: 99 }\r\n ),\r\n _eventContentChange\r\n );\r\n\r\n // MutationObserver\r\n const finalAttributes = _attributes || [];\r\n const finalStyleChangingAttributes = _styleChangingAttributes || [];\r\n const observedAttributes = finalAttributes.concat(finalStyleChangingAttributes);\r\n const observerCallback = (mutations: MutationRecord[]) => {\r\n const ignoreTargetChange =\r\n (isContentObserver ? _ignoreNestedTargetChange : _ignoreTargetChange) || noop;\r\n const ignoreContentChange = _ignoreContentChange || noop;\r\n const targetChangedAttrs: string[] = [];\r\n const totalAddedNodes: Node[] = [];\r\n let targetStyleChanged = false;\r\n let contentChanged = false;\r\n let childListChanged = false;\r\n each(mutations, (mutation) => {\r\n const { attributeName, target: mutationTarget, type, oldValue, addedNodes } = mutation;\r\n const isAttributesType = type === 'attributes';\r\n const isChildListType = type === 'childList';\r\n const targetIsMutationTarget = target === mutationTarget;\r\n const attributeValue =\r\n isAttributesType && isString(attributeName)\r\n ? attr(mutationTarget as HTMLElement, attributeName!)\r\n : 0;\r\n const attributeChanged = attributeValue !== 0 && oldValue !== attributeValue;\r\n const styleChangingAttrChanged =\r\n indexOf(finalStyleChangingAttributes, attributeName) > -1 && attributeChanged;\r\n\r\n // if is content observer and something changed in children\r\n if (isContentObserver && !targetIsMutationTarget) {\r\n const notOnlyAttrChanged = !isAttributesType;\r\n const contentAttrChanged = isAttributesType && styleChangingAttrChanged;\r\n const isNestedTarget =\r\n contentAttrChanged && _nestedTargetSelector && is(mutationTarget, _nestedTargetSelector);\r\n const baseAssertion = isNestedTarget\r\n ? !ignoreTargetChange(mutationTarget, attributeName!, oldValue, attributeValue)\r\n : notOnlyAttrChanged || contentAttrChanged;\r\n const contentFinalChanged =\r\n baseAssertion && !ignoreContentChange(mutation, !!isNestedTarget, target, options);\r\n\r\n push(totalAddedNodes, addedNodes);\r\n\r\n contentChanged = contentChanged || contentFinalChanged;\r\n childListChanged = childListChanged || isChildListType;\r\n }\r\n // if is target observer and target attr changed\r\n if (\r\n !isContentObserver &&\r\n targetIsMutationTarget &&\r\n attributeChanged &&\r\n !ignoreTargetChange(mutationTarget, attributeName!, oldValue, attributeValue)\r\n ) {\r\n push(targetChangedAttrs, attributeName!);\r\n targetStyleChanged = targetStyleChanged || styleChangingAttrChanged;\r\n }\r\n });\r\n\r\n if (childListChanged && !isEmptyArray(totalAddedNodes)) {\r\n // adds / removes the new elements from the event content change\r\n updateEventContentChangeElements((selector) =>\r\n totalAddedNodes.reduce((arr, node) => {\r\n push(arr, find(selector, node));\r\n return is(node, selector) ? push(arr, node) : arr;\r\n }, [])\r\n );\r\n }\r\n\r\n if (isContentObserver) {\r\n contentChanged && (callback as DOMContentObserverCallback)(false);\r\n } else if (!isEmptyArray(targetChangedAttrs) || targetStyleChanged) {\r\n (callback as DOMTargetObserverCallback)(targetChangedAttrs, targetStyleChanged);\r\n }\r\n };\r\n const mutationObserver: MutationObserver = new MutationObserverConstructor!(observerCallback);\r\n\r\n // Connect\r\n mutationObserver.observe(target, {\r\n attributes: true,\r\n attributeOldValue: true,\r\n attributeFilter: observedAttributes,\r\n subtree: isContentObserver,\r\n childList: isContentObserver,\r\n characterData: isContentObserver,\r\n });\r\n isConnected = true;\r\n\r\n return {\r\n _destroy: () => {\r\n if (isConnected) {\r\n destroyEventContentChange();\r\n mutationObserver.disconnect();\r\n isConnected = false;\r\n }\r\n },\r\n _update: () => {\r\n if (isConnected) {\r\n observerCallback(mutationObserver.takeRecords());\r\n }\r\n },\r\n };\r\n};\r\n","import {\r\n diffClass,\r\n debounce,\r\n isArray,\r\n isNumber,\r\n each,\r\n indexOf,\r\n isString,\r\n attr,\r\n removeAttr,\r\n CacheValues,\r\n} from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport { createSizeObserver, SizeObserverCallbackParams } from 'observers/sizeObserver';\r\nimport { createTrinsicObserver } from 'observers/trinsicObserver';\r\nimport { createDOMObserver, DOMObserver } from 'observers/domObserver';\r\nimport { LifecycleHub, LifecycleCheckOption, LifecycleUpdateHints } from 'lifecycles/lifecycleHub';\r\n\r\nexport type UpdateObserverOptions = (checkOption: LifecycleCheckOption) => void;\r\n\r\nexport type LifecycleHubObservers = [UpdateObserverOptions, () => void];\r\n\r\n// const hostSelector = `.${classNameHost}`;\r\n\r\n// TODO: observer textarea attrs if textarea\r\n// TODO: test _ignoreContentChange & _ignoreNestedTargetChange for content dom observer\r\n// TODO: test _ignoreTargetChange for target dom observer\r\n\r\n// const viewportSelector = `.${classNameViewport}`;\r\n// const contentSelector = `.${classNameContent}`;\r\nconst ignorePrefix = 'os-';\r\nconst viewportAttrsFromTarget = ['tabindex'];\r\nconst baseStyleChangingAttrsTextarea = ['wrap', 'cols', 'rows'];\r\nconst baseStyleChangingAttrs = ['id', 'class', 'style', 'open'];\r\n\r\nconst ignoreTargetChange = (\r\n target: Node,\r\n attrName: string,\r\n oldValue: string | null,\r\n newValue: string | null\r\n) => {\r\n if (attrName === 'class' && oldValue && newValue) {\r\n const diff = diffClass(oldValue, newValue);\r\n return !!diff.find((addedOrRemovedClass) => addedOrRemovedClass.indexOf(ignorePrefix) !== 0);\r\n }\r\n return false;\r\n};\r\n\r\nexport const lifecycleHubOservers = (\r\n instance: LifecycleHub,\r\n updateLifecycles: (updateHints: Partial) => unknown\r\n): LifecycleHubObservers => {\r\n let debounceTimeout: number | false | undefined;\r\n let debounceMaxDelay: number | false | undefined;\r\n let contentMutationObserver: DOMObserver | undefined;\r\n const { _structureSetup } = instance;\r\n const { _targetObj, _targetCtx } = _structureSetup;\r\n const { _host, _viewport, _content } = _targetObj;\r\n const { _isTextarea } = _targetCtx;\r\n const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment();\r\n const contentMutationObserverAttr = _isTextarea\r\n ? baseStyleChangingAttrsTextarea\r\n : baseStyleChangingAttrs.concat(baseStyleChangingAttrsTextarea);\r\n const updateLifecyclesWithDebouncedAdaptiveUpdateHints = debounce(updateLifecycles, {\r\n _timeout: () => debounceTimeout,\r\n _maxDelay: () => debounceMaxDelay,\r\n _mergeParams(prev, curr) {\r\n const {\r\n _sizeChanged: prevSizeChanged,\r\n _hostMutation: prevHostMutation,\r\n _contentMutation: prevContentMutation,\r\n } = prev[0];\r\n const {\r\n _sizeChanged: currSizeChanged,\r\n _hostMutation: currvHostMutation,\r\n _contentMutation: currContentMutation,\r\n } = curr[0];\r\n const merged: [Partial] = [\r\n {\r\n _sizeChanged: prevSizeChanged || currSizeChanged,\r\n _hostMutation: prevHostMutation || currvHostMutation,\r\n _contentMutation: prevContentMutation || currContentMutation,\r\n },\r\n ];\r\n\r\n return merged;\r\n },\r\n });\r\n\r\n const updateViewportAttrsFromHost = (attributes?: string[]) => {\r\n each(attributes || viewportAttrsFromTarget, (attribute) => {\r\n if (indexOf(viewportAttrsFromTarget, attribute) > -1) {\r\n const hostAttr = attr(_host, attribute);\r\n if (isString(hostAttr)) {\r\n attr(_viewport, attribute, hostAttr);\r\n } else {\r\n removeAttr(_viewport, attribute);\r\n }\r\n }\r\n });\r\n };\r\n const onTrinsicChanged = (heightIntrinsic: CacheValues) => {\r\n updateLifecycles({\r\n _heightIntrinsic: heightIntrinsic,\r\n });\r\n };\r\n const onSizeChanged = ({\r\n _sizeChanged,\r\n _directionIsRTLCache,\r\n _appear,\r\n }: SizeObserverCallbackParams) => {\r\n const updateFn =\r\n !_sizeChanged || _appear\r\n ? updateLifecycles\r\n : updateLifecyclesWithDebouncedAdaptiveUpdateHints;\r\n\r\n updateFn({\r\n _sizeChanged,\r\n _directionIsRTL: _directionIsRTLCache,\r\n });\r\n };\r\n const onContentMutation = (contentChangedTroughEvent: boolean) => {\r\n // if contentChangedTroughEvent is true its already debounced\r\n const updateFn = contentChangedTroughEvent\r\n ? updateLifecycles\r\n : updateLifecyclesWithDebouncedAdaptiveUpdateHints;\r\n updateFn({\r\n _contentMutation: true,\r\n });\r\n };\r\n const onHostMutation = (targetChangedAttrs: string[], targetStyleChanged: boolean) => {\r\n if (targetStyleChanged) {\r\n updateLifecyclesWithDebouncedAdaptiveUpdateHints({\r\n _hostMutation: true,\r\n });\r\n } else {\r\n updateViewportAttrsFromHost(targetChangedAttrs);\r\n }\r\n };\r\n\r\n const destroyTrinsicObserver =\r\n (_content || !_flexboxGlue) && createTrinsicObserver(_host, onTrinsicChanged);\r\n const destroySizeObserver = createSizeObserver(_host, onSizeChanged, {\r\n _appear: true,\r\n _direction: !_nativeScrollbarStyling,\r\n });\r\n const hostMutationObserver = createDOMObserver(_host, false, onHostMutation, {\r\n _styleChangingAttributes: baseStyleChangingAttrs,\r\n _attributes: baseStyleChangingAttrs.concat(viewportAttrsFromTarget),\r\n _ignoreTargetChange: ignoreTargetChange,\r\n });\r\n\r\n const updateOptions: UpdateObserverOptions = (checkOption) => {\r\n const [elementEvents, elementEventsChanged] = checkOption | null>(\r\n 'updating.elementEvents'\r\n );\r\n const [attributes, attributesChanged] = checkOption('updating.attributes');\r\n const [debounceValue, debounceChanged] = checkOption | number | null>(\r\n 'updating.debounce'\r\n );\r\n const updateContentMutationObserver = elementEventsChanged || attributesChanged;\r\n\r\n if (updateContentMutationObserver) {\r\n if (contentMutationObserver) {\r\n contentMutationObserver._update();\r\n contentMutationObserver._destroy();\r\n }\r\n contentMutationObserver = createDOMObserver(_content || _viewport, true, onContentMutation, {\r\n _styleChangingAttributes: contentMutationObserverAttr.concat(attributes || []),\r\n _attributes: contentMutationObserverAttr.concat(attributes || []),\r\n _eventContentChange: elementEvents,\r\n _ignoreNestedTargetChange: ignoreTargetChange,\r\n // _nestedTargetSelector: hostSelector,\r\n /*\r\n _ignoreContentChange: (mutation, isNestedTarget) => {\r\n const { target, attributeName } = mutation;\r\n return isNestedTarget\r\n ? false\r\n : attributeName\r\n ? liesBetween(target as Element, hostSelector, viewportSelector) || liesBetween(target as Element, hostSelector, contentSelector)\r\n : false;\r\n },\r\n */\r\n });\r\n }\r\n\r\n if (debounceChanged) {\r\n updateLifecyclesWithDebouncedAdaptiveUpdateHints._flush();\r\n if (isArray(debounceValue)) {\r\n const timeout = debounceValue[0];\r\n const maxWait = debounceValue[1];\r\n debounceTimeout = isNumber(timeout) ? timeout : false;\r\n debounceMaxDelay = isNumber(maxWait) ? maxWait : false;\r\n } else if (isNumber(debounceValue)) {\r\n debounceTimeout = debounceValue;\r\n debounceMaxDelay = false;\r\n } else {\r\n debounceTimeout = false;\r\n debounceMaxDelay = false;\r\n }\r\n }\r\n };\r\n\r\n updateViewportAttrsFromHost();\r\n\r\n return [\r\n updateOptions,\r\n () => {\r\n contentMutationObserver && contentMutationObserver._destroy();\r\n destroyTrinsicObserver && destroyTrinsicObserver();\r\n destroySizeObserver();\r\n hostMutationObserver._destroy();\r\n },\r\n ];\r\n};\r\n","import { style } from 'support';\r\nimport { LifecycleHub, Lifecycle } from 'lifecycles/lifecycleHub';\r\n\r\n/**\r\n * Lifecycle with the responsibility to adjust the trinsic behavior of the content element.\r\n * @param lifecycleHub\r\n * @returns\r\n */\r\nexport const createTrinsicLifecycle = (lifecycleHub: LifecycleHub): Lifecycle => {\r\n const { _structureSetup } = lifecycleHub;\r\n const { _content } = _structureSetup._targetObj;\r\n\r\n return (updateHints) => {\r\n const { _heightIntrinsic } = updateHints;\r\n const [heightIntrinsic, heightIntrinsicChanged] = _heightIntrinsic;\r\n\r\n if (heightIntrinsicChanged) {\r\n style(_content, {\r\n height: heightIntrinsic ? '' : '100%',\r\n display: heightIntrinsic ? '' : 'inline',\r\n });\r\n }\r\n\r\n return {\r\n _sizeChanged: heightIntrinsicChanged,\r\n _contentMutation: heightIntrinsicChanged,\r\n };\r\n };\r\n};\r\n","import { createCache, topRightBottomLeft, equalTRBL, style } from 'support';\r\nimport { LifecycleHub, Lifecycle } from 'lifecycles/lifecycleHub';\r\nimport { StyleObject } from 'typings';\r\nimport { getEnvironment } from 'environment';\r\n\r\n/**\r\n * Lifecycle with the responsibility to adjust the padding styling of the padding and viewport element.\r\n * @param lifecycleHub\r\n * @returns\r\n */\r\nexport const createPaddingLifecycle = (lifecycleHub: LifecycleHub): Lifecycle => {\r\n const { _structureSetup, _setLifecycleCommunication } = lifecycleHub;\r\n const { _host, _padding, _viewport } = _structureSetup._targetObj;\r\n const [updatePaddingCache, currentPaddingCache] = createCache(\r\n {\r\n _equal: equalTRBL,\r\n _initialValue: topRightBottomLeft(),\r\n },\r\n topRightBottomLeft.bind(0, _host, 'padding', '')\r\n );\r\n\r\n return (updateHints, checkOption, force) => {\r\n let [padding, paddingChanged] = currentPaddingCache(force);\r\n const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment();\r\n const { _sizeChanged, _directionIsRTL, _contentMutation } = updateHints;\r\n const [directionIsRTL, directionChanged] = _directionIsRTL;\r\n const [paddingAbsolute, paddingAbsoluteChanged] = checkOption('paddingAbsolute');\r\n const contentMutation = !_flexboxGlue && _contentMutation;\r\n\r\n if (_sizeChanged || paddingChanged || contentMutation) {\r\n [padding, paddingChanged] = updatePaddingCache(force);\r\n }\r\n\r\n const paddingStyleChanged = paddingAbsoluteChanged || directionChanged || paddingChanged;\r\n\r\n if (paddingStyleChanged) {\r\n // if there is no padding element and no scrollbar styling, paddingAbsolute isn't supported\r\n const paddingRelative = !paddingAbsolute || (!_padding && !_nativeScrollbarStyling);\r\n const paddingHorizontal = padding.r + padding.l;\r\n const paddingVertical = padding.t + padding.b;\r\n\r\n const paddingStyle: StyleObject = {\r\n marginRight: paddingRelative && !directionIsRTL ? -paddingHorizontal : 0,\r\n marginBottom: paddingRelative ? -paddingVertical : 0,\r\n marginLeft: paddingRelative && directionIsRTL ? -paddingHorizontal : 0,\r\n top: paddingRelative ? -padding.t : 0,\r\n right: paddingRelative ? (directionIsRTL ? -padding.r : 'auto') : 0,\r\n left: paddingRelative ? (directionIsRTL ? 'auto' : -padding.l) : 0,\r\n width: paddingRelative ? `calc(100% + ${paddingHorizontal}px)` : '',\r\n };\r\n const viewportStyle: StyleObject = {\r\n paddingTop: paddingRelative ? padding.t : 0,\r\n paddingRight: paddingRelative ? padding.r : 0,\r\n paddingBottom: paddingRelative ? padding.b : 0,\r\n paddingLeft: paddingRelative ? padding.l : 0,\r\n };\r\n\r\n // if there is no padding element apply the style to the viewport element instead\r\n style(_padding || _viewport, paddingStyle);\r\n style(_viewport, viewportStyle);\r\n\r\n _setLifecycleCommunication({\r\n _paddingInfo: {\r\n _absolute: !paddingRelative,\r\n _padding: padding,\r\n },\r\n _viewportPaddingStyle: _padding\r\n ? viewportStyle\r\n : {\r\n ...paddingStyle,\r\n ...viewportStyle,\r\n },\r\n });\r\n }\r\n\r\n return {\r\n _paddingStyleChanged: paddingStyleChanged,\r\n };\r\n };\r\n};\r\n","import {\r\n createCache,\r\n keys,\r\n attr,\r\n WH,\r\n XY,\r\n style,\r\n scrollSize,\r\n CacheValues,\r\n equalWH,\r\n addClass,\r\n removeClass,\r\n clientSize,\r\n offsetSize,\r\n getBoundingClientRect,\r\n noop,\r\n each,\r\n equalXY,\r\n} from 'support';\r\nimport { LifecycleHub, Lifecycle } from 'lifecycles/lifecycleHub';\r\nimport { getEnvironment } from 'environment';\r\nimport { OverflowBehavior } from 'options';\r\nimport { StyleObject } from 'typings';\r\nimport { classNameViewportArrange, classNameViewportScrollbarStyling } from 'classnames';\r\n\r\ninterface ViewportOverflowState {\r\n _scrollbarsHideOffset: XY;\r\n _scrollbarsHideOffsetArrange: XY;\r\n _overflowScroll: XY;\r\n}\r\n\r\ntype UndoViewportArrangeResult = [\r\n () => void, // redoViewportArrange\r\n ViewportOverflowState?\r\n];\r\n\r\nconst { max, abs, round } = Math;\r\nconst overlaidScrollbarsHideOffset = 42;\r\nconst whCacheOptions = {\r\n _equal: equalWH,\r\n _initialValue: { w: 0, h: 0 },\r\n};\r\nconst xyCacheOptions = {\r\n _equal: equalXY,\r\n _initialValue: { x: false, y: false },\r\n};\r\nconst sizeFraction = (elm: HTMLElement): WH => {\r\n const viewportOffsetSize = offsetSize(elm);\r\n const viewportRect = getBoundingClientRect(elm);\r\n return {\r\n w: viewportRect.width - viewportOffsetSize.w,\r\n h: viewportRect.height - viewportOffsetSize.h,\r\n };\r\n};\r\nconst fractionalPixelRatioTollerance = () => (window.devicePixelRatio % 1 === 0 ? 0 : 1);\r\nconst setAxisOverflowStyle = (\r\n horizontal: boolean,\r\n overflowAmount: number,\r\n behavior: OverflowBehavior,\r\n styleObj: StyleObject\r\n) => {\r\n const overflowKey: keyof StyleObject = horizontal ? 'overflowX' : 'overflowY';\r\n const behaviorIsVisible = behavior.indexOf('visible') === 0;\r\n const behaviorIsVisibleHidden = behavior === 'visible-hidden';\r\n const behaviorIsScroll = behavior === 'scroll';\r\n const hasOverflow = overflowAmount > 0;\r\n\r\n if (behaviorIsVisible) {\r\n styleObj[overflowKey] = 'visible';\r\n }\r\n if (behaviorIsScroll && hasOverflow) {\r\n styleObj[overflowKey] = behavior;\r\n }\r\n\r\n return {\r\n _visible: behaviorIsVisible,\r\n _behavior: behaviorIsVisibleHidden ? 'hidden' : 'scroll',\r\n };\r\n};\r\n\r\nconst getOverflowAmount = (\r\n viewportScrollSize: WH,\r\n viewportClientSize: WH,\r\n viewportSizeFraction: WH\r\n) => ({\r\n w: max(\r\n 0,\r\n round(\r\n max(0, viewportScrollSize.w - viewportClientSize.w) -\r\n (fractionalPixelRatioTollerance() || max(0, viewportSizeFraction.w))\r\n )\r\n ),\r\n h: max(\r\n 0,\r\n round(\r\n max(0, viewportScrollSize.h - viewportClientSize.h) -\r\n (fractionalPixelRatioTollerance() || max(0, viewportSizeFraction.h))\r\n )\r\n ),\r\n});\r\n\r\n/**\r\n * Lifecycle with the responsibility to set the correct overflow and scrollbar hiding styles of the viewport element.\r\n * @param lifecycleHub\r\n * @returns\r\n */\r\nexport const createOverflowLifecycle = (lifecycleHub: LifecycleHub): Lifecycle => {\r\n const {\r\n _structureSetup,\r\n _doViewportArrange,\r\n _getLifecycleCommunication,\r\n _setLifecycleCommunication,\r\n } = lifecycleHub;\r\n\r\n const { _host, _viewport, _viewportArrange } = _structureSetup._targetObj;\r\n\r\n const [updateViewportSizeFraction, getCurrentViewportSizeFraction] = createCache>(\r\n whCacheOptions,\r\n sizeFraction.bind(0, _viewport)\r\n );\r\n\r\n const [updateViewportScrollSizeCache, getCurrentViewportScrollSizeCache] = createCache<\r\n WH\r\n >(whCacheOptions, scrollSize.bind(0, _viewport));\r\n\r\n const [updateOverflowAmountCache, getCurrentOverflowAmountCache] =\r\n createCache>(whCacheOptions);\r\n\r\n const [updateOverflowScrollCache] = createCache>(xyCacheOptions);\r\n\r\n /**\r\n * Applies a fixed height to the viewport so it can't overflow or underflow the host element.\r\n * @param viewportOverflowState The current overflow state.\r\n * @param heightIntrinsic Whether the host height is intrinsic or not.\r\n */\r\n const fixFlexboxGlue = (\r\n viewportOverflowState: ViewportOverflowState,\r\n heightIntrinsic: boolean\r\n ) => {\r\n style(_viewport, {\r\n height: '',\r\n });\r\n\r\n if (heightIntrinsic) {\r\n const { _nativeScrollbarIsOverlaid } = getEnvironment();\r\n const { _absolute: paddingAbsolute, _padding: padding } =\r\n _getLifecycleCommunication()._paddingInfo;\r\n const { _overflowScroll, _scrollbarsHideOffset } = viewportOverflowState;\r\n const hostSizeFraction = sizeFraction(_host);\r\n const hostClientSize = clientSize(_host);\r\n // padding subtraction is only needed if padding is absolute or if viewport is content-box\r\n const isContentBox = style(_viewport, 'boxSizing') === 'content-box';\r\n const paddingVertical = paddingAbsolute || isContentBox ? padding.b + padding.t : 0;\r\n const fractionalClientHeight =\r\n hostClientSize.h + (abs(hostSizeFraction.h) < 1 ? hostSizeFraction.h : 0);\r\n const subtractXScrollbar = !(_nativeScrollbarIsOverlaid.x && isContentBox);\r\n\r\n style(_viewport, {\r\n height:\r\n fractionalClientHeight +\r\n (_overflowScroll.x && subtractXScrollbar ? _scrollbarsHideOffset.x : 0) -\r\n paddingVertical,\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Gets the current overflow state of the viewport.\r\n * @param showNativeOverlaidScrollbars Whether native overlaid scrollbars are shown instead of hidden.\r\n * @param viewportStyleObj The viewport style object where the overflow scroll property can be read of, or undefined if shall be determined.\r\n * @returns A object which contains informations about the current overflow state.\r\n */\r\n const getViewportOverflowState = (\r\n showNativeOverlaidScrollbars: boolean,\r\n viewportStyleObj?: StyleObject\r\n ): ViewportOverflowState => {\r\n const { _nativeScrollbarSize, _nativeScrollbarIsOverlaid, _nativeScrollbarStyling } =\r\n getEnvironment();\r\n const { x: overlaidX, y: overlaidY } = _nativeScrollbarIsOverlaid;\r\n const determineOverflow = !viewportStyleObj;\r\n const arrangeHideOffset =\r\n !_nativeScrollbarStyling && !showNativeOverlaidScrollbars ? overlaidScrollbarsHideOffset : 0;\r\n const styleObj = determineOverflow\r\n ? style(_viewport, ['overflowX', 'overflowY'])\r\n : viewportStyleObj;\r\n const scroll = {\r\n x: styleObj.overflowX === 'scroll',\r\n y: styleObj.overflowY === 'scroll',\r\n };\r\n const nonScrollbarStylingHideOffset = {\r\n x: overlaidX ? arrangeHideOffset : _nativeScrollbarSize.x,\r\n y: overlaidY ? arrangeHideOffset : _nativeScrollbarSize.y,\r\n };\r\n const scrollbarsHideOffset = {\r\n x: scroll.x && !_nativeScrollbarStyling ? nonScrollbarStylingHideOffset.x : 0,\r\n y: scroll.y && !_nativeScrollbarStyling ? nonScrollbarStylingHideOffset.y : 0,\r\n };\r\n\r\n return {\r\n _overflowScroll: scroll,\r\n _scrollbarsHideOffsetArrange: {\r\n x: overlaidX && !!arrangeHideOffset,\r\n y: overlaidY && !!arrangeHideOffset,\r\n },\r\n _scrollbarsHideOffset: scrollbarsHideOffset,\r\n };\r\n };\r\n\r\n /**\r\n * Sets the overflow property of the viewport and calculates the a overflow state according to the new parameters.\r\n * @param showNativeOverlaidScrollbars Whether to show natively overlaid scrollbars.\r\n * @param overflowAmount The overflow amount.\r\n * @param overflow The overflow behavior according to the options.\r\n * @param viewportStyleObj The viewport style object to which the overflow style shall be applied.\r\n * @returns A object which represents the newly set overflow state.\r\n */\r\n const setViewportOverflowState = (\r\n showNativeOverlaidScrollbars: boolean,\r\n overflowAmount: WH,\r\n overflow: XY,\r\n viewportStyleObj: StyleObject\r\n ): ViewportOverflowState => {\r\n const { _visible: xVisible, _behavior: xVisibleBehavior } = setAxisOverflowStyle(\r\n true,\r\n overflowAmount.w,\r\n overflow.x,\r\n viewportStyleObj\r\n );\r\n const { _visible: yVisible, _behavior: yVisibleBehavior } = setAxisOverflowStyle(\r\n false,\r\n overflowAmount.h,\r\n overflow.y,\r\n viewportStyleObj\r\n );\r\n\r\n if (xVisible && !yVisible) {\r\n viewportStyleObj.overflowX = xVisibleBehavior;\r\n }\r\n if (yVisible && !xVisible) {\r\n viewportStyleObj.overflowY = yVisibleBehavior;\r\n }\r\n\r\n return getViewportOverflowState(showNativeOverlaidScrollbars, viewportStyleObj);\r\n };\r\n\r\n /**\r\n * Sets the styles of the viewport arrange element.\r\n * @param viewportOverflowState The viewport overflow state according to which the scrollbars shall be hidden.\r\n * @param viewportScrollSize The content scroll size.\r\n * @param directionIsRTL Whether the direction is RTL or not.\r\n * @returns A boolean which indicates whether the viewport arrange element was adjusted.\r\n */\r\n const arrangeViewport = (\r\n viewportOverflowState: ViewportOverflowState,\r\n viewportScrollSize: WH,\r\n viewportSizeFraction: WH,\r\n directionIsRTL: boolean\r\n ) => {\r\n if (_doViewportArrange) {\r\n const { _scrollbarsHideOffset, _scrollbarsHideOffsetArrange } = viewportOverflowState;\r\n const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange;\r\n const { x: hideOffsetX, y: hideOffsetY } = _scrollbarsHideOffset;\r\n const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication();\r\n const viewportArrangeHorizontalPaddingKey: keyof StyleObject = directionIsRTL\r\n ? 'paddingRight'\r\n : 'paddingLeft';\r\n const viewportArrangeHorizontalPaddingValue = viewportPaddingStyle[\r\n viewportArrangeHorizontalPaddingKey\r\n ] as number;\r\n const viewportArrangeVerticalPaddingValue = viewportPaddingStyle.paddingTop as number;\r\n const fractionalContentWidth =\r\n viewportScrollSize.w + (abs(viewportSizeFraction.w) < 1 ? viewportSizeFraction.w : 0);\r\n const fractionalContenHeight =\r\n viewportScrollSize.h + (abs(viewportSizeFraction.h) < 1 ? viewportSizeFraction.h : 0);\r\n const arrangeSize = {\r\n w:\r\n hideOffsetY && arrangeY\r\n ? `${hideOffsetY + fractionalContentWidth - viewportArrangeHorizontalPaddingValue}px`\r\n : '',\r\n h:\r\n hideOffsetX && arrangeX\r\n ? `${hideOffsetX + fractionalContenHeight - viewportArrangeVerticalPaddingValue}px`\r\n : '',\r\n };\r\n\r\n // adjust content arrange / before element\r\n if (_viewportArrange) {\r\n const { sheet } = _viewportArrange;\r\n if (sheet) {\r\n const { cssRules } = sheet;\r\n if (cssRules) {\r\n if (!cssRules.length) {\r\n sheet.insertRule(\r\n `#${attr(_viewportArrange, 'id')} + .${classNameViewportArrange}::before {}`,\r\n 0\r\n );\r\n }\r\n\r\n // @ts-ignore\r\n const ruleStyle = cssRules[0].style;\r\n\r\n ruleStyle.width = arrangeSize.w;\r\n ruleStyle.height = arrangeSize.h;\r\n }\r\n }\r\n } else {\r\n style<'--os-vaw' | '--os-vah'>(_viewport, {\r\n '--os-vaw': arrangeSize.w,\r\n '--os-vah': arrangeSize.h,\r\n });\r\n }\r\n }\r\n\r\n return _doViewportArrange;\r\n };\r\n\r\n /**\r\n * Hides the native scrollbars according to the passed parameters.\r\n * @param viewportOverflowState The viewport overflow state.\r\n * @param directionIsRTL Whether the direction is RTL or not.\r\n * @param viewportArrange Whether special styles related to the viewport arrange strategy shall be applied.\r\n * @param viewportStyleObj The viewport style object to which the needed styles shall be applied.\r\n */\r\n const hideNativeScrollbars = (\r\n viewportOverflowState: ViewportOverflowState,\r\n directionIsRTL: boolean,\r\n viewportArrange: boolean,\r\n viewportStyleObj: StyleObject\r\n ) => {\r\n const { _scrollbarsHideOffset, _scrollbarsHideOffsetArrange } = viewportOverflowState;\r\n const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange;\r\n const { x: hideOffsetX, y: hideOffsetY } = _scrollbarsHideOffset;\r\n const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication();\r\n const horizontalMarginKey: keyof StyleObject = directionIsRTL ? 'marginLeft' : 'marginRight';\r\n const viewportHorizontalPaddingKey: keyof StyleObject = directionIsRTL\r\n ? 'paddingLeft'\r\n : 'paddingRight';\r\n const horizontalMarginValue = viewportPaddingStyle[horizontalMarginKey] as number;\r\n const verticalMarginValue = viewportPaddingStyle.marginBottom as number;\r\n const horizontalPaddingValue = viewportPaddingStyle[viewportHorizontalPaddingKey] as number;\r\n const verticalPaddingValue = viewportPaddingStyle.paddingBottom as number;\r\n\r\n // horizontal\r\n viewportStyleObj.width = `calc(100% + ${hideOffsetY + horizontalMarginValue * -1}px)`;\r\n viewportStyleObj[horizontalMarginKey] = -hideOffsetY + horizontalMarginValue;\r\n\r\n // vertical\r\n viewportStyleObj.marginBottom = -hideOffsetX + verticalMarginValue;\r\n\r\n // viewport arrange additional styles\r\n if (viewportArrange) {\r\n viewportStyleObj[viewportHorizontalPaddingKey] =\r\n horizontalPaddingValue + (arrangeY ? hideOffsetY : 0);\r\n viewportStyleObj.paddingBottom = verticalPaddingValue + (arrangeX ? hideOffsetX : 0);\r\n }\r\n };\r\n\r\n /**\r\n * Removes all styles applied because of the viewport arrange strategy.\r\n * @param showNativeOverlaidScrollbars Whether native overlaid scrollbars are shown instead of hidden.\r\n * @param directionIsRTL Whether the direction is RTL or not.\r\n * @param viewportOverflowState The currentviewport overflow state or undefined if it has to be determined.\r\n * @returns A object with a function which applies all the removed styles and the determined viewport vverflow state.\r\n */\r\n const undoViewportArrange = (\r\n showNativeOverlaidScrollbars: boolean,\r\n directionIsRTL: boolean,\r\n viewportOverflowState?: ViewportOverflowState\r\n ): UndoViewportArrangeResult => {\r\n if (_doViewportArrange) {\r\n const finalViewportOverflowState =\r\n viewportOverflowState || getViewportOverflowState(showNativeOverlaidScrollbars);\r\n const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication();\r\n const { _flexboxGlue } = getEnvironment();\r\n const { _scrollbarsHideOffsetArrange } = finalViewportOverflowState;\r\n const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange;\r\n const finalPaddingStyle: StyleObject = {};\r\n const assignProps = (props: string) =>\r\n each(props.split(' '), (prop) => {\r\n finalPaddingStyle[prop] = viewportPaddingStyle[prop];\r\n });\r\n\r\n if (!_flexboxGlue) {\r\n finalPaddingStyle.height = '';\r\n }\r\n\r\n if (arrangeX) {\r\n assignProps('marginBottom paddingTop paddingBottom');\r\n }\r\n\r\n if (arrangeY) {\r\n assignProps('marginLeft marginRight paddingLeft paddingRight');\r\n }\r\n\r\n const prevStyle = style(_viewport, keys(finalPaddingStyle));\r\n removeClass(_viewport, classNameViewportArrange);\r\n style(_viewport, finalPaddingStyle);\r\n\r\n return [\r\n () => {\r\n hideNativeScrollbars(\r\n finalViewportOverflowState,\r\n directionIsRTL,\r\n _doViewportArrange,\r\n prevStyle\r\n );\r\n style(_viewport, prevStyle);\r\n addClass(_viewport, classNameViewportArrange);\r\n },\r\n finalViewportOverflowState,\r\n ];\r\n }\r\n return [noop];\r\n };\r\n\r\n return (updateHints, checkOption, force) => {\r\n const {\r\n _directionIsRTL,\r\n _heightIntrinsic,\r\n _sizeChanged,\r\n _hostMutation,\r\n _contentMutation,\r\n _paddingStyleChanged,\r\n } = updateHints;\r\n const { _flexboxGlue, _nativeScrollbarStyling, _nativeScrollbarIsOverlaid } = getEnvironment();\r\n const [heightIntrinsic, heightIntrinsicChanged] = _heightIntrinsic;\r\n const [directionIsRTL, directionChanged] = _directionIsRTL;\r\n const [showNativeOverlaidScrollbarsOption, showNativeOverlaidScrollbarsChanged] =\r\n checkOption('nativeScrollbarsOverlaid.show');\r\n const showNativeOverlaidScrollbars =\r\n showNativeOverlaidScrollbarsOption &&\r\n _nativeScrollbarIsOverlaid.x &&\r\n _nativeScrollbarIsOverlaid.y;\r\n const adjustFlexboxGlue =\r\n !_flexboxGlue &&\r\n (_sizeChanged ||\r\n _contentMutation ||\r\n _hostMutation ||\r\n showNativeOverlaidScrollbarsChanged ||\r\n heightIntrinsicChanged);\r\n\r\n let viewportSizeFractionCache: CacheValues> = getCurrentViewportSizeFraction(force);\r\n let viewportScrollSizeCache: CacheValues> = getCurrentViewportScrollSizeCache(force);\r\n let overflowAmuntCache: CacheValues> = getCurrentOverflowAmountCache(force);\r\n let preMeasureViewportOverflowState: ViewportOverflowState | undefined;\r\n\r\n if (showNativeOverlaidScrollbarsChanged && _nativeScrollbarStyling) {\r\n if (showNativeOverlaidScrollbars) {\r\n removeClass(_viewport, classNameViewportScrollbarStyling);\r\n } else {\r\n addClass(_viewport, classNameViewportScrollbarStyling);\r\n }\r\n }\r\n\r\n if (adjustFlexboxGlue) {\r\n preMeasureViewportOverflowState = getViewportOverflowState(showNativeOverlaidScrollbars);\r\n fixFlexboxGlue(preMeasureViewportOverflowState, !!heightIntrinsic);\r\n }\r\n\r\n if (\r\n _sizeChanged ||\r\n _paddingStyleChanged ||\r\n _contentMutation ||\r\n showNativeOverlaidScrollbarsChanged ||\r\n directionChanged\r\n ) {\r\n const [redoViewportArrange, undoViewportArrangeOverflowState] = undoViewportArrange(\r\n showNativeOverlaidScrollbars,\r\n directionIsRTL,\r\n preMeasureViewportOverflowState\r\n );\r\n const [viewportSizeFraction, viewportSizeFractionCahnged] = (viewportSizeFractionCache =\r\n updateViewportSizeFraction(force));\r\n const [viewportScrollSize, viewportScrollSizeChanged] = (viewportScrollSizeCache =\r\n updateViewportScrollSizeCache(force));\r\n const viewportContentSize = clientSize(_viewport);\r\n let arrangedViewportScrollSize = viewportScrollSize;\r\n let arrangedViewportClientSize = viewportContentSize;\r\n\r\n redoViewportArrange();\r\n\r\n // if re measure is required (only required if content arrange strategy is used)\r\n if (\r\n (viewportScrollSizeChanged ||\r\n viewportSizeFractionCahnged ||\r\n showNativeOverlaidScrollbarsChanged) &&\r\n undoViewportArrangeOverflowState &&\r\n !showNativeOverlaidScrollbars &&\r\n arrangeViewport(\r\n undoViewportArrangeOverflowState,\r\n viewportScrollSize,\r\n viewportSizeFraction,\r\n directionIsRTL\r\n )\r\n ) {\r\n arrangedViewportClientSize = clientSize(_viewport);\r\n arrangedViewportScrollSize = scrollSize(_viewport);\r\n }\r\n\r\n overflowAmuntCache = updateOverflowAmountCache(\r\n getOverflowAmount(\r\n {\r\n w: max(viewportScrollSize.w, arrangedViewportScrollSize.w),\r\n h: max(viewportScrollSize.h, arrangedViewportScrollSize.h),\r\n }, // scroll size\r\n {\r\n w: arrangedViewportClientSize.w + max(0, viewportContentSize.w - viewportScrollSize.w),\r\n h: arrangedViewportClientSize.h + max(0, viewportContentSize.h - viewportScrollSize.h),\r\n }, // client size\r\n viewportSizeFraction\r\n ),\r\n force\r\n );\r\n }\r\n\r\n const [viewportSizeFraction, viewportSizeFractionChanged] = viewportSizeFractionCache;\r\n const [viewportScrollSize, viewportScrollSizeChanged] = viewportScrollSizeCache;\r\n const [overflowAmount, overflowAmountChanged] = overflowAmuntCache;\r\n const [overflow, overflowChanged] = checkOption>('overflow');\r\n\r\n if (\r\n _paddingStyleChanged ||\r\n viewportSizeFractionChanged ||\r\n viewportScrollSizeChanged ||\r\n overflowAmountChanged ||\r\n overflowChanged ||\r\n showNativeOverlaidScrollbarsChanged ||\r\n directionChanged ||\r\n adjustFlexboxGlue\r\n ) {\r\n const viewportStyle: StyleObject = {\r\n marginRight: 0,\r\n marginBottom: 0,\r\n marginLeft: 0,\r\n width: '',\r\n overflowY: '',\r\n overflowX: '',\r\n };\r\n\r\n const viewportOverflowState = setViewportOverflowState(\r\n showNativeOverlaidScrollbars,\r\n overflowAmount,\r\n overflow,\r\n viewportStyle\r\n );\r\n const viewportArranged = arrangeViewport(\r\n viewportOverflowState,\r\n viewportScrollSize,\r\n viewportSizeFraction,\r\n directionIsRTL\r\n );\r\n hideNativeScrollbars(viewportOverflowState, directionIsRTL, viewportArranged, viewportStyle);\r\n\r\n if (adjustFlexboxGlue) {\r\n fixFlexboxGlue(viewportOverflowState, !!heightIntrinsic);\r\n }\r\n\r\n // TODO: hide host overflow if scroll x or y and no padding element there\r\n // TODO: Test without content\r\n // TODO: Test without padding\r\n // TODO: overflow: visible on padding / host if overflow visible on both axis\r\n\r\n style(_viewport, viewportStyle);\r\n\r\n _setLifecycleCommunication({\r\n _viewportOverflowScrollCache: updateOverflowScrollCache(\r\n viewportOverflowState._overflowScroll\r\n ),\r\n _viewportOverflowAmountCache: overflowAmuntCache,\r\n });\r\n }\r\n };\r\n};\r\n","import {\r\n XY,\r\n WH,\r\n TRBL,\r\n CacheValues,\r\n each,\r\n hasOwnProperty,\r\n isNumber,\r\n scrollLeft,\r\n scrollTop,\r\n assignDeep,\r\n keys,\r\n isBoolean,\r\n} from 'support';\r\nimport { OSOptions } from 'options';\r\nimport { getEnvironment } from 'environment';\r\nimport { StructureSetup } from 'setups/structureSetup';\r\nimport { lifecycleHubOservers, UpdateObserverOptions } from 'lifecycles/lifecycleHubObservers';\r\nimport { createTrinsicLifecycle } from 'lifecycles/trinsicLifecycle';\r\nimport { createPaddingLifecycle } from 'lifecycles/paddingLifecycle';\r\nimport { createOverflowLifecycle } from 'lifecycles/overflowLifecycle';\r\nimport { StyleObject, PartialOptions } from 'typings';\r\nimport { ScrollbarsSetup } from 'setups/scrollbarsSetup';\r\nimport { TriggerEventListener } from 'eventListeners';\r\n\r\nexport type LifecycleCheckOption = (path: string) => LifecycleOptionInfo;\r\n\r\nexport type Lifecycle = (\r\n updateHints: LifecycleUpdateHints,\r\n checkOption: LifecycleCheckOption,\r\n force: boolean\r\n) => Partial | void;\r\n\r\nexport type LifecycleOptionInfo = [T, boolean];\r\n\r\nexport interface LifecycleCommunication {\r\n _paddingInfo: {\r\n _absolute: boolean;\r\n _padding: TRBL;\r\n };\r\n _viewportPaddingStyle: StyleObject;\r\n _viewportOverflowScrollCache: CacheValues>;\r\n _viewportOverflowAmountCache: CacheValues>;\r\n}\r\n\r\nexport interface LifecycleUpdateHints {\r\n _sizeChanged: boolean;\r\n _hostMutation: boolean;\r\n _contentMutation: boolean;\r\n _paddingStyleChanged: boolean;\r\n _directionIsRTL: CacheValues;\r\n _heightIntrinsic: CacheValues;\r\n}\r\n\r\nexport interface LifecycleHubState {\r\n _overflowAmount: WH;\r\n}\r\n\r\nexport interface LifecycleHubInstance {\r\n _update(changedOptions: PartialOptions, force?: boolean): void;\r\n _state(): LifecycleHubState;\r\n _destroy(): void;\r\n}\r\n\r\nexport interface LifecycleHub {\r\n _options: OSOptions;\r\n _structureSetup: StructureSetup;\r\n // whether the \"viewport arrange\" strategy must be used (true if no native scrollbar hiding and scrollbars are overlaid)\r\n _doViewportArrange: boolean;\r\n _getLifecycleCommunication(): LifecycleCommunication;\r\n _setLifecycleCommunication(newLifecycleCommunication?: Partial): void;\r\n}\r\n\r\nconst getPropByPath = (obj: any, path: string): T =>\r\n obj\r\n ? path.split('.').reduce((o, prop) => (o && hasOwnProperty(o, prop) ? o[prop] : undefined), obj)\r\n : undefined;\r\n\r\nconst applyForceToCache = (cacheValues: CacheValues, force?: boolean): CacheValues => [\r\n cacheValues[0],\r\n force || cacheValues[1],\r\n cacheValues[2],\r\n];\r\nconst booleanCacheValuesFallback: CacheValues = [false, false, false];\r\nconst lifecycleCommunicationFallback: LifecycleCommunication = {\r\n _paddingInfo: {\r\n _absolute: false,\r\n _padding: {\r\n t: 0,\r\n r: 0,\r\n b: 0,\r\n l: 0,\r\n },\r\n },\r\n _viewportOverflowScrollCache: [\r\n {\r\n x: false,\r\n y: false,\r\n },\r\n false,\r\n ],\r\n _viewportOverflowAmountCache: [\r\n {\r\n w: 0,\r\n h: 0,\r\n },\r\n false,\r\n ],\r\n _viewportPaddingStyle: {\r\n marginRight: 0,\r\n marginBottom: 0,\r\n marginLeft: 0,\r\n paddingTop: 0,\r\n paddingRight: 0,\r\n paddingBottom: 0,\r\n paddingLeft: 0,\r\n },\r\n};\r\n\r\nconst prepareUpdateHints = (\r\n leading: Required,\r\n adaptive?: Partial,\r\n force?: boolean\r\n): Required => {\r\n const result = {};\r\n const finalAdaptive = adaptive || {};\r\n const objKeys = keys(leading).concat(keys(finalAdaptive));\r\n\r\n each(objKeys, (key) => {\r\n const leadingValue = leading[key];\r\n const adaptiveValue = finalAdaptive[key];\r\n result[key] = isBoolean(leadingValue)\r\n ? !!force || !!leadingValue || !!adaptiveValue\r\n : applyForceToCache(leadingValue || booleanCacheValuesFallback, force);\r\n });\r\n\r\n return result as Required;\r\n};\r\n\r\nconst createOverflowChangedArgs = (overflowAmount: WH, overflowScroll: XY) => ({\r\n amount: {\r\n x: overflowAmount.w,\r\n y: overflowAmount.h,\r\n },\r\n overflow: {\r\n x: overflowAmount.w > 0,\r\n y: overflowAmount.h > 0,\r\n },\r\n scrollableOverflow: assignDeep({}, overflowScroll),\r\n});\r\n\r\nexport const createLifecycleHub = (\r\n options: OSOptions,\r\n triggerListener: TriggerEventListener,\r\n structureSetup: StructureSetup,\r\n scrollbarsSetup: ScrollbarsSetup\r\n): LifecycleHubInstance => {\r\n let lifecycleCommunication = lifecycleCommunicationFallback;\r\n let updateObserverOptions: UpdateObserverOptions;\r\n let destroyObservers: () => void;\r\n const { _viewport } = structureSetup._targetObj;\r\n const {\r\n _nativeScrollbarStyling,\r\n _nativeScrollbarIsOverlaid,\r\n _flexboxGlue,\r\n _addListener: addEnvironmentListener,\r\n _removeListener: removeEnvironmentListener,\r\n } = getEnvironment();\r\n const doViewportArrange =\r\n !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);\r\n const instance: LifecycleHub = {\r\n _options: options,\r\n _structureSetup: structureSetup,\r\n _doViewportArrange: doViewportArrange,\r\n _getLifecycleCommunication: () => lifecycleCommunication,\r\n _setLifecycleCommunication(newLifecycleCommunication) {\r\n lifecycleCommunication = assignDeep({}, lifecycleCommunication, newLifecycleCommunication);\r\n },\r\n };\r\n const lifecycles: Lifecycle[] = [\r\n createTrinsicLifecycle(instance),\r\n createPaddingLifecycle(instance),\r\n createOverflowLifecycle(instance),\r\n ];\r\n\r\n const updateLifecycles = (\r\n updateHints: Partial,\r\n changedOptions?: Partial,\r\n force?: boolean\r\n ) => {\r\n const initialUpdateHints = prepareUpdateHints(\r\n assignDeep(\r\n {\r\n _sizeChanged: false,\r\n _hostMutation: false,\r\n _contentMutation: false,\r\n _paddingStyleChanged: false,\r\n _directionIsRTL: booleanCacheValuesFallback,\r\n _heightIntrinsic: booleanCacheValuesFallback,\r\n },\r\n updateHints\r\n ),\r\n {},\r\n force\r\n );\r\n const checkOption: LifecycleCheckOption = (path) => [\r\n getPropByPath(options, path),\r\n force || getPropByPath(changedOptions, path) !== undefined,\r\n ];\r\n const adjustScrollOffset = doViewportArrange || !_flexboxGlue;\r\n const scrollOffsetX = adjustScrollOffset && scrollLeft(_viewport);\r\n const scrollOffsetY = adjustScrollOffset && scrollTop(_viewport);\r\n\r\n // place before updating lifecycles because of possible flushing of debounce\r\n if (updateObserverOptions) {\r\n updateObserverOptions(checkOption);\r\n }\r\n\r\n let adaptivedUpdateHints: Required = initialUpdateHints;\r\n each(lifecycles, (lifecycle) => {\r\n adaptivedUpdateHints = prepareUpdateHints(\r\n adaptivedUpdateHints,\r\n lifecycle(adaptivedUpdateHints, checkOption, !!force) || {},\r\n force\r\n );\r\n });\r\n\r\n if (isNumber(scrollOffsetX)) {\r\n scrollLeft(_viewport, scrollOffsetX);\r\n }\r\n if (isNumber(scrollOffsetY)) {\r\n scrollTop(_viewport, scrollOffsetY);\r\n }\r\n\r\n const {\r\n _viewportOverflowAmountCache: overflowAmountCache,\r\n _viewportOverflowScrollCache: overflowScrollCache,\r\n } = lifecycleCommunication;\r\n const [overflowAmount, overflowAmountChanged, prevOverflowAmount] = overflowAmountCache;\r\n const [overflowScroll, overflowScrollChanged, prevOverflowScroll] = overflowScrollCache;\r\n\r\n if (overflowAmountChanged || overflowScrollChanged) {\r\n triggerListener(\r\n 'overflowChanged',\r\n assignDeep({}, createOverflowChangedArgs(overflowAmount, overflowScroll), {\r\n previous: createOverflowChangedArgs(prevOverflowAmount!, prevOverflowScroll!),\r\n })\r\n );\r\n }\r\n\r\n triggerListener('updated', {\r\n updateHints: {\r\n sizeChanged: adaptivedUpdateHints._sizeChanged,\r\n contentMutation: adaptivedUpdateHints._contentMutation,\r\n hostMutation: adaptivedUpdateHints._hostMutation,\r\n directionChanged: adaptivedUpdateHints._directionIsRTL[1],\r\n heightIntrinsicChanged: adaptivedUpdateHints._heightIntrinsic[1],\r\n },\r\n changedOptions: changedOptions || {},\r\n force: !!force,\r\n });\r\n };\r\n // eslint-disable-next-line prefer-const\r\n [updateObserverOptions, destroyObservers] = lifecycleHubOservers(instance, updateLifecycles);\r\n\r\n const update = (changedOptions: Partial, force?: boolean) =>\r\n updateLifecycles({}, changedOptions, force);\r\n const envUpdateListener = update.bind(0, {}, true);\r\n addEnvironmentListener(envUpdateListener);\r\n\r\n return {\r\n _update: update,\r\n _state: () => ({\r\n _overflowAmount: lifecycleCommunication._viewportOverflowAmountCache[0],\r\n }),\r\n _destroy() {\r\n destroyObservers();\r\n removeEnvironmentListener(envUpdateListener);\r\n\r\n structureSetup._destroy();\r\n scrollbarsSetup._destroy();\r\n },\r\n };\r\n};\r\n","import { assignDeep, each, isArray } from 'support';\r\nimport { OverlayScrollbars, OverlayScrollbarsStatic } from 'overlayscrollbars';\r\n\r\nexport type OSPluginInstance =\r\n | Record\r\n | ((staticObj: OverlayScrollbarsStatic, instanceObj: OverlayScrollbars) => void);\r\nexport type OSPlugin = [string, T];\r\n\r\nconst pluginRegistry: Record = {};\r\n\r\nexport const getPlugins = () => assignDeep({}, pluginRegistry);\r\n\r\nexport const addPlugin = (addedPlugin: OSPlugin | OSPlugin[]) =>\r\n each((isArray(addedPlugin) ? addedPlugin : [addedPlugin]) as OSPlugin[], (plugin) => {\r\n pluginRegistry[plugin[0]] = plugin[1];\r\n });\r\n","import { each, hasOwnProperty, keys, push, isEmptyObject } from 'support/utils';\r\nimport { type, isArray, isUndefined, isPlainObject, isString } from 'support/utils/types';\r\nimport { PlainObject, PartialOptions } from 'typings';\r\n\r\nexport type OptionsObjectType = Record;\r\nexport type OptionsFunctionType = (this: unknown, ...args: unknown[]) => unknown;\r\nexport type OptionsTemplateType = ExtractPropsKey<\r\n OptionsTemplateTypeMap,\r\n T\r\n>;\r\nexport type OptionsTemplateTypes = keyof OptionsTemplateTypeMap;\r\nexport type OptionsTemplateNativeTypes = OptionsTemplateTypeMap[keyof OptionsTemplateTypeMap];\r\n\r\nexport type OptionsTemplateValue = T extends string\r\n ? string extends T\r\n ? OptionsTemplateValueNonEnum\r\n : string\r\n : OptionsTemplateValueNonEnum;\r\n\r\nexport type OptionsTemplate = {\r\n [P in keyof T]: T[P] extends OptionsObjectType\r\n ? OptionsTemplate\r\n : T[P] extends OptionsTemplateNativeTypes\r\n ? OptionsTemplateValue\r\n : never;\r\n};\r\n\r\nexport type OptionsValidationResult = [\r\n PartialOptions, // validated\r\n Record // foreign\r\n];\r\n\r\ntype OptionsTemplateTypeMap = {\r\n __TPL_boolean_TYPE__: boolean;\r\n __TPL_number_TYPE__: number;\r\n __TPL_string_TYPE__: string;\r\n __TPL_array_TYPE__: Array | ReadonlyArray;\r\n __TPL_function_TYPE__: OptionsFunctionType;\r\n __TPL_null_TYPE__: null;\r\n __TPL_object_TYPE__: OptionsObjectType;\r\n};\r\n\r\ntype OptionsTemplateValueNonEnum =\r\n | OptionsTemplateType\r\n | [OptionsTemplateType, ...Array];\r\n\r\ntype ExtractPropsKey = {\r\n [P in keyof T]: TProps extends T[P] ? P : never;\r\n}[keyof T];\r\n\r\ntype OptionsTemplateTypesDictionary = {\r\n readonly boolean: OptionsTemplateType;\r\n readonly number: OptionsTemplateType;\r\n readonly string: OptionsTemplateType;\r\n readonly array: OptionsTemplateType>;\r\n readonly object: OptionsTemplateType;\r\n readonly function: OptionsTemplateType;\r\n readonly null: OptionsTemplateType;\r\n};\r\n\r\n/**\r\n * A prefix and suffix tuple which serves as recognition pattern for template types.\r\n */\r\nconst templateTypePrefixSuffix: readonly [string, string] = ['__TPL_', '_TYPE__'];\r\n\r\n/**\r\n * A object which serves as a mapping for \"normal\" types and template types.\r\n * Key = normal type string\r\n * value = template type string\r\n */\r\nconst optionsTemplateTypes: OptionsTemplateTypesDictionary = [\r\n 'boolean',\r\n 'number',\r\n 'string',\r\n 'array',\r\n 'object',\r\n 'function',\r\n 'null',\r\n].reduce((result, item) => {\r\n result[item] = templateTypePrefixSuffix[0] + item + templateTypePrefixSuffix[1];\r\n return result;\r\n}, {} as OptionsTemplateTypesDictionary);\r\n\r\n/**\r\n * Validates the given options object according to the given template object and returns a object which looks like:\r\n * {\r\n * foreign : a object which consists of properties which aren't defined inside the template. (foreign properties)\r\n * validated : a object which consists only of valid properties. (property name is inside the template and value has a correct type)\r\n * }\r\n * @param template The template according to which the options object shall be validated.\r\n * @param options The options object which shall be validated.\r\n * @param optionsDiff When provided the returned validated object will only have properties which are different to this objects properties.\r\n * Example (assume all properties are valid to the template):\r\n * Options object : { a: 'a', b: 'b', c: 'c' }\r\n * optionsDiff object : { a: 'a', b: 'b', c: undefined }\r\n * Returned validated object : { c: 'c' }\r\n * Because the value of the properties a and b didn't change, they aren't included in the returned object.\r\n * Without the optionsDiff object the returned validated object would be: { a: 'a', b: 'b', c: 'c' }\r\n * @param doWriteErrors True if errors shall be logged into the console, false otherwise.\r\n * @param propPath The propertyPath which lead to this object. (used for error logging)\r\n */\r\nconst validateRecursive = (\r\n template: OptionsTemplate,\r\n options: PartialOptions,\r\n doWriteErrors?: boolean,\r\n propPath?: string\r\n): OptionsValidationResult => {\r\n const validatedOptions: PartialOptions = {};\r\n const optionsCopy: PartialOptions = { ...options };\r\n const props = keys(template).filter((prop) => hasOwnProperty(options, prop));\r\n\r\n each(props, (prop: Extract) => {\r\n const optionsValue: any = options[prop];\r\n const templateValue: PlainObject | string | OptionsTemplateTypes | Array =\r\n template[prop];\r\n const templateIsComplex = isPlainObject(templateValue);\r\n const propPrefix = propPath ? `${propPath}.` : '';\r\n\r\n // if the template has a object as value, it means that the options are complex (verschachtelt)\r\n if (templateIsComplex && isPlainObject(optionsValue)) {\r\n const [validated, foreign] = validateRecursive(\r\n templateValue as T,\r\n optionsValue,\r\n doWriteErrors,\r\n propPrefix + prop\r\n );\r\n validatedOptions[prop] = validated as any;\r\n optionsCopy[prop] = foreign as any;\r\n\r\n each([optionsCopy, validatedOptions], (value) => {\r\n if (isEmptyObject(value[prop])) {\r\n delete value[prop];\r\n }\r\n });\r\n } else if (!templateIsComplex) {\r\n let isValid = false;\r\n const errorEnumStrings: Array = [];\r\n const errorPossibleTypes: Array = [];\r\n const optionsValueType = type(optionsValue);\r\n const templateValueArr: Array = !isArray(templateValue)\r\n ? [templateValue as string | OptionsTemplateTypes]\r\n : (templateValue as Array);\r\n\r\n each(templateValueArr, (currTemplateType) => {\r\n // if currType value isn't inside possibleTemplateTypes we assume its a enum string value\r\n let typeString: string | undefined;\r\n each(optionsTemplateTypes, (value: string, key: string) => {\r\n if (value === currTemplateType) {\r\n typeString = key;\r\n }\r\n });\r\n const isEnumString = isUndefined(typeString);\r\n if (isEnumString && isString(optionsValue)) {\r\n // split it into a array which contains all possible values for example: [\"yes\", \"no\", \"maybe\"]\r\n const enumStringSplit = currTemplateType.split(' ');\r\n isValid = !!enumStringSplit.find((possibility) => possibility === optionsValue);\r\n\r\n // build error message\r\n push(errorEnumStrings, enumStringSplit);\r\n } else {\r\n isValid = optionsTemplateTypes[optionsValueType] === currTemplateType;\r\n }\r\n\r\n // build error message\r\n push(errorPossibleTypes, isEnumString ? optionsTemplateTypes.string : typeString!);\r\n\r\n // continue if invalid, break if valid\r\n return !isValid;\r\n });\r\n\r\n if (isValid) {\r\n validatedOptions[prop] = optionsValue;\r\n } else if (doWriteErrors) {\r\n console.warn(\r\n `${\r\n `The option \"${propPrefix}${prop}\" wasn't set, because it doesn't accept the type [ ${optionsValueType.toUpperCase()} ] with the value of \"${optionsValue}\".\\r\\n` +\r\n `Accepted types are: [ ${errorPossibleTypes.join(', ').toUpperCase()} ].\\r\\n`\r\n }${\r\n errorEnumStrings.length > 0\r\n ? `\\r\\nValid strings are: [ ${errorEnumStrings.join(', ')} ].`\r\n : ''\r\n }`\r\n );\r\n }\r\n\r\n delete optionsCopy[prop];\r\n }\r\n });\r\n\r\n return [validatedOptions, optionsCopy]; // optionsCopy equals now to foreign options\r\n};\r\n\r\n/**\r\n * Validates the given options object according to the given template object and returns a tuple which looks like:\r\n * [\r\n * validated : a object which consists only of valid properties. (property name is inside the template and value has a correct type)\r\n * foreign : a object which consists of properties which aren't defined inside the template. (foreign properties)\r\n * ]\r\n * @param template The template according to which the options object shall be validated.\r\n * @param options The options object which shall be validated.\r\n * @param doWriteErrors True if errors shall be logged into the console, false otherwise.\r\n */\r\nconst validateOptions = (\r\n template: OptionsTemplate,\r\n options: PartialOptions,\r\n doWriteErrors?: boolean\r\n): OptionsValidationResult => validateRecursive(template, options, doWriteErrors);\r\n\r\nexport { validateOptions, optionsTemplateTypes };\r\n","import { OSPlugin } from 'plugins';\r\nimport {\r\n OSOptions,\r\n ResizeBehavior,\r\n OverflowBehavior,\r\n VisibilityBehavior,\r\n AutoHideBehavior,\r\n} from 'options';\r\nimport {\r\n validateOptions,\r\n OptionsTemplate,\r\n OptionsTemplateValue,\r\n optionsTemplateTypes as oTypes,\r\n} from 'plugins/optionsValidation/validation';\r\nimport { PartialOptions } from 'typings';\r\n\r\nconst numberAllowedValues: OptionsTemplateValue = oTypes.number;\r\nconst booleanAllowedValues: OptionsTemplateValue = oTypes.boolean;\r\nconst arrayNullValues: OptionsTemplateValue | null> = [oTypes.array, oTypes.null];\r\nconst stringArrayNullAllowedValues: OptionsTemplateValue | null> = [\r\n oTypes.string,\r\n oTypes.array,\r\n oTypes.null,\r\n];\r\nconst resizeAllowedValues: OptionsTemplateValue = 'none both horizontal vertical';\r\nconst overflowAllowedValues: OptionsTemplateValue =\r\n 'hidden scroll visible visible-hidden';\r\nconst scrollbarsVisibilityAllowedValues: OptionsTemplateValue =\r\n 'visible hidden auto';\r\nconst scrollbarsAutoHideAllowedValues: OptionsTemplateValue =\r\n 'never scroll leavemove';\r\n\r\nconst optionsTemplate: OptionsTemplate = {\r\n resize: resizeAllowedValues, // none || both || horizontal || vertical || n || b ||\r\n paddingAbsolute: booleanAllowedValues, // true || false\r\n updating: {\r\n elementEvents: arrayNullValues, // array of tuples || null\r\n attributes: arrayNullValues,\r\n debounce: [oTypes.number, oTypes.array, oTypes.null], // number || number array || null\r\n },\r\n overflow: {\r\n x: overflowAllowedValues, // visible-hidden || visible-scroll || hidden || scrol\r\n y: overflowAllowedValues, // visible-hidden || visible-scroll || hidden || scrol\r\n },\r\n scrollbars: {\r\n visibility: scrollbarsVisibilityAllowedValues, // visible || hidden || auto || v ||\r\n autoHide: scrollbarsAutoHideAllowedValues, // never || scroll || leave || move ||\r\n autoHideDelay: numberAllowedValues, // number\r\n dragScroll: booleanAllowedValues, // true || false\r\n clickScroll: booleanAllowedValues, // true || false\r\n touch: booleanAllowedValues, // true || false\r\n },\r\n textarea: {\r\n dynWidth: booleanAllowedValues, // true || false\r\n dynHeight: booleanAllowedValues, // true || false\r\n inheritedAttrs: stringArrayNullAllowedValues, // string || array || nul\r\n },\r\n nativeScrollbarsOverlaid: {\r\n show: booleanAllowedValues, // true || false\r\n initialize: booleanAllowedValues, // true || false\r\n },\r\n callbacks: {\r\n onUpdated: [oTypes.function, oTypes.null],\r\n },\r\n};\r\n\r\nexport type OptionsValidationPluginInstance = {\r\n _: (options: PartialOptions, doWriteErrors?: boolean) => PartialOptions;\r\n};\r\n\r\nexport const optionsValidationPluginName = '__osOptionsValidationPlugin';\r\n\r\nexport const optionsValidationPlugin: OSPlugin = [\r\n optionsValidationPluginName,\r\n {\r\n _: (options: PartialOptions, doWriteErrors?: boolean) => {\r\n const [validated, foreign] = validateOptions(optionsTemplate, options, doWriteErrors);\r\n return { ...foreign, ...validated };\r\n },\r\n },\r\n];\r\n","import { OverlayScrollbars } from 'overlayscrollbars';\r\n\r\nconst targets: Set = new Set();\r\nconst targetInstanceMap: WeakMap = new WeakMap();\r\n\r\n/**\r\n * Adds the given OverlayScrollbars instance to the given element.\r\n * @param target The element which is the target of the OverlayScrollbars instance.\r\n * @param osInstance The OverlayScrollbars instance.\r\n */\r\nexport const addInstance = (target: Element, osInstance: OverlayScrollbars): void => {\r\n targetInstanceMap.set(target, osInstance);\r\n targets.add(target);\r\n};\r\n\r\n/**\r\n * Removes a OverlayScrollbars instance from the given element.\r\n * @param target The element from which its OverlayScrollbars instance shall be removed.\r\n */\r\nexport const removeInstance = (target: Element): void => {\r\n targetInstanceMap.delete(target);\r\n targets.delete(target);\r\n};\r\n\r\n/**\r\n * Gets the OverlayScrollbars from the given element or undefined if it doesn't have one.\r\n * @param target The element of which its OverlayScrollbars instance shall be get.\r\n */\r\nexport const getInstance = (target: Element): OverlayScrollbars | undefined =>\r\n targetInstanceMap.get(target);\r\n\r\n/**\r\n * Gets a Map which represents all active OverayScrollbars instances.\r\n * The Key is the element and the value is the instance.\r\n */\r\nexport const allInstances = (): ReadonlyMap => {\r\n const validTargetInstanceMap: Map = new Map();\r\n\r\n targets.forEach((target: Element) => {\r\n /* istanbul ignore else */\r\n if (targetInstanceMap.has(target)) {\r\n validTargetInstanceMap.set(target, targetInstanceMap.get(target)!);\r\n }\r\n });\r\n\r\n targets.clear();\r\n\r\n validTargetInstanceMap.forEach((instance: OverlayScrollbars, validTarget: Element) => {\r\n targets.add(validTarget);\r\n });\r\n\r\n return validTargetInstanceMap;\r\n};\r\n","import { OSOptions } from 'options';\r\nimport { each, from, isArray, keys, XY } from 'support';\r\nimport { PartialOptions } from 'typings';\r\n/*\r\nonScrollStart : null,\r\nonScroll : null,\r\nonScrollStop : null,\r\nonOverflowChanged : null,\r\nonOverflowAmountChanged : null, // fusion with onOverflowChanged\r\nonDirectionChanged : null, // gone\r\nonContentSizeChanged : null, // gone\r\nonHostSizeChanged : null, // gone\r\n*/\r\n\r\nexport interface OnUpdatedEventListenerArgs {\r\n updateHints: {\r\n sizeChanged: boolean;\r\n hostMutation: boolean;\r\n contentMutation: boolean;\r\n directionChanged: boolean;\r\n heightIntrinsicChanged: boolean;\r\n };\r\n changedOptions: PartialOptions;\r\n force: boolean;\r\n}\r\n\r\nexport interface OnOverflowChangedEventListenerArgs {\r\n overflow: XY; // whether there is an overflow\r\n scrollableOverflow: XY; // whether there is an scrollable overflow\r\n amount: XY; // the overflow amount in pixel\r\n previous: {\r\n overflow: XY;\r\n scrollableOverflow: XY;\r\n amount: XY;\r\n };\r\n}\r\n\r\nexport interface EventListenerArgsMap {\r\n initialized: false;\r\n initializationWithdrawn: false;\r\n overflowChanged: OnOverflowChangedEventListenerArgs;\r\n updated: OnUpdatedEventListenerArgs;\r\n destroyed: false;\r\n}\r\n\r\nexport type OSEventListener = (\r\n args: EventListenerArgsMap[N]\r\n) => void;\r\n\r\nexport type AddEventListener = (\r\n name: N,\r\n listener: OSEventListener | OSEventListener[]\r\n) => () => void;\r\n\r\nexport type RemoveEventListener = (\r\n name?: N,\r\n listener?: OSEventListener | OSEventListener[]\r\n) => void;\r\n\r\nexport type TriggerEventListener = (\r\n name: N,\r\n args: EventListenerArgsMap[N]\r\n) => void;\r\n\r\nexport type EventListenersHub = [AddEventListener, RemoveEventListener, TriggerEventListener];\r\n\r\nexport type EventListenersMap = {\r\n [K in keyof EventListenerArgsMap]?: OSEventListener | OSEventListener[];\r\n};\r\n\r\nconst manageListener = (\r\n callback: (listener?: OSEventListener) => void,\r\n listener?: OSEventListener | OSEventListener[]\r\n) => {\r\n each(isArray(listener) ? listener : [listener], callback);\r\n};\r\n\r\nexport const createEventListenerHub = (\r\n initialEventListeners?: EventListenersMap\r\n): EventListenersHub => {\r\n const events = new Map>>();\r\n const removeEvent: RemoveEventListener = (name?, listener?) => {\r\n if (name) {\r\n const eventSet = events.get(name);\r\n\r\n manageListener((currListener) => {\r\n if (eventSet) {\r\n eventSet[currListener ? 'delete' : 'clear'](currListener!);\r\n }\r\n }, listener);\r\n } else {\r\n events.forEach((eventSet) => {\r\n eventSet.clear();\r\n });\r\n events.clear();\r\n }\r\n };\r\n const addEvent: AddEventListener = (name, listener) => {\r\n const eventSet = events.get(name) || new Set();\r\n events.set(name, eventSet);\r\n\r\n manageListener((currListener) => {\r\n eventSet.add(currListener!);\r\n }, listener);\r\n\r\n return removeEvent.bind(0, name, listener as any);\r\n };\r\n const triggerEvent: TriggerEventListener = (name, args?) => {\r\n const eventSet = events.get(name);\r\n\r\n each(from(eventSet), (event) => {\r\n if (args) {\r\n event(args);\r\n } else {\r\n (event as () => void)();\r\n }\r\n });\r\n };\r\n\r\n const initialListenerKeys = keys(initialEventListeners) as (keyof EventListenerArgsMap)[];\r\n each(initialListenerKeys, (key) => {\r\n addEvent(key, initialEventListeners![key] as any);\r\n });\r\n\r\n return [addEvent, removeEvent, triggerEvent];\r\n};\r\n","import { OSTarget, OSInitializationObject, PartialOptions } from 'typings';\r\nimport { assignDeep, isEmptyObject, each, isFunction, keys, isHTMLElement } from 'support';\r\nimport { createStructureSetup, StructureSetup } from 'setups/structureSetup';\r\nimport { createScrollbarsSetup, ScrollbarsSetup } from 'setups/scrollbarsSetup';\r\nimport { createLifecycleHub } from 'lifecycles/lifecycleHub';\r\nimport { getOptionsDiff, OSOptions } from 'options';\r\nimport { getEnvironment } from 'environment';\r\nimport {\r\n getPlugins,\r\n addPlugin,\r\n optionsValidationPluginName,\r\n OSPlugin,\r\n OptionsValidationPluginInstance,\r\n} from 'plugins';\r\nimport { addInstance, getInstance, removeInstance } from 'instances';\r\nimport {\r\n createEventListenerHub,\r\n EventListenersMap,\r\n AddEventListener,\r\n RemoveEventListener,\r\n} from 'eventListeners';\r\n\r\nexport interface OverlayScrollbarsStatic {\r\n (\r\n target: OSTarget | OSInitializationObject,\r\n options?: PartialOptions,\r\n eventListeners?: EventListenersMap\r\n ): OverlayScrollbars;\r\n\r\n extend(osPlugin: OSPlugin | OSPlugin[]): void;\r\n}\r\n\r\nexport interface OverlayScrollbars {\r\n options(): OSOptions;\r\n options(newOptions?: PartialOptions): OSOptions;\r\n\r\n update(force?: boolean): void;\r\n destroy(): void;\r\n\r\n state(): any;\r\n\r\n on: AddEventListener;\r\n off: RemoveEventListener;\r\n}\r\n\r\nexport const OverlayScrollbars: OverlayScrollbarsStatic = (\r\n target,\r\n options?,\r\n eventListeners?\r\n): OverlayScrollbars => {\r\n const { _getDefaultOptions, _nativeScrollbarIsOverlaid } = getEnvironment();\r\n const plugins = getPlugins();\r\n const instanceTarget = isHTMLElement(target) ? target : target.target;\r\n const potentialInstance = getInstance(instanceTarget);\r\n if (potentialInstance) {\r\n return potentialInstance;\r\n }\r\n\r\n const optionsValidationPlugin = plugins[\r\n optionsValidationPluginName\r\n ] as OptionsValidationPluginInstance;\r\n const validateOptions = (newOptions?: PartialOptions) => {\r\n const opts = newOptions || {};\r\n const validate = optionsValidationPlugin && optionsValidationPlugin._;\r\n return validate ? validate(opts, true) : opts;\r\n };\r\n const currentOptions: OSOptions = assignDeep({}, _getDefaultOptions(), validateOptions(options));\r\n const [addEvent, removeEvent, triggerEvent] = createEventListenerHub(eventListeners);\r\n\r\n if (\r\n _nativeScrollbarIsOverlaid.x &&\r\n _nativeScrollbarIsOverlaid.y &&\r\n !currentOptions.nativeScrollbarsOverlaid.initialize\r\n ) {\r\n triggerEvent('initializationWithdrawn', false);\r\n }\r\n\r\n const structureSetup: StructureSetup = createStructureSetup(target);\r\n const scrollbarsSetup: ScrollbarsSetup = createScrollbarsSetup(target, structureSetup);\r\n const lifecycleHub = createLifecycleHub(\r\n currentOptions,\r\n triggerEvent,\r\n structureSetup,\r\n scrollbarsSetup\r\n );\r\n\r\n const instance: OverlayScrollbars = {\r\n options(newOptions?: PartialOptions) {\r\n if (newOptions) {\r\n const changedOptions = getOptionsDiff(currentOptions, validateOptions(newOptions));\r\n\r\n if (!isEmptyObject(changedOptions)) {\r\n assignDeep(currentOptions, changedOptions);\r\n lifecycleHub._update(changedOptions);\r\n }\r\n }\r\n return currentOptions;\r\n },\r\n on: addEvent,\r\n off: removeEvent,\r\n state: () => lifecycleHub._state(),\r\n update(force?: boolean) {\r\n lifecycleHub._update({}, force);\r\n },\r\n destroy: () => {\r\n lifecycleHub._destroy();\r\n removeInstance(instanceTarget);\r\n removeEvent();\r\n triggerEvent('destroyed', false);\r\n },\r\n };\r\n\r\n each(keys(plugins), (pluginName) => {\r\n const pluginInstance = plugins[pluginName];\r\n if (isFunction(pluginInstance)) {\r\n pluginInstance(OverlayScrollbars, instance);\r\n }\r\n });\r\n\r\n instance.update(true);\r\n\r\n addInstance(instanceTarget, instance);\r\n\r\n triggerEvent('initialized', false);\r\n\r\n return instance;\r\n};\r\n\r\nOverlayScrollbars.extend = addPlugin;\r\n"],"names":["createCache","options","update","_initialValue","_equal","_alwaysUpdateValues","_value","_previous","cacheUpdateContextual","newValue","force","curr","newVal","changed","cacheUpdateIsolated","getCurrentCache","ElementNodeType","Node","ELEMENT_NODE","Object","prototype","toString","hasOwnProperty","isUndefined","obj","undefined","isNull","type","call","replace","toLowerCase","isNumber","isString","isBoolean","isFunction","isArray","Array","isObject","isArrayLike","length","lengthCorrectFormat","isPlainObject","key","cstr","ctor","ctorProto","hasOwnConstructor","hasIsPrototypeOf","isHTMLElement","instanceofObj","window","HTMLElement","nodeType","isElement","Element","each","source","callback","i","keys","indexOf","arr","item","fromIndex","push","array","items","arrayIsSingleItem","apply","from","result","Set","forEach","value","elm","isEmptyArray","runEach","p1","runFn","fn","prop","assignDeep","target","object1","object2","object3","object4","object5","object6","sources","copy","copyIsArray","src","clone","isEmptyObject","name","getSetProp","topLeft","fallback","attr","attrName","getAttribute","setAttribute","removeAttr","removeAttribute","scrollLeft","scrollTop","elmPrototype","find","selector","rootElm","document","querySelectorAll","is","matches","msMatchesSelector","contents","childNodes","parent","parentElement","before","parentElm","preferredAnchor","insertedElms","anchor","fragment","createDocumentFragment","insertedElm","previousSibling","appendChild","firstChild","nextSibling","insertBefore","appendChildren","node","children","prependChildren","insertedNodes","insertAfter","removeElements","nodes","e","removeChild","createDiv","classNames","div","createElement","createDOM","html","createdDiv","innerHTML","trim","firstLetterToUpper","str","charAt","toUpperCase","slice","getDummyStyle","style","cssPrefixes","jsPrefixes","jsCache","cssCache","cssProperty","uppercasedName","elmStyle","prefix","prefixWithoutDashes","resultPossibilities","resultPossibility","jsAPI","MutationObserverConstructor","IntersectionObserverConstructor","ResizeObserverConstructor","cAF","rAF","rnothtmlwhite","classListAction","className","action","clazz","classes","match","classList","addClass","add","removeClass","remove","diffClass","classNameA","classNameB","classNameASplit","split","classNameBSplit","tempObj","zeroObj","w","h","windowSize","innerWidth","innerHeight","offsetSize","offsetWidth","offsetHeight","clientSize","clientWidth","clientHeight","scrollSize","scrollWidth","scrollHeight","getBoundingClientRect","passiveEventsSupport","supportPassiveEvents","addEventListener","defineProperty","get","splitEventNames","eventNames","off","listener","capture","eventName","removeEventListener","on","doSupportPassiveEvents","passive","_passive","_capture","once","_once","offListeners","nativeOptions","finalListener","evt","bind","stopPropagation","preventDefault","stopAndPrevent","equal","a","b","props","propMutation","compareA","compareB","equalWH","equalXY","equalTRBL","equalBCRWH","round","Math","clearTimeouts","id","clearTimeout","noop","debounce","functionToDebounce","timeoutId","maxTimeoutId","prevArguments","latestArguments","_timeout","_maxDelay","_mergeParams","setT","setTimeout","invokeFunctionToDebounce","args","mergeParms","flush","debouncedFn","arguments","finalTimeout","hasTimeout","finalMaxWait","hasMaxWait","setTimeoutFn","mergeParamsResult","invokedArgs","boundInvoke","_flush","cssNumber","opacity","zindex","parseToZeroOrNumber","toFloat","num","parseFloat","parseInt","Number","isNaN","adaptCSSVal","val","getCSSVal","computedStyle","getPropertyValue","setCSSVal","setProperty","styles","getSingleStyle","getStyles","getStylesResult","getComputedStyle","reduce","topRightBottomLeft","propertyPrefix","propertySuffix","finalPrefix","finalSuffix","top","right","bottom","left","t","r","l","x","y","absoluteCoordinates","rect","pageYOffset","pageXOffset","classNameEnvironment","classNameEnvironmentFlexboxGlue","classNameEnvironmentFlexboxGlueMax","classNameHost","classNamePadding","classNameViewport","classNameViewportArrange","classNameContent","classNameViewportScrollbarStyling","classNameSizeObserver","classNameSizeObserverAppear","classNameSizeObserverListener","classNameSizeObserverListenerScroll","classNameSizeObserverListenerItem","classNameSizeObserverListenerItemFinal","classNameTrinsicObserver","classNameScrollbar","classNameScrollbarHorizontal","classNameScrollbarVertical","classNameScrollbarTrack","classNameScrollbarHandle","_extends","module","assign","exports","__esModule","stringify","JSON","_","Error","defaultOptions","resize","paddingAbsolute","updating","elementEvents","attributes","overflow","scrollbars","visibility","autoHide","autoHideDelay","dragScroll","clickScroll","touch","textarea","dynWidth","dynHeight","inheritedAttrs","nativeScrollbarsOverlaid","show","initialize","callbacks","onUpdated","getOptionsDiff","currOptions","newOptions","diff","optionsKeys","concat","optionKey","currOptionValue","newOptionValue","isDiff","environmentInstance","abs","diffBiggerThanOne","valOne","valTwo","absValOne","absValTwo","getNativeScrollbarSize","body","measureElm","cSize","oSize","getNativeScrollbarStyling","testElm","ex","getRtlScrollBehavior","childElm","strHidden","overflowX","overflowY","direction","parentOffset","childOffset","childOffsetAfterScroll","n","getFlexboxGlue","minOffsetsizeParent","minOffsetsize","supportsMin","maxOffsetsizeParent","maxOffsetsize","supportsMax","getWindowDPR","dDPI","screen","deviceXDPI","sDPI","logicalXDPI","devicePixelRatio","getDefaultInitializationStrategy","nativeScrollbarStyling","_host","_viewport","_padding","_content","_scrollbarsSlot","createEnvironment","envDOM","envElm","envChildElm","onChangedListener","nativeScrollbarSize","nativeScrollbarIsOverlaid","defaultInitializationStrategy","initializationStrategy","defaultDefaultOptions","env","_nativeScrollbarSize","_nativeScrollbarIsOverlaid","_nativeScrollbarStyling","_cssCustomProperties","_rtlScrollBehavior","_flexboxGlue","_addListener","_removeListener","delete","_getInitializationStrategy","_setInitializationStrategy","newInitializationStrategy","_getDefaultOptions","_setDefaultOptions","newDefaultOptions","_defaultInitializationStrategy","_defaultDefaultOptions","size","dpr","scrollbarSize","sizeNew","deltaSize","deltaAbsSize","deltaAbsRatio","dprNew","deltaIsBigger","difference","dprChanged","isZoom","newScrollbarSize","getEnvironment","contentArrangeCounter","unwrap","createUniqueViewportArrangeElement","create","staticCreationFromStrategy","initializationValue","strategy","elementClass","dynamicCreationFromStrategy","defaultValue","takeInitializationValue","createStructureSetup","hostInitializationStrategy","viewportInitializationStrategy","paddingInitializationStrategy","contentInitializationStrategy","targetIsElm","targetStructureInitialization","targetElement","isTextarea","isBody","ownerDocument","bodyElm","wnd","defaultView","evaluatedTargetObj","_target","host","viewport","padding","content","_viewportArrange","ctx","_windowElm","_documentElm","_htmlElm","_bodyElm","_isTextarea","_isBody","_targetIsElm","generatedElements","elementIsGenerated","destroyFns","isTextareaHostGenerated","targetContents","contentSlot","_targetObj","_targetCtx","_destroy","generateScrollbarDOM","scrollbarClassName","scrollbar","track","handle","_scrollbar","_track","_handle","createScrollbarsSetup","structureSetup","environmentScrollbarSlot","initializationScrollbarSlot","scrollbarsSlot","initializationScrollbarSlotResult","evaluatedScrollbarSlot","horizontalScrollbarStructure","verticalScrollbarStructure","horizontalScrollbar","verticalScrollbar","_horizontalScrollbarStructure","_verticalScrollbarStructure","animationStartEventName","scrollEventName","scrollAmount","getElmDirectionIsRTL","domRectHasDimensions","height","width","createSizeObserver","onSizeChangedCallback","_direction","observeDirectionChange","_appear","observeAppearChange","rtlScrollBehavior","baseElements","sizeObserver","listenerElement","getIsDirectionRTL","currVal","updateResizeObserverContentRectCache","onSizeChangedCallbackProxy","sizeChangedContext","isResizeObserverCall","hasDirectionCache","skip","appear","doDirectionScroll","pop","contentRect","currRContentRect","prevContentRect","hasDimensions","hadDimensions","rtl","_sizeChanged","_directionIsRTLCache","appearCallback","directionIsRTLCache","resizeObserverInstance","observe","disconnect","observerElementChildren","observerElementChildrenRoot","shrinkElement","lastChild","expandElement","expandElementChild","cacheSize","currSize","isDirty","rAFId","reset","onResized","onScroll","scrollEvent","updateDirectionIsRTLCache","event","directionIsRTLCacheValues","directionIsRTL","directionIsRTLChanged","isHeightIntrinsic","ioEntryOrSize","isIntersecting","intersectionRatio","createTrinsicObserver","onTrinsicChangedCallback","trinsicObserver","updateHeightIntrinsicCache","triggerOnTrinsicChangedCallback","updateValue","heightIntrinsic","heightIntrinsicChanged","intersectionObserverInstance","entries","root","onSizeChanged","newSize","createEventContentChange","eventContentChange","map","destroyed","_updateElements","getElements","eventElmList","elements","entry","entryEventNames","entryOff","set","WeakMap","createDOMObserver","isContentObserver","isConnected","_attributes","_styleChangingAttributes","_eventContentChange","_nestedTargetSelector","_ignoreTargetChange","_ignoreNestedTargetChange","_ignoreContentChange","destroyEventContentChange","updateEventContentChangeElements","finalAttributes","finalStyleChangingAttributes","observedAttributes","observerCallback","mutations","ignoreTargetChange","ignoreContentChange","targetChangedAttrs","totalAddedNodes","targetStyleChanged","contentChanged","childListChanged","mutation","attributeName","mutationTarget","oldValue","addedNodes","isAttributesType","isChildListType","targetIsMutationTarget","attributeValue","attributeChanged","styleChangingAttrChanged","notOnlyAttrChanged","contentAttrChanged","isNestedTarget","baseAssertion","contentFinalChanged","mutationObserver","attributeOldValue","attributeFilter","subtree","childList","characterData","_update","takeRecords","ignorePrefix","viewportAttrsFromTarget","baseStyleChangingAttrsTextarea","baseStyleChangingAttrs","addedOrRemovedClass","lifecycleHubOservers","instance","updateLifecycles","debounceTimeout","debounceMaxDelay","contentMutationObserver","_structureSetup","contentMutationObserverAttr","updateLifecyclesWithDebouncedAdaptiveUpdateHints","prev","prevSizeChanged","prevHostMutation","_hostMutation","prevContentMutation","_contentMutation","currSizeChanged","currvHostMutation","currContentMutation","merged","updateViewportAttrsFromHost","attribute","hostAttr","onTrinsicChanged","_heightIntrinsic","updateFn","_directionIsRTL","onContentMutation","contentChangedTroughEvent","onHostMutation","destroyTrinsicObserver","destroySizeObserver","hostMutationObserver","updateOptions","checkOption","elementEventsChanged","attributesChanged","debounceValue","debounceChanged","updateContentMutationObserver","timeout","maxWait","createTrinsicLifecycle","lifecycleHub","updateHints","display","createPaddingLifecycle","_setLifecycleCommunication","updatePaddingCache","currentPaddingCache","paddingChanged","directionChanged","paddingAbsoluteChanged","contentMutation","paddingStyleChanged","paddingRelative","paddingHorizontal","paddingVertical","paddingStyle","marginRight","marginBottom","marginLeft","viewportStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","_paddingInfo","_absolute","_viewportPaddingStyle","_paddingStyleChanged","max","overlaidScrollbarsHideOffset","whCacheOptions","xyCacheOptions","sizeFraction","viewportOffsetSize","viewportRect","fractionalPixelRatioTollerance","setAxisOverflowStyle","horizontal","overflowAmount","behavior","styleObj","overflowKey","behaviorIsVisible","behaviorIsVisibleHidden","behaviorIsScroll","hasOverflow","_visible","_behavior","getOverflowAmount","viewportScrollSize","viewportClientSize","viewportSizeFraction","createOverflowLifecycle","_doViewportArrange","_getLifecycleCommunication","updateViewportSizeFraction","getCurrentViewportSizeFraction","updateViewportScrollSizeCache","getCurrentViewportScrollSizeCache","updateOverflowAmountCache","getCurrentOverflowAmountCache","updateOverflowScrollCache","fixFlexboxGlue","viewportOverflowState","_overflowScroll","_scrollbarsHideOffset","hostSizeFraction","hostClientSize","isContentBox","fractionalClientHeight","subtractXScrollbar","getViewportOverflowState","showNativeOverlaidScrollbars","viewportStyleObj","overlaidX","overlaidY","determineOverflow","arrangeHideOffset","scroll","nonScrollbarStylingHideOffset","scrollbarsHideOffset","_scrollbarsHideOffsetArrange","setViewportOverflowState","xVisible","xVisibleBehavior","yVisible","yVisibleBehavior","arrangeViewport","arrangeX","arrangeY","hideOffsetX","hideOffsetY","viewportPaddingStyle","viewportArrangeHorizontalPaddingKey","viewportArrangeHorizontalPaddingValue","viewportArrangeVerticalPaddingValue","fractionalContentWidth","fractionalContenHeight","arrangeSize","sheet","cssRules","insertRule","ruleStyle","hideNativeScrollbars","viewportArrange","horizontalMarginKey","viewportHorizontalPaddingKey","horizontalMarginValue","verticalMarginValue","horizontalPaddingValue","verticalPaddingValue","undoViewportArrange","finalViewportOverflowState","finalPaddingStyle","assignProps","prevStyle","showNativeOverlaidScrollbarsOption","showNativeOverlaidScrollbarsChanged","adjustFlexboxGlue","viewportSizeFractionCache","viewportScrollSizeCache","overflowAmuntCache","preMeasureViewportOverflowState","redoViewportArrange","undoViewportArrangeOverflowState","viewportSizeFractionCahnged","viewportScrollSizeChanged","viewportContentSize","arrangedViewportScrollSize","arrangedViewportClientSize","viewportSizeFractionChanged","overflowAmountChanged","overflowChanged","viewportArranged","_viewportOverflowScrollCache","_viewportOverflowAmountCache","getPropByPath","path","o","applyForceToCache","cacheValues","booleanCacheValuesFallback","lifecycleCommunicationFallback","prepareUpdateHints","leading","adaptive","finalAdaptive","objKeys","leadingValue","adaptiveValue","createOverflowChangedArgs","overflowScroll","amount","scrollableOverflow","createLifecycleHub","triggerListener","scrollbarsSetup","lifecycleCommunication","updateObserverOptions","destroyObservers","addEnvironmentListener","removeEnvironmentListener","doViewportArrange","_options","newLifecycleCommunication","lifecycles","changedOptions","initialUpdateHints","adjustScrollOffset","scrollOffsetX","scrollOffsetY","adaptivedUpdateHints","lifecycle","overflowAmountCache","overflowScrollCache","prevOverflowAmount","overflowScrollChanged","prevOverflowScroll","previous","sizeChanged","hostMutation","envUpdateListener","_state","_overflowAmount","pluginRegistry","getPlugins","addPlugin","addedPlugin","plugin","templateTypePrefixSuffix","optionsTemplateTypes","numberAllowedValues","oTypes","number","booleanAllowedValues","boolean","arrayNullValues","null","stringArrayNullAllowedValues","string","resizeAllowedValues","overflowAllowedValues","scrollbarsVisibilityAllowedValues","scrollbarsAutoHideAllowedValues","function","optionsValidationPluginName","targets","targetInstanceMap","addInstance","osInstance","removeInstance","getInstance","manageListener","createEventListenerHub","initialEventListeners","events","Map","removeEvent","eventSet","currListener","clear","addEvent","triggerEvent","initialListenerKeys","OverlayScrollbars","eventListeners","plugins","instanceTarget","potentialInstance","optionsValidationPlugin","validateOptions","opts","validate","currentOptions","state","destroy","pluginName","pluginInstance","extend"],"mappings":"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"} \ No newline at end of file diff --git a/packages/overlayscrollbars/dist/overlayscrollbars.min.js b/packages/overlayscrollbars/dist/overlayscrollbars.min.js index bdfe2bf..9ff2aea 100644 --- a/packages/overlayscrollbars/dist/overlayscrollbars.min.js +++ b/packages/overlayscrollbars/dist/overlayscrollbars.min.js @@ -1 +1 @@ -!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(n="undefined"!=typeof globalThis?globalThis:n||self).OverlayScrollbars=t()}(this,(function(){"use strict";function n(n,t){var r,i=n.o,e=n.u,o=n.v,u=i,a=function(n,t){var i=u,a=n,c=t||(e?!e(i,a):i!==a);return(c||o)&&(u=a,r=i),[u,c,r]};return[t?function(n){return a(t(u,r),n)}:a,function(n){return[u,!!n,r]}]}var t=Node.ELEMENT_NODE,r=Object.prototype,i=r.toString,e=r.hasOwnProperty;function o(n){return void 0===n}function u(n){return null===n}function a(n){return"number"==typeof n}function c(n){return"string"==typeof n}function f(n){return"boolean"==typeof n}function l(n){return"function"==typeof n}function v(n){return Array.isArray(n)}function s(n){return"object"==typeof n&&!v(n)&&!u(n)}function d(n){var t=!!n&&n.length,r=a(t)&&t>-1&&t%1==0;return!!(v(n)||!l(n)&&r)&&(!(t>0&&s(n))||t-1 in n)}function _(n){if(!n||!s(n)||"object"!==function(n){return o(n)||u(n)?""+n:i.call(n).replace(/^\[object (.+)\]$/,"$1").toLowerCase()}(n))return!1;var t,r="constructor",a=n[r],c=a&&a.prototype,f=e.call(n,r),l=c&&e.call(c,"isPrototypeOf");if(a&&!f&&!l)return!1;for(t in n);return o(t)||e.call(n,t)}function g(n){var r=window.HTMLElement;return!!n&&(r?n instanceof r:n.nodeType===t)}function h(n){var r=window.Element;return!!n&&(r?n instanceof r:n.nodeType===t)}function w(n,t){if(d(n))for(var r=0;r0;i=u[e++];)o=!!r(n.classList,i)&&o}return o},on=function(n,t){en(n,t,(function(n,t){return n.add(t)}))},un=function(n,t){en(n,t,(function(n,t){return n.remove(t)}))},an={w:0,h:0},cn=function(){return{w:window.innerWidth,h:window.innerHeight}},fn=function(n){return n?{w:n.offsetWidth,h:n.offsetHeight}:an},ln=function(n){return n?{w:n.clientWidth,h:n.clientHeight}:an},vn=function(n){return n?{w:n.scrollWidth,h:n.scrollHeight}:an},sn=function(n){return n.getBoundingClientRect()},dn=function(n){return n.split(" ")},_n=function(n,t,r,i){w(dn(t),(function(t){n.removeEventListener(t,r,i)}))},gn=function(n,t,r,i){var e=function(){if(o(j)){j=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){j=!0}}))}catch(n){}}return j}(),u=e&&i&&i.s||!1,a=i&&i._||!1,c=i&&i.g||!1,f=[],l=e?{passive:u,capture:a}:a;return w(dn(t),(function(t){var i=c?function(e){n.removeEventListener(t,i,a),r&&r(e)}:r;b(f,_n.bind(null,n,t,i,a)),n.addEventListener(t,i,l)})),O.bind(0,f)},hn=function(n){return function(n){return n.stopPropagation()}(n)||function(n){return n.preventDefault()}(n)},wn=function(n,t,r,i){if(n&&t){var e=!0;return w(r,(function(r){(i?i(n[r]):n[r])!==(i?i(t[r]):t[r])&&(e=!1)})),e}return!1},pn=function(n,t){return wn(n,t,["w","h"])},bn=function(n,t){return wn(n,t,["t","r","b","l"])},mn=function(n,t,r){return wn(n,t,["width","height"],r&&function(n){return Math.round(n)})},yn=function(n){n&&window.clearTimeout(n),n&&nn(n)},On=function(){},xn=function(n,t){var r,i,e,o,u=t||{},c=u.p,f=u.m,v=u.O,s=window.setTimeout,d=function(t){yn(r),yn(i),i=r=e=void 0,n.apply(this,t)},_=function(n){return v&&e?v(e,n):n},g=function(){r&&d(_(o)||o)},h=function(){var n=m(arguments),t=l(c)?c():c,u=a(t)&&t>=0;if(u){var v=l(f)?f():f,h=a(v)&&v>=0,w=t>0?s:tn,p=_(n),b=p||n,y=d.bind(0,b);yn(r),r=w(y,t),h&&!i&&(i=s(g,v)),e=o=b}else d(n)};return h.S=g,h},Sn={opacity:1,zindex:1},Cn=function(n,t){var r=t?parseFloat(n):parseInt(n,10);return Number.isNaN(r)?0:r},zn=function(n,t,r){return null!=t?t[r]||t.getPropertyValue(r):n.style[r]},Ln=function(n,t,r){try{if(n){var i=n.style;o(i[t])?i.setProperty(t,r):i[t]=function(n,t){return!Sn[n.toLowerCase()]&&a(t)?t+"px":t}(t,r)}}catch(e){}};function Mn(n,t){var r=c(t);if(v(t)||r){var i=r?"":{};if(n){var e=window.getComputedStyle(n,null);i=r?zn(n,e,t):t.reduce((function(t,r){return t[r]=zn(n,e,r),t}),i)}return i}w(S(t),(function(r){return Ln(n,r,t[r])}))}var In=function(n,t,r){var i=t?t+"-":"",e=r?"-"+r:"",o=i+"top"+e,u=i+"right"+e,a=i+"bottom"+e,c=i+"left"+e,f=Mn(n,[o,u,a,c]);return{t:Cn(f[o]),r:Cn(f[u]),b:Cn(f[a]),l:Cn(f[c])}},An={x:0,y:0},jn=function(n){var t=n?sn(n):0;return t?{x:t.left+window.pageYOffset,y:t.top+window.pageXOffset}:An},Tn="os-environment",Rn=Tn+"-flexbox-glue",En=Rn+"-max",Vn="os-host",kn="os-padding",Bn="os-viewport",Pn=Bn+"-arrange",Dn="os-content",Hn=Bn+"-scrollbar-styled",Yn="os-size-observer",qn=Yn+"-appear",Fn=Yn+"-listener",Nn=Fn+"-scroll",Wn=Fn+"-item",Xn=Wn+"-final",Un="os-trinsic-observer",$n="os-scrollbar",Gn=$n+"-horizontal",Jn=$n+"-vertical",Kn="os-scrollbar-track",Qn="os-scrollbar-handle";var Zn={exports:{}};!function(n){function t(){return n.exports=t=Object.assign?Object.assign.bind():function(n){for(var t=1;t
')[0],r=t.firstChild,i=new Set,e=at(n,t),o=function(n){var t=!1;on(n,Hn);try{t="none"===Mn(n,G("scrollbar-width"))||"none"===window.getComputedStyle(n,"::-webkit-scrollbar").getPropertyValue("display")}catch(r){}return t}(t),u={x:0===e.x,y:0===e.y},a={L:null,M:null,I:null,A:null,j:null},c=a,f=et,l={T:e,R:u,V:o,k:"-1"===Mn(t,"zIndex"),B:ct(t,r),P:ft(t,r),D:function(n){i.add(n)},H:function(n){i.delete(n)},Y:function(){return rt({},c)},q:function(n){c=C({},c,n)},F:function(){return rt({},f)},N:function(n){f=C({},f,n)},W:a,X:f};if(M(t,"style"),Y(t),!(o||u.x&&u.y)){var v=cn(),s=lt(),d=e;window.addEventListener("resize",(function(){if(i.size){var r=cn(),e={w:r.w-v.w,h:r.h-v.h};if(0===e.w&&0===e.h)return;var o={w:ot(e.w),h:ot(e.h)},u={w:ot(ut(r.w/(v.w/100))),h:ot(ut(r.h/(v.h/100)))},a=lt(),c=o.w>2&&o.h>2,f=(_=u.h,g=ot(u.w),h=ot(_),!(g!==h&&g+1!==h&&g-1!==h));if(c&&f&&(a!==s&&s>0)){var l=tt.T=at(n,t);Y(t),d.x===l.x&&d.y===l.y||O(i),d=l}v=r,s=a}var _,g,h}))}return l},st=function(){return tt||(tt=vt()),tt},dt=0,_t=function(n){P(k(n),V(n)),Y(n)},gt=function(){var n=st(),t=n.V,r=n.R,i=!!(!n.k&&!t&&(r.x||r.y))&&document.createElement("style");return i&&(L(i,"id",Pn+"-"+dt),dt++),i},ht=function(n,t,r,i){return t||(l(r)?r(n):r)||q(i)},wt=function(n,t,r,i,e){var o=f(t)||t?t:l(r)?r(n):r;return null===o?!!e&&q(i):!0===o?q(i):o},pt=function(n){var t,r,i=st(),e=i.Y,o=i.V,u=e(),a=u.L,c=u.M,f=u.I,l=u.A,v=g(n),s=n,d=v?n:s.target,_=E(d,"textarea"),h=!_&&E(d,"body"),w=d.ownerDocument,m=w.body,y=w.defaultView,x={U:d,L:_?ht(d,s.host,a,Vn):d,M:ht(d,s.viewport,c,Bn),I:wt(d,s.padding,f,kn,!o),A:wt(d,s.content,l,Dn,!1),$:gt()},C={G:y,J:w,K:k(m),Z:m,nn:_,tn:h,rn:v},z=S(x).reduce((function(n,t){var r=x[t];return b(n,!(!r||k(r))&&r)}),[]),L=function(n){return n?p(z,n)>-1:null},M=x.U,I=x.L,A=x.I,j=x.M,T=x.A,R=x.$,D=[],q=_&&L(I),F=_?M:V([T,j,A,I,M].find((function(n){return!1===L(n)}))),N=T||j;return q&&(H(M,I),b(D,(function(){H(I,M),Y(I)}))),P(N,F),P(I,A),P(A||I,j),P(j,T),on(I,Vn),on(A,kn),on(j,Bn),on(T,Dn),b(D,(function(){v?(P(I,V(N)),Y(A||j),un(I,Vn)):(L(T)&&_t(T),L(j)&&_t(j),L(A)&&_t(A),un(I,Vn),un(A,kn),un(j,Bn),un(T,Dn))})),o&&b(D,un.bind(0,j,Hn)),R&&(r=R,B(k(t=j),t,r),b(D,Y.bind(0,R))),{in:x,en:C,un:function(){O(D)}}},bt=function(n){var t=q($n+" "+n),r=q(Kn),i=q(Qn);return P(t,r),P(r,i),{an:t,cn:r,fn:i}},mt="animationstart",yt="scroll",Ot=3333333,xt=function(n){return"rtl"===Mn(n,"direction")},St=function(n){return n&&(n.height||n.width)},Ct=function(t,r,i){var e,o=i||{},u=o.ln,a=void 0!==u&&u,c=o.vn,l=void 0!==c&&c,d=st().B,_=F('
')[0],g=_.firstChild,h=xt.bind(0,_),w=n({o:void 0,v:!0,u:function(n,t){return!(!n||!St(n)&&St(t))}})[0],p=function(n){var t=v(n)&&n.length>0&&s(n[0]),i=!t&&f(n[0]),e=!1,o=!1,u=!0;if(t){var c=w(n.pop().contentRect),l=c[0],g=c[2],h=St(l);o=!St(g)&&h,u=!(e=!g||!h)}else i?u=n[1]:o=!0===n;if(a&&u){var p=i?n[0]:xt(_);I(_,p?d.n?-Ot:d.i?0:Ot:Ot),A(_,Ot)}e||r({sn:!i,dn:i?n:void 0,vn:!!o})},m=[],y=!!l&&p;if(Z){var x=new Z(p);x.observe(g),b(m,(function(){x.disconnect()}))}else{var S=F('
');P(g,S),on(g,Nn);var C,z=S[0],L=z.lastChild,M=z.firstChild,j=null==M?void 0:M.firstChild,T=fn(z),R=T,E=!1,V=function(){I(M,Ot),A(M,Ot),I(L,Ot),A(L,Ot)},k=function(n){C=0,E&&(T=R,p(!0===n))},B=function(n){R=fn(z),E=!n||!pn(R,T),n?(hn(n),E&&!C&&(nn(C),C=tn(k))):k(!1===n),V()};b(m,[gn(M,yt,B),gn(L,yt,B)]),Mn(j,{width:Ot,height:Ot}),V(),y=l?B.bind(0,!1):V}if(a){var H=(e=n({o:!h()},h))[0];b(m,gn(_,yt,(function(n){var t=H(),r=t[0];t[1]&&(un(g,"ltr rtl"),on(g,r?"rtl":"ltr"),p(t)),hn(n)})))}return y&&(on(_,qn),b(m,gn(_,mt,y,{g:!!Z}))),D(t,_),{un:function(){O(m),Y(_)},_n:function(n){return{gn:e?e[1](n):[!1,!1,!1]}}}},zt=function(n,t,r,i){var e=!1,o=i||{},u=o.hn,a=o.wn,f=o.pn,l=o.bn,v=o.mn,s=o.yn,d=o.On,_=function(n,t,r){var i,e=!1,o=function(o){r&&w(r.reduce((function(t,r){if(r){var i=r[0],e=r[1],u=e&&i&&(o?o(i):R(i,n));u&&u.length&&e&&c(e)&&b(t,[u,e.trim()],!0)}return t}),[]),(function(n){return w(n[0],(function(r){var o=n[1],u=i.get(r);if(u){var a=u[0],c=u[1];a===o&&c()}var f=gn(r,o,(function(n){e?(f(),i.delete(r)):t(n)}));i.set(r,[o,f])}))}))};return r&&(i=new WeakMap,o()),{un:function(){e=!0},xn:o}}(n,xn((function(){e&&r(!0)}),{p:33,m:99}),f),g=_.un,h=_.xn,m=a||[],O=(u||[]).concat(m),x=function(e){var o=(t?s:v)||On,u=d||On,a=[],f=[],_=!1,g=!1,O=!1;w(e,(function(r){var e=r.attributeName,v=r.target,s=r.type,d=r.oldValue,h=r.addedNodes,w="attributes"===s,y="childList"===s,x=n===v,S=w&&c(e)?L(v,e):0,C=0!==S&&d!==S,z=p(m,e)>-1&&C;if(t&&!x){var M=!w,I=w&&z,A=I&&l&&E(v,l),j=(A?!o(v,e,d,S):M||I)&&!u(r,!!A,n,i);b(f,h),g=g||j,O=O||y}!t&&x&&C&&!o(v,e,d,S)&&(b(a,e),_=_||z)})),O&&!y(f)&&h((function(n){return f.reduce((function(t,r){return b(t,R(n,r)),E(r,n)?b(t,r):t}),[])})),t?g&&r(!1):y(a)&&!_||r(a,_)},S=new K(x);return S.observe(n,{attributes:!0,attributeOldValue:!0,attributeFilter:O,subtree:t,childList:t,characterData:t}),e=!0,{un:function(){e&&(g(),S.disconnect(),e=!1)},Sn:function(){e&&x(S.takeRecords())}}},Lt="os-",Mt=["tabindex"],It=["wrap","cols","rows"],At=["id","class","style","open"],jt=function(n,t,r,i){var e,o,u,a,c;return!("class"!==t||!r||!i)&&!!(o=i,u=(e=r)&&e.split(" "),a=o&&o.split(" "),c={},w(u,(function(n){c[n]=1})),w(a,(function(n){c[n]?delete c[n]:c[n]=1})),S(c)).find((function(n){return 0!==n.indexOf(Lt)}))},Tt=function(t,r){var i,e,o,u=t.Cn,f=u.in,l=u.en,s=f.L,d=f.M,_=f.A,g=l.nn,h=st(),m=h.V,y=h.P,x=g?It:At.concat(It),S=xn(r,{p:function(){return i},m:function(){return e},O:function(n,t){var r=n[0],i=r.sn,e=r.zn,o=r.Ln,u=t[0],a=u.sn,c=u.zn,f=u.Ln;return[{sn:i||a,zn:e||c,Ln:o||f}]}}),C=function(n){w(n||Mt,(function(n){if(p(Mt,n)>-1){var t=L(s,n);c(t)?L(d,n,t):M(d,n)}}))},z=function(n){(n?r:S)({Ln:!0})},I=(_||!y)&&function(t,r){var i=q(Un),e=[],o=n({o:!1}),u=o[0],a=o[1],c=function(n){if(n){var t=u(0===(i=n).h||i.isIntersecting||i.intersectionRatio>0);t[1]&&r(t)}var i};if(Q){var f=new Q((function(n){n&&n.length>0&&c(n.pop())}),{root:t});f.observe(i),b(e,(function(){f.disconnect()}))}else{var l=function(){var n=fn(i);c(n)};b(e,Ct(i,l).un),l()}return D(t,i),{un:function(){O(e),Y(i)},_n:function(n){return{Mn:a(n)}}}}(s,(function(n){r({Mn:n})})),A=Ct(s,(function(n){var t=n.sn,i=n.dn,e=n.vn;(!t||e?r:S)({sn:t,gn:i})}),{vn:!0,ln:!m}),j=zt(s,!1,(function(n,t){t?S({zn:!0}):C(n)}),{wn:At,hn:At.concat(Mt),mn:jt});return C(),{In:I,An:A,jn:function(n){var t=n("updating.elementEvents"),r=t[0],u=t[1],c=n("updating.attributes"),f=c[0],l=c[1],s=n("updating.debounce"),g=s[0],h=s[1];if((u||l)&&(o&&(o.Sn(),o.un()),o=zt(_||d,!0,z,{wn:x.concat(f||[]),hn:x.concat(f||[]),pn:r,yn:jt})),h)if(S.S(),v(g)){var w=g[0],p=g[1];i=!!a(w)&&w,e=!!a(p)&&p}else a(g)?(i=g,e=!1):(i=!1,e=!1)},un:function(){o&&o.un(),I&&I.un(),A.un(),j.un()}}},Rt=function(t){var r=t.Cn,i=t.Tn,e=r.in,o=e.L,u=e.I,a=e.M,c=n({u:bn,o:In()},In.bind(0,o,"padding","")),f=c[0],l=c[1];return function(n,t,r){var e=l(r),o=e[0],c=e[1],v=st(),s=v.V,d=v.P,_=n.sn,g=n.gn,h=n.Ln,w=g[0],p=g[1],b=t("paddingAbsolute"),m=b[0],y=b[1];if(_||c||!d&&h){var O=f(r);o=O[0],c=O[1]}var x=y||p||c;if(x){var S=!m||!u&&!s,C=o.r+o.l,z=o.t+o.b,L={marginRight:S&&!w?-C:0,marginBottom:S?-z:0,marginLeft:S&&w?-C:0,top:S?-o.t:0,right:S?w?-o.r:"auto":0,left:S?w?"auto":-o.l:0,width:S?"calc(100% + "+C+"px)":""},M={paddingTop:S?o.t:0,paddingRight:S?o.r:0,paddingBottom:S?o.b:0,paddingLeft:S?o.l:0};Mn(u||a,L),Mn(a,M),i({Rn:{En:!S,I:o},Vn:u?M:rt({},L,M)})}return{kn:x}}},Et=Math.max,Vt=Math.abs,kt=Math.round,Bt=42,Pt={u:pn,o:{w:0,h:0}},Dt=function(n){var t=fn(n),r=sn(n);return{w:r.width-t.w,h:r.height-t.h}},Ht=function(){return window.devicePixelRatio%1==0?0:1},Yt=function(n,t,r,i){var e=n?"overflowX":"overflowY",o=0===r.indexOf("visible"),u="visible-hidden"===r,a="scroll"===r,c=t>0;return o&&(i[e]="visible"),a&&c&&(i[e]=r),{Bn:o,Pn:u?"hidden":"scroll"}},qt=function(t){var r=t.Cn,i=t.Dn,e=t.Hn,o=t.Tn,u=r.in,a=u.L,c=u.M,f=u.$,l=n(Pt,Dt.bind(0,c)),v=l[0],s=l[1],d=n(Pt,vn.bind(0,c)),_=d[0],g=d[1],h=n(Pt),p=h[0],b=h[1],m=function(n,t){if(Mn(c,{height:""}),t){var r=st().R,i=e().Rn,o=i.En,u=i.I,f=n.Yn,l=n.qn,v=Dt(a),s=ln(a),d="content-box"===Mn(c,"boxSizing"),_=o||d?u.b+u.t:0,g=s.h+(Vt(v.h)<1?v.h:0),h=!(r.x&&d);Mn(c,{height:g+(f.x&&h?l.x:0)-_})}},y=function(n,t){var r=st(),i=r.T,e=r.R,o=r.V,u=e.x,a=e.y,f=o||n?0:Bt,l=!t?Mn(c,["overflowX","overflowY"]):t,v={x:"scroll"===l.overflowX,y:"scroll"===l.overflowY},s={x:u?f:i.x,y:a?f:i.y};return{Yn:v,Fn:{x:u&&!!f,y:a&&!!f},qn:{x:v.x&&!o?s.x:0,y:v.y&&!o?s.y:0}}},O=function(n,t,r,o){if(i){var u=n.qn,a=n.Fn,l=a.x,v=a.y,s=u.x,d=u.y,_=e().Vn,g=_[o?"paddingRight":"paddingLeft"],h=_.paddingTop,w=t.w+(Vt(r.w)<1?r.w:0),p=t.h+(Vt(r.h)<1?r.h:0),b={w:d&&v?d+w-g+"px":"",h:s&&l?s+p-h+"px":""};if(f){var m=f.sheet;if(m){var y=m.cssRules;if(y){y.length||m.insertRule("#"+L(f,"id")+" + ."+Pn+"::before {}",0);var O=y[0].style;O.width=b.w,O.height=b.h}}}else Mn(c,{"--os-vaw":b.w,"--os-vah":b.h})}return i},x=function(n,t,r,i){var o=n.qn,u=n.Fn,a=u.x,c=u.y,f=o.x,l=o.y,v=e().Vn,s=t?"marginLeft":"marginRight",d=t?"paddingLeft":"paddingRight",_=v[s],g=v.marginBottom,h=v[d],w=v.paddingBottom;i.width="calc(100% + "+(l+-1*_)+"px)",i[s]=-l+_,i.marginBottom=-f+g,r&&(i[d]=h+(c?l:0),i.paddingBottom=w+(a?f:0))};return function(n,t,r){var u,a=n.gn,f=n.Mn,l=n.sn,d=n.zn,h=n.Ln,C=n.kn,z=st(),L=z.P,M=z.V,I=z.R,A=f[0],j=f[1],T=a[0],R=a[1],E=t("nativeScrollbarsOverlaid.show"),V=E[0],k=E[1],B=V&&I.x&&I.y,P=!L&&(l||h||d||k||j),D=s(r),H=g(r),Y=b(r);if(k&&M&&(B?un(c,Hn):on(c,Hn)),P&&(u=y(B),m(u,!!A)),l||C||h||k||R){var q=function(n,t,r){if(i){var o=r||y(n),u=e().Vn,a=st().P,f=o.Fn,l=f.x,v=f.y,s={},d=function(n){return w(n.split(" "),(function(n){s[n]=u[n]}))};a||(s.height=""),l&&d("marginBottom paddingTop paddingBottom"),v&&d("marginLeft marginRight paddingLeft paddingRight");var _=Mn(c,S(s));return un(c,Pn),Mn(c,s),[function(){x(o,t,i,_),Mn(c,_),on(c,Pn)},o]}return[On]}(B,T,u),F=q[0],N=q[1],W=D=v(r),X=W[0],U=W[1],$=H=_(r),G=$[0],J=$[1],K=ln(c),Q=G,Z=K;F(),(J||U||k)&&N&&!B&&O(N,G,X,T)&&(Z=ln(c),Q=vn(c)),Y=p(function(n,t,r){return{w:Et(0,kt(Et(0,n.w-t.w)-(Ht()||Et(0,r.w)))),h:Et(0,kt(Et(0,n.h-t.h)-(Ht()||Et(0,r.h))))}}({w:Et(G.w,Q.w),h:Et(G.h,Q.h)},{w:Z.w+Et(0,K.w-G.w),h:Z.h+Et(0,K.h-G.h)},X),r)}var nn=D,tn=nn[0],rn=nn[1],en=H,an=en[0],cn=en[1],fn=Y,sn=fn[0],dn=fn[1],_n=t("overflow"),gn=_n[0],hn=_n[1];if(C||rn||cn||dn||hn||k||R||P){var wn={marginRight:0,marginBottom:0,marginLeft:0,width:"",overflowY:"",overflowX:""},pn=function(n,t,r,i){var e=Yt(!0,t.w,r.x,i),o=e.Bn,u=e.Pn,a=Yt(!1,t.h,r.y,i),c=a.Bn,f=a.Pn;return o&&!c&&(i.overflowX=u),c&&!o&&(i.overflowY=f),y(n,i)}(B,sn,gn,wn),bn=O(pn,an,tn,T);x(pn,T,bn,wn),P&&m(pn,!!A),Mn(c,wn),o({Nn:pn.Yn,Wn:sn})}}},Ft=function(n,t){return n?t.split(".").reduce((function(n,t){return n&&x(n,t)?n[t]:void 0}),n):void 0},Nt=[!1,!1,!1],Wt={Rn:{En:!1,I:{t:0,r:0,b:0,l:0}},Nn:{x:!1,y:!1},Wn:{w:0,h:0},Vn:{marginRight:0,marginBottom:0,marginLeft:0,paddingTop:0,paddingRight:0,paddingBottom:0,paddingLeft:0}},Xt={},Ut=["__TPL_","_TYPE__"],$t=["boolean","number","string","array","object","function","null"].reduce((function(n,t){return n[t]=Ut[0]+t+Ut[1],n}),{});$t.number,$t.boolean,$t.array,$t.null,$t.string,$t.array,$t.null;$t.number,$t.array,$t.null,$t.function,$t.null;var Gt="__osOptionsValidationPlugin",Jt=new Set,Kt=new WeakMap,Qt=function(n,t){w(v(t)?t:[t],n)},Zt=function n(t,r){var i=g(t)?t:t.target,e=function(n){return Kt.get(n)}(i);if(e)return e;var o=st().F,u=C({},Xt),c=u[Gt],f=function(n){var t=n||{},r=c&&c.Xn;return r?r(t,!0):t},d=function(){var n=new Map,t=function(t,r){if(t){var i=n.get(t);Qt((function(n){i&&i[n?"delete":"clear"](n)}),r)}else n.forEach((function(n){n.clear()})),n.clear()};return[function(r,i){var e=n.get(r)||new Set;return n.set(r,e),Qt((function(n){e.add(n)}),i),t.bind(0,r,i)},t,function(t,r){var i=n.get(t);w(m(i),(function(n){n(r)}))}]}(),_=d[0],h=d[1],p=d[2],b=C({},o(),f(r)),y=pt(t),O=function(n,t){var r=(0,st().Y)().j,i=t.in,e=t.en,o=i.U,u=i.L,a=i.M,c=!e.rn&&n.scrollbarsSlot,f=(l(c)?c(o,u,a):c)||(l(r)?r(o,u,a):r)||u,v=bt(Gn),s=bt(Jn),d=v.an,_=s.an;return P(f,d),P(f,_),{Un:v,$n:s,un:function(){Y([d,_])}}}(t,y),z=function(n,t,r,i){var e,o,u=Wt,c=r.in.M,f=st(),l=f.V,v=f.R,s=f.P,d=f.D,_=f.H,g=!l&&(v.x||v.y),h={Gn:n,Cn:r,Dn:g,Hn:function(){return u},Tn:function(n){u=C({},u,n)}},p=[(e=h,o=e.Cn.in.A,function(n){var t=n.Mn,r=t[0],i=t[1];return i&&Mn(o,{height:r?"":"100%",display:r?"":"inline"}),{sn:i,Ln:i}}),Rt(h),qt(h)],b=function(r,i,e){var o=r||{},u=o.gn,f=o.Mn,l=o.sn,v=void 0===l?e||!1:l,d=o.zn,_=void 0===d?e||!1:d,h=o.Ln,b=void 0===h?e||!1:h,m=o.kn,S=void 0===m?e||!1:m,C=u||(y?y._n(e).gn:Nt),z=f||(O?O._n(e).Mn:Nt),L=function(t){return[Ft(n,t),e||void 0!==Ft(i,t)]},M=g||!s,j=M&&I(c),T=M&&A(c);x&&x(L),w(p,(function(n){var t=n({gn:C,Mn:z,sn:v,zn:_,Ln:b,kn:S},L,!!e)||{},r=t.sn,i=t.zn,o=t.Ln,u=t.kn;v=r||v,_=i||_,b=o||b,S=u||S})),a(j)&&I(c,j),a(T)&&A(c,T),t("updated",{updateHints:{sizeChanged:v,contentMutation:b,hostMutation:_,directionChanged:C[1],heightIntrinsicChanged:z[1]},changedOptions:i||{},force:!!e})},m=Tt(h,b),y=m.An,O=m.In,x=m.jn,S=m.un,z=function(n,t){return b({},n,t)},L=z.bind(0,{},!0);return d(L),console.log(st()),{Sn:z,Jn:function(){return{Kn:u.Wn}},un:function(){S(),_(L),r.un(),i.un()}}}(b,p,y,O),L={options:function(n){if(n){var t=function n(t,r){var i={};return w(S(r).concat(S(t)),(function(e){var o=t[e],u=r[e];if(s(o)&&s(u))C(i[e]={},n(o,u));else if(x(r,e)&&u!==o){var a=!0;if(v(o)||v(u))try{it(o)===it(u)&&(a=!1)}catch(c){}a&&(i[e]=u)}})),i}(b,f(n));(function(n){for(var t in n)return!1;return!0})(t)||(C(b,t),z.Sn(t))}return b},on:_,off:h,state:function(){return z.Jn()},update:function(n){z.Sn({},n)},destroy:function(){z.un(),function(n){Kt.delete(n),Jt.delete(n)}(i),h()}};return w(S(u),(function(t){var r=u[t];l(r)&&r(n,L)})),L.update(!0),function(n,t){Kt.set(n,t),Jt.add(n)}(i,L),L};return Zt.extend=function(n){return w(v(n)?n:[n],(function(n){Xt[n[0]]=n[1]}))},Zt})); \ No newline at end of file +!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(n="undefined"!=typeof globalThis?globalThis:n||self).OverlayScrollbars=t()}(this,(function(){"use strict";function n(n,t){var r,i=n.o,e=n.u,o=n.v,u=i,a=function(n,t){var i=u,a=n,c=t||(e?!e(i,a):i!==a);return(c||o)&&(u=a,r=i),[u,c,r]};return[t?function(n){return a(t(u,r),n)}:a,function(n){return[u,!!n,r]}]}var t=Node.ELEMENT_NODE,r=Object.prototype,i=r.toString,e=r.hasOwnProperty;function o(n){return void 0===n}function u(n){return null===n}function a(n){return"number"==typeof n}function c(n){return"string"==typeof n}function f(n){return"boolean"==typeof n}function l(n){return"function"==typeof n}function v(n){return Array.isArray(n)}function d(n){return"object"==typeof n&&!v(n)&&!u(n)}function s(n){var t=!!n&&n.length,r=a(t)&&t>-1&&t%1==0;return!!(v(n)||!l(n)&&r)&&(!(t>0&&d(n))||t-1 in n)}function _(n){if(!n||!d(n)||"object"!==function(n){return o(n)||u(n)?""+n:i.call(n).replace(/^\[object (.+)\]$/,"$1").toLowerCase()}(n))return!1;var t,r="constructor",a=n[r],c=a&&a.prototype,f=e.call(n,r),l=c&&e.call(c,"isPrototypeOf");if(a&&!f&&!l)return!1;for(t in n);return o(t)||e.call(n,t)}function g(n){var r=window.HTMLElement;return!!n&&(r?n instanceof r:n.nodeType===t)}function h(n){var r=window.Element;return!!n&&(r?n instanceof r:n.nodeType===t)}function w(n,t){if(s(n))for(var r=0;r0;i=u[e++];)o=!!r(n.classList,i)&&o}return o},on=function(n,t){en(n,t,(function(n,t){return n.add(t)}))},un=function(n,t){en(n,t,(function(n,t){return n.remove(t)}))},an={w:0,h:0},cn=function(){return{w:window.innerWidth,h:window.innerHeight}},fn=function(n){return n?{w:n.offsetWidth,h:n.offsetHeight}:an},ln=function(n){return n?{w:n.clientWidth,h:n.clientHeight}:an},vn=function(n){return n?{w:n.scrollWidth,h:n.scrollHeight}:an},dn=function(n){return n.getBoundingClientRect()},sn=function(n){return n.split(" ")},_n=function(n,t,r,i){w(sn(t),(function(t){n.removeEventListener(t,r,i)}))},gn=function(n,t,r,i){var e=function(){if(o(I)){I=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){I=!0}}))}catch(n){}}return I}(),u=e&&i&&i.s||!1,a=i&&i._||!1,c=i&&i.g||!1,f=[],l=e?{passive:u,capture:a}:a;return w(sn(t),(function(t){var i=c?function(e){n.removeEventListener(t,i,a),r&&r(e)}:r;b(f,_n.bind(null,n,t,i,a)),n.addEventListener(t,i,l)})),x.bind(0,f)},hn=function(n){return function(n){return n.stopPropagation()}(n)||function(n){return n.preventDefault()}(n)},wn=function(n,t,r,i){if(n&&t){var e=!0;return w(r,(function(r){(i?i(n[r]):n[r])!==(i?i(t[r]):t[r])&&(e=!1)})),e}return!1},pn=function(n,t){return wn(n,t,["w","h"])},bn=function(n,t){return wn(n,t,["t","r","b","l"])},mn=function(n,t,r){return wn(n,t,["width","height"],r&&function(n){return Math.round(n)})},yn=function(n){n&&window.clearTimeout(n),n&&nn(n)},xn=function(){},Sn=function(n,t){var r,i,e,o,u=t||{},c=u.p,f=u.m,v=u.S,d=window.setTimeout,s=function(t){yn(r),yn(i),i=r=e=void 0,n.apply(this,t)},_=function(n){return v&&e?v(e,n):n},g=function(){r&&s(_(o)||o)},h=function(){var n=m(arguments),t=l(c)?c():c,u=a(t)&&t>=0;if(u){var v=l(f)?f():f,h=a(v)&&v>=0,w=t>0?d:tn,p=_(n),b=p||n,y=s.bind(0,b);yn(r),r=w(y,t),h&&!i&&(i=d(g,v)),e=o=b}else s(n)};return h.O=g,h},On={opacity:1,zindex:1},Cn=function(n,t){var r=t?parseFloat(n):parseInt(n,10);return Number.isNaN(r)?0:r},zn=function(n,t,r){return null!=t?t[r]||t.getPropertyValue(r):n.style[r]},Mn=function(n,t,r){try{if(n){var i=n.style;o(i[t])?i.setProperty(t,r):i[t]=function(n,t){return!On[n.toLowerCase()]&&a(t)?t+"px":t}(t,r)}}catch(e){}};function Ln(n,t){var r=c(t);if(v(t)||r){var i=r?"":{};if(n){var e=window.getComputedStyle(n,null);i=r?zn(n,e,t):t.reduce((function(t,r){return t[r]=zn(n,e,r),t}),i)}return i}w(O(t),(function(r){return Mn(n,r,t[r])}))}var An=function(n,t,r){var i=t?t+"-":"",e=r?"-"+r:"",o=i+"top"+e,u=i+"right"+e,a=i+"bottom"+e,c=i+"left"+e,f=Ln(n,[o,u,a,c]);return{t:Cn(f[o]),r:Cn(f[u]),b:Cn(f[a]),l:Cn(f[c])}},jn={x:0,y:0},In=function(n){var t=n?dn(n):0;return t?{x:t.left+window.pageYOffset,y:t.top+window.pageXOffset}:jn},Tn="os-environment",Rn=Tn+"-flexbox-glue",En=Rn+"-max",Vn="os-host",kn="os-padding",Bn="os-viewport",Pn=Bn+"-arrange",Dn="os-content",Hn=Bn+"-scrollbar-styled",qn="os-size-observer",Wn=qn+"-appear",Yn=qn+"-listener",Fn=Yn+"-scroll",Nn=Yn+"-item",Xn=Nn+"-final",Un="os-trinsic-observer",$n="os-scrollbar",Gn=$n+"-horizontal",Jn=$n+"-vertical",Kn="os-scrollbar-track",Qn="os-scrollbar-handle";var Zn={exports:{}};!function(n){function t(){return n.exports=t=Object.assign?Object.assign.bind():function(n){for(var t=1;t
')[0],r=t.firstChild,i=new Set,e=at(n,t),o=function(n){var t=!1;on(n,Hn);try{t="none"===Ln(n,G("scrollbar-width"))||"none"===window.getComputedStyle(n,"::-webkit-scrollbar").getPropertyValue("display")}catch(r){}return t}(t),u={x:0===e.x,y:0===e.y},a={M:null,L:null,A:null,j:null,I:null},c=a,f=et,l={T:e,R:u,V:o,k:"-1"===Ln(t,"zIndex"),B:ct(t,r),P:ft(t,r),D:function(n){i.add(n)},H:function(n){i.delete(n)},q:function(){return rt({},c)},W:function(n){c=C({},c,n)},Y:function(){return rt({},f)},F:function(n){f=C({},f,n)},N:a,X:f};if(L(t,"style"),q(t),!(o||u.x&&u.y)){var v=cn(),d=lt(),s=e;window.addEventListener("resize",(function(){if(i.size){var r=cn(),e={w:r.w-v.w,h:r.h-v.h};if(0===e.w&&0===e.h)return;var o={w:ot(e.w),h:ot(e.h)},u={w:ot(ut(r.w/(v.w/100))),h:ot(ut(r.h/(v.h/100)))},a=lt(),c=o.w>2&&o.h>2,f=(_=u.h,g=ot(u.w),h=ot(_),!(g!==h&&g+1!==h&&g-1!==h));if(c&&f&&(a!==d&&d>0)){var l=tt.T=at(n,t);q(t),s.x===l.x&&s.y===l.y||x(i),s=l}v=r,d=a}var _,g,h}))}return l},dt=function(){return tt||(tt=vt()),tt},st=0,_t=function(n){P(k(n),V(n)),q(n)},gt=function(){var n=dt(),t=n.V,r=n.R,i=!!(!n.k&&!t&&(r.x||r.y))&&document.createElement("style");return i&&(M(i,"id",Pn+"-"+st),st++),i},ht=function(n,t,r,i){return t||(l(r)?r(n):r)||W(i)},wt=function(n,t,r,i,e){var o=f(t)||t?t:l(r)?r(n):r;return null===o?!!e&&W(i):!0===o?W(i):o},pt=function(n){var t,r,i=dt(),e=i.q,o=i.V,u=e(),a=u.M,c=u.L,f=u.A,l=u.j,v=g(n),d=n,s=v?n:d.target,_=E(s,"textarea"),h=!_&&E(s,"body"),w=s.ownerDocument,m=w.body,y=w.defaultView,S={U:s,M:_?ht(s,d.host,a,Vn):s,L:ht(s,d.viewport,c,Bn),A:wt(s,d.padding,f,kn,!o),j:wt(s,d.content,l,Dn,!1),$:gt()},C={G:y,J:w,K:k(m),Z:m,nn:_,tn:h,rn:v},z=O(S).reduce((function(n,t){var r=S[t];return b(n,!(!r||k(r))&&r)}),[]),M=function(n){return n?p(z,n)>-1:null},L=S.U,A=S.M,j=S.A,I=S.L,T=S.j,R=S.$,D=[],W=_&&M(A),Y=_?L:V([T,I,j,A,L].find((function(n){return!1===M(n)}))),F=T||I;return W&&(H(L,A),b(D,(function(){H(A,L),q(A)}))),P(F,Y),P(A,j),P(j||A,I),P(I,T),on(A,Vn),on(j,kn),on(I,Bn),on(T,Dn),b(D,(function(){v?(P(A,V(F)),q(j||I),un(A,Vn)):(M(T)&&_t(T),M(I)&&_t(I),M(j)&&_t(j),un(A,Vn),un(j,kn),un(I,Bn),un(T,Dn))})),o&&b(D,un.bind(0,I,Hn)),R&&(r=R,B(k(t=I),t,r),b(D,q.bind(0,R))),{in:S,en:C,un:function(){x(D)}}},bt=function(n){var t=W($n+" "+n),r=W(Kn),i=W(Qn);return P(t,r),P(r,i),{an:t,cn:r,fn:i}},mt="animationstart",yt="scroll",xt=3333333,St=function(n){return"rtl"===Ln(n,"direction")},Ot=function(n){return n&&(n.height||n.width)},Ct=function(t,r,i){var e=i||{},o=e.ln,u=void 0!==o&&o,a=e.vn,c=void 0!==a&&a,l=dt().B,s=Y('
')[0],_=s.firstChild,g=St.bind(0,s),h=n({o:void 0,v:!0,u:function(n,t){return!(!n||!Ot(n)&&Ot(t))}})[0],w=function(n){var t=v(n)&&n.length>0&&d(n[0]),i=!t&&f(n[0]),e=!1,o=!1,a=!0;if(t){var c=h(n.pop().contentRect),_=c[0],g=c[2],w=Ot(_);o=!Ot(g)&&w,a=!(e=!g||!w)}else i?a=n[1]:o=!0===n;if(u&&a){var p=i?n[0]:St(s);A(s,p?l.n?-xt:l.i?0:xt:xt),j(s,xt)}e||r({dn:!i,sn:i?n:void 0,vn:!!o})},p=[],m=!!c&&w;if(Z){var y=new Z(w);y.observe(_),b(p,(function(){y.disconnect()}))}else{var S=Y('
');P(_,S),on(_,Fn);var O,C=S[0],z=C.lastChild,M=C.firstChild,L=null==M?void 0:M.firstChild,I=fn(C),T=I,R=!1,E=function(){A(M,xt),j(M,xt),A(z,xt),j(z,xt)},V=function(n){O=0,R&&(I=T,w(!0===n))},k=function(n){T=fn(C),R=!n||!pn(T,I),n?(hn(n),R&&!O&&(nn(O),O=tn(V))):V(!1===n),E()};b(p,[gn(M,yt,k),gn(z,yt,k)]),Ln(L,{width:xt,height:xt}),E(),m=c?k.bind(0,!1):E}if(u){var B=n({o:!g()},g)[0];b(p,gn(s,yt,(function(n){var t=B(),r=t[0];t[1]&&(un(_,"ltr rtl"),on(_,r?"rtl":"ltr"),w(t)),hn(n)})))}return m&&(on(s,Wn),b(p,gn(s,mt,m,{g:!!Z}))),D(t,s),function(){x(p),q(s)}},zt=function(n,t,r,i){var e=!1,o=i||{},u=o._n,a=o.gn,f=o.hn,l=o.wn,v=o.pn,d=o.bn,s=o.mn,_=function(n,t,r){var i,e=!1,o=function(o){r&&w(r.reduce((function(t,r){if(r){var i=r[0],e=r[1],u=e&&i&&(o?o(i):R(i,n));u&&u.length&&e&&c(e)&&b(t,[u,e.trim()],!0)}return t}),[]),(function(n){return w(n[0],(function(r){var o=n[1],u=i.get(r);if(u){var a=u[0],c=u[1];a===o&&c()}var f=gn(r,o,(function(n){e?(f(),i.delete(r)):t(n)}));i.set(r,[o,f])}))}))};return r&&(i=new WeakMap,o()),{un:function(){e=!0},yn:o}}(n,Sn((function(){e&&r(!0)}),{p:33,m:99}),f),g=_.un,h=_.yn,m=a||[],x=(u||[]).concat(m),S=function(e){var o=(t?d:v)||xn,u=s||xn,a=[],f=[],_=!1,g=!1,x=!1;w(e,(function(r){var e=r.attributeName,v=r.target,d=r.type,s=r.oldValue,h=r.addedNodes,w="attributes"===d,y="childList"===d,S=n===v,O=w&&c(e)?M(v,e):0,C=0!==O&&s!==O,z=p(m,e)>-1&&C;if(t&&!S){var L=!w,A=w&&z,j=A&&l&&E(v,l),I=(j?!o(v,e,s,O):L||A)&&!u(r,!!j,n,i);b(f,h),g=g||I,x=x||y}!t&&S&&C&&!o(v,e,s,O)&&(b(a,e),_=_||z)})),x&&!y(f)&&h((function(n){return f.reduce((function(t,r){return b(t,R(n,r)),E(r,n)?b(t,r):t}),[])})),t?g&&r(!1):y(a)&&!_||r(a,_)},O=new K(S);return O.observe(n,{attributes:!0,attributeOldValue:!0,attributeFilter:x,subtree:t,childList:t,characterData:t}),e=!0,{un:function(){e&&(g(),O.disconnect(),e=!1)},xn:function(){e&&S(O.takeRecords())}}},Mt="os-",Lt=["tabindex"],At=["wrap","cols","rows"],jt=["id","class","style","open"],It=function(n,t,r,i){var e,o,u,a,c;return!("class"!==t||!r||!i)&&!!(o=i,u=(e=r)&&e.split(" "),a=o&&o.split(" "),c={},w(u,(function(n){c[n]=1})),w(a,(function(n){c[n]?delete c[n]:c[n]=1})),O(c)).find((function(n){return 0!==n.indexOf(Mt)}))},Tt=function(t,r){var i,e,o,u=t.Sn,f=u.in,l=u.en,d=f.M,s=f.L,_=f.j,g=l.nn,h=dt(),m=h.V,y=h.P,S=g?At:jt.concat(At),O=Sn(r,{p:function(){return i},m:function(){return e},S:function(n,t){var r=n[0],i=r.dn,e=r.On,o=r.Cn,u=t[0],a=u.dn,c=u.On,f=u.Cn;return[{dn:i||a,On:e||c,Cn:o||f}]}}),C=function(n){w(n||Lt,(function(n){if(p(Lt,n)>-1){var t=M(d,n);c(t)?M(s,n,t):L(s,n)}}))},z=function(n){(n?r:O)({Cn:!0})},A=(_||!y)&&function(t,r){var i=W(Un),e=[],o=n({o:!1})[0],u=function(n){if(n){var t=o(0===(i=n).h||i.isIntersecting||i.intersectionRatio>0);t[1]&&r(t)}var i};if(Q){var a=new Q((function(n){n&&n.length>0&&u(n.pop())}),{root:t});a.observe(i),b(e,(function(){a.disconnect()}))}else{var c=function(){var n=fn(i);u(n)};b(e,Ct(i,c)),c()}return D(t,i),function(){x(e),q(i)}}(d,(function(n){r({zn:n})})),j=Ct(d,(function(n){var t=n.dn,i=n.sn,e=n.vn;(!t||e?r:O)({dn:t,Mn:i})}),{vn:!0,ln:!m}),I=zt(d,!1,(function(n,t){t?O({On:!0}):C(n)}),{gn:jt,_n:jt.concat(Lt),pn:It});return C(),[function(n){var t=n("updating.elementEvents"),r=t[0],u=t[1],c=n("updating.attributes"),f=c[0],l=c[1],d=n("updating.debounce"),g=d[0],h=d[1];if((u||l)&&(o&&(o.xn(),o.un()),o=zt(_||s,!0,z,{gn:S.concat(f||[]),_n:S.concat(f||[]),hn:r,bn:It})),h)if(O.O(),v(g)){var w=g[0],p=g[1];i=!!a(w)&&w,e=!!a(p)&&p}else a(g)?(i=g,e=!1):(i=!1,e=!1)},function(){o&&o.un(),A&&A(),j(),I.un()}]},Rt=function(t){var r=t.Sn,i=t.Ln,e=r.in,o=e.M,u=e.A,a=e.L,c=n({u:bn,o:An()},An.bind(0,o,"padding","")),f=c[0],l=c[1];return function(n,t,r){var e=l(r),o=e[0],c=e[1],v=dt(),d=v.V,s=v.P,_=n.dn,g=n.Mn,h=n.Cn,w=g[0],p=g[1],b=t("paddingAbsolute"),m=b[0],y=b[1];if(_||c||!s&&h){var x=f(r);o=x[0],c=x[1]}var S=y||p||c;if(S){var O=!m||!u&&!d,C=o.r+o.l,z=o.t+o.b,M={marginRight:O&&!w?-C:0,marginBottom:O?-z:0,marginLeft:O&&w?-C:0,top:O?-o.t:0,right:O?w?-o.r:"auto":0,left:O?w?"auto":-o.l:0,width:O?"calc(100% + "+C+"px)":""},L={paddingTop:O?o.t:0,paddingRight:O?o.r:0,paddingBottom:O?o.b:0,paddingLeft:O?o.l:0};Ln(u||a,M),Ln(a,L),i({An:{jn:!O,A:o},In:u?L:rt({},M,L)})}return{Tn:S}}},Et=Math.max,Vt=Math.abs,kt=Math.round,Bt=42,Pt={u:pn,o:{w:0,h:0}},Dt={u:function(n,t){return wn(n,t,["x","y"])},o:{x:!1,y:!1}},Ht=function(n){var t=fn(n),r=dn(n);return{w:r.width-t.w,h:r.height-t.h}},qt=function(){return window.devicePixelRatio%1==0?0:1},Wt=function(n,t,r,i){var e=n?"overflowX":"overflowY",o=0===r.indexOf("visible"),u="visible-hidden"===r,a="scroll"===r,c=t>0;return o&&(i[e]="visible"),a&&c&&(i[e]=r),{Rn:o,En:u?"hidden":"scroll"}},Yt=function(t){var r=t.Sn,i=t.Vn,e=t.kn,o=t.Ln,u=r.in,a=u.M,c=u.L,f=u.$,l=n(Pt,Ht.bind(0,c)),v=l[0],d=l[1],s=n(Pt,vn.bind(0,c)),_=s[0],g=s[1],h=n(Pt),p=h[0],b=h[1],m=n(Dt)[0],y=function(n,t){if(Ln(c,{height:""}),t){var r=dt().R,i=e().An,o=i.jn,u=i.A,f=n.Bn,l=n.Pn,v=Ht(a),d=ln(a),s="content-box"===Ln(c,"boxSizing"),_=o||s?u.b+u.t:0,g=d.h+(Vt(v.h)<1?v.h:0),h=!(r.x&&s);Ln(c,{height:g+(f.x&&h?l.x:0)-_})}},x=function(n,t){var r=dt(),i=r.T,e=r.R,o=r.V,u=e.x,a=e.y,f=o||n?0:Bt,l=!t?Ln(c,["overflowX","overflowY"]):t,v={x:"scroll"===l.overflowX,y:"scroll"===l.overflowY},d={x:u?f:i.x,y:a?f:i.y};return{Bn:v,Dn:{x:u&&!!f,y:a&&!!f},Pn:{x:v.x&&!o?d.x:0,y:v.y&&!o?d.y:0}}},S=function(n,t,r,o){if(i){var u=n.Pn,a=n.Dn,l=a.x,v=a.y,d=u.x,s=u.y,_=e().In,g=_[o?"paddingRight":"paddingLeft"],h=_.paddingTop,w=t.w+(Vt(r.w)<1?r.w:0),p=t.h+(Vt(r.h)<1?r.h:0),b={w:s&&v?s+w-g+"px":"",h:d&&l?d+p-h+"px":""};if(f){var m=f.sheet;if(m){var y=m.cssRules;if(y){y.length||m.insertRule("#"+M(f,"id")+" + ."+Pn+"::before {}",0);var x=y[0].style;x.width=b.w,x.height=b.h}}}else Ln(c,{"--os-vaw":b.w,"--os-vah":b.h})}return i},C=function(n,t,r,i){var o=n.Pn,u=n.Dn,a=u.x,c=u.y,f=o.x,l=o.y,v=e().In,d=t?"marginLeft":"marginRight",s=t?"paddingLeft":"paddingRight",_=v[d],g=v.marginBottom,h=v[s],w=v.paddingBottom;i.width="calc(100% + "+(l+-1*_)+"px)",i[d]=-l+_,i.marginBottom=-f+g,r&&(i[s]=h+(c?l:0),i.paddingBottom=w+(a?f:0))};return function(n,t,r){var u,a=n.Mn,f=n.zn,l=n.dn,s=n.On,h=n.Cn,z=n.Tn,M=dt(),L=M.P,A=M.V,j=M.R,I=f[0],T=f[1],R=a[0],E=a[1],V=t("nativeScrollbarsOverlaid.show"),k=V[0],B=V[1],P=k&&j.x&&j.y,D=!L&&(l||h||s||B||T),H=d(r),q=g(r),W=b(r);if(B&&A&&(P?un(c,Hn):on(c,Hn)),D&&(u=x(P),y(u,!!I)),l||z||h||B||E){var Y=function(n,t,r){if(i){var o=r||x(n),u=e().In,a=dt().P,f=o.Dn,l=f.x,v=f.y,d={},s=function(n){return w(n.split(" "),(function(n){d[n]=u[n]}))};a||(d.height=""),l&&s("marginBottom paddingTop paddingBottom"),v&&s("marginLeft marginRight paddingLeft paddingRight");var _=Ln(c,O(d));return un(c,Pn),Ln(c,d),[function(){C(o,t,i,_),Ln(c,_),on(c,Pn)},o]}return[xn]}(P,R,u),F=Y[0],N=Y[1],X=H=v(r),U=X[0],$=X[1],G=q=_(r),J=G[0],K=G[1],Q=ln(c),Z=J,nn=Q;F(),(K||$||B)&&N&&!P&&S(N,J,U,R)&&(nn=ln(c),Z=vn(c)),W=p(function(n,t,r){return{w:Et(0,kt(Et(0,n.w-t.w)-(qt()||Et(0,r.w)))),h:Et(0,kt(Et(0,n.h-t.h)-(qt()||Et(0,r.h))))}}({w:Et(J.w,Z.w),h:Et(J.h,Z.h)},{w:nn.w+Et(0,Q.w-J.w),h:nn.h+Et(0,Q.h-J.h)},U),r)}var tn=H,rn=tn[0],en=tn[1],an=q,cn=an[0],fn=an[1],dn=W,sn=dn[0],_n=dn[1],gn=t("overflow"),hn=gn[0],wn=gn[1];if(z||en||fn||_n||wn||B||E||D){var pn={marginRight:0,marginBottom:0,marginLeft:0,width:"",overflowY:"",overflowX:""},bn=function(n,t,r,i){var e=Wt(!0,t.w,r.x,i),o=e.Rn,u=e.En,a=Wt(!1,t.h,r.y,i),c=a.Rn,f=a.En;return o&&!c&&(i.overflowX=u),c&&!o&&(i.overflowY=f),x(n,i)}(P,sn,hn,pn),mn=S(bn,cn,rn,R);C(bn,R,mn,pn),D&&y(bn,!!I),Ln(c,pn),o({Hn:m(bn.Bn),qn:W})}}},Ft=function(n,t){return n?t.split(".").reduce((function(n,t){return n&&S(n,t)?n[t]:void 0}),n):void 0},Nt=[!1,!1,!1],Xt={An:{jn:!1,A:{t:0,r:0,b:0,l:0}},Hn:[{x:!1,y:!1},!1],qn:[{w:0,h:0},!1],In:{marginRight:0,marginBottom:0,marginLeft:0,paddingTop:0,paddingRight:0,paddingBottom:0,paddingLeft:0}},Ut=function(n,t,r){var i={},e=t||{};return w(O(n).concat(O(e)),(function(t){var o=n[t],u=e[t];i[t]=f(o)?!!r||!!o||!!u:function(n,t){return[n[0],t||n[1],n[2]]}(o||Nt,r)})),i},$t=function(n,t){return{amount:{x:n.w,y:n.h},overflow:{x:n.w>0,y:n.h>0},scrollableOverflow:C({},t)}},Gt={},Jt=["__TPL_","_TYPE__"],Kt=["boolean","number","string","array","object","function","null"].reduce((function(n,t){return n[t]=Jt[0]+t+Jt[1],n}),{});Kt.number,Kt.boolean,Kt.array,Kt.null,Kt.string,Kt.array,Kt.null;Kt.number,Kt.array,Kt.null,Kt.function,Kt.null;var Qt="__osOptionsValidationPlugin",Zt=new Set,nr=new WeakMap,tr=function(n,t){w(v(t)?t:[t],n)},rr=function n(t,r,i){var e=dt(),o=e.Y,u=e.R,c=C({},Gt),f=g(t)?t:t.target,s=function(n){return nr.get(n)}(f);if(s)return s;var _=c[Qt],h=function(n){var t=n||{},r=_&&_.Wn;return r?r(t,!0):t},p=C({},o(),h(r)),b=function(n){var t=new Map,r=function(n,r){if(n){var i=t.get(n);tr((function(n){i&&i[n?"delete":"clear"](n)}),r)}else t.forEach((function(n){n.clear()})),t.clear()},i=function(n,i){var e=t.get(n)||new Set;return t.set(n,e),tr((function(n){e.add(n)}),i),r.bind(0,n,i)};return w(O(n),(function(t){i(t,n[t])})),[i,r,function(n,r){var i=t.get(n);w(m(i),(function(n){r?n(r):n()}))}]}(i),y=b[0],x=b[1],z=b[2];u.x&&u.y&&!p.nativeScrollbarsOverlaid.initialize&&z("initializationWithdrawn",!1);var M=pt(t),L=function(n,t){var r=(0,dt().q)().I,i=t.in,e=t.en,o=i.U,u=i.M,a=i.L,c=!e.rn&&n.scrollbarsSlot,f=(l(c)?c(o,u,a):c)||(l(r)?r(o,u,a):r)||u,v=bt(Gn),d=bt(Jn),s=v.an,_=d.an;return P(f,s),P(f,_),{Yn:v,Fn:d,un:function(){q([s,_])}}}(t,M),I=function(n,t,r,i){var e,o,u,c,f=Xt,l=r.in.L,v=dt(),d=v.V,s=v.R,_=v.P,g=v.D,h=v.H,p=!d&&(s.x||s.y),b={Nn:n,Sn:r,Vn:p,kn:function(){return f},Ln:function(n){f=C({},f,n)}},m=[(u=b,c=u.Sn.in.j,function(n){var t=n.zn,r=t[0],i=t[1];return i&&Ln(c,{height:r?"":"100%",display:r?"":"inline"}),{dn:i,Cn:i}}),Rt(b),Yt(b)],y=function(r,i,o){var u=Ut(C({dn:!1,On:!1,Cn:!1,Tn:!1,Mn:Nt,zn:Nt},r),{},o),c=function(t){return[Ft(n,t),o||void 0!==Ft(i,t)]},v=p||!_,d=v&&A(l),s=v&&j(l);e&&e(c);var g=u;w(m,(function(n){g=Ut(g,n(g,c,!!o)||{},o)})),a(d)&&A(l,d),a(s)&&j(l,s);var h=f,b=h.qn,y=h.Hn,x=b[0],S=b[1],O=b[2],z=y[0],M=y[1],L=y[2];(S||M)&&t("overflowChanged",C({},$t(x,z),{previous:$t(O,L)})),t("updated",{updateHints:{sizeChanged:g.dn,contentMutation:g.Cn,hostMutation:g.On,directionChanged:g.Mn[1],heightIntrinsicChanged:g.zn[1]},changedOptions:i||{},force:!!o})},x=Tt(b,y);e=x[0],o=x[1];var S=function(n,t){return y({},n,t)},O=S.bind(0,{},!0);return g(O),{xn:S,Xn:function(){return{Un:f.qn[0]}},un:function(){o(),h(O),r.un(),i.un()}}}(p,z,M,L),T={options:function(n){if(n){var t=function n(t,r){var i={};return w(O(r).concat(O(t)),(function(e){var o=t[e],u=r[e];if(d(o)&&d(u))C(i[e]={},n(o,u));else if(S(r,e)&&u!==o){var a=!0;if(v(o)||v(u))try{it(o)===it(u)&&(a=!1)}catch(c){}a&&(i[e]=u)}})),i}(p,h(n));(function(n){for(var t in n)return!1;return!0})(t)||(C(p,t),I.xn(t))}return p},on:y,off:x,state:function(){return I.Xn()},update:function(n){I.xn({},n)},destroy:function(){I.un(),function(n){nr.delete(n),Zt.delete(n)}(f),x(),z("destroyed",!1)}};return w(O(c),(function(t){var r=c[t];l(r)&&r(n,T)})),T.update(!0),function(n,t){nr.set(n,t),Zt.add(n)}(f,T),z("initialized",!1),T};return rr.extend=function(n){return w(v(n)?n:[n],(function(n){Gt[n[0]]=n[1]}))},rr})); \ No newline at end of file diff --git a/packages/overlayscrollbars/src/eventListeners.ts b/packages/overlayscrollbars/src/eventListeners.ts index 06b4e80..91f453d 100644 --- a/packages/overlayscrollbars/src/eventListeners.ts +++ b/packages/overlayscrollbars/src/eventListeners.ts @@ -1,15 +1,15 @@ import { OSOptions } from 'options'; -import { each, from, isArray, keys } from 'support'; +import { each, from, isArray, keys, XY } from 'support'; import { PartialOptions } from 'typings'; /* onScrollStart : null, onScroll : null, onScrollStop : null, onOverflowChanged : null, -onOverflowAmountChanged : null, -onDirectionChanged : null, -onContentSizeChanged : null, -onHostSizeChanged : null, +onOverflowAmountChanged : null, // fusion with onOverflowChanged +onDirectionChanged : null, // gone +onContentSizeChanged : null, // gone +onHostSizeChanged : null, // gone */ export interface OnUpdatedEventListenerArgs { @@ -24,11 +24,23 @@ export interface OnUpdatedEventListenerArgs { force: boolean; } +export interface OnOverflowChangedEventListenerArgs { + overflow: XY; // whether there is an overflow + scrollableOverflow: XY; // whether there is an scrollable overflow + amount: XY; // the overflow amount in pixel + previous: { + overflow: XY; + scrollableOverflow: XY; + amount: XY; + }; +} + export interface EventListenerArgsMap { initialized: false; initializationWithdrawn: false; - destroyed: false; + overflowChanged: OnOverflowChangedEventListenerArgs; updated: OnUpdatedEventListenerArgs; + destroyed: false; } export type OSEventListener = ( @@ -93,11 +105,15 @@ export const createEventListenerHub = ( return removeEvent.bind(0, name, listener as any); }; - const triggerEvent: TriggerEventListener = (name, args) => { + const triggerEvent: TriggerEventListener = (name, args?) => { const eventSet = events.get(name); each(from(eventSet), (event) => { - args ? event(args) : (event as () => void)(); + if (args) { + event(args); + } else { + (event as () => void)(); + } }); }; diff --git a/packages/overlayscrollbars/src/lifecycles/lifecycleHub.ts b/packages/overlayscrollbars/src/lifecycles/lifecycleHub.ts index cc4bcdb..553c749 100644 --- a/packages/overlayscrollbars/src/lifecycles/lifecycleHub.ts +++ b/packages/overlayscrollbars/src/lifecycles/lifecycleHub.ts @@ -39,8 +39,8 @@ export interface LifecycleCommunication { _padding: TRBL; }; _viewportPaddingStyle: StyleObject; - _viewportOverflowScroll: XY; - _viewportOverflowAmount: WH; + _viewportOverflowScrollCache: CacheValues>; + _viewportOverflowAmountCache: CacheValues>; } export interface LifecycleUpdateHints { @@ -92,14 +92,20 @@ const lifecycleCommunicationFallback: LifecycleCommunication = { l: 0, }, }, - _viewportOverflowScroll: { - x: false, - y: false, - }, - _viewportOverflowAmount: { - w: 0, - h: 0, - }, + _viewportOverflowScrollCache: [ + { + x: false, + y: false, + }, + false, + ], + _viewportOverflowAmountCache: [ + { + w: 0, + h: 0, + }, + false, + ], _viewportPaddingStyle: { marginRight: 0, marginBottom: 0, @@ -131,6 +137,18 @@ const prepareUpdateHints = ( return result as Required; }; +const createOverflowChangedArgs = (overflowAmount: WH, overflowScroll: XY) => ({ + amount: { + x: overflowAmount.w, + y: overflowAmount.h, + }, + overflow: { + x: overflowAmount.w > 0, + y: overflowAmount.h > 0, + }, + scrollableOverflow: assignDeep({}, overflowScroll), +}); + export const createLifecycleHub = ( options: OSOptions, triggerListener: TriggerEventListener, @@ -214,6 +232,22 @@ export const createLifecycleHub = ( scrollTop(_viewport, scrollOffsetY); } + const { + _viewportOverflowAmountCache: overflowAmountCache, + _viewportOverflowScrollCache: overflowScrollCache, + } = lifecycleCommunication; + const [overflowAmount, overflowAmountChanged, prevOverflowAmount] = overflowAmountCache; + const [overflowScroll, overflowScrollChanged, prevOverflowScroll] = overflowScrollCache; + + if (overflowAmountChanged || overflowScrollChanged) { + triggerListener( + 'overflowChanged', + assignDeep({}, createOverflowChangedArgs(overflowAmount, overflowScroll), { + previous: createOverflowChangedArgs(prevOverflowAmount!, prevOverflowScroll!), + }) + ); + } + triggerListener('updated', { updateHints: { sizeChanged: adaptivedUpdateHints._sizeChanged, @@ -237,7 +271,7 @@ export const createLifecycleHub = ( return { _update: update, _state: () => ({ - _overflowAmount: lifecycleCommunication._viewportOverflowAmount, + _overflowAmount: lifecycleCommunication._viewportOverflowAmountCache[0], }), _destroy() { destroyObservers(); diff --git a/packages/overlayscrollbars/src/lifecycles/overflowLifecycle.ts b/packages/overlayscrollbars/src/lifecycles/overflowLifecycle.ts index 70e6930..7c5fb14 100644 --- a/packages/overlayscrollbars/src/lifecycles/overflowLifecycle.ts +++ b/packages/overlayscrollbars/src/lifecycles/overflowLifecycle.ts @@ -15,6 +15,7 @@ import { getBoundingClientRect, noop, each, + equalXY, } from 'support'; import { LifecycleHub, Lifecycle } from 'lifecycles/lifecycleHub'; import { getEnvironment } from 'environment'; @@ -28,11 +29,6 @@ interface ViewportOverflowState { _overflowScroll: XY; } -interface OverflowOption { - x: OverflowBehavior; - y: OverflowBehavior; -} - type UndoViewportArrangeResult = [ () => void, // redoViewportArrange ViewportOverflowState? @@ -44,6 +40,10 @@ const whCacheOptions = { _equal: equalWH, _initialValue: { w: 0, h: 0 }, }; +const xyCacheOptions = { + _equal: equalXY, + _initialValue: { x: false, y: false }, +}; const sizeFraction = (elm: HTMLElement): WH => { const viewportOffsetSize = offsetSize(elm); const viewportRect = getBoundingClientRect(elm); @@ -126,6 +126,8 @@ export const createOverflowLifecycle = (lifecycleHub: LifecycleHub): Lifecycle = const [updateOverflowAmountCache, getCurrentOverflowAmountCache] = createCache>(whCacheOptions); + const [updateOverflowScrollCache] = createCache>(xyCacheOptions); + /** * Applies a fixed height to the viewport so it can't overflow or underflow the host element. * @param viewportOverflowState The current overflow state. @@ -215,7 +217,7 @@ export const createOverflowLifecycle = (lifecycleHub: LifecycleHub): Lifecycle = const setViewportOverflowState = ( showNativeOverlaidScrollbars: boolean, overflowAmount: WH, - overflow: OverflowOption, + overflow: XY, viewportStyleObj: StyleObject ): ViewportOverflowState => { const { _visible: xVisible, _behavior: xVisibleBehavior } = setAxisOverflowStyle( @@ -514,7 +516,7 @@ export const createOverflowLifecycle = (lifecycleHub: LifecycleHub): Lifecycle = const [viewportSizeFraction, viewportSizeFractionChanged] = viewportSizeFractionCache; const [viewportScrollSize, viewportScrollSizeChanged] = viewportScrollSizeCache; const [overflowAmount, overflowAmountChanged] = overflowAmuntCache; - const [overflow, overflowChanged] = checkOption('overflow'); + const [overflow, overflowChanged] = checkOption>('overflow'); if ( _paddingStyleChanged || @@ -561,8 +563,10 @@ export const createOverflowLifecycle = (lifecycleHub: LifecycleHub): Lifecycle = style(_viewport, viewportStyle); _setLifecycleCommunication({ - _viewportOverflowScroll: viewportOverflowState._overflowScroll, - _viewportOverflowAmount: overflowAmount, + _viewportOverflowScrollCache: updateOverflowScrollCache( + viewportOverflowState._overflowScroll + ), + _viewportOverflowAmountCache: overflowAmuntCache, }); } }; diff --git a/packages/overlayscrollbars/src/support/cache/cache.ts b/packages/overlayscrollbars/src/support/cache/cache.ts index 2e8d18b..6cfcec5 100644 --- a/packages/overlayscrollbars/src/support/cache/cache.ts +++ b/packages/overlayscrollbars/src/support/cache/cache.ts @@ -10,7 +10,7 @@ export interface CacheOptions { export type CacheValues = [ T, // value boolean, // changed - T | undefined // previous + T? // previous ]; export type EqualCachePropFunction = (currentVal: Value, newVal: Value) => boolean; diff --git a/packages/overlayscrollbars/src/support/utils/equal.ts b/packages/overlayscrollbars/src/support/utils/equal.ts index f5529eb..262a617 100644 --- a/packages/overlayscrollbars/src/support/utils/equal.ts +++ b/packages/overlayscrollbars/src/support/utils/equal.ts @@ -34,7 +34,7 @@ export const equal = ( * @param a Object a. * @param b Object b. */ -export const equalWH = (a?: WH, b?: WH) => equal(a, b, ['w', 'h']); +export const equalWH = (a?: WH, b?: WH) => equal>(a, b, ['w', 'h']); /** * Compares object a with object b and returns true if both have the same property values, false otherwise. @@ -42,7 +42,7 @@ export const equalWH = (a?: WH, b?: WH) => equal(a, b, ['w', 'h']); * @param a Object a. * @param b Object b. */ -export const equalXY = (a?: XY, b?: XY) => equal(a, b, ['x', 'y']); +export const equalXY = (a?: XY, b?: XY) => equal>(a, b, ['x', 'y']); /** * Compares object a with object b and returns true if both have the same property values, false otherwise. diff --git a/packages/overlayscrollbars/src/support/utils/function.ts b/packages/overlayscrollbars/src/support/utils/function.ts index 28be164..a0f8b6e 100644 --- a/packages/overlayscrollbars/src/support/utils/function.ts +++ b/packages/overlayscrollbars/src/support/utils/function.ts @@ -91,6 +91,7 @@ export const debounce = any>( // } clearTimeouts(timeoutId); + // @ts-ignore timeoutId = setTimeoutFn(boundInvoke, finalTimeout as number) as number; if (hasMaxWait && !maxTimeoutId) { diff --git a/packages/overlayscrollbars/types/overlayscrollbars.d.ts b/packages/overlayscrollbars/types/overlayscrollbars.d.ts index 0cbada1..e6dd84e 100644 --- a/packages/overlayscrollbars/types/overlayscrollbars.d.ts +++ b/packages/overlayscrollbars/types/overlayscrollbars.d.ts @@ -89,7 +89,21 @@ type OSPlugin = [ string, T ]; -interface onUpdatedEventArgs { +interface XY { + x: T; + y: T; +} +/* +onScrollStart : null, +onScroll : null, +onScrollStop : null, +onOverflowChanged : null, +onOverflowAmountChanged : null, // fusion with onOverflowChanged +onDirectionChanged : null, // gone +onContentSizeChanged : null, // gone +onHostSizeChanged : null, // gone +*/ +interface OnUpdatedEventListenerArgs { updateHints: { sizeChanged: boolean; hostMutation: boolean; @@ -100,14 +114,31 @@ interface onUpdatedEventArgs { changedOptions: PartialOptions; force: boolean; } -interface EventArgsMap { - updated: onUpdatedEventArgs; +interface OnOverflowChangedEventListenerArgs { + overflow: XY; // whether there is an overflow + scrollableOverflow: XY; // whether there is an scrollable overflow + amount: XY; // the overflow amount in pixel + previous: { + overflow: XY; + scrollableOverflow: XY; + amount: XY; + }; } -type OSEventListener = (args: EventArgsMap[N]) => void; -type AddEvent = (name: N, listener: OSEventListener | OSEventListener[]) => () => void; -type RemoveEvent = (name?: N, listener?: OSEventListener | OSEventListener[]) => void; +interface EventListenerArgsMap { + initialized: false; + initializationWithdrawn: false; + overflowChanged: OnOverflowChangedEventListenerArgs; + updated: OnUpdatedEventListenerArgs; + destroyed: false; +} +type OSEventListener = (args: EventListenerArgsMap[N]) => void; +type AddEventListener = (name: N, listener: OSEventListener | OSEventListener[]) => () => void; +type RemoveEventListener = (name?: N, listener?: OSEventListener | OSEventListener[]) => void; +type EventListenersMap = { + [K in keyof EventListenerArgsMap]?: OSEventListener | OSEventListener[]; +}; interface OverlayScrollbarsStatic { - (target: OSTarget | OSInitializationObject, options?: PartialOptions, extensions?: any): OverlayScrollbars; + (target: OSTarget | OSInitializationObject, options?: PartialOptions, eventListeners?: EventListenersMap): OverlayScrollbars; extend(osPlugin: OSPlugin | OSPlugin[]): void; } interface OverlayScrollbars { @@ -116,8 +147,8 @@ interface OverlayScrollbars { update(force?: boolean): void; destroy(): void; state(): any; - on: AddEvent; - off: RemoveEvent; + on: AddEventListener; + off: RemoveEventListener; } declare const OverlayScrollbars: OverlayScrollbarsStatic; export { OverlayScrollbars as default };