diff --git a/packages/overlayscrollbars/dist/overlayscrollbars.esm.js b/packages/overlayscrollbars/dist/overlayscrollbars.esm.js index fc4c0b5..44905b2 100644 --- a/packages/overlayscrollbars/dist/overlayscrollbars.esm.js +++ b/packages/overlayscrollbars/dist/overlayscrollbars.esm.js @@ -778,7 +778,7 @@ const getOptionsDiff = (currOptions, newOptions) => { let environmentInstance; const { abs, - round: round$1 + round } = Math; const diffBiggerThanOne = (valOne, valTwo) => { @@ -923,8 +923,8 @@ const createEnvironment = () => { h: abs(deltaSize.h) }; const deltaAbsRatio = { - w: abs(round$1(sizeNew.w / (size.w / 100.0))), - h: abs(round$1(sizeNew.h / (size.h / 100.0))) + w: abs(round(sizeNew.w / (size.w / 100.0))), + h: abs(round(sizeNew.h / (size.h / 100.0))) }; const dprNew = getWindowDPR(); const deltaIsBigger = deltaAbsSize.w > 2 && deltaAbsSize.h > 2; @@ -1199,8 +1199,7 @@ const createPaddingUpdate = (structureSetupElements, state) => { }; const { - max, - round + max } = Math; const overlaidScrollbarsHideOffset = 42; const whCacheOptions = { @@ -1233,22 +1232,18 @@ const setAxisOverflowStyle = (horizontal, overflowAmount, behavior, styleObj) => styleObj[overflowKey] = behavior; } - return { - _visible: behaviorIsVisible, - _behavior: behaviorIsVisibleHidden ? 'hidden' : 'scroll' - }; + return [behaviorIsVisible, behaviorIsVisibleHidden ? 'hidden' : 'scroll']; }; const getOverflowAmount = (viewportScrollSize, viewportClientSize, sizeFraction) => { - const condition = raw => window.devicePixelRatio % 2 !== 0 ? raw > 1 : raw > 0; - + const tollerance = window.devicePixelRatio % 2 !== 0 ? 1 : 0; const amount = { w: max(0, viewportScrollSize.w - viewportClientSize.w - max(0, sizeFraction.w)), h: max(0, viewportScrollSize.h - viewportClientSize.h - max(0, sizeFraction.h)) }; return { - w: condition(amount.w) ? amount.w : 0, - h: condition(amount.h) ? amount.h : 0 + w: amount.w >= tollerance ? amount.w : 0, + h: amount.h >= tollerance ? amount.h : 0 }; }; @@ -1285,14 +1280,13 @@ const createOverflowUpdate = (structureSetupElements, state) => { _overflowScroll, _scrollbarsHideOffset } = viewportOverflowState; - const hostCssHeight = parseFloat(style(_host, 'height')); + const fSize = fractionalSize(_host); const hostClientSize = clientSize(_host); const isContentBox = style(_viewport, 'boxSizing') === 'content-box'; const paddingVertical = _paddingAbsolute || isContentBox ? _padding.b + _padding.t : 0; - const fractionalClientHeight = hostClientSize.h + (hostCssHeight - round(hostCssHeight)); const subtractXScrollbar = !(_nativeScrollbarIsOverlaid.x && isContentBox); style(_viewport, { - height: fractionalClientHeight + (_overflowScroll.x && subtractXScrollbar ? _scrollbarsHideOffset.x : 0) - paddingVertical + height: hostClientSize.h + fSize.h + (_overflowScroll.x && subtractXScrollbar ? _scrollbarsHideOffset.x : 0) - paddingVertical }); } }; @@ -1328,14 +1322,8 @@ const createOverflowUpdate = (structureSetupElements, state) => { }; const setViewportOverflowState = (showNativeOverlaidScrollbars, overflowAmount, overflow, viewportStyleObj) => { - const { - _visible: xVisible, - _behavior: xVisibleBehavior - } = setAxisOverflowStyle(true, overflowAmount.w, overflow.x, viewportStyleObj); - const { - _visible: yVisible, - _behavior: yVisibleBehavior - } = setAxisOverflowStyle(false, overflowAmount.h, overflow.y, viewportStyleObj); + const [xVisible, xVisibleBehavior] = setAxisOverflowStyle(true, overflowAmount.w, overflow.x, viewportStyleObj); + const [yVisible, yVisibleBehavior] = setAxisOverflowStyle(false, overflowAmount.h, overflow.y, viewportStyleObj); if (xVisible && !yVisible) { viewportStyleObj.overflowX = xVisibleBehavior; @@ -1497,6 +1485,7 @@ const createOverflowUpdate = (structureSetupElements, state) => { _directionIsRTL } = getState(); const [showNativeOverlaidScrollbarsOption, showNativeOverlaidScrollbarsChanged] = checkOption('nativeScrollbarsOverlaid.show'); + const [overflow, overflowChanged] = checkOption('overflow'); const showNativeOverlaidScrollbars = showNativeOverlaidScrollbarsOption && _nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.y; const adjustFlexboxGlue = !_flexboxGlue && (_sizeChanged || _contentMutation || _hostMutation || showNativeOverlaidScrollbarsChanged || _heightIntrinsicChanged); let sizeFractionCache = getCurrentSizeFraction(force); @@ -1540,10 +1529,9 @@ const createOverflowUpdate = (structureSetupElements, state) => { }, _sizeFraction), force); } - const [sizeFraction, sizeFractionChanged] = sizeFractionCache; - const [viewportScrollSize, viewportScrollSizeChanged] = viewportScrollSizeCache; const [overflowAmount, overflowAmountChanged] = overflowAmuntCache; - const [overflow, overflowChanged] = checkOption('overflow'); + const [viewportScrollSize, viewportScrollSizeChanged] = viewportScrollSizeCache; + const [sizeFraction, sizeFractionChanged] = sizeFractionCache; if (_paddingStyleChanged || _directionChanged || sizeFractionChanged || viewportScrollSizeChanged || overflowAmountChanged || overflowChanged || showNativeOverlaidScrollbarsChanged || adjustFlexboxGlue) { const viewportStyle = { @@ -1565,8 +1553,8 @@ const createOverflowUpdate = (structureSetupElements, state) => { style(_viewport, viewportStyle); setState({ - _viewportOverflowScroll: overflowScroll, - _viewportOverflowAmount: overflowAmount + _overflowScroll: overflowScroll, + _overflowAmount: overflowAmount }); return { _overflowAmountChanged: overflowAmountChanged, @@ -1576,8 +1564,6 @@ const createOverflowUpdate = (structureSetupElements, state) => { }; }; -const applyForceToCache = (cacheValues, force) => [cacheValues[0], force || cacheValues[1], cacheValues[2]]; - const prepareUpdateHints = (leading, adaptive, force) => { const result = {}; const finalAdaptive = adaptive || {}; @@ -1585,7 +1571,7 @@ const prepareUpdateHints = (leading, adaptive, force) => { each(objKeys, key => { const leadingValue = leading[key]; const adaptiveValue = finalAdaptive[key]; - result[key] = isBoolean(leadingValue) ? !!force || !!leadingValue || !!adaptiveValue : applyForceToCache(leadingValue, force); + result[key] = !!(force || leadingValue || adaptiveValue); }); return result; }; @@ -1604,20 +1590,14 @@ const createStructureSetupUpdate = (structureSetupElements, state) => { return (checkOption, updateHints, force) => { const initialUpdateHints = prepareUpdateHints(assignDeep({ _sizeChanged: false, - _hostMutation: false, - _contentMutation: false, _paddingStyleChanged: false, _directionChanged: false, _heightIntrinsicChanged: false, _overflowScrollChanged: false, - _overflowAmountChanged: false - }, Object.keys(updateHints).reduce((acc, key) => { - if (!isUndefined(updateHints[key])) { - acc[key] = updateHints[key]; - } - - return acc; - }, {})), {}, force); + _overflowAmountChanged: false, + _hostMutation: false, + _contentMutation: false + }, updateHints), {}, force); const adjustScrollOffset = doViewportArrange || !_flexboxGlue; const scrollOffsetX = adjustScrollOffset && scrollLeft(_viewport); const scrollOffsetY = adjustScrollOffset && scrollTop(_viewport); @@ -2045,22 +2025,12 @@ const createStructureSetupObservers = (structureSetupElements, state, structureS _maxDelay: () => debounceMaxDelay, _mergeParams(prev, curr) { - const { - _sizeChanged: prevSizeChanged, - _hostMutation: prevHostMutation, - _contentMutation: prevContentMutation - } = prev[0]; - const { - _sizeChanged: currSizeChanged, - _hostMutation: currvHostMutation, - _contentMutation: currContentMutation - } = curr[0]; - const merged = [{ - _sizeChanged: prevSizeChanged || currSizeChanged, - _hostMutation: prevHostMutation || currvHostMutation, - _contentMutation: prevContentMutation || currContentMutation - }]; - return merged; + const [prevObj] = prev; + const [currObj] = curr; + return [keys(prevObj).concat(keys(currObj)).reduce((obj, key) => { + obj[key] = prevObj[key] || currObj[key]; + return obj; + }, {})]; } }); @@ -2200,11 +2170,11 @@ const initialStructureSetupUpdateState = { paddingBottom: 0, paddingLeft: 0 }, - _viewportOverflowAmount: { + _overflowAmount: { w: 0, h: 0 }, - _viewportOverflowScroll: { + _overflowScroll: { x: false, y: false }, @@ -2215,7 +2185,7 @@ const createStructureSetup = (target, options) => { const checkOptionsFallback = createOptionCheck(options, {}); const state = createState(initialStructureSetupUpdateState); const onUpdatedListeners = new Set(); - const [getUpdateState] = state; + const [getState] = state; const runOnUpdatedListeners = (updateHints, changedOptions, force) => { runEach(onUpdatedListeners, [updateHints, changedOptions || {}, !!force]); @@ -2226,7 +2196,7 @@ const createStructureSetup = (target, options) => { const [updateObservers, destroyObservers] = createStructureSetupObservers(elements, state, updateHints => { runOnUpdatedListeners(updateStructure(checkOptionsFallback, updateHints)); }); - const structureSetupState = getUpdateState.bind(0); + const structureSetupState = getState.bind(0); structureSetupState._addOnUpdatedListener = listener => { onUpdatedListeners.add(listener); @@ -2455,31 +2425,33 @@ const OverlayScrollbars = (target, options, eventListeners) => { structureState._addOnUpdatedListener((updateHints, changedOptions, force) => { const { _sizeChanged, - _contentMutation, - _hostMutation, _directionChanged, _heightIntrinsicChanged, _overflowAmountChanged, - _overflowScrollChanged + _overflowScrollChanged, + _contentMutation, + _hostMutation } = updateHints; const { - _viewportOverflowAmount, - _viewportOverflowScroll + _overflowAmount, + _overflowScroll } = structureState(); if (_overflowAmountChanged || _overflowScrollChanged) { - triggerEvent('overflowChanged', assignDeep({}, createOverflowChangedArgs(_viewportOverflowAmount, _viewportOverflowScroll), { - previous: createOverflowChangedArgs(_viewportOverflowAmount, _viewportOverflowScroll) + triggerEvent('overflowChanged', assignDeep({}, createOverflowChangedArgs(_overflowAmount, _overflowScroll), { + previous: createOverflowChangedArgs(_overflowAmount, _overflowScroll) })); } triggerEvent('updated', { updateHints: { sizeChanged: _sizeChanged, - contentMutation: _contentMutation, - hostMutation: _hostMutation, directionChanged: _directionChanged, - heightIntrinsicChanged: _heightIntrinsicChanged + heightIntrinsicChanged: _heightIntrinsicChanged, + overflowAmountChanged: _overflowAmountChanged, + overflowScrollChanged: _overflowScrollChanged, + contentMutation: _contentMutation, + hostMutation: _hostMutation }, changedOptions, force @@ -2504,7 +2476,7 @@ const OverlayScrollbars = (target, options, eventListeners) => { on: addEvent, off: removeEvent, state: () => ({ - _overflowAmount: structureState()._viewportOverflowAmount + _overflowAmount: structureState()._overflowAmount }), update(force) { diff --git a/packages/overlayscrollbars/dist/overlayscrollbars.esm.js.map b/packages/overlayscrollbars/dist/overlayscrollbars.esm.js.map index 4394fd2..2dfb6f7 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.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/utils/equal.ts","../src/support/utils/function.ts","../src/support/dom/style.ts","../src/support/dom/dimensions.ts","../src/support/dom/events.ts","../src/support/dom/offset.ts","../src/support/eventListeners.ts","../src/setups/setups.ts","../src/classnames.ts","../src/options.ts","../src/environment.ts","../src/setups/structureSetup/structureSetup.elements.ts","../src/setups/structureSetup/updateSegments/trinsicUpdateSegment.ts","../src/setups/structureSetup/updateSegments/paddingUpdateSegment.ts","../src/setups/structureSetup/updateSegments/overflowUpdateSegment.ts","../src/setups/structureSetup/structureSetup.update.ts","../src/observers/sizeObserver.ts","../src/observers/trinsicObserver.ts","../src/observers/domObserver.ts","../src/setups/structureSetup/structureSetup.observers.ts","../src/setups/structureSetup/structureSetup.ts","../src/setups/scrollbarsSetup/scrollbarsSetup.elements.ts","../src/setups/scrollbarsSetup/scrollbarsSetup.ts","../src/plugins/plugins.ts","../../../node_modules/@babel/runtime/helpers/extends.js","../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 = [value: T, changed: boolean, previous?: T];\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, args?: any[]): void => {\r\n // eslint-disable-next-line prefer-spread\r\n const runFn = (fn: RunEachItem) => fn && fn.apply(undefined, args || []);\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 * 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 * 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 * @returns A function which removes the added class name(s).\r\n */\r\nexport const addClass = (\r\n elm: Element | false | null | undefined,\r\n className: string\r\n): (() => void) => {\r\n classListAction(elm, className, (classList, clazz) => classList.add(clazz));\r\n return removeClass.bind(0, elm, className);\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","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 { style } from 'support/dom/style';\r\n\r\nexport 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 fractional- 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 fractional- width and height shall be returned.\r\n */\r\nexport const fractionalSize = (elm: HTMLElement | null | undefined): WH => {\r\n const cssHeight = parseFloat(style(elm, 'height')) || 0;\r\n const cssWidth = parseFloat(style(elm, 'height')) || 0;\r\n return {\r\n w: cssWidth - Math.round(cssWidth),\r\n h: cssHeight - Math.round(cssHeight),\r\n };\r\n};\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 { 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","import { isArray } from 'support/utils/types';\r\nimport { keys } from 'support/utils/object';\r\nimport { each, from } from 'support/utils/array';\r\n\r\nexport type EventListener<\r\n NameArgsMap extends Record,\r\n Name extends Extract = Extract\r\n> = (...args: NameArgsMap[Name] extends undefined ? [] : [args: NameArgsMap[Name]]) => void;\r\n\r\nexport type EventListenerGroup<\r\n NameArgsMap extends Record,\r\n Name extends Extract = Extract\r\n> = EventListener | EventListener[];\r\n\r\nexport type AddEventListener> = <\r\n Name extends Extract\r\n>(\r\n name: Name,\r\n listener: EventListenerGroup\r\n) => () => void;\r\n\r\nexport type RemoveEventListener> = <\r\n Name extends Extract\r\n>(\r\n name?: Name,\r\n listener?: EventListenerGroup\r\n) => void;\r\n\r\nexport type TriggerEventListener> = <\r\n Name extends Extract\r\n>(\r\n name: Name,\r\n ...args: NameArgsMap[Name] extends undefined ? [] : [args: NameArgsMap[Name]]\r\n) => void;\r\n\r\nexport type InitialEventListeners> = {\r\n [K in Extract]?: EventListenerGroup;\r\n};\r\n\r\nconst manageListener = >(\r\n callback: (listener?: EventListener) => void,\r\n listener?: EventListener | EventListener[]\r\n) => {\r\n each(isArray(listener) ? listener : [listener], callback);\r\n};\r\n\r\nexport const createEventListenerHub = >(\r\n initialEventListeners?: InitialEventListeners\r\n): [\r\n AddEventListener,\r\n RemoveEventListener,\r\n TriggerEventListener\r\n] => {\r\n const events = new Map, Set>>();\r\n const removeEvent: RemoveEventListener = (name?, listener?) => {\r\n if (name) {\r\n const eventSet = events.get(name);\r\n manageListener((currListener) => {\r\n if (eventSet) {\r\n eventSet[currListener ? 'delete' : 'clear'](currListener!);\r\n }\r\n }, listener as EventListenerGroup | undefined);\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 currListener && eventSet.add(currListener);\r\n }, listener as EventListenerGroup);\r\n\r\n return removeEvent.bind(0, name as any, listener as EventListenerGroup);\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 as (args: NameArgsMap[Extract]) => void)(args as any);\r\n } else {\r\n (event as () => void)();\r\n }\r\n });\r\n };\r\n\r\n const initialListenerKeys = keys(initialEventListeners) as Extract[];\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 { assignDeep, hasOwnProperty } from 'support';\r\nimport type { OSOptions, ReadonlyOSOptions } from 'options';\r\nimport type { PartialOptions } from 'typings';\r\n\r\nexport type SetupElements> = [elements: T, destroy: () => void];\r\n\r\nexport type SetupUpdate = (\r\n changedOptions: PartialOptions,\r\n force?: boolean\r\n) => T;\r\n\r\nexport type SetupUpdateCheckOption = (path: string) => [value: T, changed: boolean];\r\n\r\nexport type SetupUpdateSegment> = (\r\n updateHints: Hints,\r\n checkOption: SetupUpdateCheckOption,\r\n force: boolean\r\n) => Partial | void;\r\n\r\nexport type SetupState> = [\r\n get: () => T,\r\n set: (newState: Partial) => void\r\n];\r\n\r\nexport type Setup = Record> = [\r\n update: SetupUpdate,\r\n state: (() => DynamicState) & StaticState,\r\n destroy: () => 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\nexport const createOptionCheck =\r\n (\r\n options: ReadonlyOSOptions,\r\n changedOptions: PartialOptions,\r\n force?: boolean\r\n ): SetupUpdateCheckOption =>\r\n (path: string) =>\r\n [getPropByPath(options, path), force || getPropByPath(changedOptions, path) !== undefined];\r\n\r\nexport const createState = (initialState: S): SetupState => {\r\n let state: S = initialState;\r\n return [\r\n () => state,\r\n (newState: Partial) => {\r\n state = assignDeep({}, state, newState);\r\n },\r\n ];\r\n};\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","import { assignDeep, each, isObject, keys, isArray, hasOwnProperty, isFunction } from 'support';\r\nimport { PartialOptions, ReadonlyOptions } 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 type ReadonlyOSOptions = ReadonlyOptions;\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 fractionalSize,\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 createCache,\r\n equalXY,\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 StructureInitializationStrategyElementFn =\r\n | ((target: OSTargetElement) => HTMLElement | T)\r\n | T;\r\n\r\ntype ScrollbarsInitializationStrategyElementFn =\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 undefined (or the returned result is null or undefined), 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 StructureInitializationStrategyStaticElement = StructureInitializationStrategyElementFn<\r\n null | undefined\r\n>;\r\n\r\n/**\r\n * A Dynamic element is an element which CAN be generated.\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 StructureInitializationStrategyDynamicElement =\r\n StructureInitializationStrategyElementFn;\r\n\r\nexport interface StructureInitializationStrategy {\r\n _host: StructureInitializationStrategyStaticElement;\r\n _viewport: StructureInitializationStrategyStaticElement;\r\n _padding: StructureInitializationStrategyDynamicElement;\r\n _content: StructureInitializationStrategyDynamicElement;\r\n}\r\n\r\nexport interface ScrollbarsInitializationStrategy {\r\n /**\r\n * The scrollbars slot. If null or undefined (or the returned result is null or undefined), the initialization function is deciding the element, otherwise\r\n * the element returned by the function acts as the scrollbars slot.\r\n */\r\n _scrollbarsSlot: ScrollbarsInitializationStrategyElementFn;\r\n}\r\n\r\nexport interface InitializationStrategy\r\n extends StructureInitializationStrategy,\r\n ScrollbarsInitializationStrategy {}\r\n\r\nexport type DefaultInitializationStrategy = {\r\n [K in keyof InitializationStrategy]: Extract<\r\n InitializationStrategy[K],\r\n boolean | null | undefined\r\n >;\r\n};\r\n\r\nexport type OnEnvironmentChanged = (env: Environment) => void;\r\nexport interface Environment {\r\n readonly _nativeScrollbarSize: XY;\r\n readonly _nativeScrollbarIsOverlaid: XY;\r\n readonly _nativeScrollbarStyling: boolean;\r\n readonly _rtlScrollBehavior: { n: boolean; i: boolean };\r\n readonly _flexboxGlue: boolean;\r\n readonly _cssCustomProperties: boolean;\r\n readonly _defaultInitializationStrategy: DefaultInitializationStrategy;\r\n readonly _defaultDefaultOptions: OSOptions;\r\n _addListener(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}\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 = (\r\n body: HTMLElement,\r\n measureElm: HTMLElement,\r\n measureElmChild: HTMLElement\r\n): XY => {\r\n appendChildren(body, measureElm);\r\n\r\n const cSize = clientSize(measureElm);\r\n const oSize = offsetSize(measureElm);\r\n const fSize = fractionalSize(measureElmChild);\r\n\r\n return {\r\n x: oSize.h - cSize.h + fSize.h,\r\n y: oSize.w - cSize.w + fSize.w,\r\n };\r\n};\r\n\r\nconst getNativeScrollbarStyling = (testElm: HTMLElement): boolean => {\r\n let result = false;\r\n const revertClass = 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 revertClass();\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 const revertFbxGlue = 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 const revertFbxGlueMax = 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 revertFbxGlue();\r\n revertFbxGlueMax();\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\nconst getDefaultInitializationStrategy = (\r\n nativeScrollbarStyling: boolean\r\n): DefaultInitializationStrategy => ({\r\n _host: null,\r\n _viewport: null,\r\n _padding: !nativeScrollbarStyling,\r\n _content: false,\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 [updateNativeScrollbarSizeCache, getNativeScrollbarSizeCache] = createCache({\r\n _initialValue: getNativeScrollbarSize(body, envElm, envChildElm),\r\n _equal: equalXY,\r\n });\r\n const [nativeScrollbarSize] = getNativeScrollbarSizeCache();\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 initializationStrategy = getDefaultInitializationStrategy(nativeScrollbarStyling);\r\n const defaultDefaultOptions = assignDeep({}, 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) {\r\n onChangedListener.add(listener);\r\n return () => onChangedListener.delete(listener);\r\n },\r\n _getInitializationStrategy: assignDeep.bind(\r\n 0,\r\n {} as InitializationStrategy,\r\n initializationStrategy\r\n ),\r\n _setInitializationStrategy(newInitializationStrategy) {\r\n assignDeep(initializationStrategy, newInitializationStrategy);\r\n },\r\n _getDefaultOptions: assignDeep.bind(\r\n 0,\r\n {} as OSOptions,\r\n defaultDefaultOptions\r\n ),\r\n _setDefaultOptions(newDefaultOptions) {\r\n assignDeep(defaultDefaultOptions, newDefaultOptions);\r\n },\r\n _defaultInitializationStrategy: assignDeep({}, initializationStrategy),\r\n _defaultDefaultOptions: assignDeep({}, 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\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 [scrollbarSize, scrollbarSizeChanged] = updateNativeScrollbarSizeCache(\r\n getNativeScrollbarSize(body, envElm, envChildElm)\r\n );\r\n\r\n assignDeep(environmentInstance._nativeScrollbarSize, scrollbarSize); // keep the object same!\r\n removeElements(envElm);\r\n\r\n if (scrollbarSizeChanged) {\r\n runEach(onChangedListener);\r\n }\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 StructureInitializationStrategyStaticElement,\r\n StructureInitializationStrategyDynamicElement,\r\n} from 'environment';\r\nimport { OSTarget, OSTargetElement, StructureInitialization } from 'typings';\r\n\r\nexport type StructureSetupElements = [targetObj: StructureSetupElementsObj, destroy: () => void];\r\n\r\nexport interface StructureSetupElementsObj {\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 // ctx ----\r\n _isTextarea: boolean;\r\n _isBody: boolean;\r\n _htmlElm: HTMLHtmlElement;\r\n _bodyElm: HTMLBodyElement;\r\n _windowElm: Window;\r\n _documentElm: Document;\r\n _targetIsElm: boolean;\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: StructureInitializationStrategyStaticElement,\r\n elementClass: string\r\n): HTMLElement => {\r\n const result =\r\n initializationValue ||\r\n (isFunction(strategy) ? strategy(target) : (strategy as null | undefined));\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: StructureInitializationStrategyDynamicElement,\r\n elementClass: string\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 return result === true ? createDiv(elementClass) : result;\r\n};\r\n\r\nexport const createStructureSetupElements = (target: OSTarget): StructureSetupElements => {\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();\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 = targetElement!.ownerDocument;\r\n const bodyElm = ownerDocument.body as HTMLBodyElement;\r\n const wnd = ownerDocument.defaultView as Window;\r\n const evaluatedTargetObj: StructureSetupElementsObj = {\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 ),\r\n _content: dynamicCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.content,\r\n contentInitializationStrategy,\r\n classNameContent\r\n ),\r\n _viewportArrange: createUniqueViewportArrangeElement(),\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 [evaluatedTargetObj, runEach.bind(0, destroyFns)];\r\n};\r\n","import { style } from 'support';\r\nimport type { CreateStructureUpdateSegment } from 'setups/structureSetup/structureSetup.update';\r\n\r\n/**\r\n * Lifecycle with the responsibility to adjust the trinsic behavior of the content element.\r\n * @param structureUpdateHub\r\n * @returns\r\n */\r\nexport const createTrinsicUpdate: CreateStructureUpdateSegment = (\r\n structureSetupElements,\r\n state\r\n) => {\r\n const { _content } = structureSetupElements;\r\n const [getState] = state;\r\n\r\n return (updateHints) => {\r\n const { _heightIntrinsic } = getState();\r\n const { _heightIntrinsicChanged } = updateHints;\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, assignDeep } from 'support';\r\nimport { StyleObject } from 'typings';\r\nimport { getEnvironment } from 'environment';\r\nimport type { CreateStructureUpdateSegment } from 'setups/structureSetup/structureSetup.update';\r\n\r\n/**\r\n * Lifecycle with the responsibility to adjust the padding styling of the padding and viewport element.\r\n * @param structureUpdateHub\r\n * @returns\r\n */\r\nexport const createPaddingUpdate: CreateStructureUpdateSegment = (\r\n structureSetupElements,\r\n state\r\n) => {\r\n const [getState, setState] = state;\r\n const { _host, _padding, _viewport } = structureSetupElements;\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 { _directionIsRTL } = getState();\r\n const { _sizeChanged, _contentMutation, _directionChanged } = updateHints;\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 setState({\r\n _padding: padding,\r\n _paddingAbsolute: !paddingRelative,\r\n _viewportPaddingStyle: _padding\r\n ? viewportStyle\r\n : assignDeep({}, paddingStyle, viewportStyle),\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 fractionalSize,\r\n CacheValues,\r\n equalWH,\r\n addClass,\r\n removeClass,\r\n clientSize,\r\n noop,\r\n each,\r\n equalXY,\r\n} from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport { OverflowBehavior } from 'options';\r\nimport { StyleObject } from 'typings';\r\nimport { classNameViewportArrange, classNameViewportScrollbarStyling } from 'classnames';\r\nimport type { CreateStructureUpdateSegment } from 'setups/structureSetup/structureSetup.update';\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, 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 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 sizeFraction: WH\r\n) => {\r\n const condition = (raw: number) => (window.devicePixelRatio % 2 !== 0 ? raw > 1 : raw > 0);\r\n const amount = {\r\n w: max(0, viewportScrollSize.w - viewportClientSize.w - max(0, sizeFraction.w)),\r\n h: max(0, viewportScrollSize.h - viewportClientSize.h - max(0, sizeFraction.h)),\r\n };\r\n\r\n return {\r\n w: condition(amount.w) ? amount.w : 0,\r\n h: condition(amount.h) ? amount.h : 0,\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 structureUpdateHub\r\n * @returns\r\n */\r\nexport const createOverflowUpdate: CreateStructureUpdateSegment = (\r\n structureSetupElements,\r\n state\r\n) => {\r\n const [getState, setState] = state;\r\n const { _host, _viewport, _viewportArrange } = structureSetupElements;\r\n const {\r\n _nativeScrollbarSize,\r\n _flexboxGlue,\r\n _nativeScrollbarStyling,\r\n _nativeScrollbarIsOverlaid,\r\n } = getEnvironment();\r\n const doViewportArrange =\r\n !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);\r\n\r\n const [updateSizeFraction, getCurrentSizeFraction] = createCache>(\r\n whCacheOptions,\r\n fractionalSize.bind(0, _host)\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 { _paddingAbsolute, _padding } = getState();\r\n const { _overflowScroll, _scrollbarsHideOffset } = viewportOverflowState;\r\n const hostCssHeight = parseFloat(style(_host, 'height'));\r\n const hostClientSize = clientSize(_host);\r\n // const hostOffsetSize = offsetSize(_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 = hostClientSize.h + (hostCssHeight - round(hostCssHeight));\r\n\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 { 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 sizeFraction: WH,\r\n directionIsRTL: boolean\r\n ) => {\r\n if (doViewportArrange) {\r\n const { _viewportPaddingStyle } = getState();\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 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 = viewportScrollSize.w + sizeFraction.w;\r\n const fractionalContenHeight = viewportScrollSize.h + sizeFraction.h;\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 } = getState();\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 } = getState();\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 (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\r\n removeClass(_viewport, classNameViewportArrange);\r\n\r\n if (!_flexboxGlue) {\r\n finalPaddingStyle.height = '';\r\n }\r\n\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 _sizeChanged,\r\n _hostMutation,\r\n _contentMutation,\r\n _paddingStyleChanged,\r\n _heightIntrinsicChanged,\r\n _directionChanged,\r\n } = updateHints;\r\n const { _heightIntrinsic, _directionIsRTL } = getState();\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 sizeFractionCache: CacheValues> = getCurrentSizeFraction(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 _directionChanged ||\r\n showNativeOverlaidScrollbarsChanged\r\n ) {\r\n const [redoViewportArrange, undoViewportArrangeOverflowState] = undoViewportArrange(\r\n showNativeOverlaidScrollbars,\r\n _directionIsRTL,\r\n preMeasureViewportOverflowState\r\n );\r\n const [sizeFraction, sizeFractionChanged] = (sizeFractionCache = updateSizeFraction(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 || sizeFractionChanged || showNativeOverlaidScrollbarsChanged) &&\r\n undoViewportArrangeOverflowState &&\r\n !showNativeOverlaidScrollbars &&\r\n arrangeViewport(\r\n undoViewportArrangeOverflowState,\r\n viewportScrollSize,\r\n sizeFraction,\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 sizeFraction\r\n ),\r\n force\r\n );\r\n }\r\n\r\n const [sizeFraction, sizeFractionChanged] = sizeFractionCache;\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 _directionChanged ||\r\n sizeFractionChanged ||\r\n viewportScrollSizeChanged ||\r\n overflowAmountChanged ||\r\n overflowChanged ||\r\n showNativeOverlaidScrollbarsChanged ||\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 sizeFraction,\r\n _directionIsRTL\r\n );\r\n const [overflowScroll, overflowScrollChanged] = updateOverflowScrollCache(\r\n viewportOverflowState._overflowScroll\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 setState({\r\n _viewportOverflowScroll: overflowScroll,\r\n _viewportOverflowAmount: overflowAmount,\r\n });\r\n\r\n return {\r\n _overflowAmountChanged: overflowAmountChanged,\r\n _overflowScrollChanged: overflowScrollChanged,\r\n };\r\n }\r\n };\r\n};\r\n","import {\r\n CacheValues,\r\n each,\r\n isNumber,\r\n scrollLeft,\r\n scrollTop,\r\n assignDeep,\r\n keys,\r\n isBoolean,\r\n isUndefined,\r\n} from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport {\r\n createTrinsicUpdate,\r\n createPaddingUpdate,\r\n createOverflowUpdate,\r\n} from 'setups/structureSetup/updateSegments';\r\nimport type { SetupState, SetupUpdateSegment, SetupUpdateCheckOption } from 'setups';\r\nimport type { StructureSetupState } from 'setups/structureSetup';\r\nimport type { StructureSetupElementsObj } from 'setups/structureSetup/structureSetup.elements';\r\n\r\nexport type CreateStructureUpdateSegment = (\r\n structureSetupElements: StructureSetupElementsObj,\r\n state: SetupState\r\n) => StructureSetupUpdateSegment;\r\n\r\nexport type StructureSetupUpdateSegment = SetupUpdateSegment;\r\n\r\nexport type StructureSetupUpdate = (\r\n checkOption: SetupUpdateCheckOption,\r\n updateHints: Partial,\r\n force?: boolean\r\n) => StructureSetupUpdateHints;\r\n\r\nexport interface StructureSetupUpdateHints {\r\n _sizeChanged: boolean;\r\n _hostMutation: boolean;\r\n _contentMutation: boolean;\r\n _paddingStyleChanged: boolean;\r\n _directionChanged: boolean;\r\n _heightIntrinsicChanged: boolean;\r\n _overflowScrollChanged: boolean;\r\n _overflowAmountChanged: boolean;\r\n}\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\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, force);\r\n });\r\n\r\n return result as Required;\r\n};\r\n\r\nexport const createStructureSetupUpdate = (\r\n structureSetupElements: StructureSetupElementsObj,\r\n state: SetupState\r\n): StructureSetupUpdate => {\r\n const { _viewport } = structureSetupElements;\r\n const { _nativeScrollbarStyling, _nativeScrollbarIsOverlaid, _flexboxGlue } = getEnvironment();\r\n const doViewportArrange =\r\n !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);\r\n\r\n const updateSegments: StructureSetupUpdateSegment[] = [\r\n createTrinsicUpdate(structureSetupElements, state),\r\n createPaddingUpdate(structureSetupElements, state),\r\n createOverflowUpdate(structureSetupElements, state),\r\n ];\r\n\r\n return (\r\n checkOption: SetupUpdateCheckOption,\r\n updateHints: 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 _directionChanged: false,\r\n _heightIntrinsicChanged: false,\r\n _overflowScrollChanged: false,\r\n _overflowAmountChanged: false,\r\n },\r\n Object.keys(updateHints).reduce((acc, key) => {\r\n if (!isUndefined(updateHints[key])) {\r\n acc[key] = updateHints[key];\r\n }\r\n return acc;\r\n }, {})\r\n ),\r\n {},\r\n force\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 let adaptivedUpdateHints: Required = initialUpdateHints;\r\n each(updateSegments, (updateSegment) => {\r\n adaptivedUpdateHints = prepareUpdateHints(\r\n adaptivedUpdateHints,\r\n updateSegment(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 return adaptivedUpdateHints;\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 type DOMObserver = [destroy: () => void, update: () => void];\r\n\r\ntype EventContentChangeUpdateElement = (getElements?: (selector: string) => Node[]) => void;\r\ntype EventContentChange = [destroy: () => void, updateElements: EventContentChangeUpdateElement];\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): EventContentChange => {\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: EventContentChangeUpdateElement = (getElements?) => {\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 [destroy, updateElements];\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 [destroyEventContentChange, updateEventContentChangeElements] = 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 () => {\r\n if (isConnected) {\r\n destroyEventContentChange();\r\n mutationObserver.disconnect();\r\n isConnected = false;\r\n }\r\n },\r\n () => {\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 type { SetupState, SetupUpdateCheckOption } from 'setups';\r\nimport type { StructureSetupState } from 'setups/structureSetup';\r\nimport type { StructureSetupElementsObj } from 'setups/structureSetup/structureSetup.elements';\r\nimport type {\r\n StructureSetupUpdate,\r\n StructureSetupUpdateHints,\r\n} from 'setups/structureSetup/structureSetup.update';\r\n\r\nexport type StructureSetupObserversUpdate = (checkOption: SetupUpdateCheckOption) => void;\r\n\r\nexport type StructureSetupObservers = [\r\n updateObserverOptions: StructureSetupObserversUpdate,\r\n destroy: () => void\r\n];\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\ntype ExcludeFromTuple = T extends [infer F, ...infer R]\r\n ? [F] extends [E]\r\n ? ExcludeFromTuple\r\n : [F, ...ExcludeFromTuple]\r\n : [];\r\n\r\nexport const createStructureSetupObservers = (\r\n structureSetupElements: StructureSetupElementsObj,\r\n state: SetupState,\r\n structureSetupUpdate: (\r\n ...args: ExcludeFromTuple, Parameters[0]>\r\n ) => any\r\n): StructureSetupObservers => {\r\n let debounceTimeout: number | false | undefined;\r\n let debounceMaxDelay: number | false | undefined;\r\n let contentMutationObserver: DOMObserver | undefined;\r\n const [, setState] = state;\r\n const { _host, _viewport, _content, _isTextarea } = structureSetupElements;\r\n const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment();\r\n const contentMutationObserverAttr = _isTextarea\r\n ? baseStyleChangingAttrsTextarea\r\n : baseStyleChangingAttrs.concat(baseStyleChangingAttrsTextarea);\r\n const structureSetupUpdateWithDebouncedAdaptiveUpdateHints = debounce(structureSetupUpdate, {\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 = (heightIntrinsicCache: CacheValues) => {\r\n const [heightIntrinsic, heightIntrinsicChanged] = heightIntrinsicCache;\r\n setState({ _heightIntrinsic: heightIntrinsic });\r\n structureSetupUpdate({ _heightIntrinsicChanged: heightIntrinsicChanged });\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 ? structureSetupUpdate\r\n : structureSetupUpdateWithDebouncedAdaptiveUpdateHints;\r\n\r\n let directionChanged = false;\r\n if (_directionIsRTLCache) {\r\n const [directionIsRTL, directionIsRTLChanged] = _directionIsRTLCache;\r\n directionChanged = directionIsRTLChanged;\r\n setState({ _directionIsRTL: directionIsRTL });\r\n }\r\n\r\n updateFn({ _sizeChanged, _directionChanged: directionChanged });\r\n };\r\n const onContentMutation = (contentChangedTroughEvent: boolean) => {\r\n // if contentChangedTroughEvent is true its already debounced\r\n const updateFn = contentChangedTroughEvent\r\n ? structureSetupUpdate\r\n : structureSetupUpdateWithDebouncedAdaptiveUpdateHints;\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 structureSetupUpdateWithDebouncedAdaptiveUpdateHints({\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 [destroyHostMutationObserver] = createDOMObserver(_host, false, onHostMutation, {\r\n _styleChangingAttributes: baseStyleChangingAttrs,\r\n _attributes: baseStyleChangingAttrs.concat(viewportAttrsFromTarget),\r\n _ignoreTargetChange: ignoreTargetChange,\r\n });\r\n\r\n updateViewportAttrsFromHost();\r\n\r\n return [\r\n (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[1](); // update\r\n contentMutationObserver[0](); // destroy\r\n }\r\n contentMutationObserver = createDOMObserver(\r\n _content || _viewport,\r\n true,\r\n onContentMutation,\r\n {\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\r\n if (debounceChanged) {\r\n structureSetupUpdateWithDebouncedAdaptiveUpdateHints._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 contentMutationObserver && contentMutationObserver[0](); // destroy\r\n destroyTrinsicObserver && destroyTrinsicObserver();\r\n destroySizeObserver();\r\n destroyHostMutationObserver();\r\n },\r\n ];\r\n};\r\n","import { runEach } from 'support';\r\nimport { createState, createOptionCheck } from 'setups/setups';\r\nimport { createStructureSetupElements } from 'setups/structureSetup/structureSetup.elements';\r\nimport { createStructureSetupUpdate } from 'setups/structureSetup/structureSetup.update';\r\nimport { createStructureSetupObservers } from 'setups/structureSetup/structureSetup.observers';\r\nimport type { StructureSetupUpdateHints } from 'setups/structureSetup/structureSetup.update';\r\nimport type { StructureSetupElementsObj } from 'setups/structureSetup/structureSetup.elements';\r\nimport type { TRBL, XY, WH } from 'support';\r\nimport type { OSOptions, ReadonlyOSOptions } from 'options';\r\nimport type { Setup } from 'setups';\r\nimport type { OSTarget, PartialOptions, StyleObject } from 'typings';\r\n\r\nexport interface StructureSetupState {\r\n _padding: TRBL;\r\n _paddingAbsolute: boolean;\r\n _viewportPaddingStyle: StyleObject;\r\n _viewportOverflowScroll: XY;\r\n _viewportOverflowAmount: WH;\r\n _heightIntrinsic: boolean;\r\n _directionIsRTL: boolean;\r\n}\r\n\r\nexport interface StructureSetupStaticState {\r\n _elements: StructureSetupElementsObj;\r\n _addOnUpdatedListener: (listener: OnUpdatedListener) => void;\r\n}\r\n\r\nexport type OnUpdatedListener = (\r\n updateHints: StructureSetupUpdateHints,\r\n changedOptions: PartialOptions,\r\n force: boolean\r\n) => void;\r\n\r\nconst initialStructureSetupUpdateState: StructureSetupState = {\r\n _padding: {\r\n t: 0,\r\n r: 0,\r\n b: 0,\r\n l: 0,\r\n },\r\n _paddingAbsolute: false,\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 _viewportOverflowAmount: {\r\n w: 0,\r\n h: 0,\r\n },\r\n _viewportOverflowScroll: {\r\n x: false,\r\n y: false,\r\n },\r\n _heightIntrinsic: false,\r\n _directionIsRTL: false,\r\n};\r\n\r\nexport const createStructureSetup = (\r\n target: OSTarget,\r\n options: ReadonlyOSOptions\r\n): Setup => {\r\n const checkOptionsFallback = createOptionCheck(options, {});\r\n const state = createState(initialStructureSetupUpdateState);\r\n const onUpdatedListeners = new Set();\r\n const [getUpdateState] = state;\r\n\r\n const runOnUpdatedListeners = (\r\n updateHints: StructureSetupUpdateHints,\r\n changedOptions?: PartialOptions,\r\n force?: boolean\r\n ) => {\r\n runEach(onUpdatedListeners, [updateHints, changedOptions || {}, !!force]);\r\n };\r\n\r\n const [elements, destroyElements] = createStructureSetupElements(target);\r\n const updateStructure = createStructureSetupUpdate(elements, state);\r\n const [updateObservers, destroyObservers] = createStructureSetupObservers(\r\n elements,\r\n state,\r\n (updateHints) => {\r\n runOnUpdatedListeners(updateStructure(checkOptionsFallback, updateHints));\r\n }\r\n );\r\n\r\n const structureSetupState = getUpdateState.bind(0) as (() => StructureSetupState) &\r\n StructureSetupStaticState;\r\n structureSetupState._addOnUpdatedListener = (listener) => {\r\n onUpdatedListeners.add(listener);\r\n };\r\n structureSetupState._elements = elements;\r\n\r\n return [\r\n (changedOptions, force?) => {\r\n const checkOption = createOptionCheck(options, changedOptions, force);\r\n updateObservers(checkOption);\r\n runOnUpdatedListeners(updateStructure(checkOption, {}, force));\r\n },\r\n structureSetupState,\r\n () => {\r\n onUpdatedListeners.clear();\r\n destroyObservers();\r\n destroyElements();\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 type { StructureSetupElementsObj } from 'setups/structureSetup/structureSetup.elements';\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 ScrollbarsSetupElementsObj {\r\n _horizontalScrollbarStructure: ScrollbarStructure;\r\n _verticalScrollbarStructure: ScrollbarStructure;\r\n}\r\n\r\nexport type ScrollbarsSetupElements = [elements: ScrollbarsSetupElementsObj, destroy: () => void];\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 createScrollbarsSetupElements = (\r\n target: OSTarget,\r\n structureSetupElements: StructureSetupElementsObj\r\n): ScrollbarsSetupElements => {\r\n const { _getInitializationStrategy } = getEnvironment();\r\n const { _scrollbarsSlot: environmentScrollbarSlot } =\r\n _getInitializationStrategy() as ScrollbarsInitializationStrategy;\r\n const { _target, _host, _viewport, _targetIsElm } = structureSetupElements;\r\n const initializationScrollbarSlot =\r\n !_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)\r\n ? environmentScrollbarSlot(_target, _host, _viewport)\r\n : 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 {\r\n _horizontalScrollbarStructure: horizontalScrollbarStructure,\r\n _verticalScrollbarStructure: verticalScrollbarStructure,\r\n },\r\n removeElements.bind(0, [horizontalScrollbar, verticalScrollbar]),\r\n ];\r\n};\r\n","import { createState, createOptionCheck } from 'setups/setups';\r\nimport {\r\n createScrollbarsSetupElements,\r\n ScrollbarsSetupElementsObj,\r\n} from 'setups/scrollbarsSetup/scrollbarsSetup.elements';\r\nimport type { StructureSetupElementsObj } from 'setups/structureSetup/structureSetup.elements';\r\nimport type { ReadonlyOSOptions } from 'options';\r\nimport type { Setup } from 'setups';\r\nimport type { OSTarget } from 'typings';\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\r\nexport interface ScrollbarsSetupState {}\r\n\r\nexport interface ScrollbarsSetupStaticState {\r\n _elements: ScrollbarsSetupElementsObj;\r\n}\r\n\r\nexport const createScrollbarsSetup = (\r\n target: OSTarget,\r\n options: ReadonlyOSOptions,\r\n structureSetupElements: StructureSetupElementsObj\r\n): Setup => {\r\n const state = createState({});\r\n const [getState] = state;\r\n\r\n const [elements, destroyElements] = createScrollbarsSetupElements(target, structureSetupElements);\r\n\r\n const scrollbarsSetupState = getState.bind(0) as (() => ScrollbarsSetupState) &\r\n ScrollbarsSetupStaticState;\r\n scrollbarsSetupState._elements = elements;\r\n\r\n return [\r\n (changedOptions, force?) => {\r\n const checkOption = createOptionCheck(options, changedOptions, force);\r\n // eslint-disable-next-line no-console\r\n console.log(checkOption);\r\n },\r\n scrollbarsSetupState,\r\n () => {\r\n destroyElements();\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","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 { 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 { createEventListenerHub, XY } from 'support';\r\nimport { PartialOptions } from 'typings';\r\nimport type {\r\n InitialEventListeners,\r\n AddEventListener,\r\n RemoveEventListener,\r\n TriggerEventListener,\r\n EventListener,\r\n} from 'support/eventListeners';\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 OSEventListenersNameArgsMap {\r\n initialized: undefined;\r\n initializationWithdrawn: undefined;\r\n overflowChanged: OnOverflowChangedEventListenerArgs;\r\n updated: OnUpdatedEventListenerArgs;\r\n destroyed: undefined;\r\n}\r\n\r\nexport type OSEventListener<\r\n N extends Extract = Extract<\r\n keyof OSEventListenersNameArgsMap,\r\n string\r\n >\r\n> = EventListener;\r\n\r\nexport type AddOSEventListener = AddEventListener;\r\n\r\nexport type RemoveOSEventListener = RemoveEventListener;\r\n\r\nexport type TriggerOSEventListener = TriggerEventListener;\r\n\r\nexport type InitialOSEventListeners = InitialEventListeners;\r\n\r\nexport const createOSEventListenerHub = (initialEventListeners?: InitialOSEventListeners) =>\r\n createEventListenerHub(initialEventListeners);\r\n","import { OSTarget, OSInitializationObject, PartialOptions } from 'typings';\r\nimport { assignDeep, isEmptyObject, each, isFunction, keys, isHTMLElement, WH, XY } from 'support';\r\nimport { createStructureSetup, createScrollbarsSetup } from 'setups';\r\nimport { getOptionsDiff, OSOptions, ReadonlyOSOptions } 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 createOSEventListenerHub,\r\n InitialOSEventListeners,\r\n AddOSEventListener,\r\n RemoveOSEventListener,\r\n} from 'eventListeners';\r\n\r\nexport interface OverlayScrollbarsStatic {\r\n (\r\n target: OSTarget | OSInitializationObject,\r\n options?: PartialOptions,\r\n eventListeners?: InitialOSEventListeners\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: AddOSEventListener;\r\n off: RemoveOSEventListener;\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 OverlayScrollbars: OverlayScrollbarsStatic = (\r\n target,\r\n options?,\r\n eventListeners?\r\n): OverlayScrollbars => {\r\n const {\r\n _getDefaultOptions,\r\n _nativeScrollbarIsOverlaid,\r\n _addListener: addEnvListener,\r\n } = 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: ReadonlyOSOptions = assignDeep(\r\n {},\r\n _getDefaultOptions(),\r\n validateOptions(options)\r\n );\r\n const [addEvent, removeEvent, triggerEvent] = createOSEventListenerHub(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');\r\n }\r\n\r\n const [updateStructure, structureState, destroyStructure] = createStructureSetup(\r\n target,\r\n currentOptions\r\n );\r\n const [updateScrollbars, , destroyScrollbars] = createScrollbarsSetup(\r\n target,\r\n currentOptions,\r\n structureState._elements\r\n );\r\n\r\n const update = (changedOptions: PartialOptions, force?: boolean) => {\r\n updateStructure(changedOptions, force);\r\n updateScrollbars(changedOptions, force);\r\n };\r\n\r\n structureState._addOnUpdatedListener((updateHints, changedOptions, force) => {\r\n const {\r\n _sizeChanged,\r\n _contentMutation,\r\n _hostMutation,\r\n _directionChanged,\r\n _heightIntrinsicChanged,\r\n _overflowAmountChanged,\r\n _overflowScrollChanged,\r\n } = updateHints;\r\n const { _viewportOverflowAmount, _viewportOverflowScroll } = structureState();\r\n\r\n if (_overflowAmountChanged || _overflowScrollChanged) {\r\n triggerEvent(\r\n 'overflowChanged',\r\n assignDeep(\r\n {},\r\n createOverflowChangedArgs(_viewportOverflowAmount, _viewportOverflowScroll),\r\n {\r\n previous: createOverflowChangedArgs(_viewportOverflowAmount!, _viewportOverflowScroll!),\r\n }\r\n )\r\n );\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: _directionChanged,\r\n heightIntrinsicChanged: _heightIntrinsicChanged,\r\n },\r\n changedOptions,\r\n force,\r\n });\r\n });\r\n\r\n const removeEnvListener = addEnvListener(update.bind(0, {}, true));\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 update(changedOptions);\r\n }\r\n }\r\n return currentOptions;\r\n },\r\n on: addEvent,\r\n off: removeEvent,\r\n state: () => ({\r\n _overflowAmount: structureState()._viewportOverflowAmount,\r\n }),\r\n update(force?: boolean) {\r\n update({}, force);\r\n },\r\n destroy: () => {\r\n removeInstance(instanceTarget);\r\n removeEnvListener();\r\n removeEvent();\r\n\r\n destroyScrollbars();\r\n destroyStructure();\r\n\r\n triggerEvent('destroyed');\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');\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","args","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","removeClass","remove","addClass","add","bind","diffClass","classNameA","classNameB","classNameASplit","split","classNameBSplit","tempObj","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","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","zeroObj","w","h","windowSize","innerWidth","innerHeight","offsetSize","offsetWidth","offsetHeight","clientSize","clientWidth","clientHeight","scrollSize","scrollWidth","scrollHeight","fractionalSize","cssHeight","cssWidth","getBoundingClientRect","passiveEventsSupport","supportPassiveEvents","addEventListener","defineProperty","get","splitEventNames","eventNames","off","listener","capture","eventName","removeEventListener","on","doSupportPassiveEvents","passive","_passive","_capture","once","_once","offListeners","nativeOptions","finalListener","evt","stopPropagation","preventDefault","stopAndPrevent","x","y","absoluteCoordinates","rect","pageYOffset","pageXOffset","manageListener","createEventListenerHub","initialEventListeners","events","Map","removeEvent","eventSet","currListener","clear","addEvent","set","triggerEvent","event","initialListenerKeys","getPropByPath","path","o","createOptionCheck","changedOptions","createState","initialState","state","newState","classNameEnvironment","classNameEnvironmentFlexboxGlue","classNameEnvironmentFlexboxGlueMax","classNameHost","classNamePadding","classNameViewport","classNameViewportArrange","classNameContent","classNameViewportScrollbarStyling","classNameSizeObserver","classNameSizeObserverAppear","classNameSizeObserverListener","classNameSizeObserverListenerScroll","classNameSizeObserverListenerItem","classNameSizeObserverListenerItemFinal","classNameTrinsicObserver","classNameScrollbar","classNameScrollbarHorizontal","classNameScrollbarVertical","classNameScrollbarTrack","classNameScrollbarHandle","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","measureElmChild","cSize","oSize","fSize","getNativeScrollbarStyling","testElm","revertClass","ex","getRtlScrollBehavior","childElm","strHidden","overflowX","overflowY","direction","parentOffset","childOffset","childOffsetAfterScroll","n","getFlexboxGlue","revertFbxGlue","minOffsetsizeParent","minOffsetsize","supportsMin","revertFbxGlueMax","maxOffsetsizeParent","maxOffsetsize","supportsMax","getWindowDPR","dDPI","screen","deviceXDPI","sDPI","logicalXDPI","devicePixelRatio","getDefaultInitializationStrategy","nativeScrollbarStyling","_host","_viewport","_padding","_content","_scrollbarsSlot","createEnvironment","envDOM","envElm","envChildElm","onChangedListener","updateNativeScrollbarSizeCache","getNativeScrollbarSizeCache","nativeScrollbarSize","nativeScrollbarIsOverlaid","initializationStrategy","defaultDefaultOptions","env","_nativeScrollbarSize","_nativeScrollbarIsOverlaid","_nativeScrollbarStyling","_cssCustomProperties","_rtlScrollBehavior","_flexboxGlue","_addListener","delete","_getInitializationStrategy","_setInitializationStrategy","newInitializationStrategy","_getDefaultOptions","_setDefaultOptions","newDefaultOptions","_defaultInitializationStrategy","_defaultDefaultOptions","size","dpr","sizeNew","deltaSize","deltaAbsSize","deltaAbsRatio","dprNew","deltaIsBigger","difference","dprChanged","isZoom","scrollbarSize","scrollbarSizeChanged","getEnvironment","contentArrangeCounter","unwrap","createUniqueViewportArrangeElement","create","staticCreationFromStrategy","initializationValue","strategy","elementClass","dynamicCreationFromStrategy","takeInitializationValue","createStructureSetupElements","hostInitializationStrategy","viewportInitializationStrategy","paddingInitializationStrategy","contentInitializationStrategy","targetIsElm","targetStructureInitialization","targetElement","isTextarea","isBody","ownerDocument","bodyElm","wnd","defaultView","evaluatedTargetObj","_target","host","viewport","padding","content","_viewportArrange","_windowElm","_documentElm","_htmlElm","_bodyElm","_isTextarea","_isBody","_targetIsElm","generatedElements","elementIsGenerated","destroyFns","isTextareaHostGenerated","targetContents","contentSlot","createTrinsicUpdate","structureSetupElements","getState","updateHints","_heightIntrinsic","_heightIntrinsicChanged","height","display","_sizeChanged","_contentMutation","createPaddingUpdate","setState","updatePaddingCache","currentPaddingCache","checkOption","paddingChanged","_directionIsRTL","_directionChanged","paddingAbsoluteChanged","contentMutation","paddingStyleChanged","paddingRelative","paddingHorizontal","paddingVertical","paddingStyle","marginRight","marginBottom","marginLeft","width","viewportStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","_paddingAbsolute","_viewportPaddingStyle","_paddingStyleChanged","max","overlaidScrollbarsHideOffset","whCacheOptions","xyCacheOptions","setAxisOverflowStyle","horizontal","overflowAmount","behavior","styleObj","overflowKey","behaviorIsVisible","behaviorIsVisibleHidden","behaviorIsScroll","hasOverflow","_visible","_behavior","getOverflowAmount","viewportScrollSize","viewportClientSize","sizeFraction","condition","raw","amount","createOverflowUpdate","doViewportArrange","updateSizeFraction","getCurrentSizeFraction","updateViewportScrollSizeCache","getCurrentViewportScrollSizeCache","updateOverflowAmountCache","getCurrentOverflowAmountCache","updateOverflowScrollCache","fixFlexboxGlue","viewportOverflowState","heightIntrinsic","_overflowScroll","_scrollbarsHideOffset","hostCssHeight","hostClientSize","isContentBox","fractionalClientHeight","subtractXScrollbar","getViewportOverflowState","showNativeOverlaidScrollbars","viewportStyleObj","overlaidX","overlaidY","determineOverflow","arrangeHideOffset","scroll","nonScrollbarStylingHideOffset","scrollbarsHideOffset","_scrollbarsHideOffsetArrange","setViewportOverflowState","xVisible","xVisibleBehavior","yVisible","yVisibleBehavior","arrangeViewport","directionIsRTL","arrangeX","arrangeY","hideOffsetX","hideOffsetY","viewportArrangeHorizontalPaddingKey","viewportArrangeHorizontalPaddingValue","viewportArrangeVerticalPaddingValue","fractionalContentWidth","fractionalContenHeight","arrangeSize","sheet","cssRules","insertRule","ruleStyle","hideNativeScrollbars","viewportArrange","viewportPaddingStyle","horizontalMarginKey","viewportHorizontalPaddingKey","horizontalMarginValue","verticalMarginValue","horizontalPaddingValue","verticalPaddingValue","undoViewportArrange","finalViewportOverflowState","finalPaddingStyle","assignProps","prevStyle","_hostMutation","showNativeOverlaidScrollbarsOption","showNativeOverlaidScrollbarsChanged","adjustFlexboxGlue","sizeFractionCache","viewportScrollSizeCache","overflowAmuntCache","preMeasureViewportOverflowState","redoViewportArrange","undoViewportArrangeOverflowState","sizeFractionChanged","viewportScrollSizeChanged","viewportContentSize","arrangedViewportScrollSize","arrangedViewportClientSize","overflowAmountChanged","overflowChanged","viewportArranged","overflowScroll","overflowScrollChanged","_viewportOverflowScroll","_viewportOverflowAmount","_overflowAmountChanged","_overflowScrollChanged","applyForceToCache","cacheValues","prepareUpdateHints","leading","adaptive","finalAdaptive","objKeys","leadingValue","adaptiveValue","createStructureSetupUpdate","updateSegments","initialUpdateHints","acc","adjustScrollOffset","scrollOffsetX","scrollOffsetY","adaptivedUpdateHints","updateSegment","animationStartEventName","scrollEventName","scrollAmount","getElmDirectionIsRTL","domRectHasDimensions","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","_directionIsRTLCache","appearCallback","directionIsRTLCache","resizeObserverInstance","observe","disconnect","observerElementChildren","observerElementChildrenRoot","shrinkElement","lastChild","expandElement","expandElementChild","cacheSize","currSize","isDirty","rAFId","reset","onResized","onScroll","scrollEvent","updateDirectionIsRTLCache","directionIsRTLCacheValues","directionIsRTLChanged","isHeightIntrinsic","ioEntryOrSize","isIntersecting","intersectionRatio","createTrinsicObserver","onTrinsicChangedCallback","trinsicObserver","updateHeightIntrinsicCache","triggerOnTrinsicChangedCallback","updateValue","heightIntrinsicChanged","intersectionObserverInstance","entries","root","onSizeChanged","newSize","createEventContentChange","eventContentChange","map","destroyed","destroy","updateElements","getElements","eventElmList","elements","entry","entryEventNames","entryOff","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","takeRecords","ignorePrefix","viewportAttrsFromTarget","baseStyleChangingAttrsTextarea","baseStyleChangingAttrs","addedOrRemovedClass","createStructureSetupObservers","structureSetupUpdate","debounceTimeout","debounceMaxDelay","contentMutationObserver","contentMutationObserverAttr","structureSetupUpdateWithDebouncedAdaptiveUpdateHints","prev","prevSizeChanged","prevHostMutation","prevContentMutation","currSizeChanged","currvHostMutation","currContentMutation","merged","updateViewportAttrsFromHost","attribute","hostAttr","onTrinsicChanged","heightIntrinsicCache","updateFn","directionChanged","onContentMutation","contentChangedTroughEvent","onHostMutation","destroyTrinsicObserver","destroySizeObserver","destroyHostMutationObserver","elementEventsChanged","attributesChanged","debounceValue","debounceChanged","updateContentMutationObserver","timeout","maxWait","initialStructureSetupUpdateState","createStructureSetup","checkOptionsFallback","onUpdatedListeners","getUpdateState","runOnUpdatedListeners","destroyElements","updateStructure","updateObservers","destroyObservers","structureSetupState","_addOnUpdatedListener","_elements","generateScrollbarDOM","scrollbarClassName","scrollbar","track","handle","_scrollbar","_track","_handle","createScrollbarsSetupElements","environmentScrollbarSlot","initializationScrollbarSlot","scrollbarsSlot","initializationScrollbarSlotResult","evaluatedScrollbarSlot","horizontalScrollbarStructure","verticalScrollbarStructure","horizontalScrollbar","verticalScrollbar","_horizontalScrollbarStructure","_verticalScrollbarStructure","createScrollbarsSetup","scrollbarsSetupState","console","log","pluginRegistry","getPlugins","addPlugin","addedPlugin","plugin","_extends","module","assign","exports","__esModule","templateTypePrefixSuffix","optionsTemplateTypes","numberAllowedValues","oTypes","number","booleanAllowedValues","boolean","arrayNullValues","null","stringArrayNullAllowedValues","string","resizeAllowedValues","overflowAllowedValues","scrollbarsVisibilityAllowedValues","scrollbarsAutoHideAllowedValues","function","optionsValidationPluginName","targets","targetInstanceMap","addInstance","osInstance","removeInstance","getInstance","createOSEventListenerHub","createOverflowChangedArgs","scrollableOverflow","OverlayScrollbars","eventListeners","addEnvListener","plugins","instanceTarget","potentialInstance","optionsValidationPlugin","validateOptions","opts","validate","currentOptions","structureState","destroyStructure","updateScrollbars","destroyScrollbars","previous","sizeChanged","hostMutation","removeEnvListener","instance","_overflowAmount","pluginName","pluginInstance","extend"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"overlayscrollbars.esm.js","sources":["../src/support/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/utils/equal.ts","../src/support/utils/function.ts","../src/support/dom/style.ts","../src/support/dom/dimensions.ts","../src/support/dom/events.ts","../src/support/dom/offset.ts","../src/support/eventListeners.ts","../src/setups/setups.ts","../src/classnames.ts","../src/options.ts","../src/environment.ts","../src/setups/structureSetup/structureSetup.elements.ts","../src/setups/structureSetup/updateSegments/trinsicUpdateSegment.ts","../src/setups/structureSetup/updateSegments/paddingUpdateSegment.ts","../src/setups/structureSetup/updateSegments/overflowUpdateSegment.ts","../src/setups/structureSetup/structureSetup.update.ts","../src/observers/sizeObserver.ts","../src/observers/trinsicObserver.ts","../src/observers/domObserver.ts","../src/setups/structureSetup/structureSetup.observers.ts","../src/setups/structureSetup/structureSetup.ts","../src/setups/scrollbarsSetup/scrollbarsSetup.elements.ts","../src/setups/scrollbarsSetup/scrollbarsSetup.ts","../src/plugins/plugins.ts","../../../node_modules/@babel/runtime/helpers/extends.js","../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 = [value: T, changed: boolean, previous?: T];\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, args?: any[]): void => {\r\n // eslint-disable-next-line prefer-spread\r\n const runFn = (fn: RunEachItem) => fn && fn.apply(undefined, args || []);\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 * 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 * 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 * @returns A function which removes the added class name(s).\r\n */\r\nexport const addClass = (\r\n elm: Element | false | null | undefined,\r\n className: string\r\n): (() => void) => {\r\n classListAction(elm, className, (classList, clazz) => classList.add(clazz));\r\n return removeClass.bind(0, elm, className);\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","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 { style } from 'support/dom/style';\r\n\r\nexport 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 fractional- 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 fractional- width and height shall be returned.\r\n */\r\nexport const fractionalSize = (elm: HTMLElement | null | undefined): WH => {\r\n const cssHeight = parseFloat(style(elm, 'height')) || 0;\r\n const cssWidth = parseFloat(style(elm, 'height')) || 0;\r\n return {\r\n w: cssWidth - Math.round(cssWidth),\r\n h: cssHeight - Math.round(cssHeight),\r\n };\r\n};\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 { 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","import { isArray } from 'support/utils/types';\r\nimport { keys } from 'support/utils/object';\r\nimport { each, from } from 'support/utils/array';\r\n\r\nexport type EventListener<\r\n NameArgsMap extends Record,\r\n Name extends Extract = Extract\r\n> = (...args: NameArgsMap[Name] extends undefined ? [] : [args: NameArgsMap[Name]]) => void;\r\n\r\nexport type EventListenerGroup<\r\n NameArgsMap extends Record,\r\n Name extends Extract = Extract\r\n> = EventListener | EventListener[];\r\n\r\nexport type AddEventListener> = <\r\n Name extends Extract\r\n>(\r\n name: Name,\r\n listener: EventListenerGroup\r\n) => () => void;\r\n\r\nexport type RemoveEventListener> = <\r\n Name extends Extract\r\n>(\r\n name?: Name,\r\n listener?: EventListenerGroup\r\n) => void;\r\n\r\nexport type TriggerEventListener> = <\r\n Name extends Extract\r\n>(\r\n name: Name,\r\n ...args: NameArgsMap[Name] extends undefined ? [] : [args: NameArgsMap[Name]]\r\n) => void;\r\n\r\nexport type InitialEventListeners> = {\r\n [K in Extract]?: EventListenerGroup;\r\n};\r\n\r\nconst manageListener = >(\r\n callback: (listener?: EventListener) => void,\r\n listener?: EventListener | EventListener[]\r\n) => {\r\n each(isArray(listener) ? listener : [listener], callback);\r\n};\r\n\r\nexport const createEventListenerHub = >(\r\n initialEventListeners?: InitialEventListeners\r\n): [\r\n AddEventListener,\r\n RemoveEventListener,\r\n TriggerEventListener\r\n] => {\r\n const events = new Map, Set>>();\r\n const removeEvent: RemoveEventListener = (name?, listener?) => {\r\n if (name) {\r\n const eventSet = events.get(name);\r\n manageListener((currListener) => {\r\n if (eventSet) {\r\n eventSet[currListener ? 'delete' : 'clear'](currListener!);\r\n }\r\n }, listener as EventListenerGroup | undefined);\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 currListener && eventSet.add(currListener);\r\n }, listener as EventListenerGroup);\r\n\r\n return removeEvent.bind(0, name as any, listener as EventListenerGroup);\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 as (args: NameArgsMap[Extract]) => void)(args as any);\r\n } else {\r\n (event as () => void)();\r\n }\r\n });\r\n };\r\n\r\n const initialListenerKeys = keys(initialEventListeners) as Extract[];\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 { assignDeep, hasOwnProperty } from 'support';\r\nimport type { OSOptions, ReadonlyOSOptions } from 'options';\r\nimport type { PartialOptions } from 'typings';\r\n\r\nexport type SetupElements> = [elements: T, destroy: () => void];\r\n\r\nexport type SetupUpdate = (\r\n changedOptions: PartialOptions,\r\n force?: boolean\r\n) => T;\r\n\r\nexport type SetupUpdateCheckOption = (path: string) => [value: T, changed: boolean];\r\n\r\nexport type SetupUpdateSegment> = (\r\n updateHints: Hints,\r\n checkOption: SetupUpdateCheckOption,\r\n force: boolean\r\n) => Partial | void;\r\n\r\nexport type SetupState> = [\r\n get: () => T,\r\n set: (newState: Partial) => void\r\n];\r\n\r\nexport type Setup = Record> = [\r\n update: SetupUpdate,\r\n state: (() => DynamicState) & StaticState,\r\n destroy: () => 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\nexport const createOptionCheck =\r\n (\r\n options: ReadonlyOSOptions,\r\n changedOptions: PartialOptions,\r\n force?: boolean\r\n ): SetupUpdateCheckOption =>\r\n (path: string) =>\r\n [getPropByPath(options, path), force || getPropByPath(changedOptions, path) !== undefined];\r\n\r\nexport const createState = (initialState: S): SetupState => {\r\n let state: S = initialState;\r\n return [\r\n () => state,\r\n (newState: Partial) => {\r\n state = assignDeep({}, state, newState);\r\n },\r\n ];\r\n};\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","import { assignDeep, each, isObject, keys, isArray, hasOwnProperty, isFunction } from 'support';\r\nimport { PartialOptions, ReadonlyOptions } 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 type ReadonlyOSOptions = ReadonlyOptions;\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 fractionalSize,\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 createCache,\r\n equalXY,\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 StructureInitializationStrategyElementFn =\r\n | ((target: OSTargetElement) => HTMLElement | T)\r\n | T;\r\n\r\ntype ScrollbarsInitializationStrategyElementFn =\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 undefined (or the returned result is null or undefined), 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 StructureInitializationStrategyStaticElement = StructureInitializationStrategyElementFn<\r\n null | undefined\r\n>;\r\n\r\n/**\r\n * A Dynamic element is an element which CAN be generated.\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 StructureInitializationStrategyDynamicElement =\r\n StructureInitializationStrategyElementFn;\r\n\r\nexport interface StructureInitializationStrategy {\r\n _host: StructureInitializationStrategyStaticElement;\r\n _viewport: StructureInitializationStrategyStaticElement;\r\n _padding: StructureInitializationStrategyDynamicElement;\r\n _content: StructureInitializationStrategyDynamicElement;\r\n}\r\n\r\nexport interface ScrollbarsInitializationStrategy {\r\n /**\r\n * The scrollbars slot. If null or undefined (or the returned result is null or undefined), the initialization function is deciding the element, otherwise\r\n * the element returned by the function acts as the scrollbars slot.\r\n */\r\n _scrollbarsSlot: ScrollbarsInitializationStrategyElementFn;\r\n}\r\n\r\nexport interface InitializationStrategy\r\n extends StructureInitializationStrategy,\r\n ScrollbarsInitializationStrategy {}\r\n\r\nexport type DefaultInitializationStrategy = {\r\n [K in keyof InitializationStrategy]: Extract<\r\n InitializationStrategy[K],\r\n boolean | null | undefined\r\n >;\r\n};\r\n\r\nexport type OnEnvironmentChanged = (env: Environment) => void;\r\nexport interface Environment {\r\n readonly _nativeScrollbarSize: XY;\r\n readonly _nativeScrollbarIsOverlaid: XY;\r\n readonly _nativeScrollbarStyling: boolean;\r\n readonly _rtlScrollBehavior: { n: boolean; i: boolean };\r\n readonly _flexboxGlue: boolean;\r\n readonly _cssCustomProperties: boolean;\r\n readonly _defaultInitializationStrategy: DefaultInitializationStrategy;\r\n readonly _defaultDefaultOptions: OSOptions;\r\n _addListener(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}\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 = (\r\n body: HTMLElement,\r\n measureElm: HTMLElement,\r\n measureElmChild: HTMLElement\r\n): XY => {\r\n appendChildren(body, measureElm);\r\n\r\n const cSize = clientSize(measureElm);\r\n const oSize = offsetSize(measureElm);\r\n const fSize = fractionalSize(measureElmChild);\r\n\r\n return {\r\n x: oSize.h - cSize.h + fSize.h,\r\n y: oSize.w - cSize.w + fSize.w,\r\n };\r\n};\r\n\r\nconst getNativeScrollbarStyling = (testElm: HTMLElement): boolean => {\r\n let result = false;\r\n const revertClass = 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 revertClass();\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 const revertFbxGlue = 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 const revertFbxGlueMax = 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 revertFbxGlue();\r\n revertFbxGlueMax();\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\nconst getDefaultInitializationStrategy = (\r\n nativeScrollbarStyling: boolean\r\n): DefaultInitializationStrategy => ({\r\n _host: null,\r\n _viewport: null,\r\n _padding: !nativeScrollbarStyling,\r\n _content: false,\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 [updateNativeScrollbarSizeCache, getNativeScrollbarSizeCache] = createCache({\r\n _initialValue: getNativeScrollbarSize(body, envElm, envChildElm),\r\n _equal: equalXY,\r\n });\r\n const [nativeScrollbarSize] = getNativeScrollbarSizeCache();\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 initializationStrategy = getDefaultInitializationStrategy(nativeScrollbarStyling);\r\n const defaultDefaultOptions = assignDeep({}, 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) {\r\n onChangedListener.add(listener);\r\n return () => onChangedListener.delete(listener);\r\n },\r\n _getInitializationStrategy: assignDeep.bind(\r\n 0,\r\n {} as InitializationStrategy,\r\n initializationStrategy\r\n ),\r\n _setInitializationStrategy(newInitializationStrategy) {\r\n assignDeep(initializationStrategy, newInitializationStrategy);\r\n },\r\n _getDefaultOptions: assignDeep.bind(\r\n 0,\r\n {} as OSOptions,\r\n defaultDefaultOptions\r\n ),\r\n _setDefaultOptions(newDefaultOptions) {\r\n assignDeep(defaultDefaultOptions, newDefaultOptions);\r\n },\r\n _defaultInitializationStrategy: assignDeep({}, initializationStrategy),\r\n _defaultDefaultOptions: assignDeep({}, 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\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 [scrollbarSize, scrollbarSizeChanged] = updateNativeScrollbarSizeCache(\r\n getNativeScrollbarSize(body, envElm, envChildElm)\r\n );\r\n\r\n assignDeep(environmentInstance._nativeScrollbarSize, scrollbarSize); // keep the object same!\r\n removeElements(envElm);\r\n\r\n if (scrollbarSizeChanged) {\r\n runEach(onChangedListener);\r\n }\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 StructureInitializationStrategyStaticElement,\r\n StructureInitializationStrategyDynamicElement,\r\n} from 'environment';\r\nimport { OSTarget, OSTargetElement, StructureInitialization } from 'typings';\r\n\r\nexport type StructureSetupElements = [targetObj: StructureSetupElementsObj, destroy: () => void];\r\n\r\nexport interface StructureSetupElementsObj {\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 // ctx ----\r\n _isTextarea: boolean;\r\n _isBody: boolean;\r\n _htmlElm: HTMLHtmlElement;\r\n _bodyElm: HTMLBodyElement;\r\n _windowElm: Window;\r\n _documentElm: Document;\r\n _targetIsElm: boolean;\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: StructureInitializationStrategyStaticElement,\r\n elementClass: string\r\n): HTMLElement => {\r\n const result =\r\n initializationValue ||\r\n (isFunction(strategy) ? strategy(target) : (strategy as null | undefined));\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: StructureInitializationStrategyDynamicElement,\r\n elementClass: string\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 return result === true ? createDiv(elementClass) : result;\r\n};\r\n\r\nexport const createStructureSetupElements = (target: OSTarget): StructureSetupElements => {\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();\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 = targetElement!.ownerDocument;\r\n const bodyElm = ownerDocument.body as HTMLBodyElement;\r\n const wnd = ownerDocument.defaultView as Window;\r\n const evaluatedTargetObj: StructureSetupElementsObj = {\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 ),\r\n _content: dynamicCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.content,\r\n contentInitializationStrategy,\r\n classNameContent\r\n ),\r\n _viewportArrange: createUniqueViewportArrangeElement(),\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 [evaluatedTargetObj, runEach.bind(0, destroyFns)];\r\n};\r\n","import { style } from 'support';\r\nimport type { CreateStructureUpdateSegment } from 'setups/structureSetup/structureSetup.update';\r\n\r\n/**\r\n * Lifecycle with the responsibility to adjust the trinsic behavior of the content element.\r\n * @param structureUpdateHub\r\n * @returns\r\n */\r\nexport const createTrinsicUpdate: CreateStructureUpdateSegment = (\r\n structureSetupElements,\r\n state\r\n) => {\r\n const { _content } = structureSetupElements;\r\n const [getState] = state;\r\n\r\n return (updateHints) => {\r\n const { _heightIntrinsic } = getState();\r\n const { _heightIntrinsicChanged } = updateHints;\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, assignDeep } from 'support';\r\nimport { StyleObject } from 'typings';\r\nimport { getEnvironment } from 'environment';\r\nimport type { CreateStructureUpdateSegment } from 'setups/structureSetup/structureSetup.update';\r\n\r\n/**\r\n * Lifecycle with the responsibility to adjust the padding styling of the padding and viewport element.\r\n * @param structureUpdateHub\r\n * @returns\r\n */\r\nexport const createPaddingUpdate: CreateStructureUpdateSegment = (\r\n structureSetupElements,\r\n state\r\n) => {\r\n const [getState, setState] = state;\r\n const { _host, _padding, _viewport } = structureSetupElements;\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 { _directionIsRTL } = getState();\r\n const { _sizeChanged, _contentMutation, _directionChanged } = updateHints;\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 setState({\r\n _padding: padding,\r\n _paddingAbsolute: !paddingRelative,\r\n _viewportPaddingStyle: _padding\r\n ? viewportStyle\r\n : assignDeep({}, paddingStyle, viewportStyle),\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 fractionalSize,\r\n equalWH,\r\n addClass,\r\n removeClass,\r\n clientSize,\r\n noop,\r\n each,\r\n equalXY,\r\n} from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport { OverflowBehavior } from 'options';\r\nimport { StyleObject } from 'typings';\r\nimport { classNameViewportArrange, classNameViewportScrollbarStyling } from 'classnames';\r\nimport type { CreateStructureUpdateSegment } from 'setups/structureSetup/structureSetup.update';\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 redoViewportArrange: () => void,\r\n overflowState?: ViewportOverflowState\r\n];\r\n\r\nconst { max } = 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 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 [behaviorIsVisible, behaviorIsVisibleHidden ? 'hidden' : 'scroll'] as [\r\n visible: boolean,\r\n behavior: string\r\n ];\r\n};\r\n\r\nconst getOverflowAmount = (\r\n viewportScrollSize: WH,\r\n viewportClientSize: WH,\r\n sizeFraction: WH\r\n) => {\r\n const tollerance = window.devicePixelRatio % 2 !== 0 ? 1 : 0;\r\n const amount = {\r\n w: max(0, viewportScrollSize.w - viewportClientSize.w - max(0, sizeFraction.w)),\r\n h: max(0, viewportScrollSize.h - viewportClientSize.h - max(0, sizeFraction.h)),\r\n };\r\n\r\n return {\r\n w: amount.w >= tollerance ? amount.w : 0,\r\n h: amount.h >= tollerance ? amount.h : 0,\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 structureUpdateHub\r\n * @returns\r\n */\r\nexport const createOverflowUpdate: CreateStructureUpdateSegment = (\r\n structureSetupElements,\r\n state\r\n) => {\r\n const [getState, setState] = state;\r\n const { _host, _viewport, _viewportArrange } = structureSetupElements;\r\n const {\r\n _nativeScrollbarSize,\r\n _flexboxGlue,\r\n _nativeScrollbarStyling,\r\n _nativeScrollbarIsOverlaid,\r\n } = getEnvironment();\r\n const doViewportArrange =\r\n !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);\r\n\r\n const [updateSizeFraction, getCurrentSizeFraction] = createCache>(\r\n whCacheOptions,\r\n fractionalSize.bind(0, _host)\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 { _paddingAbsolute, _padding } = getState();\r\n const { _overflowScroll, _scrollbarsHideOffset } = viewportOverflowState;\r\n const fSize = fractionalSize(_host);\r\n const hostClientSize = clientSize(_host);\r\n\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 subtractXScrollbar = !(_nativeScrollbarIsOverlaid.x && isContentBox);\r\n\r\n style(_viewport, {\r\n height:\r\n hostClientSize.h +\r\n fSize.h +\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 { 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 [xVisible, xVisibleBehavior] = setAxisOverflowStyle(\r\n true,\r\n overflowAmount.w,\r\n overflow.x,\r\n viewportStyleObj\r\n );\r\n const [yVisible, 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 sizeFraction: WH,\r\n directionIsRTL: boolean\r\n ) => {\r\n if (doViewportArrange) {\r\n const { _viewportPaddingStyle } = getState();\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 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 = viewportScrollSize.w + sizeFraction.w;\r\n const fractionalContenHeight = viewportScrollSize.h + sizeFraction.h;\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 } = getState();\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 } = getState();\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 (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\r\n removeClass(_viewport, classNameViewportArrange);\r\n\r\n if (!_flexboxGlue) {\r\n finalPaddingStyle.height = '';\r\n }\r\n\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 _sizeChanged,\r\n _hostMutation,\r\n _contentMutation,\r\n _paddingStyleChanged,\r\n _heightIntrinsicChanged,\r\n _directionChanged,\r\n } = updateHints;\r\n const { _heightIntrinsic, _directionIsRTL } = getState();\r\n const [showNativeOverlaidScrollbarsOption, showNativeOverlaidScrollbarsChanged] =\r\n checkOption('nativeScrollbarsOverlaid.show');\r\n const [overflow, overflowChanged] = checkOption>('overflow');\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 sizeFractionCache = getCurrentSizeFraction(force);\r\n let viewportScrollSizeCache = getCurrentViewportScrollSizeCache(force);\r\n let overflowAmuntCache = 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 _directionChanged ||\r\n showNativeOverlaidScrollbarsChanged\r\n ) {\r\n const [redoViewportArrange, undoViewportArrangeOverflowState] = undoViewportArrange(\r\n showNativeOverlaidScrollbars,\r\n _directionIsRTL,\r\n preMeasureViewportOverflowState\r\n );\r\n const [sizeFraction, sizeFractionChanged] = (sizeFractionCache = updateSizeFraction(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 || sizeFractionChanged || showNativeOverlaidScrollbarsChanged) &&\r\n undoViewportArrangeOverflowState &&\r\n !showNativeOverlaidScrollbars &&\r\n arrangeViewport(\r\n undoViewportArrangeOverflowState,\r\n viewportScrollSize,\r\n sizeFraction,\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 sizeFraction\r\n ),\r\n force\r\n );\r\n }\r\n\r\n const [overflowAmount, overflowAmountChanged] = overflowAmuntCache;\r\n const [viewportScrollSize, viewportScrollSizeChanged] = viewportScrollSizeCache;\r\n const [sizeFraction, sizeFractionChanged] = sizeFractionCache;\r\n\r\n if (\r\n _paddingStyleChanged ||\r\n _directionChanged ||\r\n sizeFractionChanged ||\r\n viewportScrollSizeChanged ||\r\n overflowAmountChanged ||\r\n overflowChanged ||\r\n showNativeOverlaidScrollbarsChanged ||\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 sizeFraction,\r\n _directionIsRTL\r\n );\r\n const [overflowScroll, overflowScrollChanged] = updateOverflowScrollCache(\r\n viewportOverflowState._overflowScroll\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 setState({\r\n _overflowScroll: overflowScroll,\r\n _overflowAmount: overflowAmount,\r\n });\r\n\r\n return {\r\n _overflowAmountChanged: overflowAmountChanged,\r\n _overflowScrollChanged: overflowScrollChanged,\r\n };\r\n }\r\n };\r\n};\r\n","import { each, isNumber, scrollLeft, scrollTop, assignDeep, keys } from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport {\r\n createTrinsicUpdate,\r\n createPaddingUpdate,\r\n createOverflowUpdate,\r\n} from 'setups/structureSetup/updateSegments';\r\nimport type { SetupState, SetupUpdateSegment, SetupUpdateCheckOption } from 'setups';\r\nimport type { StructureSetupState } from 'setups/structureSetup';\r\nimport type { StructureSetupElementsObj } from 'setups/structureSetup/structureSetup.elements';\r\n\r\nexport type CreateStructureUpdateSegment = (\r\n structureSetupElements: StructureSetupElementsObj,\r\n state: SetupState\r\n) => StructureSetupUpdateSegment;\r\n\r\nexport type StructureSetupUpdateSegment = SetupUpdateSegment;\r\n\r\nexport type StructureSetupUpdate = (\r\n checkOption: SetupUpdateCheckOption,\r\n updateHints: Partial,\r\n force?: boolean\r\n) => StructureSetupUpdateHints;\r\n\r\nexport interface StructureSetupUpdateHints {\r\n _sizeChanged: boolean;\r\n _directionChanged: boolean;\r\n _heightIntrinsicChanged: boolean;\r\n _overflowScrollChanged: boolean;\r\n _overflowAmountChanged: boolean;\r\n _paddingStyleChanged: boolean;\r\n _hostMutation: boolean;\r\n _contentMutation: boolean;\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] = !!(force || leadingValue || adaptiveValue);\r\n });\r\n\r\n return result as Required;\r\n};\r\n\r\nexport const createStructureSetupUpdate = (\r\n structureSetupElements: StructureSetupElementsObj,\r\n state: SetupState\r\n): StructureSetupUpdate => {\r\n const { _viewport } = structureSetupElements;\r\n const { _nativeScrollbarStyling, _nativeScrollbarIsOverlaid, _flexboxGlue } = getEnvironment();\r\n const doViewportArrange =\r\n !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);\r\n\r\n const updateSegments: StructureSetupUpdateSegment[] = [\r\n createTrinsicUpdate(structureSetupElements, state),\r\n createPaddingUpdate(structureSetupElements, state),\r\n createOverflowUpdate(structureSetupElements, state),\r\n ];\r\n\r\n return (\r\n checkOption: SetupUpdateCheckOption,\r\n updateHints: Partial,\r\n force?: boolean\r\n ) => {\r\n const initialUpdateHints = prepareUpdateHints(\r\n assignDeep(\r\n {\r\n _sizeChanged: false,\r\n _paddingStyleChanged: false,\r\n _directionChanged: false,\r\n _heightIntrinsicChanged: false,\r\n _overflowScrollChanged: false,\r\n _overflowAmountChanged: false,\r\n _hostMutation: false,\r\n _contentMutation: false,\r\n },\r\n updateHints\r\n ),\r\n {},\r\n force\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 let adaptivedUpdateHints: Required = initialUpdateHints;\r\n each(updateSegments, (updateSegment) => {\r\n adaptivedUpdateHints = prepareUpdateHints(\r\n adaptivedUpdateHints,\r\n updateSegment(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 return adaptivedUpdateHints;\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 type DOMObserver = [destroy: () => void, update: () => void];\r\n\r\ntype EventContentChangeUpdateElement = (getElements?: (selector: string) => Node[]) => void;\r\ntype EventContentChange = [destroy: () => void, updateElements: EventContentChangeUpdateElement];\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): EventContentChange => {\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: EventContentChangeUpdateElement = (getElements?) => {\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 [destroy, updateElements];\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 [destroyEventContentChange, updateEventContentChangeElements] = 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 () => {\r\n if (isConnected) {\r\n destroyEventContentChange();\r\n mutationObserver.disconnect();\r\n isConnected = false;\r\n }\r\n },\r\n () => {\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 keys,\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 type { SetupState, SetupUpdateCheckOption } from 'setups';\r\nimport type { StructureSetupState } from 'setups/structureSetup';\r\nimport type { StructureSetupElementsObj } from 'setups/structureSetup/structureSetup.elements';\r\nimport type {\r\n StructureSetupUpdate,\r\n StructureSetupUpdateHints,\r\n} from 'setups/structureSetup/structureSetup.update';\r\n\r\nexport type StructureSetupObserversUpdate = (checkOption: SetupUpdateCheckOption) => void;\r\n\r\nexport type StructureSetupObservers = [\r\n updateObserverOptions: StructureSetupObserversUpdate,\r\n destroy: () => void\r\n];\r\n\r\ntype ExcludeFromTuple = T extends [infer F, ...infer R]\r\n ? [F] extends [E]\r\n ? ExcludeFromTuple\r\n : [F, ...ExcludeFromTuple]\r\n : [];\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 createStructureSetupObservers = (\r\n structureSetupElements: StructureSetupElementsObj,\r\n state: SetupState,\r\n structureSetupUpdate: (\r\n ...args: ExcludeFromTuple, Parameters[0]>\r\n ) => any\r\n): StructureSetupObservers => {\r\n let debounceTimeout: number | false | undefined;\r\n let debounceMaxDelay: number | false | undefined;\r\n let contentMutationObserver: DOMObserver | undefined;\r\n const [, setState] = state;\r\n const { _host, _viewport, _content, _isTextarea } = structureSetupElements;\r\n const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment();\r\n const contentMutationObserverAttr = _isTextarea\r\n ? baseStyleChangingAttrsTextarea\r\n : baseStyleChangingAttrs.concat(baseStyleChangingAttrsTextarea);\r\n const structureSetupUpdateWithDebouncedAdaptiveUpdateHints = debounce(structureSetupUpdate, {\r\n _timeout: () => debounceTimeout,\r\n _maxDelay: () => debounceMaxDelay,\r\n _mergeParams(prev, curr) {\r\n const [prevObj] = prev;\r\n const [currObj] = curr;\r\n return [\r\n keys(prevObj)\r\n .concat(keys(currObj))\r\n .reduce((obj, key) => {\r\n obj[key] = prevObj[key] || currObj[key];\r\n return obj;\r\n }, {}),\r\n ] as [Partial];\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 = (heightIntrinsicCache: CacheValues) => {\r\n const [heightIntrinsic, heightIntrinsicChanged] = heightIntrinsicCache;\r\n setState({ _heightIntrinsic: heightIntrinsic });\r\n structureSetupUpdate({ _heightIntrinsicChanged: heightIntrinsicChanged });\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 ? structureSetupUpdate\r\n : structureSetupUpdateWithDebouncedAdaptiveUpdateHints;\r\n\r\n let directionChanged = false;\r\n if (_directionIsRTLCache) {\r\n const [directionIsRTL, directionIsRTLChanged] = _directionIsRTLCache;\r\n directionChanged = directionIsRTLChanged;\r\n setState({ _directionIsRTL: directionIsRTL });\r\n }\r\n\r\n updateFn({ _sizeChanged, _directionChanged: directionChanged });\r\n };\r\n const onContentMutation = (contentChangedTroughEvent: boolean) => {\r\n // if contentChangedTroughEvent is true its already debounced\r\n const updateFn = contentChangedTroughEvent\r\n ? structureSetupUpdate\r\n : structureSetupUpdateWithDebouncedAdaptiveUpdateHints;\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 structureSetupUpdateWithDebouncedAdaptiveUpdateHints({\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 [destroyHostMutationObserver] = createDOMObserver(_host, false, onHostMutation, {\r\n _styleChangingAttributes: baseStyleChangingAttrs,\r\n _attributes: baseStyleChangingAttrs.concat(viewportAttrsFromTarget),\r\n _ignoreTargetChange: ignoreTargetChange,\r\n });\r\n\r\n updateViewportAttrsFromHost();\r\n\r\n return [\r\n (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[1](); // update\r\n contentMutationObserver[0](); // destroy\r\n }\r\n contentMutationObserver = createDOMObserver(\r\n _content || _viewport,\r\n true,\r\n onContentMutation,\r\n {\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\r\n if (debounceChanged) {\r\n structureSetupUpdateWithDebouncedAdaptiveUpdateHints._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 contentMutationObserver && contentMutationObserver[0](); // destroy\r\n destroyTrinsicObserver && destroyTrinsicObserver();\r\n destroySizeObserver();\r\n destroyHostMutationObserver();\r\n },\r\n ];\r\n};\r\n","import { runEach } from 'support';\r\nimport { createState, createOptionCheck } from 'setups/setups';\r\nimport { createStructureSetupElements } from 'setups/structureSetup/structureSetup.elements';\r\nimport { createStructureSetupUpdate } from 'setups/structureSetup/structureSetup.update';\r\nimport { createStructureSetupObservers } from 'setups/structureSetup/structureSetup.observers';\r\nimport type { StructureSetupUpdateHints } from 'setups/structureSetup/structureSetup.update';\r\nimport type { StructureSetupElementsObj } from 'setups/structureSetup/structureSetup.elements';\r\nimport type { TRBL, XY, WH } from 'support';\r\nimport type { OSOptions, ReadonlyOSOptions } from 'options';\r\nimport type { Setup } from 'setups';\r\nimport type { OSTarget, PartialOptions, StyleObject } from 'typings';\r\n\r\nexport interface StructureSetupState {\r\n _padding: TRBL;\r\n _paddingAbsolute: boolean;\r\n _viewportPaddingStyle: StyleObject;\r\n _overflowScroll: XY;\r\n _overflowAmount: WH;\r\n _heightIntrinsic: boolean;\r\n _directionIsRTL: boolean;\r\n}\r\n\r\nexport interface StructureSetupStaticState {\r\n _elements: StructureSetupElementsObj;\r\n _addOnUpdatedListener: (listener: OnUpdatedListener) => void;\r\n}\r\n\r\nexport type OnUpdatedListener = (\r\n updateHints: StructureSetupUpdateHints,\r\n changedOptions: PartialOptions,\r\n force: boolean\r\n) => void;\r\n\r\nconst initialStructureSetupUpdateState: StructureSetupState = {\r\n _padding: {\r\n t: 0,\r\n r: 0,\r\n b: 0,\r\n l: 0,\r\n },\r\n _paddingAbsolute: false,\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 _overflowAmount: {\r\n w: 0,\r\n h: 0,\r\n },\r\n _overflowScroll: {\r\n x: false,\r\n y: false,\r\n },\r\n _heightIntrinsic: false,\r\n _directionIsRTL: false,\r\n};\r\n\r\nexport const createStructureSetup = (\r\n target: OSTarget,\r\n options: ReadonlyOSOptions\r\n): Setup => {\r\n const checkOptionsFallback = createOptionCheck(options, {});\r\n const state = createState(initialStructureSetupUpdateState);\r\n const onUpdatedListeners = new Set();\r\n const [getState] = state;\r\n const runOnUpdatedListeners = (\r\n updateHints: StructureSetupUpdateHints,\r\n changedOptions?: PartialOptions,\r\n force?: boolean\r\n ) => {\r\n runEach(onUpdatedListeners, [updateHints, changedOptions || {}, !!force]);\r\n };\r\n\r\n const [elements, destroyElements] = createStructureSetupElements(target);\r\n const updateStructure = createStructureSetupUpdate(elements, state);\r\n const [updateObservers, destroyObservers] = createStructureSetupObservers(\r\n elements,\r\n state,\r\n (updateHints) => {\r\n runOnUpdatedListeners(updateStructure(checkOptionsFallback, updateHints));\r\n }\r\n );\r\n\r\n const structureSetupState = getState.bind(0) as (() => StructureSetupState) &\r\n StructureSetupStaticState;\r\n structureSetupState._addOnUpdatedListener = (listener) => {\r\n onUpdatedListeners.add(listener);\r\n };\r\n structureSetupState._elements = elements;\r\n\r\n return [\r\n (changedOptions, force?) => {\r\n const checkOption = createOptionCheck(options, changedOptions, force);\r\n updateObservers(checkOption);\r\n runOnUpdatedListeners(updateStructure(checkOption, {}, force));\r\n },\r\n structureSetupState,\r\n () => {\r\n onUpdatedListeners.clear();\r\n destroyObservers();\r\n destroyElements();\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 type { StructureSetupElementsObj } from 'setups/structureSetup/structureSetup.elements';\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 ScrollbarsSetupElementsObj {\r\n _horizontalScrollbarStructure: ScrollbarStructure;\r\n _verticalScrollbarStructure: ScrollbarStructure;\r\n}\r\n\r\nexport type ScrollbarsSetupElements = [elements: ScrollbarsSetupElementsObj, destroy: () => void];\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 createScrollbarsSetupElements = (\r\n target: OSTarget,\r\n structureSetupElements: StructureSetupElementsObj\r\n): ScrollbarsSetupElements => {\r\n const { _getInitializationStrategy } = getEnvironment();\r\n const { _scrollbarsSlot: environmentScrollbarSlot } =\r\n _getInitializationStrategy() as ScrollbarsInitializationStrategy;\r\n const { _target, _host, _viewport, _targetIsElm } = structureSetupElements;\r\n const initializationScrollbarSlot =\r\n !_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)\r\n ? environmentScrollbarSlot(_target, _host, _viewport)\r\n : 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 {\r\n _horizontalScrollbarStructure: horizontalScrollbarStructure,\r\n _verticalScrollbarStructure: verticalScrollbarStructure,\r\n },\r\n removeElements.bind(0, [horizontalScrollbar, verticalScrollbar]),\r\n ];\r\n};\r\n","import { createState, createOptionCheck } from 'setups/setups';\r\nimport {\r\n createScrollbarsSetupElements,\r\n ScrollbarsSetupElementsObj,\r\n} from 'setups/scrollbarsSetup/scrollbarsSetup.elements';\r\nimport type { StructureSetupElementsObj } from 'setups/structureSetup/structureSetup.elements';\r\nimport type { ReadonlyOSOptions } from 'options';\r\nimport type { Setup } from 'setups';\r\nimport type { OSTarget } from 'typings';\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\r\nexport interface ScrollbarsSetupState {}\r\n\r\nexport interface ScrollbarsSetupStaticState {\r\n _elements: ScrollbarsSetupElementsObj;\r\n}\r\n\r\nexport const createScrollbarsSetup = (\r\n target: OSTarget,\r\n options: ReadonlyOSOptions,\r\n structureSetupElements: StructureSetupElementsObj\r\n): Setup => {\r\n const state = createState({});\r\n const [getState] = state;\r\n\r\n const [elements, destroyElements] = createScrollbarsSetupElements(target, structureSetupElements);\r\n\r\n const scrollbarsSetupState = getState.bind(0) as (() => ScrollbarsSetupState) &\r\n ScrollbarsSetupStaticState;\r\n scrollbarsSetupState._elements = elements;\r\n\r\n return [\r\n (changedOptions, force?) => {\r\n const checkOption = createOptionCheck(options, changedOptions, force);\r\n // eslint-disable-next-line no-console\r\n console.log(checkOption);\r\n },\r\n scrollbarsSetupState,\r\n () => {\r\n destroyElements();\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","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 { 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 { createEventListenerHub, XY } from 'support';\r\nimport { PartialOptions } from 'typings';\r\nimport type {\r\n InitialEventListeners,\r\n AddEventListener,\r\n RemoveEventListener,\r\n TriggerEventListener,\r\n EventListener,\r\n} from 'support/eventListeners';\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 directionChanged: boolean;\r\n heightIntrinsicChanged: boolean;\r\n overflowAmountChanged: boolean;\r\n overflowScrollChanged: boolean;\r\n hostMutation: boolean;\r\n contentMutation: 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 OSEventListenersNameArgsMap {\r\n initialized: undefined;\r\n initializationWithdrawn: undefined;\r\n overflowChanged: OnOverflowChangedEventListenerArgs;\r\n updated: OnUpdatedEventListenerArgs;\r\n destroyed: undefined;\r\n}\r\n\r\nexport type OSEventListener<\r\n N extends Extract = Extract<\r\n keyof OSEventListenersNameArgsMap,\r\n string\r\n >\r\n> = EventListener;\r\n\r\nexport type AddOSEventListener = AddEventListener;\r\n\r\nexport type RemoveOSEventListener = RemoveEventListener;\r\n\r\nexport type TriggerOSEventListener = TriggerEventListener;\r\n\r\nexport type InitialOSEventListeners = InitialEventListeners;\r\n\r\nexport const createOSEventListenerHub = (initialEventListeners?: InitialOSEventListeners) =>\r\n createEventListenerHub(initialEventListeners);\r\n","import { OSTarget, OSInitializationObject, PartialOptions } from 'typings';\r\nimport { assignDeep, isEmptyObject, each, isFunction, keys, isHTMLElement, WH, XY } from 'support';\r\nimport { createStructureSetup, createScrollbarsSetup } from 'setups';\r\nimport { getOptionsDiff, OSOptions, ReadonlyOSOptions } 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 createOSEventListenerHub,\r\n InitialOSEventListeners,\r\n AddOSEventListener,\r\n RemoveOSEventListener,\r\n} from 'eventListeners';\r\n\r\nexport interface OverlayScrollbarsStatic {\r\n (\r\n target: OSTarget | OSInitializationObject,\r\n options?: PartialOptions,\r\n eventListeners?: InitialOSEventListeners\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: AddOSEventListener;\r\n off: RemoveOSEventListener;\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 OverlayScrollbars: OverlayScrollbarsStatic = (\r\n target,\r\n options?,\r\n eventListeners?\r\n): OverlayScrollbars => {\r\n const {\r\n _getDefaultOptions,\r\n _nativeScrollbarIsOverlaid,\r\n _addListener: addEnvListener,\r\n } = 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: ReadonlyOSOptions = assignDeep(\r\n {},\r\n _getDefaultOptions(),\r\n validateOptions(options)\r\n );\r\n const [addEvent, removeEvent, triggerEvent] = createOSEventListenerHub(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');\r\n }\r\n\r\n const [updateStructure, structureState, destroyStructure] = createStructureSetup(\r\n target,\r\n currentOptions\r\n );\r\n const [updateScrollbars, , destroyScrollbars] = createScrollbarsSetup(\r\n target,\r\n currentOptions,\r\n structureState._elements\r\n );\r\n\r\n const update = (changedOptions: PartialOptions, force?: boolean) => {\r\n updateStructure(changedOptions, force);\r\n updateScrollbars(changedOptions, force);\r\n };\r\n\r\n structureState._addOnUpdatedListener((updateHints, changedOptions, force) => {\r\n const {\r\n _sizeChanged,\r\n _directionChanged,\r\n _heightIntrinsicChanged,\r\n _overflowAmountChanged,\r\n _overflowScrollChanged,\r\n _contentMutation,\r\n _hostMutation,\r\n } = updateHints;\r\n const { _overflowAmount, _overflowScroll } = structureState();\r\n\r\n if (_overflowAmountChanged || _overflowScrollChanged) {\r\n triggerEvent(\r\n 'overflowChanged',\r\n assignDeep({}, createOverflowChangedArgs(_overflowAmount, _overflowScroll), {\r\n previous: createOverflowChangedArgs(_overflowAmount!, _overflowScroll!),\r\n })\r\n );\r\n }\r\n\r\n triggerEvent('updated', {\r\n updateHints: {\r\n sizeChanged: _sizeChanged,\r\n directionChanged: _directionChanged,\r\n heightIntrinsicChanged: _heightIntrinsicChanged,\r\n overflowAmountChanged: _overflowAmountChanged,\r\n overflowScrollChanged: _overflowScrollChanged,\r\n contentMutation: _contentMutation,\r\n hostMutation: _hostMutation,\r\n },\r\n changedOptions,\r\n force,\r\n });\r\n });\r\n\r\n const removeEnvListener = addEnvListener(update.bind(0, {}, true));\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 update(changedOptions);\r\n }\r\n }\r\n return currentOptions;\r\n },\r\n on: addEvent,\r\n off: removeEvent,\r\n state: () => ({\r\n _overflowAmount: structureState()._overflowAmount,\r\n }),\r\n update(force?: boolean) {\r\n update({}, force);\r\n },\r\n destroy: () => {\r\n removeInstance(instanceTarget);\r\n removeEnvListener();\r\n removeEvent();\r\n\r\n destroyScrollbars();\r\n destroyStructure();\r\n\r\n triggerEvent('destroyed');\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');\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","args","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","removeClass","remove","addClass","add","bind","diffClass","classNameA","classNameB","classNameASplit","split","classNameBSplit","tempObj","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","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","zeroObj","w","h","windowSize","innerWidth","innerHeight","offsetSize","offsetWidth","offsetHeight","clientSize","clientWidth","clientHeight","scrollSize","scrollWidth","scrollHeight","fractionalSize","cssHeight","cssWidth","getBoundingClientRect","passiveEventsSupport","supportPassiveEvents","addEventListener","defineProperty","get","splitEventNames","eventNames","off","listener","capture","eventName","removeEventListener","on","doSupportPassiveEvents","passive","_passive","_capture","once","_once","offListeners","nativeOptions","finalListener","evt","stopPropagation","preventDefault","stopAndPrevent","x","y","absoluteCoordinates","rect","pageYOffset","pageXOffset","manageListener","createEventListenerHub","initialEventListeners","events","Map","removeEvent","eventSet","currListener","clear","addEvent","set","triggerEvent","event","initialListenerKeys","getPropByPath","path","o","createOptionCheck","changedOptions","createState","initialState","state","newState","classNameEnvironment","classNameEnvironmentFlexboxGlue","classNameEnvironmentFlexboxGlueMax","classNameHost","classNamePadding","classNameViewport","classNameViewportArrange","classNameContent","classNameViewportScrollbarStyling","classNameSizeObserver","classNameSizeObserverAppear","classNameSizeObserverListener","classNameSizeObserverListenerScroll","classNameSizeObserverListenerItem","classNameSizeObserverListenerItemFinal","classNameTrinsicObserver","classNameScrollbar","classNameScrollbarHorizontal","classNameScrollbarVertical","classNameScrollbarTrack","classNameScrollbarHandle","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","measureElmChild","cSize","oSize","fSize","getNativeScrollbarStyling","testElm","revertClass","ex","getRtlScrollBehavior","childElm","strHidden","overflowX","overflowY","direction","parentOffset","childOffset","childOffsetAfterScroll","n","getFlexboxGlue","revertFbxGlue","minOffsetsizeParent","minOffsetsize","supportsMin","revertFbxGlueMax","maxOffsetsizeParent","maxOffsetsize","supportsMax","getWindowDPR","dDPI","screen","deviceXDPI","sDPI","logicalXDPI","devicePixelRatio","getDefaultInitializationStrategy","nativeScrollbarStyling","_host","_viewport","_padding","_content","_scrollbarsSlot","createEnvironment","envDOM","envElm","envChildElm","onChangedListener","updateNativeScrollbarSizeCache","getNativeScrollbarSizeCache","nativeScrollbarSize","nativeScrollbarIsOverlaid","initializationStrategy","defaultDefaultOptions","env","_nativeScrollbarSize","_nativeScrollbarIsOverlaid","_nativeScrollbarStyling","_cssCustomProperties","_rtlScrollBehavior","_flexboxGlue","_addListener","delete","_getInitializationStrategy","_setInitializationStrategy","newInitializationStrategy","_getDefaultOptions","_setDefaultOptions","newDefaultOptions","_defaultInitializationStrategy","_defaultDefaultOptions","size","dpr","sizeNew","deltaSize","deltaAbsSize","deltaAbsRatio","dprNew","deltaIsBigger","difference","dprChanged","isZoom","scrollbarSize","scrollbarSizeChanged","getEnvironment","contentArrangeCounter","unwrap","createUniqueViewportArrangeElement","create","staticCreationFromStrategy","initializationValue","strategy","elementClass","dynamicCreationFromStrategy","takeInitializationValue","createStructureSetupElements","hostInitializationStrategy","viewportInitializationStrategy","paddingInitializationStrategy","contentInitializationStrategy","targetIsElm","targetStructureInitialization","targetElement","isTextarea","isBody","ownerDocument","bodyElm","wnd","defaultView","evaluatedTargetObj","_target","host","viewport","padding","content","_viewportArrange","_windowElm","_documentElm","_htmlElm","_bodyElm","_isTextarea","_isBody","_targetIsElm","generatedElements","elementIsGenerated","destroyFns","isTextareaHostGenerated","targetContents","contentSlot","createTrinsicUpdate","structureSetupElements","getState","updateHints","_heightIntrinsic","_heightIntrinsicChanged","height","display","_sizeChanged","_contentMutation","createPaddingUpdate","setState","updatePaddingCache","currentPaddingCache","checkOption","paddingChanged","_directionIsRTL","_directionChanged","paddingAbsoluteChanged","contentMutation","paddingStyleChanged","paddingRelative","paddingHorizontal","paddingVertical","paddingStyle","marginRight","marginBottom","marginLeft","width","viewportStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","_paddingAbsolute","_viewportPaddingStyle","_paddingStyleChanged","max","overlaidScrollbarsHideOffset","whCacheOptions","xyCacheOptions","setAxisOverflowStyle","horizontal","overflowAmount","behavior","styleObj","overflowKey","behaviorIsVisible","behaviorIsVisibleHidden","behaviorIsScroll","hasOverflow","getOverflowAmount","viewportScrollSize","viewportClientSize","sizeFraction","tollerance","amount","createOverflowUpdate","doViewportArrange","updateSizeFraction","getCurrentSizeFraction","updateViewportScrollSizeCache","getCurrentViewportScrollSizeCache","updateOverflowAmountCache","getCurrentOverflowAmountCache","updateOverflowScrollCache","fixFlexboxGlue","viewportOverflowState","heightIntrinsic","_overflowScroll","_scrollbarsHideOffset","hostClientSize","isContentBox","subtractXScrollbar","getViewportOverflowState","showNativeOverlaidScrollbars","viewportStyleObj","overlaidX","overlaidY","determineOverflow","arrangeHideOffset","scroll","nonScrollbarStylingHideOffset","scrollbarsHideOffset","_scrollbarsHideOffsetArrange","setViewportOverflowState","xVisible","xVisibleBehavior","yVisible","yVisibleBehavior","arrangeViewport","directionIsRTL","arrangeX","arrangeY","hideOffsetX","hideOffsetY","viewportArrangeHorizontalPaddingKey","viewportArrangeHorizontalPaddingValue","viewportArrangeVerticalPaddingValue","fractionalContentWidth","fractionalContenHeight","arrangeSize","sheet","cssRules","insertRule","ruleStyle","hideNativeScrollbars","viewportArrange","viewportPaddingStyle","horizontalMarginKey","viewportHorizontalPaddingKey","horizontalMarginValue","verticalMarginValue","horizontalPaddingValue","verticalPaddingValue","undoViewportArrange","finalViewportOverflowState","finalPaddingStyle","assignProps","prevStyle","_hostMutation","showNativeOverlaidScrollbarsOption","showNativeOverlaidScrollbarsChanged","overflowChanged","adjustFlexboxGlue","sizeFractionCache","viewportScrollSizeCache","overflowAmuntCache","preMeasureViewportOverflowState","redoViewportArrange","undoViewportArrangeOverflowState","sizeFractionChanged","viewportScrollSizeChanged","viewportContentSize","arrangedViewportScrollSize","arrangedViewportClientSize","overflowAmountChanged","viewportArranged","overflowScroll","overflowScrollChanged","_overflowAmount","_overflowAmountChanged","_overflowScrollChanged","prepareUpdateHints","leading","adaptive","finalAdaptive","objKeys","leadingValue","adaptiveValue","createStructureSetupUpdate","updateSegments","initialUpdateHints","adjustScrollOffset","scrollOffsetX","scrollOffsetY","adaptivedUpdateHints","updateSegment","animationStartEventName","scrollEventName","scrollAmount","getElmDirectionIsRTL","domRectHasDimensions","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","_directionIsRTLCache","appearCallback","directionIsRTLCache","resizeObserverInstance","observe","disconnect","observerElementChildren","observerElementChildrenRoot","shrinkElement","lastChild","expandElement","expandElementChild","cacheSize","currSize","isDirty","rAFId","reset","onResized","onScroll","scrollEvent","updateDirectionIsRTLCache","directionIsRTLCacheValues","directionIsRTLChanged","isHeightIntrinsic","ioEntryOrSize","isIntersecting","intersectionRatio","createTrinsicObserver","onTrinsicChangedCallback","trinsicObserver","updateHeightIntrinsicCache","triggerOnTrinsicChangedCallback","updateValue","heightIntrinsicChanged","intersectionObserverInstance","entries","root","onSizeChanged","newSize","createEventContentChange","eventContentChange","map","destroyed","destroy","updateElements","getElements","eventElmList","elements","entry","entryEventNames","entryOff","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","takeRecords","ignorePrefix","viewportAttrsFromTarget","baseStyleChangingAttrsTextarea","baseStyleChangingAttrs","addedOrRemovedClass","createStructureSetupObservers","structureSetupUpdate","debounceTimeout","debounceMaxDelay","contentMutationObserver","contentMutationObserverAttr","structureSetupUpdateWithDebouncedAdaptiveUpdateHints","prev","prevObj","currObj","updateViewportAttrsFromHost","attribute","hostAttr","onTrinsicChanged","heightIntrinsicCache","updateFn","directionChanged","onContentMutation","contentChangedTroughEvent","onHostMutation","destroyTrinsicObserver","destroySizeObserver","destroyHostMutationObserver","elementEventsChanged","attributesChanged","debounceValue","debounceChanged","updateContentMutationObserver","timeout","maxWait","initialStructureSetupUpdateState","createStructureSetup","checkOptionsFallback","onUpdatedListeners","runOnUpdatedListeners","destroyElements","updateStructure","updateObservers","destroyObservers","structureSetupState","_addOnUpdatedListener","_elements","generateScrollbarDOM","scrollbarClassName","scrollbar","track","handle","_scrollbar","_track","_handle","createScrollbarsSetupElements","environmentScrollbarSlot","initializationScrollbarSlot","scrollbarsSlot","initializationScrollbarSlotResult","evaluatedScrollbarSlot","horizontalScrollbarStructure","verticalScrollbarStructure","horizontalScrollbar","verticalScrollbar","_horizontalScrollbarStructure","_verticalScrollbarStructure","createScrollbarsSetup","scrollbarsSetupState","console","log","pluginRegistry","getPlugins","addPlugin","addedPlugin","plugin","_extends","module","assign","exports","__esModule","templateTypePrefixSuffix","optionsTemplateTypes","numberAllowedValues","oTypes","number","booleanAllowedValues","boolean","arrayNullValues","null","stringArrayNullAllowedValues","string","resizeAllowedValues","overflowAllowedValues","scrollbarsVisibilityAllowedValues","scrollbarsAutoHideAllowedValues","function","optionsValidationPluginName","targets","targetInstanceMap","addInstance","osInstance","removeInstance","getInstance","createOSEventListenerHub","createOverflowChangedArgs","scrollableOverflow","OverlayScrollbars","eventListeners","addEnvListener","plugins","instanceTarget","potentialInstance","optionsValidationPlugin","validateOptions","opts","validate","currentOptions","structureState","destroyStructure","updateScrollbars","destroyScrollbars","previous","sizeChanged","hostMutation","removeEnvListener","instance","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 7905bf6..e9b0f01 100644 --- a/packages/overlayscrollbars/dist/overlayscrollbars.esm.min.js +++ b/packages/overlayscrollbars/dist/overlayscrollbars.esm.min.js @@ -1 +1 @@ -function t(t,n){const{o:e,s:o,u:r}=t;let i,a=e;const s=(t,n)=>{const e=a,s=t,l=n||(o?!o(e,s):e!==s);return(l||r)&&(a=s,i=e),[a,l,i]};return[n?t=>s(n(a,i),t):s,t=>[a,!!t,i]]}const n=Node.ELEMENT_NODE,{toString:e,hasOwnProperty:o}=Object.prototype;function r(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 d(t){return Array.isArray(t)}function u(t){return"object"==typeof t&&!d(t)&&!i(t)}function _(t){const n=!!t&&t.length,e=a(n)&&n>-1&&n%1==0;return!!(d(t)||!c(t)&&e)&&(!(n>0&&u(t))||n-1 in t)}function g(t){if(!t||!u(t)||"object"!==(t=>r(t)||i(t)?`${t}`:e.call(t).replace(/^\[object (.+)\]$/,"$1").toLowerCase())(t))return!1;let n;const a="constructor",s=t[a],l=s&&s.prototype,c=o.call(t,a),d=l&&o.call(l,"isPrototypeOf");if(s&&!c&&!d)return!1;for(n in t);return r(n)||o.call(t,n)}function f(t){const e=window.HTMLElement;return!!t&&(e?t instanceof e:t.nodeType===n)}function h(t){const e=window.Element;return!!t&&(e?t instanceof e:t.nodeType===n)}function v(t,n){if(_(t))for(let e=0;en(t[e],e,t));return t}const w=(t,n,e)=>t.indexOf(n,e),p=(t,n,e)=>(e||s(n)||!_(n)?t.push(n):Array.prototype.push.apply(t,n),t),b=t=>{if(Array.from&&t)return Array.from(t);const n=[];return t instanceof Set?t.forEach(t=>{p(n,t)}):v(t,t=>{p(n,t)}),n},y=t=>!!t&&0===t.length,m=(t,n)=>{const e=t=>t&&t.apply(void 0,n||[]);t instanceof Set?t.forEach(e):v(t,e)},S=(t,n)=>Object.prototype.hasOwnProperty.call(t,n),x=t=>t?Object.keys(t):[];function C(t,n,e,o,r,a,s){const l=[n,e,o,r,a,s];return"object"==typeof t&&!i(t)||c(t)||(t={}),v(l,n=>{v(x(n),e=>{const o=n[e];if(t===o)return!0;const r=d(o);if(o&&(g(o)||r)){const n=t[e];let i=n;r&&!d(n)?i=[]:r||g(n)||(i={}),t[e]=C(i,o)}else t[e]=o})}),t}function O(t,n,e,o){if(r(o))return e?e[t]:n;e&&(e[t]=o)}function $(t,n,e){if(r(e))return t?t.getAttribute(n):null;t&&t.setAttribute(n,e)}const z=(t,n)=>{t&&t.removeAttribute(n)};function I(t,n){return O("scrollLeft",0,t,n)}function A(t,n){return O("scrollTop",0,t,n)}const M=Element.prototype,L=(t,n)=>{const e=[],o=n?h(n)?n:null:document;return o?p(e,o.querySelectorAll(t)):e},T=(t,n)=>{if(h(t)){return(M.matches||M.msMatchesSelector).call(t,n)}return!1},R=t=>t?b(t.childNodes):[],j=t=>t?t.parentElement:null,P=(t,n,e)=>{if(e){let o,r=n;t&&(_(e)?(o=document.createDocumentFragment(),v(e,t=>{t===r&&(r=t.previousSibling),o.appendChild(t)})):o=e,n&&(r?r!==n&&(r=r.nextSibling):r=t.firstChild),t.insertBefore(o,r||null))}},V=(t,n)=>{P(t,null,n)},H=(t,n)=>{P(t,t&&t.firstChild,n)},E=(t,n)=>{P(j(t),t&&t.nextSibling,n)},B=t=>{if(_(t))v(b(t),t=>B(t));else if(t){const n=j(t);n&&n.removeChild(t)}},k=t=>{const n=document.createElement("div");return t&&$(n,"class",t),n},D=t=>{const n=k();return n.innerHTML=t.trim(),v(R(n),t=>B(t))},q=t=>t.charAt(0).toUpperCase()+t.slice(1),F=["-webkit-","-moz-","-o-","-ms-"],N=["WebKit","Moz","O","MS","webkit","moz","o","ms"],G={},W={},Y=t=>{let n=W[t];if(S(W,t))return n;const e=q(t),o=k().style;return v(F,r=>{const i=r.replace(/-/g,""),a=[t,r+t,i+e,q(i)+e];return!(n=a.find(t=>void 0!==o[t]))}),W[t]=n||""},X=t=>{let n=G[t]||window[t];return S(G,t)||(v(N,e=>(n=n||window[e+q(t)],!n)),G[t]=n),n},U=X("MutationObserver"),J=X("IntersectionObserver"),K=X("ResizeObserver"),Q=X("cancelAnimationFrame"),Z=X("requestAnimationFrame"),tt=/[^\x20\t\r\n\f]+/g,nt=(t,n,e)=>{let o,r=0,i=!1;if(t&&s(n)){const a=n.match(tt)||[];for(i=a.length>0;o=a[r++];)i=!!e(t.classList,o)&&i}return i},et=(t,n)=>{nt(t,n,(t,n)=>t.remove(n))},ot=(t,n)=>(nt(t,n,(t,n)=>t.add(n)),et.bind(0,t,n)),rt=(t,n,e,o)=>{if(t&&n){let r=!0;return v(e,e=>{(o?o(t[e]):t[e])!==(o?o(n[e]):n[e])&&(r=!1)}),r}return!1},it=(t,n)=>rt(t,n,["w","h"]),at=(t,n)=>rt(t,n,["x","y"]),st=(t,n)=>rt(t,n,["t","r","b","l"]),lt=(t,n,e)=>rt(t,n,["width","height"],e&&(t=>Math.round(t))),ct=t=>{t&&window.clearTimeout(t),t&&Q(t)},dt=()=>{},ut=(t,n)=>{let e,o,r,i;const{_:s,g:l,v:d}=n||{},u=window.setTimeout,_=function(n){ct(e),ct(o),o=e=r=void 0,t.apply(this,n)},g=t=>d&&r?d(r,t):t,f=()=>{e&&_(g(i)||i)},h=function(){const t=b(arguments),n=c(s)?s():s,d=a(n)&&n>=0;if(d){const s=c(l)?l():l,d=a(s)&&s>=0,h=n>0?u:Z,v=g(t)||t,w=_.bind(0,v);ct(e),e=h(w,n),d&&!o&&(o=u(f,s)),r=i=v}else _(t)};return h.p=f,h},_t={opacity:1,zindex:1},gt=(t,n)=>{const e=n?parseFloat(t):parseInt(t,10);return Number.isNaN(e)?0:e},ft=(t,n,e)=>null!=n?n[e]||n.getPropertyValue(e):t.style[e],ht=(t,n,e)=>{try{if(t){const{style:o}=t;r(o[n])?o.setProperty(n,e):o[n]=((t,n)=>!_t[t.toLowerCase()]&&a(n)?`${n}px`:n)(n,e)}}catch(o){}};function vt(t,n){const e=s(n);if(d(n)||e){let o=e?"":{};if(t){const r=window.getComputedStyle(t,null);o=e?ft(t,r,n):n.reduce((n,e)=>(n[e]=ft(t,r,e),n),o)}return o}v(x(n),e=>ht(t,e,n[e]))}const wt=(t,n,e)=>{const o=n?`${n}-`:"",r=e?`-${e}`:"",i=`${o}top${r}`,a=`${o}right${r}`,s=`${o}bottom${r}`,l=`${o}left${r}`,c=vt(t,[i,a,s,l]);return{t:gt(c[i]),r:gt(c[a]),b:gt(c[s]),l:gt(c[l])}},pt={w:0,h:0},bt=()=>({w:window.innerWidth,h:window.innerHeight}),yt=t=>t?{w:t.offsetWidth,h:t.offsetHeight}:pt,mt=t=>t?{w:t.clientWidth,h:t.clientHeight}:pt,St=t=>t?{w:t.scrollWidth,h:t.scrollHeight}:pt,xt=t=>{const n=parseFloat(vt(t,"height"))||0,e=parseFloat(vt(t,"height"))||0;return{w:e-Math.round(e),h:n-Math.round(n)}},Ct=t=>t.getBoundingClientRect();let Ot;const $t=t=>t.split(" "),zt=(t,n,e,o)=>{v($t(n),n=>{t.removeEventListener(n,e,o)})},It=(t,n,e,o)=>{const i=(()=>{if(r(Ot)){Ot=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){Ot=!0}}))}catch(t){}}return Ot})(),a=i&&o&&o.m||!1,s=o&&o.S||!1,l=o&&o.C||!1,c=[],d=i?{passive:a,capture:s}:s;return v($t(n),n=>{const o=l?r=>{t.removeEventListener(n,o,s),e&&e(r)}:e;p(c,zt.bind(null,t,n,o,s)),t.addEventListener(n,o,d)}),m.bind(0,c)},At=t=>(t=>t.stopPropagation())(t)||(t=>t.preventDefault())(t),Mt={x:0,y:0},Lt=t=>{const n=t?Ct(t):0;return n?{x:n.left+window.pageYOffset,y:n.top+window.pageXOffset}:Mt},Tt=(t,n)=>{v(d(n)?n:[n],t)},Rt=(t,n)=>t?n.split(".").reduce((t,n)=>t&&S(t,n)?t[n]:void 0,t):void 0,jt=(t,n,e)=>o=>[Rt(t,o),e||void 0!==Rt(n,o)],Pt=t=>{let n=t;return[()=>n,t=>{n=C({},n,t)}]},Vt="os-environment",Ht=`${Vt}-flexbox-glue`,Et=`${Ht}-max`,Bt="os-host",kt="os-padding",Dt="os-viewport",qt=`${Dt}-arrange`,Ft="os-content",Nt=`${Dt}-scrollbar-styled`,Gt="os-size-observer",Wt=`${Gt}-appear`,Yt=`${Gt}-listener`,Xt=`${Yt}-scroll`,Ut=`${Yt}-item`,Jt=`${Ut}-final`,Kt="os-trinsic-observer",Qt="os-scrollbar",Zt=`${Qt}-horizontal`,tn=`${Qt}-vertical`,nn="os-scrollbar-track",en="os-scrollbar-handle",on=t=>JSON.stringify(t,(t,n)=>{if(c(n))throw new Error;return n}),rn={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}},an=(t,n)=>{const e={};return v(x(n).concat(x(t)),o=>{const r=t[o],i=n[o];if(u(r)&&u(i))C(e[o]={},an(r,i));else if(S(n,o)&&i!==r){let t=!0;if(d(r)||d(i))try{on(r)===on(i)&&(t=!1)}catch(a){}t&&(e[o]=i)}}),e};let sn;const{abs:ln,round:cn}=Math,dn=(t,n,e)=>{V(t,n);const o=mt(n),r=yt(n),i=xt(e);return{x:r.h-o.h+i.h,y:r.w-o.w+i.w}},un=(t,n)=>{const e="hidden";vt(t,{overflowX:e,overflowY:e,direction:"rtl"}),I(t,0);const o=Lt(t),r=Lt(n);I(t,-999);const i=Lt(n);return{i:o.x===r.x,n:r.x!==i.x}},_n=(t,n)=>{const e=ot(t,Ht),o=Ct(t),r=Ct(n),i=lt(r,o,!0),a=ot(t,Et),s=Ct(t),l=Ct(n),c=lt(l,s,!0);return e(),a(),i&&c},gn=()=>{const t=window.screen.deviceXDPI||0,n=window.screen.logicalXDPI||1;return window.devicePixelRatio||t/n},fn=()=>{const{body:n}=document,e=D(`
`)[0],o=e.firstChild,r=new Set,[i,a]=t({o:dn(n,e,o),s:at}),[s]=a(),l=(t=>{let n=!1;const e=ot(t,Nt);try{n="none"===vt(t,Y("scrollbar-width"))||"none"===window.getComputedStyle(t,"::-webkit-scrollbar").getPropertyValue("display")}catch(o){}return e(),n})(e),c={x:0===s.x,y:0===s.y},d=(t=>({O:null,$:null,I:!t,A:!1,M:null}))(l),u=C({},rn),_={L:s,T:c,R:l,j:"-1"===vt(e,"zIndex"),P:un(e,o),V:_n(e,o),H:t=>(r.add(t),()=>r.delete(t)),B:C.bind(0,{},d),k(t){C(d,t)},D:C.bind(0,{},u),q(t){C(u,t)},F:C({},d),N:C({},u)};if(z(e,"style"),B(e),!(l||c.x&&c.y)){let t=bt(),a=gn();window.addEventListener("resize",()=>{if(r.size){const s=bt(),l={w:s.w-t.w,h:s.h-t.h};if(0===l.w&&0===l.h)return;const c={w:ln(l.w),h:ln(l.h)},d={w:ln(cn(s.w/(t.w/100))),h:ln(cn(s.h/(t.h/100)))},u=gn(),_=c.w>2&&c.h>2,g=!((t,n)=>{const e=ln(t),o=ln(n);return!(e===o||e+1===o||e-1===o)})(d.w,d.h),f=u!==a&&a>0;if(_&&g&&f){const[t,a]=i(dn(n,e,o));C(sn.L,t),B(e),a&&m(r)}t=s,a=u}})}return _},hn=()=>(sn||(sn=fn()),sn);let vn=0;const wn=t=>{V(j(t),R(t)),B(t)},pn=()=>{const{R:t,T:n,j:e}=hn(),o=!!(!e&&!t&&(n.x||n.y))&&document.createElement("style");return o&&($(o,"id",`${qt}-${vn}`),vn++),o},bn=(t,n,e,o)=>n||(c(e)?e(t):e)||k(o),yn=(t,n,e,o)=>{const r=l(n)||n?n:c(e)?e(t):e;return!0===r?k(o):r},mn=t=>{const{B:n,R:e}=hn(),{O:o,$:r,I:i,A:a}=n(),s=f(t),l=t,c=s?t:l.target,d=T(c,"textarea"),u=!d&&T(c,"body"),_=c.ownerDocument,g=_.body,h=_.defaultView,v={G:c,O:d?bn(c,l.host,o,Bt):c,$:bn(c,l.viewport,r,Dt),I:yn(c,l.padding,i,kt),A:yn(c,l.content,a,Ft),W:pn(),Y:h,X:_,U:j(g),J:g,K:d,Z:u,tt:s},b=x(v).reduce((t,n)=>{const e=v[n];return p(t,!(!e||j(e))&&e)},[]),y=t=>t?w(b,t)>-1:null,{G:S,O:C,I:O,$,A:z,W:I}=v,A=[],M=d&&y(C),L=d?S:R([z,$,O,C,S].find(t=>!1===y(t))),H=z||$;var k,D;return M&&(E(S,C),p(A,()=>{E(C,S),B(C)})),V(H,L),V(C,O),V(O||C,$),V($,z),ot(C,Bt),ot(O,kt),ot($,Dt),ot(z,Ft),p(A,()=>{s?(V(C,R(H)),B(O||$),et(C,Bt)):(y(z)&&wn(z),y($)&&wn($),y(O)&&wn(O),et(C,Bt),et(O,kt),et($,Dt),et(z,Ft))}),e&&p(A,et.bind(0,$,Nt)),I&&(D=I,P(j(k=$),k,D),p(A,B.bind(0,I))),[v,m.bind(0,A)]},Sn=(t,n)=>{const{A:e}=t,[o]=n;return t=>{const{nt:n}=o(),{et:r}=t;return r&&vt(e,{height:n?"":"100%",display:n?"":"inline"}),{ot:r,rt:r}}},xn=(n,e)=>{const[o,r]=e,{O:i,I:a,$:s}=n,[l,c]=t({s:st,o:wt()},wt.bind(0,i,"padding",""));return(t,n,e)=>{let[i,d]=c(e);const{R:u,V:_}=hn(),{it:g}=o(),{ot:f,rt:h,st:v}=t,[w,p]=n("paddingAbsolute");(f||d||!_&&h)&&([i,d]=l(e));const b=p||v||d;if(b){const t=!w||!a&&!u,n=i.r+i.l,e=i.t+i.b,o={marginRight:t&&!g?-n:0,marginBottom:t?-e:0,marginLeft:t&&g?-n:0,top:t?-i.t:0,right:t?g?-i.r:"auto":0,left:t?g?"auto":-i.l:0,width:t?`calc(100% + ${n}px)`:""},l={paddingTop:t?i.t:0,paddingRight:t?i.r:0,paddingBottom:t?i.b:0,paddingLeft:t?i.l:0};vt(a||s,o),vt(s,l),r({I:i,lt:!t,ct:a?l:C({},o,l)})}return{dt:b}}},{max:Cn,round:On}=Math,$n=42,zn={s:it,o:{w:0,h:0}},In={s:at,o:{x:!1,y:!1}},An=(t,n,e,o)=>{const r=t?"overflowX":"overflowY",i=0===e.indexOf("visible"),a="visible-hidden"===e,s="scroll"===e,l=n>0;return i&&(o[r]="visible"),s&&l&&(o[r]=e),{ut:i,_t:a?"hidden":"scroll"}},Mn=(n,e)=>{const[o,r]=e,{O:i,$:a,W:s}=n,{L:l,V:c,R:d,T:u}=hn(),_=!d&&(u.x||u.y),[g,f]=t(zn,xt.bind(0,i)),[h,w]=t(zn,St.bind(0,a)),[p,b]=t(zn),[y]=t(In),m=(t,n)=>{if(vt(a,{height:""}),n){const{lt:n,I:e}=o(),{gt:r,ft:s}=t,l=parseFloat(vt(i,"height")),c=mt(i),d="content-box"===vt(a,"boxSizing"),_=n||d?e.b+e.t:0,g=c.h+(l-On(l)),f=!(u.x&&d);vt(a,{height:g+(r.x&&f?s.x:0)-_})}},S=(t,n)=>{const{x:e,y:o}=u,r=d||t?0:$n,i=!n?vt(a,["overflowX","overflowY"]):n,s={x:"scroll"===i.overflowX,y:"scroll"===i.overflowY},c={x:e?r:l.x,y:o?r:l.y};return{gt:s,ht:{x:e&&!!r,y:o&&!!r},ft:{x:s.x&&!d?c.x:0,y:s.y&&!d?c.y:0}}},C=(t,n,e,r)=>{if(_){const{ct:i}=o(),{ft:l,ht:c}=t,{x:d,y:u}=c,{x:_,y:g}=l,f=i[r?"paddingRight":"paddingLeft"],h=i.paddingTop,v=n.w+e.w,w=n.h+e.h,p={w:g&&u?`${g+v-f}px`:"",h:_&&d?`${_+w-h}px`:""};if(s){const{sheet:t}=s;if(t){const{cssRules:n}=t;if(n){n.length||t.insertRule(`#${$(s,"id")} + .${qt}::before {}`,0);const e=n[0].style;e.width=p.w,e.height=p.h}}}else vt(a,{"--os-vaw":p.w,"--os-vah":p.h})}return _},O=(t,n,e,r)=>{const{ft:i,ht:a}=t,{x:s,y:l}=a,{x:c,y:d}=i,{ct:u}=o(),_=n?"marginLeft":"marginRight",g=n?"paddingLeft":"paddingRight",f=u[_],h=u.marginBottom,v=u[g],w=u.paddingBottom;r.width=`calc(100% + ${d+-1*f}px)`,r[_]=-d+f,r.marginBottom=-c+h,e&&(r[g]=v+(l?d:0),r.paddingBottom=w+(s?c:0))};return(t,n,e)=>{const{ot:i,vt:s,rt:l,dt:$,et:z,st:I}=t,{nt:A,it:M}=o(),[L,T]=n("nativeScrollbarsOverlaid.show"),R=L&&u.x&&u.y,j=!c&&(i||l||s||T||z);let P,V=f(e),H=w(e),E=b(e);if(T&&d&&(R?et(a,Nt):ot(a,Nt)),j&&(P=S(R),m(P,A)),i||$||l||I||T){const[t,n]=((t,n,e)=>{if(_){const r=e||S(t),{ct:i}=o(),{ht:s}=r,{x:l,y:d}=s,u={},g=t=>v(t.split(" "),t=>{u[t]=i[t]});l&&g("marginBottom paddingTop paddingBottom"),d&&g("marginLeft marginRight paddingLeft paddingRight");const f=vt(a,x(u));return et(a,qt),c||(u.height=""),vt(a,u),[()=>{O(r,n,_,f),vt(a,f),ot(a,qt)},r]}return[dt]})(R,M,P),[r,i]=V=g(e),[s,l]=H=h(e),d=mt(a);let u=s,f=d;t(),(l||i||T)&&n&&!R&&C(n,s,r,M)&&(f=mt(a),u=St(a)),E=p(((t,n,e)=>{const o=t=>window.devicePixelRatio%2!=0?t>1:t>0,r={w:Cn(0,t.w-n.w-Cn(0,e.w)),h:Cn(0,t.h-n.h-Cn(0,e.h))};return{w:o(r.w)?r.w:0,h:o(r.h)?r.h:0}})({w:Cn(s.w,u.w),h:Cn(s.h,u.h)},{w:f.w+Cn(0,d.w-s.w),h:f.h+Cn(0,d.h-s.h)},r),e)}const[B,k]=V,[D,q]=H,[F,N]=E,[G,W]=n("overflow");if($||I||k||q||N||W||T||j){const t={marginRight:0,marginBottom:0,marginLeft:0,width:"",overflowY:"",overflowX:""},n=((t,n,e,o)=>{const{ut:r,_t:i}=An(!0,n.w,e.x,o),{ut:a,_t:s}=An(!1,n.h,e.y,o);return r&&!a&&(o.overflowX=i),a&&!r&&(o.overflowY=s),S(t,o)})(R,F,G,t),e=C(n,D,B,M),[o,i]=y(n.gt);return O(n,M,e,t),j&&m(n,A),vt(a,t),r({wt:o,pt:F}),{bt:N,yt:i}}}},Ln=(t,n,e)=>{const o={},r=n||{};return v(x(t).concat(x(r)),n=>{const i=t[n],a=r[n];o[n]=l(i)?!!e||!!i||!!a:((t,n)=>[t[0],n||t[1],t[2]])(i,e)}),o},Tn="animationstart",Rn="scroll",jn=3333333,Pn=t=>"rtl"===vt(t,"direction"),Vn=t=>t&&(t.height||t.width),Hn=(n,e,o)=>{const{St:r=!1,xt:i=!1}=o||{},{P:a}=hn(),s=D(`
`)[0],c=s.firstChild,_=Pn.bind(0,s),[g]=t({o:void 0,u:!0,s:(t,n)=>!(!t||!Vn(t)&&Vn(n))}),f=t=>{const n=d(t)&&t.length>0&&u(t[0]),o=!n&&l(t[0]);let i=!1,c=!1,_=!0;if(n){const[n,,e]=g(t.pop().contentRect),o=Vn(n),r=Vn(e);i=!e||!o,c=!r&&o,_=!i}else o?[,_]=t:c=!0===t;if(r&&_){const n=o?t[0]:Pn(s);I(s,n?a.n?-jn:a.i?0:jn:jn),A(s,jn)}i||e({ot:!o,Ct:o?t:void 0,xt:!!c})},h=[];let v,w=!!i&&f;if(K){const t=new K(f);t.observe(c),p(h,()=>{t.disconnect()})}else{const t=D(`
`);V(c,t),ot(c,Xt);const n=t[0],e=n.lastChild,o=n.firstChild,r=null==o?void 0:o.firstChild;let a,s=yt(n),l=s,d=!1;const u=()=>{I(o,jn),A(o,jn),I(e,jn),A(e,jn)},_=t=>{a=0,d&&(s=l,f(!0===t))},g=t=>{l=yt(n),d=!t||!it(l,s),t?(At(t),d&&!a&&(Q(a),a=Z(_))):_(!1===t),u()};p(h,[It(o,Rn,g),It(e,Rn,g)]),vt(r,{width:jn,height:jn}),u(),w=i?g.bind(0,!1):u}if(r){v=t({o:!_()},_);const[n]=v;p(h,It(s,Rn,t=>{const e=n(),[o,r]=e;r&&(et(c,"ltr rtl"),ot(c,o?"rtl":"ltr"),f(e)),At(t)}))}return w&&(ot(s,Wt),p(h,It(s,Tn,w,{C:!!K}))),H(n,s),()=>{m(h),B(s)}},En=(t,n,e,o)=>{let r=!1;const{Ot:i,$t:a,zt:l,It:c,At:d,Mt:u,Lt:_}=o||{},[g,f]=((t,n,e)=>{let o,r=!1;const i=i=>{if(e){v(e.reduce((n,e)=>{if(e){const o=e[0],r=e[1],a=r&&o&&(i?i(o):L(o,t));a&&a.length&&r&&s(r)&&p(n,[a,r.trim()],!0)}return n},[]),t=>v(t[0],e=>{const i=t[1],a=o.get(e);if(a){const t=a[0],n=a[1];t===i&&n()}const s=It(e,i,t=>{r?(s(),o.delete(e)):n(t)});o.set(e,[i,s])}))}};return e&&(o=new WeakMap,i()),[()=>{r=!0},i]})(t,ut(()=>{r&&e(!0)},{_:33,g:99}),l),h=a||[],b=(i||[]).concat(h),m=r=>{const i=(n?u:d)||dt,a=_||dt,l=[],g=[];let b=!1,m=!1,S=!1;v(r,e=>{const{attributeName:r,target:d,type:u,oldValue:_,addedNodes:f}=e,v="attributes"===u,y="childList"===u,x=t===d,C=v&&s(r)?$(d,r):0,O=0!==C&&_!==C,z=w(h,r)>-1&&O;if(n&&!x){const n=!v,s=v&&z,l=s&&c&&T(d,c),u=(l?!i(d,r,_,C):n||s)&&!a(e,!!l,t,o);p(g,f),m=m||u,S=S||y}!n&&x&&O&&!i(d,r,_,C)&&(p(l,r),b=b||z)}),S&&!y(g)&&f(t=>g.reduce((n,e)=>(p(n,L(t,e)),T(e,t)?p(n,e):n),[])),n?m&&e(!1):y(l)&&!b||e(l,b)},S=new U(m);return S.observe(t,{attributes:!0,attributeOldValue:!0,attributeFilter:b,subtree:n,childList:n,characterData:n}),r=!0,[()=>{r&&(g(),S.disconnect(),r=!1)},()=>{r&&m(S.takeRecords())}]},Bn="os-",kn=["tabindex"],Dn=["wrap","cols","rows"],qn=["id","class","style","open"],Fn=(t,n,e,o)=>{if("class"===n&&e&&o){return!!((t,n)=>{const e=t&&t.split(" "),o=n&&n.split(" "),r={};return v(e,t=>{r[t]=1}),v(o,t=>{r[t]?delete r[t]:r[t]=1}),x(r)})(e,o).find(t=>0!==t.indexOf(Bn))}return!1},Nn=(n,e,o)=>{let r,i,l;const[,c]=e,{O:u,$:_,A:g,K:f}=n,{R:h,V:b}=hn(),y=f?Dn:qn.concat(Dn),S=ut(o,{_:()=>r,g:()=>i,v(t,n){const{ot:e,vt:o,rt:r}=t[0],{ot:i,vt:a,rt:s}=n[0];return[{ot:e||i,vt:o||a,rt:r||s}]}}),x=t=>{v(t||kn,t=>{if(w(kn,t)>-1){const n=$(u,t);s(n)?$(_,t,n):z(_,t)}})},C=t=>{(t?o:S)({rt:!0})},O=(g||!b)&&((n,e)=>{const o=k(Kt),r=[],[i]=t({o:!1}),a=t=>{if(t){const o=i(0===(n=t).h||n.isIntersecting||n.intersectionRatio>0),[,r]=o;r&&e(o)}var n};if(J){const t=new J(t=>{t&&t.length>0&&a(t.pop())},{root:n});t.observe(o),p(r,()=>{t.disconnect()})}else{const t=()=>{const t=yt(o);a(t)};p(r,Hn(o,t)),t()}return H(n,o),()=>{m(r),B(o)}})(u,t=>{const[n,e]=t;c({nt:n}),o({et:e})}),I=Hn(u,({ot:t,Ct:n,xt:e})=>{const r=!t||e?o:S;let i=!1;if(n){const[t,e]=n;i=e,c({it:t})}r({ot:t,st:i})},{xt:!0,St:!h}),[A]=En(u,!1,(t,n)=>{n?S({vt:!0}):x(t)},{$t:qn,Ot:qn.concat(kn),At:Fn});return x(),[t=>{const[n,e]=t("updating.elementEvents"),[o,s]=t("updating.attributes"),[c,u]=t("updating.debounce");if((e||s)&&(l&&(l[1](),l[0]()),l=En(g||_,!0,C,{$t:y.concat(o||[]),Ot:y.concat(o||[]),zt:n,Mt:Fn})),u)if(S.p(),d(c)){const t=c[0],n=c[1];r=!!a(t)&&t,i=!!a(n)&&n}else a(c)?(r=c,i=!1):(r=!1,i=!1)},()=>{l&&l[0](),O&&O(),I(),A()}]},Gn={I:{t:0,r:0,b:0,l:0},lt:!1,ct:{marginRight:0,marginBottom:0,marginLeft:0,paddingTop:0,paddingRight:0,paddingBottom:0,paddingLeft:0},pt:{w:0,h:0},wt:{x:!1,y:!1},nt:!1,it:!1},Wn=(t,n)=>{const e=jt(n,{}),o=Pt(Gn),i=new Set,[s]=o,l=(t,n,e)=>{m(i,[t,n||{},!!e])},[c,d]=mn(t),u=((t,n)=>{const{$:e}=t,{R:o,T:i,V:s}=hn(),l=!o&&(i.x||i.y),c=[Sn(t,n),xn(t,n),Mn(t,n)];return(t,n,o)=>{const i=Ln(C({ot:!1,vt:!1,rt:!1,dt:!1,st:!1,et:!1,yt:!1,bt:!1},Object.keys(n).reduce((t,e)=>(r(n[e])||(t[e]=n[e]),t),{})),{},o),d=l||!s,u=d&&I(e),_=d&&A(e);let g=i;return v(c,n=>{g=Ln(g,n(g,t,!!o)||{},o)}),a(u)&&I(e,u),a(_)&&A(e,_),g}})(c,o),[_,g]=Nn(c,o,t=>{l(u(e,t))}),f=s.bind(0);return f.Tt=t=>{i.add(t)},f.Rt=c,[(t,e)=>{const o=jt(n,t,e);_(o),l(u(o,{},e))},f,()=>{i.clear(),g(),d()}]},Yn=t=>{const n=k(`${Qt} ${t}`),e=k(nn),o=k(en);return V(n,e),V(e,o),{jt:n,Pt:e,Vt:o}},Xn=(t,n,e)=>{const o=Pt({}),[r]=o,[i,a]=((t,n)=>{const{B:e}=hn(),{M:o}=e(),{G:r,O:i,$:a,tt:s}=n,l=!s&&t.scrollbarsSlot,d=(c(l)?l(r,i,a):l)||(c(o)?o(r,i,a):o)||i,u=Yn(Zt),_=Yn(tn),{jt:g}=u,{jt:f}=_;return V(d,g),V(d,f),[{Ht:u,Et:_},B.bind(0,[g,f])]})(t,e),s=r.bind(0);return s.Rt=i,[(t,e)=>{const o=jt(n,t,e);console.log(o)},s,()=>{a()}]},Un={};var Jn,Kn={exports:{}};!function(t){function n(){return t.exports=n=Object.assign?Object.assign.bind():function(t){for(var n=1;n(t[n]=Qn[0]+n+Qn[1],t),{});Zn.number,Zn.boolean,Zn.array,Zn.null,Zn.string,Zn.array,Zn.null;Zn.number,Zn.array,Zn.null,Zn.function,Zn.null;const te="__osOptionsValidationPlugin",ne=new Set,ee=new WeakMap,oe=t=>(t=>{const n=new Map,e=(t,e)=>{if(t){const o=n.get(t);Tt(t=>{o&&o[t?"delete":"clear"](t)},e)}else n.forEach(t=>{t.clear()}),n.clear()},o=(t,o)=>{const r=n.get(t)||new Set;return n.set(t,r),Tt(t=>{t&&r.add(t)},o),e.bind(0,t,o)};return v(x(t),n=>{o(n,t[n])}),[o,e,(t,e)=>{const o=n.get(t);v(b(o),t=>{e?t(e):t()})}]})(t),re=(t,n)=>({amount:{x:t.w,y:t.h},overflow:{x:t.w>0,y:t.h>0},scrollableOverflow:C({},n)}),ie=(t,n,e)=>{const{D:o,T:r,H:i}=hn(),a=C({},Un),s=f(t)?t:t.target,l=(t=>ee.get(t))(s);if(l)return l;const d=a[te],u=t=>{const n=t||{},e=d&&d.kt;return e?e(n,!0):n},_=C({},o(),u(n)),[g,h,w]=oe(e);r.x&&r.y&&!_.nativeScrollbarsOverlaid.initialize&&w("initializationWithdrawn");const[p,b,y]=Wn(t,_),[m,,S]=Xn(t,_,b.Rt),O=(t,n)=>{p(t,n),m(t,n)};b.Tt((t,n,e)=>{const{ot:o,rt:r,vt:i,st:a,et:s,bt:l,yt:c}=t,{pt:d,wt:u}=b();(l||c)&&w("overflowChanged",C({},re(d,u),{previous:re(d,u)})),w("updated",{updateHints:{sizeChanged:o,contentMutation:r,hostMutation:i,directionChanged:a,heightIntrinsicChanged:s},changedOptions:n,force:e})});const $=i(O.bind(0,{},!0)),z={options(t){if(t){const n=an(_,u(t));(function(t){for(const n in t)return!1;return!0})(n)||(C(_,n),O(n))}return _},on:g,off:h,state:()=>({Dt:b().pt}),update(t){O({},t)},destroy:()=>{(t=>{ee.delete(t),ne.delete(t)})(s),$(),h(),S(),y(),w("destroyed")}};return v(x(a),t=>{const n=a[t];c(n)&&n(ie,z)}),z.update(!0),((t,n)=>{ee.set(t,n),ne.add(t)})(s,z),w("initialized"),z};ie.extend=t=>v(d(t)?t:[t],t=>{Un[t[0]]=t[1]});export{ie as default}; \ No newline at end of file +function t(t,n){const{o:e,s:o,u:r}=t;let i,s=e;const a=(t,n)=>{const e=s,a=t,l=n||(o?!o(e,a):e!==a);return(l||r)&&(s=a,i=e),[s,l,i]};return[n?t=>a(n(s,i),t):a,t=>[s,!!t,i]]}const n=Node.ELEMENT_NODE,{toString:e,hasOwnProperty:o}=Object.prototype;function r(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 d(t){return Array.isArray(t)}function u(t){return"object"==typeof t&&!d(t)&&!i(t)}function _(t){const n=!!t&&t.length,e=s(n)&&n>-1&&n%1==0;return!!(d(t)||!c(t)&&e)&&(!(n>0&&u(t))||n-1 in t)}function g(t){if(!t||!u(t)||"object"!==(t=>r(t)||i(t)?`${t}`:e.call(t).replace(/^\[object (.+)\]$/,"$1").toLowerCase())(t))return!1;let n;const s="constructor",a=t[s],l=a&&a.prototype,c=o.call(t,s),d=l&&o.call(l,"isPrototypeOf");if(a&&!c&&!d)return!1;for(n in t);return r(n)||o.call(t,n)}function f(t){const e=window.HTMLElement;return!!t&&(e?t instanceof e:t.nodeType===n)}function h(t){const e=window.Element;return!!t&&(e?t instanceof e:t.nodeType===n)}function w(t,n){if(_(t))for(let e=0;en(t[e],e,t));return t}const v=(t,n,e)=>t.indexOf(n,e),p=(t,n,e)=>(e||a(n)||!_(n)?t.push(n):Array.prototype.push.apply(t,n),t),b=t=>{if(Array.from&&t)return Array.from(t);const n=[];return t instanceof Set?t.forEach(t=>{p(n,t)}):w(t,t=>{p(n,t)}),n},y=t=>!!t&&0===t.length,m=(t,n)=>{const e=t=>t&&t.apply(void 0,n||[]);t instanceof Set?t.forEach(e):w(t,e)},S=(t,n)=>Object.prototype.hasOwnProperty.call(t,n),x=t=>t?Object.keys(t):[];function C(t,n,e,o,r,s,a){const l=[n,e,o,r,s,a];return"object"==typeof t&&!i(t)||c(t)||(t={}),w(l,n=>{w(x(n),e=>{const o=n[e];if(t===o)return!0;const r=d(o);if(o&&(g(o)||r)){const n=t[e];let i=n;r&&!d(n)?i=[]:r||g(n)||(i={}),t[e]=C(i,o)}else t[e]=o})}),t}function $(t,n,e,o){if(r(o))return e?e[t]:n;e&&(e[t]=o)}function O(t,n,e){if(r(e))return t?t.getAttribute(n):null;t&&t.setAttribute(n,e)}const z=(t,n)=>{t&&t.removeAttribute(n)};function I(t,n){return $("scrollLeft",0,t,n)}function A(t,n){return $("scrollTop",0,t,n)}const M=Element.prototype,L=(t,n)=>{const e=[],o=n?h(n)?n:null:document;return o?p(e,o.querySelectorAll(t)):e},T=(t,n)=>{if(h(t)){return(M.matches||M.msMatchesSelector).call(t,n)}return!1},R=t=>t?b(t.childNodes):[],j=t=>t?t.parentElement:null,P=(t,n,e)=>{if(e){let o,r=n;t&&(_(e)?(o=document.createDocumentFragment(),w(e,t=>{t===r&&(r=t.previousSibling),o.appendChild(t)})):o=e,n&&(r?r!==n&&(r=r.nextSibling):r=t.firstChild),t.insertBefore(o,r||null))}},V=(t,n)=>{P(t,null,n)},H=(t,n)=>{P(t,t&&t.firstChild,n)},E=(t,n)=>{P(j(t),t&&t.nextSibling,n)},B=t=>{if(_(t))w(b(t),t=>B(t));else if(t){const n=j(t);n&&n.removeChild(t)}},k=t=>{const n=document.createElement("div");return t&&O(n,"class",t),n},D=t=>{const n=k();return n.innerHTML=t.trim(),w(R(n),t=>B(t))},q=t=>t.charAt(0).toUpperCase()+t.slice(1),N=["-webkit-","-moz-","-o-","-ms-"],F=["WebKit","Moz","O","MS","webkit","moz","o","ms"],G={},W={},Y=t=>{let n=W[t];if(S(W,t))return n;const e=q(t),o=k().style;return w(N,r=>{const i=r.replace(/-/g,""),s=[t,r+t,i+e,q(i)+e];return!(n=s.find(t=>void 0!==o[t]))}),W[t]=n||""},X=t=>{let n=G[t]||window[t];return S(G,t)||(w(F,e=>(n=n||window[e+q(t)],!n)),G[t]=n),n},U=X("MutationObserver"),J=X("IntersectionObserver"),K=X("ResizeObserver"),Q=X("cancelAnimationFrame"),Z=X("requestAnimationFrame"),tt=/[^\x20\t\r\n\f]+/g,nt=(t,n,e)=>{let o,r=0,i=!1;if(t&&a(n)){const s=n.match(tt)||[];for(i=s.length>0;o=s[r++];)i=!!e(t.classList,o)&&i}return i},et=(t,n)=>{nt(t,n,(t,n)=>t.remove(n))},ot=(t,n)=>(nt(t,n,(t,n)=>t.add(n)),et.bind(0,t,n)),rt=(t,n,e,o)=>{if(t&&n){let r=!0;return w(e,e=>{(o?o(t[e]):t[e])!==(o?o(n[e]):n[e])&&(r=!1)}),r}return!1},it=(t,n)=>rt(t,n,["w","h"]),st=(t,n)=>rt(t,n,["x","y"]),at=(t,n)=>rt(t,n,["t","r","b","l"]),lt=(t,n,e)=>rt(t,n,["width","height"],e&&(t=>Math.round(t))),ct=t=>{t&&window.clearTimeout(t),t&&Q(t)},dt=()=>{},ut=(t,n)=>{let e,o,r,i;const{_:a,g:l,v:d}=n||{},u=window.setTimeout,_=function(n){ct(e),ct(o),o=e=r=void 0,t.apply(this,n)},g=t=>d&&r?d(r,t):t,f=()=>{e&&_(g(i)||i)},h=function(){const t=b(arguments),n=c(a)?a():a,d=s(n)&&n>=0;if(d){const a=c(l)?l():l,d=s(a)&&a>=0,h=n>0?u:Z,w=g(t)||t,v=_.bind(0,w);ct(e),e=h(v,n),d&&!o&&(o=u(f,a)),r=i=w}else _(t)};return h.p=f,h},_t={opacity:1,zindex:1},gt=(t,n)=>{const e=n?parseFloat(t):parseInt(t,10);return Number.isNaN(e)?0:e},ft=(t,n,e)=>null!=n?n[e]||n.getPropertyValue(e):t.style[e],ht=(t,n,e)=>{try{if(t){const{style:o}=t;r(o[n])?o.setProperty(n,e):o[n]=((t,n)=>!_t[t.toLowerCase()]&&s(n)?`${n}px`:n)(n,e)}}catch(o){}};function wt(t,n){const e=a(n);if(d(n)||e){let o=e?"":{};if(t){const r=window.getComputedStyle(t,null);o=e?ft(t,r,n):n.reduce((n,e)=>(n[e]=ft(t,r,e),n),o)}return o}w(x(n),e=>ht(t,e,n[e]))}const vt=(t,n,e)=>{const o=n?`${n}-`:"",r=e?`-${e}`:"",i=`${o}top${r}`,s=`${o}right${r}`,a=`${o}bottom${r}`,l=`${o}left${r}`,c=wt(t,[i,s,a,l]);return{t:gt(c[i]),r:gt(c[s]),b:gt(c[a]),l:gt(c[l])}},pt={w:0,h:0},bt=()=>({w:window.innerWidth,h:window.innerHeight}),yt=t=>t?{w:t.offsetWidth,h:t.offsetHeight}:pt,mt=t=>t?{w:t.clientWidth,h:t.clientHeight}:pt,St=t=>t?{w:t.scrollWidth,h:t.scrollHeight}:pt,xt=t=>{const n=parseFloat(wt(t,"height"))||0,e=parseFloat(wt(t,"height"))||0;return{w:e-Math.round(e),h:n-Math.round(n)}},Ct=t=>t.getBoundingClientRect();let $t;const Ot=t=>t.split(" "),zt=(t,n,e,o)=>{w(Ot(n),n=>{t.removeEventListener(n,e,o)})},It=(t,n,e,o)=>{const i=(()=>{if(r($t)){$t=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){$t=!0}}))}catch(t){}}return $t})(),s=i&&o&&o.m||!1,a=o&&o.S||!1,l=o&&o.C||!1,c=[],d=i?{passive:s,capture:a}:a;return w(Ot(n),n=>{const o=l?r=>{t.removeEventListener(n,o,a),e&&e(r)}:e;p(c,zt.bind(null,t,n,o,a)),t.addEventListener(n,o,d)}),m.bind(0,c)},At=t=>(t=>t.stopPropagation())(t)||(t=>t.preventDefault())(t),Mt={x:0,y:0},Lt=t=>{const n=t?Ct(t):0;return n?{x:n.left+window.pageYOffset,y:n.top+window.pageXOffset}:Mt},Tt=(t,n)=>{w(d(n)?n:[n],t)},Rt=(t,n)=>t?n.split(".").reduce((t,n)=>t&&S(t,n)?t[n]:void 0,t):void 0,jt=(t,n,e)=>o=>[Rt(t,o),e||void 0!==Rt(n,o)],Pt=t=>{let n=t;return[()=>n,t=>{n=C({},n,t)}]},Vt="os-environment",Ht=`${Vt}-flexbox-glue`,Et=`${Ht}-max`,Bt="os-host",kt="os-padding",Dt="os-viewport",qt=`${Dt}-arrange`,Nt="os-content",Ft=`${Dt}-scrollbar-styled`,Gt="os-size-observer",Wt=`${Gt}-appear`,Yt=`${Gt}-listener`,Xt=`${Yt}-scroll`,Ut=`${Yt}-item`,Jt=`${Ut}-final`,Kt="os-trinsic-observer",Qt="os-scrollbar",Zt=`${Qt}-horizontal`,tn=`${Qt}-vertical`,nn="os-scrollbar-track",en="os-scrollbar-handle",on=t=>JSON.stringify(t,(t,n)=>{if(c(n))throw new Error;return n}),rn={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}},sn=(t,n)=>{const e={};return w(x(n).concat(x(t)),o=>{const r=t[o],i=n[o];if(u(r)&&u(i))C(e[o]={},sn(r,i));else if(S(n,o)&&i!==r){let t=!0;if(d(r)||d(i))try{on(r)===on(i)&&(t=!1)}catch(s){}t&&(e[o]=i)}}),e};let an;const{abs:ln,round:cn}=Math,dn=(t,n,e)=>{V(t,n);const o=mt(n),r=yt(n),i=xt(e);return{x:r.h-o.h+i.h,y:r.w-o.w+i.w}},un=(t,n)=>{const e="hidden";wt(t,{overflowX:e,overflowY:e,direction:"rtl"}),I(t,0);const o=Lt(t),r=Lt(n);I(t,-999);const i=Lt(n);return{i:o.x===r.x,n:r.x!==i.x}},_n=(t,n)=>{const e=ot(t,Ht),o=Ct(t),r=Ct(n),i=lt(r,o,!0),s=ot(t,Et),a=Ct(t),l=Ct(n),c=lt(l,a,!0);return e(),s(),i&&c},gn=()=>{const t=window.screen.deviceXDPI||0,n=window.screen.logicalXDPI||1;return window.devicePixelRatio||t/n},fn=()=>{const{body:n}=document,e=D(`
`)[0],o=e.firstChild,r=new Set,[i,s]=t({o:dn(n,e,o),s:st}),[a]=s(),l=(t=>{let n=!1;const e=ot(t,Ft);try{n="none"===wt(t,Y("scrollbar-width"))||"none"===window.getComputedStyle(t,"::-webkit-scrollbar").getPropertyValue("display")}catch(o){}return e(),n})(e),c={x:0===a.x,y:0===a.y},d=(t=>({$:null,O:null,I:!t,A:!1,M:null}))(l),u=C({},rn),_={L:a,T:c,R:l,j:"-1"===wt(e,"zIndex"),P:un(e,o),V:_n(e,o),H:t=>(r.add(t),()=>r.delete(t)),B:C.bind(0,{},d),k(t){C(d,t)},D:C.bind(0,{},u),q(t){C(u,t)},N:C({},d),F:C({},u)};if(z(e,"style"),B(e),!(l||c.x&&c.y)){let t=bt(),s=gn();window.addEventListener("resize",()=>{if(r.size){const a=bt(),l={w:a.w-t.w,h:a.h-t.h};if(0===l.w&&0===l.h)return;const c={w:ln(l.w),h:ln(l.h)},d={w:ln(cn(a.w/(t.w/100))),h:ln(cn(a.h/(t.h/100)))},u=gn(),_=c.w>2&&c.h>2,g=!((t,n)=>{const e=ln(t),o=ln(n);return!(e===o||e+1===o||e-1===o)})(d.w,d.h),f=u!==s&&s>0;if(_&&g&&f){const[t,s]=i(dn(n,e,o));C(an.L,t),B(e),s&&m(r)}t=a,s=u}})}return _},hn=()=>(an||(an=fn()),an);let wn=0;const vn=t=>{V(j(t),R(t)),B(t)},pn=()=>{const{R:t,T:n,j:e}=hn(),o=!!(!e&&!t&&(n.x||n.y))&&document.createElement("style");return o&&(O(o,"id",`${qt}-${wn}`),wn++),o},bn=(t,n,e,o)=>n||(c(e)?e(t):e)||k(o),yn=(t,n,e,o)=>{const r=l(n)||n?n:c(e)?e(t):e;return!0===r?k(o):r},mn=t=>{const{B:n,R:e}=hn(),{$:o,O:r,I:i,A:s}=n(),a=f(t),l=t,c=a?t:l.target,d=T(c,"textarea"),u=!d&&T(c,"body"),_=c.ownerDocument,g=_.body,h=_.defaultView,w={G:c,$:d?bn(c,l.host,o,Bt):c,O:bn(c,l.viewport,r,Dt),I:yn(c,l.padding,i,kt),A:yn(c,l.content,s,Nt),W:pn(),Y:h,X:_,U:j(g),J:g,K:d,Z:u,tt:a},b=x(w).reduce((t,n)=>{const e=w[n];return p(t,!(!e||j(e))&&e)},[]),y=t=>t?v(b,t)>-1:null,{G:S,$:C,I:$,O,A:z,W:I}=w,A=[],M=d&&y(C),L=d?S:R([z,O,$,C,S].find(t=>!1===y(t))),H=z||O;var k,D;return M&&(E(S,C),p(A,()=>{E(C,S),B(C)})),V(H,L),V(C,$),V($||C,O),V(O,z),ot(C,Bt),ot($,kt),ot(O,Dt),ot(z,Nt),p(A,()=>{a?(V(C,R(H)),B($||O),et(C,Bt)):(y(z)&&vn(z),y(O)&&vn(O),y($)&&vn($),et(C,Bt),et($,kt),et(O,Dt),et(z,Nt))}),e&&p(A,et.bind(0,O,Ft)),I&&(D=I,P(j(k=O),k,D),p(A,B.bind(0,I))),[w,m.bind(0,A)]},Sn=(t,n)=>{const{A:e}=t,[o]=n;return t=>{const{nt:n}=o(),{et:r}=t;return r&&wt(e,{height:n?"":"100%",display:n?"":"inline"}),{ot:r,rt:r}}},xn=(n,e)=>{const[o,r]=e,{$:i,I:s,O:a}=n,[l,c]=t({s:at,o:vt()},vt.bind(0,i,"padding",""));return(t,n,e)=>{let[i,d]=c(e);const{R:u,V:_}=hn(),{it:g}=o(),{ot:f,rt:h,st:w}=t,[v,p]=n("paddingAbsolute");(f||d||!_&&h)&&([i,d]=l(e));const b=p||w||d;if(b){const t=!v||!s&&!u,n=i.r+i.l,e=i.t+i.b,o={marginRight:t&&!g?-n:0,marginBottom:t?-e:0,marginLeft:t&&g?-n:0,top:t?-i.t:0,right:t?g?-i.r:"auto":0,left:t?g?"auto":-i.l:0,width:t?`calc(100% + ${n}px)`:""},l={paddingTop:t?i.t:0,paddingRight:t?i.r:0,paddingBottom:t?i.b:0,paddingLeft:t?i.l:0};wt(s||a,o),wt(a,l),r({I:i,lt:!t,ct:s?l:C({},o,l)})}return{dt:b}}},{max:Cn}=Math,$n=42,On={s:it,o:{w:0,h:0}},zn={s:st,o:{x:!1,y:!1}},In=(t,n,e,o)=>{const r=t?"overflowX":"overflowY",i=0===e.indexOf("visible"),s="visible-hidden"===e,a="scroll"===e,l=n>0;return i&&(o[r]="visible"),a&&l&&(o[r]=e),[i,s?"hidden":"scroll"]},An=(n,e)=>{const[o,r]=e,{$:i,O:s,W:a}=n,{L:l,V:c,R:d,T:u}=hn(),_=!d&&(u.x||u.y),[g,f]=t(On,xt.bind(0,i)),[h,v]=t(On,St.bind(0,s)),[p,b]=t(On),[y]=t(zn),m=(t,n)=>{if(wt(s,{height:""}),n){const{lt:n,I:e}=o(),{ut:r,_t:a}=t,l=xt(i),c=mt(i),d="content-box"===wt(s,"boxSizing"),_=n||d?e.b+e.t:0,g=!(u.x&&d);wt(s,{height:c.h+l.h+(r.x&&g?a.x:0)-_})}},S=(t,n)=>{const{x:e,y:o}=u,r=d||t?0:$n,i=!n?wt(s,["overflowX","overflowY"]):n,a={x:"scroll"===i.overflowX,y:"scroll"===i.overflowY},c={x:e?r:l.x,y:o?r:l.y};return{ut:a,gt:{x:e&&!!r,y:o&&!!r},_t:{x:a.x&&!d?c.x:0,y:a.y&&!d?c.y:0}}},C=(t,n,e,r)=>{if(_){const{ct:i}=o(),{_t:l,gt:c}=t,{x:d,y:u}=c,{x:_,y:g}=l,f=i[r?"paddingRight":"paddingLeft"],h=i.paddingTop,w=n.w+e.w,v=n.h+e.h,p={w:g&&u?`${g+w-f}px`:"",h:_&&d?`${_+v-h}px`:""};if(a){const{sheet:t}=a;if(t){const{cssRules:n}=t;if(n){n.length||t.insertRule(`#${O(a,"id")} + .${qt}::before {}`,0);const e=n[0].style;e.width=p.w,e.height=p.h}}}else wt(s,{"--os-vaw":p.w,"--os-vah":p.h})}return _},$=(t,n,e,r)=>{const{_t:i,gt:s}=t,{x:a,y:l}=s,{x:c,y:d}=i,{ct:u}=o(),_=n?"marginLeft":"marginRight",g=n?"paddingLeft":"paddingRight",f=u[_],h=u.marginBottom,w=u[g],v=u.paddingBottom;r.width=`calc(100% + ${d+-1*f}px)`,r[_]=-d+f,r.marginBottom=-c+h,e&&(r[g]=w+(l?d:0),r.paddingBottom=v+(a?c:0))};return(t,n,e)=>{const{ot:i,ft:a,rt:l,dt:O,et:z,st:I}=t,{nt:A,it:M}=o(),[L,T]=n("nativeScrollbarsOverlaid.show"),[R,j]=n("overflow"),P=L&&u.x&&u.y,V=!c&&(i||l||a||T||z);let H,E=f(e),B=v(e),k=b(e);if(T&&d&&(P?et(s,Ft):ot(s,Ft)),V&&(H=S(P),m(H,A)),i||O||l||I||T){const[t,n]=((t,n,e)=>{if(_){const r=e||S(t),{ct:i}=o(),{gt:a}=r,{x:l,y:d}=a,u={},g=t=>w(t.split(" "),t=>{u[t]=i[t]});l&&g("marginBottom paddingTop paddingBottom"),d&&g("marginLeft marginRight paddingLeft paddingRight");const f=wt(s,x(u));return et(s,qt),c||(u.height=""),wt(s,u),[()=>{$(r,n,_,f),wt(s,f),ot(s,qt)},r]}return[dt]})(P,M,H),[r,i]=E=g(e),[a,l]=B=h(e),d=mt(s);let u=a,f=d;t(),(l||i||T)&&n&&!P&&C(n,a,r,M)&&(f=mt(s),u=St(s)),k=p(((t,n,e)=>{const o=window.devicePixelRatio%2!=0?1:0,r={w:Cn(0,t.w-n.w-Cn(0,e.w)),h:Cn(0,t.h-n.h-Cn(0,e.h))};return{w:r.w>=o?r.w:0,h:r.h>=o?r.h:0}})({w:Cn(a.w,u.w),h:Cn(a.h,u.h)},{w:f.w+Cn(0,d.w-a.w),h:f.h+Cn(0,d.h-a.h)},r),e)}const[D,q]=k,[N,F]=B,[G,W]=E;if(O||I||W||F||q||j||T||V){const t={marginRight:0,marginBottom:0,marginLeft:0,width:"",overflowY:"",overflowX:""},n=((t,n,e,o)=>{const[r,i]=In(!0,n.w,e.x,o),[s,a]=In(!1,n.h,e.y,o);return r&&!s&&(o.overflowX=i),s&&!r&&(o.overflowY=a),S(t,o)})(P,D,R,t),e=C(n,N,G,M),[o,i]=y(n.ut);return $(n,M,e,t),V&&m(n,A),wt(s,t),r({ut:o,ht:D}),{wt:q,vt:i}}}},Mn=(t,n,e)=>{const o={},r=n||{};return w(x(t).concat(x(r)),n=>{const i=t[n],s=r[n];o[n]=!!(e||i||s)}),o},Ln="animationstart",Tn="scroll",Rn=3333333,jn=t=>"rtl"===wt(t,"direction"),Pn=t=>t&&(t.height||t.width),Vn=(n,e,o)=>{const{pt:r=!1,bt:i=!1}=o||{},{P:s}=hn(),a=D(`
`)[0],c=a.firstChild,_=jn.bind(0,a),[g]=t({o:void 0,u:!0,s:(t,n)=>!(!t||!Pn(t)&&Pn(n))}),f=t=>{const n=d(t)&&t.length>0&&u(t[0]),o=!n&&l(t[0]);let i=!1,c=!1,_=!0;if(n){const[n,,e]=g(t.pop().contentRect),o=Pn(n),r=Pn(e);i=!e||!o,c=!r&&o,_=!i}else o?[,_]=t:c=!0===t;if(r&&_){const n=o?t[0]:jn(a);I(a,n?s.n?-Rn:s.i?0:Rn:Rn),A(a,Rn)}i||e({ot:!o,yt:o?t:void 0,bt:!!c})},h=[];let w,v=!!i&&f;if(K){const t=new K(f);t.observe(c),p(h,()=>{t.disconnect()})}else{const t=D(`
`);V(c,t),ot(c,Xt);const n=t[0],e=n.lastChild,o=n.firstChild,r=null==o?void 0:o.firstChild;let s,a=yt(n),l=a,d=!1;const u=()=>{I(o,Rn),A(o,Rn),I(e,Rn),A(e,Rn)},_=t=>{s=0,d&&(a=l,f(!0===t))},g=t=>{l=yt(n),d=!t||!it(l,a),t?(At(t),d&&!s&&(Q(s),s=Z(_))):_(!1===t),u()};p(h,[It(o,Tn,g),It(e,Tn,g)]),wt(r,{width:Rn,height:Rn}),u(),v=i?g.bind(0,!1):u}if(r){w=t({o:!_()},_);const[n]=w;p(h,It(a,Tn,t=>{const e=n(),[o,r]=e;r&&(et(c,"ltr rtl"),ot(c,o?"rtl":"ltr"),f(e)),At(t)}))}return v&&(ot(a,Wt),p(h,It(a,Ln,v,{C:!!K}))),H(n,a),()=>{m(h),B(a)}},Hn=(t,n,e,o)=>{let r=!1;const{St:i,xt:s,Ct:l,$t:c,Ot:d,zt:u,It:_}=o||{},[g,f]=((t,n,e)=>{let o,r=!1;const i=i=>{if(e){w(e.reduce((n,e)=>{if(e){const o=e[0],r=e[1],s=r&&o&&(i?i(o):L(o,t));s&&s.length&&r&&a(r)&&p(n,[s,r.trim()],!0)}return n},[]),t=>w(t[0],e=>{const i=t[1],s=o.get(e);if(s){const t=s[0],n=s[1];t===i&&n()}const a=It(e,i,t=>{r?(a(),o.delete(e)):n(t)});o.set(e,[i,a])}))}};return e&&(o=new WeakMap,i()),[()=>{r=!0},i]})(t,ut(()=>{r&&e(!0)},{_:33,g:99}),l),h=s||[],b=(i||[]).concat(h),m=r=>{const i=(n?u:d)||dt,s=_||dt,l=[],g=[];let b=!1,m=!1,S=!1;w(r,e=>{const{attributeName:r,target:d,type:u,oldValue:_,addedNodes:f}=e,w="attributes"===u,y="childList"===u,x=t===d,C=w&&a(r)?O(d,r):0,$=0!==C&&_!==C,z=v(h,r)>-1&&$;if(n&&!x){const n=!w,a=w&&z,l=a&&c&&T(d,c),u=(l?!i(d,r,_,C):n||a)&&!s(e,!!l,t,o);p(g,f),m=m||u,S=S||y}!n&&x&&$&&!i(d,r,_,C)&&(p(l,r),b=b||z)}),S&&!y(g)&&f(t=>g.reduce((n,e)=>(p(n,L(t,e)),T(e,t)?p(n,e):n),[])),n?m&&e(!1):y(l)&&!b||e(l,b)},S=new U(m);return S.observe(t,{attributes:!0,attributeOldValue:!0,attributeFilter:b,subtree:n,childList:n,characterData:n}),r=!0,[()=>{r&&(g(),S.disconnect(),r=!1)},()=>{r&&m(S.takeRecords())}]},En="os-",Bn=["tabindex"],kn=["wrap","cols","rows"],Dn=["id","class","style","open"],qn=(t,n,e,o)=>{if("class"===n&&e&&o){return!!((t,n)=>{const e=t&&t.split(" "),o=n&&n.split(" "),r={};return w(e,t=>{r[t]=1}),w(o,t=>{r[t]?delete r[t]:r[t]=1}),x(r)})(e,o).find(t=>0!==t.indexOf(En))}return!1},Nn=(n,e,o)=>{let r,i,l;const[,c]=e,{$:u,O:_,A:g,K:f}=n,{R:h,V:b}=hn(),y=f?kn:Dn.concat(kn),S=ut(o,{_:()=>r,g:()=>i,v(t,n){const[e]=t,[o]=n;return[x(e).concat(x(o)).reduce((t,n)=>(t[n]=e[n]||o[n],t),{})]}}),C=t=>{w(t||Bn,t=>{if(v(Bn,t)>-1){const n=O(u,t);a(n)?O(_,t,n):z(_,t)}})},$=t=>{(t?o:S)({rt:!0})},I=(g||!b)&&((n,e)=>{const o=k(Kt),r=[],[i]=t({o:!1}),s=t=>{if(t){const o=i(0===(n=t).h||n.isIntersecting||n.intersectionRatio>0),[,r]=o;r&&e(o)}var n};if(J){const t=new J(t=>{t&&t.length>0&&s(t.pop())},{root:n});t.observe(o),p(r,()=>{t.disconnect()})}else{const t=()=>{const t=yt(o);s(t)};p(r,Vn(o,t)),t()}return H(n,o),()=>{m(r),B(o)}})(u,t=>{const[n,e]=t;c({nt:n}),o({et:e})}),A=Vn(u,({ot:t,yt:n,bt:e})=>{const r=!t||e?o:S;let i=!1;if(n){const[t,e]=n;i=e,c({it:t})}r({ot:t,st:i})},{bt:!0,pt:!h}),[M]=Hn(u,!1,(t,n)=>{n?S({ft:!0}):C(t)},{xt:Dn,St:Dn.concat(Bn),Ot:qn});return C(),[t=>{const[n,e]=t("updating.elementEvents"),[o,a]=t("updating.attributes"),[c,u]=t("updating.debounce");if((e||a)&&(l&&(l[1](),l[0]()),l=Hn(g||_,!0,$,{xt:y.concat(o||[]),St:y.concat(o||[]),Ct:n,zt:qn})),u)if(S.p(),d(c)){const t=c[0],n=c[1];r=!!s(t)&&t,i=!!s(n)&&n}else s(c)?(r=c,i=!1):(r=!1,i=!1)},()=>{l&&l[0](),I&&I(),A(),M()}]},Fn={I:{t:0,r:0,b:0,l:0},lt:!1,ct:{marginRight:0,marginBottom:0,marginLeft:0,paddingTop:0,paddingRight:0,paddingBottom:0,paddingLeft:0},ht:{w:0,h:0},ut:{x:!1,y:!1},nt:!1,it:!1},Gn=(t,n)=>{const e=jt(n,{}),o=Pt(Fn),r=new Set,[i]=o,a=(t,n,e)=>{m(r,[t,n||{},!!e])},[l,c]=mn(t),d=((t,n)=>{const{O:e}=t,{R:o,T:r,V:i}=hn(),a=!o&&(r.x||r.y),l=[Sn(t,n),xn(t,n),An(t,n)];return(t,n,o)=>{const r=Mn(C({ot:!1,dt:!1,st:!1,et:!1,vt:!1,wt:!1,ft:!1,rt:!1},n),{},o),c=a||!i,d=c&&I(e),u=c&&A(e);let _=r;return w(l,n=>{_=Mn(_,n(_,t,!!o)||{},o)}),s(d)&&I(e,d),s(u)&&A(e,u),_}})(l,o),[u,_]=Nn(l,o,t=>{a(d(e,t))}),g=i.bind(0);return g.At=t=>{r.add(t)},g.Mt=l,[(t,e)=>{const o=jt(n,t,e);u(o),a(d(o,{},e))},g,()=>{r.clear(),_(),c()}]},Wn=t=>{const n=k(`${Qt} ${t}`),e=k(nn),o=k(en);return V(n,e),V(e,o),{Lt:n,Tt:e,Rt:o}},Yn=(t,n,e)=>{const o=Pt({}),[r]=o,[i,s]=((t,n)=>{const{B:e}=hn(),{M:o}=e(),{G:r,$:i,O:s,tt:a}=n,l=!a&&t.scrollbarsSlot,d=(c(l)?l(r,i,s):l)||(c(o)?o(r,i,s):o)||i,u=Wn(Zt),_=Wn(tn),{Lt:g}=u,{Lt:f}=_;return V(d,g),V(d,f),[{jt:u,Pt:_},B.bind(0,[g,f])]})(t,e),a=r.bind(0);return a.Mt=i,[(t,e)=>{const o=jt(n,t,e);console.log(o)},a,()=>{s()}]},Xn={};var Un,Jn={exports:{}};!function(t){function n(){return t.exports=n=Object.assign?Object.assign.bind():function(t){for(var n=1;n(t[n]=Kn[0]+n+Kn[1],t),{});Qn.number,Qn.boolean,Qn.array,Qn.null,Qn.string,Qn.array,Qn.null;Qn.number,Qn.array,Qn.null,Qn.function,Qn.null;const Zn="__osOptionsValidationPlugin",te=new Set,ne=new WeakMap,ee=t=>(t=>{const n=new Map,e=(t,e)=>{if(t){const o=n.get(t);Tt(t=>{o&&o[t?"delete":"clear"](t)},e)}else n.forEach(t=>{t.clear()}),n.clear()},o=(t,o)=>{const r=n.get(t)||new Set;return n.set(t,r),Tt(t=>{t&&r.add(t)},o),e.bind(0,t,o)};return w(x(t),n=>{o(n,t[n])}),[o,e,(t,e)=>{const o=n.get(t);w(b(o),t=>{e?t(e):t()})}]})(t),oe=(t,n)=>({amount:{x:t.w,y:t.h},overflow:{x:t.w>0,y:t.h>0},scrollableOverflow:C({},n)}),re=(t,n,e)=>{const{D:o,T:r,H:i}=hn(),s=C({},Xn),a=f(t)?t:t.target,l=(t=>ne.get(t))(a);if(l)return l;const d=s[Zn],u=t=>{const n=t||{},e=d&&d.Ht;return e?e(n,!0):n},_=C({},o(),u(n)),[g,h,v]=ee(e);r.x&&r.y&&!_.nativeScrollbarsOverlaid.initialize&&v("initializationWithdrawn");const[p,b,y]=Gn(t,_),[m,,S]=Yn(t,_,b.Mt),$=(t,n)=>{p(t,n),m(t,n)};b.At((t,n,e)=>{const{ot:o,st:r,et:i,wt:s,vt:a,rt:l,ft:c}=t,{ht:d,ut:u}=b();(s||a)&&v("overflowChanged",C({},oe(d,u),{previous:oe(d,u)})),v("updated",{updateHints:{sizeChanged:o,directionChanged:r,heightIntrinsicChanged:i,overflowAmountChanged:s,overflowScrollChanged:a,contentMutation:l,hostMutation:c},changedOptions:n,force:e})});const O=i($.bind(0,{},!0)),z={options(t){if(t){const n=sn(_,u(t));(function(t){for(const n in t)return!1;return!0})(n)||(C(_,n),$(n))}return _},on:g,off:h,state:()=>({ht:b().ht}),update(t){$({},t)},destroy:()=>{(t=>{ne.delete(t),te.delete(t)})(a),O(),h(),S(),y(),v("destroyed")}};return w(x(s),t=>{const n=s[t];c(n)&&n(re,z)}),z.update(!0),((t,n)=>{ne.set(t,n),te.add(t)})(a,z),v("initialized"),z};re.extend=t=>w(d(t)?t:[t],t=>{Xn[t[0]]=t[1]});export{re as default}; \ No newline at end of file diff --git a/packages/overlayscrollbars/dist/overlayscrollbars.js b/packages/overlayscrollbars/dist/overlayscrollbars.js index 6e33e97..b07dace 100644 --- a/packages/overlayscrollbars/dist/overlayscrollbars.js +++ b/packages/overlayscrollbars/dist/overlayscrollbars.js @@ -865,7 +865,7 @@ var environmentInstance; var abs = Math.abs, - round$1 = Math.round; + round = Math.round; var diffBiggerThanOne = function diffBiggerThanOne(valOne, valTwo) { var absValOne = abs(valOne); @@ -1012,8 +1012,8 @@ h: abs(deltaSize.h) }; var deltaAbsRatio = { - w: abs(round$1(sizeNew.w / (size.w / 100.0))), - h: abs(round$1(sizeNew.h / (size.h / 100.0))) + w: abs(round(sizeNew.w / (size.w / 100.0))), + h: abs(round(sizeNew.h / (size.h / 100.0))) }; var dprNew = getWindowDPR(); var deltaIsBigger = deltaAbsSize.w > 2 && deltaAbsSize.h > 2; @@ -1297,8 +1297,7 @@ }; }; - var max = Math.max, - round = Math.round; + var max = Math.max; var overlaidScrollbarsHideOffset = 42; var whCacheOptions = { _equal: equalWH, @@ -1330,24 +1329,18 @@ styleObj[overflowKey] = behavior; } - return { - _visible: behaviorIsVisible, - _behavior: behaviorIsVisibleHidden ? 'hidden' : 'scroll' - }; + return [behaviorIsVisible, behaviorIsVisibleHidden ? 'hidden' : 'scroll']; }; var getOverflowAmount = function getOverflowAmount(viewportScrollSize, viewportClientSize, sizeFraction) { - var condition = function condition(raw) { - return window.devicePixelRatio % 2 !== 0 ? raw > 1 : raw > 0; - }; - + var tollerance = window.devicePixelRatio % 2 !== 0 ? 1 : 0; var amount = { w: max(0, viewportScrollSize.w - viewportClientSize.w - max(0, sizeFraction.w)), h: max(0, viewportScrollSize.h - viewportClientSize.h - max(0, sizeFraction.h)) }; return { - w: condition(amount.w) ? amount.w : 0, - h: condition(amount.h) ? amount.h : 0 + w: amount.w >= tollerance ? amount.w : 0, + h: amount.h >= tollerance ? amount.h : 0 }; }; @@ -1393,14 +1386,13 @@ var _overflowScroll = viewportOverflowState._overflowScroll, _scrollbarsHideOffset = viewportOverflowState._scrollbarsHideOffset; - var hostCssHeight = parseFloat(style(_host, 'height')); + var fSize = fractionalSize(_host); var hostClientSize = clientSize(_host); var isContentBox = style(_viewport, 'boxSizing') === 'content-box'; var paddingVertical = _paddingAbsolute || isContentBox ? _padding.b + _padding.t : 0; - var fractionalClientHeight = hostClientSize.h + (hostCssHeight - round(hostCssHeight)); var subtractXScrollbar = !(_nativeScrollbarIsOverlaid.x && isContentBox); style(_viewport, { - height: fractionalClientHeight + (_overflowScroll.x && subtractXScrollbar ? _scrollbarsHideOffset.x : 0) - paddingVertical + height: hostClientSize.h + fSize.h + (_overflowScroll.x && subtractXScrollbar ? _scrollbarsHideOffset.x : 0) - paddingVertical }); } }; @@ -1435,12 +1427,12 @@ var setViewportOverflowState = function setViewportOverflowState(showNativeOverlaidScrollbars, overflowAmount, overflow, viewportStyleObj) { var _setAxisOverflowStyle = setAxisOverflowStyle(true, overflowAmount.w, overflow.x, viewportStyleObj), - xVisible = _setAxisOverflowStyle._visible, - xVisibleBehavior = _setAxisOverflowStyle._behavior; + xVisible = _setAxisOverflowStyle[0], + xVisibleBehavior = _setAxisOverflowStyle[1]; var _setAxisOverflowStyle2 = setAxisOverflowStyle(false, overflowAmount.h, overflow.y, viewportStyleObj), - yVisible = _setAxisOverflowStyle2._visible, - yVisibleBehavior = _setAxisOverflowStyle2._behavior; + yVisible = _setAxisOverflowStyle2[0], + yVisibleBehavior = _setAxisOverflowStyle2[1]; if (xVisible && !yVisible) { viewportStyleObj.overflowX = xVisibleBehavior; @@ -1588,6 +1580,10 @@ showNativeOverlaidScrollbarsOption = _checkOption[0], showNativeOverlaidScrollbarsChanged = _checkOption[1]; + var _checkOption2 = checkOption('overflow'), + overflow = _checkOption2[0], + overflowChanged = _checkOption2[1]; + var showNativeOverlaidScrollbars = showNativeOverlaidScrollbarsOption && _nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.y; var adjustFlexboxGlue = !_flexboxGlue && (_sizeChanged || _contentMutation || _hostMutation || showNativeOverlaidScrollbarsChanged || _heightIntrinsicChanged); var sizeFractionCache = getCurrentSizeFraction(force); @@ -1640,19 +1636,15 @@ }, _sizeFraction), force); } - var _sizeFractionCache2 = sizeFractionCache, - sizeFraction = _sizeFractionCache2[0], - sizeFractionChanged = _sizeFractionCache2[1]; - var _viewportScrollSizeCa2 = viewportScrollSizeCache, - viewportScrollSize = _viewportScrollSizeCa2[0], - viewportScrollSizeChanged = _viewportScrollSizeCa2[1]; var _overflowAmuntCache = overflowAmuntCache, overflowAmount = _overflowAmuntCache[0], overflowAmountChanged = _overflowAmuntCache[1]; - - var _checkOption2 = checkOption('overflow'), - overflow = _checkOption2[0], - overflowChanged = _checkOption2[1]; + var _viewportScrollSizeCa2 = viewportScrollSizeCache, + viewportScrollSize = _viewportScrollSizeCa2[0], + viewportScrollSizeChanged = _viewportScrollSizeCa2[1]; + var _sizeFractionCache2 = sizeFractionCache, + sizeFraction = _sizeFractionCache2[0], + sizeFractionChanged = _sizeFractionCache2[1]; if (_paddingStyleChanged || _directionChanged || sizeFractionChanged || viewportScrollSizeChanged || overflowAmountChanged || overflowChanged || showNativeOverlaidScrollbarsChanged || adjustFlexboxGlue) { var viewportStyle = { @@ -1678,8 +1670,8 @@ style(_viewport, viewportStyle); setState({ - _viewportOverflowScroll: overflowScroll, - _viewportOverflowAmount: overflowAmount + _overflowScroll: overflowScroll, + _overflowAmount: overflowAmount }); return { _overflowAmountChanged: overflowAmountChanged, @@ -1689,10 +1681,6 @@ }; }; - var applyForceToCache = function applyForceToCache(cacheValues, force) { - return [cacheValues[0], force || cacheValues[1], cacheValues[2]]; - }; - var prepareUpdateHints = function prepareUpdateHints(leading, adaptive, force) { var result = {}; var finalAdaptive = adaptive || {}; @@ -1700,7 +1688,7 @@ each(objKeys, function (key) { var leadingValue = leading[key]; var adaptiveValue = finalAdaptive[key]; - result[key] = isBoolean(leadingValue) ? !!force || !!leadingValue || !!adaptiveValue : applyForceToCache(leadingValue, force); + result[key] = !!(force || leadingValue || adaptiveValue); }); return result; }; @@ -1718,20 +1706,14 @@ return function (checkOption, updateHints, force) { var initialUpdateHints = prepareUpdateHints(assignDeep({ _sizeChanged: false, - _hostMutation: false, - _contentMutation: false, _paddingStyleChanged: false, _directionChanged: false, _heightIntrinsicChanged: false, _overflowScrollChanged: false, - _overflowAmountChanged: false - }, Object.keys(updateHints).reduce(function (acc, key) { - if (!isUndefined(updateHints[key])) { - acc[key] = updateHints[key]; - } - - return acc; - }, {})), {}, force); + _overflowAmountChanged: false, + _hostMutation: false, + _contentMutation: false + }, updateHints), {}, force); var adjustScrollOffset = doViewportArrange || !_flexboxGlue; var scrollOffsetX = adjustScrollOffset && scrollLeft(_viewport); var scrollOffsetY = adjustScrollOffset && scrollTop(_viewport); @@ -2188,20 +2170,12 @@ return debounceMaxDelay; }, _mergeParams: function _mergeParams(prev, curr) { - var _prev$ = prev[0], - prevSizeChanged = _prev$._sizeChanged, - prevHostMutation = _prev$._hostMutation, - prevContentMutation = _prev$._contentMutation; - var _curr$ = curr[0], - currSizeChanged = _curr$._sizeChanged, - currvHostMutation = _curr$._hostMutation, - currContentMutation = _curr$._contentMutation; - var merged = [{ - _sizeChanged: prevSizeChanged || currSizeChanged, - _hostMutation: prevHostMutation || currvHostMutation, - _contentMutation: prevContentMutation || currContentMutation - }]; - return merged; + var prevObj = prev[0]; + var currObj = curr[0]; + return [keys(prevObj).concat(keys(currObj)).reduce(function (obj, key) { + obj[key] = prevObj[key] || currObj[key]; + return obj; + }, {})]; } }); @@ -2353,11 +2327,11 @@ paddingBottom: 0, paddingLeft: 0 }, - _viewportOverflowAmount: { + _overflowAmount: { w: 0, h: 0 }, - _viewportOverflowScroll: { + _overflowScroll: { x: false, y: false }, @@ -2368,7 +2342,7 @@ var checkOptionsFallback = createOptionCheck(options, {}); var state = createState(initialStructureSetupUpdateState); var onUpdatedListeners = new Set(); - var getUpdateState = state[0]; + var getState = state[0]; var runOnUpdatedListeners = function runOnUpdatedListeners(updateHints, changedOptions, force) { runEach(onUpdatedListeners, [updateHints, changedOptions || {}, !!force]); @@ -2386,7 +2360,7 @@ updateObservers = _createStructureSetup2[0], destroyObservers = _createStructureSetup2[1]; - var structureSetupState = getUpdateState.bind(0); + var structureSetupState = getState.bind(0); structureSetupState._addOnUpdatedListener = function (listener) { onUpdatedListeners.add(listener); @@ -2630,30 +2604,32 @@ structureState._addOnUpdatedListener(function (updateHints, changedOptions, force) { var _sizeChanged = updateHints._sizeChanged, - _contentMutation = updateHints._contentMutation, - _hostMutation = updateHints._hostMutation, _directionChanged = updateHints._directionChanged, _heightIntrinsicChanged = updateHints._heightIntrinsicChanged, _overflowAmountChanged = updateHints._overflowAmountChanged, - _overflowScrollChanged = updateHints._overflowScrollChanged; + _overflowScrollChanged = updateHints._overflowScrollChanged, + _contentMutation = updateHints._contentMutation, + _hostMutation = updateHints._hostMutation; var _structureState = structureState(), - _viewportOverflowAmount = _structureState._viewportOverflowAmount, - _viewportOverflowScroll = _structureState._viewportOverflowScroll; + _overflowAmount = _structureState._overflowAmount, + _overflowScroll = _structureState._overflowScroll; if (_overflowAmountChanged || _overflowScrollChanged) { - triggerEvent('overflowChanged', assignDeep({}, createOverflowChangedArgs(_viewportOverflowAmount, _viewportOverflowScroll), { - previous: createOverflowChangedArgs(_viewportOverflowAmount, _viewportOverflowScroll) + triggerEvent('overflowChanged', assignDeep({}, createOverflowChangedArgs(_overflowAmount, _overflowScroll), { + previous: createOverflowChangedArgs(_overflowAmount, _overflowScroll) })); } triggerEvent('updated', { updateHints: { sizeChanged: _sizeChanged, - contentMutation: _contentMutation, - hostMutation: _hostMutation, directionChanged: _directionChanged, - heightIntrinsicChanged: _heightIntrinsicChanged + heightIntrinsicChanged: _heightIntrinsicChanged, + overflowAmountChanged: _overflowAmountChanged, + overflowScrollChanged: _overflowScrollChanged, + contentMutation: _contentMutation, + hostMutation: _hostMutation }, changedOptions: changedOptions, force: force @@ -2679,7 +2655,7 @@ off: removeEvent, state: function state() { return { - _overflowAmount: structureState()._viewportOverflowAmount + _overflowAmount: structureState()._overflowAmount }; }, update: function update(force) { diff --git a/packages/overlayscrollbars/dist/overlayscrollbars.js.map b/packages/overlayscrollbars/dist/overlayscrollbars.js.map index b34998e..fc8266a 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.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/utils/equal.ts","../src/support/utils/function.ts","../src/support/dom/style.ts","../src/support/dom/dimensions.ts","../src/support/dom/events.ts","../src/support/dom/offset.ts","../src/support/eventListeners.ts","../src/setups/setups.ts","../src/classnames.ts","../src/options.ts","../src/environment.ts","../src/setups/structureSetup/structureSetup.elements.ts","../src/setups/structureSetup/updateSegments/trinsicUpdateSegment.ts","../src/setups/structureSetup/updateSegments/paddingUpdateSegment.ts","../src/setups/structureSetup/updateSegments/overflowUpdateSegment.ts","../src/setups/structureSetup/structureSetup.update.ts","../src/observers/sizeObserver.ts","../src/observers/trinsicObserver.ts","../src/observers/domObserver.ts","../src/setups/structureSetup/structureSetup.observers.ts","../src/setups/structureSetup/structureSetup.ts","../src/setups/scrollbarsSetup/scrollbarsSetup.elements.ts","../src/setups/scrollbarsSetup/scrollbarsSetup.ts","../src/plugins/plugins.ts","../../../node_modules/@babel/runtime/helpers/extends.js","../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 = [value: T, changed: boolean, previous?: T];\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, args?: any[]): void => {\r\n // eslint-disable-next-line prefer-spread\r\n const runFn = (fn: RunEachItem) => fn && fn.apply(undefined, args || []);\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 * 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 * 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 * @returns A function which removes the added class name(s).\r\n */\r\nexport const addClass = (\r\n elm: Element | false | null | undefined,\r\n className: string\r\n): (() => void) => {\r\n classListAction(elm, className, (classList, clazz) => classList.add(clazz));\r\n return removeClass.bind(0, elm, className);\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","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 { style } from 'support/dom/style';\r\n\r\nexport 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 fractional- 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 fractional- width and height shall be returned.\r\n */\r\nexport const fractionalSize = (elm: HTMLElement | null | undefined): WH => {\r\n const cssHeight = parseFloat(style(elm, 'height')) || 0;\r\n const cssWidth = parseFloat(style(elm, 'height')) || 0;\r\n return {\r\n w: cssWidth - Math.round(cssWidth),\r\n h: cssHeight - Math.round(cssHeight),\r\n };\r\n};\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 { 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","import { isArray } from 'support/utils/types';\r\nimport { keys } from 'support/utils/object';\r\nimport { each, from } from 'support/utils/array';\r\n\r\nexport type EventListener<\r\n NameArgsMap extends Record,\r\n Name extends Extract = Extract\r\n> = (...args: NameArgsMap[Name] extends undefined ? [] : [args: NameArgsMap[Name]]) => void;\r\n\r\nexport type EventListenerGroup<\r\n NameArgsMap extends Record,\r\n Name extends Extract = Extract\r\n> = EventListener | EventListener[];\r\n\r\nexport type AddEventListener> = <\r\n Name extends Extract\r\n>(\r\n name: Name,\r\n listener: EventListenerGroup\r\n) => () => void;\r\n\r\nexport type RemoveEventListener> = <\r\n Name extends Extract\r\n>(\r\n name?: Name,\r\n listener?: EventListenerGroup\r\n) => void;\r\n\r\nexport type TriggerEventListener> = <\r\n Name extends Extract\r\n>(\r\n name: Name,\r\n ...args: NameArgsMap[Name] extends undefined ? [] : [args: NameArgsMap[Name]]\r\n) => void;\r\n\r\nexport type InitialEventListeners> = {\r\n [K in Extract]?: EventListenerGroup;\r\n};\r\n\r\nconst manageListener = >(\r\n callback: (listener?: EventListener) => void,\r\n listener?: EventListener | EventListener[]\r\n) => {\r\n each(isArray(listener) ? listener : [listener], callback);\r\n};\r\n\r\nexport const createEventListenerHub = >(\r\n initialEventListeners?: InitialEventListeners\r\n): [\r\n AddEventListener,\r\n RemoveEventListener,\r\n TriggerEventListener\r\n] => {\r\n const events = new Map, Set>>();\r\n const removeEvent: RemoveEventListener = (name?, listener?) => {\r\n if (name) {\r\n const eventSet = events.get(name);\r\n manageListener((currListener) => {\r\n if (eventSet) {\r\n eventSet[currListener ? 'delete' : 'clear'](currListener!);\r\n }\r\n }, listener as EventListenerGroup | undefined);\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 currListener && eventSet.add(currListener);\r\n }, listener as EventListenerGroup);\r\n\r\n return removeEvent.bind(0, name as any, listener as EventListenerGroup);\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 as (args: NameArgsMap[Extract]) => void)(args as any);\r\n } else {\r\n (event as () => void)();\r\n }\r\n });\r\n };\r\n\r\n const initialListenerKeys = keys(initialEventListeners) as Extract[];\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 { assignDeep, hasOwnProperty } from 'support';\r\nimport type { OSOptions, ReadonlyOSOptions } from 'options';\r\nimport type { PartialOptions } from 'typings';\r\n\r\nexport type SetupElements> = [elements: T, destroy: () => void];\r\n\r\nexport type SetupUpdate = (\r\n changedOptions: PartialOptions,\r\n force?: boolean\r\n) => T;\r\n\r\nexport type SetupUpdateCheckOption = (path: string) => [value: T, changed: boolean];\r\n\r\nexport type SetupUpdateSegment> = (\r\n updateHints: Hints,\r\n checkOption: SetupUpdateCheckOption,\r\n force: boolean\r\n) => Partial | void;\r\n\r\nexport type SetupState> = [\r\n get: () => T,\r\n set: (newState: Partial) => void\r\n];\r\n\r\nexport type Setup = Record> = [\r\n update: SetupUpdate,\r\n state: (() => DynamicState) & StaticState,\r\n destroy: () => 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\nexport const createOptionCheck =\r\n (\r\n options: ReadonlyOSOptions,\r\n changedOptions: PartialOptions,\r\n force?: boolean\r\n ): SetupUpdateCheckOption =>\r\n (path: string) =>\r\n [getPropByPath(options, path), force || getPropByPath(changedOptions, path) !== undefined];\r\n\r\nexport const createState = (initialState: S): SetupState => {\r\n let state: S = initialState;\r\n return [\r\n () => state,\r\n (newState: Partial) => {\r\n state = assignDeep({}, state, newState);\r\n },\r\n ];\r\n};\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","import { assignDeep, each, isObject, keys, isArray, hasOwnProperty, isFunction } from 'support';\r\nimport { PartialOptions, ReadonlyOptions } 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 type ReadonlyOSOptions = ReadonlyOptions;\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 fractionalSize,\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 createCache,\r\n equalXY,\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 StructureInitializationStrategyElementFn =\r\n | ((target: OSTargetElement) => HTMLElement | T)\r\n | T;\r\n\r\ntype ScrollbarsInitializationStrategyElementFn =\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 undefined (or the returned result is null or undefined), 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 StructureInitializationStrategyStaticElement = StructureInitializationStrategyElementFn<\r\n null | undefined\r\n>;\r\n\r\n/**\r\n * A Dynamic element is an element which CAN be generated.\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 StructureInitializationStrategyDynamicElement =\r\n StructureInitializationStrategyElementFn;\r\n\r\nexport interface StructureInitializationStrategy {\r\n _host: StructureInitializationStrategyStaticElement;\r\n _viewport: StructureInitializationStrategyStaticElement;\r\n _padding: StructureInitializationStrategyDynamicElement;\r\n _content: StructureInitializationStrategyDynamicElement;\r\n}\r\n\r\nexport interface ScrollbarsInitializationStrategy {\r\n /**\r\n * The scrollbars slot. If null or undefined (or the returned result is null or undefined), the initialization function is deciding the element, otherwise\r\n * the element returned by the function acts as the scrollbars slot.\r\n */\r\n _scrollbarsSlot: ScrollbarsInitializationStrategyElementFn;\r\n}\r\n\r\nexport interface InitializationStrategy\r\n extends StructureInitializationStrategy,\r\n ScrollbarsInitializationStrategy {}\r\n\r\nexport type DefaultInitializationStrategy = {\r\n [K in keyof InitializationStrategy]: Extract<\r\n InitializationStrategy[K],\r\n boolean | null | undefined\r\n >;\r\n};\r\n\r\nexport type OnEnvironmentChanged = (env: Environment) => void;\r\nexport interface Environment {\r\n readonly _nativeScrollbarSize: XY;\r\n readonly _nativeScrollbarIsOverlaid: XY;\r\n readonly _nativeScrollbarStyling: boolean;\r\n readonly _rtlScrollBehavior: { n: boolean; i: boolean };\r\n readonly _flexboxGlue: boolean;\r\n readonly _cssCustomProperties: boolean;\r\n readonly _defaultInitializationStrategy: DefaultInitializationStrategy;\r\n readonly _defaultDefaultOptions: OSOptions;\r\n _addListener(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}\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 = (\r\n body: HTMLElement,\r\n measureElm: HTMLElement,\r\n measureElmChild: HTMLElement\r\n): XY => {\r\n appendChildren(body, measureElm);\r\n\r\n const cSize = clientSize(measureElm);\r\n const oSize = offsetSize(measureElm);\r\n const fSize = fractionalSize(measureElmChild);\r\n\r\n return {\r\n x: oSize.h - cSize.h + fSize.h,\r\n y: oSize.w - cSize.w + fSize.w,\r\n };\r\n};\r\n\r\nconst getNativeScrollbarStyling = (testElm: HTMLElement): boolean => {\r\n let result = false;\r\n const revertClass = 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 revertClass();\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 const revertFbxGlue = 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 const revertFbxGlueMax = 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 revertFbxGlue();\r\n revertFbxGlueMax();\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\nconst getDefaultInitializationStrategy = (\r\n nativeScrollbarStyling: boolean\r\n): DefaultInitializationStrategy => ({\r\n _host: null,\r\n _viewport: null,\r\n _padding: !nativeScrollbarStyling,\r\n _content: false,\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 [updateNativeScrollbarSizeCache, getNativeScrollbarSizeCache] = createCache({\r\n _initialValue: getNativeScrollbarSize(body, envElm, envChildElm),\r\n _equal: equalXY,\r\n });\r\n const [nativeScrollbarSize] = getNativeScrollbarSizeCache();\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 initializationStrategy = getDefaultInitializationStrategy(nativeScrollbarStyling);\r\n const defaultDefaultOptions = assignDeep({}, 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) {\r\n onChangedListener.add(listener);\r\n return () => onChangedListener.delete(listener);\r\n },\r\n _getInitializationStrategy: assignDeep.bind(\r\n 0,\r\n {} as InitializationStrategy,\r\n initializationStrategy\r\n ),\r\n _setInitializationStrategy(newInitializationStrategy) {\r\n assignDeep(initializationStrategy, newInitializationStrategy);\r\n },\r\n _getDefaultOptions: assignDeep.bind(\r\n 0,\r\n {} as OSOptions,\r\n defaultDefaultOptions\r\n ),\r\n _setDefaultOptions(newDefaultOptions) {\r\n assignDeep(defaultDefaultOptions, newDefaultOptions);\r\n },\r\n _defaultInitializationStrategy: assignDeep({}, initializationStrategy),\r\n _defaultDefaultOptions: assignDeep({}, 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\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 [scrollbarSize, scrollbarSizeChanged] = updateNativeScrollbarSizeCache(\r\n getNativeScrollbarSize(body, envElm, envChildElm)\r\n );\r\n\r\n assignDeep(environmentInstance._nativeScrollbarSize, scrollbarSize); // keep the object same!\r\n removeElements(envElm);\r\n\r\n if (scrollbarSizeChanged) {\r\n runEach(onChangedListener);\r\n }\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 StructureInitializationStrategyStaticElement,\r\n StructureInitializationStrategyDynamicElement,\r\n} from 'environment';\r\nimport { OSTarget, OSTargetElement, StructureInitialization } from 'typings';\r\n\r\nexport type StructureSetupElements = [targetObj: StructureSetupElementsObj, destroy: () => void];\r\n\r\nexport interface StructureSetupElementsObj {\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 // ctx ----\r\n _isTextarea: boolean;\r\n _isBody: boolean;\r\n _htmlElm: HTMLHtmlElement;\r\n _bodyElm: HTMLBodyElement;\r\n _windowElm: Window;\r\n _documentElm: Document;\r\n _targetIsElm: boolean;\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: StructureInitializationStrategyStaticElement,\r\n elementClass: string\r\n): HTMLElement => {\r\n const result =\r\n initializationValue ||\r\n (isFunction(strategy) ? strategy(target) : (strategy as null | undefined));\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: StructureInitializationStrategyDynamicElement,\r\n elementClass: string\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 return result === true ? createDiv(elementClass) : result;\r\n};\r\n\r\nexport const createStructureSetupElements = (target: OSTarget): StructureSetupElements => {\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();\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 = targetElement!.ownerDocument;\r\n const bodyElm = ownerDocument.body as HTMLBodyElement;\r\n const wnd = ownerDocument.defaultView as Window;\r\n const evaluatedTargetObj: StructureSetupElementsObj = {\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 ),\r\n _content: dynamicCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.content,\r\n contentInitializationStrategy,\r\n classNameContent\r\n ),\r\n _viewportArrange: createUniqueViewportArrangeElement(),\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 [evaluatedTargetObj, runEach.bind(0, destroyFns)];\r\n};\r\n","import { style } from 'support';\r\nimport type { CreateStructureUpdateSegment } from 'setups/structureSetup/structureSetup.update';\r\n\r\n/**\r\n * Lifecycle with the responsibility to adjust the trinsic behavior of the content element.\r\n * @param structureUpdateHub\r\n * @returns\r\n */\r\nexport const createTrinsicUpdate: CreateStructureUpdateSegment = (\r\n structureSetupElements,\r\n state\r\n) => {\r\n const { _content } = structureSetupElements;\r\n const [getState] = state;\r\n\r\n return (updateHints) => {\r\n const { _heightIntrinsic } = getState();\r\n const { _heightIntrinsicChanged } = updateHints;\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, assignDeep } from 'support';\r\nimport { StyleObject } from 'typings';\r\nimport { getEnvironment } from 'environment';\r\nimport type { CreateStructureUpdateSegment } from 'setups/structureSetup/structureSetup.update';\r\n\r\n/**\r\n * Lifecycle with the responsibility to adjust the padding styling of the padding and viewport element.\r\n * @param structureUpdateHub\r\n * @returns\r\n */\r\nexport const createPaddingUpdate: CreateStructureUpdateSegment = (\r\n structureSetupElements,\r\n state\r\n) => {\r\n const [getState, setState] = state;\r\n const { _host, _padding, _viewport } = structureSetupElements;\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 { _directionIsRTL } = getState();\r\n const { _sizeChanged, _contentMutation, _directionChanged } = updateHints;\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 setState({\r\n _padding: padding,\r\n _paddingAbsolute: !paddingRelative,\r\n _viewportPaddingStyle: _padding\r\n ? viewportStyle\r\n : assignDeep({}, paddingStyle, viewportStyle),\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 fractionalSize,\r\n CacheValues,\r\n equalWH,\r\n addClass,\r\n removeClass,\r\n clientSize,\r\n noop,\r\n each,\r\n equalXY,\r\n} from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport { OverflowBehavior } from 'options';\r\nimport { StyleObject } from 'typings';\r\nimport { classNameViewportArrange, classNameViewportScrollbarStyling } from 'classnames';\r\nimport type { CreateStructureUpdateSegment } from 'setups/structureSetup/structureSetup.update';\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, 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 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 sizeFraction: WH\r\n) => {\r\n const condition = (raw: number) => (window.devicePixelRatio % 2 !== 0 ? raw > 1 : raw > 0);\r\n const amount = {\r\n w: max(0, viewportScrollSize.w - viewportClientSize.w - max(0, sizeFraction.w)),\r\n h: max(0, viewportScrollSize.h - viewportClientSize.h - max(0, sizeFraction.h)),\r\n };\r\n\r\n return {\r\n w: condition(amount.w) ? amount.w : 0,\r\n h: condition(amount.h) ? amount.h : 0,\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 structureUpdateHub\r\n * @returns\r\n */\r\nexport const createOverflowUpdate: CreateStructureUpdateSegment = (\r\n structureSetupElements,\r\n state\r\n) => {\r\n const [getState, setState] = state;\r\n const { _host, _viewport, _viewportArrange } = structureSetupElements;\r\n const {\r\n _nativeScrollbarSize,\r\n _flexboxGlue,\r\n _nativeScrollbarStyling,\r\n _nativeScrollbarIsOverlaid,\r\n } = getEnvironment();\r\n const doViewportArrange =\r\n !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);\r\n\r\n const [updateSizeFraction, getCurrentSizeFraction] = createCache>(\r\n whCacheOptions,\r\n fractionalSize.bind(0, _host)\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 { _paddingAbsolute, _padding } = getState();\r\n const { _overflowScroll, _scrollbarsHideOffset } = viewportOverflowState;\r\n const hostCssHeight = parseFloat(style(_host, 'height'));\r\n const hostClientSize = clientSize(_host);\r\n // const hostOffsetSize = offsetSize(_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 = hostClientSize.h + (hostCssHeight - round(hostCssHeight));\r\n\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 { 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 sizeFraction: WH,\r\n directionIsRTL: boolean\r\n ) => {\r\n if (doViewportArrange) {\r\n const { _viewportPaddingStyle } = getState();\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 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 = viewportScrollSize.w + sizeFraction.w;\r\n const fractionalContenHeight = viewportScrollSize.h + sizeFraction.h;\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 } = getState();\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 } = getState();\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 (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\r\n removeClass(_viewport, classNameViewportArrange);\r\n\r\n if (!_flexboxGlue) {\r\n finalPaddingStyle.height = '';\r\n }\r\n\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 _sizeChanged,\r\n _hostMutation,\r\n _contentMutation,\r\n _paddingStyleChanged,\r\n _heightIntrinsicChanged,\r\n _directionChanged,\r\n } = updateHints;\r\n const { _heightIntrinsic, _directionIsRTL } = getState();\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 sizeFractionCache: CacheValues> = getCurrentSizeFraction(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 _directionChanged ||\r\n showNativeOverlaidScrollbarsChanged\r\n ) {\r\n const [redoViewportArrange, undoViewportArrangeOverflowState] = undoViewportArrange(\r\n showNativeOverlaidScrollbars,\r\n _directionIsRTL,\r\n preMeasureViewportOverflowState\r\n );\r\n const [sizeFraction, sizeFractionChanged] = (sizeFractionCache = updateSizeFraction(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 || sizeFractionChanged || showNativeOverlaidScrollbarsChanged) &&\r\n undoViewportArrangeOverflowState &&\r\n !showNativeOverlaidScrollbars &&\r\n arrangeViewport(\r\n undoViewportArrangeOverflowState,\r\n viewportScrollSize,\r\n sizeFraction,\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 sizeFraction\r\n ),\r\n force\r\n );\r\n }\r\n\r\n const [sizeFraction, sizeFractionChanged] = sizeFractionCache;\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 _directionChanged ||\r\n sizeFractionChanged ||\r\n viewportScrollSizeChanged ||\r\n overflowAmountChanged ||\r\n overflowChanged ||\r\n showNativeOverlaidScrollbarsChanged ||\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 sizeFraction,\r\n _directionIsRTL\r\n );\r\n const [overflowScroll, overflowScrollChanged] = updateOverflowScrollCache(\r\n viewportOverflowState._overflowScroll\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 setState({\r\n _viewportOverflowScroll: overflowScroll,\r\n _viewportOverflowAmount: overflowAmount,\r\n });\r\n\r\n return {\r\n _overflowAmountChanged: overflowAmountChanged,\r\n _overflowScrollChanged: overflowScrollChanged,\r\n };\r\n }\r\n };\r\n};\r\n","import {\r\n CacheValues,\r\n each,\r\n isNumber,\r\n scrollLeft,\r\n scrollTop,\r\n assignDeep,\r\n keys,\r\n isBoolean,\r\n isUndefined,\r\n} from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport {\r\n createTrinsicUpdate,\r\n createPaddingUpdate,\r\n createOverflowUpdate,\r\n} from 'setups/structureSetup/updateSegments';\r\nimport type { SetupState, SetupUpdateSegment, SetupUpdateCheckOption } from 'setups';\r\nimport type { StructureSetupState } from 'setups/structureSetup';\r\nimport type { StructureSetupElementsObj } from 'setups/structureSetup/structureSetup.elements';\r\n\r\nexport type CreateStructureUpdateSegment = (\r\n structureSetupElements: StructureSetupElementsObj,\r\n state: SetupState\r\n) => StructureSetupUpdateSegment;\r\n\r\nexport type StructureSetupUpdateSegment = SetupUpdateSegment;\r\n\r\nexport type StructureSetupUpdate = (\r\n checkOption: SetupUpdateCheckOption,\r\n updateHints: Partial,\r\n force?: boolean\r\n) => StructureSetupUpdateHints;\r\n\r\nexport interface StructureSetupUpdateHints {\r\n _sizeChanged: boolean;\r\n _hostMutation: boolean;\r\n _contentMutation: boolean;\r\n _paddingStyleChanged: boolean;\r\n _directionChanged: boolean;\r\n _heightIntrinsicChanged: boolean;\r\n _overflowScrollChanged: boolean;\r\n _overflowAmountChanged: boolean;\r\n}\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\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, force);\r\n });\r\n\r\n return result as Required;\r\n};\r\n\r\nexport const createStructureSetupUpdate = (\r\n structureSetupElements: StructureSetupElementsObj,\r\n state: SetupState\r\n): StructureSetupUpdate => {\r\n const { _viewport } = structureSetupElements;\r\n const { _nativeScrollbarStyling, _nativeScrollbarIsOverlaid, _flexboxGlue } = getEnvironment();\r\n const doViewportArrange =\r\n !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);\r\n\r\n const updateSegments: StructureSetupUpdateSegment[] = [\r\n createTrinsicUpdate(structureSetupElements, state),\r\n createPaddingUpdate(structureSetupElements, state),\r\n createOverflowUpdate(structureSetupElements, state),\r\n ];\r\n\r\n return (\r\n checkOption: SetupUpdateCheckOption,\r\n updateHints: 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 _directionChanged: false,\r\n _heightIntrinsicChanged: false,\r\n _overflowScrollChanged: false,\r\n _overflowAmountChanged: false,\r\n },\r\n Object.keys(updateHints).reduce((acc, key) => {\r\n if (!isUndefined(updateHints[key])) {\r\n acc[key] = updateHints[key];\r\n }\r\n return acc;\r\n }, {})\r\n ),\r\n {},\r\n force\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 let adaptivedUpdateHints: Required = initialUpdateHints;\r\n each(updateSegments, (updateSegment) => {\r\n adaptivedUpdateHints = prepareUpdateHints(\r\n adaptivedUpdateHints,\r\n updateSegment(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 return adaptivedUpdateHints;\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 type DOMObserver = [destroy: () => void, update: () => void];\r\n\r\ntype EventContentChangeUpdateElement = (getElements?: (selector: string) => Node[]) => void;\r\ntype EventContentChange = [destroy: () => void, updateElements: EventContentChangeUpdateElement];\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): EventContentChange => {\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: EventContentChangeUpdateElement = (getElements?) => {\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 [destroy, updateElements];\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 [destroyEventContentChange, updateEventContentChangeElements] = 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 () => {\r\n if (isConnected) {\r\n destroyEventContentChange();\r\n mutationObserver.disconnect();\r\n isConnected = false;\r\n }\r\n },\r\n () => {\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 type { SetupState, SetupUpdateCheckOption } from 'setups';\r\nimport type { StructureSetupState } from 'setups/structureSetup';\r\nimport type { StructureSetupElementsObj } from 'setups/structureSetup/structureSetup.elements';\r\nimport type {\r\n StructureSetupUpdate,\r\n StructureSetupUpdateHints,\r\n} from 'setups/structureSetup/structureSetup.update';\r\n\r\nexport type StructureSetupObserversUpdate = (checkOption: SetupUpdateCheckOption) => void;\r\n\r\nexport type StructureSetupObservers = [\r\n updateObserverOptions: StructureSetupObserversUpdate,\r\n destroy: () => void\r\n];\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\ntype ExcludeFromTuple = T extends [infer F, ...infer R]\r\n ? [F] extends [E]\r\n ? ExcludeFromTuple\r\n : [F, ...ExcludeFromTuple]\r\n : [];\r\n\r\nexport const createStructureSetupObservers = (\r\n structureSetupElements: StructureSetupElementsObj,\r\n state: SetupState,\r\n structureSetupUpdate: (\r\n ...args: ExcludeFromTuple, Parameters[0]>\r\n ) => any\r\n): StructureSetupObservers => {\r\n let debounceTimeout: number | false | undefined;\r\n let debounceMaxDelay: number | false | undefined;\r\n let contentMutationObserver: DOMObserver | undefined;\r\n const [, setState] = state;\r\n const { _host, _viewport, _content, _isTextarea } = structureSetupElements;\r\n const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment();\r\n const contentMutationObserverAttr = _isTextarea\r\n ? baseStyleChangingAttrsTextarea\r\n : baseStyleChangingAttrs.concat(baseStyleChangingAttrsTextarea);\r\n const structureSetupUpdateWithDebouncedAdaptiveUpdateHints = debounce(structureSetupUpdate, {\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 = (heightIntrinsicCache: CacheValues) => {\r\n const [heightIntrinsic, heightIntrinsicChanged] = heightIntrinsicCache;\r\n setState({ _heightIntrinsic: heightIntrinsic });\r\n structureSetupUpdate({ _heightIntrinsicChanged: heightIntrinsicChanged });\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 ? structureSetupUpdate\r\n : structureSetupUpdateWithDebouncedAdaptiveUpdateHints;\r\n\r\n let directionChanged = false;\r\n if (_directionIsRTLCache) {\r\n const [directionIsRTL, directionIsRTLChanged] = _directionIsRTLCache;\r\n directionChanged = directionIsRTLChanged;\r\n setState({ _directionIsRTL: directionIsRTL });\r\n }\r\n\r\n updateFn({ _sizeChanged, _directionChanged: directionChanged });\r\n };\r\n const onContentMutation = (contentChangedTroughEvent: boolean) => {\r\n // if contentChangedTroughEvent is true its already debounced\r\n const updateFn = contentChangedTroughEvent\r\n ? structureSetupUpdate\r\n : structureSetupUpdateWithDebouncedAdaptiveUpdateHints;\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 structureSetupUpdateWithDebouncedAdaptiveUpdateHints({\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 [destroyHostMutationObserver] = createDOMObserver(_host, false, onHostMutation, {\r\n _styleChangingAttributes: baseStyleChangingAttrs,\r\n _attributes: baseStyleChangingAttrs.concat(viewportAttrsFromTarget),\r\n _ignoreTargetChange: ignoreTargetChange,\r\n });\r\n\r\n updateViewportAttrsFromHost();\r\n\r\n return [\r\n (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[1](); // update\r\n contentMutationObserver[0](); // destroy\r\n }\r\n contentMutationObserver = createDOMObserver(\r\n _content || _viewport,\r\n true,\r\n onContentMutation,\r\n {\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\r\n if (debounceChanged) {\r\n structureSetupUpdateWithDebouncedAdaptiveUpdateHints._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 contentMutationObserver && contentMutationObserver[0](); // destroy\r\n destroyTrinsicObserver && destroyTrinsicObserver();\r\n destroySizeObserver();\r\n destroyHostMutationObserver();\r\n },\r\n ];\r\n};\r\n","import { runEach } from 'support';\r\nimport { createState, createOptionCheck } from 'setups/setups';\r\nimport { createStructureSetupElements } from 'setups/structureSetup/structureSetup.elements';\r\nimport { createStructureSetupUpdate } from 'setups/structureSetup/structureSetup.update';\r\nimport { createStructureSetupObservers } from 'setups/structureSetup/structureSetup.observers';\r\nimport type { StructureSetupUpdateHints } from 'setups/structureSetup/structureSetup.update';\r\nimport type { StructureSetupElementsObj } from 'setups/structureSetup/structureSetup.elements';\r\nimport type { TRBL, XY, WH } from 'support';\r\nimport type { OSOptions, ReadonlyOSOptions } from 'options';\r\nimport type { Setup } from 'setups';\r\nimport type { OSTarget, PartialOptions, StyleObject } from 'typings';\r\n\r\nexport interface StructureSetupState {\r\n _padding: TRBL;\r\n _paddingAbsolute: boolean;\r\n _viewportPaddingStyle: StyleObject;\r\n _viewportOverflowScroll: XY;\r\n _viewportOverflowAmount: WH;\r\n _heightIntrinsic: boolean;\r\n _directionIsRTL: boolean;\r\n}\r\n\r\nexport interface StructureSetupStaticState {\r\n _elements: StructureSetupElementsObj;\r\n _addOnUpdatedListener: (listener: OnUpdatedListener) => void;\r\n}\r\n\r\nexport type OnUpdatedListener = (\r\n updateHints: StructureSetupUpdateHints,\r\n changedOptions: PartialOptions,\r\n force: boolean\r\n) => void;\r\n\r\nconst initialStructureSetupUpdateState: StructureSetupState = {\r\n _padding: {\r\n t: 0,\r\n r: 0,\r\n b: 0,\r\n l: 0,\r\n },\r\n _paddingAbsolute: false,\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 _viewportOverflowAmount: {\r\n w: 0,\r\n h: 0,\r\n },\r\n _viewportOverflowScroll: {\r\n x: false,\r\n y: false,\r\n },\r\n _heightIntrinsic: false,\r\n _directionIsRTL: false,\r\n};\r\n\r\nexport const createStructureSetup = (\r\n target: OSTarget,\r\n options: ReadonlyOSOptions\r\n): Setup => {\r\n const checkOptionsFallback = createOptionCheck(options, {});\r\n const state = createState(initialStructureSetupUpdateState);\r\n const onUpdatedListeners = new Set();\r\n const [getUpdateState] = state;\r\n\r\n const runOnUpdatedListeners = (\r\n updateHints: StructureSetupUpdateHints,\r\n changedOptions?: PartialOptions,\r\n force?: boolean\r\n ) => {\r\n runEach(onUpdatedListeners, [updateHints, changedOptions || {}, !!force]);\r\n };\r\n\r\n const [elements, destroyElements] = createStructureSetupElements(target);\r\n const updateStructure = createStructureSetupUpdate(elements, state);\r\n const [updateObservers, destroyObservers] = createStructureSetupObservers(\r\n elements,\r\n state,\r\n (updateHints) => {\r\n runOnUpdatedListeners(updateStructure(checkOptionsFallback, updateHints));\r\n }\r\n );\r\n\r\n const structureSetupState = getUpdateState.bind(0) as (() => StructureSetupState) &\r\n StructureSetupStaticState;\r\n structureSetupState._addOnUpdatedListener = (listener) => {\r\n onUpdatedListeners.add(listener);\r\n };\r\n structureSetupState._elements = elements;\r\n\r\n return [\r\n (changedOptions, force?) => {\r\n const checkOption = createOptionCheck(options, changedOptions, force);\r\n updateObservers(checkOption);\r\n runOnUpdatedListeners(updateStructure(checkOption, {}, force));\r\n },\r\n structureSetupState,\r\n () => {\r\n onUpdatedListeners.clear();\r\n destroyObservers();\r\n destroyElements();\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 type { StructureSetupElementsObj } from 'setups/structureSetup/structureSetup.elements';\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 ScrollbarsSetupElementsObj {\r\n _horizontalScrollbarStructure: ScrollbarStructure;\r\n _verticalScrollbarStructure: ScrollbarStructure;\r\n}\r\n\r\nexport type ScrollbarsSetupElements = [elements: ScrollbarsSetupElementsObj, destroy: () => void];\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 createScrollbarsSetupElements = (\r\n target: OSTarget,\r\n structureSetupElements: StructureSetupElementsObj\r\n): ScrollbarsSetupElements => {\r\n const { _getInitializationStrategy } = getEnvironment();\r\n const { _scrollbarsSlot: environmentScrollbarSlot } =\r\n _getInitializationStrategy() as ScrollbarsInitializationStrategy;\r\n const { _target, _host, _viewport, _targetIsElm } = structureSetupElements;\r\n const initializationScrollbarSlot =\r\n !_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)\r\n ? environmentScrollbarSlot(_target, _host, _viewport)\r\n : 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 {\r\n _horizontalScrollbarStructure: horizontalScrollbarStructure,\r\n _verticalScrollbarStructure: verticalScrollbarStructure,\r\n },\r\n removeElements.bind(0, [horizontalScrollbar, verticalScrollbar]),\r\n ];\r\n};\r\n","import { createState, createOptionCheck } from 'setups/setups';\r\nimport {\r\n createScrollbarsSetupElements,\r\n ScrollbarsSetupElementsObj,\r\n} from 'setups/scrollbarsSetup/scrollbarsSetup.elements';\r\nimport type { StructureSetupElementsObj } from 'setups/structureSetup/structureSetup.elements';\r\nimport type { ReadonlyOSOptions } from 'options';\r\nimport type { Setup } from 'setups';\r\nimport type { OSTarget } from 'typings';\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\r\nexport interface ScrollbarsSetupState {}\r\n\r\nexport interface ScrollbarsSetupStaticState {\r\n _elements: ScrollbarsSetupElementsObj;\r\n}\r\n\r\nexport const createScrollbarsSetup = (\r\n target: OSTarget,\r\n options: ReadonlyOSOptions,\r\n structureSetupElements: StructureSetupElementsObj\r\n): Setup => {\r\n const state = createState({});\r\n const [getState] = state;\r\n\r\n const [elements, destroyElements] = createScrollbarsSetupElements(target, structureSetupElements);\r\n\r\n const scrollbarsSetupState = getState.bind(0) as (() => ScrollbarsSetupState) &\r\n ScrollbarsSetupStaticState;\r\n scrollbarsSetupState._elements = elements;\r\n\r\n return [\r\n (changedOptions, force?) => {\r\n const checkOption = createOptionCheck(options, changedOptions, force);\r\n // eslint-disable-next-line no-console\r\n console.log(checkOption);\r\n },\r\n scrollbarsSetupState,\r\n () => {\r\n destroyElements();\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","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 { 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 { createEventListenerHub, XY } from 'support';\r\nimport { PartialOptions } from 'typings';\r\nimport type {\r\n InitialEventListeners,\r\n AddEventListener,\r\n RemoveEventListener,\r\n TriggerEventListener,\r\n EventListener,\r\n} from 'support/eventListeners';\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 OSEventListenersNameArgsMap {\r\n initialized: undefined;\r\n initializationWithdrawn: undefined;\r\n overflowChanged: OnOverflowChangedEventListenerArgs;\r\n updated: OnUpdatedEventListenerArgs;\r\n destroyed: undefined;\r\n}\r\n\r\nexport type OSEventListener<\r\n N extends Extract = Extract<\r\n keyof OSEventListenersNameArgsMap,\r\n string\r\n >\r\n> = EventListener;\r\n\r\nexport type AddOSEventListener = AddEventListener;\r\n\r\nexport type RemoveOSEventListener = RemoveEventListener;\r\n\r\nexport type TriggerOSEventListener = TriggerEventListener;\r\n\r\nexport type InitialOSEventListeners = InitialEventListeners;\r\n\r\nexport const createOSEventListenerHub = (initialEventListeners?: InitialOSEventListeners) =>\r\n createEventListenerHub(initialEventListeners);\r\n","import { OSTarget, OSInitializationObject, PartialOptions } from 'typings';\r\nimport { assignDeep, isEmptyObject, each, isFunction, keys, isHTMLElement, WH, XY } from 'support';\r\nimport { createStructureSetup, createScrollbarsSetup } from 'setups';\r\nimport { getOptionsDiff, OSOptions, ReadonlyOSOptions } 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 createOSEventListenerHub,\r\n InitialOSEventListeners,\r\n AddOSEventListener,\r\n RemoveOSEventListener,\r\n} from 'eventListeners';\r\n\r\nexport interface OverlayScrollbarsStatic {\r\n (\r\n target: OSTarget | OSInitializationObject,\r\n options?: PartialOptions,\r\n eventListeners?: InitialOSEventListeners\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: AddOSEventListener;\r\n off: RemoveOSEventListener;\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 OverlayScrollbars: OverlayScrollbarsStatic = (\r\n target,\r\n options?,\r\n eventListeners?\r\n): OverlayScrollbars => {\r\n const {\r\n _getDefaultOptions,\r\n _nativeScrollbarIsOverlaid,\r\n _addListener: addEnvListener,\r\n } = 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: ReadonlyOSOptions = assignDeep(\r\n {},\r\n _getDefaultOptions(),\r\n validateOptions(options)\r\n );\r\n const [addEvent, removeEvent, triggerEvent] = createOSEventListenerHub(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');\r\n }\r\n\r\n const [updateStructure, structureState, destroyStructure] = createStructureSetup(\r\n target,\r\n currentOptions\r\n );\r\n const [updateScrollbars, , destroyScrollbars] = createScrollbarsSetup(\r\n target,\r\n currentOptions,\r\n structureState._elements\r\n );\r\n\r\n const update = (changedOptions: PartialOptions, force?: boolean) => {\r\n updateStructure(changedOptions, force);\r\n updateScrollbars(changedOptions, force);\r\n };\r\n\r\n structureState._addOnUpdatedListener((updateHints, changedOptions, force) => {\r\n const {\r\n _sizeChanged,\r\n _contentMutation,\r\n _hostMutation,\r\n _directionChanged,\r\n _heightIntrinsicChanged,\r\n _overflowAmountChanged,\r\n _overflowScrollChanged,\r\n } = updateHints;\r\n const { _viewportOverflowAmount, _viewportOverflowScroll } = structureState();\r\n\r\n if (_overflowAmountChanged || _overflowScrollChanged) {\r\n triggerEvent(\r\n 'overflowChanged',\r\n assignDeep(\r\n {},\r\n createOverflowChangedArgs(_viewportOverflowAmount, _viewportOverflowScroll),\r\n {\r\n previous: createOverflowChangedArgs(_viewportOverflowAmount!, _viewportOverflowScroll!),\r\n }\r\n )\r\n );\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: _directionChanged,\r\n heightIntrinsicChanged: _heightIntrinsicChanged,\r\n },\r\n changedOptions,\r\n force,\r\n });\r\n });\r\n\r\n const removeEnvListener = addEnvListener(update.bind(0, {}, true));\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 update(changedOptions);\r\n }\r\n }\r\n return currentOptions;\r\n },\r\n on: addEvent,\r\n off: removeEvent,\r\n state: () => ({\r\n _overflowAmount: structureState()._viewportOverflowAmount,\r\n }),\r\n update(force?: boolean) {\r\n update({}, force);\r\n },\r\n destroy: () => {\r\n removeInstance(instanceTarget);\r\n removeEnvListener();\r\n removeEvent();\r\n\r\n destroyScrollbars();\r\n destroyStructure();\r\n\r\n triggerEvent('destroyed');\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');\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","args","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","removeClass","remove","addClass","add","bind","diffClass","classNameA","classNameB","classNameASplit","split","classNameBSplit","tempObj","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","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","zeroObj","w","h","windowSize","innerWidth","innerHeight","offsetSize","offsetWidth","offsetHeight","clientSize","clientWidth","clientHeight","scrollSize","scrollWidth","scrollHeight","fractionalSize","cssHeight","cssWidth","getBoundingClientRect","passiveEventsSupport","supportPassiveEvents","addEventListener","defineProperty","get","splitEventNames","eventNames","off","listener","capture","eventName","removeEventListener","on","doSupportPassiveEvents","passive","_passive","_capture","once","_once","offListeners","nativeOptions","finalListener","evt","stopPropagation","preventDefault","stopAndPrevent","x","y","absoluteCoordinates","rect","pageYOffset","pageXOffset","manageListener","createEventListenerHub","initialEventListeners","events","Map","removeEvent","eventSet","currListener","clear","addEvent","set","triggerEvent","event","initialListenerKeys","getPropByPath","path","o","createOptionCheck","changedOptions","createState","initialState","state","newState","classNameEnvironment","classNameEnvironmentFlexboxGlue","classNameEnvironmentFlexboxGlueMax","classNameHost","classNamePadding","classNameViewport","classNameViewportArrange","classNameContent","classNameViewportScrollbarStyling","classNameSizeObserver","classNameSizeObserverAppear","classNameSizeObserverListener","classNameSizeObserverListenerScroll","classNameSizeObserverListenerItem","classNameSizeObserverListenerItemFinal","classNameTrinsicObserver","classNameScrollbar","classNameScrollbarHorizontal","classNameScrollbarVertical","classNameScrollbarTrack","classNameScrollbarHandle","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","measureElmChild","cSize","oSize","fSize","getNativeScrollbarStyling","testElm","revertClass","ex","getRtlScrollBehavior","childElm","strHidden","overflowX","overflowY","direction","parentOffset","childOffset","childOffsetAfterScroll","n","getFlexboxGlue","revertFbxGlue","minOffsetsizeParent","minOffsetsize","supportsMin","revertFbxGlueMax","maxOffsetsizeParent","maxOffsetsize","supportsMax","getWindowDPR","dDPI","screen","deviceXDPI","sDPI","logicalXDPI","devicePixelRatio","getDefaultInitializationStrategy","nativeScrollbarStyling","_host","_viewport","_padding","_content","_scrollbarsSlot","createEnvironment","envDOM","envElm","envChildElm","onChangedListener","updateNativeScrollbarSizeCache","getNativeScrollbarSizeCache","nativeScrollbarSize","nativeScrollbarIsOverlaid","initializationStrategy","defaultDefaultOptions","env","_nativeScrollbarSize","_nativeScrollbarIsOverlaid","_nativeScrollbarStyling","_cssCustomProperties","_rtlScrollBehavior","_flexboxGlue","_addListener","delete","_getInitializationStrategy","_setInitializationStrategy","newInitializationStrategy","_getDefaultOptions","_setDefaultOptions","newDefaultOptions","_defaultInitializationStrategy","_defaultDefaultOptions","size","dpr","sizeNew","deltaSize","deltaAbsSize","deltaAbsRatio","dprNew","deltaIsBigger","difference","dprChanged","isZoom","scrollbarSize","scrollbarSizeChanged","getEnvironment","contentArrangeCounter","unwrap","createUniqueViewportArrangeElement","create","staticCreationFromStrategy","initializationValue","strategy","elementClass","dynamicCreationFromStrategy","takeInitializationValue","createStructureSetupElements","hostInitializationStrategy","viewportInitializationStrategy","paddingInitializationStrategy","contentInitializationStrategy","targetIsElm","targetStructureInitialization","targetElement","isTextarea","isBody","ownerDocument","bodyElm","wnd","defaultView","evaluatedTargetObj","_target","host","viewport","padding","content","_viewportArrange","_windowElm","_documentElm","_htmlElm","_bodyElm","_isTextarea","_isBody","_targetIsElm","generatedElements","elementIsGenerated","destroyFns","isTextareaHostGenerated","targetContents","contentSlot","createTrinsicUpdate","structureSetupElements","getState","updateHints","_heightIntrinsic","_heightIntrinsicChanged","height","display","_sizeChanged","_contentMutation","createPaddingUpdate","setState","updatePaddingCache","currentPaddingCache","checkOption","paddingChanged","_directionIsRTL","_directionChanged","paddingAbsoluteChanged","contentMutation","paddingStyleChanged","paddingRelative","paddingHorizontal","paddingVertical","paddingStyle","marginRight","marginBottom","marginLeft","width","viewportStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","_paddingAbsolute","_viewportPaddingStyle","_paddingStyleChanged","max","overlaidScrollbarsHideOffset","whCacheOptions","xyCacheOptions","setAxisOverflowStyle","horizontal","overflowAmount","behavior","styleObj","overflowKey","behaviorIsVisible","behaviorIsVisibleHidden","behaviorIsScroll","hasOverflow","_visible","_behavior","getOverflowAmount","viewportScrollSize","viewportClientSize","sizeFraction","condition","raw","amount","createOverflowUpdate","doViewportArrange","updateSizeFraction","getCurrentSizeFraction","updateViewportScrollSizeCache","getCurrentViewportScrollSizeCache","updateOverflowAmountCache","getCurrentOverflowAmountCache","updateOverflowScrollCache","fixFlexboxGlue","viewportOverflowState","heightIntrinsic","_overflowScroll","_scrollbarsHideOffset","hostCssHeight","hostClientSize","isContentBox","fractionalClientHeight","subtractXScrollbar","getViewportOverflowState","showNativeOverlaidScrollbars","viewportStyleObj","overlaidX","overlaidY","determineOverflow","arrangeHideOffset","scroll","nonScrollbarStylingHideOffset","scrollbarsHideOffset","_scrollbarsHideOffsetArrange","setViewportOverflowState","xVisible","xVisibleBehavior","yVisible","yVisibleBehavior","arrangeViewport","directionIsRTL","arrangeX","arrangeY","hideOffsetX","hideOffsetY","viewportArrangeHorizontalPaddingKey","viewportArrangeHorizontalPaddingValue","viewportArrangeVerticalPaddingValue","fractionalContentWidth","fractionalContenHeight","arrangeSize","sheet","cssRules","insertRule","ruleStyle","hideNativeScrollbars","viewportArrange","viewportPaddingStyle","horizontalMarginKey","viewportHorizontalPaddingKey","horizontalMarginValue","verticalMarginValue","horizontalPaddingValue","verticalPaddingValue","undoViewportArrange","finalViewportOverflowState","finalPaddingStyle","assignProps","prevStyle","_hostMutation","showNativeOverlaidScrollbarsOption","showNativeOverlaidScrollbarsChanged","adjustFlexboxGlue","sizeFractionCache","viewportScrollSizeCache","overflowAmuntCache","preMeasureViewportOverflowState","redoViewportArrange","undoViewportArrangeOverflowState","sizeFractionChanged","viewportScrollSizeChanged","viewportContentSize","arrangedViewportScrollSize","arrangedViewportClientSize","overflowAmountChanged","overflowChanged","viewportArranged","overflowScroll","overflowScrollChanged","_viewportOverflowScroll","_viewportOverflowAmount","_overflowAmountChanged","_overflowScrollChanged","applyForceToCache","cacheValues","prepareUpdateHints","leading","adaptive","finalAdaptive","objKeys","leadingValue","adaptiveValue","createStructureSetupUpdate","updateSegments","initialUpdateHints","acc","adjustScrollOffset","scrollOffsetX","scrollOffsetY","adaptivedUpdateHints","updateSegment","animationStartEventName","scrollEventName","scrollAmount","getElmDirectionIsRTL","domRectHasDimensions","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","_directionIsRTLCache","appearCallback","directionIsRTLCache","resizeObserverInstance","observe","disconnect","observerElementChildren","observerElementChildrenRoot","shrinkElement","lastChild","expandElement","expandElementChild","cacheSize","currSize","isDirty","rAFId","reset","onResized","onScroll","scrollEvent","updateDirectionIsRTLCache","directionIsRTLCacheValues","directionIsRTLChanged","isHeightIntrinsic","ioEntryOrSize","isIntersecting","intersectionRatio","createTrinsicObserver","onTrinsicChangedCallback","trinsicObserver","updateHeightIntrinsicCache","triggerOnTrinsicChangedCallback","updateValue","heightIntrinsicChanged","intersectionObserverInstance","entries","root","onSizeChanged","newSize","createEventContentChange","eventContentChange","map","destroyed","destroy","updateElements","getElements","eventElmList","elements","entry","entryEventNames","entryOff","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","takeRecords","ignorePrefix","viewportAttrsFromTarget","baseStyleChangingAttrsTextarea","baseStyleChangingAttrs","addedOrRemovedClass","createStructureSetupObservers","structureSetupUpdate","debounceTimeout","debounceMaxDelay","contentMutationObserver","contentMutationObserverAttr","structureSetupUpdateWithDebouncedAdaptiveUpdateHints","prev","prevSizeChanged","prevHostMutation","prevContentMutation","currSizeChanged","currvHostMutation","currContentMutation","merged","updateViewportAttrsFromHost","attribute","hostAttr","onTrinsicChanged","heightIntrinsicCache","updateFn","directionChanged","onContentMutation","contentChangedTroughEvent","onHostMutation","destroyTrinsicObserver","destroySizeObserver","destroyHostMutationObserver","elementEventsChanged","attributesChanged","debounceValue","debounceChanged","updateContentMutationObserver","timeout","maxWait","initialStructureSetupUpdateState","createStructureSetup","checkOptionsFallback","onUpdatedListeners","getUpdateState","runOnUpdatedListeners","destroyElements","updateStructure","updateObservers","destroyObservers","structureSetupState","_addOnUpdatedListener","_elements","generateScrollbarDOM","scrollbarClassName","scrollbar","track","handle","_scrollbar","_track","_handle","createScrollbarsSetupElements","environmentScrollbarSlot","initializationScrollbarSlot","scrollbarsSlot","initializationScrollbarSlotResult","evaluatedScrollbarSlot","horizontalScrollbarStructure","verticalScrollbarStructure","horizontalScrollbar","verticalScrollbar","_horizontalScrollbarStructure","_verticalScrollbarStructure","createScrollbarsSetup","scrollbarsSetupState","console","log","pluginRegistry","getPlugins","addPlugin","addedPlugin","plugin","_extends","module","assign","exports","__esModule","templateTypePrefixSuffix","optionsTemplateTypes","numberAllowedValues","oTypes","number","booleanAllowedValues","boolean","arrayNullValues","null","stringArrayNullAllowedValues","string","resizeAllowedValues","overflowAllowedValues","scrollbarsVisibilityAllowedValues","scrollbarsAutoHideAllowedValues","function","optionsValidationPluginName","targets","targetInstanceMap","addInstance","osInstance","removeInstance","getInstance","createOSEventListenerHub","createOverflowChangedArgs","scrollableOverflow","OverlayScrollbars","eventListeners","addEnvListener","plugins","instanceTarget","potentialInstance","optionsValidationPlugin","validateOptions","opts","validate","currentOptions","structureState","destroyStructure","updateScrollbars","destroyScrollbars","previous","sizeChanged","hostMutation","removeEnvListener","instance","_overflowAmount","pluginName","pluginInstance","extend"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"overlayscrollbars.js","sources":["../src/support/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/utils/equal.ts","../src/support/utils/function.ts","../src/support/dom/style.ts","../src/support/dom/dimensions.ts","../src/support/dom/events.ts","../src/support/dom/offset.ts","../src/support/eventListeners.ts","../src/setups/setups.ts","../src/classnames.ts","../src/options.ts","../src/environment.ts","../src/setups/structureSetup/structureSetup.elements.ts","../src/setups/structureSetup/updateSegments/trinsicUpdateSegment.ts","../src/setups/structureSetup/updateSegments/paddingUpdateSegment.ts","../src/setups/structureSetup/updateSegments/overflowUpdateSegment.ts","../src/setups/structureSetup/structureSetup.update.ts","../src/observers/sizeObserver.ts","../src/observers/trinsicObserver.ts","../src/observers/domObserver.ts","../src/setups/structureSetup/structureSetup.observers.ts","../src/setups/structureSetup/structureSetup.ts","../src/setups/scrollbarsSetup/scrollbarsSetup.elements.ts","../src/setups/scrollbarsSetup/scrollbarsSetup.ts","../src/plugins/plugins.ts","../../../node_modules/@babel/runtime/helpers/extends.js","../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 = [value: T, changed: boolean, previous?: T];\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, args?: any[]): void => {\r\n // eslint-disable-next-line prefer-spread\r\n const runFn = (fn: RunEachItem) => fn && fn.apply(undefined, args || []);\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 * 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 * 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 * @returns A function which removes the added class name(s).\r\n */\r\nexport const addClass = (\r\n elm: Element | false | null | undefined,\r\n className: string\r\n): (() => void) => {\r\n classListAction(elm, className, (classList, clazz) => classList.add(clazz));\r\n return removeClass.bind(0, elm, className);\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","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 { style } from 'support/dom/style';\r\n\r\nexport 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 fractional- 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 fractional- width and height shall be returned.\r\n */\r\nexport const fractionalSize = (elm: HTMLElement | null | undefined): WH => {\r\n const cssHeight = parseFloat(style(elm, 'height')) || 0;\r\n const cssWidth = parseFloat(style(elm, 'height')) || 0;\r\n return {\r\n w: cssWidth - Math.round(cssWidth),\r\n h: cssHeight - Math.round(cssHeight),\r\n };\r\n};\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 { 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","import { isArray } from 'support/utils/types';\r\nimport { keys } from 'support/utils/object';\r\nimport { each, from } from 'support/utils/array';\r\n\r\nexport type EventListener<\r\n NameArgsMap extends Record,\r\n Name extends Extract = Extract\r\n> = (...args: NameArgsMap[Name] extends undefined ? [] : [args: NameArgsMap[Name]]) => void;\r\n\r\nexport type EventListenerGroup<\r\n NameArgsMap extends Record,\r\n Name extends Extract = Extract\r\n> = EventListener | EventListener[];\r\n\r\nexport type AddEventListener> = <\r\n Name extends Extract\r\n>(\r\n name: Name,\r\n listener: EventListenerGroup\r\n) => () => void;\r\n\r\nexport type RemoveEventListener> = <\r\n Name extends Extract\r\n>(\r\n name?: Name,\r\n listener?: EventListenerGroup\r\n) => void;\r\n\r\nexport type TriggerEventListener> = <\r\n Name extends Extract\r\n>(\r\n name: Name,\r\n ...args: NameArgsMap[Name] extends undefined ? [] : [args: NameArgsMap[Name]]\r\n) => void;\r\n\r\nexport type InitialEventListeners> = {\r\n [K in Extract]?: EventListenerGroup;\r\n};\r\n\r\nconst manageListener = >(\r\n callback: (listener?: EventListener) => void,\r\n listener?: EventListener | EventListener[]\r\n) => {\r\n each(isArray(listener) ? listener : [listener], callback);\r\n};\r\n\r\nexport const createEventListenerHub = >(\r\n initialEventListeners?: InitialEventListeners\r\n): [\r\n AddEventListener,\r\n RemoveEventListener,\r\n TriggerEventListener\r\n] => {\r\n const events = new Map, Set>>();\r\n const removeEvent: RemoveEventListener = (name?, listener?) => {\r\n if (name) {\r\n const eventSet = events.get(name);\r\n manageListener((currListener) => {\r\n if (eventSet) {\r\n eventSet[currListener ? 'delete' : 'clear'](currListener!);\r\n }\r\n }, listener as EventListenerGroup | undefined);\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 currListener && eventSet.add(currListener);\r\n }, listener as EventListenerGroup);\r\n\r\n return removeEvent.bind(0, name as any, listener as EventListenerGroup);\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 as (args: NameArgsMap[Extract]) => void)(args as any);\r\n } else {\r\n (event as () => void)();\r\n }\r\n });\r\n };\r\n\r\n const initialListenerKeys = keys(initialEventListeners) as Extract[];\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 { assignDeep, hasOwnProperty } from 'support';\r\nimport type { OSOptions, ReadonlyOSOptions } from 'options';\r\nimport type { PartialOptions } from 'typings';\r\n\r\nexport type SetupElements> = [elements: T, destroy: () => void];\r\n\r\nexport type SetupUpdate = (\r\n changedOptions: PartialOptions,\r\n force?: boolean\r\n) => T;\r\n\r\nexport type SetupUpdateCheckOption = (path: string) => [value: T, changed: boolean];\r\n\r\nexport type SetupUpdateSegment> = (\r\n updateHints: Hints,\r\n checkOption: SetupUpdateCheckOption,\r\n force: boolean\r\n) => Partial | void;\r\n\r\nexport type SetupState> = [\r\n get: () => T,\r\n set: (newState: Partial) => void\r\n];\r\n\r\nexport type Setup = Record> = [\r\n update: SetupUpdate,\r\n state: (() => DynamicState) & StaticState,\r\n destroy: () => 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\nexport const createOptionCheck =\r\n (\r\n options: ReadonlyOSOptions,\r\n changedOptions: PartialOptions,\r\n force?: boolean\r\n ): SetupUpdateCheckOption =>\r\n (path: string) =>\r\n [getPropByPath(options, path), force || getPropByPath(changedOptions, path) !== undefined];\r\n\r\nexport const createState = (initialState: S): SetupState => {\r\n let state: S = initialState;\r\n return [\r\n () => state,\r\n (newState: Partial) => {\r\n state = assignDeep({}, state, newState);\r\n },\r\n ];\r\n};\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","import { assignDeep, each, isObject, keys, isArray, hasOwnProperty, isFunction } from 'support';\r\nimport { PartialOptions, ReadonlyOptions } 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 type ReadonlyOSOptions = ReadonlyOptions;\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 fractionalSize,\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 createCache,\r\n equalXY,\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 StructureInitializationStrategyElementFn =\r\n | ((target: OSTargetElement) => HTMLElement | T)\r\n | T;\r\n\r\ntype ScrollbarsInitializationStrategyElementFn =\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 undefined (or the returned result is null or undefined), 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 StructureInitializationStrategyStaticElement = StructureInitializationStrategyElementFn<\r\n null | undefined\r\n>;\r\n\r\n/**\r\n * A Dynamic element is an element which CAN be generated.\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 StructureInitializationStrategyDynamicElement =\r\n StructureInitializationStrategyElementFn;\r\n\r\nexport interface StructureInitializationStrategy {\r\n _host: StructureInitializationStrategyStaticElement;\r\n _viewport: StructureInitializationStrategyStaticElement;\r\n _padding: StructureInitializationStrategyDynamicElement;\r\n _content: StructureInitializationStrategyDynamicElement;\r\n}\r\n\r\nexport interface ScrollbarsInitializationStrategy {\r\n /**\r\n * The scrollbars slot. If null or undefined (or the returned result is null or undefined), the initialization function is deciding the element, otherwise\r\n * the element returned by the function acts as the scrollbars slot.\r\n */\r\n _scrollbarsSlot: ScrollbarsInitializationStrategyElementFn;\r\n}\r\n\r\nexport interface InitializationStrategy\r\n extends StructureInitializationStrategy,\r\n ScrollbarsInitializationStrategy {}\r\n\r\nexport type DefaultInitializationStrategy = {\r\n [K in keyof InitializationStrategy]: Extract<\r\n InitializationStrategy[K],\r\n boolean | null | undefined\r\n >;\r\n};\r\n\r\nexport type OnEnvironmentChanged = (env: Environment) => void;\r\nexport interface Environment {\r\n readonly _nativeScrollbarSize: XY;\r\n readonly _nativeScrollbarIsOverlaid: XY;\r\n readonly _nativeScrollbarStyling: boolean;\r\n readonly _rtlScrollBehavior: { n: boolean; i: boolean };\r\n readonly _flexboxGlue: boolean;\r\n readonly _cssCustomProperties: boolean;\r\n readonly _defaultInitializationStrategy: DefaultInitializationStrategy;\r\n readonly _defaultDefaultOptions: OSOptions;\r\n _addListener(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}\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 = (\r\n body: HTMLElement,\r\n measureElm: HTMLElement,\r\n measureElmChild: HTMLElement\r\n): XY => {\r\n appendChildren(body, measureElm);\r\n\r\n const cSize = clientSize(measureElm);\r\n const oSize = offsetSize(measureElm);\r\n const fSize = fractionalSize(measureElmChild);\r\n\r\n return {\r\n x: oSize.h - cSize.h + fSize.h,\r\n y: oSize.w - cSize.w + fSize.w,\r\n };\r\n};\r\n\r\nconst getNativeScrollbarStyling = (testElm: HTMLElement): boolean => {\r\n let result = false;\r\n const revertClass = 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 revertClass();\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 const revertFbxGlue = 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 const revertFbxGlueMax = 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 revertFbxGlue();\r\n revertFbxGlueMax();\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\nconst getDefaultInitializationStrategy = (\r\n nativeScrollbarStyling: boolean\r\n): DefaultInitializationStrategy => ({\r\n _host: null,\r\n _viewport: null,\r\n _padding: !nativeScrollbarStyling,\r\n _content: false,\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 [updateNativeScrollbarSizeCache, getNativeScrollbarSizeCache] = createCache({\r\n _initialValue: getNativeScrollbarSize(body, envElm, envChildElm),\r\n _equal: equalXY,\r\n });\r\n const [nativeScrollbarSize] = getNativeScrollbarSizeCache();\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 initializationStrategy = getDefaultInitializationStrategy(nativeScrollbarStyling);\r\n const defaultDefaultOptions = assignDeep({}, 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) {\r\n onChangedListener.add(listener);\r\n return () => onChangedListener.delete(listener);\r\n },\r\n _getInitializationStrategy: assignDeep.bind(\r\n 0,\r\n {} as InitializationStrategy,\r\n initializationStrategy\r\n ),\r\n _setInitializationStrategy(newInitializationStrategy) {\r\n assignDeep(initializationStrategy, newInitializationStrategy);\r\n },\r\n _getDefaultOptions: assignDeep.bind(\r\n 0,\r\n {} as OSOptions,\r\n defaultDefaultOptions\r\n ),\r\n _setDefaultOptions(newDefaultOptions) {\r\n assignDeep(defaultDefaultOptions, newDefaultOptions);\r\n },\r\n _defaultInitializationStrategy: assignDeep({}, initializationStrategy),\r\n _defaultDefaultOptions: assignDeep({}, 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\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 [scrollbarSize, scrollbarSizeChanged] = updateNativeScrollbarSizeCache(\r\n getNativeScrollbarSize(body, envElm, envChildElm)\r\n );\r\n\r\n assignDeep(environmentInstance._nativeScrollbarSize, scrollbarSize); // keep the object same!\r\n removeElements(envElm);\r\n\r\n if (scrollbarSizeChanged) {\r\n runEach(onChangedListener);\r\n }\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 StructureInitializationStrategyStaticElement,\r\n StructureInitializationStrategyDynamicElement,\r\n} from 'environment';\r\nimport { OSTarget, OSTargetElement, StructureInitialization } from 'typings';\r\n\r\nexport type StructureSetupElements = [targetObj: StructureSetupElementsObj, destroy: () => void];\r\n\r\nexport interface StructureSetupElementsObj {\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 // ctx ----\r\n _isTextarea: boolean;\r\n _isBody: boolean;\r\n _htmlElm: HTMLHtmlElement;\r\n _bodyElm: HTMLBodyElement;\r\n _windowElm: Window;\r\n _documentElm: Document;\r\n _targetIsElm: boolean;\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: StructureInitializationStrategyStaticElement,\r\n elementClass: string\r\n): HTMLElement => {\r\n const result =\r\n initializationValue ||\r\n (isFunction(strategy) ? strategy(target) : (strategy as null | undefined));\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: StructureInitializationStrategyDynamicElement,\r\n elementClass: string\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 return result === true ? createDiv(elementClass) : result;\r\n};\r\n\r\nexport const createStructureSetupElements = (target: OSTarget): StructureSetupElements => {\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();\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 = targetElement!.ownerDocument;\r\n const bodyElm = ownerDocument.body as HTMLBodyElement;\r\n const wnd = ownerDocument.defaultView as Window;\r\n const evaluatedTargetObj: StructureSetupElementsObj = {\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 ),\r\n _content: dynamicCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.content,\r\n contentInitializationStrategy,\r\n classNameContent\r\n ),\r\n _viewportArrange: createUniqueViewportArrangeElement(),\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 [evaluatedTargetObj, runEach.bind(0, destroyFns)];\r\n};\r\n","import { style } from 'support';\r\nimport type { CreateStructureUpdateSegment } from 'setups/structureSetup/structureSetup.update';\r\n\r\n/**\r\n * Lifecycle with the responsibility to adjust the trinsic behavior of the content element.\r\n * @param structureUpdateHub\r\n * @returns\r\n */\r\nexport const createTrinsicUpdate: CreateStructureUpdateSegment = (\r\n structureSetupElements,\r\n state\r\n) => {\r\n const { _content } = structureSetupElements;\r\n const [getState] = state;\r\n\r\n return (updateHints) => {\r\n const { _heightIntrinsic } = getState();\r\n const { _heightIntrinsicChanged } = updateHints;\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, assignDeep } from 'support';\r\nimport { StyleObject } from 'typings';\r\nimport { getEnvironment } from 'environment';\r\nimport type { CreateStructureUpdateSegment } from 'setups/structureSetup/structureSetup.update';\r\n\r\n/**\r\n * Lifecycle with the responsibility to adjust the padding styling of the padding and viewport element.\r\n * @param structureUpdateHub\r\n * @returns\r\n */\r\nexport const createPaddingUpdate: CreateStructureUpdateSegment = (\r\n structureSetupElements,\r\n state\r\n) => {\r\n const [getState, setState] = state;\r\n const { _host, _padding, _viewport } = structureSetupElements;\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 { _directionIsRTL } = getState();\r\n const { _sizeChanged, _contentMutation, _directionChanged } = updateHints;\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 setState({\r\n _padding: padding,\r\n _paddingAbsolute: !paddingRelative,\r\n _viewportPaddingStyle: _padding\r\n ? viewportStyle\r\n : assignDeep({}, paddingStyle, viewportStyle),\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 fractionalSize,\r\n equalWH,\r\n addClass,\r\n removeClass,\r\n clientSize,\r\n noop,\r\n each,\r\n equalXY,\r\n} from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport { OverflowBehavior } from 'options';\r\nimport { StyleObject } from 'typings';\r\nimport { classNameViewportArrange, classNameViewportScrollbarStyling } from 'classnames';\r\nimport type { CreateStructureUpdateSegment } from 'setups/structureSetup/structureSetup.update';\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 redoViewportArrange: () => void,\r\n overflowState?: ViewportOverflowState\r\n];\r\n\r\nconst { max } = 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 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 [behaviorIsVisible, behaviorIsVisibleHidden ? 'hidden' : 'scroll'] as [\r\n visible: boolean,\r\n behavior: string\r\n ];\r\n};\r\n\r\nconst getOverflowAmount = (\r\n viewportScrollSize: WH,\r\n viewportClientSize: WH,\r\n sizeFraction: WH\r\n) => {\r\n const tollerance = window.devicePixelRatio % 2 !== 0 ? 1 : 0;\r\n const amount = {\r\n w: max(0, viewportScrollSize.w - viewportClientSize.w - max(0, sizeFraction.w)),\r\n h: max(0, viewportScrollSize.h - viewportClientSize.h - max(0, sizeFraction.h)),\r\n };\r\n\r\n return {\r\n w: amount.w >= tollerance ? amount.w : 0,\r\n h: amount.h >= tollerance ? amount.h : 0,\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 structureUpdateHub\r\n * @returns\r\n */\r\nexport const createOverflowUpdate: CreateStructureUpdateSegment = (\r\n structureSetupElements,\r\n state\r\n) => {\r\n const [getState, setState] = state;\r\n const { _host, _viewport, _viewportArrange } = structureSetupElements;\r\n const {\r\n _nativeScrollbarSize,\r\n _flexboxGlue,\r\n _nativeScrollbarStyling,\r\n _nativeScrollbarIsOverlaid,\r\n } = getEnvironment();\r\n const doViewportArrange =\r\n !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);\r\n\r\n const [updateSizeFraction, getCurrentSizeFraction] = createCache>(\r\n whCacheOptions,\r\n fractionalSize.bind(0, _host)\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 { _paddingAbsolute, _padding } = getState();\r\n const { _overflowScroll, _scrollbarsHideOffset } = viewportOverflowState;\r\n const fSize = fractionalSize(_host);\r\n const hostClientSize = clientSize(_host);\r\n\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 subtractXScrollbar = !(_nativeScrollbarIsOverlaid.x && isContentBox);\r\n\r\n style(_viewport, {\r\n height:\r\n hostClientSize.h +\r\n fSize.h +\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 { 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 [xVisible, xVisibleBehavior] = setAxisOverflowStyle(\r\n true,\r\n overflowAmount.w,\r\n overflow.x,\r\n viewportStyleObj\r\n );\r\n const [yVisible, 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 sizeFraction: WH,\r\n directionIsRTL: boolean\r\n ) => {\r\n if (doViewportArrange) {\r\n const { _viewportPaddingStyle } = getState();\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 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 = viewportScrollSize.w + sizeFraction.w;\r\n const fractionalContenHeight = viewportScrollSize.h + sizeFraction.h;\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 } = getState();\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 } = getState();\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 (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\r\n removeClass(_viewport, classNameViewportArrange);\r\n\r\n if (!_flexboxGlue) {\r\n finalPaddingStyle.height = '';\r\n }\r\n\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 _sizeChanged,\r\n _hostMutation,\r\n _contentMutation,\r\n _paddingStyleChanged,\r\n _heightIntrinsicChanged,\r\n _directionChanged,\r\n } = updateHints;\r\n const { _heightIntrinsic, _directionIsRTL } = getState();\r\n const [showNativeOverlaidScrollbarsOption, showNativeOverlaidScrollbarsChanged] =\r\n checkOption('nativeScrollbarsOverlaid.show');\r\n const [overflow, overflowChanged] = checkOption>('overflow');\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 sizeFractionCache = getCurrentSizeFraction(force);\r\n let viewportScrollSizeCache = getCurrentViewportScrollSizeCache(force);\r\n let overflowAmuntCache = 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 _directionChanged ||\r\n showNativeOverlaidScrollbarsChanged\r\n ) {\r\n const [redoViewportArrange, undoViewportArrangeOverflowState] = undoViewportArrange(\r\n showNativeOverlaidScrollbars,\r\n _directionIsRTL,\r\n preMeasureViewportOverflowState\r\n );\r\n const [sizeFraction, sizeFractionChanged] = (sizeFractionCache = updateSizeFraction(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 || sizeFractionChanged || showNativeOverlaidScrollbarsChanged) &&\r\n undoViewportArrangeOverflowState &&\r\n !showNativeOverlaidScrollbars &&\r\n arrangeViewport(\r\n undoViewportArrangeOverflowState,\r\n viewportScrollSize,\r\n sizeFraction,\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 sizeFraction\r\n ),\r\n force\r\n );\r\n }\r\n\r\n const [overflowAmount, overflowAmountChanged] = overflowAmuntCache;\r\n const [viewportScrollSize, viewportScrollSizeChanged] = viewportScrollSizeCache;\r\n const [sizeFraction, sizeFractionChanged] = sizeFractionCache;\r\n\r\n if (\r\n _paddingStyleChanged ||\r\n _directionChanged ||\r\n sizeFractionChanged ||\r\n viewportScrollSizeChanged ||\r\n overflowAmountChanged ||\r\n overflowChanged ||\r\n showNativeOverlaidScrollbarsChanged ||\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 sizeFraction,\r\n _directionIsRTL\r\n );\r\n const [overflowScroll, overflowScrollChanged] = updateOverflowScrollCache(\r\n viewportOverflowState._overflowScroll\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 setState({\r\n _overflowScroll: overflowScroll,\r\n _overflowAmount: overflowAmount,\r\n });\r\n\r\n return {\r\n _overflowAmountChanged: overflowAmountChanged,\r\n _overflowScrollChanged: overflowScrollChanged,\r\n };\r\n }\r\n };\r\n};\r\n","import { each, isNumber, scrollLeft, scrollTop, assignDeep, keys } from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport {\r\n createTrinsicUpdate,\r\n createPaddingUpdate,\r\n createOverflowUpdate,\r\n} from 'setups/structureSetup/updateSegments';\r\nimport type { SetupState, SetupUpdateSegment, SetupUpdateCheckOption } from 'setups';\r\nimport type { StructureSetupState } from 'setups/structureSetup';\r\nimport type { StructureSetupElementsObj } from 'setups/structureSetup/structureSetup.elements';\r\n\r\nexport type CreateStructureUpdateSegment = (\r\n structureSetupElements: StructureSetupElementsObj,\r\n state: SetupState\r\n) => StructureSetupUpdateSegment;\r\n\r\nexport type StructureSetupUpdateSegment = SetupUpdateSegment;\r\n\r\nexport type StructureSetupUpdate = (\r\n checkOption: SetupUpdateCheckOption,\r\n updateHints: Partial,\r\n force?: boolean\r\n) => StructureSetupUpdateHints;\r\n\r\nexport interface StructureSetupUpdateHints {\r\n _sizeChanged: boolean;\r\n _directionChanged: boolean;\r\n _heightIntrinsicChanged: boolean;\r\n _overflowScrollChanged: boolean;\r\n _overflowAmountChanged: boolean;\r\n _paddingStyleChanged: boolean;\r\n _hostMutation: boolean;\r\n _contentMutation: boolean;\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] = !!(force || leadingValue || adaptiveValue);\r\n });\r\n\r\n return result as Required;\r\n};\r\n\r\nexport const createStructureSetupUpdate = (\r\n structureSetupElements: StructureSetupElementsObj,\r\n state: SetupState\r\n): StructureSetupUpdate => {\r\n const { _viewport } = structureSetupElements;\r\n const { _nativeScrollbarStyling, _nativeScrollbarIsOverlaid, _flexboxGlue } = getEnvironment();\r\n const doViewportArrange =\r\n !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);\r\n\r\n const updateSegments: StructureSetupUpdateSegment[] = [\r\n createTrinsicUpdate(structureSetupElements, state),\r\n createPaddingUpdate(structureSetupElements, state),\r\n createOverflowUpdate(structureSetupElements, state),\r\n ];\r\n\r\n return (\r\n checkOption: SetupUpdateCheckOption,\r\n updateHints: Partial,\r\n force?: boolean\r\n ) => {\r\n const initialUpdateHints = prepareUpdateHints(\r\n assignDeep(\r\n {\r\n _sizeChanged: false,\r\n _paddingStyleChanged: false,\r\n _directionChanged: false,\r\n _heightIntrinsicChanged: false,\r\n _overflowScrollChanged: false,\r\n _overflowAmountChanged: false,\r\n _hostMutation: false,\r\n _contentMutation: false,\r\n },\r\n updateHints\r\n ),\r\n {},\r\n force\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 let adaptivedUpdateHints: Required = initialUpdateHints;\r\n each(updateSegments, (updateSegment) => {\r\n adaptivedUpdateHints = prepareUpdateHints(\r\n adaptivedUpdateHints,\r\n updateSegment(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 return adaptivedUpdateHints;\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 type DOMObserver = [destroy: () => void, update: () => void];\r\n\r\ntype EventContentChangeUpdateElement = (getElements?: (selector: string) => Node[]) => void;\r\ntype EventContentChange = [destroy: () => void, updateElements: EventContentChangeUpdateElement];\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): EventContentChange => {\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: EventContentChangeUpdateElement = (getElements?) => {\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 [destroy, updateElements];\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 [destroyEventContentChange, updateEventContentChangeElements] = 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 () => {\r\n if (isConnected) {\r\n destroyEventContentChange();\r\n mutationObserver.disconnect();\r\n isConnected = false;\r\n }\r\n },\r\n () => {\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 keys,\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 type { SetupState, SetupUpdateCheckOption } from 'setups';\r\nimport type { StructureSetupState } from 'setups/structureSetup';\r\nimport type { StructureSetupElementsObj } from 'setups/structureSetup/structureSetup.elements';\r\nimport type {\r\n StructureSetupUpdate,\r\n StructureSetupUpdateHints,\r\n} from 'setups/structureSetup/structureSetup.update';\r\n\r\nexport type StructureSetupObserversUpdate = (checkOption: SetupUpdateCheckOption) => void;\r\n\r\nexport type StructureSetupObservers = [\r\n updateObserverOptions: StructureSetupObserversUpdate,\r\n destroy: () => void\r\n];\r\n\r\ntype ExcludeFromTuple = T extends [infer F, ...infer R]\r\n ? [F] extends [E]\r\n ? ExcludeFromTuple\r\n : [F, ...ExcludeFromTuple]\r\n : [];\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 createStructureSetupObservers = (\r\n structureSetupElements: StructureSetupElementsObj,\r\n state: SetupState,\r\n structureSetupUpdate: (\r\n ...args: ExcludeFromTuple, Parameters[0]>\r\n ) => any\r\n): StructureSetupObservers => {\r\n let debounceTimeout: number | false | undefined;\r\n let debounceMaxDelay: number | false | undefined;\r\n let contentMutationObserver: DOMObserver | undefined;\r\n const [, setState] = state;\r\n const { _host, _viewport, _content, _isTextarea } = structureSetupElements;\r\n const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment();\r\n const contentMutationObserverAttr = _isTextarea\r\n ? baseStyleChangingAttrsTextarea\r\n : baseStyleChangingAttrs.concat(baseStyleChangingAttrsTextarea);\r\n const structureSetupUpdateWithDebouncedAdaptiveUpdateHints = debounce(structureSetupUpdate, {\r\n _timeout: () => debounceTimeout,\r\n _maxDelay: () => debounceMaxDelay,\r\n _mergeParams(prev, curr) {\r\n const [prevObj] = prev;\r\n const [currObj] = curr;\r\n return [\r\n keys(prevObj)\r\n .concat(keys(currObj))\r\n .reduce((obj, key) => {\r\n obj[key] = prevObj[key] || currObj[key];\r\n return obj;\r\n }, {}),\r\n ] as [Partial];\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 = (heightIntrinsicCache: CacheValues) => {\r\n const [heightIntrinsic, heightIntrinsicChanged] = heightIntrinsicCache;\r\n setState({ _heightIntrinsic: heightIntrinsic });\r\n structureSetupUpdate({ _heightIntrinsicChanged: heightIntrinsicChanged });\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 ? structureSetupUpdate\r\n : structureSetupUpdateWithDebouncedAdaptiveUpdateHints;\r\n\r\n let directionChanged = false;\r\n if (_directionIsRTLCache) {\r\n const [directionIsRTL, directionIsRTLChanged] = _directionIsRTLCache;\r\n directionChanged = directionIsRTLChanged;\r\n setState({ _directionIsRTL: directionIsRTL });\r\n }\r\n\r\n updateFn({ _sizeChanged, _directionChanged: directionChanged });\r\n };\r\n const onContentMutation = (contentChangedTroughEvent: boolean) => {\r\n // if contentChangedTroughEvent is true its already debounced\r\n const updateFn = contentChangedTroughEvent\r\n ? structureSetupUpdate\r\n : structureSetupUpdateWithDebouncedAdaptiveUpdateHints;\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 structureSetupUpdateWithDebouncedAdaptiveUpdateHints({\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 [destroyHostMutationObserver] = createDOMObserver(_host, false, onHostMutation, {\r\n _styleChangingAttributes: baseStyleChangingAttrs,\r\n _attributes: baseStyleChangingAttrs.concat(viewportAttrsFromTarget),\r\n _ignoreTargetChange: ignoreTargetChange,\r\n });\r\n\r\n updateViewportAttrsFromHost();\r\n\r\n return [\r\n (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[1](); // update\r\n contentMutationObserver[0](); // destroy\r\n }\r\n contentMutationObserver = createDOMObserver(\r\n _content || _viewport,\r\n true,\r\n onContentMutation,\r\n {\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\r\n if (debounceChanged) {\r\n structureSetupUpdateWithDebouncedAdaptiveUpdateHints._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 contentMutationObserver && contentMutationObserver[0](); // destroy\r\n destroyTrinsicObserver && destroyTrinsicObserver();\r\n destroySizeObserver();\r\n destroyHostMutationObserver();\r\n },\r\n ];\r\n};\r\n","import { runEach } from 'support';\r\nimport { createState, createOptionCheck } from 'setups/setups';\r\nimport { createStructureSetupElements } from 'setups/structureSetup/structureSetup.elements';\r\nimport { createStructureSetupUpdate } from 'setups/structureSetup/structureSetup.update';\r\nimport { createStructureSetupObservers } from 'setups/structureSetup/structureSetup.observers';\r\nimport type { StructureSetupUpdateHints } from 'setups/structureSetup/structureSetup.update';\r\nimport type { StructureSetupElementsObj } from 'setups/structureSetup/structureSetup.elements';\r\nimport type { TRBL, XY, WH } from 'support';\r\nimport type { OSOptions, ReadonlyOSOptions } from 'options';\r\nimport type { Setup } from 'setups';\r\nimport type { OSTarget, PartialOptions, StyleObject } from 'typings';\r\n\r\nexport interface StructureSetupState {\r\n _padding: TRBL;\r\n _paddingAbsolute: boolean;\r\n _viewportPaddingStyle: StyleObject;\r\n _overflowScroll: XY;\r\n _overflowAmount: WH;\r\n _heightIntrinsic: boolean;\r\n _directionIsRTL: boolean;\r\n}\r\n\r\nexport interface StructureSetupStaticState {\r\n _elements: StructureSetupElementsObj;\r\n _addOnUpdatedListener: (listener: OnUpdatedListener) => void;\r\n}\r\n\r\nexport type OnUpdatedListener = (\r\n updateHints: StructureSetupUpdateHints,\r\n changedOptions: PartialOptions,\r\n force: boolean\r\n) => void;\r\n\r\nconst initialStructureSetupUpdateState: StructureSetupState = {\r\n _padding: {\r\n t: 0,\r\n r: 0,\r\n b: 0,\r\n l: 0,\r\n },\r\n _paddingAbsolute: false,\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 _overflowAmount: {\r\n w: 0,\r\n h: 0,\r\n },\r\n _overflowScroll: {\r\n x: false,\r\n y: false,\r\n },\r\n _heightIntrinsic: false,\r\n _directionIsRTL: false,\r\n};\r\n\r\nexport const createStructureSetup = (\r\n target: OSTarget,\r\n options: ReadonlyOSOptions\r\n): Setup => {\r\n const checkOptionsFallback = createOptionCheck(options, {});\r\n const state = createState(initialStructureSetupUpdateState);\r\n const onUpdatedListeners = new Set();\r\n const [getState] = state;\r\n const runOnUpdatedListeners = (\r\n updateHints: StructureSetupUpdateHints,\r\n changedOptions?: PartialOptions,\r\n force?: boolean\r\n ) => {\r\n runEach(onUpdatedListeners, [updateHints, changedOptions || {}, !!force]);\r\n };\r\n\r\n const [elements, destroyElements] = createStructureSetupElements(target);\r\n const updateStructure = createStructureSetupUpdate(elements, state);\r\n const [updateObservers, destroyObservers] = createStructureSetupObservers(\r\n elements,\r\n state,\r\n (updateHints) => {\r\n runOnUpdatedListeners(updateStructure(checkOptionsFallback, updateHints));\r\n }\r\n );\r\n\r\n const structureSetupState = getState.bind(0) as (() => StructureSetupState) &\r\n StructureSetupStaticState;\r\n structureSetupState._addOnUpdatedListener = (listener) => {\r\n onUpdatedListeners.add(listener);\r\n };\r\n structureSetupState._elements = elements;\r\n\r\n return [\r\n (changedOptions, force?) => {\r\n const checkOption = createOptionCheck(options, changedOptions, force);\r\n updateObservers(checkOption);\r\n runOnUpdatedListeners(updateStructure(checkOption, {}, force));\r\n },\r\n structureSetupState,\r\n () => {\r\n onUpdatedListeners.clear();\r\n destroyObservers();\r\n destroyElements();\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 type { StructureSetupElementsObj } from 'setups/structureSetup/structureSetup.elements';\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 ScrollbarsSetupElementsObj {\r\n _horizontalScrollbarStructure: ScrollbarStructure;\r\n _verticalScrollbarStructure: ScrollbarStructure;\r\n}\r\n\r\nexport type ScrollbarsSetupElements = [elements: ScrollbarsSetupElementsObj, destroy: () => void];\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 createScrollbarsSetupElements = (\r\n target: OSTarget,\r\n structureSetupElements: StructureSetupElementsObj\r\n): ScrollbarsSetupElements => {\r\n const { _getInitializationStrategy } = getEnvironment();\r\n const { _scrollbarsSlot: environmentScrollbarSlot } =\r\n _getInitializationStrategy() as ScrollbarsInitializationStrategy;\r\n const { _target, _host, _viewport, _targetIsElm } = structureSetupElements;\r\n const initializationScrollbarSlot =\r\n !_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)\r\n ? environmentScrollbarSlot(_target, _host, _viewport)\r\n : 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 {\r\n _horizontalScrollbarStructure: horizontalScrollbarStructure,\r\n _verticalScrollbarStructure: verticalScrollbarStructure,\r\n },\r\n removeElements.bind(0, [horizontalScrollbar, verticalScrollbar]),\r\n ];\r\n};\r\n","import { createState, createOptionCheck } from 'setups/setups';\r\nimport {\r\n createScrollbarsSetupElements,\r\n ScrollbarsSetupElementsObj,\r\n} from 'setups/scrollbarsSetup/scrollbarsSetup.elements';\r\nimport type { StructureSetupElementsObj } from 'setups/structureSetup/structureSetup.elements';\r\nimport type { ReadonlyOSOptions } from 'options';\r\nimport type { Setup } from 'setups';\r\nimport type { OSTarget } from 'typings';\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\r\nexport interface ScrollbarsSetupState {}\r\n\r\nexport interface ScrollbarsSetupStaticState {\r\n _elements: ScrollbarsSetupElementsObj;\r\n}\r\n\r\nexport const createScrollbarsSetup = (\r\n target: OSTarget,\r\n options: ReadonlyOSOptions,\r\n structureSetupElements: StructureSetupElementsObj\r\n): Setup => {\r\n const state = createState({});\r\n const [getState] = state;\r\n\r\n const [elements, destroyElements] = createScrollbarsSetupElements(target, structureSetupElements);\r\n\r\n const scrollbarsSetupState = getState.bind(0) as (() => ScrollbarsSetupState) &\r\n ScrollbarsSetupStaticState;\r\n scrollbarsSetupState._elements = elements;\r\n\r\n return [\r\n (changedOptions, force?) => {\r\n const checkOption = createOptionCheck(options, changedOptions, force);\r\n // eslint-disable-next-line no-console\r\n console.log(checkOption);\r\n },\r\n scrollbarsSetupState,\r\n () => {\r\n destroyElements();\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","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 { 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 { createEventListenerHub, XY } from 'support';\r\nimport { PartialOptions } from 'typings';\r\nimport type {\r\n InitialEventListeners,\r\n AddEventListener,\r\n RemoveEventListener,\r\n TriggerEventListener,\r\n EventListener,\r\n} from 'support/eventListeners';\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 directionChanged: boolean;\r\n heightIntrinsicChanged: boolean;\r\n overflowAmountChanged: boolean;\r\n overflowScrollChanged: boolean;\r\n hostMutation: boolean;\r\n contentMutation: 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 OSEventListenersNameArgsMap {\r\n initialized: undefined;\r\n initializationWithdrawn: undefined;\r\n overflowChanged: OnOverflowChangedEventListenerArgs;\r\n updated: OnUpdatedEventListenerArgs;\r\n destroyed: undefined;\r\n}\r\n\r\nexport type OSEventListener<\r\n N extends Extract = Extract<\r\n keyof OSEventListenersNameArgsMap,\r\n string\r\n >\r\n> = EventListener;\r\n\r\nexport type AddOSEventListener = AddEventListener;\r\n\r\nexport type RemoveOSEventListener = RemoveEventListener;\r\n\r\nexport type TriggerOSEventListener = TriggerEventListener;\r\n\r\nexport type InitialOSEventListeners = InitialEventListeners;\r\n\r\nexport const createOSEventListenerHub = (initialEventListeners?: InitialOSEventListeners) =>\r\n createEventListenerHub(initialEventListeners);\r\n","import { OSTarget, OSInitializationObject, PartialOptions } from 'typings';\r\nimport { assignDeep, isEmptyObject, each, isFunction, keys, isHTMLElement, WH, XY } from 'support';\r\nimport { createStructureSetup, createScrollbarsSetup } from 'setups';\r\nimport { getOptionsDiff, OSOptions, ReadonlyOSOptions } 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 createOSEventListenerHub,\r\n InitialOSEventListeners,\r\n AddOSEventListener,\r\n RemoveOSEventListener,\r\n} from 'eventListeners';\r\n\r\nexport interface OverlayScrollbarsStatic {\r\n (\r\n target: OSTarget | OSInitializationObject,\r\n options?: PartialOptions,\r\n eventListeners?: InitialOSEventListeners\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: AddOSEventListener;\r\n off: RemoveOSEventListener;\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 OverlayScrollbars: OverlayScrollbarsStatic = (\r\n target,\r\n options?,\r\n eventListeners?\r\n): OverlayScrollbars => {\r\n const {\r\n _getDefaultOptions,\r\n _nativeScrollbarIsOverlaid,\r\n _addListener: addEnvListener,\r\n } = 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: ReadonlyOSOptions = assignDeep(\r\n {},\r\n _getDefaultOptions(),\r\n validateOptions(options)\r\n );\r\n const [addEvent, removeEvent, triggerEvent] = createOSEventListenerHub(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');\r\n }\r\n\r\n const [updateStructure, structureState, destroyStructure] = createStructureSetup(\r\n target,\r\n currentOptions\r\n );\r\n const [updateScrollbars, , destroyScrollbars] = createScrollbarsSetup(\r\n target,\r\n currentOptions,\r\n structureState._elements\r\n );\r\n\r\n const update = (changedOptions: PartialOptions, force?: boolean) => {\r\n updateStructure(changedOptions, force);\r\n updateScrollbars(changedOptions, force);\r\n };\r\n\r\n structureState._addOnUpdatedListener((updateHints, changedOptions, force) => {\r\n const {\r\n _sizeChanged,\r\n _directionChanged,\r\n _heightIntrinsicChanged,\r\n _overflowAmountChanged,\r\n _overflowScrollChanged,\r\n _contentMutation,\r\n _hostMutation,\r\n } = updateHints;\r\n const { _overflowAmount, _overflowScroll } = structureState();\r\n\r\n if (_overflowAmountChanged || _overflowScrollChanged) {\r\n triggerEvent(\r\n 'overflowChanged',\r\n assignDeep({}, createOverflowChangedArgs(_overflowAmount, _overflowScroll), {\r\n previous: createOverflowChangedArgs(_overflowAmount!, _overflowScroll!),\r\n })\r\n );\r\n }\r\n\r\n triggerEvent('updated', {\r\n updateHints: {\r\n sizeChanged: _sizeChanged,\r\n directionChanged: _directionChanged,\r\n heightIntrinsicChanged: _heightIntrinsicChanged,\r\n overflowAmountChanged: _overflowAmountChanged,\r\n overflowScrollChanged: _overflowScrollChanged,\r\n contentMutation: _contentMutation,\r\n hostMutation: _hostMutation,\r\n },\r\n changedOptions,\r\n force,\r\n });\r\n });\r\n\r\n const removeEnvListener = addEnvListener(update.bind(0, {}, true));\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 update(changedOptions);\r\n }\r\n }\r\n return currentOptions;\r\n },\r\n on: addEvent,\r\n off: removeEvent,\r\n state: () => ({\r\n _overflowAmount: structureState()._overflowAmount,\r\n }),\r\n update(force?: boolean) {\r\n update({}, force);\r\n },\r\n destroy: () => {\r\n removeInstance(instanceTarget);\r\n removeEnvListener();\r\n removeEvent();\r\n\r\n destroyScrollbars();\r\n destroyStructure();\r\n\r\n triggerEvent('destroyed');\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');\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","args","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","removeClass","remove","addClass","add","bind","diffClass","classNameA","classNameB","classNameASplit","split","classNameBSplit","tempObj","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","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","zeroObj","w","h","windowSize","innerWidth","innerHeight","offsetSize","offsetWidth","offsetHeight","clientSize","clientWidth","clientHeight","scrollSize","scrollWidth","scrollHeight","fractionalSize","cssHeight","cssWidth","getBoundingClientRect","passiveEventsSupport","supportPassiveEvents","addEventListener","defineProperty","get","splitEventNames","eventNames","off","listener","capture","eventName","removeEventListener","on","doSupportPassiveEvents","passive","_passive","_capture","once","_once","offListeners","nativeOptions","finalListener","evt","stopPropagation","preventDefault","stopAndPrevent","x","y","absoluteCoordinates","rect","pageYOffset","pageXOffset","manageListener","createEventListenerHub","initialEventListeners","events","Map","removeEvent","eventSet","currListener","clear","addEvent","set","triggerEvent","event","initialListenerKeys","getPropByPath","path","o","createOptionCheck","changedOptions","createState","initialState","state","newState","classNameEnvironment","classNameEnvironmentFlexboxGlue","classNameEnvironmentFlexboxGlueMax","classNameHost","classNamePadding","classNameViewport","classNameViewportArrange","classNameContent","classNameViewportScrollbarStyling","classNameSizeObserver","classNameSizeObserverAppear","classNameSizeObserverListener","classNameSizeObserverListenerScroll","classNameSizeObserverListenerItem","classNameSizeObserverListenerItemFinal","classNameTrinsicObserver","classNameScrollbar","classNameScrollbarHorizontal","classNameScrollbarVertical","classNameScrollbarTrack","classNameScrollbarHandle","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","measureElmChild","cSize","oSize","fSize","getNativeScrollbarStyling","testElm","revertClass","ex","getRtlScrollBehavior","childElm","strHidden","overflowX","overflowY","direction","parentOffset","childOffset","childOffsetAfterScroll","n","getFlexboxGlue","revertFbxGlue","minOffsetsizeParent","minOffsetsize","supportsMin","revertFbxGlueMax","maxOffsetsizeParent","maxOffsetsize","supportsMax","getWindowDPR","dDPI","screen","deviceXDPI","sDPI","logicalXDPI","devicePixelRatio","getDefaultInitializationStrategy","nativeScrollbarStyling","_host","_viewport","_padding","_content","_scrollbarsSlot","createEnvironment","envDOM","envElm","envChildElm","onChangedListener","updateNativeScrollbarSizeCache","getNativeScrollbarSizeCache","nativeScrollbarSize","nativeScrollbarIsOverlaid","initializationStrategy","defaultDefaultOptions","env","_nativeScrollbarSize","_nativeScrollbarIsOverlaid","_nativeScrollbarStyling","_cssCustomProperties","_rtlScrollBehavior","_flexboxGlue","_addListener","delete","_getInitializationStrategy","_setInitializationStrategy","newInitializationStrategy","_getDefaultOptions","_setDefaultOptions","newDefaultOptions","_defaultInitializationStrategy","_defaultDefaultOptions","size","dpr","sizeNew","deltaSize","deltaAbsSize","deltaAbsRatio","dprNew","deltaIsBigger","difference","dprChanged","isZoom","scrollbarSize","scrollbarSizeChanged","getEnvironment","contentArrangeCounter","unwrap","createUniqueViewportArrangeElement","create","staticCreationFromStrategy","initializationValue","strategy","elementClass","dynamicCreationFromStrategy","takeInitializationValue","createStructureSetupElements","hostInitializationStrategy","viewportInitializationStrategy","paddingInitializationStrategy","contentInitializationStrategy","targetIsElm","targetStructureInitialization","targetElement","isTextarea","isBody","ownerDocument","bodyElm","wnd","defaultView","evaluatedTargetObj","_target","host","viewport","padding","content","_viewportArrange","_windowElm","_documentElm","_htmlElm","_bodyElm","_isTextarea","_isBody","_targetIsElm","generatedElements","elementIsGenerated","destroyFns","isTextareaHostGenerated","targetContents","contentSlot","createTrinsicUpdate","structureSetupElements","getState","updateHints","_heightIntrinsic","_heightIntrinsicChanged","height","display","_sizeChanged","_contentMutation","createPaddingUpdate","setState","updatePaddingCache","currentPaddingCache","checkOption","paddingChanged","_directionIsRTL","_directionChanged","paddingAbsoluteChanged","contentMutation","paddingStyleChanged","paddingRelative","paddingHorizontal","paddingVertical","paddingStyle","marginRight","marginBottom","marginLeft","width","viewportStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","_paddingAbsolute","_viewportPaddingStyle","_paddingStyleChanged","max","overlaidScrollbarsHideOffset","whCacheOptions","xyCacheOptions","setAxisOverflowStyle","horizontal","overflowAmount","behavior","styleObj","overflowKey","behaviorIsVisible","behaviorIsVisibleHidden","behaviorIsScroll","hasOverflow","getOverflowAmount","viewportScrollSize","viewportClientSize","sizeFraction","tollerance","amount","createOverflowUpdate","doViewportArrange","updateSizeFraction","getCurrentSizeFraction","updateViewportScrollSizeCache","getCurrentViewportScrollSizeCache","updateOverflowAmountCache","getCurrentOverflowAmountCache","updateOverflowScrollCache","fixFlexboxGlue","viewportOverflowState","heightIntrinsic","_overflowScroll","_scrollbarsHideOffset","hostClientSize","isContentBox","subtractXScrollbar","getViewportOverflowState","showNativeOverlaidScrollbars","viewportStyleObj","overlaidX","overlaidY","determineOverflow","arrangeHideOffset","scroll","nonScrollbarStylingHideOffset","scrollbarsHideOffset","_scrollbarsHideOffsetArrange","setViewportOverflowState","xVisible","xVisibleBehavior","yVisible","yVisibleBehavior","arrangeViewport","directionIsRTL","arrangeX","arrangeY","hideOffsetX","hideOffsetY","viewportArrangeHorizontalPaddingKey","viewportArrangeHorizontalPaddingValue","viewportArrangeVerticalPaddingValue","fractionalContentWidth","fractionalContenHeight","arrangeSize","sheet","cssRules","insertRule","ruleStyle","hideNativeScrollbars","viewportArrange","viewportPaddingStyle","horizontalMarginKey","viewportHorizontalPaddingKey","horizontalMarginValue","verticalMarginValue","horizontalPaddingValue","verticalPaddingValue","undoViewportArrange","finalViewportOverflowState","finalPaddingStyle","assignProps","prevStyle","_hostMutation","showNativeOverlaidScrollbarsOption","showNativeOverlaidScrollbarsChanged","overflowChanged","adjustFlexboxGlue","sizeFractionCache","viewportScrollSizeCache","overflowAmuntCache","preMeasureViewportOverflowState","redoViewportArrange","undoViewportArrangeOverflowState","sizeFractionChanged","viewportScrollSizeChanged","viewportContentSize","arrangedViewportScrollSize","arrangedViewportClientSize","overflowAmountChanged","viewportArranged","overflowScroll","overflowScrollChanged","_overflowAmount","_overflowAmountChanged","_overflowScrollChanged","prepareUpdateHints","leading","adaptive","finalAdaptive","objKeys","leadingValue","adaptiveValue","createStructureSetupUpdate","updateSegments","initialUpdateHints","adjustScrollOffset","scrollOffsetX","scrollOffsetY","adaptivedUpdateHints","updateSegment","animationStartEventName","scrollEventName","scrollAmount","getElmDirectionIsRTL","domRectHasDimensions","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","_directionIsRTLCache","appearCallback","directionIsRTLCache","resizeObserverInstance","observe","disconnect","observerElementChildren","observerElementChildrenRoot","shrinkElement","lastChild","expandElement","expandElementChild","cacheSize","currSize","isDirty","rAFId","reset","onResized","onScroll","scrollEvent","updateDirectionIsRTLCache","directionIsRTLCacheValues","directionIsRTLChanged","isHeightIntrinsic","ioEntryOrSize","isIntersecting","intersectionRatio","createTrinsicObserver","onTrinsicChangedCallback","trinsicObserver","updateHeightIntrinsicCache","triggerOnTrinsicChangedCallback","updateValue","heightIntrinsicChanged","intersectionObserverInstance","entries","root","onSizeChanged","newSize","createEventContentChange","eventContentChange","map","destroyed","destroy","updateElements","getElements","eventElmList","elements","entry","entryEventNames","entryOff","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","takeRecords","ignorePrefix","viewportAttrsFromTarget","baseStyleChangingAttrsTextarea","baseStyleChangingAttrs","addedOrRemovedClass","createStructureSetupObservers","structureSetupUpdate","debounceTimeout","debounceMaxDelay","contentMutationObserver","contentMutationObserverAttr","structureSetupUpdateWithDebouncedAdaptiveUpdateHints","prev","prevObj","currObj","updateViewportAttrsFromHost","attribute","hostAttr","onTrinsicChanged","heightIntrinsicCache","updateFn","directionChanged","onContentMutation","contentChangedTroughEvent","onHostMutation","destroyTrinsicObserver","destroySizeObserver","destroyHostMutationObserver","elementEventsChanged","attributesChanged","debounceValue","debounceChanged","updateContentMutationObserver","timeout","maxWait","initialStructureSetupUpdateState","createStructureSetup","checkOptionsFallback","onUpdatedListeners","runOnUpdatedListeners","destroyElements","updateStructure","updateObservers","destroyObservers","structureSetupState","_addOnUpdatedListener","_elements","generateScrollbarDOM","scrollbarClassName","scrollbar","track","handle","_scrollbar","_track","_handle","createScrollbarsSetupElements","environmentScrollbarSlot","initializationScrollbarSlot","scrollbarsSlot","initializationScrollbarSlotResult","evaluatedScrollbarSlot","horizontalScrollbarStructure","verticalScrollbarStructure","horizontalScrollbar","verticalScrollbar","_horizontalScrollbarStructure","_verticalScrollbarStructure","createScrollbarsSetup","scrollbarsSetupState","console","log","pluginRegistry","getPlugins","addPlugin","addedPlugin","plugin","_extends","module","assign","exports","__esModule","templateTypePrefixSuffix","optionsTemplateTypes","numberAllowedValues","oTypes","number","booleanAllowedValues","boolean","arrayNullValues","null","stringArrayNullAllowedValues","string","resizeAllowedValues","overflowAllowedValues","scrollbarsVisibilityAllowedValues","scrollbarsAutoHideAllowedValues","function","optionsValidationPluginName","targets","targetInstanceMap","addInstance","osInstance","removeInstance","getInstance","createOSEventListenerHub","createOverflowChangedArgs","scrollableOverflow","OverlayScrollbars","eventListeners","addEnvListener","plugins","instanceTarget","potentialInstance","optionsValidationPlugin","validateOptions","opts","validate","currentOptions","structureState","destroyStructure","updateScrollbars","destroyScrollbars","previous","sizeChanged","hostMutation","removeEnvListener","instance","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 77e93a3..9049bb5 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 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 h(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 w(n){var r=window.Element;return!!n&&(r?n instanceof r:n.nodeType===t)}function _(n,t){if(s(n))for(var r=0;r0;i=u[e++];)o=!!r(n.classList,i)&&o}return o},en=function(n,t){rn(n,t,(function(n,t){return n.remove(t)}))},on=function(n,t){return rn(n,t,(function(n,t){return n.add(t)})),en.bind(0,n,t)},un=function(n,t,r,i){if(n&&t){var e=!0;return _(r,(function(r){(i?i(n[r]):n[r])!==(i?i(t[r]):t[r])&&(e=!1)})),e}return!1},an=function(n,t){return un(n,t,["w","h"])},cn=function(n,t){return un(n,t,["x","y"])},fn=function(n,t){return un(n,t,["t","r","b","l"])},ln=function(n,t,r){return un(n,t,["width","height"],r&&function(n){return Math.round(n)})},vn=function(n){n&&window.clearTimeout(n),n&&Z(n)},dn=function(){},sn=function(n,t){var r,i,e,o,u=t||{},c=u.s,f=u.g,v=u._,d=window.setTimeout,s=function(t){vn(r),vn(i),i=r=e=void 0,n.apply(this,t)},h=function(n){return v&&e?v(e,n):n},g=function(){r&&s(h(o)||o)},w=function(){var n=m(arguments),t=l(c)?c():c,u=a(t)&&t>=0;if(u){var v=l(f)?f():f,w=a(v)&&v>=0,_=t>0?d:nn,p=h(n),b=p||n,y=s.bind(0,b);vn(r),r=_(y,t),w&&!i&&(i=d(g,v)),e=o=b}else s(n)};return w.p=g,w},hn={opacity:1,zindex:1},gn=function(n,t){var r=t?parseFloat(n):parseInt(n,10);return Number.isNaN(r)?0:r},wn=function(n,t,r){return null!=t?t[r]||t.getPropertyValue(r):n.style[r]},_n=function(n,t,r){try{if(n){var i=n.style;o(i[t])?i.setProperty(t,r):i[t]=function(n,t){return!hn[n.toLowerCase()]&&a(t)?t+"px":t}(t,r)}}catch(e){}};function pn(n,t){var r=c(t);if(v(t)||r){var i=r?"":{};if(n){var e=window.getComputedStyle(n,null);i=r?wn(n,e,t):t.reduce((function(t,r){return t[r]=wn(n,e,r),t}),i)}return i}_(O(t),(function(r){return _n(n,r,t[r])}))}var bn,mn,yn=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=pn(n,[o,u,a,c]);return{t:gn(f[o]),r:gn(f[u]),b:gn(f[a]),l:gn(f[c])}},xn={w:0,h:0},Sn=function(){return{w:window.innerWidth,h:window.innerHeight}},On=function(n){return n?{w:n.offsetWidth,h:n.offsetHeight}:xn},Cn=function(n){return n?{w:n.clientWidth,h:n.clientHeight}:xn},zn=function(n){return n?{w:n.scrollWidth,h:n.scrollHeight}:xn},Mn=function(n){var t=parseFloat(pn(n,"height"))||0,r=parseFloat(pn(n,"height"))||0;return{w:r-Math.round(r),h:t-Math.round(t)}},An=function(n){return n.getBoundingClientRect()},Ln=function(n){return n.split(" ")},jn=function(n,t,r,i){_(Ln(t),(function(t){n.removeEventListener(t,r,i)}))},In=function(n,t,r,i){var e=function(){if(o(bn)){bn=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){bn=!0}}))}catch(n){}}return bn}(),u=e&&i&&i.m||!1,a=i&&i.S||!1,c=i&&i.O||!1,f=[],l=e?{passive:u,capture:a}:a;return _(Ln(t),(function(t){var i=c?function(e){n.removeEventListener(t,i,a),r&&r(e)}:r;b(f,jn.bind(null,n,t,i,a)),n.addEventListener(t,i,l)})),x.bind(0,f)},Tn=function(n){return function(n){return n.stopPropagation()}(n)||function(n){return n.preventDefault()}(n)},Rn={x:0,y:0},En=function(n){var t=n?An(n):0;return t?{x:t.left+window.pageYOffset,y:t.top+window.pageXOffset}:Rn},Vn=function(n,t){_(v(t)?t:[t],n)},kn=function(n,t){return n?t.split(".").reduce((function(n,t){return n&&S(n,t)?n[t]:void 0}),n):void 0},Bn=function(n,t,r){return function(i){return[kn(n,i),r||void 0!==kn(t,i)]}},Pn=function(n){var t=n;return[function(){return t},function(n){t=C({},t,n)}]},Dn="os-environment",Fn=Dn+"-flexbox-glue",qn=Fn+"-max",Hn="os-host",Wn="os-padding",Yn="os-viewport",Nn=Yn+"-arrange",Xn="os-content",Un=Yn+"-scrollbar-styled",$n="os-size-observer",Gn=$n+"-appear",Jn=$n+"-listener",Kn=Jn+"-scroll",Qn=Jn+"-item",Zn=Qn+"-final",nt="os-trinsic-observer",tt="os-scrollbar",rt=tt+"-horizontal",it=tt+"-vertical",et="os-scrollbar-track",ot="os-scrollbar-handle",ut=function(n){return JSON.stringify(n,(function(n,t){if(l(t))throw new Error;return t}))},at={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}},ct=Math.abs,ft=Math.round,lt=function(n,t,r){B(n,t);var i=Cn(t),e=On(t),o=Mn(r);return{x:e.h-i.h+o.h,y:e.w-i.w+o.w}},vt=function(n,t){var r="hidden";pn(n,{overflowX:r,overflowY:r,direction:"rtl"}),L(n,0);var i=En(n),e=En(t);L(n,-999);var o=En(t);return{i:i.x===e.x,n:e.x!==o.x}},dt=function(){var n=window.screen.deviceXDPI||0,t=window.screen.logicalXDPI||1;return window.devicePixelRatio||n/t},st=function(){var t,r,i,e,o,u,a,c,f,l,v=document.body,d=H('
')[0],s=d.firstChild,h=new Set,g=n({o:lt(v,d,s),u:cn}),w=g[0],_=(0,g[1])()[0],p=function(n){var t=!1,r=on(n,Un);try{t="none"===pn(n,$("scrollbar-width"))||"none"===window.getComputedStyle(n,"::-webkit-scrollbar").getPropertyValue("display")}catch(i){}return r(),t}(d),b={x:0===_.x,y:0===_.y},m=function(n){return{C:null,M:null,A:!n,L:!1,j:null}}(p),y=C({},at),S={I:_,T:b,R:p,V:"-1"===pn(d,"zIndex"),k:vt(d,s),B:(t=d,r=s,i=on(t,Fn),e=An(t),o=An(r),u=ln(o,e,!0),a=on(t,qn),c=An(t),f=An(r),l=ln(f,c,!0),i(),a(),u&&l),P:function(n){return h.add(n),function(){return h.delete(n)}},D:C.bind(0,{},m),F:function(n){C(m,n)},q:C.bind(0,{},y),H:function(n){C(y,n)},W:C({},m),Y:C({},y)};if(A(d,"style"),F(d),!(p||b.x&&b.y)){var O=Sn(),z=dt();window.addEventListener("resize",(function(){if(h.size){var n=Sn(),t={w:n.w-O.w,h:n.h-O.h};if(0===t.w&&0===t.h)return;var r={w:ct(t.w),h:ct(t.h)},i={w:ct(ft(n.w/(O.w/100))),h:ct(ft(n.h/(O.h/100)))},e=dt(),o=r.w>2&&r.h>2,u=(l=i.h,g=ct(i.w),_=ct(l),!(g!==_&&g+1!==_&&g-1!==_));if(o&&u&&(e!==z&&z>0)){var a=w(lt(v,d,s)),c=a[0],f=a[1];C(mn.I,c),F(d),f&&x(h)}O=n,z=e}var l,g,_}))}return S},ht=function(){return mn||(mn=st()),mn},gt=0,wt=function(n){B(V(n),E(n)),F(n)},_t=function(){var n=ht(),t=n.R,r=n.T,i=!!(!n.V&&!t&&(r.x||r.y))&&document.createElement("style");return i&&(M(i,"id",Nn+"-"+gt),gt++),i},pt=function(n,t,r,i){return t||(l(r)?r(n):r)||q(i)},bt=function(n,t,r,i){var e=f(t)||t?t:l(r)?r(n):r;return!0===e?q(i):e},mt=function(n){var t,r,i=ht(),e=i.D,o=i.R,u=e(),a=u.C,c=u.M,f=u.A,l=u.L,v=g(n),d=n,s=v?n:d.target,h=R(s,"textarea"),w=!h&&R(s,"body"),_=s.ownerDocument,m=_.body,y=_.defaultView,S={N:s,C:h?pt(s,d.host,a,Hn):s,M:pt(s,d.viewport,c,Yn),A:bt(s,d.padding,f,Wn),L:bt(s,d.content,l,Xn),X:_t(),U:y,$:_,G:V(m),J:m,K:h,Z:w,nn:v},C=O(S).reduce((function(n,t){var r=S[t];return b(n,!(!r||V(r))&&r)}),[]),z=function(n){return n?p(C,n)>-1:null},M=S.N,A=S.C,L=S.A,j=S.M,I=S.L,T=S.X,P=[],q=h&&z(A),H=h?M:E([I,j,L,A,M].find((function(n){return!1===z(n)}))),W=I||j;return q&&(D(M,A),b(P,(function(){D(A,M),F(A)}))),B(W,H),B(A,L),B(L||A,j),B(j,I),on(A,Hn),on(L,Wn),on(j,Yn),on(I,Xn),b(P,(function(){v?(B(A,E(W)),F(L||j),en(A,Hn)):(z(I)&&wt(I),z(j)&&wt(j),z(L)&&wt(L),en(A,Hn),en(L,Wn),en(j,Yn),en(I,Xn))})),o&&b(P,en.bind(0,j,Un)),T&&(r=T,k(V(t=j),t,r),b(P,F.bind(0,T))),[S,x.bind(0,P)]},yt=function(n,t){var r=n.L,i=t[0];return function(n){var t=i().tn,e=n.rn;return e&&pn(r,{height:t?"":"100%",display:t?"":"inline"}),{in:e,en:e}}},xt=function(t,r){var i=r[0],e=r[1],o=t.C,u=t.A,a=t.M,c=n({u:fn,o:yn()},yn.bind(0,o,"padding","")),f=c[0],l=c[1];return function(n,t,r){var o=l(r),c=o[0],v=o[1],d=ht(),s=d.R,h=d.B,g=i().un,w=n.in,_=n.en,p=n.an,b=t("paddingAbsolute"),m=b[0],y=b[1];if(w||v||!h&&_){var x=f(r);c=x[0],v=x[1]}var S=y||p||v;if(S){var O=!m||!u&&!s,z=c.r+c.l,M=c.t+c.b,A={marginRight:O&&!g?-z:0,marginBottom:O?-M:0,marginLeft:O&&g?-z:0,top:O?-c.t:0,right:O?g?-c.r:"auto":0,left:O?g?"auto":-c.l:0,width:O?"calc(100% + "+z+"px)":""},L={paddingTop:O?c.t:0,paddingRight:O?c.r:0,paddingBottom:O?c.b:0,paddingLeft:O?c.l:0};pn(u||a,A),pn(a,L),e({A:c,cn:!O,fn:u?L:C({},A,L)})}return{ln:S}}},St=Math.max,Ot=Math.round,Ct=42,zt={u:an,o:{w:0,h:0}},Mt={u:cn,o:{x:!1,y:!1}},At=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),{vn:o,dn:u?"hidden":"scroll"}},Lt=function(t,r){var i=r[0],e=r[1],o=t.C,u=t.M,a=t.X,c=ht(),f=c.I,l=c.B,v=c.R,d=c.T,s=!v&&(d.x||d.y),h=n(zt,Mn.bind(0,o)),g=h[0],w=h[1],p=n(zt,zn.bind(0,u)),b=p[0],m=p[1],y=n(zt),x=y[0],S=y[1],C=n(Mt)[0],z=function(n,t){if(pn(u,{height:""}),t){var r=i(),e=r.cn,a=r.A,c=n.sn,f=n.hn,l=parseFloat(pn(o,"height")),v=Cn(o),s="content-box"===pn(u,"boxSizing"),h=e||s?a.b+a.t:0,g=v.h+(l-Ot(l)),w=!(d.x&&s);pn(u,{height:g+(c.x&&w?f.x:0)-h})}},A=function(n,t){var r=d.x,i=d.y,e=v||n?0:Ct,o=!t?pn(u,["overflowX","overflowY"]):t,a={x:"scroll"===o.overflowX,y:"scroll"===o.overflowY},c={x:r?e:f.x,y:i?e:f.y};return{sn:a,gn:{x:r&&!!e,y:i&&!!e},hn:{x:a.x&&!v?c.x:0,y:a.y&&!v?c.y:0}}},L=function(n,t,r,e){if(s){var o=i().fn,c=n.hn,f=n.gn,l=f.x,v=f.y,d=c.x,h=c.y,g=o[e?"paddingRight":"paddingLeft"],w=o.paddingTop,_=t.w+r.w,p=t.h+r.h,b={w:h&&v?h+_-g+"px":"",h:d&&l?d+p-w+"px":""};if(a){var m=a.sheet;if(m){var y=m.cssRules;if(y){y.length||m.insertRule("#"+M(a,"id")+" + ."+Nn+"::before {}",0);var x=y[0].style;x.width=b.w,x.height=b.h}}}else pn(u,{"--os-vaw":b.w,"--os-vah":b.h})}return s},j=function(n,t,r,e){var o=n.hn,u=n.gn,a=u.x,c=u.y,f=o.x,l=o.y,v=i().fn,d=t?"marginLeft":"marginRight",s=t?"paddingLeft":"paddingRight",h=v[d],g=v.marginBottom,w=v[s],_=v.paddingBottom;e.width="calc(100% + "+(l+-1*h)+"px)",e[d]=-l+h,e.marginBottom=-f+g,r&&(e[s]=w+(c?l:0),e.paddingBottom=_+(a?f:0))};return function(n,t,r){var o,a=n.in,c=n.wn,f=n.en,h=n.ln,p=n.rn,y=n.an,M=i(),I=M.tn,T=M.un,R=t("nativeScrollbarsOverlaid.show"),E=R[0],V=R[1],k=E&&d.x&&d.y,B=!l&&(a||f||c||V||p),P=w(r),D=m(r),F=S(r);if(V&&v&&(k?en(u,Un):on(u,Un)),B&&(o=A(k),z(o,I)),a||h||f||y||V){var q=function(n,t,r){if(s){var e=r||A(n),o=i().fn,a=e.gn,c=a.x,f=a.y,v={},d=function(n){return _(n.split(" "),(function(n){v[n]=o[n]}))};c&&d("marginBottom paddingTop paddingBottom"),f&&d("marginLeft marginRight paddingLeft paddingRight");var h=pn(u,O(v));return en(u,Nn),l||(v.height=""),pn(u,v),[function(){j(e,t,s,h),pn(u,h),on(u,Nn)},e]}return[dn]}(k,T,o),H=q[0],W=q[1],Y=P=g(r),N=Y[0],X=Y[1],U=D=b(r),$=U[0],G=U[1],J=Cn(u),K=$,Q=J;H(),(G||X||V)&&W&&!k&&L(W,$,N,T)&&(Q=Cn(u),K=zn(u)),F=x(function(n,t,r){var i=function(n){return window.devicePixelRatio%2!=0?n>1:n>0},e={w:St(0,n.w-t.w-St(0,r.w)),h:St(0,n.h-t.h-St(0,r.h))};return{w:i(e.w)?e.w:0,h:i(e.h)?e.h:0}}({w:St($.w,K.w),h:St($.h,K.h)},{w:Q.w+St(0,J.w-$.w),h:Q.h+St(0,J.h-$.h)},N),r)}var Z=P,nn=Z[0],tn=Z[1],rn=D,un=rn[0],an=rn[1],cn=F,fn=cn[0],ln=cn[1],vn=t("overflow"),sn=vn[0],hn=vn[1];if(h||y||tn||an||ln||hn||V||B){var gn={marginRight:0,marginBottom:0,marginLeft:0,width:"",overflowY:"",overflowX:""},wn=function(n,t,r,i){var e=At(!0,t.w,r.x,i),o=e.vn,u=e.dn,a=At(!1,t.h,r.y,i),c=a.vn,f=a.dn;return o&&!c&&(i.overflowX=u),c&&!o&&(i.overflowY=f),A(n,i)}(k,fn,sn,gn),_n=L(wn,un,nn,T),bn=C(wn.sn),mn=bn[0],yn=bn[1];return j(wn,T,_n,gn),B&&z(wn,I),pn(u,gn),e({_n:mn,pn:fn}),{bn:ln,mn:yn}}}},jt=function(n,t,r){var i={},e=t||{};return _(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,r)})),i},It="animationstart",Tt="scroll",Rt=3333333,Et=function(n){return"rtl"===pn(n,"direction")},Vt=function(n){return n&&(n.height||n.width)},kt=function(t,r,i){var e=i||{},o=e.yn,u=void 0!==o&&o,a=e.xn,c=void 0!==a&&a,l=ht().k,s=H('
')[0],h=s.firstChild,g=Et.bind(0,s),w=n({o:void 0,v:!0,u:function(n,t){return!(!n||!Vt(n)&&Vt(t))}})[0],_=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=w(n.pop().contentRect),h=c[0],g=c[2],_=Vt(h);o=!Vt(g)&&_,a=!(e=!g||!_)}else i?a=n[1]:o=!0===n;if(u&&a){var p=i?n[0]:Et(s);L(s,p?l.n?-Rt:l.i?0:Rt:Rt),j(s,Rt)}e||r({in:!i,Sn:i?n:void 0,xn:!!o})},p=[],m=!!c&&_;if(Q){var y=new Q(_);y.observe(h),b(p,(function(){y.disconnect()}))}else{var S=H('
');B(h,S),on(h,Kn);var O,C=S[0],z=C.lastChild,M=C.firstChild,A=null==M?void 0:M.firstChild,I=On(C),T=I,R=!1,E=function(){L(M,Rt),j(M,Rt),L(z,Rt),j(z,Rt)},V=function(n){O=0,R&&(I=T,_(!0===n))},k=function(n){T=On(C),R=!n||!an(T,I),n?(Tn(n),R&&!O&&(Z(O),O=nn(V))):V(!1===n),E()};b(p,[In(M,Tt,k),In(z,Tt,k)]),pn(A,{width:Rt,height:Rt}),E(),m=c?k.bind(0,!1):E}if(u){var D=n({o:!g()},g)[0];b(p,In(s,Tt,(function(n){var t=D(),r=t[0];t[1]&&(en(h,"ltr rtl"),on(h,r?"rtl":"ltr"),_(t)),Tn(n)})))}return m&&(on(s,Gn),b(p,In(s,It,m,{O:!!Q}))),P(t,s),function(){x(p),F(s)}},Bt=function(n,t,r,i){var e=!1,o=i||{},u=o.On,a=o.Cn,f=o.zn,l=o.Mn,v=o.An,d=o.Ln,s=o.jn,h=function(n,t,r){var i,e=!1,o=function(o){r&&_(r.reduce((function(t,r){if(r){var i=r[0],e=r[1],u=e&&i&&(o?o(i):T(i,n));u&&u.length&&e&&c(e)&&b(t,[u,e.trim()],!0)}return t}),[]),(function(n){return _(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=In(r,o,(function(n){e?(f(),i.delete(r)):t(n)}));i.set(r,[o,f])}))}))};return r&&(i=new WeakMap,o()),[function(){e=!0},o]}(n,sn((function(){e&&r(!0)}),{s:33,g:99}),f),g=h[0],w=h[1],m=a||[],x=(u||[]).concat(m),S=function(e){var o=(t?d:v)||dn,u=s||dn,a=[],f=[],h=!1,g=!1,x=!1;_(e,(function(r){var e=r.attributeName,v=r.target,d=r.type,s=r.oldValue,w=r.addedNodes,_="attributes"===d,y="childList"===d,S=n===v,O=_&&c(e)?M(v,e):0,C=0!==O&&s!==O,z=p(m,e)>-1&&C;if(t&&!S){var A=!_,L=_&&z,j=L&&l&&R(v,l),I=(j?!o(v,e,s,O):A||L)&&!u(r,!!j,n,i);b(f,w),g=g||I,x=x||y}!t&&S&&C&&!o(v,e,s,O)&&(b(a,e),h=h||z)})),x&&!y(f)&&w((function(n){return f.reduce((function(t,r){return b(t,T(n,r)),R(r,n)?b(t,r):t}),[])})),t?g&&r(!1):y(a)&&!h||r(a,h)},O=new J(S);return O.observe(n,{attributes:!0,attributeOldValue:!0,attributeFilter:x,subtree:t,childList:t,characterData:t}),e=!0,[function(){e&&(g(),O.disconnect(),e=!1)},function(){e&&S(O.takeRecords())}]},Pt="os-",Dt=["tabindex"],Ft=["wrap","cols","rows"],qt=["id","class","style","open"],Ht=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={},_(u,(function(n){c[n]=1})),_(a,(function(n){c[n]?delete c[n]:c[n]=1})),O(c)).find((function(n){return 0!==n.indexOf(Pt)}))},Wt=function(t,r,i){var e,o,u,f=r[1],l=t.C,d=t.M,s=t.L,h=t.K,g=ht(),w=g.R,m=g.B,y=h?Ft:qt.concat(Ft),S=sn(i,{s:function(){return e},g:function(){return o},_:function(n,t){var r=n[0],i=r.in,e=r.wn,o=r.en,u=t[0],a=u.in,c=u.wn,f=u.en;return[{in:i||a,wn:e||c,en:o||f}]}}),O=function(n){_(n||Dt,(function(n){if(p(Dt,n)>-1){var t=M(l,n);c(t)?M(d,n,t):A(d,n)}}))},C=function(n){(n?i:S)({en:!0})},z=(s||!m)&&function(t,r){var i=q(nt),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(K){var a=new K((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=On(i);u(n)};b(e,kt(i,c)),c()}return P(t,i),function(){x(e),F(i)}}(l,(function(n){var t=n[0],r=n[1];f({tn:t}),i({rn:r})})),L=kt(l,(function(n){var t=n.in,r=n.Sn,e=n.xn,o=!t||e?i:S,u=!1;if(r){var a=r[0];u=r[1],f({un:a})}o({in:t,an:u})}),{xn:!0,yn:!w}),j=Bt(l,!1,(function(n,t){t?S({wn:!0}):O(n)}),{Cn:qt,On:qt.concat(Dt),An:Ht})[0];return O(),[function(n){var t=n("updating.elementEvents"),r=t[0],i=t[1],c=n("updating.attributes"),f=c[0],l=c[1],h=n("updating.debounce"),g=h[0],w=h[1];if((i||l)&&(u&&(u[1](),u[0]()),u=Bt(s||d,!0,C,{Cn:y.concat(f||[]),On:y.concat(f||[]),zn:r,Ln:Ht})),w)if(S.p(),v(g)){var _=g[0],p=g[1];e=!!a(_)&&_,o=!!a(p)&&p}else a(g)?(e=g,o=!1):(e=!1,o=!1)},function(){u&&u[0](),z&&z(),L(),j()}]},Yt={A:{t:0,r:0,b:0,l:0},cn:!1,fn:{marginRight:0,marginBottom:0,marginLeft:0,paddingTop:0,paddingRight:0,paddingBottom:0,paddingLeft:0},pn:{w:0,h:0},_n:{x:!1,y:!1},tn:!1,un:!1},Nt=function(n,t){var r=Bn(t,{}),i=Pn(Yt),e=new Set,u=i[0],c=function(n,t,r){x(e,[n,t||{},!!r])},f=mt(n),l=f[0],v=f[1],d=function(n,t){var r=n.M,i=ht(),e=i.R,u=i.T,c=i.B,f=!e&&(u.x||u.y),l=[yt(n,t),xt(n,t),Lt(n,t)];return function(n,t,i){var e=jt(C({in:!1,wn:!1,en:!1,ln:!1,an:!1,rn:!1,mn:!1,bn:!1},Object.keys(t).reduce((function(n,r){return o(t[r])||(n[r]=t[r]),n}),{})),{},i),u=f||!c,v=u&&L(r),d=u&&j(r),s=e;return _(l,(function(t){s=jt(s,t(s,n,!!i)||{},i)})),a(v)&&L(r,v),a(d)&&j(r,d),s}}(l,i),s=Wt(l,i,(function(n){c(d(r,n))})),h=s[0],g=s[1],w=u.bind(0);return w.In=function(n){e.add(n)},w.Tn=l,[function(n,r){var i=Bn(t,n,r);h(i),c(d(i,{},r))},w,function(){e.clear(),g(),v()}]},Xt=function(n){var t=q(tt+" "+n),r=q(et),i=q(ot);return B(t,r),B(r,i),{Rn:t,En:r,Vn:i}},Ut=function(n,t,r){var i=Pn({})[0],e=function(n,t){var r=(0,ht().D)().j,i=t.N,e=t.C,o=t.M,u=!t.nn&&n.scrollbarsSlot,a=(l(u)?u(i,e,o):u)||(l(r)?r(i,e,o):r)||e,c=Xt(rt),f=Xt(it),v=c.Rn,d=f.Rn;return B(a,v),B(a,d),[{kn:c,Bn:f},F.bind(0,[v,d])]}(n,r),o=e[0],u=e[1],a=i.bind(0);return a.Tn=o,[function(n,r){var i=Bn(t,n,r);console.log(i)},a,function(){u()}]},$t={};var Gt,Jt={exports:{}};!function(n){function t(){return n.exports=t=Object.assign?Object.assign.bind():function(n){for(var t=1;t0,y:n.h>0},scrollableOverflow:C({},t)}},er=function n(t,r,i){var e=ht(),o=e.q,u=e.T,a=e.P,c=C({},$t),f=g(t)?t:t.target,s=function(n){return tr.get(n)}(f);if(s)return s;var h=c[Zt],w=function(n){var t=n||{},r=h&&h.Dn;return r?r(t,!0):t},p=C({},o(),w(r)),b=rr(i),m=b[0],y=b[1],x=b[2];u.x&&u.y&&!p.nativeScrollbarsOverlaid.initialize&&x("initializationWithdrawn");var z=Nt(t,p),M=z[0],A=z[1],L=z[2],j=Ut(t,p,A.Tn),I=j[0],T=j[2],R=function(n,t){M(n,t),I(n,t)};A.In((function(n,t,r){var i=n.in,e=n.en,o=n.wn,u=n.an,a=n.rn,c=n.bn,f=n.mn,l=A(),v=l.pn,d=l._n;(c||f)&&x("overflowChanged",C({},ir(v,d),{previous:ir(v,d)})),x("updated",{updateHints:{sizeChanged:i,contentMutation:e,hostMutation:o,directionChanged:u,heightIntrinsicChanged:a},changedOptions:t,force:r})}));var E=a(R.bind(0,{},!0)),V={options:function(n){if(n){var t=function n(t,r){var i={};return _(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{ut(o)===ut(u)&&(a=!1)}catch(c){}a&&(i[e]=u)}})),i}(p,w(n));(function(n){for(var t in n)return!1;return!0})(t)||(C(p,t),R(t))}return p},on:m,off:y,state:function(){return{Fn:A().pn}},update:function(n){R({},n)},destroy:function(){!function(n){tr.delete(n),nr.delete(n)}(f),E(),y(),T(),L(),x("destroyed")}};return _(O(c),(function(t){var r=c[t];l(r)&&r(n,V)})),V.update(!0),function(n,t){tr.set(n,t),nr.add(n)}(f,V),x("initialized"),V};return er.extend=function(n){return _(v(n)?n:[n],(function(n){$t[n[0]]=n[1]}))},er})); \ 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,o=n.u,e=n.v,u=i,a=function(n,t){var i=u,a=n,c=t||(o?!o(i,a):i!==a);return(c||e)&&(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,o=r.hasOwnProperty;function e(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 h(n){if(!n||!d(n)||"object"!==function(n){return e(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=o.call(n,r),l=c&&o.call(c,"isPrototypeOf");if(a&&!f&&!l)return!1;for(t in n);return e(t)||o.call(n,t)}function g(n){var r=window.HTMLElement;return!!n&&(r?n instanceof r:n.nodeType===t)}function w(n){var r=window.Element;return!!n&&(r?n instanceof r:n.nodeType===t)}function _(n,t){if(s(n))for(var r=0;r0;i=u[o++];)e=!!r(n.classList,i)&&e}return e},on=function(n,t){rn(n,t,(function(n,t){return n.remove(t)}))},en=function(n,t){return rn(n,t,(function(n,t){return n.add(t)})),on.bind(0,n,t)},un=function(n,t,r,i){if(n&&t){var o=!0;return _(r,(function(r){(i?i(n[r]):n[r])!==(i?i(t[r]):t[r])&&(o=!1)})),o}return!1},an=function(n,t){return un(n,t,["w","h"])},cn=function(n,t){return un(n,t,["x","y"])},fn=function(n,t){return un(n,t,["t","r","b","l"])},ln=function(n,t,r){return un(n,t,["width","height"],r&&function(n){return Math.round(n)})},vn=function(n){n&&window.clearTimeout(n),n&&Z(n)},dn=function(){},sn=function(n,t){var r,i,o,e,u=t||{},c=u.s,f=u.g,v=u._,d=window.setTimeout,s=function(t){vn(r),vn(i),i=r=o=void 0,n.apply(this,t)},h=function(n){return v&&o?v(o,n):n},g=function(){r&&s(h(e)||e)},w=function(){var n=m(arguments),t=l(c)?c():c,u=a(t)&&t>=0;if(u){var v=l(f)?f():f,w=a(v)&&v>=0,_=t>0?d:nn,p=h(n),b=p||n,y=s.bind(0,b);vn(r),r=_(y,t),w&&!i&&(i=d(g,v)),o=e=b}else s(n)};return w.p=g,w},hn={opacity:1,zindex:1},gn=function(n,t){var r=t?parseFloat(n):parseInt(n,10);return Number.isNaN(r)?0:r},wn=function(n,t,r){return null!=t?t[r]||t.getPropertyValue(r):n.style[r]},_n=function(n,t,r){try{if(n){var i=n.style;e(i[t])?i.setProperty(t,r):i[t]=function(n,t){return!hn[n.toLowerCase()]&&a(t)?t+"px":t}(t,r)}}catch(o){}};function pn(n,t){var r=c(t);if(v(t)||r){var i=r?"":{};if(n){var o=window.getComputedStyle(n,null);i=r?wn(n,o,t):t.reduce((function(t,r){return t[r]=wn(n,o,r),t}),i)}return i}_(C(t),(function(r){return _n(n,r,t[r])}))}var bn,mn,yn=function(n,t,r){var i=t?t+"-":"",o=r?"-"+r:"",e=i+"top"+o,u=i+"right"+o,a=i+"bottom"+o,c=i+"left"+o,f=pn(n,[e,u,a,c]);return{t:gn(f[e]),r:gn(f[u]),b:gn(f[a]),l:gn(f[c])}},xn={w:0,h:0},Sn=function(){return{w:window.innerWidth,h:window.innerHeight}},Cn=function(n){return n?{w:n.offsetWidth,h:n.offsetHeight}:xn},On=function(n){return n?{w:n.clientWidth,h:n.clientHeight}:xn},zn=function(n){return n?{w:n.scrollWidth,h:n.scrollHeight}:xn},An=function(n){var t=parseFloat(pn(n,"height"))||0,r=parseFloat(pn(n,"height"))||0;return{w:r-Math.round(r),h:t-Math.round(t)}},Mn=function(n){return n.getBoundingClientRect()},Ln=function(n){return n.split(" ")},In=function(n,t,r,i){_(Ln(t),(function(t){n.removeEventListener(t,r,i)}))},jn=function(n,t,r,i){var o=function(){if(e(bn)){bn=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){bn=!0}}))}catch(n){}}return bn}(),u=o&&i&&i.m||!1,a=i&&i.S||!1,c=i&&i.C||!1,f=[],l=o?{passive:u,capture:a}:a;return _(Ln(t),(function(t){var i=c?function(o){n.removeEventListener(t,i,a),r&&r(o)}:r;b(f,In.bind(null,n,t,i,a)),n.addEventListener(t,i,l)})),x.bind(0,f)},Tn=function(n){return function(n){return n.stopPropagation()}(n)||function(n){return n.preventDefault()}(n)},Rn={x:0,y:0},En=function(n){var t=n?Mn(n):0;return t?{x:t.left+window.pageYOffset,y:t.top+window.pageXOffset}:Rn},Vn=function(n,t){_(v(t)?t:[t],n)},kn=function(n,t){return n?t.split(".").reduce((function(n,t){return n&&S(n,t)?n[t]:void 0}),n):void 0},Bn=function(n,t,r){return function(i){return[kn(n,i),r||void 0!==kn(t,i)]}},Pn=function(n){var t=n;return[function(){return t},function(n){t=O({},t,n)}]},Dn="os-environment",qn=Dn+"-flexbox-glue",Fn=qn+"-max",Hn="os-host",Wn="os-padding",Yn="os-viewport",Nn=Yn+"-arrange",Xn="os-content",Un=Yn+"-scrollbar-styled",$n="os-size-observer",Gn=$n+"-appear",Jn=$n+"-listener",Kn=Jn+"-scroll",Qn=Jn+"-item",Zn=Qn+"-final",nt="os-trinsic-observer",tt="os-scrollbar",rt=tt+"-horizontal",it=tt+"-vertical",ot="os-scrollbar-track",et="os-scrollbar-handle",ut=function(n){return JSON.stringify(n,(function(n,t){if(l(t))throw new Error;return t}))},at={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}},ct=Math.abs,ft=Math.round,lt=function(n,t,r){B(n,t);var i=On(t),o=Cn(t),e=An(r);return{x:o.h-i.h+e.h,y:o.w-i.w+e.w}},vt=function(n,t){var r="hidden";pn(n,{overflowX:r,overflowY:r,direction:"rtl"}),L(n,0);var i=En(n),o=En(t);L(n,-999);var e=En(t);return{i:i.x===o.x,n:o.x!==e.x}},dt=function(){var n=window.screen.deviceXDPI||0,t=window.screen.logicalXDPI||1;return window.devicePixelRatio||n/t},st=function(){var t,r,i,o,e,u,a,c,f,l,v=document.body,d=H('
')[0],s=d.firstChild,h=new Set,g=n({o:lt(v,d,s),u:cn}),w=g[0],_=(0,g[1])()[0],p=function(n){var t=!1,r=en(n,Un);try{t="none"===pn(n,$("scrollbar-width"))||"none"===window.getComputedStyle(n,"::-webkit-scrollbar").getPropertyValue("display")}catch(i){}return r(),t}(d),b={x:0===_.x,y:0===_.y},m=function(n){return{O:null,A:null,M:!n,L:!1,I:null}}(p),y=O({},at),S={j:_,T:b,R:p,V:"-1"===pn(d,"zIndex"),k:vt(d,s),B:(t=d,r=s,i=en(t,qn),o=Mn(t),e=Mn(r),u=ln(e,o,!0),a=en(t,Fn),c=Mn(t),f=Mn(r),l=ln(f,c,!0),i(),a(),u&&l),P:function(n){return h.add(n),function(){return h.delete(n)}},D:O.bind(0,{},m),q:function(n){O(m,n)},F:O.bind(0,{},y),H:function(n){O(y,n)},W:O({},m),Y:O({},y)};if(M(d,"style"),q(d),!(p||b.x&&b.y)){var C=Sn(),z=dt();window.addEventListener("resize",(function(){if(h.size){var n=Sn(),t={w:n.w-C.w,h:n.h-C.h};if(0===t.w&&0===t.h)return;var r={w:ct(t.w),h:ct(t.h)},i={w:ct(ft(n.w/(C.w/100))),h:ct(ft(n.h/(C.h/100)))},o=dt(),e=r.w>2&&r.h>2,u=(l=i.h,g=ct(i.w),_=ct(l),!(g!==_&&g+1!==_&&g-1!==_));if(e&&u&&(o!==z&&z>0)){var a=w(lt(v,d,s)),c=a[0],f=a[1];O(mn.j,c),q(d),f&&x(h)}C=n,z=o}var l,g,_}))}return S},ht=function(){return mn||(mn=st()),mn},gt=0,wt=function(n){B(V(n),E(n)),q(n)},_t=function(){var n=ht(),t=n.R,r=n.T,i=!!(!n.V&&!t&&(r.x||r.y))&&document.createElement("style");return i&&(A(i,"id",Nn+"-"+gt),gt++),i},pt=function(n,t,r,i){return t||(l(r)?r(n):r)||F(i)},bt=function(n,t,r,i){var o=f(t)||t?t:l(r)?r(n):r;return!0===o?F(i):o},mt=function(n){var t,r,i=ht(),o=i.D,e=i.R,u=o(),a=u.O,c=u.A,f=u.M,l=u.L,v=g(n),d=n,s=v?n:d.target,h=R(s,"textarea"),w=!h&&R(s,"body"),_=s.ownerDocument,m=_.body,y=_.defaultView,S={N:s,O:h?pt(s,d.host,a,Hn):s,A:pt(s,d.viewport,c,Yn),M:bt(s,d.padding,f,Wn),L:bt(s,d.content,l,Xn),X:_t(),U:y,$:_,G:V(m),J:m,K:h,Z:w,nn:v},O=C(S).reduce((function(n,t){var r=S[t];return b(n,!(!r||V(r))&&r)}),[]),z=function(n){return n?p(O,n)>-1:null},A=S.N,M=S.O,L=S.M,I=S.A,j=S.L,T=S.X,P=[],F=h&&z(M),H=h?A:E([j,I,L,M,A].find((function(n){return!1===z(n)}))),W=j||I;return F&&(D(A,M),b(P,(function(){D(M,A),q(M)}))),B(W,H),B(M,L),B(L||M,I),B(I,j),en(M,Hn),en(L,Wn),en(I,Yn),en(j,Xn),b(P,(function(){v?(B(M,E(W)),q(L||I),on(M,Hn)):(z(j)&&wt(j),z(I)&&wt(I),z(L)&&wt(L),on(M,Hn),on(L,Wn),on(I,Yn),on(j,Xn))})),e&&b(P,on.bind(0,I,Un)),T&&(r=T,k(V(t=I),t,r),b(P,q.bind(0,T))),[S,x.bind(0,P)]},yt=function(n,t){var r=n.L,i=t[0];return function(n){var t=i().tn,o=n.rn;return o&&pn(r,{height:t?"":"100%",display:t?"":"inline"}),{in:o,en:o}}},xt=function(t,r){var i=r[0],o=r[1],e=t.O,u=t.M,a=t.A,c=n({u:fn,o:yn()},yn.bind(0,e,"padding","")),f=c[0],l=c[1];return function(n,t,r){var e=l(r),c=e[0],v=e[1],d=ht(),s=d.R,h=d.B,g=i().un,w=n.in,_=n.en,p=n.an,b=t("paddingAbsolute"),m=b[0],y=b[1];if(w||v||!h&&_){var x=f(r);c=x[0],v=x[1]}var S=y||p||v;if(S){var C=!m||!u&&!s,z=c.r+c.l,A=c.t+c.b,M={marginRight:C&&!g?-z:0,marginBottom:C?-A:0,marginLeft:C&&g?-z:0,top:C?-c.t:0,right:C?g?-c.r:"auto":0,left:C?g?"auto":-c.l:0,width:C?"calc(100% + "+z+"px)":""},L={paddingTop:C?c.t:0,paddingRight:C?c.r:0,paddingBottom:C?c.b:0,paddingLeft:C?c.l:0};pn(u||a,M),pn(a,L),o({M:c,cn:!C,fn:u?L:O({},M,L)})}return{ln:S}}},St=Math.max,Ct=42,Ot={u:an,o:{w:0,h:0}},zt={u:cn,o:{x:!1,y:!1}},At=function(n,t,r,i){var o=n?"overflowX":"overflowY",e=0===r.indexOf("visible"),u="visible-hidden"===r,a="scroll"===r,c=t>0;return e&&(i[o]="visible"),a&&c&&(i[o]=r),[e,u?"hidden":"scroll"]},Mt=function(t,r){var i=r[0],o=r[1],e=t.O,u=t.A,a=t.X,c=ht(),f=c.j,l=c.B,v=c.R,d=c.T,s=!v&&(d.x||d.y),h=n(Ot,An.bind(0,e)),g=h[0],w=h[1],p=n(Ot,zn.bind(0,u)),b=p[0],m=p[1],y=n(Ot),x=y[0],S=y[1],O=n(zt)[0],z=function(n,t){if(pn(u,{height:""}),t){var r=i(),o=r.cn,a=r.M,c=n.vn,f=n.dn,l=An(e),v=On(e),s="content-box"===pn(u,"boxSizing"),h=o||s?a.b+a.t:0,g=!(d.x&&s);pn(u,{height:v.h+l.h+(c.x&&g?f.x:0)-h})}},M=function(n,t){var r=d.x,i=d.y,o=v||n?0:Ct,e=!t?pn(u,["overflowX","overflowY"]):t,a={x:"scroll"===e.overflowX,y:"scroll"===e.overflowY},c={x:r?o:f.x,y:i?o:f.y};return{vn:a,sn:{x:r&&!!o,y:i&&!!o},dn:{x:a.x&&!v?c.x:0,y:a.y&&!v?c.y:0}}},L=function(n,t,r,o){if(s){var e=i().fn,c=n.dn,f=n.sn,l=f.x,v=f.y,d=c.x,h=c.y,g=e[o?"paddingRight":"paddingLeft"],w=e.paddingTop,_=t.w+r.w,p=t.h+r.h,b={w:h&&v?h+_-g+"px":"",h:d&&l?d+p-w+"px":""};if(a){var m=a.sheet;if(m){var y=m.cssRules;if(y){y.length||m.insertRule("#"+A(a,"id")+" + ."+Nn+"::before {}",0);var x=y[0].style;x.width=b.w,x.height=b.h}}}else pn(u,{"--os-vaw":b.w,"--os-vah":b.h})}return s},I=function(n,t,r,o){var e=n.dn,u=n.sn,a=u.x,c=u.y,f=e.x,l=e.y,v=i().fn,d=t?"marginLeft":"marginRight",s=t?"paddingLeft":"paddingRight",h=v[d],g=v.marginBottom,w=v[s],_=v.paddingBottom;o.width="calc(100% + "+(l+-1*h)+"px)",o[d]=-l+h,o.marginBottom=-f+g,r&&(o[s]=w+(c?l:0),o.paddingBottom=_+(a?f:0))};return function(n,t,r){var e,a=n.in,c=n.hn,f=n.en,h=n.ln,p=n.rn,y=n.an,A=i(),j=A.tn,T=A.un,R=t("nativeScrollbarsOverlaid.show"),E=R[0],V=R[1],k=t("overflow"),B=k[0],P=k[1],D=E&&d.x&&d.y,q=!l&&(a||f||c||V||p),F=w(r),H=m(r),W=S(r);if(V&&v&&(D?on(u,Un):en(u,Un)),q&&(e=M(D),z(e,j)),a||h||f||y||V){var Y=function(n,t,r){if(s){var o=r||M(n),e=i().fn,a=o.sn,c=a.x,f=a.y,v={},d=function(n){return _(n.split(" "),(function(n){v[n]=e[n]}))};c&&d("marginBottom paddingTop paddingBottom"),f&&d("marginLeft marginRight paddingLeft paddingRight");var h=pn(u,C(v));return on(u,Nn),l||(v.height=""),pn(u,v),[function(){I(o,t,s,h),pn(u,h),en(u,Nn)},o]}return[dn]}(D,T,e),N=Y[0],X=Y[1],U=F=g(r),$=U[0],G=U[1],J=H=b(r),K=J[0],Q=J[1],Z=On(u),nn=K,tn=Z;N(),(Q||G||V)&&X&&!D&&L(X,K,$,T)&&(tn=On(u),nn=zn(u)),W=x(function(n,t,r){var i=window.devicePixelRatio%2!=0?1:0,o={w:St(0,n.w-t.w-St(0,r.w)),h:St(0,n.h-t.h-St(0,r.h))};return{w:o.w>=i?o.w:0,h:o.h>=i?o.h:0}}({w:St(K.w,nn.w),h:St(K.h,nn.h)},{w:tn.w+St(0,Z.w-K.w),h:tn.h+St(0,Z.h-K.h)},$),r)}var rn=W,un=rn[0],an=rn[1],cn=H,fn=cn[0],ln=cn[1],vn=F,sn=vn[0],hn=vn[1];if(h||y||hn||ln||an||P||V||q){var gn={marginRight:0,marginBottom:0,marginLeft:0,width:"",overflowY:"",overflowX:""},wn=function(n,t,r,i){var o=At(!0,t.w,r.x,i),e=o[0],u=o[1],a=At(!1,t.h,r.y,i),c=a[0],f=a[1];return e&&!c&&(i.overflowX=u),c&&!e&&(i.overflowY=f),M(n,i)}(D,un,B,gn),_n=L(wn,fn,sn,T),bn=O(wn.vn),mn=bn[0],yn=bn[1];return I(wn,T,_n,gn),q&&z(wn,j),pn(u,gn),o({vn:mn,gn:un}),{wn:an,_n:yn}}}},Lt=function(n,t,r){var i={},o=t||{};return _(C(n).concat(C(o)),(function(t){var e=n[t],u=o[t];i[t]=!!(r||e||u)})),i},It="animationstart",jt="scroll",Tt=3333333,Rt=function(n){return"rtl"===pn(n,"direction")},Et=function(n){return n&&(n.height||n.width)},Vt=function(t,r,i){var o=i||{},e=o.pn,u=void 0!==e&&e,a=o.bn,c=void 0!==a&&a,l=ht().k,s=H('
')[0],h=s.firstChild,g=Rt.bind(0,s),w=n({o:void 0,v:!0,u:function(n,t){return!(!n||!Et(n)&&Et(t))}})[0],_=function(n){var t=v(n)&&n.length>0&&d(n[0]),i=!t&&f(n[0]),o=!1,e=!1,a=!0;if(t){var c=w(n.pop().contentRect),h=c[0],g=c[2],_=Et(h);e=!Et(g)&&_,a=!(o=!g||!_)}else i?a=n[1]:e=!0===n;if(u&&a){var p=i?n[0]:Rt(s);L(s,p?l.n?-Tt:l.i?0:Tt:Tt),I(s,Tt)}o||r({in:!i,mn:i?n:void 0,bn:!!e})},p=[],m=!!c&&_;if(Q){var y=new Q(_);y.observe(h),b(p,(function(){y.disconnect()}))}else{var S=H('
');B(h,S),en(h,Kn);var C,O=S[0],z=O.lastChild,A=O.firstChild,M=null==A?void 0:A.firstChild,j=Cn(O),T=j,R=!1,E=function(){L(A,Tt),I(A,Tt),L(z,Tt),I(z,Tt)},V=function(n){C=0,R&&(j=T,_(!0===n))},k=function(n){T=Cn(O),R=!n||!an(T,j),n?(Tn(n),R&&!C&&(Z(C),C=nn(V))):V(!1===n),E()};b(p,[jn(A,jt,k),jn(z,jt,k)]),pn(M,{width:Tt,height:Tt}),E(),m=c?k.bind(0,!1):E}if(u){var D=n({o:!g()},g)[0];b(p,jn(s,jt,(function(n){var t=D(),r=t[0];t[1]&&(on(h,"ltr rtl"),en(h,r?"rtl":"ltr"),_(t)),Tn(n)})))}return m&&(en(s,Gn),b(p,jn(s,It,m,{C:!!Q}))),P(t,s),function(){x(p),q(s)}},kt=function(n,t,r,i){var o=!1,e=i||{},u=e.yn,a=e.xn,f=e.Sn,l=e.Cn,v=e.On,d=e.zn,s=e.An,h=function(n,t,r){var i,o=!1,e=function(e){r&&_(r.reduce((function(t,r){if(r){var i=r[0],o=r[1],u=o&&i&&(e?e(i):T(i,n));u&&u.length&&o&&c(o)&&b(t,[u,o.trim()],!0)}return t}),[]),(function(n){return _(n[0],(function(r){var e=n[1],u=i.get(r);if(u){var a=u[0],c=u[1];a===e&&c()}var f=jn(r,e,(function(n){o?(f(),i.delete(r)):t(n)}));i.set(r,[e,f])}))}))};return r&&(i=new WeakMap,e()),[function(){o=!0},e]}(n,sn((function(){o&&r(!0)}),{s:33,g:99}),f),g=h[0],w=h[1],m=a||[],x=(u||[]).concat(m),S=function(o){var e=(t?d:v)||dn,u=s||dn,a=[],f=[],h=!1,g=!1,x=!1;_(o,(function(r){var o=r.attributeName,v=r.target,d=r.type,s=r.oldValue,w=r.addedNodes,_="attributes"===d,y="childList"===d,S=n===v,C=_&&c(o)?A(v,o):0,O=0!==C&&s!==C,z=p(m,o)>-1&&O;if(t&&!S){var M=!_,L=_&&z,I=L&&l&&R(v,l),j=(I?!e(v,o,s,C):M||L)&&!u(r,!!I,n,i);b(f,w),g=g||j,x=x||y}!t&&S&&O&&!e(v,o,s,C)&&(b(a,o),h=h||z)})),x&&!y(f)&&w((function(n){return f.reduce((function(t,r){return b(t,T(n,r)),R(r,n)?b(t,r):t}),[])})),t?g&&r(!1):y(a)&&!h||r(a,h)},C=new J(S);return C.observe(n,{attributes:!0,attributeOldValue:!0,attributeFilter:x,subtree:t,childList:t,characterData:t}),o=!0,[function(){o&&(g(),C.disconnect(),o=!1)},function(){o&&S(C.takeRecords())}]},Bt="os-",Pt=["tabindex"],Dt=["wrap","cols","rows"],qt=["id","class","style","open"],Ft=function(n,t,r,i){var o,e,u,a,c;return!("class"!==t||!r||!i)&&!!(e=i,u=(o=r)&&o.split(" "),a=e&&e.split(" "),c={},_(u,(function(n){c[n]=1})),_(a,(function(n){c[n]?delete c[n]:c[n]=1})),C(c)).find((function(n){return 0!==n.indexOf(Bt)}))},Ht=function(t,r,i){var o,e,u,f=r[1],l=t.O,d=t.A,s=t.L,h=t.K,g=ht(),w=g.R,m=g.B,y=h?Dt:qt.concat(Dt),S=sn(i,{s:function(){return o},g:function(){return e},_:function(n,t){var r=n[0],i=t[0];return[C(r).concat(C(i)).reduce((function(n,t){return n[t]=r[t]||i[t],n}),{})]}}),O=function(n){_(n||Pt,(function(n){if(p(Pt,n)>-1){var t=A(l,n);c(t)?A(d,n,t):M(d,n)}}))},z=function(n){(n?i:S)({en:!0})},L=(s||!m)&&function(t,r){var i=F(nt),o=[],e=n({o:!1})[0],u=function(n){if(n){var t=e(0===(i=n).h||i.isIntersecting||i.intersectionRatio>0);t[1]&&r(t)}var i};if(K){var a=new K((function(n){n&&n.length>0&&u(n.pop())}),{root:t});a.observe(i),b(o,(function(){a.disconnect()}))}else{var c=function(){var n=Cn(i);u(n)};b(o,Vt(i,c)),c()}return P(t,i),function(){x(o),q(i)}}(l,(function(n){var t=n[0],r=n[1];f({tn:t}),i({rn:r})})),I=Vt(l,(function(n){var t=n.in,r=n.mn,o=n.bn,e=!t||o?i:S,u=!1;if(r){var a=r[0];u=r[1],f({un:a})}e({in:t,an:u})}),{bn:!0,pn:!w}),j=kt(l,!1,(function(n,t){t?S({hn:!0}):O(n)}),{xn:qt,yn:qt.concat(Pt),On:Ft})[0];return O(),[function(n){var t=n("updating.elementEvents"),r=t[0],i=t[1],c=n("updating.attributes"),f=c[0],l=c[1],h=n("updating.debounce"),g=h[0],w=h[1];if((i||l)&&(u&&(u[1](),u[0]()),u=kt(s||d,!0,z,{xn:y.concat(f||[]),yn:y.concat(f||[]),Sn:r,zn:Ft})),w)if(S.p(),v(g)){var _=g[0],p=g[1];o=!!a(_)&&_,e=!!a(p)&&p}else a(g)?(o=g,e=!1):(o=!1,e=!1)},function(){u&&u[0](),L&&L(),I(),j()}]},Wt={M:{t:0,r:0,b:0,l:0},cn:!1,fn:{marginRight:0,marginBottom:0,marginLeft:0,paddingTop:0,paddingRight:0,paddingBottom:0,paddingLeft:0},gn:{w:0,h:0},vn:{x:!1,y:!1},tn:!1,un:!1},Yt=function(n,t){var r=Bn(t,{}),i=Pn(Wt),o=new Set,e=i[0],u=function(n,t,r){x(o,[n,t||{},!!r])},c=mt(n),f=c[0],l=c[1],v=function(n,t){var r=n.A,i=ht(),o=i.R,e=i.T,u=i.B,c=!o&&(e.x||e.y),f=[yt(n,t),xt(n,t),Mt(n,t)];return function(n,t,i){var o=Lt(O({in:!1,ln:!1,an:!1,rn:!1,_n:!1,wn:!1,hn:!1,en:!1},t),{},i),e=c||!u,l=e&&L(r),v=e&&I(r),d=o;return _(f,(function(t){d=Lt(d,t(d,n,!!i)||{},i)})),a(l)&&L(r,l),a(v)&&I(r,v),d}}(f,i),d=Ht(f,i,(function(n){u(v(r,n))})),s=d[0],h=d[1],g=e.bind(0);return g.Mn=function(n){o.add(n)},g.Ln=f,[function(n,r){var i=Bn(t,n,r);s(i),u(v(i,{},r))},g,function(){o.clear(),h(),l()}]},Nt=function(n){var t=F(tt+" "+n),r=F(ot),i=F(et);return B(t,r),B(r,i),{In:t,jn:r,Tn:i}},Xt=function(n,t,r){var i=Pn({})[0],o=function(n,t){var r=(0,ht().D)().I,i=t.N,o=t.O,e=t.A,u=!t.nn&&n.scrollbarsSlot,a=(l(u)?u(i,o,e):u)||(l(r)?r(i,o,e):r)||o,c=Nt(rt),f=Nt(it),v=c.In,d=f.In;return B(a,v),B(a,d),[{Rn:c,En:f},q.bind(0,[v,d])]}(n,r),e=o[0],u=o[1],a=i.bind(0);return a.Ln=e,[function(n,r){var i=Bn(t,n,r);console.log(i)},a,function(){u()}]},Ut={};var $t,Gt={exports:{}};!function(n){function t(){return n.exports=t=Object.assign?Object.assign.bind():function(n){for(var t=1;t0,y:n.h>0},scrollableOverflow:O({},t)}},ir=function n(t,r,i){var o=ht(),e=o.F,u=o.T,a=o.P,c=O({},Ut),f=g(t)?t:t.target,s=function(n){return nr.get(n)}(f);if(s)return s;var h=c[Qt],w=function(n){var t=n||{},r=h&&h.kn;return r?r(t,!0):t},p=O({},e(),w(r)),b=tr(i),m=b[0],y=b[1],x=b[2];u.x&&u.y&&!p.nativeScrollbarsOverlaid.initialize&&x("initializationWithdrawn");var z=Yt(t,p),A=z[0],M=z[1],L=z[2],I=Xt(t,p,M.Ln),j=I[0],T=I[2],R=function(n,t){A(n,t),j(n,t)};M.Mn((function(n,t,r){var i=n.in,o=n.an,e=n.rn,u=n.wn,a=n._n,c=n.en,f=n.hn,l=M(),v=l.gn,d=l.vn;(u||a)&&x("overflowChanged",O({},rr(v,d),{previous:rr(v,d)})),x("updated",{updateHints:{sizeChanged:i,directionChanged:o,heightIntrinsicChanged:e,overflowAmountChanged:u,overflowScrollChanged:a,contentMutation:c,hostMutation:f},changedOptions:t,force:r})}));var E=a(R.bind(0,{},!0)),V={options:function(n){if(n){var t=function n(t,r){var i={};return _(C(r).concat(C(t)),(function(o){var e=t[o],u=r[o];if(d(e)&&d(u))O(i[o]={},n(e,u));else if(S(r,o)&&u!==e){var a=!0;if(v(e)||v(u))try{ut(e)===ut(u)&&(a=!1)}catch(c){}a&&(i[o]=u)}})),i}(p,w(n));(function(n){for(var t in n)return!1;return!0})(t)||(O(p,t),R(t))}return p},on:m,off:y,state:function(){return{gn:M().gn}},update:function(n){R({},n)},destroy:function(){!function(n){nr.delete(n),Zt.delete(n)}(f),E(),y(),T(),L(),x("destroyed")}};return _(C(c),(function(t){var r=c[t];l(r)&&r(n,V)})),V.update(!0),function(n,t){nr.set(n,t),Zt.add(n)}(f,V),x("initialized"),V};return ir.extend=function(n){return _(v(n)?n:[n],(function(n){Ut[n[0]]=n[1]}))},ir})); \ No newline at end of file diff --git a/packages/overlayscrollbars/src/eventListeners.ts b/packages/overlayscrollbars/src/eventListeners.ts index 4c488ed..5cd4ce0 100644 --- a/packages/overlayscrollbars/src/eventListeners.ts +++ b/packages/overlayscrollbars/src/eventListeners.ts @@ -22,10 +22,12 @@ onHostSizeChanged : null, // gone export interface OnUpdatedEventListenerArgs { updateHints: { sizeChanged: boolean; - hostMutation: boolean; - contentMutation: boolean; directionChanged: boolean; heightIntrinsicChanged: boolean; + overflowAmountChanged: boolean; + overflowScrollChanged: boolean; + hostMutation: boolean; + contentMutation: boolean; }; changedOptions: PartialOptions; force: boolean; diff --git a/packages/overlayscrollbars/src/overlayscrollbars.ts b/packages/overlayscrollbars/src/overlayscrollbars.ts index b41d904..689b67d 100644 --- a/packages/overlayscrollbars/src/overlayscrollbars.ts +++ b/packages/overlayscrollbars/src/overlayscrollbars.ts @@ -111,35 +111,33 @@ export const OverlayScrollbars: OverlayScrollbarsStatic = ( structureState._addOnUpdatedListener((updateHints, changedOptions, force) => { const { _sizeChanged, - _contentMutation, - _hostMutation, _directionChanged, _heightIntrinsicChanged, _overflowAmountChanged, _overflowScrollChanged, + _contentMutation, + _hostMutation, } = updateHints; - const { _viewportOverflowAmount, _viewportOverflowScroll } = structureState(); + const { _overflowAmount, _overflowScroll } = structureState(); if (_overflowAmountChanged || _overflowScrollChanged) { triggerEvent( 'overflowChanged', - assignDeep( - {}, - createOverflowChangedArgs(_viewportOverflowAmount, _viewportOverflowScroll), - { - previous: createOverflowChangedArgs(_viewportOverflowAmount!, _viewportOverflowScroll!), - } - ) + assignDeep({}, createOverflowChangedArgs(_overflowAmount, _overflowScroll), { + previous: createOverflowChangedArgs(_overflowAmount!, _overflowScroll!), + }) ); } triggerEvent('updated', { updateHints: { sizeChanged: _sizeChanged, - contentMutation: _contentMutation, - hostMutation: _hostMutation, directionChanged: _directionChanged, heightIntrinsicChanged: _heightIntrinsicChanged, + overflowAmountChanged: _overflowAmountChanged, + overflowScrollChanged: _overflowScrollChanged, + contentMutation: _contentMutation, + hostMutation: _hostMutation, }, changedOptions, force, @@ -163,7 +161,7 @@ export const OverlayScrollbars: OverlayScrollbarsStatic = ( on: addEvent, off: removeEvent, state: () => ({ - _overflowAmount: structureState()._viewportOverflowAmount, + _overflowAmount: structureState()._overflowAmount, }), update(force?: boolean) { update({}, force); diff --git a/packages/overlayscrollbars/src/setups/structureSetup/structureSetup.observers.ts b/packages/overlayscrollbars/src/setups/structureSetup/structureSetup.observers.ts index 1980faf..c25a4e2 100644 --- a/packages/overlayscrollbars/src/setups/structureSetup/structureSetup.observers.ts +++ b/packages/overlayscrollbars/src/setups/structureSetup/structureSetup.observers.ts @@ -9,6 +9,7 @@ import { attr, removeAttr, CacheValues, + keys, } from 'support'; import { getEnvironment } from 'environment'; import { createSizeObserver, SizeObserverCallbackParams } from 'observers/sizeObserver'; @@ -29,6 +30,12 @@ export type StructureSetupObservers = [ destroy: () => void ]; +type ExcludeFromTuple = T extends [infer F, ...infer R] + ? [F] extends [E] + ? ExcludeFromTuple + : [F, ...ExcludeFromTuple] + : []; + // const hostSelector = `.${classNameHost}`; // TODO: observer textarea attrs if textarea @@ -55,12 +62,6 @@ const ignoreTargetChange = ( return false; }; -type ExcludeFromTuple = T extends [infer F, ...infer R] - ? [F] extends [E] - ? ExcludeFromTuple - : [F, ...ExcludeFromTuple] - : []; - export const createStructureSetupObservers = ( structureSetupElements: StructureSetupElementsObj, state: SetupState, @@ -81,25 +82,16 @@ export const createStructureSetupObservers = ( _timeout: () => debounceTimeout, _maxDelay: () => debounceMaxDelay, _mergeParams(prev, curr) { - const { - _sizeChanged: prevSizeChanged, - _hostMutation: prevHostMutation, - _contentMutation: prevContentMutation, - } = prev[0]; - const { - _sizeChanged: currSizeChanged, - _hostMutation: currvHostMutation, - _contentMutation: currContentMutation, - } = curr[0]; - const merged: [Partial] = [ - { - _sizeChanged: prevSizeChanged || currSizeChanged, - _hostMutation: prevHostMutation || currvHostMutation, - _contentMutation: prevContentMutation || currContentMutation, - }, - ]; - - return merged; + const [prevObj] = prev; + const [currObj] = curr; + return [ + keys(prevObj) + .concat(keys(currObj)) + .reduce((obj, key) => { + obj[key] = prevObj[key] || currObj[key]; + return obj; + }, {}), + ] as [Partial]; }, }); diff --git a/packages/overlayscrollbars/src/setups/structureSetup/structureSetup.ts b/packages/overlayscrollbars/src/setups/structureSetup/structureSetup.ts index fa2ed87..fbd380b 100644 --- a/packages/overlayscrollbars/src/setups/structureSetup/structureSetup.ts +++ b/packages/overlayscrollbars/src/setups/structureSetup/structureSetup.ts @@ -14,8 +14,8 @@ export interface StructureSetupState { _padding: TRBL; _paddingAbsolute: boolean; _viewportPaddingStyle: StyleObject; - _viewportOverflowScroll: XY; - _viewportOverflowAmount: WH; + _overflowScroll: XY; + _overflowAmount: WH; _heightIntrinsic: boolean; _directionIsRTL: boolean; } @@ -48,11 +48,11 @@ const initialStructureSetupUpdateState: StructureSetupState = { paddingBottom: 0, paddingLeft: 0, }, - _viewportOverflowAmount: { + _overflowAmount: { w: 0, h: 0, }, - _viewportOverflowScroll: { + _overflowScroll: { x: false, y: false, }, @@ -67,8 +67,7 @@ export const createStructureSetup = ( const checkOptionsFallback = createOptionCheck(options, {}); const state = createState(initialStructureSetupUpdateState); const onUpdatedListeners = new Set(); - const [getUpdateState] = state; - + const [getState] = state; const runOnUpdatedListeners = ( updateHints: StructureSetupUpdateHints, changedOptions?: PartialOptions, @@ -87,7 +86,7 @@ export const createStructureSetup = ( } ); - const structureSetupState = getUpdateState.bind(0) as (() => StructureSetupState) & + const structureSetupState = getState.bind(0) as (() => StructureSetupState) & StructureSetupStaticState; structureSetupState._addOnUpdatedListener = (listener) => { onUpdatedListeners.add(listener); diff --git a/packages/overlayscrollbars/src/setups/structureSetup/structureSetup.update.ts b/packages/overlayscrollbars/src/setups/structureSetup/structureSetup.update.ts index 7d4dcba..4610fc5 100644 --- a/packages/overlayscrollbars/src/setups/structureSetup/structureSetup.update.ts +++ b/packages/overlayscrollbars/src/setups/structureSetup/structureSetup.update.ts @@ -1,14 +1,4 @@ -import { - CacheValues, - each, - isNumber, - scrollLeft, - scrollTop, - assignDeep, - keys, - isBoolean, - isUndefined, -} from 'support'; +import { each, isNumber, scrollLeft, scrollTop, assignDeep, keys } from 'support'; import { getEnvironment } from 'environment'; import { createTrinsicUpdate, @@ -34,21 +24,15 @@ export type StructureSetupUpdate = ( export interface StructureSetupUpdateHints { _sizeChanged: boolean; - _hostMutation: boolean; - _contentMutation: boolean; - _paddingStyleChanged: boolean; _directionChanged: boolean; _heightIntrinsicChanged: boolean; _overflowScrollChanged: boolean; _overflowAmountChanged: boolean; + _paddingStyleChanged: boolean; + _hostMutation: boolean; + _contentMutation: boolean; } -const applyForceToCache = (cacheValues: CacheValues, force?: boolean): CacheValues => [ - cacheValues[0], - force || cacheValues[1], - cacheValues[2], -]; - const prepareUpdateHints = ( leading: Required, adaptive?: Partial, @@ -61,9 +45,7 @@ const prepareUpdateHints = ( each(objKeys, (key) => { const leadingValue = leading[key]; const adaptiveValue = finalAdaptive[key]; - result[key] = isBoolean(leadingValue) - ? !!force || !!leadingValue || !!adaptiveValue - : applyForceToCache(leadingValue, force); + result[key] = !!(force || leadingValue || adaptiveValue); }); return result as Required; @@ -93,20 +75,15 @@ export const createStructureSetupUpdate = ( assignDeep( { _sizeChanged: false, - _hostMutation: false, - _contentMutation: false, _paddingStyleChanged: false, _directionChanged: false, _heightIntrinsicChanged: false, _overflowScrollChanged: false, _overflowAmountChanged: false, + _hostMutation: false, + _contentMutation: false, }, - Object.keys(updateHints).reduce((acc, key) => { - if (!isUndefined(updateHints[key])) { - acc[key] = updateHints[key]; - } - return acc; - }, {}) + updateHints ), {}, force diff --git a/packages/overlayscrollbars/src/setups/structureSetup/updateSegments/overflowUpdateSegment.ts b/packages/overlayscrollbars/src/setups/structureSetup/updateSegments/overflowUpdateSegment.ts index 58cf897..9ab36d8 100644 --- a/packages/overlayscrollbars/src/setups/structureSetup/updateSegments/overflowUpdateSegment.ts +++ b/packages/overlayscrollbars/src/setups/structureSetup/updateSegments/overflowUpdateSegment.ts @@ -7,7 +7,6 @@ import { style, scrollSize, fractionalSize, - CacheValues, equalWH, addClass, removeClass, @@ -29,11 +28,11 @@ interface ViewportOverflowState { } type UndoViewportArrangeResult = [ - () => void, // redoViewportArrange - ViewportOverflowState? + redoViewportArrange: () => void, + overflowState?: ViewportOverflowState ]; -const { max, round } = Math; +const { max } = Math; const overlaidScrollbarsHideOffset = 42; const whCacheOptions = { _equal: equalWH, @@ -62,10 +61,10 @@ const setAxisOverflowStyle = ( styleObj[overflowKey] = behavior; } - return { - _visible: behaviorIsVisible, - _behavior: behaviorIsVisibleHidden ? 'hidden' : 'scroll', - }; + return [behaviorIsVisible, behaviorIsVisibleHidden ? 'hidden' : 'scroll'] as [ + visible: boolean, + behavior: string + ]; }; const getOverflowAmount = ( @@ -73,15 +72,15 @@ const getOverflowAmount = ( viewportClientSize: WH, sizeFraction: WH ) => { - const condition = (raw: number) => (window.devicePixelRatio % 2 !== 0 ? raw > 1 : raw > 0); + const tollerance = window.devicePixelRatio % 1 !== 0 ? 1 : 0; const amount = { w: max(0, viewportScrollSize.w - viewportClientSize.w - max(0, sizeFraction.w)), h: max(0, viewportScrollSize.h - viewportClientSize.h - max(0, sizeFraction.h)), }; return { - w: condition(amount.w) ? amount.w : 0, - h: condition(amount.h) ? amount.h : 0, + w: amount.w >= tollerance ? amount.w : 0, + h: amount.h >= tollerance ? amount.h : 0, }; }; @@ -135,19 +134,18 @@ export const createOverflowUpdate: CreateStructureUpdateSegment = ( if (heightIntrinsic) { const { _paddingAbsolute, _padding } = getState(); const { _overflowScroll, _scrollbarsHideOffset } = viewportOverflowState; - const hostCssHeight = parseFloat(style(_host, 'height')); + const fSize = fractionalSize(_host); const hostClientSize = clientSize(_host); - // const hostOffsetSize = offsetSize(_host); + // padding subtraction is only needed if padding is absolute or if viewport is content-box const isContentBox = style(_viewport, 'boxSizing') === 'content-box'; const paddingVertical = _paddingAbsolute || isContentBox ? _padding.b + _padding.t : 0; - const fractionalClientHeight = hostClientSize.h + (hostCssHeight - round(hostCssHeight)); - const subtractXScrollbar = !(_nativeScrollbarIsOverlaid.x && isContentBox); style(_viewport, { height: - fractionalClientHeight + + hostClientSize.h + + fSize.h + (_overflowScroll.x && subtractXScrollbar ? _scrollbarsHideOffset.x : 0) - paddingVertical, }); @@ -208,13 +206,13 @@ export const createOverflowUpdate: CreateStructureUpdateSegment = ( overflow: XY, viewportStyleObj: StyleObject ): ViewportOverflowState => { - const { _visible: xVisible, _behavior: xVisibleBehavior } = setAxisOverflowStyle( + const [xVisible, xVisibleBehavior] = setAxisOverflowStyle( true, overflowAmount.w, overflow.x, viewportStyleObj ); - const { _visible: yVisible, _behavior: yVisibleBehavior } = setAxisOverflowStyle( + const [yVisible, yVisibleBehavior] = setAxisOverflowStyle( false, overflowAmount.h, overflow.y, @@ -412,6 +410,7 @@ export const createOverflowUpdate: CreateStructureUpdateSegment = ( const { _heightIntrinsic, _directionIsRTL } = getState(); const [showNativeOverlaidScrollbarsOption, showNativeOverlaidScrollbarsChanged] = checkOption('nativeScrollbarsOverlaid.show'); + const [overflow, overflowChanged] = checkOption>('overflow'); const showNativeOverlaidScrollbars = showNativeOverlaidScrollbarsOption && _nativeScrollbarIsOverlaid.x && @@ -424,9 +423,9 @@ export const createOverflowUpdate: CreateStructureUpdateSegment = ( showNativeOverlaidScrollbarsChanged || _heightIntrinsicChanged); - let sizeFractionCache: CacheValues> = getCurrentSizeFraction(force); - let viewportScrollSizeCache: CacheValues> = getCurrentViewportScrollSizeCache(force); - let overflowAmuntCache: CacheValues> = getCurrentOverflowAmountCache(force); + let sizeFractionCache = getCurrentSizeFraction(force); + let viewportScrollSizeCache = getCurrentViewportScrollSizeCache(force); + let overflowAmuntCache = getCurrentOverflowAmountCache(force); let preMeasureViewportOverflowState: ViewportOverflowState | undefined; if (showNativeOverlaidScrollbarsChanged && _nativeScrollbarStyling) { @@ -495,10 +494,9 @@ export const createOverflowUpdate: CreateStructureUpdateSegment = ( ); } - const [sizeFraction, sizeFractionChanged] = sizeFractionCache; - const [viewportScrollSize, viewportScrollSizeChanged] = viewportScrollSizeCache; const [overflowAmount, overflowAmountChanged] = overflowAmuntCache; - const [overflow, overflowChanged] = checkOption>('overflow'); + const [viewportScrollSize, viewportScrollSizeChanged] = viewportScrollSizeCache; + const [sizeFraction, sizeFractionChanged] = sizeFractionCache; if ( _paddingStyleChanged || @@ -548,8 +546,8 @@ export const createOverflowUpdate: CreateStructureUpdateSegment = ( style(_viewport, viewportStyle); setState({ - _viewportOverflowScroll: overflowScroll, - _viewportOverflowAmount: overflowAmount, + _overflowScroll: overflowScroll, + _overflowAmount: overflowAmount, }); return { diff --git a/packages/overlayscrollbars/tests/playwright/lifecycles/structureLifecycle/index.browser.ts b/packages/overlayscrollbars/tests/playwright/lifecycles/structureLifecycle/index.browser.ts index 4c00062..e26c92c 100644 --- a/packages/overlayscrollbars/tests/playwright/lifecycles/structureLifecycle/index.browser.ts +++ b/packages/overlayscrollbars/tests/playwright/lifecycles/structureLifecycle/index.browser.ts @@ -61,7 +61,7 @@ const getMetrics = (elm: HTMLElement): Metrics => { const comparisonPercentBCR = getBoundingClientRect(elm!.querySelector('.percent')!); const comparisonEndBCR = getBoundingClientRect(elm!.querySelector('.end')!); const scrollMeasure = () => { - const condition = (raw: number) => (window.devicePixelRatio % 2 !== 0 ? raw > 1 : raw > 0); + const condition = (raw: number) => (window.devicePixelRatio % 1 !== 0 ? raw > 1 : raw > 0); const amount = { width: Math.max(0, comparison!.scrollWidth - comparison!.clientWidth), height: Math.max(0, comparison!.scrollHeight - comparison!.clientHeight), diff --git a/packages/overlayscrollbars/types/overlayscrollbars.d.ts b/packages/overlayscrollbars/types/overlayscrollbars.d.ts index cf8a635..bf99393 100644 --- a/packages/overlayscrollbars/types/overlayscrollbars.d.ts +++ b/packages/overlayscrollbars/types/overlayscrollbars.d.ts @@ -116,10 +116,12 @@ onHostSizeChanged : null, // gone interface OnUpdatedEventListenerArgs { updateHints: { sizeChanged: boolean; - hostMutation: boolean; - contentMutation: boolean; directionChanged: boolean; heightIntrinsicChanged: boolean; + overflowAmountChanged: boolean; + overflowScrollChanged: boolean; + hostMutation: boolean; + contentMutation: boolean; }; changedOptions: PartialOptions; force: boolean;