From e38421d78abd4cce2a99e3595b642eea2b73395a Mon Sep 17 00:00:00 2001 From: Rene Date: Sat, 9 Jul 2022 19:50:23 +0200 Subject: [PATCH] output style file --- config/playwright/rollup.config.js | 5 +- config/rollup/defaultOptions.js | 1 + config/rollup/pipeline.build.js | 18 +- config/rollup/pipeline.common.plugins.js | 17 + config/rollup/pipeline.dev.js | 12 +- config/rollup/rollup.config.js | 45 +- package.json | 4 + .../dist/overlayscrollbars.css | 356 ++ .../dist/overlayscrollbars.esm.js | 45 +- .../dist/overlayscrollbars.esm.js.map | 2 +- .../dist/overlayscrollbars.esm.min.js | 2 +- .../dist/overlayscrollbars.js | 4760 +++++++---------- .../dist/overlayscrollbars.js.map | 2 +- .../dist/overlayscrollbars.min.js | 2 +- packages/overlayscrollbars/rollup.config.js | 1 + packages/overlayscrollbars/src/index.scss | 4 + packages/overlayscrollbars/src/index.ts | 2 + .../plugins/optionsValidation/validation.ts | 31 +- ...{overlayscrollbars.scss => structure.scss} | 4 - .../playwright/environment/index.browser.ts | 2 +- .../observers/domObserver/index.browser.ts | 2 +- .../observers/sizeObserver/index.browser.ts | 2 +- .../trinsicObserver/index.browser.ts | 2 +- .../structureSetup/nesting/index.browser.ts | 2 +- .../structureSetup/observers/index.browser.ts | 2 +- .../structureSetup/update/index.browser.ts | 4 +- yarn.lock | 78 +- 27 files changed, 2602 insertions(+), 2805 deletions(-) create mode 100644 packages/overlayscrollbars/dist/overlayscrollbars.css create mode 100644 packages/overlayscrollbars/src/index.scss rename packages/overlayscrollbars/src/styles/{overlayscrollbars.scss => structure.scss} (96%) diff --git a/config/playwright/rollup.config.js b/config/playwright/rollup.config.js index c83e124..f30acb1 100644 --- a/config/playwright/rollup.config.js +++ b/config/playwright/rollup.config.js @@ -6,7 +6,7 @@ const rollupPluginServe = require('rollup-plugin-serve'); const createRollupConfig = require('../rollup/rollup.config'); const rollupPluginHtml = require('./rollup.pluginHtml'); -const rollupAdditionalWatchFiles = require('./rollup.pluginAdditionalWatchFiles'); +// const rollupAdditionalWatchFiles = require('./rollup.pluginAdditionalWatchFiles'); const portRange = { min: 20000, @@ -38,6 +38,7 @@ module.exports = (testDir, onListening = null) => { minified: false, module: false, }, + extractStyle: false, rollup: { input: path.resolve(testDir, meta.input), context: 'this', @@ -52,7 +53,7 @@ module.exports = (testDir, onListening = null) => { ), ...(onListening ? [ - rollupAdditionalWatchFiles([htmlFilePath]), + // rollupAdditionalWatchFiles([htmlFilePath]), rollupPluginServe({ contentBase: dist, historyApiFallback: `/${htmlName}`, diff --git a/config/rollup/defaultOptions.js b/config/rollup/defaultOptions.js index c1e46ed..62d1bbc 100644 --- a/config/rollup/defaultOptions.js +++ b/config/rollup/defaultOptions.js @@ -10,6 +10,7 @@ module.exports = { minified: true, module: true, }, + extractStyle: false, alias: {}, rollup: { input: './src/index', diff --git a/config/rollup/pipeline.build.js b/config/rollup/pipeline.build.js index be4d1cc..ba22bd4 100644 --- a/config/rollup/pipeline.build.js +++ b/config/rollup/pipeline.build.js @@ -5,7 +5,12 @@ const rollupTs = require('rollup-plugin-ts'); const babelConfigUmd = require('./babel.config.umd'); const babelConfigEsm = require('./babel.config.esm'); -const { rollupCommonjs, rollupResolve, rollupAlias } = require('./pipeline.common.plugins'); +const { + rollupCommonjs, + rollupResolve, + rollupAlias, + rollupScss, +} = require('./pipeline.common.plugins'); const { extensions } = require('../../resolve.config.json'); const createOutputWithMinifiedVersion = (output, esm, buildMinifiedVersion) => @@ -38,8 +43,8 @@ const createOutputWithMinifiedVersion = (output, esm, buildMinifiedVersion) => : [] ); -module.exports = (esm, options, declarationFiles = false) => { - const { rollup, paths, versions, alias } = options; +module.exports = (esm, options, { declarationFiles = false, outputStyle = false } = {}) => { + const { rollup, paths, versions, alias, extractStyle } = options; const { output: rollupOutput, input, plugins = [], ...rollupOptions } = rollup; const { name, file, globals, exports, sourcemap: rawSourcemap, ...outputConfig } = rollupOutput; const { minified: buildMinifiedVersion } = versions; @@ -66,9 +71,14 @@ module.exports = (esm, options, declarationFiles = false) => { return { input, output, + treeshake: { + propertyReadSideEffects: false, + moduleSideEffects: false, + }, ...rollupOptions, plugins: [ rollupAlias(alias), + rollupScss(extractStyle, outputStyle), rollupTs({ tsconfig: (resolvedConfig) => ({ ...resolvedConfig, @@ -109,6 +119,6 @@ module.exports = (esm, options, declarationFiles = false) => { extensions, }), ...plugins, - ], + ].filter(Boolean), }; }; diff --git a/config/rollup/pipeline.common.plugins.js b/config/rollup/pipeline.common.plugins.js index 1dfcfc2..6092e79 100644 --- a/config/rollup/pipeline.common.plugins.js +++ b/config/rollup/pipeline.common.plugins.js @@ -1,4 +1,8 @@ +const postcss = require('postcss'); +const autoprefixer = require('autoprefixer'); const { nodeResolve: rollupPluginResolve } = require('@rollup/plugin-node-resolve'); +const rollupPluginScss = require('rollup-plugin-scss'); +const rollupPluginIgnoreImport = require('rollup-plugin-ignore-import'); const rollupPluginCommonjs = require('@rollup/plugin-commonjs'); const rollupPluginAlias = require('@rollup/plugin-alias'); const { extensions, directories } = require('../../resolve.config.json'); @@ -20,4 +24,17 @@ module.exports = { moduleDirectories: directories, extensions, }), + rollupScss: (extractStyleOption, output) => { + if (extractStyleOption) { + return output + ? rollupPluginScss({ + output, + processor: () => postcss([autoprefixer()]), + }) + : rollupPluginIgnoreImport({ + extensions: ['.scss', '.sass', '.css'], + body: 'export default undefined;', + }); + } + }, }; diff --git a/config/rollup/pipeline.dev.js b/config/rollup/pipeline.dev.js index 6d4ebb5..ba8dc4e 100644 --- a/config/rollup/pipeline.dev.js +++ b/config/rollup/pipeline.dev.js @@ -1,9 +1,14 @@ const path = require('path'); const { default: rollupEsBuild } = require('rollup-plugin-esbuild'); -const { rollupCommonjs, rollupResolve, rollupAlias } = require('./pipeline.common.plugins'); +const { + rollupCommonjs, + rollupResolve, + rollupAlias, + rollupScss, +} = require('./pipeline.common.plugins'); module.exports = (options) => { - const { rollup, paths, alias } = options; + const { rollup, paths, alias, extractStyle } = options; const { output: rollupOutput, input, plugins = [], ...rollupOptions } = rollup; const { file, sourcemap: rawSourcemap, ...outputConfig } = rollupOutput; const { src: srcPath, dist: distPath } = paths; @@ -22,6 +27,7 @@ module.exports = (options) => { output, ...rollupOptions, plugins: [ + rollupScss(extractStyle), rollupAlias(alias), rollupResolve(srcPath), rollupEsBuild({ @@ -32,6 +38,6 @@ module.exports = (options) => { }), rollupCommonjs(sourcemap), ...plugins, - ], + ].filter(Boolean), }; }; diff --git a/config/rollup/rollup.config.js b/config/rollup/rollup.config.js index 343a7af..21db115 100644 --- a/config/rollup/rollup.config.js +++ b/config/rollup/rollup.config.js @@ -11,12 +11,19 @@ const pipelineDev = require('./pipeline.dev'); const repoRoot = path.resolve(__dirname, '../../'); const appendExtension = (file) => - path.extname(file) === '' ? file + resolve.extensions.find((ext) => fs.existsSync(path.resolve(`${file}${ext}`))) : file; + path.extname(file) === '' + ? file + resolve.extensions.find((ext) => fs.existsSync(path.resolve(`${file}${ext}`))) + : file; -const normalizePath = (pathName) => (pathName ? pathName.split(path.sep).join(path.posix.sep) : pathName); +const normalizePath = (pathName) => + pathName ? pathName.split(path.sep).join(path.posix.sep) : pathName; const resolvePath = (basePath, pathToResolve, appendExt) => { - const result = pathToResolve ? (path.isAbsolute(pathToResolve) ? pathToResolve : path.resolve(basePath, pathToResolve)) : null; + const result = pathToResolve + ? path.isAbsolute(pathToResolve) + ? pathToResolve + : path.resolve(basePath, pathToResolve) + : null; return normalizePath(result && appendExt ? appendExtension(result) : result); }; @@ -32,19 +39,38 @@ const getWorkspaceAliases = () => } catch {} obj[`@/${path.basename(absolutePath)}`] = `${normalizePath( - path.resolve(absolutePath, projTsConfig?.compilerOptions?.baseUrl || defaultOptions.paths.src) + path.resolve( + absolutePath, + projTsConfig?.compilerOptions?.baseUrl || defaultOptions.paths.src + ) )}`; return obj; }, {}); const mergeAndResolveOptions = (userOptions) => { - const { mode: defaultMode, paths: defaultPaths, versions: defaultVersions, alias: defaultAlias, rollup: defaultRollup } = defaultOptions; - const { project, mode: rawMode, paths: rawPaths = {}, versions: rawVersions = {}, alias: rawAlias = {}, rollup: rawRollup = {} } = userOptions; + const { + mode: defaultMode, + paths: defaultPaths, + versions: defaultVersions, + alias: defaultAlias, + rollup: defaultRollup, + extractStyle: defaultExtractStyle, + } = defaultOptions; + const { + project, + mode: rawMode, + paths: rawPaths = {}, + versions: rawVersions = {}, + alias: rawAlias = {}, + rollup: rawRollup = {}, + extractStyle: rawExtractStyle, + } = userOptions; const projectPath = process.cwd(); const mergedOptions = { project: project || path.basename(projectPath), mode: rawMode || defaultMode, repoRoot, + extractStyle: rawExtractStyle ?? defaultExtractStyle, paths: { ...defaultPaths, ...rawPaths, @@ -67,12 +93,11 @@ const mergeAndResolveOptions = (userOptions) => { }, }, }; - const { src, dist, types, tests } = mergedOptions.paths; + const { src, dist, types } = mergedOptions.paths; mergedOptions.paths.src = resolvePath(projectPath, src); mergedOptions.paths.dist = resolvePath(projectPath, dist); mergedOptions.paths.types = resolvePath(projectPath, types); - mergedOptions.paths.tests = resolvePath(projectPath, tests); mergedOptions.rollup.input = resolvePath(projectPath, mergedOptions.rollup.input, true); mergedOptions.rollup.output = { @@ -95,13 +120,13 @@ const createConfig = (userOptions = {}) => { console.log('PROJECT : ', project); console.log('OPTIONS : ', options); - const umd = pipelineBuild(false, options, true); + const umd = pipelineBuild(false, options, { declarationFiles: true, outputStyle: true }); const esm = buildModuleVersion ? pipelineBuild(true, options) : null; return [umd, esm].filter((build) => !!build); } - return pipelineDev(options); + return [pipelineDev(options)]; }; module.exports = createConfig; diff --git a/package.json b/package.json index e199027..94fdd36 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "@types/jest": "^26.0.24", "@typescript-eslint/eslint-plugin": "^3.7.0", "@typescript-eslint/parser": "^3.7.0", + "autoprefixer": "^10.4.7", "babel-jest": "^28.1.1", "bufferutil": "^4.0.1", "canvas": "^2.6.1", @@ -45,10 +46,13 @@ "playwright-core": "^1.22.2", "playwright-firefox": "^1.22.2", "playwright-webkit": "^1.22.2", + "postcss": "^8.4.14", "prettier": "^2.6.2", "rollup": "^2.75.5", "rollup-plugin-esbuild": "^4.9.1", + "rollup-plugin-ignore-import": "^1.3.2", "rollup-plugin-livereload": "^2.0.0", + "rollup-plugin-scss": "^3.0.0", "rollup-plugin-serve": "^1.1.0", "rollup-plugin-styles": "^3.10.0", "rollup-plugin-terser": "^6.1.0", diff --git a/packages/overlayscrollbars/dist/overlayscrollbars.css b/packages/overlayscrollbars/dist/overlayscrollbars.css new file mode 100644 index 0000000..9efc80f --- /dev/null +++ b/packages/overlayscrollbars/dist/overlayscrollbars.css @@ -0,0 +1,356 @@ +.os-size-observer, +.os-size-observer-listener { + direction: inherit; + pointer-events: none; + overflow: hidden; + visibility: hidden; + box-sizing: border-box; } + +.os-size-observer, +.os-size-observer-listener, +.os-size-observer-listener-item, +.os-size-observer-listener-item-final { + writing-mode: horizontal-tb; + position: absolute; + left: 0; + top: 0; } + +.os-size-observer { + z-index: -1; + contain: strict; + display: flex; + flex-direction: column; + flex-wrap: nowrap; + padding: inherit; + border: inherit; + box-sizing: inherit; + margin: -133px; + top: 0; + right: 0; + bottom: 0; + left: 0; + transform: scale(0.1); } + .os-size-observer::before { + content: ''; + flex: none; + box-sizing: inherit; + padding: 10px; + width: 10px; + height: 10px; } + +.os-size-observer-appear { + -webkit-animation: os-size-observer-appear-animation 1ms forwards; + animation: os-size-observer-appear-animation 1ms forwards; } + +.os-size-observer-listener { + box-sizing: border-box; + position: relative; + flex: auto; + padding: inherit; + border: inherit; + margin: -133px; + transform: scale(10); } + .os-size-observer-listener.ltr { + margin-right: -266px; + margin-left: 0; } + .os-size-observer-listener.rtl { + margin-left: -266px; + margin-right: 0; } + .os-size-observer-listener:empty::before { + content: ''; + width: 100%; + height: 100%; } + .os-size-observer-listener:empty::before, + .os-size-observer-listener > .os-size-observer-listener-item { + display: block; + position: relative; + padding: inherit; + border: inherit; + box-sizing: content-box; + flex: auto; } + +.os-size-observer-listener-scroll { + box-sizing: border-box; + display: flex; } + +.os-size-observer-listener-item { + right: 0; + bottom: 0; + overflow: hidden; + direction: ltr; + flex: none; } + +.os-size-observer-listener-item-final { + transition: none; } + +@-webkit-keyframes os-size-observer-appear-animation { + from { + z-index: 0; } + to { + z-index: -1; } } + +@keyframes os-size-observer-appear-animation { + from { + z-index: 0; } + to { + z-index: -1; } } + +.os-trinsic-observer { + flex: none; + box-sizing: border-box; + position: relative; + max-width: 1px; + max-height: 1px; + padding: 0; + margin: 0; + border: none; + overflow: hidden; + z-index: -1; + height: 0; + top: calc(-100% + 1px); + contain: strict; } + .os-trinsic-observer:not(:empty) { + height: calc(100% + 1px); + top: -1px; } + .os-trinsic-observer:not(:empty) > .os-size-observer { + width: 1000%; + height: 1000%; + min-height: 1px; + min-width: 1px; } + +.os-host-transition > .os-scrollbar, +.os-host-transition > .os-scrollbar-corner { + transition: opacity 0.3s, visibility 0.3s, top 0.3s, right 0.3s, bottom 0.3s, left 0.3s; } + +.os-scrollbar, +.os-scrollbar-corner { + position: absolute; + opacity: 1; + z-index: 1; } + +.os-scrollbar-corner { + bottom: 0; + right: 0; } + +.os-scrollbar { + pointer-events: none; } + +.os-scrollbar-track { + pointer-events: auto; + position: relative; + height: 100%; + width: 100%; + padding: 0 !important; + border: none !important; } + +.os-scrollbar-handle { + pointer-events: auto; + position: absolute; + width: 100%; + height: 100%; } + +.os-scrollbar-handle-off, +.os-scrollbar-track-off { + pointer-events: none; } + +.os-scrollbar.os-scrollbar-unusable, +.os-scrollbar.os-scrollbar-unusable * { + pointer-events: none !important; } + +.os-scrollbar.os-scrollbar-unusable .os-scrollbar-handle { + opacity: 0 !important; } + +.os-scrollbar-horizontal { + bottom: 0; + left: 0; } + +.os-scrollbar-vertical { + top: 0; + right: 0; } + +.os-host-rtl > .os-scrollbar-horizontal { + right: 0; } + +.os-host-rtl > .os-scrollbar-vertical { + right: auto; + left: 0; } + +.os-host-rtl > .os-scrollbar-corner { + right: auto; + left: 0; } + +.os-scrollbar-auto-hidden, +.os-padding + .os-scrollbar-corner, +.os-host-resize-disabled.os-host-scrollbar-horizontal-hidden > .os-scrollbar-corner, +.os-host-scrollbar-horizontal-hidden > .os-scrollbar-horizontal, +.os-host-resize-disabled.os-host-scrollbar-vertical-hidden > .os-scrollbar-corner, +.os-host-scrollbar-vertical-hidden > .os-scrollbar-vertical, +.os-scrollbar-horizontal.os-scrollbar-auto-hidden + .os-scrollbar-vertical + .os-scrollbar-corner, +.os-scrollbar-horizontal + .os-scrollbar-vertical.os-scrollbar-auto-hidden + .os-scrollbar-corner, +.os-scrollbar-horizontal.os-scrollbar-auto-hidden + .os-scrollbar-vertical.os-scrollbar-auto-hidden + .os-scrollbar-corner { + opacity: 0; + visibility: hidden; + pointer-events: none; } + +.os-scrollbar-corner-resize-both { + cursor: nwse-resize; } + +.os-host-rtl > .os-scrollbar-corner-resize-both { + cursor: nesw-resize; } + +.os-scrollbar-corner-resize-horizontal { + cursor: ew-resize; } + +.os-scrollbar-corner-resize-vertical { + cursor: ns-resize; } + +.os-dragging .os-scrollbar-corner.os-scrollbar-corner-resize { + cursor: default; } + +.os-host-resize-disabled.os-host-scrollbar-horizontal-hidden > .os-scrollbar-vertical { + top: 0; + bottom: 0; } + +.os-host-resize-disabled.os-host-scrollbar-vertical-hidden > .os-scrollbar-horizontal, +.os-host-rtl.os-host-resize-disabled.os-host-scrollbar-vertical-hidden > .os-scrollbar-horizontal { + right: 0; + left: 0; } + +.os-scrollbar:hover, +.os-scrollbar-corner.os-scrollbar-corner-resize { + opacity: 1 !important; + visibility: visible !important; } + +.os-scrollbar-corner.os-scrollbar-corner-resize { + background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHN2ZyAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIgICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgICB3aWR0aD0iMTAiICAgaGVpZ2h0PSIxMCIgICB2ZXJzaW9uPSIxLjEiPiAgPGcgICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTEwNDIuMzYyMikiICAgICBzdHlsZT0iZGlzcGxheTppbmxpbmUiPiAgICA8cGF0aCAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eTowLjQ5NDExNzY1O2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIiAgICAgICBkPSJtIDcuNDI0MjE4NywxMDQyLjM2MjIgYyAtMC43MjM1NzkyLDAgLTEuMzEwMTU2MiwwLjU4NjYgLTEuMzEwMTU2MiwxLjMxMDIgMCwwLjI5OSAwLjEwNDM0MTksMC41NzEgMC4yNzI5NDkyLDAuNzkxNSAwLjIwOTEwMjQsMC4xNDEzIDAuNDY1NjIwNiwwLjIxODQgMC43MzY5NjI5LDAuMjE4NCAwLjcyMzU3OTMsMCAxLjMxMDE1NjMsLTAuNTg2NiAxLjMxMDE1NjMsLTEuMzEwMiAwLC0wLjI3MTMgLTAuMDc3MDkzLC0wLjUyNzggLTAuMjE4MzU5NCwtMC43MzcgLTAuMjIwNDk0MSwtMC4xNjg2IC0wLjQ5MjU0NDMsLTAuMjcyOSAtMC43OTE1NTI4LC0wLjI3MjkgeiBtIDAsMy4wODQzIGMgLTAuNzIzNTc5MiwwIC0xLjMxMDE1NjIsMC41ODY2IC0xLjMxMDE1NjIsMS4zMTAyIDAsMC4yOTkgMC4xMDQzNDE5LDAuNTcxIDAuMjcyOTQ5MiwwLjc5MTUgMC4yMDkxMDI0LDAuMTQxMyAwLjQ2NTYyMDYsMC4yMTg0IDAuNzM2OTYyOSwwLjIxODQgMC43MjM1NzkzLDAgMS4zMTAxNTYzLC0wLjU4NjYgMS4zMTAxNTYzLC0xLjMxMDIgMCwtMC4yNzEzIC0wLjA3NzA5MywtMC41Mjc4IC0wLjIxODM1OTQsLTAuNzM2OSAtMC4yMjA0OTQxLC0wLjE2ODYgLTAuNDkyNTQ0MywtMC4yNzMgLTAuNzkxNTUyOCwtMC4yNzMgeiBtIC0zLjA4NDMyNjEsMCBjIC0wLjcyMzU3OTMsMCAtMS4zMTAxNTYzLDAuNTg2NiAtMS4zMTAxNTYzLDEuMzEwMiAwLDAuMjk5IDAuMTA0MzQxOSwwLjU3MSAwLjI3Mjk0OTIsMC43OTE1IDAuMjA5MTAyNCwwLjE0MTMgMC40NjU2MjA3LDAuMjE4NCAwLjczNjk2MjksMC4yMTg0IDAuNzIzNTc5MywwIDEuMzEwMTU2MywtMC41ODY2IDEuMzEwMTU2MywtMS4zMTAyIDAsLTAuMjcxMyAtMC4wNzcwOTMsLTAuNTI3OCAtMC4yMTgzNTk0LC0wLjczNjkgLTAuMjIwNDk0LC0wLjE2ODYgLTAuNDkyNTQ0MiwtMC4yNzMgLTAuNzkxNTUyNywtMC4yNzMgeiBtIC0zLjAyOTczNjQsMy4wMjk4IEMgMC41ODY1NzY5MywxMDQ4LjQ3NjMgMCwxMDQ5LjA2MjggMCwxMDQ5Ljc4NjQgYyAwLDAuMjk5IDAuMTA0MzQxOSwwLjU3MTEgMC4yNzI5NDkyMiwwLjc5MTYgMC4yMDkxMDIyOSwwLjE0MTIgMC40NjU2MjA2NSwwLjIxODMgMC43MzY5NjI4OCwwLjIxODMgMC43MjM1NzkzLDAgMS4zMTAxNTYzLC0wLjU4NjUgMS4zMTAxNTYzLC0xLjMxMDEgMCwtMC4yNzE0IC0wLjA3NzA5MywtMC41Mjc5IC0wLjIxODM1OTQsLTAuNzM3IC0wLjIyMDQ5NDEsLTAuMTY4NiAtMC40OTI1NDQzLC0wLjI3MjkgLTAuNzkxNTUyOCwtMC4yNzI5IHogbSAzLjAyOTczNjQsMCBjIC0wLjcyMzU3OTMsMCAtMS4zMTAxNTYzLDAuNTg2NSAtMS4zMTAxNTYzLDEuMzEwMSAwLDAuMjk5IDAuMTA0MzQxOSwwLjU3MTEgMC4yNzI5NDkyLDAuNzkxNiAwLjIwOTEwMjQsMC4xNDEyIDAuNDY1NjIwNywwLjIxODMgMC43MzY5NjI5LDAuMjE4MyAwLjcyMzU3OTMsMCAxLjMxMDE1NjMsLTAuNTg2NSAxLjMxMDE1NjMsLTEuMzEwMSAwLC0wLjI3MTQgLTAuMDc3MDkzLC0wLjUyNzkgLTAuMjE4MzU5NCwtMC43MzcgLTAuMjIwNDk0LC0wLjE2ODYgLTAuNDkyNTQ0MiwtMC4yNzI5IC0wLjc5MTU1MjcsLTAuMjcyOSB6IG0gMy4wODQzMjYxLDAgYyAtMC43MjM1NzkyLDAgLTEuMzEwMTU2MiwwLjU4NjUgLTEuMzEwMTU2MiwxLjMxMDEgMCwwLjI5OSAwLjEwNDM0MTksMC41NzExIDAuMjcyOTQ5MiwwLjc5MTYgMC4yMDkxMDI0LDAuMTQxMiAwLjQ2NTYyMDYsMC4yMTgzIDAuNzM2OTYyOSwwLjIxODMgMC43MjM1NzkzLDAgMS4zMTAxNTYzLC0wLjU4NjUgMS4zMTAxNTYzLC0xLjMxMDEgMCwtMC4yNzE0IC0wLjA3NzA5MywtMC41Mjc5IC0wLjIxODM1OTQsLTAuNzM3IC0wLjIyMDQ5NDEsLTAuMTY4NiAtMC40OTI1NDQzLC0wLjI3MjkgLTAuNzkxNTUyOCwtMC4yNzI5IHoiLz4gIDwvZz4gIDxnICAgICBzdHlsZT0iZGlzcGxheTppbmxpbmUiPiAgICA8cGF0aCAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIiAgICAgICBkPSJtIDguMjE1NzcxNSwwLjI3Mjk0OTIyIGMgMC4xNDEyNjY3LDAuMjA5MTAyMjkgMC4yMTgzNTk0LDAuNDY1NjIwNjUgMC4yMTgzNTk0LDAuNzM2OTYyODggMCwwLjcyMzU3OTMgLTAuNTg2NTc3LDEuMzEwMTU2MyAtMS4zMTAxNTYzLDEuMzEwMTU2MyAtMC4yNzEzNDIzLDAgLTAuNTI3ODYwNSwtMC4wNzcwOTMgLTAuNzM2OTYyOSwtMC4yMTgzNTk0IDAuMjM5NDEwNCwwLjMxMzA4NTkgMC42MTI2MzYyLDAuNTE4NjAzNSAxLjAzNzIwNywwLjUxODYwMzUgMC43MjM1NzkzLDAgMS4zMTAxNTYzLC0wLjU4NjU3NyAxLjMxMDE1NjMsLTEuMzEwMTU2MyAwLC0wLjQyNDU3MDc2IC0wLjIwNTUxNzYsLTAuNzk3Nzk2NTkgLTAuNTE4NjAzNSwtMS4wMzcyMDY5OCB6IG0gMCwzLjA4NDMyNjE4IGMgMC4xNDEyNjY3LDAuMjA5MTAyMyAwLjIxODM1OTQsMC40NjU2MjA2IDAuMjE4MzU5NCwwLjczNjk2MjkgMCwwLjcyMzU3OTMgLTAuNTg2NTc3LDEuMzEwMTU2MiAtMS4zMTAxNTYzLDEuMzEwMTU2MiAtMC4yNzEzNDIzLDAgLTAuNTI3ODYwNSwtMC4wNzcwOTMgLTAuNzM2OTYyOSwtMC4yMTgzNTkzIDAuMjM5NDEwNCwwLjMxMzA4NTkgMC42MTI2MzYyLDAuNTE4NjAzNSAxLjAzNzIwNywwLjUxODYwMzUgMC43MjM1NzkzLDAgMS4zMTAxNTYzLC0wLjU4NjU3NyAxLjMxMDE1NjMsLTEuMzEwMTU2MyAwLC0wLjQyNDU3MDggLTAuMjA1NTE3NiwtMC43OTc3OTY3IC0wLjUxODYwMzUsLTEuMDM3MjA3IHogbSAtMy4wODQzMjYyLDAgYyAwLjE0MTI2NjcsMC4yMDkxMDIzIDAuMjE4MzU5NCwwLjQ2NTYyMDYgMC4yMTgzNTk0LDAuNzM2OTYyOSAwLDAuNzIzNTc5MyAtMC41ODY1NzcsMS4zMTAxNTYyIC0xLjMxMDE1NjMsMS4zMTAxNTYyIC0wLjI3MTM0MjIsMCAtMC41Mjc4NjA1LC0wLjA3NzA5MyAtMC43MzY5NjI5LC0wLjIxODM1OTMgMC4yMzk0MTA0LDAuMzEzMDg1OSAwLjYxMjYzNjMsMC41MTg2MDM1IDEuMDM3MjA3MSwwLjUxODYwMzUgMC43MjM1NzkzLDAgMS4zMTAxNTYyLC0wLjU4NjU3NyAxLjMxMDE1NjIsLTEuMzEwMTU2MyAwLC0wLjQyNDU3MDggLTAuMjA1NTE3NSwtMC43OTc3OTY3IC0wLjUxODYwMzUsLTEuMDM3MjA3IHogTSAyLjEwMTcwOSw2LjM4NzAxMTcgYyAwLjE0MTI2NjcsMC4yMDkxMDI0IDAuMjE4MzU5NCwwLjQ2NTYyMDYgMC4yMTgzNTk0LDAuNzM2OTYyOSAwLDAuNzIzNTc5MyAtMC41ODY1NzcsMS4zMTAxNTYzIC0xLjMxMDE1NjMsMS4zMTAxNTYzIC0wLjI3MTM0MjIzLDAgLTAuNTI3ODYwNTksLTAuMDc3MDkzIC0wLjczNjk2Mjg4LC0wLjIxODM1OTQgMC4yMzk0MTAzOSwwLjMxMzA4NTkgMC42MTI2MzYyMiwwLjUxODYwMzUgMS4wMzcyMDY5OCwwLjUxODYwMzUgMC43MjM1NzkzLDAgMS4zMTAxNTYzLC0wLjU4NjU3NyAxLjMxMDE1NjMsLTEuMzEwMTU2MyAwLC0wLjQyNDU3MDggLTAuMjA1NTE3NiwtMC43OTc3OTY2IC0wLjUxODYwMzUsLTEuMDM3MjA3IHogbSAzLjAyOTczNjMsMCBjIDAuMTQxMjY2NywwLjIwOTEwMjQgMC4yMTgzNTk0LDAuNDY1NjIwNiAwLjIxODM1OTQsMC43MzY5NjI5IDAsMC43MjM1NzkzIC0wLjU4NjU3NywxLjMxMDE1NjMgLTEuMzEwMTU2MywxLjMxMDE1NjMgLTAuMjcxMzQyMiwwIC0wLjUyNzg2MDUsLTAuMDc3MDkzIC0wLjczNjk2MjksLTAuMjE4MzU5NCAwLjIzOTQxMDQsMC4zMTMwODU5IDAuNjEyNjM2MywwLjUxODYwMzUgMS4wMzcyMDcxLDAuNTE4NjAzNSAwLjcyMzU3OTMsMCAxLjMxMDE1NjIsLTAuNTg2NTc3IDEuMzEwMTU2MiwtMS4zMTAxNTYzIDAsLTAuNDI0NTcwOCAtMC4yMDU1MTc1LC0wLjc5Nzc5NjYgLTAuNTE4NjAzNSwtMS4wMzcyMDcgeiBtIDMuMDg0MzI2MiwwIGMgMC4xNDEyNjY3LDAuMjA5MTAyNCAwLjIxODM1OTQsMC40NjU2MjA2IDAuMjE4MzU5NCwwLjczNjk2MjkgMCwwLjcyMzU3OTMgLTAuNTg2NTc3LDEuMzEwMTU2MyAtMS4zMTAxNTYzLDEuMzEwMTU2MyAtMC4yNzEzNDIzLDAgLTAuNTI3ODYwNSwtMC4wNzcwOTMgLTAuNzM2OTYyOSwtMC4yMTgzNTk0IDAuMjM5NDEwNCwwLjMxMzA4NTkgMC42MTI2MzYyLDAuNTE4NjAzNSAxLjAzNzIwNywwLjUxODYwMzUgMC43MjM1NzkzLDAgMS4zMTAxNTYzLC0wLjU4NjU3NyAxLjMxMDE1NjMsLTEuMzEwMTU2MyAwLC0wLjQyNDU3MDggLTAuMjA1NTE3NiwtMC43OTc3OTY2IC0wLjUxODYwMzUsLTEuMDM3MjA3IHoiIC8+ICA8L2c+PC9zdmc+); + background-repeat: no-repeat; + background-position: 100% 100%; + pointer-events: auto !important; } + +.os-host-rtl > .os-scrollbar-corner.os-scrollbar-corner-resize { + transform: scale(-1, 1); } + +.os-host-overflow { + overflow: hidden !important; } + +.os-environment { + --os-custom-prop: -1; + position: fixed; + opacity: 0; + visibility: hidden; + overflow: scroll; + height: 200px; + width: 200px; + z-index: var(--os-custom-prop); } + .os-environment div { + width: 200%; + height: 200%; + margin: 10px 0; } + .os-environment.os-environment-flexbox-glue { + display: flex; + flex-direction: row; + flex-wrap: nowrap; + height: auto; + width: auto; + min-height: 200px; + min-width: 200px; } + .os-environment.os-environment-flexbox-glue div { + flex: auto; + width: auto; + height: auto; + max-height: 100%; + max-width: 100%; + margin: 0; } + .os-environment.os-environment-flexbox-glue-max { + max-height: 200px; } + .os-environment.os-environment-flexbox-glue-max div { + overflow: visible; } + .os-environment.os-environment-flexbox-glue-max div::before { + content: ''; + display: block; + height: 999px; + width: 999px; } + +.os-environment, +.os-viewport { + -ms-overflow-style: scrollbar !important; } + +[data-overlayscrollbars~='viewportStyled'], +.os-viewport-scrollbar-styled.os-environment, +.os-viewport-scrollbar-styled.os-viewport { + scrollbar-width: none !important; } + +[data-overlayscrollbars~='viewportStyled']::-webkit-scrollbar, +[data-overlayscrollbars~='viewportStyled']::-webkit-scrollbar-corner, +.os-viewport-scrollbar-styled.os-environment::-webkit-scrollbar, +.os-viewport-scrollbar-styled.os-viewport::-webkit-scrollbar, +.os-viewport-scrollbar-styled.os-environment::-webkit-scrollbar-corner, +.os-viewport-scrollbar-styled.os-viewport::-webkit-scrollbar-corner { + display: none !important; + width: 0px !important; + height: 0px !important; + visibility: hidden !important; + background: transparent !important; } + +[data-overlayscrollbars], +.os-padding { + position: relative; } + +[data-overlayscrollbars~='host'], +.os-padding { + display: flex; + flex-direction: row !important; + flex-wrap: nowrap !important; } + +.os-padding, +.os-viewport { + box-sizing: inherit; + position: relative; + flex: auto !important; + height: auto; + width: 100%; + padding: 0; + margin: 0; + border: none; + z-index: 0; } + +.os-viewport { + --os-vaw: 0; + --os-vah: 0; } + .os-viewport.os-viewport-arrange::before { + content: ''; + position: absolute; + pointer-events: none; + z-index: -1; + min-width: 1px; + min-height: 1px; + width: var(--os-vaw); + height: var(--os-vah); } + +[data-overlayscrollbars] { + overflow: hidden !important; } + +[data-overlayscrollbars~='overflowVisible'] { + overflow: visible !important; } + +[data-overlayscrollbars-overflow-x='hidden'] { + overflow-x: hidden !important; } + +[data-overlayscrollbars-overflow-x='scroll'] { + overflow-x: scroll !important; } + +[data-overlayscrollbars-overflow-x='hidden'] { + overflow-y: hidden !important; } + +[data-overlayscrollbars-overflow-y='scroll'] { + overflow-y: scroll !important; } + +.os-padding, +.os-viewport { + overflow: hidden; } + +.os-overflow-visible { + overflow: visible; } + +.os-content { + box-sizing: inherit; } diff --git a/packages/overlayscrollbars/dist/overlayscrollbars.esm.js b/packages/overlayscrollbars/dist/overlayscrollbars.esm.js index b1fc0b5..88a3856 100644 --- a/packages/overlayscrollbars/dist/overlayscrollbars.esm.js +++ b/packages/overlayscrollbars/dist/overlayscrollbars.esm.js @@ -1284,7 +1284,7 @@ const createOverflowUpdate = (structureSetupElements, state) => { _nativeScrollbarIsOverlaid } = getEnvironment(); const doViewportArrange = !_viewportIsTarget && !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y); - const [updateSizeFraction, getCurrentSizeFraction] = createCache(whCacheOptions, fractionalSize.bind(0, _host)); + const [updateSizeFraction, getCurrentSizeFraction] = createCache(whCacheOptions, fractionalSize.bind(0, _viewport)); const [updateViewportScrollSizeCache, getCurrentViewportScrollSizeCache] = createCache(whCacheOptions, scrollSize.bind(0, _viewport)); const [updateOverflowAmountCache, getCurrentOverflowAmountCache] = createCache(whCacheOptions); const [updateOverflowStyleCache] = createCache(xyCacheOptions); @@ -2367,40 +2367,15 @@ const addPlugin = addedPlugin => each(isArray(addedPlugin) ? addedPlugin : [adde pluginRegistry[plugin[0]] = plugin[1]; }); -function getDefaultExportFromCjs (x) { - return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; -} - -var _extends = {exports: {}}; - -(function (module) { - function _extends() { - module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - - return target; - }, module.exports.__esModule = true, module.exports["default"] = module.exports; - return _extends.apply(this, arguments); - } - - module.exports = _extends, module.exports.__esModule = true, module.exports["default"] = module.exports; -})(_extends); - -getDefaultExportFromCjs(_extends.exports); - -const templateTypePrefixSuffix = ['__TPL_', '_TYPE__']; -const optionsTemplateTypes = ['boolean', 'number', 'string', 'array', 'object', 'function', 'null'].reduce((result, item) => { - result[item] = templateTypePrefixSuffix[0] + item + templateTypePrefixSuffix[1]; - return result; -}, {}); +const optionsTemplateTypes = { + boolean: '__TPL_boolean_TYPE__', + number: '__TPL_number_TYPE__', + string: '__TPL_string_TYPE__', + array: '__TPL_array_TYPE__', + object: '__TPL_object_TYPE__', + function: '__TPL_function_TYPE__', + null: '__TPL_null_TYPE__' +}; const numberAllowedValues = optionsTemplateTypes.number; const booleanAllowedValues = optionsTemplateTypes.boolean; diff --git a/packages/overlayscrollbars/dist/overlayscrollbars.esm.js.map b/packages/overlayscrollbars/dist/overlayscrollbars.esm.js.map index 429e333..7a7017a 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 { from } from 'support/utils/array';\r\nimport { 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 | false | null | undefined,\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 | false | null | undefined, attrName: string): string | null;\r\nexport function attr(\r\n elm: HTMLElement | false | null | undefined,\r\n attrName: string,\r\n value: string\r\n): void;\r\nexport function attr(\r\n elm: HTMLElement | false | null | undefined,\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\nexport const attrClass = (\r\n elm: HTMLElement | false | null | undefined,\r\n attrName: string,\r\n value: string,\r\n add?: boolean\r\n) => {\r\n const currValues = attr(elm, attrName) || '';\r\n const currValuesSet = new Set(currValues.split(' '));\r\n currValuesSet[add ? 'add' : 'delete'](value);\r\n\r\n attr(elm, attrName, from(currValuesSet).join(' ').trim());\r\n};\r\n\r\nexport const hasAttrClass = (\r\n elm: HTMLElement | false | null | undefined,\r\n attrName: string,\r\n value: string\r\n) => {\r\n const currValues = attr(elm, attrName) || '';\r\n const currValuesSet = new Set(currValues.split(' '));\r\n return currValuesSet.has(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 | false | null | undefined, 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 | false | null | undefined): number;\r\nexport function scrollLeft(elm: HTMLElement | false | null | undefined, value: number): void;\r\nexport function scrollLeft(\r\n elm: HTMLElement | false | null | undefined,\r\n value?: number\r\n): 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 | false | null | undefined): number;\r\nexport function scrollTop(elm: HTMLElement | false | null | undefined, value: number): void;\r\nexport function scrollTop(\r\n elm: HTMLElement | false | null | undefined,\r\n value?: number\r\n): 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 | false | null | undefined): string;\r\nexport function val(elm: HTMLInputElement | false | null | undefined, value: string): void;\r\nexport function val(\r\n elm: HTMLInputElement | false | null | undefined,\r\n value?: string\r\n): 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 | false | null | undefined,\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 && className && 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 = (\r\n elm: Element | false | null | undefined,\r\n className: string | false | null | undefined\r\n): boolean => 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 = (\r\n elm: Element | false | null | undefined,\r\n className: string | false | null | undefined\r\n): 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 | false | null | undefined\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 | false | 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 | false | 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 | false | 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 | false | 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 dataAttributeHost = 'data-overlayscrollbars';\r\nexport const dataAttributeHostOverflowX = `${dataAttributeHost}-overflow-x`;\r\nexport const dataAttributeHostOverflowY = `${dataAttributeHost}-overflow-y`;\r\nexport const dataValueHostOverflowVisible = 'overflowVisible';\r\nexport const dataValueHostViewportScrollbarStyling = 'viewportStyled';\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\nexport const classNameOverflowVisible = `os-overflow-visible`;\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 =\r\n | 'hidden'\r\n | 'scroll'\r\n | 'visible'\r\n | 'visible-hidden'\r\n | 'visible-scroll';\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 paddingAbsolute: boolean;\r\n updating: {\r\n elementEvents: Array<[elementSelector: string, eventNames: string]> | null;\r\n attributes: string[] | null;\r\n debounce: [timeout: number, maxWait: number] | number | null; // (if tuple: [timeout: 0, maxWait: 33], if number: [timeout: number, maxWait: false]) debounce for content Changes\r\n ignoreMutation: ((mutation: MutationRecord) => any) | 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 nativeScrollbarsOverlaid: {\r\n show: boolean;\r\n initialize: boolean;\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 debounce: [0, 33], // number || number array || null\r\n attributes: null, // string array || null\r\n ignoreMutation: null, // () => any || 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 nativeScrollbarsOverlaid: {\r\n show: false, // true || false\r\n initialize: false, // true || false\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 /*\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 */\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 equalBCRWH,\r\n getBoundingClientRect,\r\n assignDeep,\r\n cssProperty,\r\n createCache,\r\n equalXY,\r\n createEventListenerHub,\r\n EventListener,\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 interface EnvironmentListenersNameArgsMap {\r\n _: undefined;\r\n}\r\n\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: EventListener): () => 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 [addEvent, , triggerEvent] = createEventListenerHub();\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) => addEvent('_', listener),\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 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 triggerEvent('_');\r\n }\r\n }\r\n\r\n size = sizeNew;\r\n dpr = dprNew;\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 hasClass,\r\n push,\r\n runEach,\r\n insertBefore,\r\n attr,\r\n isBoolean,\r\n isFunction,\r\n keys,\r\n removeAttr,\r\n attrClass,\r\n hasAttrClass,\r\n ResizeObserverConstructor,\r\n} from 'support';\r\nimport {\r\n dataAttributeHost,\r\n dataAttributeHostOverflowX,\r\n dataAttributeHostOverflowY,\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 _viewportIsTarget: boolean;\r\n _viewportHasClass: (className: string, attributeClassName: string) => boolean;\r\n _viewportAddRemoveClass: (className: string, attributeClassName: string, add?: boolean) => void;\r\n}\r\n\r\nlet contentArrangeCounter = 0;\r\n\r\nconst unwrap = (elm: HTMLElement | false | null | undefined) => {\r\n appendChildren(parent(elm), contents(elm));\r\n removeElements(elm);\r\n};\r\n\r\nconst createUniqueViewportArrangeElement = (): HTMLStyleElement | false => {\r\n const { _nativeScrollbarStyling, _nativeScrollbarIsOverlaid, _cssCustomProperties } =\r\n getEnvironment();\r\n /* istanbul ignore next */\r\n const create =\r\n !_cssCustomProperties &&\r\n !_nativeScrollbarStyling &&\r\n (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);\r\n const result = create ? document.createElement('style') : false;\r\n\r\n if (result) {\r\n attr(result, 'id', `${classNameViewportArrange}-${contentArrangeCounter}`);\r\n contentArrangeCounter++;\r\n }\r\n\r\n return result;\r\n};\r\n\r\nconst staticCreationFromStrategy = (\r\n target: OSTargetElement,\r\n initializationValue?: HTMLElement | undefined,\r\n strategy?: StructureInitializationStrategyStaticElement\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();\r\n};\r\n\r\nconst dynamicCreationFromStrategy = (\r\n target: OSTargetElement,\r\n initializationValue: HTMLElement | boolean | undefined,\r\n strategy: StructureInitializationStrategyDynamicElement\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() : result;\r\n};\r\n\r\nconst addDataAttrHost = (elm: HTMLElement, value?: string | false | null | undefined) => {\r\n attr(elm, dataAttributeHost, value || '');\r\n return removeAttr.bind(0, elm, dataAttributeHost);\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 singleElmSupport = !!ResizeObserverConstructor && _nativeScrollbarStyling;\r\n const potentialViewportElement = staticCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.viewport,\r\n viewportInitializationStrategy\r\n );\r\n const potentiallySingleElm = potentialViewportElement === targetElement;\r\n const viewportIsTarget = singleElmSupport && potentiallySingleElm;\r\n const viewportElement =\r\n potentiallySingleElm && !viewportIsTarget\r\n ? staticCreationFromStrategy(targetElement)\r\n : potentialViewportElement;\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 )\r\n : (targetElement as HTMLElement),\r\n _viewport: viewportElement,\r\n _padding: dynamicCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.padding,\r\n paddingInitializationStrategy\r\n ),\r\n _content: dynamicCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.content,\r\n contentInitializationStrategy\r\n ),\r\n _viewportArrange: !viewportIsTarget && 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 _viewportIsTarget: viewportIsTarget,\r\n _viewportHasClass: (className: string, attributeClassName: string) =>\r\n viewportIsTarget\r\n ? hasAttrClass(viewportElement, dataAttributeHost, attributeClassName)\r\n : hasClass(viewportElement, className),\r\n _viewportAddRemoveClass: (className: string, attributeClassName: string, add?: boolean) =>\r\n viewportIsTarget\r\n ? attrClass(viewportElement, dataAttributeHost, attributeClassName, add)\r\n : (add ? addClass : removeClass)(viewportElement, className),\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 const removeHostDataAttr = addDataAttrHost(_host, viewportIsTarget ? 'viewport' : 'host');\r\n const removePaddingClass = addClass(_padding, classNamePadding);\r\n const removeViewportClass = addClass(_viewport, !viewportIsTarget && classNameViewport);\r\n const removeContentClass = addClass(_content, classNameContent);\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, !viewportIsTarget && _viewport);\r\n appendChildren(_viewport, _content);\r\n\r\n push(destroyFns, () => {\r\n removeHostDataAttr();\r\n removeAttr(_viewport, dataAttributeHostOverflowX);\r\n removeAttr(_viewport, dataAttributeHostOverflowY);\r\n\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 removePaddingClass();\r\n removeViewportClass();\r\n removeContentClass();\r\n });\r\n\r\n if (_nativeScrollbarStyling && !viewportIsTarget) {\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 { 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 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 { _flexboxGlue } = getEnvironment();\r\n const { _heightIntrinsic } = getState();\r\n const { _heightIntrinsicChanged } = updateHints;\r\n const heightIntrinsicChanged = (_content || !_flexboxGlue) && _heightIntrinsicChanged;\r\n\r\n if (heightIntrinsicChanged) {\r\n style(_content, {\r\n height: _heightIntrinsic ? '' : '100%',\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, _viewportIsTarget: _isSingleElm } = 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 =\r\n !_isSingleElm && (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 attrClass,\r\n} from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport {\r\n classNameViewportArrange,\r\n classNameViewportScrollbarStyling,\r\n classNameOverflowVisible,\r\n dataAttributeHost,\r\n dataAttributeHostOverflowX,\r\n dataAttributeHostOverflowY,\r\n dataValueHostViewportScrollbarStyling,\r\n dataValueHostOverflowVisible,\r\n} from 'classnames';\r\nimport type { StyleObject, OverflowStyle } from 'typings';\r\nimport type { OverflowBehavior } from 'options';\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 _overflowStyle: 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 strVisible = 'visible';\r\nconst strHidden = 'hidden';\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: strHidden, y: strHidden } as XY,\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 % 1 !== 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\nconst conditionalClass = (\r\n elm: Element | false | null | undefined,\r\n classNames: string,\r\n add: boolean\r\n) => (add ? addClass(elm, classNames) : removeClass(elm, classNames));\r\n\r\nconst overflowIsVisible = (overflowBehavior: string) => overflowBehavior.indexOf(strVisible) === 0;\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 {\r\n _host,\r\n _padding,\r\n _viewport,\r\n _viewportArrange,\r\n _viewportIsTarget,\r\n _viewportAddRemoveClass,\r\n } = 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 !_viewportIsTarget &&\r\n !_nativeScrollbarStyling &&\r\n (_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 [updateOverflowStyleCache] = 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: 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 arrangeHideOffset =\r\n !_nativeScrollbarStyling && !showNativeOverlaidScrollbars ? overlaidScrollbarsHideOffset : 0;\r\n const getStatePerAxis = (\r\n styleKey: string,\r\n isOverlaid: boolean,\r\n nativeScrollbarSize: number\r\n ) => {\r\n const overflowStyle = style(_viewport, styleKey);\r\n // can't do something like \"viewportStyleObj && viewportStyleObj[styleKey] || overflowStyle\" here!\r\n const objectPrefferedOverflowStyle = viewportStyleObj\r\n ? viewportStyleObj[styleKey]\r\n : overflowStyle;\r\n const overflowScroll = objectPrefferedOverflowStyle === 'scroll';\r\n const nonScrollbarStylingHideOffset = isOverlaid ? arrangeHideOffset : nativeScrollbarSize;\r\n const scrollbarsHideOffset =\r\n overflowScroll && !_nativeScrollbarStyling ? nonScrollbarStylingHideOffset : 0;\r\n const scrollbarsHideOffsetArrange = isOverlaid && !!arrangeHideOffset;\r\n\r\n return [overflowStyle, overflowScroll, scrollbarsHideOffset, scrollbarsHideOffsetArrange] as [\r\n overflowStyle: OverflowStyle,\r\n overflowScroll: boolean,\r\n scrollbarsHideOffset: number,\r\n scrollbarsHideOffsetArrange: boolean\r\n ];\r\n };\r\n\r\n const [xOverflowStyle, xOverflowScroll, xScrollbarsHideOffset, xScrollbarsHideOffsetArrange] =\r\n getStatePerAxis('overflowX', _nativeScrollbarIsOverlaid.x, _nativeScrollbarSize.x);\r\n const [yOverflowStyle, yOverflowScroll, yScrollbarsHideOffset, yScrollbarsHideOffsetArrange] =\r\n getStatePerAxis('overflowY', _nativeScrollbarIsOverlaid.y, _nativeScrollbarSize.y);\r\n\r\n return {\r\n _overflowStyle: {\r\n x: xOverflowStyle,\r\n y: yOverflowStyle,\r\n },\r\n _overflowScroll: {\r\n x: xOverflowScroll,\r\n y: yOverflowScroll,\r\n },\r\n _scrollbarsHideOffset: {\r\n x: xScrollbarsHideOffset,\r\n y: yScrollbarsHideOffset,\r\n },\r\n _scrollbarsHideOffsetArrange: {\r\n x: xScrollbarsHideOffsetArrange,\r\n y: yScrollbarsHideOffsetArrange,\r\n },\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 hasOverflow: XY,\r\n overflowOption: XY,\r\n viewportStyleObj: StyleObject\r\n ): ViewportOverflowState => {\r\n const setAxisOverflowStyle = (behavior: OverflowBehavior, hasOverflowAxis: boolean) => {\r\n const overflowVisible = overflowIsVisible(behavior);\r\n const overflowVisibleBehavior =\r\n (hasOverflowAxis && overflowVisible && behavior.replace(`${strVisible}-`, '')) || '';\r\n return [\r\n hasOverflowAxis && !overflowVisible ? behavior : '',\r\n overflowIsVisible(overflowVisibleBehavior) ? 'hidden' : overflowVisibleBehavior,\r\n ];\r\n };\r\n\r\n const [overflowX, visibleBehaviorX] = setAxisOverflowStyle(overflowOption.x, hasOverflow.x);\r\n const [overflowY, visibleBehaviorY] = setAxisOverflowStyle(overflowOption.y, hasOverflow.y);\r\n\r\n viewportStyleObj.overflowX = visibleBehaviorX && overflowY ? visibleBehaviorX : overflowX;\r\n viewportStyleObj.overflowY = visibleBehaviorY && overflowX ? visibleBehaviorY : overflowY;\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\r\n const showNativeOverlaidScrollbars =\r\n showNativeOverlaidScrollbarsOption &&\r\n _nativeScrollbarIsOverlaid.x &&\r\n _nativeScrollbarIsOverlaid.y;\r\n const adjustFlexboxGlue =\r\n !_viewportIsTarget &&\r\n !_flexboxGlue &&\r\n (_sizeChanged ||\r\n _contentMutation ||\r\n _hostMutation ||\r\n showNativeOverlaidScrollbarsChanged ||\r\n _heightIntrinsicChanged);\r\n const overflowXVisible = overflowIsVisible(overflow.x);\r\n const overflowYVisible = overflowIsVisible(overflow.y);\r\n const overflowVisible = overflowXVisible || overflowYVisible;\r\n\r\n let sizeFractionCache = getCurrentSizeFraction(force);\r\n let viewportScrollSizeCache = getCurrentViewportScrollSizeCache(force);\r\n let overflowAmuntCache = getCurrentOverflowAmountCache(force);\r\n\r\n let preMeasureViewportOverflowState: ViewportOverflowState | undefined;\r\n\r\n if (showNativeOverlaidScrollbarsChanged && _nativeScrollbarStyling) {\r\n _viewportAddRemoveClass(\r\n classNameViewportScrollbarStyling,\r\n dataValueHostViewportScrollbarStyling,\r\n !showNativeOverlaidScrollbars\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 if (overflowVisible) {\r\n _viewportAddRemoveClass(classNameOverflowVisible, dataValueHostOverflowVisible, false);\r\n }\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 viewportclientSize = clientSize(_viewport);\r\n let arrangedViewportScrollSize = viewportScrollSize;\r\n let arrangedViewportClientSize = viewportclientSize;\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, viewportclientSize.w - viewportScrollSize.w),\r\n h: arrangedViewportClientSize.h + max(0, viewportclientSize.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 const hasOverflow = {\r\n x: overflowAmount.w > 0,\r\n y: overflowAmount.h > 0,\r\n };\r\n const removeClipping =\r\n (overflowXVisible && overflowYVisible && (hasOverflow.x || hasOverflow.y)) ||\r\n (overflowXVisible && hasOverflow.x && !hasOverflow.y) ||\r\n (overflowYVisible && hasOverflow.y && !hasOverflow.x);\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 const viewportOverflowState = setViewportOverflowState(\r\n showNativeOverlaidScrollbars,\r\n hasOverflow,\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\r\n if (!_viewportIsTarget) {\r\n hideNativeScrollbars(\r\n viewportOverflowState,\r\n _directionIsRTL,\r\n viewportArranged,\r\n viewportStyle\r\n );\r\n }\r\n\r\n if (adjustFlexboxGlue) {\r\n fixFlexboxGlue(viewportOverflowState, _heightIntrinsic);\r\n }\r\n\r\n if (_viewportIsTarget) {\r\n attr(_host, dataAttributeHostOverflowX, viewportStyle.overflowX as string);\r\n attr(_host, dataAttributeHostOverflowY, viewportStyle.overflowY as string);\r\n } else {\r\n style(_viewport, viewportStyle);\r\n }\r\n }\r\n\r\n attrClass(_host, dataAttributeHost, dataValueHostOverflowVisible, removeClipping);\r\n conditionalClass(_padding, classNameOverflowVisible, removeClipping);\r\n !_viewportIsTarget && conditionalClass(_viewport, classNameOverflowVisible, overflowVisible);\r\n\r\n const [overflowStyle, overflowStyleChanged] = updateOverflowStyleCache(\r\n getViewportOverflowState(showNativeOverlaidScrollbars)._overflowStyle\r\n );\r\n\r\n setState({\r\n _overflowStyle: overflowStyle,\r\n _overflowAmount: {\r\n x: overflowAmount.w,\r\n y: overflowAmount.h,\r\n },\r\n _hasOverflow: hasOverflow,\r\n });\r\n\r\n return {\r\n _overflowStyleChanged: overflowStyleChanged,\r\n _overflowAmountChanged: overflowAmountChanged,\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 _overflowAmountChanged: boolean;\r\n _overflowStyleChanged: 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 _overflowAmountChanged: false,\r\n _overflowStyleChanged: 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 * A function which can ignore a changed attribute if it returns true.\r\n * for DOMTargetObserver this applies to the changes to the observed target\r\n * for DOMContentObserver this applies to changes to nested targets -> nested targets are elements which match the \"_nestedTargetSelector\" selector\r\n */\r\n _ignoreTargetChange?: DOMObserverIgnoreTargetChange;\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}\r\n\r\ntype DOMTargetObserverOptions = DOMObserverOptionsBase;\r\n\r\ntype ContentChangeArrayItem = [selector?: string, eventNames?: 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 _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 = _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 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 liesBetween,\r\n scrollSize,\r\n equalWH,\r\n createCache,\r\n WH,\r\n fractionalSize,\r\n isFunction,\r\n ResizeObserverConstructor,\r\n} from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport {\r\n dataAttributeHost,\r\n dataValueHostOverflowVisible,\r\n classNameViewport,\r\n classNameOverflowVisible,\r\n} from 'classnames';\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\nconst hostSelector = `[${dataAttributeHost}]`;\r\n\r\n// TODO: observer textarea attrs if textarea\r\n\r\nconst viewportSelector = `.${classNameViewport}`;\r\nconst viewportAttrsFromTarget = ['tabindex'];\r\nconst baseStyleChangingAttrsTextarea = ['wrap', 'cols', 'rows'];\r\nconst baseStyleChangingAttrs = ['id', 'class', 'style', 'open'];\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 {\r\n _host,\r\n _viewport,\r\n _content,\r\n _isTextarea,\r\n _viewportIsTarget,\r\n _viewportHasClass,\r\n _viewportAddRemoveClass,\r\n } = structureSetupElements;\r\n const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment();\r\n\r\n const [updateContentSizeCache] = createCache>(\r\n {\r\n _equal: equalWH,\r\n _initialValue: { w: 0, h: 0 },\r\n },\r\n () => {\r\n const has = _viewportHasClass(classNameOverflowVisible, dataValueHostOverflowVisible);\r\n has && _viewportAddRemoveClass(classNameOverflowVisible, dataValueHostOverflowVisible);\r\n\r\n const contentScroll = scrollSize(_content);\r\n const viewportScroll = scrollSize(_viewport);\r\n const fractional = fractionalSize(_viewport);\r\n\r\n has && _viewportAddRemoveClass(classNameOverflowVisible, dataValueHostOverflowVisible, true);\r\n return {\r\n w: viewportScroll.w + contentScroll.w + fractional.w,\r\n h: viewportScroll.h + contentScroll.h + fractional.h,\r\n };\r\n }\r\n );\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 const [, contentSizeChanged] = updateContentSizeCache();\r\n // if contentChangedTroughEvent is true its already debounced\r\n const updateFn = contentChangedTroughEvent\r\n ? structureSetupUpdate\r\n : structureSetupUpdateWithDebouncedAdaptiveUpdateHints;\r\n\r\n if (contentSizeChanged) {\r\n updateFn({\r\n _contentMutation: true,\r\n });\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 if (!_viewportIsTarget) {\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 =\r\n !_viewportIsTarget &&\r\n 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 });\r\n\r\n const viewportIsTargetResizeObserver =\r\n _viewportIsTarget &&\r\n new ResizeObserverConstructor!(onSizeChanged.bind(0, { _sizeChanged: true }));\r\n\r\n viewportIsTargetResizeObserver && viewportIsTargetResizeObserver.observe(_host);\r\n updateViewportAttrsFromHost();\r\n\r\n return [\r\n (checkOption) => {\r\n const [ignoreMutation] = checkOption('updating.ignoreMutation');\r\n const [attributes, attributesChanged] = checkOption('updating.attributes');\r\n const [elementEvents, elementEventsChanged] = checkOption | null>(\r\n 'updating.elementEvents'\r\n );\r\n const [debounceValue, debounceChanged] = checkOption | number | null>(\r\n 'updating.debounce'\r\n );\r\n const updateContentMutationObserver = elementEventsChanged || attributesChanged;\r\n const ignoreMutationFromOptions = (mutation: MutationRecord) =>\r\n isFunction(ignoreMutation) && ignoreMutation(mutation);\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 _nestedTargetSelector: hostSelector,\r\n _ignoreContentChange: (mutation, isNestedTarget) => {\r\n const { target, attributeName } = mutation;\r\n const ignore =\r\n !isNestedTarget && attributeName\r\n ? liesBetween(target as Element, hostSelector, viewportSelector)\r\n : false;\r\n return ignore || !!ignoreMutationFromOptions(mutation);\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 && destroySizeObserver();\r\n viewportIsTargetResizeObserver && viewportIsTargetResizeObserver.disconnect();\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 } from 'support';\r\nimport type { OSOptions, ReadonlyOSOptions } from 'options';\r\nimport type { Setup } from 'setups';\r\nimport type { OSTarget, PartialOptions, StyleObject, OverflowStyle } from 'typings';\r\n\r\nexport interface StructureSetupState {\r\n _padding: TRBL;\r\n _paddingAbsolute: boolean;\r\n _viewportPaddingStyle: StyleObject;\r\n _overflowAmount: XY;\r\n _overflowStyle: XY;\r\n _hasOverflow: XY;\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 x: 0,\r\n y: 0,\r\n },\r\n _overflowStyle: {\r\n x: 'hidden',\r\n y: 'hidden',\r\n },\r\n _hasOverflow: {\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: any, ...args: any[]) => any;\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 { OSOptions, OverflowBehavior, VisibilityBehavior, AutoHideBehavior } 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 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 ignoreMutation: [oTypes.function, oTypes.null], // function || 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 /*\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 */\r\n nativeScrollbarsOverlaid: {\r\n show: booleanAllowedValues, // true || false\r\n initialize: booleanAllowedValues, // true || false\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 } 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 overflowStyleChanged: 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 OSEventListenersNameArgsMap {\r\n initialized: undefined;\r\n initializationWithdrawn: undefined;\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, OverflowStyle } from 'typings';\r\nimport {\r\n assignDeep,\r\n isEmptyObject,\r\n each,\r\n isFunction,\r\n keys,\r\n isHTMLElement,\r\n XY,\r\n TRBL,\r\n} from 'support';\r\nimport { createStructureSetup, createScrollbarsSetup } from 'setups';\r\nimport { getOptionsDiff, OSOptions, ReadonlyOSOptions } from 'options';\r\nimport { DefaultInitializationStrategy, getEnvironment, InitializationStrategy } 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 plugin(osPlugin: OSPlugin | OSPlugin[]): void;\r\n env(): OverlayScrollbarsEnv;\r\n}\r\n\r\nexport interface OverlayScrollbarsEnv {\r\n scrollbarSize: XY;\r\n scrollbarIsOverlaid: XY;\r\n scrollbarStyling: boolean;\r\n rtlScrollBehavior: { n: boolean; i: boolean };\r\n flexboxGlue: boolean;\r\n cssCustomProperties: boolean;\r\n defaultInitializationStrategy: DefaultInitializationStrategy;\r\n defaultDefaultOptions: OSOptions;\r\n\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\nexport interface OverlayScrollbarsState {\r\n padding: TRBL;\r\n paddingAbsolute: boolean;\r\n overflowAmount: XY;\r\n overflowStyle: XY;\r\n hasOverflow: XY;\r\n}\r\n\r\nexport interface OverlayScrollbarsElements {\r\n target: HTMLElement;\r\n host: HTMLElement;\r\n padding: HTMLElement;\r\n viewport: HTMLElement;\r\n content: HTMLElement;\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(): OverlayScrollbarsState;\r\n elements(): OverlayScrollbarsElements;\r\n\r\n on: AddOSEventListener;\r\n off: RemoveOSEventListener;\r\n}\r\n\r\n/**\r\n * Notes:\r\n * Height intrinsic detection use \"content: true\" init strategy - or open ticket for custom height intrinsic observer\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 const removeEnvListener = addEnvListener(update.bind(0, {}, true));\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 _overflowStyleChanged,\r\n _contentMutation,\r\n _hostMutation,\r\n } = updateHints;\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 overflowStyleChanged: _overflowStyleChanged,\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 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 assignDeep({}, currentOptions);\r\n },\r\n on: addEvent,\r\n off: removeEvent,\r\n state() {\r\n const { _overflowAmount, _overflowStyle, _hasOverflow, _padding, _paddingAbsolute } =\r\n structureState();\r\n return assignDeep(\r\n {},\r\n {\r\n overflowAmount: _overflowAmount,\r\n overflowStyle: _overflowStyle,\r\n hasOverflow: _hasOverflow,\r\n padding: _padding,\r\n paddingAbsolute: _paddingAbsolute,\r\n }\r\n );\r\n },\r\n elements() {\r\n const { _target, _host, _padding, _viewport, _content } = structureState._elements;\r\n return assignDeep(\r\n {},\r\n {\r\n target: _target,\r\n host: _host,\r\n padding: _padding || _viewport,\r\n viewport: _viewport,\r\n content: _content || _viewport,\r\n }\r\n );\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.plugin = addPlugin;\r\nOverlayScrollbars.env = () => {\r\n const {\r\n _nativeScrollbarSize,\r\n _nativeScrollbarIsOverlaid,\r\n _nativeScrollbarStyling,\r\n _rtlScrollBehavior,\r\n _flexboxGlue,\r\n _cssCustomProperties,\r\n _defaultInitializationStrategy,\r\n _defaultDefaultOptions,\r\n _getInitializationStrategy,\r\n _setInitializationStrategy,\r\n _getDefaultOptions,\r\n _setDefaultOptions,\r\n } = getEnvironment();\r\n return assignDeep(\r\n {},\r\n {\r\n scrollbarSize: _nativeScrollbarSize,\r\n scrollbarIsOverlaid: _nativeScrollbarIsOverlaid,\r\n scrollbarStyling: _nativeScrollbarStyling,\r\n rtlScrollBehavior: _rtlScrollBehavior,\r\n flexboxGlue: _flexboxGlue,\r\n cssCustomProperties: _cssCustomProperties,\r\n defaultInitializationStrategy: _defaultInitializationStrategy,\r\n defaultDefaultOptions: _defaultDefaultOptions,\r\n\r\n getInitializationStrategy: _getInitializationStrategy,\r\n setInitializationStrategy: _setInitializationStrategy,\r\n getDefaultOptions: _getDefaultOptions,\r\n setDefaultOptions: _setDefaultOptions,\r\n }\r\n );\r\n};\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","attrClass","add","currValues","currValuesSet","split","join","trim","hasAttrClass","has","removeAttr","removeAttribute","scrollLeft","scrollTop","elmPrototype","find","selector","rootElm","document","querySelectorAll","findFirst","querySelector","is","matches","msMatchesSelector","contents","childNodes","parent","parentElement","closest","closestFn","liesBetween","highBoundarySelector","deepBoundarySelector","closestHighBoundaryElm","closestDeepBoundaryElm","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","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","hasClass","contains","removeClass","remove","addClass","bind","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","dataAttributeHost","dataAttributeHostOverflowX","dataAttributeHostOverflowY","dataValueHostOverflowVisible","dataValueHostViewportScrollbarStyling","classNamePadding","classNameViewport","classNameViewportArrange","classNameContent","classNameViewportScrollbarStyling","classNameOverflowVisible","classNameSizeObserver","classNameSizeObserverAppear","classNameSizeObserverListener","classNameSizeObserverListenerScroll","classNameSizeObserverListenerItem","classNameSizeObserverListenerItemFinal","classNameTrinsicObserver","classNameScrollbar","classNameScrollbarHorizontal","classNameScrollbarVertical","classNameScrollbarTrack","classNameScrollbarHandle","stringify","JSON","_","Error","defaultOptions","paddingAbsolute","updating","elementEvents","attributes","ignoreMutation","overflow","nativeScrollbarsOverlaid","show","initialize","scrollbars","visibility","autoHide","autoHideDelay","dragScroll","clickScroll","touch","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","updateNativeScrollbarSizeCache","getNativeScrollbarSizeCache","nativeScrollbarSize","nativeScrollbarIsOverlaid","initializationStrategy","defaultDefaultOptions","env","_nativeScrollbarSize","_nativeScrollbarIsOverlaid","_nativeScrollbarStyling","_cssCustomProperties","_rtlScrollBehavior","_flexboxGlue","_addListener","_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","dynamicCreationFromStrategy","takeInitializationValue","addDataAttrHost","createStructureSetupElements","hostInitializationStrategy","viewportInitializationStrategy","paddingInitializationStrategy","contentInitializationStrategy","targetIsElm","targetStructureInitialization","targetElement","isTextarea","isBody","ownerDocument","bodyElm","wnd","defaultView","singleElmSupport","potentialViewportElement","viewport","potentiallySingleElm","viewportIsTarget","viewportElement","evaluatedTargetObj","_target","host","padding","content","_viewportArrange","_windowElm","_documentElm","_htmlElm","_bodyElm","_isTextarea","_isBody","_targetIsElm","_viewportIsTarget","_viewportHasClass","attributeClassName","_viewportAddRemoveClass","generatedElements","elementIsGenerated","destroyFns","isTextareaHostGenerated","targetContents","contentSlot","removeHostDataAttr","removePaddingClass","removeViewportClass","removeContentClass","createTrinsicUpdate","structureSetupElements","getState","updateHints","_heightIntrinsic","_heightIntrinsicChanged","heightIntrinsicChanged","height","_sizeChanged","_contentMutation","createPaddingUpdate","setState","_isSingleElm","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","strVisible","overlaidScrollbarsHideOffset","whCacheOptions","xyCacheOptions","getOverflowAmount","viewportScrollSize","viewportClientSize","sizeFraction","tollerance","amount","conditionalClass","overflowIsVisible","overflowBehavior","createOverflowUpdate","doViewportArrange","updateSizeFraction","getCurrentSizeFraction","updateViewportScrollSizeCache","getCurrentViewportScrollSizeCache","updateOverflowAmountCache","getCurrentOverflowAmountCache","updateOverflowStyleCache","fixFlexboxGlue","viewportOverflowState","heightIntrinsic","_overflowScroll","_scrollbarsHideOffset","hostClientSize","isContentBox","subtractXScrollbar","getViewportOverflowState","showNativeOverlaidScrollbars","viewportStyleObj","arrangeHideOffset","getStatePerAxis","styleKey","isOverlaid","overflowStyle","objectPrefferedOverflowStyle","overflowScroll","nonScrollbarStylingHideOffset","scrollbarsHideOffset","scrollbarsHideOffsetArrange","xOverflowStyle","xOverflowScroll","xScrollbarsHideOffset","xScrollbarsHideOffsetArrange","yOverflowStyle","yOverflowScroll","yScrollbarsHideOffset","yScrollbarsHideOffsetArrange","_overflowStyle","_scrollbarsHideOffsetArrange","setViewportOverflowState","hasOverflow","overflowOption","setAxisOverflowStyle","behavior","hasOverflowAxis","overflowVisible","overflowVisibleBehavior","visibleBehaviorX","visibleBehaviorY","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","overflowXVisible","overflowYVisible","sizeFractionCache","viewportScrollSizeCache","overflowAmuntCache","preMeasureViewportOverflowState","redoViewportArrange","undoViewportArrangeOverflowState","sizeFractionChanged","viewportScrollSizeChanged","viewportclientSize","arrangedViewportScrollSize","arrangedViewportClientSize","overflowAmount","overflowAmountChanged","removeClipping","viewportArranged","overflowStyleChanged","_overflowAmount","_hasOverflow","_overflowStyleChanged","_overflowAmountChanged","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","intersectionObserverInstance","entries","root","onSizeChanged","newSize","createEventContentChange","eventContentChange","map","destroyed","destroy","updateElements","getElements","eventElmList","elements","entry","entryEventNames","entryOff","delete","WeakMap","createDOMObserver","isContentObserver","isConnected","_attributes","_styleChangingAttributes","_eventContentChange","_nestedTargetSelector","_ignoreTargetChange","_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","hostSelector","viewportSelector","viewportAttrsFromTarget","baseStyleChangingAttrsTextarea","baseStyleChangingAttrs","createStructureSetupObservers","structureSetupUpdate","debounceTimeout","debounceMaxDelay","contentMutationObserver","updateContentSizeCache","contentScroll","viewportScroll","fractional","contentMutationObserverAttr","structureSetupUpdateWithDebouncedAdaptiveUpdateHints","prev","prevObj","currObj","updateViewportAttrsFromHost","attribute","hostAttr","onTrinsicChanged","heightIntrinsicCache","updateFn","directionChanged","onContentMutation","contentChangedTroughEvent","contentSizeChanged","onHostMutation","destroyTrinsicObserver","destroySizeObserver","destroyHostMutationObserver","viewportIsTargetResizeObserver","attributesChanged","elementEventsChanged","debounceValue","debounceChanged","updateContentMutationObserver","ignoreMutationFromOptions","ignore","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","overflowAllowedValues","scrollbarsVisibilityAllowedValues","scrollbarsAutoHideAllowedValues","function","optionsValidationPluginName","targets","targetInstanceMap","addInstance","osInstance","removeInstance","getInstance","createOSEventListenerHub","OverlayScrollbars","eventListeners","addEnvListener","plugins","instanceTarget","potentialInstance","optionsValidationPlugin","validateOptions","opts","validate","currentOptions","structureState","destroyStructure","updateScrollbars","destroyScrollbars","removeEnvListener","sizeChanged","hostMutation","instance","pluginName","pluginInstance","scrollbarIsOverlaid","scrollbarStyling","flexboxGlue","cssCustomProperties","defaultInitializationStrategy","getInitializationStrategy","setInitializationStrategy","getDefaultOptions","setDefaultOptions"],"mappings":"AA8BgB,SAAAA,WAAA,CACdC,OADc,EAEdC,MAFc,EAEc;EAE5B,MAAM;IAAEC,aAAF;IAAiBC,MAAjB;AAAyBC,IAAAA,mBAAAA;AAAzB,GAAA,GAAiDJ,OAAvD,CAAA;EACA,IAAIK,MAAM,GAAUH,aAApB,CAAA;;AACA,EAAA,IAAII,SAAJ,CAAA;;AAEA,EAAA,MAAMC,qBAAqB,GAAiC,CAACC,QAAD,EAAWC,KAAX,KAAqB;IAC/E,MAAMC,IAAI,GAAGL,MAAb,CAAA;IAEA,MAAMM,MAAM,GAAGH,QAAf,CAAA;AACA,IAAA,MAAMI,OAAO,GAAGH,KAAK,KAAKN,MAAM,GAAG,CAACA,MAAM,CAACO,IAAD,EAAOC,MAAP,CAAV,GAA2BD,IAAI,KAAKC,MAA/C,CAArB,CAAA;;IAEA,IAAIC,OAAO,IAAIR,mBAAf,EAAoC;AAClCC,MAAAA,MAAM,GAAGM,MAAT,CAAA;AACAL,MAAAA,SAAS,GAAGI,IAAZ,CAAA;AACD,KAAA;;AAED,IAAA,OAAO,CAACL,MAAD,EAASO,OAAT,EAAkBN,SAAlB,CAAP,CAAA;GAXF,CAAA;;AAaA,EAAA,MAAMO,mBAAmB,GAAwBJ,KAAD,IAC9CF,qBAAqB,CAACN,MAAO,CAACI,MAAD,EAASC,SAAT,CAAR,EAA6BG,KAA7B,CADvB,CAAA;;AAGA,EAAA,MAAMK,eAAe,GAA4BL,KAAD,IAAqB,CACnEJ,MADmE,EAEnE,CAAC,CAACI,KAFiE,EAGnEH,SAHmE,CAArE,CAAA;;EAMA,OAAO,CAACL,MAAM,GAAGY,mBAAH,GAAyBN,qBAAhC,EAAuDO,eAAvD,CAAP,CAAA;AAGD;;AC7DD,MAAMC,eAAe,GAAGC,IAAI,CAACC,YAA7B,CAAA;AACA,MAAM;EAAEC,QAAF;AAAYC,kBAAAA,gBAAAA;AAAZ,CAA+BC,GAAAA,MAAM,CAACC,SAA5C,CAAA;AAEM,SAAUC,WAAV,CAAsBC,GAAtB,EAA8B;EAClC,OAAOA,GAAG,KAAKC,SAAf,CAAA;AACD,CAAA;AAEK,SAAUC,MAAV,CAAiBF,GAAjB,EAAyB;EAC7B,OAAOA,GAAG,KAAK,IAAf,CAAA;AACD,CAAA;AAEM,MAAMG,IAAI,GAA0BH,GAAD,IACxCD,WAAW,CAACC,GAAD,CAAX,IAAoBE,MAAM,CAACF,GAAD,CAA1B,GACO,CAAA,EAAAA,GAAK,CAAA,CADZ,GAEIL,QAAQ,CACLS,IADH,CACQJ,GADR,CAAA,CAEGK,OAFH,CAEW,mBAFX,EAEgC,IAFhC,CAAA,CAGGC,WAHH,EAHC,CAAA;AAQD,SAAUC,QAAV,CAAmBP,GAAnB,EAA2B;EAC/B,OAAO,OAAOA,GAAP,KAAe,QAAtB,CAAA;AACD,CAAA;AAEK,SAAUQ,QAAV,CAAmBR,GAAnB,EAA2B;EAC/B,OAAO,OAAOA,GAAP,KAAe,QAAtB,CAAA;AACD,CAAA;AAEK,SAAUS,SAAV,CAAoBT,GAApB,EAA4B;EAChC,OAAO,OAAOA,GAAP,KAAe,SAAtB,CAAA;AACD,CAAA;AAEK,SAAUU,UAAV,CAAqBV,GAArB,EAA6B;EACjC,OAAO,OAAOA,GAAP,KAAe,UAAtB,CAAA;AACD,CAAA;AAEK,SAAUW,OAAV,CAAkBX,GAAlB,EAA0B;AAC9B,EAAA,OAAOY,KAAK,CAACD,OAAN,CAAcX,GAAd,CAAP,CAAA;AACD,CAAA;AAEK,SAAUa,QAAV,CAAmBb,GAAnB,EAA2B;AAC/B,EAAA,OAAO,OAAOA,GAAP,KAAe,QAAf,IAA2B,CAACW,OAAO,CAACX,GAAD,CAAnC,IAA4C,CAACE,MAAM,CAACF,GAAD,CAA1D,CAAA;AACD,CAAA;AAMK,SAAUc,WAAV,CAAmDd,GAAnD,EAA2D;EAC/D,MAAMe,MAAM,GAAG,CAAC,CAACf,GAAF,IAASA,GAAG,CAACe,MAA5B,CAAA;AACA,EAAA,MAAMC,mBAAmB,GAAGT,QAAQ,CAACQ,MAAD,CAAR,IAAoBA,MAAM,GAAG,CAAC,CAA9B,IAAmCA,MAAM,GAAG,CAAT,IAAc,CAA7E,CAAA;AAEA,EAAA,OAAOJ,OAAO,CAACX,GAAD,CAAP,IAAiB,CAACU,UAAU,CAACV,GAAD,CAAX,IAAoBgB,mBAArC,GACHD,MAAM,GAAG,CAAT,IAAcF,QAAQ,CAACb,GAAD,CAAtB,GACEe,MAAM,GAAG,CAAT,IAAcf,GADhB,GAEE,IAHC,GAIH,KAJJ,CAAA;AAKD,CAAA;AAMK,SAAUiB,aAAV,CAAiCjB,GAAjC,EAAyC;AAC7C,EAAA,IAAI,CAACA,GAAD,IAAQ,CAACa,QAAQ,CAACb,GAAD,CAAjB,IAA0BG,IAAI,CAACH,GAAD,CAAJ,KAAc,QAA5C,EAAsD,OAAO,KAAP,CAAA;AAEtD,EAAA,IAAIkB,GAAJ,CAAA;EACA,MAAMC,IAAI,GAAG,aAAb,CAAA;AACA,EAAA,MAAMC,IAAI,GAAGpB,GAAG,CAACmB,IAAD,CAAhB,CAAA;AACA,EAAA,MAAME,SAAS,GAAGD,IAAI,IAAIA,IAAI,CAACtB,SAA/B,CAAA;EACA,MAAMwB,iBAAiB,GAAG1B,gBAAc,CAACQ,IAAf,CAAoBJ,GAApB,EAAyBmB,IAAzB,CAA1B,CAAA;EACA,MAAMI,gBAAgB,GAAGF,SAAS,IAAIzB,gBAAc,CAACQ,IAAf,CAAoBiB,SAApB,EAA+B,eAA/B,CAAtC,CAAA;;AAEA,EAAA,IAAID,IAAI,IAAI,CAACE,iBAAT,IAA8B,CAACC,gBAAnC,EAAqD;AACnD,IAAA,OAAO,KAAP,CAAA;AACD,GAAA;;AAGD,EAAA,KAAKL,GAAL,IAAYlB,GAAZ,EAAiB,EAEhB;;AAGD,EAAA,OAAOD,WAAW,CAACmB,GAAD,CAAX,IAAoBtB,gBAAc,CAACQ,IAAf,CAAoBJ,GAApB,EAAyBkB,GAAzB,CAA3B,CAAA;AACD,CAAA;AAMK,SAAUM,aAAV,CAAwBxB,GAAxB,EAAgC;AACpC,EAAA,MAAMyB,aAAa,GAAGC,MAAM,CAACC,WAA7B,CAAA;AACA,EAAA,OAAO3B,GAAG,GACNyB,aAAa,GACXzB,GAAG,YAAYyB,aADJ,GAEXzB,GAAG,CAAC4B,QAAJ,KAAiBpC,eAHb,GAIN,KAJJ,CAAA;AAKD,CAAA;AAMK,SAAUqC,SAAV,CAAoB7B,GAApB,EAA4B;AAChC,EAAA,MAAMyB,aAAa,GAAGC,MAAM,CAACI,OAA7B,CAAA;AACA,EAAA,OAAO9B,GAAG,GACNyB,aAAa,GACXzB,GAAG,YAAYyB,aADJ,GAEXzB,GAAG,CAAC4B,QAAJ,KAAiBpC,eAHb,GAIN,KAJJ,CAAA;AAKD;;AC3Ee,SAAAuC,IAAA,CACdC,MADc,EAEdC,QAFc,EAEyD;AAEvE,EAAA,IAAInB,WAAW,CAACkB,MAAD,CAAf,EAAyB;AACvB,IAAA,KAAK,IAAIE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,MAAM,CAACjB,MAA3B,EAAmCmB,CAAC,EAApC,EAAwC;AACtC,MAAA,IAAID,QAAQ,CAACD,MAAM,CAACE,CAAD,CAAP,EAAYA,CAAZ,EAAeF,MAAf,CAAR,KAAmC,KAAvC,EAA8C;AAC5C,QAAA,MAAA;AACD,OAAA;AACF,KAAA;GALH,MAMO,IAAIA,MAAJ,EAAY;IACjBD,IAAI,CAAClC,MAAM,CAACsC,IAAP,CAAYH,MAAZ,CAAD,EAAuBd,GAAD,IAASe,QAAQ,CAACD,MAAM,CAACd,GAAD,CAAP,EAAcA,GAAd,EAAmBc,MAAnB,CAAvC,CAAJ,CAAA;AACD,GAAA;;AACD,EAAA,OAAOA,MAAP,CAAA;AACD,CAAA;AAQM,MAAMI,OAAO,GAAG,CAAUC,GAAV,EAAoBC,IAApB,EAA6BC,SAA7B,KACrBF,GAAG,CAACD,OAAJ,CAAYE,IAAZ,EAAkBC,SAAlB,CADK,CAAA;AAQA,MAAMC,IAAI,GAAG,CAAIC,KAAJ,EAAgBC,KAAhB,EAAyCC,iBAAzC,KAA6E;AAC/F,EAAA,CAACA,iBAAD,IAAsB,CAACnC,QAAQ,CAACkC,KAAD,CAA/B,IAA0C5B,WAAW,CAAC4B,KAAD,CAArD,GACI9B,KAAK,CAACd,SAAN,CAAgB0C,IAAhB,CAAqBI,KAArB,CAA2BH,KAA3B,EAAkCC,KAAlC,CADJ,GAEID,KAAK,CAACD,IAAN,CAAWE,KAAX,CAFJ,CAAA;AAGA,EAAA,OAAOD,KAAP,CAAA;AACD,CALM,CAAA;AAWA,MAAMI,IAAI,GAAaR,GAAV,IAAyC;AAC3D,EAAA,IAAIzB,KAAK,CAACiC,IAAN,IAAcR,GAAlB,EAAuB;AACrB,IAAA,OAAOzB,KAAK,CAACiC,IAAN,CAAWR,GAAX,CAAP,CAAA;AACD,GAAA;;EACD,MAAMS,MAAM,GAAQ,EAApB,CAAA;;EAEA,IAAIT,GAAG,YAAYU,GAAnB,EAAwB;AACtBV,IAAAA,GAAG,CAACW,OAAJ,CAAaC,KAAD,IAAU;AACpBT,MAAAA,IAAI,CAACM,MAAD,EAASG,KAAT,CAAJ,CAAA;KADF,CAAA,CAAA;AAGD,GAJD,MAIO;AACLlB,IAAAA,IAAI,CAACM,GAAD,EAAOa,GAAD,IAAQ;AAChBV,MAAAA,IAAI,CAACM,MAAD,EAASI,GAAT,CAAJ,CAAA;AACD,KAFG,CAAJ,CAAA;AAGD,GAAA;;AAED,EAAA,OAAOJ,MAAP,CAAA;AACD,CAjBM,CAAA;AAuBA,MAAMK,YAAY,GAAIV,KAAD,IAC1B,CAAC,CAACA,KAAF,IAAWA,KAAK,CAAC1B,MAAN,KAAiB,CADvB,CAAA;AAQA,MAAMqC,OAAO,GAAG,CAACf,GAAD,EAAiDgB,IAAjD,KAAuE;AAE5F,EAAA,MAAMC,KAAK,GAAIC,EAAD,IAAqBA,EAAE,IAAIA,EAAE,CAACX,KAAH,CAAS3C,SAAT,EAAoBoD,IAAI,IAAI,EAA5B,CAAzC,CAAA;;EACA,IAAIhB,GAAG,YAAYU,GAAnB,EAAwB;IACtBV,GAAG,CAACW,OAAJ,CAAYM,KAAZ,CAAA,CAAA;AACD,GAFD,MAEO;AACLvB,IAAAA,IAAI,CAACM,GAAD,EAAMiB,KAAN,CAAJ,CAAA;AACD,GAAA;AACF,CARM;;ACpGA,MAAM1D,cAAc,GAAG,CAACI,GAAD,EAAWwD,IAAX,KAC5B3D,MAAM,CAACC,SAAP,CAAiBF,cAAjB,CAAgCQ,IAAhC,CAAqCJ,GAArC,EAA0CwD,IAA1C,CADK,CAAA;AAOA,MAAMrB,IAAI,GAAInC,GAAD,IAA8BA,GAAG,GAAGH,MAAM,CAACsC,IAAP,CAAYnC,GAAZ,CAAH,GAAsB,EAApE,CAAA;AA0BS,SAAAyD,UAAA,CACdC,MADc,EAEdC,OAFc,EAGdC,OAHc,EAIdC,OAJc,EAKdC,OALc,EAMdC,OANc,EAOdC,OAPc,EAOH;AAEX,EAAA,MAAMC,OAAO,GAAe,CAACN,OAAD,EAAUC,OAAV,EAAmBC,OAAnB,EAA4BC,OAA5B,EAAqCC,OAArC,EAA8CC,OAA9C,CAA5B,CAAA;;AAGA,EAAA,IAAI,CAAC,OAAON,MAAP,KAAkB,QAAlB,IAA8BxD,MAAM,CAACwD,MAAD,CAArC,KAAkD,CAAChD,UAAU,CAACgD,MAAD,CAAjE,EAA2E;AACzEA,IAAAA,MAAM,GAAG,EAAT,CAAA;AACD,GAAA;;AAED3B,EAAAA,IAAI,CAACkC,OAAD,EAAWjC,MAAD,IAAW;AAEvBD,IAAAA,IAAI,CAACI,IAAI,CAACH,MAAD,CAAL,EAAgBd,GAAD,IAAQ;AACzB,MAAA,MAAMgD,IAAI,GAAQlC,MAAM,CAACd,GAAD,CAAxB,CAAA;;MAIA,IAAIwC,MAAM,KAAKQ,IAAf,EAAqB;AACnB,QAAA,OAAO,IAAP,CAAA;AACD,OAAA;;AAED,MAAA,MAAMC,WAAW,GAAGxD,OAAO,CAACuD,IAAD,CAA3B,CAAA;;MAGA,IAAIA,IAAI,KAAKjD,aAAa,CAACiD,IAAD,CAAb,IAAuBC,WAA5B,CAAR,EAAkD;AAChD,QAAA,MAAMC,GAAG,GAAGV,MAAM,CAACxC,GAAD,CAAlB,CAAA;QACA,IAAImD,KAAK,GAAQD,GAAjB,CAAA;;AAGA,QAAA,IAAID,WAAW,IAAI,CAACxD,OAAO,CAACyD,GAAD,CAA3B,EAAkC;AAChCC,UAAAA,KAAK,GAAG,EAAR,CAAA;SADF,MAEO,IAAI,CAACF,WAAD,IAAgB,CAAClD,aAAa,CAACmD,GAAD,CAAlC,EAAyC;AAC9CC,UAAAA,KAAK,GAAG,EAAR,CAAA;AACD,SAAA;;QAGDX,MAAM,CAACxC,GAAD,CAAN,GAAcuC,UAAU,CAACY,KAAD,EAAQH,IAAR,CAAxB,CAAA;AACD,OAbD,MAaO;AACLR,QAAAA,MAAM,CAACxC,GAAD,CAAN,GAAcgD,IAAd,CAAA;AACD,OAAA;AACF,KA5BG,CAAJ,CAAA;AA6BD,GA/BG,CAAJ,CAAA;AAkCA,EAAA,OAAOR,MAAP,CAAA;AACD,CAAA;AAMK,SAAUY,aAAV,CAAwBtE,GAAxB,EAAgC;AAEpC,EAAA,KAAK,MAAMuE,IAAX,IAAmBvE,GAAnB,EAAwB,OAAO,KAAP,CAAA;;AACxB,EAAA,OAAO,IAAP,CAAA;AAED;;AClGD,SAASwE,UAAT,CACEC,OADF,EAEEC,QAFF,EAGExB,GAHF,EAIED,KAJF,EAIyB;AAEvB,EAAA,IAAIlD,WAAW,CAACkD,KAAD,CAAf,EAAwB;AACtB,IAAA,OAAOC,GAAG,GAAGA,GAAG,CAACuB,OAAD,CAAN,GAAkBC,QAA5B,CAAA;AACD,GAAA;;AACDxB,EAAAA,GAAG,KAAKA,GAAG,CAACuB,OAAD,CAAH,GAAexB,KAApB,CAAH,CAAA;AACD,CAAA;;SAee0B,KACdzB,KACA0B,UACA3B,OAAc;AAEd,EAAA,IAAIlD,WAAW,CAACkD,KAAD,CAAf,EAAwB;IACtB,OAAOC,GAAG,GAAGA,GAAG,CAAC2B,YAAJ,CAAiBD,QAAjB,CAAH,GAAgC,IAA1C,CAAA;AACD,GAAA;;EACD1B,GAAG,IAAIA,GAAG,CAAC4B,YAAJ,CAAiBF,QAAjB,EAA2B3B,KAA3B,CAAP,CAAA;AACD,CAAA;AAEM,MAAM8B,SAAS,GAAG,CACvB7B,GADuB,EAEvB0B,QAFuB,EAGvB3B,KAHuB,EAIvB+B,GAJuB,KAKrB;EACF,MAAMC,UAAU,GAAGN,IAAI,CAACzB,GAAD,EAAM0B,QAAN,CAAJ,IAAuB,EAA1C,CAAA;EACA,MAAMM,aAAa,GAAG,IAAInC,GAAJ,CAAQkC,UAAU,CAACE,KAAX,CAAiB,GAAjB,CAAR,CAAtB,CAAA;EACAD,aAAa,CAACF,GAAG,GAAG,KAAH,GAAW,QAAf,CAAb,CAAsC/B,KAAtC,CAAA,CAAA;AAEA0B,EAAAA,IAAI,CAACzB,GAAD,EAAM0B,QAAN,EAAgB/B,IAAI,CAACqC,aAAD,CAAJ,CAAoBE,IAApB,CAAyB,GAAzB,CAA8BC,CAAAA,IAA9B,EAAhB,CAAJ,CAAA;AACD,CAXM,CAAA;AAaA,MAAMC,YAAY,GAAG,CAC1BpC,GAD0B,EAE1B0B,QAF0B,EAG1B3B,KAH0B,KAIxB;EACF,MAAMgC,UAAU,GAAGN,IAAI,CAACzB,GAAD,EAAM0B,QAAN,CAAJ,IAAuB,EAA1C,CAAA;EACA,MAAMM,aAAa,GAAG,IAAInC,GAAJ,CAAQkC,UAAU,CAACE,KAAX,CAAiB,GAAjB,CAAR,CAAtB,CAAA;AACA,EAAA,OAAOD,aAAa,CAACK,GAAd,CAAkBtC,KAAlB,CAAP,CAAA;AACD,CARM,CAAA;AAeA,MAAMuC,UAAU,GAAG,CAACtC,GAAD,EAA0C0B,QAA1C,KAAoE;AAC5F1B,EAAAA,GAAG,IAAIA,GAAG,CAACuC,eAAJ,CAAoBb,QAApB,CAAP,CAAA;AACD,CAFM,CAAA;AAWS,SAAAc,UAAA,CACdxC,GADc,EAEdD,KAFc,EAEA;EAEd,OAAOuB,UAAU,CAAC,YAAD,EAAe,CAAf,EAAkBtB,GAAlB,EAAuBD,KAAvB,CAAjB,CAAA;AACD,CAAA;AASe,SAAA0C,SAAA,CACdzC,GADc,EAEdD,KAFc,EAEA;EAEd,OAAOuB,UAAU,CAAC,WAAD,EAAc,CAAd,EAAiBtB,GAAjB,EAAsBD,KAAtB,CAAjB,CAAA;AACD;;AC7FD,MAAM2C,YAAY,GAAG9D,OAAO,CAAChC,SAA7B,CAAA;;AAOA,MAAM+F,IAAI,GAAG,CAACC,QAAD,EAAmB5C,GAAnB,KAAwD;EACnE,MAAMb,GAAG,GAAmB,EAA5B,CAAA;AACA,EAAA,MAAM0D,OAAO,GAAG7C,GAAG,GAAIrB,SAAS,CAACqB,GAAD,CAAT,GAAiBA,GAAjB,GAAuB,IAA3B,GAAmC8C,QAAtD,CAAA;AAEA,EAAA,OAAOD,OAAO,GAAGvD,IAAI,CAACH,GAAD,EAAM0D,OAAO,CAACE,gBAAR,CAAyBH,QAAzB,CAAN,CAAP,GAAmDzD,GAAjE,CAAA;AACD,CALD,CAAA;;AAYA,MAAM6D,SAAS,GAAG,CAACJ,QAAD,EAAmB5C,GAAnB,KAAgE;AAChF,EAAA,MAAM6C,OAAO,GAAG7C,GAAG,GAAIrB,SAAS,CAACqB,GAAD,CAAT,GAAiBA,GAAjB,GAAuB,IAA3B,GAAmC8C,QAAtD,CAAA;EAEA,OAAOD,OAAO,GAAGA,OAAO,CAACI,aAAR,CAAsBL,QAAtB,CAAH,GAAqC,IAAnD,CAAA;AACD,CAJD,CAAA;;AAWA,MAAMM,EAAE,GAAG,CAAClD,GAAD,EAAwB4C,QAAxB,KAAqD;AAC9D,EAAA,IAAIjE,SAAS,CAACqB,GAAD,CAAb,EAAoB;IAIlB,MAAMK,EAAE,GAA8BqC,YAAY,CAACS,OAAb,IAAwBT,YAAY,CAACU,iBAA3E,CAAA;AACA,IAAA,OAAO/C,EAAE,CAACnD,IAAH,CAAQ8C,GAAR,EAAa4C,QAAb,CAAP,CAAA;AACD,GAAA;;AACD,EAAA,OAAO,KAAP,CAAA;AACD,CATD,CAAA;;AA+BA,MAAMS,QAAQ,GAAIrD,GAAD,IACfA,GAAG,GAAGL,IAAI,CAACK,GAAG,CAACsD,UAAL,CAAP,GAA0B,EAD/B,CAAA;;AAOA,MAAMC,MAAM,GAAIvD,GAAD,IAA+CA,GAAG,GAAGA,GAAG,CAACwD,aAAP,GAAuB,IAAxF,CAAA;;AAEA,MAAMC,OAAO,GAAG,CAACzD,GAAD,EAAwB4C,QAAxB,KAA+D;AAC7E,EAAA,IAAIjE,SAAS,CAACqB,GAAD,CAAb,EAAoB;AAClB,IAAA,MAAM0D,SAAS,GAAGhB,YAAY,CAACe,OAA/B,CAAA;;AACA,IAAA,IAAIC,SAAJ,EAAe;AACb,MAAA,OAAOA,SAAS,CAACxG,IAAV,CAAe8C,GAAf,EAAoB4C,QAApB,CAAP,CAAA;AACD,KAAA;;IAED,GAAG;AACD,MAAA,IAAIM,EAAE,CAAClD,GAAD,EAAM4C,QAAN,CAAN,EAAuB;AACrB,QAAA,OAAO5C,GAAP,CAAA;AACD,OAAA;;AACDA,MAAAA,GAAG,GAAGuD,MAAM,CAACvD,GAAD,CAAZ,CAAA;AACD,KALD,QAKSA,GALT,EAAA;AAMD,GAAA;;AAED,EAAA,OAAO,IAAP,CAAA;AACD,CAhBD,CAAA;;AAwBA,MAAM2D,WAAW,GAAG,CAClB3D,GADkB,EAElB4D,oBAFkB,EAGlBC,oBAHkB,KAIP;EACX,MAAMC,sBAAsB,GAAG9D,GAAG,IAAIyD,OAAO,CAACzD,GAAD,EAAM4D,oBAAN,CAA7C,CAAA;EACA,MAAMG,sBAAsB,GAAG/D,GAAG,IAAIgD,SAAS,CAACa,oBAAD,EAAuBC,sBAAvB,CAA/C,CAAA;EAEA,OAAOA,sBAAsB,IAAIC,sBAA1B,GACHD,sBAAsB,KAAK9D,GAA3B,IACE+D,sBAAsB,KAAK/D,GAD7B,IAEEyD,OAAO,CAACA,OAAO,CAACzD,GAAD,EAAM6D,oBAAN,CAAR,EAAqCD,oBAArC,CAAP,KAAsEE,sBAHrE,GAIH,KAJJ,CAAA;AAKD,CAbD;;ACxFA,MAAME,MAAM,GAAG,CACbC,SADa,EAEbC,eAFa,EAGbC,YAHa,KAIL;AACR,EAAA,IAAIA,YAAJ,EAAkB;IAChB,IAAIC,MAAM,GAA4BF,eAAtC,CAAA;AACA,IAAA,IAAIG,QAAJ,CAAA;;AAGA,IAAA,IAAIJ,SAAJ,EAAe;AACb,MAAA,IAAIrG,WAAW,CAACuG,YAAD,CAAf,EAA+B;AAC7BE,QAAAA,QAAQ,GAAGvB,QAAQ,CAACwB,sBAAT,EAAX,CAAA;AAGAzF,QAAAA,IAAI,CAACsF,YAAD,EAAgBI,WAAD,IAAgB;UACjC,IAAIA,WAAW,KAAKH,MAApB,EAA4B;YAC1BA,MAAM,GAAGG,WAAW,CAACC,eAArB,CAAA;AACD,WAAA;;UACDH,QAAS,CAACI,WAAV,CAAsBF,WAAtB,CAAA,CAAA;AACD,SALG,CAAJ,CAAA;AAMD,OAVD,MAUO;AACLF,QAAAA,QAAQ,GAAGF,YAAX,CAAA;AACD,OAAA;;AAGD,MAAA,IAAID,eAAJ,EAAqB;QACnB,IAAI,CAACE,MAAL,EAAa;UACXA,MAAM,GAAGH,SAAS,CAACS,UAAnB,CAAA;AACD,SAFD,MAEO,IAAIN,MAAM,KAAKF,eAAf,EAAgC;UACrCE,MAAM,GAAGA,MAAM,CAACO,WAAhB,CAAA;AACD,SAAA;AACF,OAAA;;AAEDV,MAAAA,SAAS,CAACW,YAAV,CAAuBP,QAAvB,EAAiCD,MAAM,IAAI,IAA3C,CAAA,CAAA;AACD,KAAA;AACF,GAAA;AACF,CArCD,CAAA;;AA4CO,MAAMS,cAAc,GAAG,CAACC,IAAD,EAAgCC,QAAhC,KAAkE;AAC9Ff,EAAAA,MAAM,CAACc,IAAD,EAAO,IAAP,EAAaC,QAAb,CAAN,CAAA;AACD,CAFM,CAAA;AASA,MAAMC,eAAe,GAAG,CAACF,IAAD,EAAgCC,QAAhC,KAAkE;EAC/Ff,MAAM,CAACc,IAAD,EAAOA,IAAI,IAAIA,IAAI,CAACJ,UAApB,EAAgCK,QAAhC,CAAN,CAAA;AACD,CAFM,CAAA;AASA,MAAMH,YAAY,GAAG,CAC1BE,IAD0B,EAE1BG,aAF0B,KAGlB;EACRjB,MAAM,CAACT,MAAM,CAACuB,IAAD,CAAP,EAAeA,IAAf,EAAqBG,aAArB,CAAN,CAAA;AACD,CALM,CAAA;AAYA,MAAMC,WAAW,GAAG,CAACJ,IAAD,EAAgCG,aAAhC,KAAuE;AAChGjB,EAAAA,MAAM,CAACT,MAAM,CAACuB,IAAD,CAAP,EAAeA,IAAI,IAAIA,IAAI,CAACH,WAA5B,EAAyCM,aAAzC,CAAN,CAAA;AACD,CAFM,CAAA;AAQA,MAAME,cAAc,GAAIC,KAAD,IAAgC;AAC5D,EAAA,IAAIxH,WAAW,CAACwH,KAAD,CAAf,EAAwB;AACtBvG,IAAAA,IAAI,CAACc,IAAI,CAACyF,KAAD,CAAL,EAAeC,CAAD,IAAOF,cAAc,CAACE,CAAD,CAAnC,CAAJ,CAAA;GADF,MAEO,IAAID,KAAJ,EAAW;AAChB,IAAA,MAAMnB,SAAS,GAAGV,MAAM,CAAC6B,KAAD,CAAxB,CAAA;;AACA,IAAA,IAAInB,SAAJ,EAAe;MACbA,SAAS,CAACqB,WAAV,CAAsBF,KAAtB,CAAA,CAAA;AACD,KAAA;AACF,GAAA;AACF,CATM;;ACtFA,MAAMG,SAAS,GAAIC,UAAD,IAAwC;AAC/D,EAAA,MAAMC,GAAG,GAAG3C,QAAQ,CAAC4C,aAAT,CAAuB,KAAvB,CAAZ,CAAA;;AACA,EAAA,IAAIF,UAAJ,EAAgB;AACd/D,IAAAA,IAAI,CAACgE,GAAD,EAAM,OAAN,EAAeD,UAAf,CAAJ,CAAA;AACD,GAAA;;AACD,EAAA,OAAOC,GAAP,CAAA;AACD,CANM,CAAA;AAYA,MAAME,SAAS,GAAIC,IAAD,IAAsC;EAC7D,MAAMC,UAAU,GAAGN,SAAS,EAA5B,CAAA;AACAM,EAAAA,UAAU,CAACC,SAAX,GAAuBF,IAAI,CAACzD,IAAL,EAAvB,CAAA;AAEA,EAAA,OAAOtD,IAAI,CAACwE,QAAQ,CAACwC,UAAD,CAAT,EAAwB7F,GAAD,IAASmF,cAAc,CAACnF,GAAD,CAA9C,CAAX,CAAA;AACD,CALM;;AChBP,MAAM+F,kBAAkB,GAAIC,GAAD,IAAyBA,GAAG,CAACC,MAAJ,CAAW,CAAX,CAAA,CAAcC,WAAd,EAA8BF,GAAAA,GAAG,CAACG,KAAJ,CAAU,CAAV,CAAlF,CAAA;;AACA,MAAMC,aAAa,GAAG,MAA2Bb,SAAS,GAAGc,KAA7D,CAAA;;AAIO,MAAMC,WAAW,GAA0B,CAAC,UAAD,EAAa,OAAb,EAAsB,KAAtB,EAA6B,MAA7B,CAA3C,CAAA;AACA,MAAMC,UAAU,GAA0B,CAC/C,QAD+C,EAE/C,KAF+C,EAG/C,GAH+C,EAI/C,IAJ+C,EAK/C,QAL+C,EAM/C,KAN+C,EAO/C,GAP+C,EAQ/C,IAR+C,CAA1C,CAAA;AAWA,MAAMC,OAAO,GAA2B,EAAxC,CAAA;AACA,MAAMC,QAAQ,GAA8B,EAA5C,CAAA;AAMA,MAAMC,WAAW,GAAIrF,IAAD,IAAyB;AAClD,EAAA,IAAIzB,MAAM,GAAuB6G,QAAQ,CAACpF,IAAD,CAAzC,CAAA;;AAEA,EAAA,IAAI3E,cAAc,CAAC+J,QAAD,EAAWpF,IAAX,CAAlB,EAAoC;AAClC,IAAA,OAAOzB,MAAP,CAAA;AACD,GAAA;;AAED,EAAA,MAAM+G,cAAc,GAAWZ,kBAAkB,CAAC1E,IAAD,CAAjD,CAAA;EACA,MAAMuF,QAAQ,GAAwBR,aAAa,EAAnD,CAAA;AAEAvH,EAAAA,IAAI,CAACyH,WAAD,EAAeO,MAAD,IAAmB;IACnC,MAAMC,mBAAmB,GAAWD,MAAM,CAAC1J,OAAP,CAAe,IAAf,EAAqB,EAArB,CAApC,CAAA;AACA,IAAA,MAAM4J,mBAAmB,GAAkB,CACzC1F,IADyC,EAEzCwF,MAAM,GAAGxF,IAFgC,EAGzCyF,mBAAmB,GAAGH,cAHmB,EAIzCZ,kBAAkB,CAACe,mBAAD,CAAlB,GAA0CH,cAJD,CAA3C,CAAA;AAQA,IAAA,OAAO,EAAE/G,MAAM,GAAGmH,mBAAmB,CAACpE,IAApB,CACfqE,iBAAD,IAA+BJ,QAAQ,CAACI,iBAAD,CAAR,KAAgCjK,SAD/C,CAAX,CAAP,CAAA;AAGD,GAbG,CAAJ,CAAA;AAgBA,EAAA,OAAQ0J,QAAQ,CAACpF,IAAD,CAAR,GAAiBzB,MAAM,IAAI,EAAnC,CAAA;AACD,CA3BM,CAAA;AAoEA,MAAMqH,KAAK,GAAa5F,IAAV,IAAyC;EAC5D,IAAIzB,MAAM,GAAQ4G,OAAO,CAACnF,IAAD,CAAP,IAAiB7C,MAAM,CAAC6C,IAAD,CAAzC,CAAA;;AAEA,EAAA,IAAI3E,cAAc,CAAC8J,OAAD,EAAUnF,IAAV,CAAlB,EAAmC;AACjC,IAAA,OAAOzB,MAAP,CAAA;AACD,GAAA;;AAEDf,EAAAA,IAAI,CAAC0H,UAAD,EAAcM,MAAD,IAAmB;IAClCjH,MAAM,GAAGA,MAAM,IAAIpB,MAAM,CAACqI,MAAM,GAAGd,kBAAkB,CAAC1E,IAAD,CAA5B,CAAzB,CAAA;AACA,IAAA,OAAO,CAACzB,MAAR,CAAA;AACD,GAHG,CAAJ,CAAA;AAKA4G,EAAAA,OAAO,CAACnF,IAAD,CAAP,GAAgBzB,MAAhB,CAAA;AACA,EAAA,OAAOA,MAAP,CAAA;AACD,CAdM;;AC9FA,MAAMsH,2BAA2B,GAAGD,KAAK,CAA0B,kBAA1B,CAAzC,CAAA;AACA,MAAME,+BAA+B,GAAGF,KAAK,CAClD,sBADkD,CAA7C,CAAA;AAGA,MAAMG,yBAAyB,GAAGH,KAAK,CAAwB,gBAAxB,CAAvC,CAAA;AACA,MAAMI,GAAG,GAAGJ,KAAK,CAA8B,sBAA9B,CAAjB,CAAA;AACA,MAAMK,GAAG,GAAGL,KAAK,CAA+B,uBAA/B,CAAjB;;ACJP,MAAMM,aAAa,GAAG,mBAAtB,CAAA;;AACA,MAAMC,eAAe,GAAG,CACtBxH,GADsB,EAEtByH,SAFsB,EAGtBC,MAHsB,KAIX;AACX,EAAA,IAAIC,KAAJ,CAAA;EACA,IAAI3I,CAAC,GAAG,CAAR,CAAA;EACA,IAAIY,MAAM,GAAG,KAAb,CAAA;;EAEA,IAAII,GAAG,IAAIyH,SAAP,IAAoBnK,QAAQ,CAACmK,SAAD,CAAhC,EAA6C;IAC3C,MAAMG,OAAO,GAAkBH,SAAS,CAACI,KAAV,CAAgBN,aAAhB,KAAkC,EAAjE,CAAA;AACA3H,IAAAA,MAAM,GAAGgI,OAAO,CAAC/J,MAAR,GAAiB,CAA1B,CAAA;;AACA,IAAA,OAAQ8J,KAAK,GAAGC,OAAO,CAAC5I,CAAC,EAAF,CAAvB,EAA+B;AAC7BY,MAAAA,MAAM,GAAG,CAAC,CAAC8H,MAAM,CAAC1H,GAAG,CAAC8H,SAAL,EAAgBH,KAAhB,CAAR,IAAkC/H,MAA3C,CAAA;AACD,KAAA;AACF,GAAA;;AACD,EAAA,OAAOA,MAAP,CAAA;AACD,CAjBD,CAAA;;AAwBO,MAAMmI,QAAQ,GAAG,CACtB/H,GADsB,EAEtByH,SAFsB,KAGVD,eAAe,CAACxH,GAAD,EAAMyH,SAAN,EAAiB,CAACK,SAAD,EAAYH,KAAZ,KAAsBG,SAAS,CAACE,QAAV,CAAmBL,KAAnB,CAAvC,CAHtB,CAAA;AAUA,MAAMM,WAAW,GAAG,CACzBjI,GADyB,EAEzByH,SAFyB,KAGjB;AACRD,EAAAA,eAAe,CAACxH,GAAD,EAAMyH,SAAN,EAAiB,CAACK,SAAD,EAAYH,KAAZ,KAAsBG,SAAS,CAACI,MAAV,CAAiBP,KAAjB,CAAvC,CAAf,CAAA;AACD,CALM,CAAA;AAaA,MAAMQ,QAAQ,GAAG,CACtBnI,GADsB,EAEtByH,SAFsB,KAGN;AAChBD,EAAAA,eAAe,CAACxH,GAAD,EAAMyH,SAAN,EAAiB,CAACK,SAAD,EAAYH,KAAZ,KAAsBG,SAAS,CAAChG,GAAV,CAAc6F,KAAd,CAAvC,CAAf,CAAA;EACA,OAAOM,WAAW,CAACG,IAAZ,CAAiB,CAAjB,EAAoBpI,GAApB,EAAyByH,SAAzB,CAAP,CAAA;AACD,CANM;;AC1CA,MAAMY,KAAK,GAAG,CACnBC,CADmB,EAEnBC,CAFmB,EAGnBC,KAHmB,EAInBC,YAJmB,KAKR;EACX,IAAIH,CAAC,IAAIC,CAAT,EAAY;IACV,IAAI3I,MAAM,GAAG,IAAb,CAAA;AACAf,IAAAA,IAAI,CAAC2J,KAAD,EAASlI,IAAD,IAAS;AACnB,MAAA,MAAMoI,QAAQ,GAAGD,YAAY,GAAGA,YAAY,CAACH,CAAC,CAAChI,IAAD,CAAF,CAAf,GAA2BgI,CAAC,CAAChI,IAAD,CAAzD,CAAA;AACA,MAAA,MAAMqI,QAAQ,GAAGF,YAAY,GAAGA,YAAY,CAACF,CAAC,CAACjI,IAAD,CAAF,CAAf,GAA2BiI,CAAC,CAACjI,IAAD,CAAzD,CAAA;;MACA,IAAIoI,QAAQ,KAAKC,QAAjB,EAA2B;AACzB/I,QAAAA,MAAM,GAAG,KAAT,CAAA;AACD,OAAA;AACF,KANG,CAAJ,CAAA;AAOA,IAAA,OAAOA,MAAP,CAAA;AACD,GAAA;;AACD,EAAA,OAAO,KAAP,CAAA;AACD,CAlBM,CAAA;AA0BA,MAAMgJ,OAAO,GAAG,CAAIN,CAAJ,EAAeC,CAAf,KAA6BF,KAAK,CAAQC,CAAR,EAAWC,CAAX,EAAc,CAAC,GAAD,EAAM,GAAN,CAAd,CAAlD,CAAA;AAQA,MAAMM,OAAO,GAAG,CAAIP,CAAJ,EAAeC,CAAf,KAA6BF,KAAK,CAAQC,CAAR,EAAWC,CAAX,EAAc,CAAC,GAAD,EAAM,GAAN,CAAd,CAAlD,CAAA;AAQA,MAAMO,SAAS,GAAG,CAACR,CAAD,EAAWC,CAAX,KAAwBF,KAAK,CAAOC,CAAP,EAAUC,CAAV,EAAa,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,CAAb,CAA/C,CAAA;AASA,MAAMQ,UAAU,GAAG,CAACT,CAAD,EAAcC,CAAd,EAA2BS,KAA3B,KACxBX,KAAK,CAAUC,CAAV,EAAaC,CAAb,EAAgB,CAAC,OAAD,EAAU,QAAV,CAAhB,EAAqCS,KAAK,KAAMjJ,KAAD,IAAWkJ,IAAI,CAACD,KAAL,CAAWjJ,KAAX,CAAhB,CAA1C,CADA;;ACzDP,MAAMmJ,aAAa,GAAIC,EAAD,IAA2B;AAC/CA,EAAAA,EAAE,IAAI3K,MAAM,CAAC4K,YAAP,CAAoBD,EAApB,CAAN,CAAA;AACAA,EAAAA,EAAE,IAAI9B,GAAI,CAAC8B,EAAD,CAAV,CAAA;AACD,CAHD,CAAA;;AA+BO,MAAME,IAAI,GAAG,MAAO,EAApB,CAAA;AAOA,MAAMC,QAAQ,GAAG,CACtBC,kBADsB,EAEtBhO,OAFsB,KAGW;AACjC,EAAA,IAAIiO,SAAJ,CAAA;AACA,EAAA,IAAIC,YAAJ,CAAA;AACA,EAAA,IAAIC,aAAJ,CAAA;AACA,EAAA,IAAIC,eAAJ,CAAA;EACA,MAAM;IAAEC,QAAF;IAAYC,SAAZ;AAAuBC,IAAAA,YAAAA;GAAiBvO,GAAAA,OAAO,IAAI,EAAzD,CAAA;AACA,EAAA,MAAMwO,IAAI,GAAGvL,MAAM,CAACwL,UAApB,CAAA;;AAEA,EAAA,MAAMC,wBAAwB,GAAG,SAA3BA,wBAA2B,CAAU9J,IAAV,EAA0B;IACzD+I,aAAa,CAACM,SAAD,CAAb,CAAA;IACAN,aAAa,CAACO,YAAD,CAAb,CAAA;AACAA,IAAAA,YAAY,GAAGD,SAAS,GAAGE,aAAa,GAAG3M,SAA3C,CAAA;AAGAwM,IAAAA,kBAAkB,CAAC7J,KAAnB,CAAyB,IAAzB,EAA+BS,IAA/B,CAAA,CAAA;GANF,CAAA;;AASA,EAAA,MAAM+J,UAAU,GACdjO,IADiB,IAGjB6N,YAAY,IAAIJ,aAAhB,GAAgCI,YAAY,CAACJ,aAAD,EAAgBzN,IAAhB,CAA5C,GAAoEA,IAHtE,CAAA;;EAKA,MAAMkO,KAAK,GAAG,MAAK;AAEjB,IAAA,IAAIX,SAAJ,EAAe;AACbS,MAAAA,wBAAwB,CAACC,UAAU,CAACP,eAAD,CAAV,IAAgCA,eAAjC,CAAxB,CAAA;AACD,KAAA;GAJH,CAAA;;AAOA,EAAA,MAAMS,WAAW,GAAG,SAAdA,WAAc,GAAA;AAElB,IAAA,MAAMjK,IAAI,GAAmCR,IAAI,CAAC0K,SAAD,CAAjD,CAAA;IACA,MAAMC,YAAY,GAAG9M,UAAU,CAACoM,QAAD,CAAV,GAAuBA,QAAQ,EAA/B,GAAoCA,QAAzD,CAAA;IACA,MAAMW,UAAU,GAAGlN,QAAQ,CAACiN,YAAD,CAAR,IAA0BA,YAAY,IAAI,CAA7D,CAAA;;AAEA,IAAA,IAAIC,UAAJ,EAAgB;MACd,MAAMC,YAAY,GAAGhN,UAAU,CAACqM,SAAD,CAAV,GAAwBA,SAAS,EAAjC,GAAsCA,SAA3D,CAAA;MACA,MAAMY,UAAU,GAAGpN,QAAQ,CAACmN,YAAD,CAAR,IAA0BA,YAAY,IAAI,CAA7D,CAAA;MACA,MAAME,YAAY,GAAGJ,YAAY,GAAG,CAAf,GAAmBP,IAAnB,GAA0BzC,GAA/C,CAAA;AACA,MAAA,MAAMqD,iBAAiB,GAAGT,UAAU,CAAC/J,IAAD,CAApC,CAAA;AACA,MAAA,MAAMyK,WAAW,GAAGD,iBAAiB,IAAIxK,IAAzC,CAAA;MACA,MAAM0K,WAAW,GAAGZ,wBAAwB,CAAC7B,IAAzB,CAA8B,CAA9B,EAAiCwC,WAAjC,CAApB,CAAA;MAMA1B,aAAa,CAACM,SAAD,CAAb,CAAA;AAEAA,MAAAA,SAAS,GAAGkB,YAAY,CAACG,WAAD,EAAcP,YAAd,CAAxB,CAAA;;AAEA,MAAA,IAAIG,UAAU,IAAI,CAAChB,YAAnB,EAAiC;AAC/BA,QAAAA,YAAY,GAAGM,IAAI,CAACI,KAAD,EAAQK,YAAR,CAAnB,CAAA;AACD,OAAA;;MAEDd,aAAa,GAAGC,eAAe,GAAGiB,WAAlC,CAAA;AACD,KArBD,MAqBO;MACLX,wBAAwB,CAAC9J,IAAD,CAAxB,CAAA;AACD,KAAA;GA7BH,CAAA;;EA+BAiK,WAAW,CAACU,MAAZ,GAAqBX,KAArB,CAAA;AAEA,EAAA,OAAOC,WAAP,CAAA;AACD,CAlEM;;AC/BP,MAAMW,SAAS,GAAG;AAYhBC,EAAAA,OAAO,EAAE,CAZO;AAahBC,EAAAA,MAAM,EAAE,CAAA;AAbQ,CAAlB,CAAA;;AAgBA,MAAMC,mBAAmB,GAAG,CAACnL,KAAD,EAAgBoL,OAAhB,KAA6C;AAEvE,EAAA,MAAMC,GAAG,GAAGD,OAAO,GAAGE,UAAU,CAACtL,KAAD,CAAb,GAAuBuL,QAAQ,CAACvL,KAAD,EAAQ,EAAR,CAAlD,CAAA;EAEA,OAAOwL,MAAM,CAACC,KAAP,CAAaJ,GAAb,CAAoB,GAAA,CAApB,GAAwBA,GAA/B,CAAA;AACD,CALD,CAAA;;AAMA,MAAMK,WAAW,GAAG,CAACnL,IAAD,EAAeoL,GAAf,KAClB,CAACX,SAAS,CAACzK,IAAI,CAAClD,WAAL,EAAD,CAAV,IAAkCC,QAAQ,CAACqO,GAAD,CAA1C,GAAqD,CAAAA,EAAAA,GAAO,CAA5D,EAAA,CAAA,GAA+DA,GADjE,CAAA;;AAEA,MAAMC,SAAS,GAAG,CAAC3L,GAAD,EAAmB4L,aAAnB,EAAuDtL,IAAvD,KAEhBsL,aAAa,IAAI,IAAjB,GACIA,aAAa,CAACtL,IAAD,CAAb,IAAuBsL,aAAa,CAACC,gBAAd,CAA+BvL,IAA/B,CAD3B,GAEIN,GAAG,CAACqG,KAAJ,CAAU/F,IAAV,CAJN,CAAA;;AAKA,MAAMwL,SAAS,GAAG,CAChB9L,GADgB,EAEhBM,IAFgB,EAGhBoL,GAHgB,KAIR;EACR,IAAI;AACF,IAAA,IAAI1L,GAAJ,EAAS;MACP,MAAM;AAAEqG,QAAAA,KAAK,EAAEO,QAAAA;AAAT,OAAA,GAAsB5G,GAA5B,CAAA;;MACA,IAAI,CAACnD,WAAW,CAAC+J,QAAQ,CAACtG,IAAD,CAAT,CAAhB,EAAkC;QAChCsG,QAAQ,CAACtG,IAAD,CAAR,GAAiBmL,WAAW,CAACnL,IAAD,EAAOoL,GAAP,CAA5B,CAAA;AACD,OAFD,MAEO;AACL9E,QAAAA,QAAQ,CAACmF,WAAT,CAAqBzL,IAArB,EAA2BoL,GAA3B,CAAA,CAAA;AACD,OAAA;AACF,KAAA;AACF,GATD,CASE,OAAOrG,CAAP,EAAU,EAAE;AACf,CAfD,CAAA;;AAkCgB,SAAAgB,KAAA,CACdrG,GADc,EAEdgM,MAFc,EAE8C;AAE5D,EAAA,MAAMC,cAAc,GAAG3O,QAAQ,CAAC0O,MAAD,CAA/B,CAAA;AACA,EAAA,MAAME,SAAS,GAAGzO,OAAO,CAACuO,MAAD,CAAP,IAAmBC,cAArC,CAAA;;AAEA,EAAA,IAAIC,SAAJ,EAAe;AACb,IAAA,IAAIC,eAAe,GAAyBF,cAAc,GAAG,EAAH,GAAQ,EAAlE,CAAA;;AACA,IAAA,IAAIjM,GAAJ,EAAS;MACP,MAAM4L,aAAa,GAAwBpN,MAAM,CAAC4N,gBAAP,CAAwBpM,GAAxB,EAA6B,IAA7B,CAA3C,CAAA;MACAmM,eAAe,GAAGF,cAAc,GAC5BN,SAAS,CAAC3L,GAAD,EAAM4L,aAAN,EAAqBI,MAArB,CADmB,GAE3BA,MAAwB,CAACK,MAAzB,CAAgC,CAACzM,MAAD,EAAS5B,GAAT,KAAgB;QAC/C4B,MAAM,CAAC5B,GAAD,CAAN,GAAc2N,SAAS,CAAC3L,GAAD,EAAM4L,aAAN,EAAqB5N,GAArB,CAAvB,CAAA;AACA,QAAA,OAAO4B,MAAP,CAAA;OAFD,EAGEuM,eAHF,CAFL,CAAA;AAMD,KAAA;;AACD,IAAA,OAAOA,eAAP,CAAA;AACD,GAAA;;AACDtN,EAAAA,IAAI,CAACI,IAAI,CAAC+M,MAAD,CAAL,EAAgBhO,GAAD,IAAS8N,SAAS,CAAC9L,GAAD,EAAMhC,GAAN,EAAWgO,MAAM,CAAChO,GAAD,CAAjB,CAAjC,CAAJ,CAAA;AACD,CAAA;AAwBM,MAAMsO,kBAAkB,GAAG,CAChCtM,GADgC,EAEhCuM,cAFgC,EAGhCC,cAHgC,KAIxB;EACR,MAAMC,WAAW,GAAGF,cAAc,GAAM,GAAAA,cAAiB,CAAA,CAAA,CAAvB,GAA0B,EAA5D,CAAA;EACA,MAAMG,WAAW,GAAGF,cAAc,GAAO,IAAAA,cAAgB,CAAA,CAAvB,GAA0B,EAA5D,CAAA;AACA,EAAA,MAAMG,GAAG,GAAG,CAAA,EAAGF,WAAiB,CAAA,GAAA,EAAAC,YAAhC,CAAA,CAAA;AACA,EAAA,MAAME,KAAK,GAAG,CAAA,EAAGH,WAAmB,CAAA,KAAA,EAAAC,YAApC,CAAA,CAAA;AACA,EAAA,MAAMG,MAAM,GAAG,CAAA,EAAGJ,WAAoB,CAAA,MAAA,EAAAC,YAAtC,CAAA,CAAA;AACA,EAAA,MAAMI,IAAI,GAAG,CAAA,EAAGL,WAAkB,CAAA,IAAA,EAAAC,YAAlC,CAAA,CAAA;AACA,EAAA,MAAM9M,MAAM,GAAGyG,KAAK,CAACrG,GAAD,EAAM,CAAC2M,GAAD,EAAMC,KAAN,EAAaC,MAAb,EAAqBC,IAArB,CAAN,CAApB,CAAA;EACA,OAAO;AACLC,IAAAA,CAAC,EAAE7B,mBAAmB,CAACtL,MAAM,CAAC+M,GAAD,CAAP,CADjB;AAELK,IAAAA,CAAC,EAAE9B,mBAAmB,CAACtL,MAAM,CAACgN,KAAD,CAAP,CAFjB;AAGLrE,IAAAA,CAAC,EAAE2C,mBAAmB,CAACtL,MAAM,CAACiN,MAAD,CAAP,CAHjB;AAILI,IAAAA,CAAC,EAAE/B,mBAAmB,CAACtL,MAAM,CAACkN,IAAD,CAAP,CAAA;GAJxB,CAAA;AAMD,CAlBM;;AC9GP,MAAMI,SAAO,GAAO;AAClBC,EAAAA,CAAC,EAAE,CADe;AAElBC,EAAAA,CAAC,EAAE,CAAA;AAFe,CAApB,CAAA;AAQO,MAAMC,UAAU,GAAG,OAAW;EACnCF,CAAC,EAAE3O,MAAM,CAAC8O,UADyB;EAEnCF,CAAC,EAAE5O,MAAM,CAAC+O,WAAAA;AAFyB,CAAX,CAAnB,CAAA;AASA,MAAMC,UAAU,GAAIxN,GAAD,IACxBA,GAAG,GACC;EACEmN,CAAC,EAAEnN,GAAG,CAACyN,WADT;EAEEL,CAAC,EAAEpN,GAAG,CAAC0N,YAAAA;AAFT,CADD,GAKCR,SANC,CAAA;AAYA,MAAMS,UAAU,GAAI3N,GAAD,IACxBA,GAAG,GACC;EACEmN,CAAC,EAAEnN,GAAG,CAAC4N,WADT;EAEER,CAAC,EAAEpN,GAAG,CAAC6N,YAAAA;AAFT,CADD,GAKCX,SANC,CAAA;AAYA,MAAMY,UAAU,GAAI9N,GAAD,IACxBA,GAAG,GACC;EACEmN,CAAC,EAAEnN,GAAG,CAAC+N,WADT;EAEEX,CAAC,EAAEpN,GAAG,CAACgO,YAAAA;AAFT,CADD,GAKCd,SANC,CAAA;AAYA,MAAMe,cAAc,GAAIjO,GAAD,IAAoD;AAChF,EAAA,MAAMkO,SAAS,GAAG7C,UAAU,CAAChF,KAAK,CAACrG,GAAD,EAAM,QAAN,CAAN,CAAV,IAAoC,CAAtD,CAAA;AACA,EAAA,MAAMmO,QAAQ,GAAG9C,UAAU,CAAChF,KAAK,CAACrG,GAAD,EAAM,QAAN,CAAN,CAAV,IAAoC,CAArD,CAAA;EACA,OAAO;IACLmN,CAAC,EAAEgB,QAAQ,GAAGlF,IAAI,CAACD,KAAL,CAAWmF,QAAX,CADT;AAELf,IAAAA,CAAC,EAAEc,SAAS,GAAGjF,IAAI,CAACD,KAAL,CAAWkF,SAAX,CAAA;GAFjB,CAAA;AAID,CAPM,CAAA;AAaA,MAAME,qBAAqB,GAAIpO,GAAD,IAA+BA,GAAG,CAACoO,qBAAJ,EAA7D;;ACxEP,IAAIC,oBAAJ,CAAA;;AACA,MAAMC,oBAAoB,GAAG,MAAc;AACzC,EAAA,IAAIzR,WAAW,CAACwR,oBAAD,CAAf,EAAuC;AACrCA,IAAAA,oBAAoB,GAAG,KAAvB,CAAA;;IACA,IAAI;AAGF7P,MAAAA,MAAM,CAAC+P,gBAAP,CACE,MADF,EAEE,IAFF,EAGE5R,MAAM,CAAC6R,cAAP,CAAsB,EAAtB,EAA0B,SAA1B,EAAqC;AACnCC,QAAAA,GAAG,EAAE,YAAA;AACHJ,UAAAA,oBAAoB,GAAG,IAAvB,CAAA;AACD,SAAA;AAHkC,OAArC,CAHF,CAAA,CAAA;AAUD,KAbD,CAaE,OAAOhJ,CAAP,EAAU,EAAE;AACf,GAAA;;AACD,EAAA,OAAOgJ,oBAAP,CAAA;AACD,CAnBD,CAAA;;AAoBA,MAAMK,eAAe,GAAIC,UAAD,IAAwBA,UAAU,CAAC1M,KAAX,CAAiB,GAAjB,CAAhD,CAAA;;AAeO,MAAM2M,GAAG,GAAG,CACjBpO,MADiB,EAEjBmO,UAFiB,EAGjBE,QAHiB,EAIjBC,OAJiB,KAKT;AACRjQ,EAAAA,IAAI,CAAC6P,eAAe,CAACC,UAAD,CAAhB,EAA+BI,SAAD,IAAc;AAC9CvO,IAAAA,MAAM,CAACwO,mBAAP,CAA2BD,SAA3B,EAAsCF,QAAtC,EAAiEC,OAAjE,CAAA,CAAA;AACD,GAFG,CAAJ,CAAA;AAGD,CATM,CAAA;AAkBA,MAAMG,EAAE,GAAG,CAChBzO,MADgB,EAEhBmO,UAFgB,EAGhBE,QAHgB,EAIhBtT,OAJgB,KAKA;EAChB,MAAM2T,sBAAsB,GAAGZ,oBAAoB,EAAnD,CAAA;EACA,MAAMa,OAAO,GAAID,sBAAsB,IAAI3T,OAA1B,IAAqCA,OAAO,CAAC6T,QAA9C,IAA2D,KAA3E,CAAA;EACA,MAAMN,OAAO,GAAIvT,OAAO,IAAIA,OAAO,CAAC8T,QAApB,IAAiC,KAAjD,CAAA;EACA,MAAMC,IAAI,GAAI/T,OAAO,IAAIA,OAAO,CAACgU,KAApB,IAA8B,KAA3C,CAAA;EACA,MAAMC,YAAY,GAAmB,EAArC,CAAA;EACA,MAAMC,aAAa,GAAsCP,sBAAsB,GAC3E;IACEC,OADF;AAEEL,IAAAA,OAAAA;AAFF,GAD2E,GAK3EA,OALJ,CAAA;AAOAjQ,EAAAA,IAAI,CAAC6P,eAAe,CAACC,UAAD,CAAhB,EAA+BI,SAAD,IAAc;AAC9C,IAAA,MAAMW,aAAa,GAAIJ,IAAI,GACtBK,GAAD,IAAW;AACTnP,MAAAA,MAAM,CAACwO,mBAAP,CAA2BD,SAA3B,EAAsCW,aAAtC,EAAqDZ,OAArD,CAAA,CAAA;AACAD,MAAAA,QAAQ,IAAIA,QAAQ,CAACc,GAAD,CAApB,CAAA;AACD,KAJsB,GAKvBd,QALJ,CAAA;AAOAvP,IAAAA,IAAI,CAACkQ,YAAD,EAAeZ,GAAG,CAACxG,IAAJ,CAAS,IAAT,EAAe5H,MAAf,EAAuBuO,SAAvB,EAAkCW,aAAlC,EAAiDZ,OAAjD,CAAf,CAAJ,CAAA;AACAtO,IAAAA,MAAM,CAAC+N,gBAAP,CAAwBQ,SAAxB,EAAmCW,aAAnC,EAAkDD,aAAlD,CAAA,CAAA;AACD,GAVG,CAAJ,CAAA;AAYA,EAAA,OAAOvP,OAAO,CAACkI,IAAR,CAAa,CAAb,EAAgBoH,YAAhB,CAAP,CAAA;AACD,CA/BM,CAAA;AAqCA,MAAMI,eAAe,GAAID,GAAD,IAAsBA,GAAG,CAACC,eAAJ,EAA9C,CAAA;AAMA,MAAMC,cAAc,GAAIF,GAAD,IAAsBA,GAAG,CAACE,cAAJ,EAA7C,CAAA;AAMA,MAAMC,cAAc,GAAIH,GAAD,IAC3BC,eAAe,CAACD,GAAD,CAAf,IAAuCE,cAAc,CAACF,GAAD,CADjD;;ACnGP,MAAMzC,OAAO,GAAO;AAClB6C,EAAAA,CAAC,EAAE,CADe;AAElBC,EAAAA,CAAC,EAAE,CAAA;AAFe,CAApB,CAAA;AASO,MAAMC,mBAAmB,GAAIjQ,GAAD,IAA4C;EAC7E,MAAMkQ,IAAI,GAAGlQ,GAAG,GAAGoO,qBAAqB,CAACpO,GAAD,CAAxB,GAAgC,CAAhD,CAAA;AACA,EAAA,OAAOkQ,IAAI,GACP;AACEH,IAAAA,CAAC,EAAEG,IAAI,CAACpD,IAAL,GAAYtO,MAAM,CAAC2R,WADxB;AAEEH,IAAAA,CAAC,EAAEE,IAAI,CAACvD,GAAL,GAAWnO,MAAM,CAAC4R,WAAAA;AAFvB,GADO,GAKPlD,OALJ,CAAA;AAMD,CARM;;ACuBP,MAAMmD,cAAc,GAAG,CACrBtR,QADqB,EAErB8P,QAFqB,KAGnB;AACFhQ,EAAAA,IAAI,CAACpB,OAAO,CAACoR,QAAD,CAAP,GAAoBA,QAApB,GAA+B,CAACA,QAAD,CAAhC,EAA4C9P,QAA5C,CAAJ,CAAA;AACD,CALD,CAAA;;AAOO,MAAMuR,sBAAsB,GACjCC,qBADoC,IAMlC;AACF,EAAA,MAAMC,MAAM,GAAG,IAAIC,GAAJ,EAAf,CAAA;;AACA,EAAA,MAAMC,WAAW,GAAqC,CAACrP,IAAD,EAAQwN,QAAR,KAAqB;AACzE,IAAA,IAAIxN,IAAJ,EAAU;AACR,MAAA,MAAMsP,QAAQ,GAAGH,MAAM,CAAC/B,GAAP,CAAWpN,IAAX,CAAjB,CAAA;MACAgP,cAAc,CAAEO,YAAD,IAAiB;AAC9B,QAAA,IAAID,QAAJ,EAAc;UACZA,QAAQ,CAACC,YAAY,GAAG,QAAH,GAAc,OAA3B,CAAR,CAA4CA,YAA5C,CAAA,CAAA;AACD,SAAA;OAHW,EAIX/B,QAJW,CAAd,CAAA;AAKD,KAPD,MAOO;AACL2B,MAAAA,MAAM,CAAC1Q,OAAP,CAAgB6Q,QAAD,IAAa;AAC1BA,QAAAA,QAAQ,CAACE,KAAT,EAAA,CAAA;OADF,CAAA,CAAA;AAGAL,MAAAA,MAAM,CAACK,KAAP,EAAA,CAAA;AACD,KAAA;GAbH,CAAA;;AAeA,EAAA,MAAMC,QAAQ,GAAkC,CAACzP,IAAD,EAAOwN,QAAP,KAAmB;IACjE,MAAM8B,QAAQ,GAAGH,MAAM,CAAC/B,GAAP,CAAWpN,IAAX,CAAA,IAAoB,IAAIxB,GAAJ,EAArC,CAAA;AACA2Q,IAAAA,MAAM,CAACO,GAAP,CAAW1P,IAAX,EAAiBsP,QAAjB,CAAA,CAAA;IAEAN,cAAc,CAAEO,YAAD,IAAiB;AAC9BA,MAAAA,YAAY,IAAID,QAAQ,CAAC7O,GAAT,CAAa8O,YAAb,CAAhB,CAAA;KADY,EAEX/B,QAFW,CAAd,CAAA;IAIA,OAAO6B,WAAW,CAACtI,IAAZ,CAAiB,CAAjB,EAAoB/G,IAApB,EAAiCwN,QAAjC,CAAP,CAAA;GARF,CAAA;;AAUA,EAAA,MAAMmC,YAAY,GAAsC,CAAC3P,IAAD,EAAOlB,IAAP,KAAgB;AACtE,IAAA,MAAMwQ,QAAQ,GAAGH,MAAM,CAAC/B,GAAP,CAAWpN,IAAX,CAAjB,CAAA;AAEAxC,IAAAA,IAAI,CAACc,IAAI,CAACgR,QAAD,CAAL,EAAkBM,KAAD,IAAU;AAC7B,MAAA,IAAI9Q,IAAJ,EAAU;QACP8Q,KAAyE,CAAC9Q,IAAD,CAAzE,CAAA;AACF,OAFD,MAEO;QACJ8Q,KAAoB,EAAA,CAAA;AACtB,OAAA;AACF,KANG,CAAJ,CAAA;GAHF,CAAA;;AAYA,EAAA,MAAMC,mBAAmB,GAAGjS,IAAI,CAACsR,qBAAD,CAAhC,CAAA;AACA1R,EAAAA,IAAI,CAACqS,mBAAD,EAAuBlT,GAAD,IAAQ;AAChC8S,IAAAA,QAAQ,CAAC9S,GAAD,EAAMuS,qBAAsB,CAACvS,GAAD,CAA5B,CAAR,CAAA;AACD,GAFG,CAAJ,CAAA;AAIA,EAAA,OAAO,CAAC8S,QAAD,EAAWJ,WAAX,EAAwBM,YAAxB,CAAP,CAAA;AACD,CAnDM;;AChBP,MAAMG,aAAa,GAAG,CAAIrU,GAAJ,EAAcsU,IAAd,KACpBtU,GAAG,GACCsU,IAAI,CAACnP,KAAL,CAAW,GAAX,EAAgBoK,MAAhB,CAAuB,CAACgF,CAAD,EAAI/Q,IAAJ,KAAc+Q,CAAC,IAAI3U,cAAc,CAAC2U,CAAD,EAAI/Q,IAAJ,CAAnB,GAA+B+Q,CAAC,CAAC/Q,IAAD,CAAhC,GAAyCvD,SAA9E,EAA0FD,GAA1F,CADD,GAECC,SAHN,CAAA;;AAKO,MAAMuU,iBAAiB,GAC5B,CACE/V,OADF,EAEEgW,cAFF,EAGEvV,KAHF,KAKCoV,IAAD,IACE,CAACD,aAAa,CAAC5V,OAAD,EAAU6V,IAAV,CAAd,EAA+BpV,KAAK,IAAImV,aAAa,CAACI,cAAD,EAAiBH,IAAjB,CAAb,KAAwCrU,SAAhF,CAPG,CAAA;AASA,MAAMyU,WAAW,GAAOC,YAAJ,IAAsC;EAC/D,IAAIC,KAAK,GAAMD,YAAf,CAAA;AACA,EAAA,OAAO,CACL,MAAMC,KADD,EAEJC,QAAD,IAAyB;IACvBD,KAAK,GAAGnR,UAAU,CAAC,EAAD,EAAKmR,KAAL,EAAYC,QAAZ,CAAlB,CAAA;AACD,GAJI,CAAP,CAAA;AAMD,CARM;;AC5CA,MAAMC,oBAAoB,GAAG,gBAA7B,CAAA;AACA,MAAMC,+BAA+B,GAAM,CAAA,EAAAD,qBAA3C,aAAA,CAAA,CAAA;AACA,MAAME,kCAAkC,GAAM,CAAA,EAAAD,gCAA9C,IAAA,CAAA,CAAA;AAEA,MAAME,iBAAiB,GAAG,wBAA1B,CAAA;AACA,MAAMC,0BAA0B,GAAM,CAAA,EAAAD,kBAAtC,WAAA,CAAA,CAAA;AACA,MAAME,0BAA0B,GAAM,CAAA,EAAAF,kBAAtC,WAAA,CAAA,CAAA;AACA,MAAMG,4BAA4B,GAAG,iBAArC,CAAA;AACA,MAAMC,qCAAqC,GAAG,gBAA9C,CAAA;AACA,MAAMC,gBAAgB,GAAG,YAAzB,CAAA;AACA,MAAMC,iBAAiB,GAAG,aAA1B,CAAA;AACA,MAAMC,wBAAwB,GAAM,CAAA,EAAAD,kBAApC,QAAA,CAAA,CAAA;AACA,MAAME,gBAAgB,GAAG,YAAzB,CAAA;AACA,MAAMC,iCAAiC,GAAM,CAAA,EAAAH,kBAA7C,iBAAA,CAAA,CAAA;AACA,MAAMI,wBAAwB,IAA9B,mBAAA,CAAA,CAAA;AAEA,MAAMC,qBAAqB,GAAG,kBAA9B,CAAA;AACA,MAAMC,2BAA2B,GAAM,CAAA,EAAAD,sBAAvC,OAAA,CAAA,CAAA;AACA,MAAME,6BAA6B,GAAM,CAAA,EAAAF,sBAAzC,SAAA,CAAA,CAAA;AACA,MAAMG,mCAAmC,GAAM,CAAA,EAAAD,8BAA/C,OAAA,CAAA,CAAA;AACA,MAAME,iCAAiC,GAAM,CAAA,EAAAF,8BAA7C,KAAA,CAAA,CAAA;AACA,MAAMG,sCAAsC,GAAM,CAAA,EAAAD,kCAAlD,MAAA,CAAA,CAAA;AAEA,MAAME,wBAAwB,GAAG,qBAAjC,CAAA;AAEA,MAAMC,kBAAkB,GAAG,cAA3B,CAAA;AACA,MAAMC,4BAA4B,GAAM,CAAA,EAAAD,mBAAxC,WAAA,CAAA,CAAA;AACA,MAAME,0BAA0B,GAAM,CAAA,EAAAF,mBAAtC,SAAA,CAAA,CAAA;AACA,MAAMG,uBAAuB,GAAG,oBAAhC,CAAA;AACA,MAAMC,wBAAwB,GAAG,qBAAjC;;AC1BP,MAAMC,SAAS,GAAIvT,KAAD,IAChBwT,IAAI,CAACD,SAAL,CAAevT,KAAf,EAAsB,CAACyT,CAAD,EAAI9H,GAAJ,KAAW;AAC/B,EAAA,IAAIlO,UAAU,CAACkO,GAAD,CAAd,EAAqB;IACnB,MAAM,IAAI+H,KAAJ,EAAN,CAAA;AACD,GAAA;;AACD,EAAA,OAAO/H,GAAP,CAAA;AACD,CALD,CADF,CAAA;;AA4FO,MAAMgI,cAAc,GAAc;AAEvCC,EAAAA,eAAe,EAAE,KAFsB;AAGvCC,EAAAA,QAAQ,EAAE;AACRC,IAAAA,aAAa,EAAE,CAAC,CAAC,KAAD,EAAQ,MAAR,CAAD,CADP;AAERvK,IAAAA,QAAQ,EAAE,CAAC,CAAD,EAAI,EAAJ,CAFF;AAGRwK,IAAAA,UAAU,EAAE,IAHJ;AAIRC,IAAAA,cAAc,EAAE,IAAA;GAPqB;AASvCC,EAAAA,QAAQ,EAAE;AACRjE,IAAAA,CAAC,EAAE,QADK;AAERC,IAAAA,CAAC,EAAE,QAAA;GAXkC;AAavCiE,EAAAA,wBAAwB,EAAE;AACxBC,IAAAA,IAAI,EAAE,KADkB;AAExBC,IAAAA,UAAU,EAAE,KAAA;GAfyB;AAiBvCC,EAAAA,UAAU,EAAE;AACVC,IAAAA,UAAU,EAAE,MADF;AAEVC,IAAAA,QAAQ,EAAE,OAFA;AAGVC,IAAAA,aAAa,EAAE,GAHL;AAIVC,IAAAA,UAAU,EAAE,IAJF;AAKVC,IAAAA,WAAW,EAAE,KALH;AAMVC,IAAAA,KAAK,EAAE,IAAA;AANG,GAAA;AAjB2B,CAAlC,CAAA;AAkCA,MAAMC,cAAc,GAAG,CAC5BC,WAD4B,EAE5BC,UAF4B,KAGP;EACrB,MAAMC,IAAI,GAAsB,EAAhC,CAAA;AACA,EAAA,MAAMC,WAAW,GAAG9V,IAAI,CAAC4V,UAAD,CAAJ,CAAiBG,MAAjB,CAAwB/V,IAAI,CAAC2V,WAAD,CAA5B,CAApB,CAAA;AAEA/V,EAAAA,IAAI,CAACkW,WAAD,EAAeE,SAAD,IAAc;AAC9B,IAAA,MAAMC,eAAe,GAAGN,WAAW,CAACK,SAAD,CAAnC,CAAA;AACA,IAAA,MAAME,cAAc,GAAGN,UAAU,CAACI,SAAD,CAAjC,CAAA;;IAEA,IAAItX,QAAQ,CAACuX,eAAD,CAAR,IAA6BvX,QAAQ,CAACwX,cAAD,CAAzC,EAA2D;AACzD5U,MAAAA,UAAU,CAAEuU,IAAI,CAACG,SAAD,CAAJ,GAAkB,EAApB,EAAyBN,cAAc,CAACO,eAAD,EAAkBC,cAAlB,CAAvC,CAAV,CAAA;AACD,KAFD,MAEO,IAAIzY,cAAc,CAACmY,UAAD,EAAaI,SAAb,CAAd,IAAyCE,cAAc,KAAKD,eAAhE,EAAiF;MACtF,IAAIE,MAAM,GAAG,IAAb,CAAA;;MAEA,IAAI3X,OAAO,CAACyX,eAAD,CAAP,IAA4BzX,OAAO,CAAC0X,cAAD,CAAvC,EAAyD;QACvD,IAAI;UACF,IAAI7B,SAAS,CAAC4B,eAAD,CAAT,KAA+B5B,SAAS,CAAC6B,cAAD,CAA5C,EAA8D;AAC5DC,YAAAA,MAAM,GAAG,KAAT,CAAA;AACD,WAAA;SAHH,CAIE,gBAAM,EAAE;AACX,OAAA;;AAED,MAAA,IAAIA,MAAJ,EAAY;AACVN,QAAAA,IAAI,CAACG,SAAD,CAAJ,GAAkBE,cAAlB,CAAA;AACD,OAAA;AACF,KAAA;AACF,GArBG,CAAJ,CAAA;AAuBA,EAAA,OAAOL,IAAP,CAAA;AACD,CA/BM;;AC1BP,IAAIO,mBAAJ,CAAA;AACA,MAAM;EAAEC,GAAF;AAAOtM,EAAAA,KAAAA;AAAP,CAAA,GAAiBC,IAAvB,CAAA;;AAEA,MAAMsM,iBAAiB,GAAG,CAACC,MAAD,EAAiBC,MAAjB,KAA4C;AACpE,EAAA,MAAMC,SAAS,GAAGJ,GAAG,CAACE,MAAD,CAArB,CAAA;AACA,EAAA,MAAMG,SAAS,GAAGL,GAAG,CAACG,MAAD,CAArB,CAAA;AACA,EAAA,OAAO,EAAEC,SAAS,KAAKC,SAAd,IAA2BD,SAAS,GAAG,CAAZ,KAAkBC,SAA7C,IAA0DD,SAAS,GAAG,CAAZ,KAAkBC,SAA9E,CAAP,CAAA;AACD,CAJD,CAAA;;AAMA,MAAMC,sBAAsB,GAAG,CAC7BC,IAD6B,EAE7BC,UAF6B,EAG7BC,eAH6B,KAIvB;AACNlR,EAAAA,cAAc,CAACgR,IAAD,EAAOC,UAAP,CAAd,CAAA;AAEA,EAAA,MAAME,KAAK,GAAGrI,UAAU,CAACmI,UAAD,CAAxB,CAAA;AACA,EAAA,MAAMG,KAAK,GAAGzI,UAAU,CAACsI,UAAD,CAAxB,CAAA;AACA,EAAA,MAAMI,KAAK,GAAGjI,cAAc,CAAC8H,eAAD,CAA5B,CAAA;EAEA,OAAO;IACLhG,CAAC,EAAEkG,KAAK,CAAC7I,CAAN,GAAU4I,KAAK,CAAC5I,CAAhB,GAAoB8I,KAAK,CAAC9I,CADxB;IAEL4C,CAAC,EAAEiG,KAAK,CAAC9I,CAAN,GAAU6I,KAAK,CAAC7I,CAAhB,GAAoB+I,KAAK,CAAC/I,CAAAA;GAF/B,CAAA;AAID,CAfD,CAAA;;AAiBA,MAAMgJ,yBAAyB,GAAIC,OAAD,IAAkC;EAClE,IAAIxW,MAAM,GAAG,KAAb,CAAA;AACA,EAAA,MAAMyW,WAAW,GAAGlO,QAAQ,CAACiO,OAAD,EAAU5D,iCAAV,CAA5B,CAAA;;EACA,IAAI;IACF5S,MAAM,GACJyG,KAAK,CAAC+P,OAAD,EAAU1P,WAAW,CAAC,iBAAD,CAArB,CAAL,KAAmD,MAAnD,IACAlI,MAAM,CAAC4N,gBAAP,CAAwBgK,OAAxB,EAAiC,qBAAjC,CAAA,CAAwDvK,gBAAxD,CAAyE,SAAzE,CAAA,KACE,MAHJ,CAAA;AAID,GALD,CAKE,OAAOyK,EAAP,EAAW,EAAE;;EACfD,WAAW,EAAA,CAAA;AACX,EAAA,OAAOzW,MAAP,CAAA;AACD,CAXD,CAAA;;AAaA,MAAM2W,oBAAoB,GAAG,CAC3BtS,SAD2B,EAE3BuS,QAF2B,KAGG;EAC9B,MAAMC,SAAS,GAAG,QAAlB,CAAA;EACApQ,KAAK,CAACpC,SAAD,EAAY;AAAEyS,IAAAA,SAAS,EAAED,SAAb;AAAwBE,IAAAA,SAAS,EAAEF,SAAnC;AAA8CG,IAAAA,SAAS,EAAE,KAAA;AAAzD,GAAZ,CAAL,CAAA;AACApU,EAAAA,UAAU,CAACyB,SAAD,EAAY,CAAZ,CAAV,CAAA;AAEA,EAAA,MAAM4S,YAAY,GAAG5G,mBAAmB,CAAChM,SAAD,CAAxC,CAAA;AACA,EAAA,MAAM6S,WAAW,GAAG7G,mBAAmB,CAACuG,QAAD,CAAvC,CAAA;AACAhU,EAAAA,UAAU,CAACyB,SAAD,EAAY,CAAC,GAAb,CAAV,CAAA;AACA,EAAA,MAAM8S,sBAAsB,GAAG9G,mBAAmB,CAACuG,QAAD,CAAlD,CAAA;EACA,OAAO;AAOLxX,IAAAA,CAAC,EAAE6X,YAAY,CAAC9G,CAAb,KAAmB+G,WAAW,CAAC/G,CAP7B;AAcLiH,IAAAA,CAAC,EAAEF,WAAW,CAAC/G,CAAZ,KAAkBgH,sBAAsB,CAAChH,CAAAA;GAd9C,CAAA;AAgBD,CA5BD,CAAA;;AA8BA,MAAMkH,cAAc,GAAG,CAAChT,SAAD,EAAyBuS,QAAzB,KAA2D;AAChF,EAAA,MAAMU,aAAa,GAAG/O,QAAQ,CAAClE,SAAD,EAAY4N,+BAAZ,CAA9B,CAAA;AACA,EAAA,MAAMsF,mBAAmB,GAAG/I,qBAAqB,CAACnK,SAAD,CAAjD,CAAA;AACA,EAAA,MAAMmT,aAAa,GAAGhJ,qBAAqB,CAACoI,QAAD,CAA3C,CAAA;EACA,MAAMa,WAAW,GAAGtO,UAAU,CAACqO,aAAD,EAAgBD,mBAAhB,EAAqC,IAArC,CAA9B,CAAA;AAEA,EAAA,MAAMG,gBAAgB,GAAGnP,QAAQ,CAAClE,SAAD,EAAY6N,kCAAZ,CAAjC,CAAA;AACA,EAAA,MAAMyF,mBAAmB,GAAGnJ,qBAAqB,CAACnK,SAAD,CAAjD,CAAA;AACA,EAAA,MAAMuT,aAAa,GAAGpJ,qBAAqB,CAACoI,QAAD,CAA3C,CAAA;EACA,MAAMiB,WAAW,GAAG1O,UAAU,CAACyO,aAAD,EAAgBD,mBAAhB,EAAqC,IAArC,CAA9B,CAAA;EAEAL,aAAa,EAAA,CAAA;EACbI,gBAAgB,EAAA,CAAA;EAEhB,OAAOD,WAAW,IAAII,WAAtB,CAAA;AACD,CAfD,CAAA;;AAiBA,MAAMC,YAAY,GAAG,MAAa;EAGhC,MAAMC,IAAI,GAAGnZ,MAAM,CAACoZ,MAAP,CAAcC,UAAd,IAA4B,CAAzC,CAAA;EAGA,MAAMC,IAAI,GAAGtZ,MAAM,CAACoZ,MAAP,CAAcG,WAAd,IAA6B,CAA1C,CAAA;AACA,EAAA,OAAOvZ,MAAM,CAACwZ,gBAAP,IAA2BL,IAAI,GAAGG,IAAzC,CAAA;AACD,CARD,CAAA;;AAUA,MAAMG,gCAAgC,GACpCC,sBADuC,KAEJ;AACnCC,EAAAA,KAAK,EAAE,IAD4B;AAEnCC,EAAAA,SAAS,EAAE,IAFwB;EAGnCC,QAAQ,EAAE,CAACH,sBAHwB;AAInCI,EAAAA,QAAQ,EAAE,KAJyB;AAKnCC,EAAAA,eAAe,EAAE,IAAA;AALkB,CAFI,CAAzC,CAAA;;AAUA,MAAMC,iBAAiB,GAAG,MAAkB;EAC1C,MAAM;AAAE3C,IAAAA,IAAAA;AAAF,GAAA,GAAW/S,QAAjB,CAAA;AACA,EAAA,MAAM2V,MAAM,GAAG9S,SAAS,EAAgBiM,YAAAA,EAAAA,oBAAoB,qBAApC,CAAxB,CAAA;AACA,EAAA,MAAM8G,MAAM,GAAGD,MAAM,CAAC,CAAD,CAArB,CAAA;AACA,EAAA,MAAME,WAAW,GAAGD,MAAM,CAAChU,UAA3B,CAAA;AACA,EAAA,MAAM,CAACoM,QAAD,GAAaE,YAAb,CAAA,GAA6BV,sBAAsB,EAAzD,CAAA;AACA,EAAA,MAAM,CAACsI,8BAAD,EAAiCC,2BAAjC,CAAA,GAAgEvd,WAAW,CAAC;IAChFG,aAAa,EAAEma,sBAAsB,CAACC,IAAD,EAAO6C,MAAP,EAAeC,WAAf,CAD2C;AAEhFjd,IAAAA,MAAM,EAAEmN,OAAAA;AAFwE,GAAD,CAAjF,CAAA;AAIA,EAAA,MAAM,CAACiQ,mBAAD,CAAwBD,GAAAA,2BAA2B,EAAzD,CAAA;AACA,EAAA,MAAMX,sBAAsB,GAAG/B,yBAAyB,CAACuC,MAAD,CAAxD,CAAA;AACA,EAAA,MAAMK,yBAAyB,GAAG;AAChChJ,IAAAA,CAAC,EAAE+I,mBAAmB,CAAC/I,CAApB,KAA0B,CADG;AAEhCC,IAAAA,CAAC,EAAE8I,mBAAmB,CAAC9I,CAApB,KAA0B,CAAA;GAF/B,CAAA;AAIA,EAAA,MAAMgJ,sBAAsB,GAAGf,gCAAgC,CAACC,sBAAD,CAA/D,CAAA;AACA,EAAA,MAAMe,qBAAqB,GAAG1Y,UAAU,CAAC,EAAD,EAAKmT,cAAL,CAAxC,CAAA;AAEA,EAAA,MAAMwF,GAAG,GAAgB;AACvBC,IAAAA,oBAAoB,EAAEL,mBADC;AAEvBM,IAAAA,0BAA0B,EAAEL,yBAFL;AAGvBM,IAAAA,uBAAuB,EAAEnB,sBAHF;IAIvBoB,oBAAoB,EAAEjT,KAAK,CAACqS,MAAD,EAAS,QAAT,CAAL,KAA4B,IAJ3B;AAKvBa,IAAAA,kBAAkB,EAAEhD,oBAAoB,CAACmC,MAAD,EAASC,WAAT,CALjB;AAMvBa,IAAAA,YAAY,EAAEvC,cAAc,CAACyB,MAAD,EAASC,WAAT,CANL;IAOvBc,YAAY,EAAG5K,QAAD,IAAciC,QAAQ,CAAC,GAAD,EAAMjC,QAAN,CAPb;IAQvB6K,0BAA0B,EAAEnZ,UAA0D,CAAC6H,IAA3D,CAC1B,CAD0B,EAE1B,EAF0B,EAG1B4Q,sBAH0B,CARL;;IAavBW,0BAA0B,CAACC,yBAAD,EAA0B;AAClDrZ,MAAAA,UAAU,CAACyY,sBAAD,EAAyBY,yBAAzB,CAAV,CAAA;KAdqB;;IAgBvBC,kBAAkB,EAAEtZ,UAAgC,CAAC6H,IAAjC,CAClB,CADkB,EAElB,EAFkB,EAGlB6Q,qBAHkB,CAhBG;;IAqBvBa,kBAAkB,CAACC,iBAAD,EAAkB;AAClCxZ,MAAAA,UAAU,CAAC0Y,qBAAD,EAAwBc,iBAAxB,CAAV,CAAA;KAtBqB;;AAwBvBC,IAAAA,8BAA8B,EAAEzZ,UAAU,CAAC,EAAD,EAAKyY,sBAAL,CAxBnB;AAyBvBiB,IAAAA,sBAAsB,EAAE1Z,UAAU,CAAC,EAAD,EAAK0Y,qBAAL,CAAA;GAzBpC,CAAA;AA4BA3W,EAAAA,UAAU,CAACoW,MAAD,EAAS,OAAT,CAAV,CAAA;EACAvT,cAAc,CAACuT,MAAD,CAAd,CAAA;;AAEA,EAAA,IAAI,CAACR,sBAAD,KAA4B,CAACa,yBAAyB,CAAChJ,CAA3B,IAAgC,CAACgJ,yBAAyB,CAAC/I,CAAvF,CAAJ,EAA+F;IAC7F,IAAIkK,IAAI,GAAG7M,UAAU,EAArB,CAAA;IACA,IAAI8M,GAAG,GAAGzC,YAAY,EAAtB,CAAA;AAEAlZ,IAAAA,MAAM,CAAC+P,gBAAP,CAAwB,QAAxB,EAAkC,MAAK;MACrC,MAAM6L,OAAO,GAAG/M,UAAU,EAA1B,CAAA;AACA,MAAA,MAAMgN,SAAS,GAAG;AAChBlN,QAAAA,CAAC,EAAEiN,OAAO,CAACjN,CAAR,GAAY+M,IAAI,CAAC/M,CADJ;AAEhBC,QAAAA,CAAC,EAAEgN,OAAO,CAAChN,CAAR,GAAY8M,IAAI,CAAC9M,CAAAA;OAFtB,CAAA;MAKA,IAAIiN,SAAS,CAAClN,CAAV,KAAgB,CAAhB,IAAqBkN,SAAS,CAACjN,CAAV,KAAgB,CAAzC,EAA4C,OAAA;AAE5C,MAAA,MAAMkN,YAAY,GAAG;AACnBnN,QAAAA,CAAC,EAAEmI,GAAG,CAAC+E,SAAS,CAAClN,CAAX,CADa;AAEnBC,QAAAA,CAAC,EAAEkI,GAAG,CAAC+E,SAAS,CAACjN,CAAX,CAAA;OAFR,CAAA;AAIA,MAAA,MAAMmN,aAAa,GAAG;AACpBpN,QAAAA,CAAC,EAAEmI,GAAG,CAACtM,KAAK,CAACoR,OAAO,CAACjN,CAAR,IAAa+M,IAAI,CAAC/M,CAAL,GAAS,KAAtB,CAAD,CAAN,CADc;AAEpBC,QAAAA,CAAC,EAAEkI,GAAG,CAACtM,KAAK,CAACoR,OAAO,CAAChN,CAAR,IAAa8M,IAAI,CAAC9M,CAAL,GAAS,KAAtB,CAAD,CAAN,CAAA;OAFR,CAAA;MAIA,MAAMoN,MAAM,GAAG9C,YAAY,EAA3B,CAAA;AACA,MAAA,MAAM+C,aAAa,GAAGH,YAAY,CAACnN,CAAb,GAAiB,CAAjB,IAAsBmN,YAAY,CAAClN,CAAb,GAAiB,CAA7D,CAAA;AACA,MAAA,MAAMsN,UAAU,GAAG,CAACnF,iBAAiB,CAACgF,aAAa,CAACpN,CAAf,EAAkBoN,aAAa,CAACnN,CAAhC,CAArC,CAAA;MACA,MAAMuN,UAAU,GAAGH,MAAM,KAAKL,GAAX,IAAkBA,GAAG,GAAG,CAA3C,CAAA;AACA,MAAA,MAAMS,MAAM,GAAGH,aAAa,IAAIC,UAAjB,IAA+BC,UAA9C,CAAA;;AAEA,MAAA,IAAIC,MAAJ,EAAY;AACV,QAAA,MAAM,CAACC,aAAD,EAAgBC,oBAAhB,IAAwClC,8BAA8B,CAC1EhD,sBAAsB,CAACC,IAAD,EAAO6C,MAAP,EAAeC,WAAf,CADoD,CAA5E,CAAA;AAIApY,QAAAA,UAAU,CAAC8U,mBAAmB,CAAC8D,oBAArB,EAA2C0B,aAA3C,CAAV,CAAA;QACA1V,cAAc,CAACuT,MAAD,CAAd,CAAA;;AAEA,QAAA,IAAIoC,oBAAJ,EAA0B;UACxB9J,YAAY,CAAC,GAAD,CAAZ,CAAA;AACD,SAAA;AACF,OAAA;;AAEDkJ,MAAAA,IAAI,GAAGE,OAAP,CAAA;AACAD,MAAAA,GAAG,GAAGK,MAAN,CAAA;KArCF,CAAA,CAAA;AAuCD,GAAA;;AAED,EAAA,OAAOtB,GAAP,CAAA;AACD,CAhGD,CAAA;;AAkGO,MAAM6B,cAAc,GAAG,MAAkB;EAC9C,IAAI,CAAC1F,mBAAL,EAA0B;IACxBA,mBAAmB,GAAGmD,iBAAiB,EAAvC,CAAA;AACD,GAAA;;AACD,EAAA,OAAOnD,mBAAP,CAAA;AACD,CALM;;ACnPP,IAAI2F,qBAAqB,GAAG,CAA5B,CAAA;;AAEA,MAAMC,MAAM,GAAIjb,GAAD,IAAgD;EAC7D6E,cAAc,CAACtB,MAAM,CAACvD,GAAD,CAAP,EAAcqD,QAAQ,CAACrD,GAAD,CAAtB,CAAd,CAAA;EACAmF,cAAc,CAACnF,GAAD,CAAd,CAAA;AACD,CAHD,CAAA;;AAKA,MAAMkb,kCAAkC,GAAG,MAA+B;EACxE,MAAM;IAAE7B,uBAAF;IAA2BD,0BAA3B;AAAuDE,IAAAA,oBAAAA;AAAvD,GAAA,GACJyB,cAAc,EADhB,CAAA;AAGA,EAAA,MAAMI,MAAM,GACV,CAAC7B,oBAAD,IACA,CAACD,uBADD,KAECD,0BAA0B,CAACrJ,CAA3B,IAAgCqJ,0BAA0B,CAACpJ,CAF5D,CADF,CAAA;EAIA,MAAMpQ,MAAM,GAAGub,MAAM,GAAGrY,QAAQ,CAAC4C,aAAT,CAAuB,OAAvB,CAAH,GAAqC,KAA1D,CAAA;;AAEA,EAAA,IAAI9F,MAAJ,EAAY;IACV6B,IAAI,CAAC7B,MAAD,EAAS,IAAT,EAAkB,GAAA0S,wBAA4B,CAAA,CAAA,EAAA0I,qBAAuB,CAAA,CAArE,CAAJ,CAAA;IACAA,qBAAqB,EAAA,CAAA;AACtB,GAAA;;AAED,EAAA,OAAOpb,MAAP,CAAA;AACD,CAhBD,CAAA;;AAkBA,MAAMwb,0BAA0B,GAAG,CACjC5a,MADiC,EAEjC6a,mBAFiC,EAGjCC,QAHiC,KAIlB;AACf,EAAA,MAAM1b,MAAM,GACVyb,mBAAmB,KAClB7d,UAAU,CAAC8d,QAAD,CAAV,GAAuBA,QAAQ,CAAC9a,MAAD,CAA/B,GAA2C8a,QADzB,CADrB,CAAA;EAGA,OAAO1b,MAAM,IAAI2F,SAAS,EAA1B,CAAA;AACD,CATD,CAAA;;AAWA,MAAMgW,2BAA2B,GAAG,CAClC/a,MADkC,EAElC6a,mBAFkC,EAGlCC,QAHkC,KAIX;AACvB,EAAA,MAAME,uBAAuB,GAAGje,SAAS,CAAC8d,mBAAD,CAAT,IAAkCA,mBAAlE,CAAA;AACA,EAAA,MAAMzb,MAAM,GAAG4b,uBAAuB,GACjCH,mBADiC,GAElC7d,UAAU,CAAC8d,QAAD,CAAV,GACAA,QAAQ,CAAC9a,MAAD,CADR,GAEA8a,QAJJ,CAAA;AAMA,EAAA,OAAO1b,MAAM,KAAK,IAAX,GAAkB2F,SAAS,EAA3B,GAAgC3F,MAAvC,CAAA;AACD,CAbD,CAAA;;AAeA,MAAM6b,eAAe,GAAG,CAACzb,GAAD,EAAmBD,KAAnB,KAAgE;EACtF0B,IAAI,CAACzB,GAAD,EAAM+R,iBAAN,EAAyBhS,KAAK,IAAI,EAAlC,CAAJ,CAAA;EACA,OAAOuC,UAAU,CAAC8F,IAAX,CAAgB,CAAhB,EAAmBpI,GAAnB,EAAwB+R,iBAAxB,CAAP,CAAA;AACD,CAHD,CAAA;;AAKO,MAAM2J,4BAA4B,GAAIlb,MAAD,IAA6C;EACvF,MAAM;IAAEkZ,0BAAF;AAA8BL,IAAAA,uBAAAA;AAA9B,GAAA,GAA0D0B,cAAc,EAA9E,CAAA;;EACA,MAAM;AACJ5C,IAAAA,KAAK,EAAEwD,0BADH;AAEJvD,IAAAA,SAAS,EAAEwD,8BAFP;AAGJvD,IAAAA,QAAQ,EAAEwD,6BAHN;AAIJvD,IAAAA,QAAQ,EAAEwD,6BAAAA;AAJN,GAAA,GAKFpC,0BAA0B,EAL9B,CAAA;;AAMA,EAAA,MAAMqC,WAAW,GAAGzd,aAAa,CAACkC,MAAD,CAAjC,CAAA;EACA,MAAMwb,6BAA6B,GAAGxb,MAAtC,CAAA;EACA,MAAMyb,aAAa,GAAGF,WAAW,GAC5Bvb,MAD4B,GAE7Bwb,6BAA6B,CAACxb,MAFlC,CAAA;AAGA,EAAA,MAAM0b,UAAU,GAAGhZ,EAAE,CAAC+Y,aAAD,EAAgB,UAAhB,CAArB,CAAA;EACA,MAAME,MAAM,GAAG,CAACD,UAAD,IAAehZ,EAAE,CAAC+Y,aAAD,EAAgB,MAAhB,CAAhC,CAAA;AACA,EAAA,MAAMG,aAAa,GAAGH,aAAc,CAACG,aAArC,CAAA;AACA,EAAA,MAAMC,OAAO,GAAGD,aAAa,CAACvG,IAA9B,CAAA;AACA,EAAA,MAAMyG,GAAG,GAAGF,aAAa,CAACG,WAA1B,CAAA;AACA,EAAA,MAAMC,gBAAgB,GAAG,CAAC,CAACpV,yBAAF,IAA+BiS,uBAAxD,CAAA;EACA,MAAMoD,wBAAwB,GAAGrB,0BAA0B,CACzDa,aADyD,EAEzDD,6BAA6B,CAACU,QAF2B,EAGzDd,8BAHyD,CAA3D,CAAA;AAKA,EAAA,MAAMe,oBAAoB,GAAGF,wBAAwB,KAAKR,aAA1D,CAAA;AACA,EAAA,MAAMW,gBAAgB,GAAGJ,gBAAgB,IAAIG,oBAA7C,CAAA;AACA,EAAA,MAAME,eAAe,GACnBF,oBAAoB,IAAI,CAACC,gBAAzB,GACIxB,0BAA0B,CAACa,aAAD,CAD9B,GAEIQ,wBAHN,CAAA;AAIA,EAAA,MAAMK,kBAAkB,GAA8B;AACpDC,IAAAA,OAAO,EAAEd,aAD2C;AAEpD9D,IAAAA,KAAK,EAAE+D,UAAU,GACbd,0BAA0B,CACxBa,aADwB,EAExBD,6BAA6B,CAACgB,IAFN,EAGxBrB,0BAHwB,CADb,GAMZM,aAR+C;AASpD7D,IAAAA,SAAS,EAAEyE,eATyC;IAUpDxE,QAAQ,EAAEkD,2BAA2B,CACnCU,aADmC,EAEnCD,6BAA6B,CAACiB,OAFK,EAGnCpB,6BAHmC,CAVe;IAepDvD,QAAQ,EAAEiD,2BAA2B,CACnCU,aADmC,EAEnCD,6BAA6B,CAACkB,OAFK,EAGnCpB,6BAHmC,CAfe;AAoBpDqB,IAAAA,gBAAgB,EAAE,CAACP,gBAAD,IAAqB1B,kCAAkC,EApBrB;AAqBpDkC,IAAAA,UAAU,EAAEd,GArBwC;AAsBpDe,IAAAA,YAAY,EAAEjB,aAtBsC;AAuBpDkB,IAAAA,QAAQ,EAAE/Z,MAAM,CAAC8Y,OAAD,CAvBoC;AAwBpDkB,IAAAA,QAAQ,EAAElB,OAxB0C;AAyBpDmB,IAAAA,WAAW,EAAEtB,UAzBuC;AA0BpDuB,IAAAA,OAAO,EAAEtB,MA1B2C;AA2BpDuB,IAAAA,YAAY,EAAE3B,WA3BsC;AA4BpD4B,IAAAA,iBAAiB,EAAEf,gBA5BiC;IA6BpDgB,iBAAiB,EAAE,CAACnW,SAAD,EAAoBoW,kBAApB,KACjBjB,gBAAgB,GACZxa,YAAY,CAACya,eAAD,EAAkB9K,iBAAlB,EAAqC8L,kBAArC,CADA,GAEZ9V,QAAQ,CAAC8U,eAAD,EAAkBpV,SAAlB,CAhCsC;AAiCpDqW,IAAAA,uBAAuB,EAAE,CAACrW,SAAD,EAAoBoW,kBAApB,EAAgD/b,GAAhD,KACvB8a,gBAAgB,GACZ/a,SAAS,CAACgb,eAAD,EAAkB9K,iBAAlB,EAAqC8L,kBAArC,EAAyD/b,GAAzD,CADG,GAEZ,CAACA,GAAG,GAAGqG,QAAH,GAAcF,WAAlB,EAA+B4U,eAA/B,EAAgDpV,SAAhD,CAAA;GApCR,CAAA;AAsCA,EAAA,MAAMsW,iBAAiB,GAAG9e,IAAI,CAAC6d,kBAAD,CAAJ,CAAyBzQ,MAAzB,CAAgC,CAAClN,GAAD,EAAMnB,GAAN,KAAqB;AAC7E,IAAA,MAAM+B,KAAK,GAAG+c,kBAAkB,CAAC9e,GAAD,CAAhC,CAAA;AACA,IAAA,OAAOsB,IAAI,CAACH,GAAD,EAAMY,KAAK,IAAI,CAACwD,MAAM,CAACxD,KAAD,CAAhB,GAA0BA,KAA1B,GAAkC,KAAxC,CAAX,CAAA;GAFwB,EAGvB,EAHuB,CAA1B,CAAA;;AAIA,EAAA,MAAMie,kBAAkB,GAAIhe,GAAD,IACzBA,GAAG,GAAGd,OAAO,CAAC6e,iBAAD,EAAoB/d,GAApB,CAAP,GAAkC,CAAC,CAAtC,GAA0C,IAD/C,CAAA;;EAEA,MAAM;IAAE+c,OAAF;IAAW5E,KAAX;IAAkBE,QAAlB;IAA4BD,SAA5B;IAAuCE,QAAvC;AAAiD6E,IAAAA,gBAAAA;AAAjD,GAAA,GAAsEL,kBAA5E,CAAA;EACA,MAAMmB,UAAU,GAAkB,EAAlC,CAAA;AACA,EAAA,MAAMC,uBAAuB,GAAGhC,UAAU,IAAI8B,kBAAkB,CAAC7F,KAAD,CAAhE,CAAA;AACA,EAAA,MAAMgG,cAAc,GAAGjC,UAAU,GAC7Ba,OAD6B,GAE7B1Z,QAAQ,CACN,CAACiV,QAAD,EAAWF,SAAX,EAAsBC,QAAtB,EAAgCF,KAAhC,EAAuC4E,OAAvC,CAAA,CAAgDpa,IAAhD,CACG3C,GAAD,IAASge,kBAAkB,CAAChe,GAAD,CAAlB,KAA4B,KADvC,CADM,CAFZ,CAAA;AAOA,EAAA,MAAMoe,WAAW,GAAG9F,QAAQ,IAAIF,SAAhC,CAAA;EACA,MAAMiG,kBAAkB,GAAG5C,eAAe,CAACtD,KAAD,EAAQyE,gBAAgB,GAAG,UAAH,GAAgB,MAAxC,CAA1C,CAAA;AACA,EAAA,MAAM0B,kBAAkB,GAAGnW,QAAQ,CAACkQ,QAAD,EAAWjG,gBAAX,CAAnC,CAAA;EACA,MAAMmM,mBAAmB,GAAGpW,QAAQ,CAACiQ,SAAD,EAAY,CAACwE,gBAAD,IAAqBvK,iBAAjC,CAApC,CAAA;AACA,EAAA,MAAMmM,kBAAkB,GAAGrW,QAAQ,CAACmQ,QAAD,EAAW/F,gBAAX,CAAnC,CAAA;;AAGA,EAAA,IAAI2L,uBAAJ,EAA6B;AAC3BhZ,IAAAA,WAAW,CAAC6X,OAAD,EAAU5E,KAAV,CAAX,CAAA;IAEA7Y,IAAI,CAAC2e,UAAD,EAAa,MAAK;AACpB/Y,MAAAA,WAAW,CAACiT,KAAD,EAAQ4E,OAAR,CAAX,CAAA;MACA5X,cAAc,CAACgT,KAAD,CAAd,CAAA;AACD,KAHG,CAAJ,CAAA;AAID,GAAA;;AAEDtT,EAAAA,cAAc,CAACuZ,WAAD,EAAcD,cAAd,CAAd,CAAA;AACAtZ,EAAAA,cAAc,CAACsT,KAAD,EAAQE,QAAR,CAAd,CAAA;EACAxT,cAAc,CAACwT,QAAQ,IAAIF,KAAb,EAAoB,CAACyE,gBAAD,IAAqBxE,SAAzC,CAAd,CAAA;AACAvT,EAAAA,cAAc,CAACuT,SAAD,EAAYE,QAAZ,CAAd,CAAA;EAEAhZ,IAAI,CAAC2e,UAAD,EAAa,MAAK;IACpBI,kBAAkB,EAAA,CAAA;AAClB/b,IAAAA,UAAU,CAAC8V,SAAD,EAAYpG,0BAAZ,CAAV,CAAA;AACA1P,IAAAA,UAAU,CAAC8V,SAAD,EAAYnG,0BAAZ,CAAV,CAAA;;AAEA,IAAA,IAAI+L,kBAAkB,CAAC1F,QAAD,CAAtB,EAAkC;MAChC2C,MAAM,CAAC3C,QAAD,CAAN,CAAA;AACD,KAAA;;AACD,IAAA,IAAI0F,kBAAkB,CAAC5F,SAAD,CAAtB,EAAmC;MACjC6C,MAAM,CAAC7C,SAAD,CAAN,CAAA;AACD,KAAA;;AACD,IAAA,IAAI4F,kBAAkB,CAAC3F,QAAD,CAAtB,EAAkC;MAChC4C,MAAM,CAAC5C,QAAD,CAAN,CAAA;AACD,KAAA;;IACDiG,kBAAkB,EAAA,CAAA;IAClBC,mBAAmB,EAAA,CAAA;IACnBC,kBAAkB,EAAA,CAAA;AACnB,GAjBG,CAAJ,CAAA;;AAmBA,EAAA,IAAInF,uBAAuB,IAAI,CAACuD,gBAAhC,EAAkD;AAChDtd,IAAAA,IAAI,CAAC2e,UAAD,EAAahW,WAAW,CAACG,IAAZ,CAAiB,CAAjB,EAAoBgQ,SAApB,EAA+B5F,iCAA/B,CAAb,CAAJ,CAAA;AACD,GAAA;;AACD,EAAA,IAAI2K,gBAAJ,EAAsB;AACpBvY,IAAAA,YAAY,CAACwT,SAAD,EAAY+E,gBAAZ,CAAZ,CAAA;IACA7d,IAAI,CAAC2e,UAAD,EAAa9Y,cAAc,CAACiD,IAAf,CAAoB,CAApB,EAAuB+U,gBAAvB,CAAb,CAAJ,CAAA;AACD,GAAA;;EAED,OAAO,CAACL,kBAAD,EAAqB5c,OAAO,CAACkI,IAAR,CAAa,CAAb,EAAgB6V,UAAhB,CAArB,CAAP,CAAA;AACD,CArIM;;AC/GA,MAAMQ,mBAAmB,GAAiC,CAC/DC,sBAD+D,EAE/DhN,KAF+D,KAG7D;EACF,MAAM;AAAE4G,IAAAA,QAAAA;AAAF,GAAA,GAAeoG,sBAArB,CAAA;EACA,MAAM,CAACC,QAAD,CAAA,GAAajN,KAAnB,CAAA;AAEA,EAAA,OAAQkN,WAAD,IAAgB;IACrB,MAAM;AAAEpF,MAAAA,YAAAA;AAAF,KAAA,GAAmBuB,cAAc,EAAvC,CAAA;IACA,MAAM;AAAE8D,MAAAA,gBAAAA;AAAF,KAAA,GAAuBF,QAAQ,EAArC,CAAA;IACA,MAAM;AAAEG,MAAAA,uBAAAA;AAAF,KAAA,GAA8BF,WAApC,CAAA;IACA,MAAMG,sBAAsB,GAAG,CAACzG,QAAQ,IAAI,CAACkB,YAAd,KAA+BsF,uBAA9D,CAAA;;AAEA,IAAA,IAAIC,sBAAJ,EAA4B;MAC1B1Y,KAAK,CAACiS,QAAD,EAAW;AACd0G,QAAAA,MAAM,EAAEH,gBAAgB,GAAG,EAAH,GAAQ,MAAA;AADlB,OAAX,CAAL,CAAA;AAGD,KAAA;;IAED,OAAO;AACLI,MAAAA,YAAY,EAAEF,sBADT;AAELG,MAAAA,gBAAgB,EAAEH,sBAAAA;KAFpB,CAAA;GAZF,CAAA;AAiBD,CAxBM;;ACCA,MAAMI,mBAAmB,GAAiC,CAC/DT,sBAD+D,EAE/DhN,KAF+D,KAG7D;AACF,EAAA,MAAM,CAACiN,QAAD,EAAWS,QAAX,IAAuB1N,KAA7B,CAAA;EACA,MAAM;IAAEyG,KAAF;IAASE,QAAT;IAAmBD,SAAnB;AAA8BuF,IAAAA,iBAAiB,EAAE0B,YAAAA;AAAjD,GAAA,GAAkEX,sBAAxE,CAAA;AACA,EAAA,MAAM,CAACY,kBAAD,EAAqBC,mBAArB,CAAA,GAA4CjkB,WAAW,CAC3D;AACEI,IAAAA,MAAM,EAAEoN,SADV;AAEErN,IAAAA,aAAa,EAAE6Q,kBAAkB,EAAA;AAFnC,GAD2D,EAK3DA,kBAAkB,CAAClE,IAAnB,CAAwB,CAAxB,EAA2B+P,KAA3B,EAAkC,SAAlC,EAA6C,EAA7C,CAL2D,CAA7D,CAAA;AAQA,EAAA,OAAO,CAACyG,WAAD,EAAcY,WAAd,EAA2BxjB,KAA3B,KAAoC;IACzC,IAAI,CAACihB,OAAD,EAAUwC,cAAV,IAA4BF,mBAAmB,CAACvjB,KAAD,CAAnD,CAAA;IACA,MAAM;MAAEqd,uBAAF;AAA2BG,MAAAA,YAAAA;AAA3B,KAAA,GAA4CuB,cAAc,EAAhE,CAAA;IACA,MAAM;AAAE2E,MAAAA,eAAAA;AAAF,KAAA,GAAsBf,QAAQ,EAApC,CAAA;IACA,MAAM;MAAEM,YAAF;MAAgBC,gBAAhB;AAAkCS,MAAAA,iBAAAA;AAAlC,KAAA,GAAwDf,WAA9D,CAAA;IACA,MAAM,CAACjL,eAAD,EAAkBiM,sBAAlB,IAA4CJ,WAAW,CAAC,iBAAD,CAA7D,CAAA;AACA,IAAA,MAAMK,eAAe,GAAG,CAACrG,YAAD,IAAiB0F,gBAAzC,CAAA;;AAEA,IAAA,IAAID,YAAY,IAAIQ,cAAhB,IAAkCI,eAAtC,EAAuD;AACrD,MAAA,CAAC5C,OAAD,EAAUwC,cAAV,IAA4BH,kBAAkB,CAACtjB,KAAD,CAA9C,CAAA;AACD,KAAA;;IAED,MAAM8jB,mBAAmB,GACvB,CAACT,YAAD,KAAkBO,sBAAsB,IAAID,iBAA1B,IAA+CF,cAAjE,CADF,CAAA;;AAGA,IAAA,IAAIK,mBAAJ,EAAyB;MAEvB,MAAMC,eAAe,GAAG,CAACpM,eAAD,IAAqB,CAAC0E,QAAD,IAAa,CAACgB,uBAA3D,CAAA;MACA,MAAM2G,iBAAiB,GAAG/C,OAAO,CAACjQ,CAAR,GAAYiQ,OAAO,CAAChQ,CAA9C,CAAA;MACA,MAAMgT,eAAe,GAAGhD,OAAO,CAAClQ,CAAR,GAAYkQ,OAAO,CAAC1U,CAA5C,CAAA;AAEA,MAAA,MAAM2X,YAAY,GAAgB;QAChCC,WAAW,EAAEJ,eAAe,IAAI,CAACL,eAApB,GAAsC,CAACM,iBAAvC,GAA2D,CADxC;AAEhCI,QAAAA,YAAY,EAAEL,eAAe,GAAG,CAACE,eAAJ,GAAsB,CAFnB;QAGhCI,UAAU,EAAEN,eAAe,IAAIL,eAAnB,GAAqC,CAACM,iBAAtC,GAA0D,CAHtC;QAIhCrT,GAAG,EAAEoT,eAAe,GAAG,CAAC9C,OAAO,CAAClQ,CAAZ,GAAgB,CAJJ;AAKhCH,QAAAA,KAAK,EAAEmT,eAAe,GAAIL,eAAe,GAAG,CAACzC,OAAO,CAACjQ,CAAZ,GAAgB,MAAnC,GAA6C,CALnC;AAMhCF,QAAAA,IAAI,EAAEiT,eAAe,GAAIL,eAAe,GAAG,MAAH,GAAY,CAACzC,OAAO,CAAChQ,CAAxC,GAA6C,CANlC;AAOhCqT,QAAAA,KAAK,EAAEP,eAAe,GAAkB,CAAAC,YAAAA,EAAAA,iBAAsB,KAAxC,GAA2C,EAAA;OAPnE,CAAA;AASA,MAAA,MAAMO,aAAa,GAAgB;AACjCC,QAAAA,UAAU,EAAET,eAAe,GAAG9C,OAAO,CAAClQ,CAAX,GAAe,CADT;AAEjC0T,QAAAA,YAAY,EAAEV,eAAe,GAAG9C,OAAO,CAACjQ,CAAX,GAAe,CAFX;AAGjC0T,QAAAA,aAAa,EAAEX,eAAe,GAAG9C,OAAO,CAAC1U,CAAX,GAAe,CAHZ;AAIjCoY,QAAAA,WAAW,EAAEZ,eAAe,GAAG9C,OAAO,CAAChQ,CAAX,GAAe,CAAA;OAJ7C,CAAA;AAQA5G,MAAAA,KAAK,CAACgS,QAAQ,IAAID,SAAb,EAAwB8H,YAAxB,CAAL,CAAA;AACA7Z,MAAAA,KAAK,CAAC+R,SAAD,EAAYmI,aAAZ,CAAL,CAAA;AAEAnB,MAAAA,QAAQ,CAAC;AACP/G,QAAAA,QAAQ,EAAE4E,OADH;QAEP2D,gBAAgB,EAAE,CAACb,eAFZ;QAGPc,qBAAqB,EAAExI,QAAQ,GAC3BkI,aAD2B,GAE3BhgB,UAAU,CAAC,EAAD,EAAK2f,YAAL,EAAmBK,aAAnB,CAAA;AALP,OAAD,CAAR,CAAA;AAOD,KAAA;;IAED,OAAO;AACLO,MAAAA,oBAAoB,EAAEhB,mBAAAA;KADxB,CAAA;GAlDF,CAAA;AAsDD,CApEM;;ACmCP,MAAM;AAAEiB,EAAAA,GAAAA;AAAF,CAAA,GAAU9X,IAAhB,CAAA;AACA,MAAM+X,UAAU,GAAG,SAAnB,CAAA;AACA,MAAMvK,SAAS,GAAG,QAAlB,CAAA;AACA,MAAMwK,4BAA4B,GAAG,EAArC,CAAA;AACA,MAAMC,cAAc,GAAG;AACrBxlB,EAAAA,MAAM,EAAEkN,OADa;AAErBnN,EAAAA,aAAa,EAAE;AAAE0R,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE,CAAA;AAAX,GAAA;AAFM,CAAvB,CAAA;AAIA,MAAM+T,cAAc,GAAG;AACrBzlB,EAAAA,MAAM,EAAEmN,OADa;AAErBpN,EAAAA,aAAa,EAAE;AAAEsU,IAAAA,CAAC,EAAE0G,SAAL;AAAgBzG,IAAAA,CAAC,EAAEyG,SAAAA;AAAnB,GAAA;AAFM,CAAvB,CAAA;;AAKA,MAAM2K,iBAAiB,GAAG,CACxBC,kBADwB,EAExBC,kBAFwB,EAGxBC,YAHwB,KAItB;AACF,EAAA,MAAMC,UAAU,GAAGhjB,MAAM,CAACwZ,gBAAP,GAA0B,CAA1B,KAAgC,CAAhC,GAAoC,CAApC,GAAwC,CAA3D,CAAA;AACA,EAAA,MAAMyJ,MAAM,GAAG;IACbtU,CAAC,EAAE4T,GAAG,CAAC,CAAD,EAAIM,kBAAkB,CAAClU,CAAnB,GAAuBmU,kBAAkB,CAACnU,CAA1C,GAA8C4T,GAAG,CAAC,CAAD,EAAIQ,YAAY,CAACpU,CAAjB,CAArD,CADO;IAEbC,CAAC,EAAE2T,GAAG,CAAC,CAAD,EAAIM,kBAAkB,CAACjU,CAAnB,GAAuBkU,kBAAkB,CAAClU,CAA1C,GAA8C2T,GAAG,CAAC,CAAD,EAAIQ,YAAY,CAACnU,CAAjB,CAArD,CAAA;GAFR,CAAA;EAKA,OAAO;IACLD,CAAC,EAAEsU,MAAM,CAACtU,CAAP,GAAWqU,UAAX,GAAwBC,MAAM,CAACtU,CAA/B,GAAmC,CADjC;IAELC,CAAC,EAAEqU,MAAM,CAACrU,CAAP,GAAWoU,UAAX,GAAwBC,MAAM,CAACrU,CAA/B,GAAmC,CAAA;GAFxC,CAAA;AAID,CAfD,CAAA;;AAiBA,MAAMsU,gBAAgB,GAAG,CACvB1hB,GADuB,EAEvBwF,UAFuB,EAGvB1D,GAHuB,KAInBA,GAAG,GAAGqG,QAAQ,CAACnI,GAAD,EAAMwF,UAAN,CAAX,GAA+ByC,WAAW,CAACjI,GAAD,EAAMwF,UAAN,CAJnD,CAAA;;AAMA,MAAMmc,iBAAiB,GAAIC,gBAAD,IAA8BA,gBAAgB,CAAC1iB,OAAjB,CAAyB8hB,UAAzB,CAAA,KAAyC,CAAjG,CAAA;;AAOO,MAAMa,oBAAoB,GAAiC,CAChEnD,sBADgE,EAEhEhN,KAFgE,KAG9D;AACF,EAAA,MAAM,CAACiN,QAAD,EAAWS,QAAX,IAAuB1N,KAA7B,CAAA;EACA,MAAM;IACJyG,KADI;IAEJE,QAFI;IAGJD,SAHI;IAIJ+E,gBAJI;IAKJQ,iBALI;AAMJG,IAAAA,uBAAAA;AANI,GAAA,GAOFY,sBAPJ,CAAA;EAQA,MAAM;IACJvF,oBADI;IAEJK,YAFI;IAGJH,uBAHI;AAIJD,IAAAA,0BAAAA;AAJI,GAAA,GAKF2B,cAAc,EALlB,CAAA;AAMA,EAAA,MAAM+G,iBAAiB,GACrB,CAACnE,iBAAD,IACA,CAACtE,uBADD,KAECD,0BAA0B,CAACrJ,CAA3B,IAAgCqJ,0BAA0B,CAACpJ,CAF5D,CADF,CAAA;AAKA,EAAA,MAAM,CAAC+R,kBAAD,EAAqBC,sBAArB,CAAA,GAA+C1mB,WAAW,CAC9D4lB,cAD8D,EAE9DjT,cAAc,CAAC7F,IAAf,CAAoB,CAApB,EAAuB+P,KAAvB,CAF8D,CAAhE,CAAA;AAKA,EAAA,MAAM,CAAC8J,6BAAD,EAAgCC,iCAAhC,CAAA,GAAqE5mB,WAAW,CAEpF4lB,cAFoF,EAEpEpT,UAAU,CAAC1F,IAAX,CAAgB,CAAhB,EAAmBgQ,SAAnB,CAFoE,CAAtF,CAAA;EAIA,MAAM,CAAC+J,yBAAD,EAA4BC,6BAA5B,IACJ9mB,WAAW,CAAa4lB,cAAb,CADb,CAAA;AAGA,EAAA,MAAM,CAACmB,wBAAD,CAAA,GAA6B/mB,WAAW,CAAoB6lB,cAApB,CAA9C,CAAA;;AAOA,EAAA,MAAMmB,cAAc,GAAG,CACrBC,qBADqB,EAErBC,eAFqB,KAGnB;IACFnc,KAAK,CAAC+R,SAAD,EAAY;AACf4G,MAAAA,MAAM,EAAE,EAAA;AADO,KAAZ,CAAL,CAAA;;AAIA,IAAA,IAAIwD,eAAJ,EAAqB;MACnB,MAAM;QAAE5B,gBAAF;AAAoBvI,QAAAA,QAAQ,EAAE4E,OAAAA;AAA9B,OAAA,GAA0C0B,QAAQ,EAAxD,CAAA;MACA,MAAM;QAAE8D,eAAF;AAAmBC,QAAAA,qBAAAA;AAAnB,OAAA,GAA6CH,qBAAnD,CAAA;AACA,MAAA,MAAMrM,KAAK,GAAGjI,cAAc,CAACkK,KAAD,CAA5B,CAAA;AACA,MAAA,MAAMwK,cAAc,GAAGhV,UAAU,CAACwK,KAAD,CAAjC,CAAA;MAGA,MAAMyK,YAAY,GAAGvc,KAAK,CAAC+R,SAAD,EAAY,WAAZ,CAAL,KAAkC,aAAvD,CAAA;AACA,MAAA,MAAM6H,eAAe,GAAGW,gBAAgB,IAAIgC,YAApB,GAAmC3F,OAAO,CAAC1U,CAAR,GAAY0U,OAAO,CAAClQ,CAAvD,GAA2D,CAAnF,CAAA;MACA,MAAM8V,kBAAkB,GAAG,EAAEzJ,0BAA0B,CAACrJ,CAA3B,IAAgC6S,YAAlC,CAA3B,CAAA;MAEAvc,KAAK,CAAC+R,SAAD,EAAY;QACf4G,MAAM,EACJ2D,cAAc,CAACvV,CAAf,GACA8I,KAAK,CAAC9I,CADN,IAECqV,eAAe,CAAC1S,CAAhB,IAAqB8S,kBAArB,GAA0CH,qBAAqB,CAAC3S,CAAhE,GAAoE,CAFrE,CAGAkQ,GAAAA,eAAAA;AALa,OAAZ,CAAL,CAAA;AAOD,KAAA;GA1BH,CAAA;;AAmCA,EAAA,MAAM6C,wBAAwB,GAAG,CAC/BC,4BAD+B,EAE/BC,gBAF+B,KAGN;IACzB,MAAMC,iBAAiB,GACrB,CAAC5J,uBAAD,IAA4B,CAAC0J,4BAA7B,GAA4D9B,4BAA5D,GAA2F,CAD7F,CAAA;;IAEA,MAAMiC,eAAe,GAAG,CACtBC,QADsB,EAEtBC,UAFsB,EAGtBtK,mBAHsB,KAIpB;AACF,MAAA,MAAMuK,aAAa,GAAGhd,KAAK,CAAC+R,SAAD,EAAY+K,QAAZ,CAA3B,CAAA;MAEA,MAAMG,4BAA4B,GAAGN,gBAAgB,GACjDA,gBAAgB,CAACG,QAAD,CADiC,GAEjDE,aAFJ,CAAA;AAGA,MAAA,MAAME,cAAc,GAAGD,4BAA4B,KAAK,QAAxD,CAAA;AACA,MAAA,MAAME,6BAA6B,GAAGJ,UAAU,GAAGH,iBAAH,GAAuBnK,mBAAvE,CAAA;MACA,MAAM2K,oBAAoB,GACxBF,cAAc,IAAI,CAAClK,uBAAnB,GAA6CmK,6BAA7C,GAA6E,CAD/E,CAAA;AAEA,MAAA,MAAME,2BAA2B,GAAGN,UAAU,IAAI,CAAC,CAACH,iBAApD,CAAA;MAEA,OAAO,CAACI,aAAD,EAAgBE,cAAhB,EAAgCE,oBAAhC,EAAsDC,2BAAtD,CAAP,CAAA;KAhBF,CAAA;;IAwBA,MAAM,CAACC,cAAD,EAAiBC,eAAjB,EAAkCC,qBAAlC,EAAyDC,4BAAzD,CACJZ,GAAAA,eAAe,CAAC,WAAD,EAAc9J,0BAA0B,CAACrJ,CAAzC,EAA4CoJ,oBAAoB,CAACpJ,CAAjE,CADjB,CAAA;IAEA,MAAM,CAACgU,cAAD,EAAiBC,eAAjB,EAAkCC,qBAAlC,EAAyDC,4BAAzD,CACJhB,GAAAA,eAAe,CAAC,WAAD,EAAc9J,0BAA0B,CAACpJ,CAAzC,EAA4CmJ,oBAAoB,CAACnJ,CAAjE,CADjB,CAAA;IAGA,OAAO;AACLmU,MAAAA,cAAc,EAAE;AACdpU,QAAAA,CAAC,EAAE4T,cADW;AAEd3T,QAAAA,CAAC,EAAE+T,cAAAA;OAHA;AAKLtB,MAAAA,eAAe,EAAE;AACf1S,QAAAA,CAAC,EAAE6T,eADY;AAEf5T,QAAAA,CAAC,EAAEgU,eAAAA;OAPA;AASLtB,MAAAA,qBAAqB,EAAE;AACrB3S,QAAAA,CAAC,EAAE8T,qBADkB;AAErB7T,QAAAA,CAAC,EAAEiU,qBAAAA;OAXA;AAaLG,MAAAA,4BAA4B,EAAE;AAC5BrU,QAAAA,CAAC,EAAE+T,4BADyB;AAE5B9T,QAAAA,CAAC,EAAEkU,4BAAAA;AAFyB,OAAA;KAbhC,CAAA;GAnCF,CAAA;;EA+DA,MAAMG,wBAAwB,GAAG,CAC/BtB,4BAD+B,EAE/BuB,WAF+B,EAG/BC,cAH+B,EAI/BvB,gBAJ+B,KAKN;AACzB,IAAA,MAAMwB,oBAAoB,GAAG,CAACC,QAAD,EAA6BC,eAA7B,KAAyD;AACpF,MAAA,MAAMC,eAAe,GAAGhD,iBAAiB,CAAC8C,QAAD,CAAzC,CAAA;AACA,MAAA,MAAMG,uBAAuB,GAC1BF,eAAe,IAAIC,eAAnB,IAAsCF,QAAQ,CAACtnB,OAAT,CAAoB,GAAA6jB,aAApB,EAAmC,EAAnC,CAAvC,IAAkF,EADpF,CAAA;AAEA,MAAA,OAAO,CACL0D,eAAe,IAAI,CAACC,eAApB,GAAsCF,QAAtC,GAAiD,EAD5C,EAEL9C,iBAAiB,CAACiD,uBAAD,CAAjB,GAA6C,QAA7C,GAAwDA,uBAFnD,CAAP,CAAA;KAJF,CAAA;;AAUA,IAAA,MAAM,CAAClO,SAAD,EAAYmO,gBAAZ,IAAgCL,oBAAoB,CAACD,cAAc,CAACxU,CAAhB,EAAmBuU,WAAW,CAACvU,CAA/B,CAA1D,CAAA;AACA,IAAA,MAAM,CAAC4G,SAAD,EAAYmO,gBAAZ,IAAgCN,oBAAoB,CAACD,cAAc,CAACvU,CAAhB,EAAmBsU,WAAW,CAACtU,CAA/B,CAA1D,CAAA;IAEAgT,gBAAgB,CAACtM,SAAjB,GAA6BmO,gBAAgB,IAAIlO,SAApB,GAAgCkO,gBAAhC,GAAmDnO,SAAhF,CAAA;IACAsM,gBAAgB,CAACrM,SAAjB,GAA6BmO,gBAAgB,IAAIpO,SAApB,GAAgCoO,gBAAhC,GAAmDnO,SAAhF,CAAA;AAEA,IAAA,OAAOmM,wBAAwB,CAACC,4BAAD,EAA+BC,gBAA/B,CAA/B,CAAA;GAtBF,CAAA;;EAgCA,MAAM+B,eAAe,GAAG,CACtBxC,qBADsB,EAEtBlB,kBAFsB,EAGtBE,YAHsB,EAItByD,cAJsB,KAKpB;AACF,IAAA,IAAIlD,iBAAJ,EAAuB;MACrB,MAAM;AAAEjB,QAAAA,qBAAAA;AAAF,OAAA,GAA4BlC,QAAQ,EAA1C,CAAA;MACA,MAAM;QAAE+D,qBAAF;AAAyB0B,QAAAA,4BAAAA;AAAzB,OAAA,GAA0D7B,qBAAhE,CAAA;MACA,MAAM;AAAExS,QAAAA,CAAC,EAAEkV,QAAL;AAAejV,QAAAA,CAAC,EAAEkV,QAAAA;AAAlB,OAAA,GAA+Bd,4BAArC,CAAA;MACA,MAAM;AAAErU,QAAAA,CAAC,EAAEoV,WAAL;AAAkBnV,QAAAA,CAAC,EAAEoV,WAAAA;AAArB,OAAA,GAAqC1C,qBAA3C,CAAA;AACA,MAAA,MAAM2C,mCAAmC,GAAsBL,cAAc,GACzE,cADyE,GAEzE,aAFJ,CAAA;AAGA,MAAA,MAAMM,qCAAqC,GAAGzE,qBAAqB,CACjEwE,mCADiE,CAAnE,CAAA;AAGA,MAAA,MAAME,mCAAmC,GAAG1E,qBAAqB,CAACL,UAAlE,CAAA;MACA,MAAMgF,sBAAsB,GAAGnE,kBAAkB,CAAClU,CAAnB,GAAuBoU,YAAY,CAACpU,CAAnE,CAAA;MACA,MAAMsY,sBAAsB,GAAGpE,kBAAkB,CAACjU,CAAnB,GAAuBmU,YAAY,CAACnU,CAAnE,CAAA;AACA,MAAA,MAAMsY,WAAW,GAAG;AAClBvY,QAAAA,CAAC,EACCiY,WAAW,IAAIF,QAAf,GACO,CAAA,EAAAE,WAAW,GAAGI,sBAAd,GAAuCF,qCAAyC,CAAA,EAAA,CADvF,GAEI,EAJY;AAKlBlY,QAAAA,CAAC,EACC+X,WAAW,IAAIF,QAAf,GACO,CAAA,EAAAE,WAAW,GAAGM,sBAAd,GAAuCF,mCAAuC,CAAA,EAAA,CADrF,GAEI,EAAA;OARR,CAAA;;AAYA,MAAA,IAAIpI,gBAAJ,EAAsB;QACpB,MAAM;AAAEwI,UAAAA,KAAAA;AAAF,SAAA,GAAYxI,gBAAlB,CAAA;;AACA,QAAA,IAAIwI,KAAJ,EAAW;UACT,MAAM;AAAEC,YAAAA,QAAAA;AAAF,WAAA,GAAeD,KAArB,CAAA;;AACA,UAAA,IAAIC,QAAJ,EAAc;AACZ,YAAA,IAAI,CAACA,QAAQ,CAAC/nB,MAAd,EAAsB;AACpB8nB,cAAAA,KAAK,CAACE,UAAN,CACM,CAAA,CAAA,EAAApkB,IAAI,CAAC0b,gBAAD,EAAmB,IAAnB,QAA+B7K,wBAAwB,CAAA,WAAA,CADjE,EAEE,CAFF,CAAA,CAAA;AAID,aAAA;;AAGD,YAAA,MAAMwT,SAAS,GAAGF,QAAQ,CAAC,CAAD,CAAR,CAAYvf,KAA9B,CAAA;AAEAyf,YAAAA,SAAS,CAACxF,KAAV,GAAkBoF,WAAW,CAACvY,CAA9B,CAAA;AACA2Y,YAAAA,SAAS,CAAC9G,MAAV,GAAmB0G,WAAW,CAACtY,CAA/B,CAAA;AACD,WAAA;AACF,SAAA;AACF,OAnBD,MAmBO;QACL/G,KAAK,CAA0B+R,SAA1B,EAAqC;UACxC,UAAYsN,EAAAA,WAAW,CAACvY,CADgB;AAExC,UAAA,UAAA,EAAYuY,WAAW,CAACtY,CAAAA;AAFgB,SAArC,CAAL,CAAA;AAID,OAAA;AACF,KAAA;;AAED,IAAA,OAAO0U,iBAAP,CAAA;GA3DF,CAAA;;EAqEA,MAAMiE,oBAAoB,GAAG,CAC3BxD,qBAD2B,EAE3ByC,cAF2B,EAG3BgB,eAH2B,EAI3BhD,gBAJ2B,KAKzB;IACF,MAAM;MAAEN,qBAAF;AAAyB0B,MAAAA,4BAAAA;AAAzB,KAAA,GAA0D7B,qBAAhE,CAAA;IACA,MAAM;AAAExS,MAAAA,CAAC,EAAEkV,QAAL;AAAejV,MAAAA,CAAC,EAAEkV,QAAAA;AAAlB,KAAA,GAA+Bd,4BAArC,CAAA;IACA,MAAM;AAAErU,MAAAA,CAAC,EAAEoV,WAAL;AAAkBnV,MAAAA,CAAC,EAAEoV,WAAAA;AAArB,KAAA,GAAqC1C,qBAA3C,CAAA;IACA,MAAM;AAAE7B,MAAAA,qBAAqB,EAAEoF,oBAAAA;AAAzB,KAAA,GAAkDtH,QAAQ,EAAhE,CAAA;AACA,IAAA,MAAMuH,mBAAmB,GAAsBlB,cAAc,GAAG,YAAH,GAAkB,aAA/E,CAAA;AACA,IAAA,MAAMmB,4BAA4B,GAAsBnB,cAAc,GAClE,aADkE,GAElE,cAFJ,CAAA;AAGA,IAAA,MAAMoB,qBAAqB,GAAGH,oBAAoB,CAACC,mBAAD,CAAlD,CAAA;AACA,IAAA,MAAMG,mBAAmB,GAAGJ,oBAAoB,CAAC7F,YAAjD,CAAA;AACA,IAAA,MAAMkG,sBAAsB,GAAGL,oBAAoB,CAACE,4BAAD,CAAnD,CAAA;AACA,IAAA,MAAMI,oBAAoB,GAAGN,oBAAoB,CAACvF,aAAlD,CAAA;IAGAsC,gBAAgB,CAAC1C,KAAjB,GAAwC,CAAA8E,YAAAA,EAAAA,WAAW,GAAGgB,qBAAqB,GAAG,CAAC,CAAC,CAAhF,GAAA,CAAA,CAAA;AACApD,IAAAA,gBAAgB,CAACkD,mBAAD,CAAhB,GAAwC,CAACd,WAAD,GAAegB,qBAAvD,CAAA;AAGApD,IAAAA,gBAAgB,CAAC5C,YAAjB,GAAgC,CAAC+E,WAAD,GAAekB,mBAA/C,CAAA;;AAGA,IAAA,IAAIL,eAAJ,EAAqB;MACnBhD,gBAAgB,CAACmD,4BAAD,CAAhB,GACEG,sBAAsB,IAAIpB,QAAQ,GAAGE,WAAH,GAAiB,CAA7B,CADxB,CAAA;MAEApC,gBAAgB,CAACtC,aAAjB,GAAiC6F,oBAAoB,IAAItB,QAAQ,GAAGE,WAAH,GAAiB,CAA7B,CAArD,CAAA;AACD,KAAA;GA/BH,CAAA;;EAyCA,MAAMqB,mBAAmB,GAAG,CAC1BzD,4BAD0B,EAE1BiC,cAF0B,EAG1BzC,qBAH0B,KAIG;AAC7B,IAAA,IAAIT,iBAAJ,EAAuB;AACrB,MAAA,MAAM2E,0BAA0B,GAC9BlE,qBAAqB,IAAIO,wBAAwB,CAACC,4BAAD,CADnD,CAAA;MAEA,MAAM;AAAElC,QAAAA,qBAAqB,EAAEoF,oBAAAA;AAAzB,OAAA,GAAkDtH,QAAQ,EAAhE,CAAA;MACA,MAAM;AAAEyF,QAAAA,4BAAAA;AAAF,OAAA,GAAmCqC,0BAAzC,CAAA;MACA,MAAM;AAAE1W,QAAAA,CAAC,EAAEkV,QAAL;AAAejV,QAAAA,CAAC,EAAEkV,QAAAA;AAAlB,OAAA,GAA+Bd,4BAArC,CAAA;MACA,MAAMsC,iBAAiB,GAAgB,EAAvC,CAAA;;AACA,MAAA,MAAMC,WAAW,GAAIne,KAAD,IAClB3J,IAAI,CAAC2J,KAAK,CAACvG,KAAN,CAAY,GAAZ,CAAD,EAAoB3B,IAAD,IAAS;AAC9BomB,QAAAA,iBAAiB,CAACpmB,IAAD,CAAjB,GAA0B2lB,oBAAoB,CAAC3lB,IAAD,CAA9C,CAAA;AACD,OAFG,CADN,CAAA;;AAKA,MAAA,IAAI2kB,QAAJ,EAAc;QACZ0B,WAAW,CAAC,uCAAD,CAAX,CAAA;AACD,OAAA;;AAED,MAAA,IAAIzB,QAAJ,EAAc;QACZyB,WAAW,CAAC,iDAAD,CAAX,CAAA;AACD,OAAA;;MAED,MAAMC,SAAS,GAAGvgB,KAAK,CAAC+R,SAAD,EAAYnZ,IAAI,CAACynB,iBAAD,CAAhB,CAAvB,CAAA;AAEAze,MAAAA,WAAW,CAACmQ,SAAD,EAAY9F,wBAAZ,CAAX,CAAA;;MAEA,IAAI,CAACkH,YAAL,EAAmB;QACjBkN,iBAAiB,CAAC1H,MAAlB,GAA2B,EAA3B,CAAA;AACD,OAAA;;AAED3Y,MAAAA,KAAK,CAAC+R,SAAD,EAAYsO,iBAAZ,CAAL,CAAA;AAEA,MAAA,OAAO,CACL,MAAK;QACHX,oBAAoB,CAClBU,0BADkB,EAElBzB,cAFkB,EAGlBlD,iBAHkB,EAIlB8E,SAJkB,CAApB,CAAA;AAMAvgB,QAAAA,KAAK,CAAC+R,SAAD,EAAYwO,SAAZ,CAAL,CAAA;AACAze,QAAAA,QAAQ,CAACiQ,SAAD,EAAY9F,wBAAZ,CAAR,CAAA;OATG,EAWLmU,0BAXK,CAAP,CAAA;AAaD,KAAA;;IACD,OAAO,CAACpd,IAAD,CAAP,CAAA;GAjDF,CAAA;;AAoDA,EAAA,OAAO,CAACuV,WAAD,EAAcY,WAAd,EAA2BxjB,KAA3B,KAAoC;IACzC,MAAM;MACJijB,YADI;MAEJ4H,aAFI;MAGJ3H,gBAHI;MAIJ4B,oBAJI;MAKJhC,uBALI;AAMJa,MAAAA,iBAAAA;AANI,KAAA,GAOFf,WAPJ,CAAA;IAQA,MAAM;MAAEC,gBAAF;AAAoBa,MAAAA,eAAAA;AAApB,KAAA,GAAwCf,QAAQ,EAAtD,CAAA;IACA,MAAM,CAACmI,kCAAD,EAAqCC,mCAArC,IACJvH,WAAW,CAAU,+BAAV,CADb,CAAA;IAEA,MAAM,CAACxL,QAAD,EAAWgT,eAAX,IAA8BxH,WAAW,CAAuB,UAAvB,CAA/C,CAAA;IAEA,MAAMuD,4BAA4B,GAChC+D,kCAAkC,IAClC1N,0BAA0B,CAACrJ,CAD3B,IAEAqJ,0BAA0B,CAACpJ,CAH7B,CAAA;AAIA,IAAA,MAAMiX,iBAAiB,GACrB,CAACtJ,iBAAD,IACA,CAACnE,YADD,KAECyF,YAAY,IACXC,gBADD,IAEC2H,aAFD,IAGCE,mCAHD,IAICjI,uBANF,CADF,CAAA;AAQA,IAAA,MAAMoI,gBAAgB,GAAGvF,iBAAiB,CAAC3N,QAAQ,CAACjE,CAAV,CAA1C,CAAA;AACA,IAAA,MAAMoX,gBAAgB,GAAGxF,iBAAiB,CAAC3N,QAAQ,CAAChE,CAAV,CAA1C,CAAA;AACA,IAAA,MAAM2U,eAAe,GAAGuC,gBAAgB,IAAIC,gBAA5C,CAAA;AAEA,IAAA,IAAIC,iBAAiB,GAAGpF,sBAAsB,CAAChmB,KAAD,CAA9C,CAAA;AACA,IAAA,IAAIqrB,uBAAuB,GAAGnF,iCAAiC,CAAClmB,KAAD,CAA/D,CAAA;AACA,IAAA,IAAIsrB,kBAAkB,GAAGlF,6BAA6B,CAACpmB,KAAD,CAAtD,CAAA;AAEA,IAAA,IAAIurB,+BAAJ,CAAA;;IAEA,IAAIR,mCAAmC,IAAI1N,uBAA3C,EAAoE;AAClEyE,MAAAA,uBAAuB,CACrBtL,iCADqB,EAErBL,qCAFqB,EAGrB,CAAC4Q,4BAHoB,CAAvB,CAAA;AAKD,KAAA;;AAED,IAAA,IAAIkE,iBAAJ,EAAuB;AACrBM,MAAAA,+BAA+B,GAAGzE,wBAAwB,CAACC,4BAAD,CAA1D,CAAA;AACAT,MAAAA,cAAc,CAACiF,+BAAD,EAAkC1I,gBAAlC,CAAd,CAAA;AACD,KAAA;;IAED,IACEI,YAAY,IACZ6B,oBADA,IAEA5B,gBAFA,IAGAS,iBAHA,IAIAoH,mCALF,EAME;AACA,MAAA,IAAIpC,eAAJ,EAAqB;AACnB7G,QAAAA,uBAAuB,CAACrL,wBAAD,EAA2BP,4BAA3B,EAAyD,KAAzD,CAAvB,CAAA;AACD,OAAA;;AAED,MAAA,MAAM,CAACsV,mBAAD,EAAsBC,gCAAtB,CAA0DjB,GAAAA,mBAAmB,CACjFzD,4BADiF,EAEjFrD,eAFiF,EAGjF6H,+BAHiF,CAAnF,CAAA;MAKA,MAAM,CAAChG,aAAD,EAAemG,oBAAf,CAAA,GAAuCN,iBAAiB,GAAGrF,kBAAkB,CAAC/lB,KAAD,CAAnF,CAAA;MACA,MAAM,CAACqlB,mBAAD,EAAqBsG,0BAArB,CAAA,GAAmDN,uBAAuB,GAC9EpF,6BAA6B,CAACjmB,KAAD,CAD/B,CAAA;AAEA,MAAA,MAAM4rB,kBAAkB,GAAGja,UAAU,CAACyK,SAAD,CAArC,CAAA;MACA,IAAIyP,0BAA0B,GAAGxG,mBAAjC,CAAA;MACA,IAAIyG,0BAA0B,GAAGF,kBAAjC,CAAA;MAEAJ,mBAAmB,EAAA,CAAA;;MAGnB,IACE,CAACG,0BAAyB,IAAID,oBAA7B,IAAoDX,mCAArD,KACAU,gCADA,IAEA,CAAC1E,4BAFD,IAGAgC,eAAe,CACb0C,gCADa,EAEbpG,mBAFa,EAGbE,aAHa,EAIb7B,eAJa,CAJjB,EAUE;AACAoI,QAAAA,0BAA0B,GAAGna,UAAU,CAACyK,SAAD,CAAvC,CAAA;AACAyP,QAAAA,0BAA0B,GAAG/Z,UAAU,CAACsK,SAAD,CAAvC,CAAA;AACD,OAAA;;AAEDkP,MAAAA,kBAAkB,GAAGnF,yBAAyB,CAC5Cf,iBAAiB,CACf;QACEjU,CAAC,EAAE4T,GAAG,CAACM,mBAAkB,CAAClU,CAApB,EAAuB0a,0BAA0B,CAAC1a,CAAlD,CADR;QAEEC,CAAC,EAAE2T,GAAG,CAACM,mBAAkB,CAACjU,CAApB,EAAuBya,0BAA0B,CAACza,CAAlD,CAAA;AAFR,OADe,EAKf;AACED,QAAAA,CAAC,EAAE2a,0BAA0B,CAAC3a,CAA3B,GAA+B4T,GAAG,CAAC,CAAD,EAAI6G,kBAAkB,CAACza,CAAnB,GAAuBkU,mBAAkB,CAAClU,CAA9C,CADvC;AAEEC,QAAAA,CAAC,EAAE0a,0BAA0B,CAAC1a,CAA3B,GAA+B2T,GAAG,CAAC,CAAD,EAAI6G,kBAAkB,CAACxa,CAAnB,GAAuBiU,mBAAkB,CAACjU,CAA9C,CAAA;AAFvC,OALe,EASfmU,aATe,CAD2B,EAY5CvlB,KAZ4C,CAA9C,CAAA;AAcD,KAAA;;AAED,IAAA,MAAM,CAAC+rB,cAAD,EAAiBC,qBAAjB,IAA0CV,kBAAhD,CAAA;AACA,IAAA,MAAM,CAACjG,kBAAD,EAAqBsG,yBAArB,IAAkDN,uBAAxD,CAAA;AACA,IAAA,MAAM,CAAC9F,YAAD,EAAemG,mBAAf,IAAsCN,iBAA5C,CAAA;AACA,IAAA,MAAM9C,WAAW,GAAG;AAClBvU,MAAAA,CAAC,EAAEgY,cAAc,CAAC5a,CAAf,GAAmB,CADJ;AAElB6C,MAAAA,CAAC,EAAE+X,cAAc,CAAC3a,CAAf,GAAmB,CAAA;KAFxB,CAAA;AAIA,IAAA,MAAM6a,cAAc,GACjBf,gBAAgB,IAAIC,gBAApB,KAAyC7C,WAAW,CAACvU,CAAZ,IAAiBuU,WAAW,CAACtU,CAAtE,CAAD,IACCkX,gBAAgB,IAAI5C,WAAW,CAACvU,CAAhC,IAAqC,CAACuU,WAAW,CAACtU,CADnD,IAECmX,gBAAgB,IAAI7C,WAAW,CAACtU,CAAhC,IAAqC,CAACsU,WAAW,CAACvU,CAHrD,CAAA;;AAKA,IAAA,IACE+Q,oBAAoB,IACpBnB,iBADA,IAEA+H,mBAFA,IAGAC,yBAHA,IAIAK,qBAJA,IAKAhB,eALA,IAMAD,mCANA,IAOAE,iBARF,EASE;AACA,MAAA,MAAM1G,aAAa,GAAgB;AACjCJ,QAAAA,WAAW,EAAE,CADoB;AAEjCC,QAAAA,YAAY,EAAE,CAFmB;AAGjCC,QAAAA,UAAU,EAAE,CAHqB;AAIjCC,QAAAA,KAAK,EAAE,EAJ0B;AAKjC3J,QAAAA,SAAS,EAAE,EALsB;AAMjCD,QAAAA,SAAS,EAAE,EAAA;OANb,CAAA;MAQA,MAAM6L,qBAAqB,GAAG8B,wBAAwB,CACpDtB,4BADoD,EAEpDuB,WAFoD,EAGpDtQ,QAHoD,EAIpDuM,aAJoD,CAAtD,CAAA;MAMA,MAAM2H,gBAAgB,GAAGnD,eAAe,CACtCxC,qBADsC,EAEtClB,kBAFsC,EAGtCE,YAHsC,EAItC7B,eAJsC,CAAxC,CAAA;;MAOA,IAAI,CAAC/B,iBAAL,EAAwB;QACtBoI,oBAAoB,CAClBxD,qBADkB,EAElB7C,eAFkB,EAGlBwI,gBAHkB,EAIlB3H,aAJkB,CAApB,CAAA;AAMD,OAAA;;AAED,MAAA,IAAI0G,iBAAJ,EAAuB;AACrB3E,QAAAA,cAAc,CAACC,qBAAD,EAAwB1D,gBAAxB,CAAd,CAAA;AACD,OAAA;;AAED,MAAA,IAAIlB,iBAAJ,EAAuB;QACrBlc,IAAI,CAAC0W,KAAD,EAAQnG,0BAAR,EAAoCuO,aAAa,CAAC7J,SAAlD,CAAJ,CAAA;QACAjV,IAAI,CAAC0W,KAAD,EAAQlG,0BAAR,EAAoCsO,aAAa,CAAC5J,SAAlD,CAAJ,CAAA;AACD,OAHD,MAGO;AACLtQ,QAAAA,KAAK,CAAC+R,SAAD,EAAYmI,aAAZ,CAAL,CAAA;AACD,OAAA;AACF,KAAA;;IAED1e,SAAS,CAACsW,KAAD,EAAQpG,iBAAR,EAA2BG,4BAA3B,EAAyD+V,cAAzD,CAAT,CAAA;AACAvG,IAAAA,gBAAgB,CAACrJ,QAAD,EAAW5F,wBAAX,EAAqCwV,cAArC,CAAhB,CAAA;IACA,CAACtK,iBAAD,IAAsB+D,gBAAgB,CAACtJ,SAAD,EAAY3F,wBAAZ,EAAsCkS,eAAtC,CAAtC,CAAA;AAEA,IAAA,MAAM,CAACtB,aAAD,EAAgB8E,oBAAhB,CAAwC9F,GAAAA,wBAAwB,CACpES,wBAAwB,CAACC,4BAAD,CAAxB,CAAuDoB,cADa,CAAtE,CAAA;AAIA/E,IAAAA,QAAQ,CAAC;AACP+E,MAAAA,cAAc,EAAEd,aADT;AAEP+E,MAAAA,eAAe,EAAE;QACfrY,CAAC,EAAEgY,cAAc,CAAC5a,CADH;QAEf6C,CAAC,EAAE+X,cAAc,CAAC3a,CAAAA;OAJb;AAMPib,MAAAA,YAAY,EAAE/D,WAAAA;AANP,KAAD,CAAR,CAAA;IASA,OAAO;AACLgE,MAAAA,qBAAqB,EAAEH,oBADlB;AAELI,MAAAA,sBAAsB,EAAEP,qBAAAA;KAF1B,CAAA;GA3LF,CAAA;AAgMD,CA/gBM;;ACrDP,MAAMQ,kBAAkB,GAAG,CACzBC,OADyB,EAEzBC,QAFyB,EAGzB1sB,KAHyB,KAIV;EACf,MAAM4D,MAAM,GAAG,EAAf,CAAA;AACA,EAAA,MAAM+oB,aAAa,GAAGD,QAAQ,IAAI,EAAlC,CAAA;AACA,EAAA,MAAME,OAAO,GAAG3pB,IAAI,CAACwpB,OAAD,CAAJ,CAAczT,MAAd,CAAqB/V,IAAI,CAAC0pB,aAAD,CAAzB,CAAhB,CAAA;AAEA9pB,EAAAA,IAAI,CAAC+pB,OAAD,EAAW5qB,GAAD,IAAQ;AACpB,IAAA,MAAM6qB,YAAY,GAAGJ,OAAO,CAACzqB,GAAD,CAA5B,CAAA;AACA,IAAA,MAAM8qB,aAAa,GAAGH,aAAa,CAAC3qB,GAAD,CAAnC,CAAA;IACA4B,MAAM,CAAC5B,GAAD,CAAN,GAAc,CAAC,EAAEhC,KAAK,IAAI6sB,YAAT,IAAyBC,aAA3B,CAAf,CAAA;AACD,GAJG,CAAJ,CAAA;AAMA,EAAA,OAAOlpB,MAAP,CAAA;AACD,CAhBD,CAAA;;AAkBO,MAAMmpB,0BAA0B,GAAG,CACxCrK,sBADwC,EAExChN,KAFwC,KAGhB;EACxB,MAAM;AAAE0G,IAAAA,SAAAA;AAAF,GAAA,GAAgBsG,sBAAtB,CAAA;EACA,MAAM;IAAErF,uBAAF;IAA2BD,0BAA3B;AAAuDI,IAAAA,YAAAA;AAAvD,GAAA,GAAwEuB,cAAc,EAA5F,CAAA;AACA,EAAA,MAAM+G,iBAAiB,GACrB,CAACzI,uBAAD,KAA6BD,0BAA0B,CAACrJ,CAA3B,IAAgCqJ,0BAA0B,CAACpJ,CAAxF,CADF,CAAA;EAGA,MAAMgZ,cAAc,GAAkC,CACpDvK,mBAAmB,CAACC,sBAAD,EAAyBhN,KAAzB,CADiC,EAEpDyN,mBAAmB,CAACT,sBAAD,EAAyBhN,KAAzB,CAFiC,EAGpDmQ,oBAAoB,CAACnD,sBAAD,EAAyBhN,KAAzB,CAHgC,CAAtD,CAAA;AAMA,EAAA,OAAO,CACL8N,WADK,EAELZ,WAFK,EAGL5iB,KAHK,KAIH;AACF,IAAA,MAAMitB,kBAAkB,GAAGT,kBAAkB,CAC3CjoB,UAAU,CACR;AACE0e,MAAAA,YAAY,EAAE,KADhB;AAEE6B,MAAAA,oBAAoB,EAAE,KAFxB;AAGEnB,MAAAA,iBAAiB,EAAE,KAHrB;AAIEb,MAAAA,uBAAuB,EAAE,KAJ3B;AAKEyJ,MAAAA,sBAAsB,EAAE,KAL1B;AAMED,MAAAA,qBAAqB,EAAE,KANzB;AAOEzB,MAAAA,aAAa,EAAE,KAPjB;AAQE3H,MAAAA,gBAAgB,EAAE,KAAA;AARpB,KADQ,EAWRN,WAXQ,CADiC,EAc3C,EAd2C,EAe3C5iB,KAf2C,CAA7C,CAAA;AAiBA,IAAA,MAAMktB,kBAAkB,GAAGpH,iBAAiB,IAAI,CAACtI,YAAjD,CAAA;AACA,IAAA,MAAM2P,aAAa,GAAGD,kBAAkB,IAAI1mB,UAAU,CAAC4V,SAAD,CAAtD,CAAA;AACA,IAAA,MAAMgR,aAAa,GAAGF,kBAAkB,IAAIzmB,SAAS,CAAC2V,SAAD,CAArD,CAAA;IAEA,IAAIiR,oBAAoB,GAAwCJ,kBAAhE,CAAA;AACApqB,IAAAA,IAAI,CAACmqB,cAAD,EAAkBM,aAAD,IAAkB;AACrCD,MAAAA,oBAAoB,GAAGb,kBAAkB,CACvCa,oBADuC,EAEvCC,aAAa,CAACD,oBAAD,EAAuB7J,WAAvB,EAAoC,CAAC,CAACxjB,KAAtC,CAAb,IAA6D,EAFtB,EAGvCA,KAHuC,CAAzC,CAAA;AAKD,KANG,CAAJ,CAAA;;AAQA,IAAA,IAAIqB,QAAQ,CAAC8rB,aAAD,CAAZ,EAA6B;AAC3B3mB,MAAAA,UAAU,CAAC4V,SAAD,EAAY+Q,aAAZ,CAAV,CAAA;AACD,KAAA;;AACD,IAAA,IAAI9rB,QAAQ,CAAC+rB,aAAD,CAAZ,EAA6B;AAC3B3mB,MAAAA,SAAS,CAAC2V,SAAD,EAAYgR,aAAZ,CAAT,CAAA;AACD,KAAA;;AAED,IAAA,OAAOC,oBAAP,CAAA;GA1CF,CAAA;AA4CD,CA3DM;;ACJP,MAAME,uBAAuB,GAAG,gBAAhC,CAAA;AACA,MAAMC,eAAe,GAAG,QAAxB,CAAA;AACA,MAAMC,YAAY,GAAG,OAArB,CAAA;;AACA,MAAMC,oBAAoB,GAAI1pB,GAAD,IAA+BqG,KAAK,CAACrG,GAAD,EAAM,WAAN,CAAL,KAA4B,KAAxF,CAAA;;AACA,MAAM2pB,oBAAoB,GAAIzZ,IAAD,IAA4BA,IAAI,KAAKA,IAAI,CAAC8O,MAAL,IAAe9O,IAAI,CAACoQ,KAAzB,CAA7D,CAAA;;AASO,MAAMsJ,kBAAkB,GAAG,CAChCppB,MADgC,EAEhCqpB,qBAFgC,EAGhCtuB,OAHgC,KAIT;EACvB,MAAM;IAAEuuB,UAAU,EAAEC,sBAAsB,GAAG,KAAvC;IAA8CC,OAAO,EAAEC,mBAAmB,GAAG,KAAA;GACjF1uB,GAAAA,OAAO,IAAI,EADb,CAAA;EAEA,MAAM;AAAEge,IAAAA,kBAAkB,EAAE2Q,iBAAAA;AAAtB,GAAA,GAA4CnP,cAAc,EAAhE,CAAA;EACA,MAAMoP,YAAY,GAAGxkB,SAAS,CAC5B,eAAe+M,qBAAsC,CAAA,cAAA,EAAAE,6BAA6C,CAAA,cAAA,CADtE,CAA9B,CAAA;AAGA,EAAA,MAAMwX,YAAY,GAAGD,YAAY,CAAC,CAAD,CAAjC,CAAA;AACA,EAAA,MAAME,eAAe,GAAGD,YAAY,CAAC1lB,UAArC,CAAA;EACA,MAAM4lB,iBAAiB,GAAGZ,oBAAoB,CAACthB,IAArB,CAA0B,CAA1B,EAA6BgiB,YAA7B,CAA1B,CAAA;AACA,EAAA,MAAM,CAACG,oCAAD,CAAyCjvB,GAAAA,WAAW,CAA8B;AACtFG,IAAAA,aAAa,EAAEsB,SADuE;AAEtFpB,IAAAA,mBAAmB,EAAE,IAFiE;AAGtFD,IAAAA,MAAM,EAAE,CAAC8uB,OAAD,EAAUtuB,MAAV,KACN,EACE,CAACsuB,OAAD,IAEC,CAACb,oBAAoB,CAACa,OAAD,CAArB,IAAkCb,oBAAoB,CAACztB,MAAD,CAHzD,CAAA;AAJoF,GAA9B,CAA1D,CAAA;;EAUA,MAAMuuB,0BAA0B,GAC9BC,kBADiC,IAE/B;AACF,IAAA,MAAMC,oBAAoB,GACxBltB,OAAO,CAACitB,kBAAD,CAAP,IACAA,kBAAkB,CAAC7sB,MAAnB,GAA4B,CAD5B,IAEAF,QAAQ,CAAC+sB,kBAAkB,CAAC,CAAD,CAAnB,CAHV,CAAA;IAKA,MAAME,iBAAiB,GACrB,CAACD,oBAAD,IAAyBptB,SAAS,CAAEmtB,kBAA2C,CAAC,CAAD,CAA7C,CADpC,CAAA;IAGA,IAAIG,IAAI,GAAG,KAAX,CAAA;IACA,IAAIC,MAAM,GAAiC,KAA3C,CAAA;IACA,IAAIC,iBAAiB,GAAG,IAAxB,CAAA;;AAGA,IAAA,IAAIJ,oBAAJ,EAA0B;AACxB,MAAA,MAAM,CAACK,gBAAD,GAAqBC,eAArB,CAAwCV,GAAAA,oCAAoC,CAC/EG,kBAA4C,CAACQ,GAA7C,EAAoDC,CAAAA,WAD2B,CAAlF,CAAA;AAGA,MAAA,MAAMC,aAAa,GAAGzB,oBAAoB,CAACqB,gBAAD,CAA1C,CAAA;AACA,MAAA,MAAMK,aAAa,GAAG1B,oBAAoB,CAACsB,eAAD,CAA1C,CAAA;AACAJ,MAAAA,IAAI,GAAG,CAACI,eAAD,IAAoB,CAACG,aAA5B,CAAA;AACAN,MAAAA,MAAM,GAAG,CAACO,aAAD,IAAkBD,aAA3B,CAAA;MAEAL,iBAAiB,GAAG,CAACF,IAArB,CAAA;KATF,MAYK,IAAID,iBAAJ,EAAuB;MAC1B,GAAGG,iBAAH,IAAwBL,kBAAxB,CAAA;AACD,KAFI,MAIA;MACHI,MAAM,GAAGJ,kBAAkB,KAAK,IAAhC,CAAA;AACD,KAAA;;IAED,IAAIX,sBAAsB,IAAIgB,iBAA9B,EAAiD;AAC/C,MAAA,MAAMO,GAAG,GAAGV,iBAAiB,GACxBF,kBAA2C,CAAC,CAAD,CADnB,GAEzBhB,oBAAoB,CAACU,YAAD,CAFxB,CAAA;MAGA5nB,UAAU,CACR4nB,YADQ,EAERkB,GAAG,GACCpB,iBAAiB,CAAClT,CAAlB,GACE,CAACyS,YADH,GAEES,iBAAiB,CAAClrB,CAAlB,GACA,CADA,GAEAyqB,YALH,GAMCA,YARI,CAAV,CAAA;AAUAhnB,MAAAA,SAAS,CAAC2nB,YAAD,EAAeX,YAAf,CAAT,CAAA;AACD,KAAA;;IAED,IAAI,CAACoB,IAAL,EAAW;AACThB,MAAAA,qBAAqB,CAAC;QACpB5K,YAAY,EAAE,CAAC2L,iBADK;AAEpBW,QAAAA,oBAAoB,EAAEX,iBAAiB,GAClCF,kBADkC,GAEnC3tB,SAJgB;QAKpBitB,OAAO,EAAE,CAAC,CAACc,MAAAA;AALS,OAAD,CAArB,CAAA;AAOD,KAAA;GA7DH,CAAA;;EA+DA,MAAMtb,YAAY,GAAmB,EAArC,CAAA;AACA,EAAA,IAAIgc,cAAc,GAAoCvB,mBAAmB,GACrEQ,0BADqE,GAErE,KAFJ,CAAA;AAGA,EAAA,IAAIgB,mBAAJ,CAAA;;AAEA,EAAA,IAAIrkB,yBAAJ,EAA+B;AAC7B,IAAA,MAAMskB,sBAAsB,GAAG,IAAItkB,yBAAJ,CAA8BqjB,0BAA9B,CAA/B,CAAA;IACAiB,sBAAsB,CAACC,OAAvB,CAA+BtB,eAA/B,CAAA,CAAA;IACA/qB,IAAI,CAACkQ,YAAD,EAAe,MAAK;AACtBkc,MAAAA,sBAAsB,CAACE,UAAvB,EAAA,CAAA;AACD,KAFG,CAAJ,CAAA;AAGD,GAND,MAMO;AACL,IAAA,MAAMC,uBAAuB,GAAGlmB,SAAS,CACvC,eAAemN,iCAA4D,CAAA,wBAAA,EAAAA,iCAAkD,CAAA,cAAA,EAAAC,uCAAmED,0BAAAA,EAAAA,iCAAiC,CAAiBC,cAAAA,EAAAA,sCAAsC,wDADjP,CAAzC,CAAA;AAGAlO,IAAAA,cAAc,CAACwlB,eAAD,EAAkBwB,uBAAlB,CAAd,CAAA;AACA1jB,IAAAA,QAAQ,CAACkiB,eAAD,EAAkBxX,mCAAlB,CAAR,CAAA;AACA,IAAA,MAAMiZ,2BAA2B,GAAGD,uBAAuB,CAAC,CAAD,CAA3D,CAAA;AACA,IAAA,MAAME,aAAa,GAAGD,2BAA2B,CAACE,SAAlD,CAAA;AACA,IAAA,MAAMC,aAAa,GAAGH,2BAA2B,CAACpnB,UAAlD,CAAA;AACA,IAAA,MAAMwnB,kBAAkB,GAAGD,aAAH,IAAGA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAa,CAAEvnB,UAA1C,CAAA;AAEA,IAAA,IAAIynB,SAAS,GAAG3e,UAAU,CAACse,2BAAD,CAA1B,CAAA;IACA,IAAIM,QAAQ,GAAGD,SAAf,CAAA;IACA,IAAIE,OAAO,GAAG,KAAd,CAAA;AACA,IAAA,IAAIC,KAAJ,CAAA;;IAEA,MAAMC,KAAK,GAAG,MAAK;AACjB/pB,MAAAA,UAAU,CAACypB,aAAD,EAAgBxC,YAAhB,CAAV,CAAA;AACAhnB,MAAAA,SAAS,CAACwpB,aAAD,EAAgBxC,YAAhB,CAAT,CAAA;AACAjnB,MAAAA,UAAU,CAACupB,aAAD,EAAgBtC,YAAhB,CAAV,CAAA;AACAhnB,MAAAA,SAAS,CAACspB,aAAD,EAAgBtC,YAAhB,CAAT,CAAA;KAJF,CAAA;;IAMA,MAAM+C,SAAS,GAAI1B,MAAD,IAAqB;AACrCwB,MAAAA,KAAK,GAAG,CAAR,CAAA;;AACA,MAAA,IAAID,OAAJ,EAAa;AACXF,QAAAA,SAAS,GAAGC,QAAZ,CAAA;AACA3B,QAAAA,0BAA0B,CAACK,MAAM,KAAK,IAAZ,CAA1B,CAAA;AACD,OAAA;KALH,CAAA;;IAOA,MAAM2B,QAAQ,GAAIC,WAAD,IAAgC;AAC/CN,MAAAA,QAAQ,GAAG5e,UAAU,CAACse,2BAAD,CAArB,CAAA;MACAO,OAAO,GAAG,CAACK,WAAD,IAAgB,CAAC9jB,OAAO,CAACwjB,QAAD,EAAWD,SAAX,CAAlC,CAAA;;AAEA,MAAA,IAAIO,WAAJ,EAAiB;QACf5c,cAAc,CAAC4c,WAAD,CAAd,CAAA;;AAEA,QAAA,IAAIL,OAAO,IAAI,CAACC,KAAhB,EAAuB;UACrBjlB,GAAI,CAACilB,KAAD,CAAJ,CAAA;AACAA,UAAAA,KAAK,GAAGhlB,GAAI,CAACklB,SAAD,CAAZ,CAAA;AACD,SAAA;AACF,OAPD,MAOO;AACLA,QAAAA,SAAS,CAACE,WAAW,KAAK,KAAjB,CAAT,CAAA;AACD,OAAA;;MAEDH,KAAK,EAAA,CAAA;KAfP,CAAA;;IAkBAjtB,IAAI,CAACkQ,YAAD,EAAe,CACjBP,EAAE,CAACgd,aAAD,EAAgBzC,eAAhB,EAAiCiD,QAAjC,CADe,EAEjBxd,EAAE,CAAC8c,aAAD,EAAgBvC,eAAhB,EAAiCiD,QAAjC,CAFe,CAAf,CAAJ,CAAA;IAMApmB,KAAK,CAAC6lB,kBAAD,EAAqB;AACxB5L,MAAAA,KAAK,EAAEmJ,YADiB;AAExBzK,MAAAA,MAAM,EAAEyK,YAAAA;AAFgB,KAArB,CAAL,CAAA;IAKA8C,KAAK,EAAA,CAAA;AAELf,IAAAA,cAAc,GAAGvB,mBAAmB,GAAGwC,QAAQ,CAACrkB,IAAT,CAAc,CAAd,EAAiB,KAAjB,CAAH,GAA6BmkB,KAAjE,CAAA;AACD,GAAA;;AAED,EAAA,IAAIxC,sBAAJ,EAA4B;IAC1B0B,mBAAmB,GAAGnwB,WAAW,CAC/B;MACEG,aAAa,EAAE,CAAC6uB,iBAAiB,EAAA;KAFJ,EAI/BA,iBAJ+B,CAAjC,CAAA;IAMA,MAAM,CAACqC,yBAAD,CAAA,GAA8BlB,mBAApC,CAAA;IAEAnsB,IAAI,CACFkQ,YADE,EAEFP,EAAE,CAACmb,YAAD,EAAeZ,eAAf,EAAiCvY,KAAD,IAAiB;MACjD,MAAM2b,yBAAyB,GAAGD,yBAAyB,EAA3D,CAAA;AACA,MAAA,MAAM,CAAC3H,cAAD,EAAiB6H,qBAAjB,IAA0CD,yBAAhD,CAAA;;AAEA,MAAA,IAAIC,qBAAJ,EAA2B;AACzB5kB,QAAAA,WAAW,CAACoiB,eAAD,EAAkB,SAAlB,CAAX,CAAA;;AACA,QAAA,IAAIrF,cAAJ,EAAoB;AAClB7c,UAAAA,QAAQ,CAACkiB,eAAD,EAAkB,KAAlB,CAAR,CAAA;AACD,SAFD,MAEO;AACLliB,UAAAA,QAAQ,CAACkiB,eAAD,EAAkB,KAAlB,CAAR,CAAA;AACD,SAAA;;QACDI,0BAA0B,CAACmC,yBAAD,CAA1B,CAAA;AACD,OAAA;;MAED9c,cAAc,CAACmB,KAAD,CAAd,CAAA;AACD,KAfC,CAFA,CAAJ,CAAA;AAmBD,GAAA;;AAGD,EAAA,IAAIua,cAAJ,EAAoB;AAClBrjB,IAAAA,QAAQ,CAACiiB,YAAD,EAAezX,2BAAf,CAAR,CAAA;IACArT,IAAI,CACFkQ,YADE,EAEFP,EAAE,CAACmb,YAAD,EAAeb,uBAAf,EAAwCiC,cAAxC,EAAwD;MAExDjc,KAAK,EAAE,CAAC,CAACnI,yBAAAA;AAF+C,KAAxD,CAFA,CAAJ,CAAA;AAOD,GAAA;;AAEDpC,EAAAA,eAAe,CAACxE,MAAD,EAAS4pB,YAAT,CAAf,CAAA;AAEA,EAAA,OAAO,MAAK;IACVlqB,OAAO,CAACsP,YAAD,CAAP,CAAA;IACArK,cAAc,CAACilB,YAAD,CAAd,CAAA;GAFF,CAAA;AAID,CAlNM;;AC7CP,MAAM0C,iBAAiB,GAAIC,aAAD,IACvBA,aAA4B,CAAC3f,CAA7B,KAAmC,CAAnC,IACA2f,aAA2C,CAACC,cAD5C,IAEAD,aAA2C,CAACE,iBAA5C,GAAgE,CAHnE,CAAA;;AAWO,MAAMC,qBAAqB,GAAG,CACnC1sB,MADmC,EAEnC2sB,wBAFmC,KAGT;AAC1B,EAAA,MAAMC,eAAe,GAAG7nB,SAAS,CAACyN,wBAAD,CAAjC,CAAA;EACA,MAAMxD,YAAY,GAAmB,EAArC,CAAA;AACA,EAAA,MAAM,CAAC6d,0BAAD,CAA+B/xB,GAAAA,WAAW,CAAC;AAC/CG,IAAAA,aAAa,EAAE,KAAA;AADgC,GAAD,CAAhD,CAAA;;EAIA,MAAM6xB,+BAA+B,GACnCC,WADsC,IAEpC;AACF,IAAA,IAAIA,WAAJ,EAAiB;MACf,MAAM/K,eAAe,GAAG6K,0BAA0B,CAACP,iBAAiB,CAACS,WAAD,CAAlB,CAAlD,CAAA;MACA,MAAM,GAAGxO,sBAAH,CAAA,GAA6ByD,eAAnC,CAAA;;AAEA,MAAA,IAAIzD,sBAAJ,EAA4B;QAC1BoO,wBAAwB,CAAC3K,eAAD,CAAxB,CAAA;AACD,OAAA;AACF,KAAA;GAVH,CAAA;;AAaA,EAAA,IAAIrb,+BAAJ,EAAqC;AACnC,IAAA,MAAMqmB,4BAA4B,GAAyB,IAAIrmB,+BAAJ,CACxDsmB,OAAD,IAAyC;AACvC,MAAA,IAAIA,OAAO,IAAIA,OAAO,CAAC5vB,MAAR,GAAiB,CAAhC,EAAmC;AACjCyvB,QAAAA,+BAA+B,CAACG,OAAO,CAACvC,GAAR,EAAD,CAA/B,CAAA;AACD,OAAA;AACF,KALwD,EAMzD;AAAEwC,MAAAA,IAAI,EAAEltB,MAAAA;AAAR,KANyD,CAA3D,CAAA;IAQAgtB,4BAA4B,CAAC7B,OAA7B,CAAqCyB,eAArC,CAAA,CAAA;IACA9tB,IAAI,CAACkQ,YAAD,EAAe,MAAK;AACtBge,MAAAA,4BAA4B,CAAC5B,UAA7B,EAAA,CAAA;AACD,KAFG,CAAJ,CAAA;AAGD,GAbD,MAaO;IACL,MAAM+B,aAAa,GAAG,MAAK;AACzB,MAAA,MAAMC,OAAO,GAAGpgB,UAAU,CAAC4f,eAAD,CAA1B,CAAA;MACAE,+BAA+B,CAACM,OAAD,CAA/B,CAAA;KAFF,CAAA;;IAIAtuB,IAAI,CAACkQ,YAAD,EAAeoa,kBAAkB,CAACwD,eAAD,EAAkBO,aAAlB,CAAjC,CAAJ,CAAA;IACAA,aAAa,EAAA,CAAA;AACd,GAAA;;AAED3oB,EAAAA,eAAe,CAACxE,MAAD,EAAS4sB,eAAT,CAAf,CAAA;AAEA,EAAA,OAAO,MAAK;IACVltB,OAAO,CAACsP,YAAD,CAAP,CAAA;IACArK,cAAc,CAACioB,eAAD,CAAd,CAAA;GAFF,CAAA;AAID,CAnDM;;ACoDP,MAAMS,wBAAwB,GAAG,CAC/BrtB,MAD+B,EAE/BzB,QAF+B,EAG/B+uB,kBAH+B,KAIT;AACtB,EAAA,IAAIC,GAAJ,CAAA;EACA,IAAIC,SAAS,GAAG,KAAhB,CAAA;;EACA,MAAMC,OAAO,GAAG,MAAK;AACnBD,IAAAA,SAAS,GAAG,IAAZ,CAAA;GADF,CAAA;;EAGA,MAAME,cAAc,GAAqCC,WAAD,IAAiB;AACvE,IAAA,IAAIL,kBAAJ,EAAwB;MACtB,MAAMM,YAAY,GAAGN,kBAAkB,CAACzhB,MAAnB,CAAmD,CAAClN,GAAD,EAAMC,IAAN,KAAc;AACpF,QAAA,IAAIA,IAAJ,EAAU;AACR,UAAA,MAAMwD,QAAQ,GAAGxD,IAAI,CAAC,CAAD,CAArB,CAAA;AACA,UAAA,MAAMuP,UAAU,GAAGvP,IAAI,CAAC,CAAD,CAAvB,CAAA;AACA,UAAA,MAAMivB,QAAQ,GACZ1f,UAAU,IACV/L,QADA,KAECurB,WAAW,GAAGA,WAAW,CAACvrB,QAAD,CAAd,GAA2BD,IAAI,CAACC,QAAD,EAAWpC,MAAX,CAF3C,CADF,CAAA;;AAKA,UAAA,IAAI6tB,QAAQ,IAAIA,QAAQ,CAACxwB,MAArB,IAA+B8Q,UAA/B,IAA6CrR,QAAQ,CAACqR,UAAD,CAAzD,EAAuE;AACrErP,YAAAA,IAAI,CAACH,GAAD,EAAM,CAACkvB,QAAD,EAAW1f,UAAU,CAACxM,IAAX,EAAX,CAAN,EAAqC,IAArC,CAAJ,CAAA;AACD,WAAA;AACF,SAAA;;AACD,QAAA,OAAOhD,GAAP,CAAA;OAbmB,EAclB,EAdkB,CAArB,CAAA;AAgBAN,MAAAA,IAAI,CAACuvB,YAAD,EAAgBhvB,IAAD,IACjBP,IAAI,CAACO,IAAI,CAAC,CAAD,CAAL,EAAWY,GAAD,IAAQ;AACpB,QAAA,MAAM2O,UAAU,GAAGvP,IAAI,CAAC,CAAD,CAAvB,CAAA;AACA,QAAA,MAAMkvB,KAAK,GAAGP,GAAI,CAACtf,GAAL,CAASzO,GAAT,CAAd,CAAA;;AAEA,QAAA,IAAIsuB,KAAJ,EAAW;AACT,UAAA,MAAMC,eAAe,GAAGD,KAAK,CAAC,CAAD,CAA7B,CAAA;AACA,UAAA,MAAME,QAAQ,GAAGF,KAAK,CAAC,CAAD,CAAtB,CAAA;;UAGA,IAAIC,eAAe,KAAK5f,UAAxB,EAAoC;YAClC6f,QAAQ,EAAA,CAAA;AACT,WAAA;AACF,SAAA;;QAED,MAAM5f,GAAG,GAAGK,EAAE,CAACjP,GAAD,EAAM2O,UAAN,EAAmBsC,KAAD,IAAiB;AAC/C,UAAA,IAAI+c,SAAJ,EAAe;YACbpf,GAAG,EAAA,CAAA;YACHmf,GAAI,CAACU,MAAL,CAAYzuB,GAAZ,CAAA,CAAA;AACD,WAHD,MAGO;YACLjB,QAAQ,CAACkS,KAAD,CAAR,CAAA;AACD,WAAA;AACF,SAPa,CAAd,CAAA;QAQA8c,GAAI,CAAChd,GAAL,CAAS/Q,GAAT,EAAc,CAAC2O,UAAD,EAAaC,GAAb,CAAd,CAAA,CAAA;AACD,OAvBG,CADF,CAAJ,CAAA;AA0BD,KAAA;GA5CH,CAAA;;AA+CA,EAAA,IAAIkf,kBAAJ,EAAwB;IACtBC,GAAG,GAAG,IAAIW,OAAJ,EAAN,CAAA;IACAR,cAAc,EAAA,CAAA;AACf,GAAA;;AAED,EAAA,OAAO,CAACD,OAAD,EAAUC,cAAV,CAAP,CAAA;AACD,CA/DD,CAAA;;AAyEO,MAAMS,iBAAiB,GAAG,CAC/BnuB,MAD+B,EAE/BouB,iBAF+B,EAG/B7vB,QAH+B,EAI/BxD,OAJ+B,KAKhB;EACf,IAAIszB,WAAW,GAAG,KAAlB,CAAA;EACA,MAAM;IACJC,WADI;IAEJC,wBAFI;IAGJC,mBAHI;IAIJC,qBAJI;IAKJC,mBALI;AAMJC,IAAAA,oBAAAA;GACG5zB,GAAAA,OAAgE,IAAI,EAPzE,CAAA;EAQA,MAAM,CAAC6zB,yBAAD,EAA4BC,gCAA5B,CAAA,GAAgExB,wBAAwB,CAC5FrtB,MAD4F,EAE5F8I,QAAQ,CACN,MAAK;AACH,IAAA,IAAIulB,WAAJ,EAAiB;MACd9vB,QAAuC,CAAC,IAAD,CAAvC,CAAA;AACF,KAAA;AACF,GALK,EAMN;AAAE6K,IAAAA,QAAQ,EAAE,EAAZ;AAAgBC,IAAAA,SAAS,EAAE,EAAA;GANrB,CAFoF,EAU5FmlB,mBAV4F,CAA9F,CAAA;AAcA,EAAA,MAAMM,eAAe,GAAGR,WAAW,IAAI,EAAvC,CAAA;AACA,EAAA,MAAMS,4BAA4B,GAAGR,wBAAwB,IAAI,EAAjE,CAAA;AACA,EAAA,MAAMS,kBAAkB,GAAGF,eAAe,CAACta,MAAhB,CAAuBua,4BAAvB,CAA3B,CAAA;;EACA,MAAME,gBAAgB,GAAIC,SAAD,IAAgC;AACvD,IAAA,MAAMC,kBAAkB,GAAGT,mBAAmB,IAAI7lB,IAAlD,CAAA;AACA,IAAA,MAAMumB,mBAAmB,GAAGT,oBAAoB,IAAI9lB,IAApD,CAAA;IACA,MAAMwmB,kBAAkB,GAAa,EAArC,CAAA;IACA,MAAMC,eAAe,GAAW,EAAhC,CAAA;IACA,IAAIC,kBAAkB,GAAG,KAAzB,CAAA;IACA,IAAIC,cAAc,GAAG,KAArB,CAAA;IACA,IAAIC,gBAAgB,GAAG,KAAvB,CAAA;AACApxB,IAAAA,IAAI,CAAC6wB,SAAD,EAAaQ,QAAD,IAAa;MAC3B,MAAM;QAAEC,aAAF;AAAiB3vB,QAAAA,MAAM,EAAE4vB,cAAzB;QAAyCnzB,IAAzC;QAA+CozB,QAA/C;AAAyDC,QAAAA,UAAAA;AAAzD,OAAA,GAAwEJ,QAA9E,CAAA;AACA,MAAA,MAAMK,gBAAgB,GAAGtzB,IAAI,KAAK,YAAlC,CAAA;AACA,MAAA,MAAMuzB,eAAe,GAAGvzB,IAAI,KAAK,WAAjC,CAAA;AACA,MAAA,MAAMwzB,sBAAsB,GAAGjwB,MAAM,KAAK4vB,cAA1C,CAAA;AACA,MAAA,MAAMM,cAAc,GAClBH,gBAAgB,IAAIjzB,QAAQ,CAAC6yB,aAAD,CAA5B,GACI1uB,IAAI,CAAC2uB,cAAD,EAAgCD,aAAhC,CADR,GAEI,CAHN,CAAA;MAIA,MAAMQ,gBAAgB,GAAGD,cAAc,KAAK,CAAnB,IAAwBL,QAAQ,KAAKK,cAA9D,CAAA;AACA,MAAA,MAAME,wBAAwB,GAC5B1xB,OAAO,CAACqwB,4BAAD,EAA+BY,aAA/B,CAAP,GAAuD,CAAC,CAAxD,IAA6DQ,gBAD/D,CAAA;;AAIA,MAAA,IAAI/B,iBAAiB,IAAI,CAAC6B,sBAA1B,EAAkD;QAChD,MAAMI,kBAAkB,GAAG,CAACN,gBAA5B,CAAA;AACA,QAAA,MAAMO,kBAAkB,GAAGP,gBAAgB,IAAIK,wBAA/C,CAAA;QACA,MAAMG,cAAc,GAClBD,kBAAkB,IAAI7B,qBAAtB,IAA+C/rB,EAAE,CAACktB,cAAD,EAAiBnB,qBAAjB,CADnD,CAAA;AAEA,QAAA,MAAM+B,aAAa,GAAGD,cAAc,GAChC,CAACpB,kBAAkB,CAACS,cAAD,EAAiBD,aAAjB,EAAiCE,QAAjC,EAA2CK,cAA3C,CADa,GAEhCG,kBAAkB,IAAIC,kBAF1B,CAAA;AAGA,QAAA,MAAMG,mBAAmB,GACvBD,aAAa,IAAI,CAACpB,mBAAmB,CAACM,QAAD,EAAW,CAAC,CAACa,cAAb,EAA6BvwB,MAA7B,EAAqCjF,OAArC,CADvC,CAAA;AAGA+D,QAAAA,IAAI,CAACwwB,eAAD,EAAkBQ,UAAlB,CAAJ,CAAA;QAEAN,cAAc,GAAGA,cAAc,IAAIiB,mBAAnC,CAAA;QACAhB,gBAAgB,GAAGA,gBAAgB,IAAIO,eAAvC,CAAA;AACD,OAAA;;AAED,MAAA,IACE,CAAC5B,iBAAD,IACA6B,sBADA,IAEAE,gBAFA,IAGA,CAAChB,kBAAkB,CAACS,cAAD,EAAiBD,aAAjB,EAAiCE,QAAjC,EAA2CK,cAA3C,CAJrB,EAKE;AACApxB,QAAAA,IAAI,CAACuwB,kBAAD,EAAqBM,aAArB,CAAJ,CAAA;QACAJ,kBAAkB,GAAGA,kBAAkB,IAAIa,wBAA3C,CAAA;AACD,OAAA;AACF,KAxCG,CAAJ,CAAA;;AA0CA,IAAA,IAAIX,gBAAgB,IAAI,CAAChwB,YAAY,CAAC6vB,eAAD,CAArC,EAAwD;MAEtDT,gCAAgC,CAAEzsB,QAAD,IAC/BktB,eAAe,CAACzjB,MAAhB,CAA+B,CAAClN,GAAD,EAAM2F,IAAN,KAAc;QAC3CxF,IAAI,CAACH,GAAD,EAAMwD,IAAI,CAACC,QAAD,EAAWkC,IAAX,CAAV,CAAJ,CAAA;AACA,QAAA,OAAO5B,EAAE,CAAC4B,IAAD,EAAOlC,QAAP,CAAF,GAAqBtD,IAAI,CAACH,GAAD,EAAM2F,IAAN,CAAzB,GAAuC3F,GAA9C,CAAA;OAFF,EAGG,EAHH,CAD8B,CAAhC,CAAA;AAMD,KAAA;;AAED,IAAA,IAAIyvB,iBAAJ,EAAuB;AACrBoB,MAAAA,cAAc,IAAKjxB,QAAuC,CAAC,KAAD,CAA1D,CAAA;KADF,MAEO,IAAI,CAACkB,YAAY,CAAC4vB,kBAAD,CAAb,IAAqCE,kBAAzC,EAA6D;AACjEhxB,MAAAA,QAAsC,CAAC8wB,kBAAD,EAAqBE,kBAArB,CAAtC,CAAA;AACF,KAAA;GAhEH,CAAA;;AAkEA,EAAA,MAAMmB,gBAAgB,GAAqB,IAAIhqB,2BAAJ,CAAiCuoB,gBAAjC,CAA3C,CAAA;AAGAyB,EAAAA,gBAAgB,CAACvF,OAAjB,CAAyBnrB,MAAzB,EAAiC;AAC/BsT,IAAAA,UAAU,EAAE,IADmB;AAE/Bqd,IAAAA,iBAAiB,EAAE,IAFY;AAG/BC,IAAAA,eAAe,EAAE5B,kBAHc;AAI/B6B,IAAAA,OAAO,EAAEzC,iBAJsB;AAK/B0C,IAAAA,SAAS,EAAE1C,iBALoB;AAM/B2C,IAAAA,aAAa,EAAE3C,iBAAAA;GANjB,CAAA,CAAA;AAQAC,EAAAA,WAAW,GAAG,IAAd,CAAA;AAEA,EAAA,OAAO,CACL,MAAK;AACH,IAAA,IAAIA,WAAJ,EAAiB;MACfO,yBAAyB,EAAA,CAAA;AACzB8B,MAAAA,gBAAgB,CAACtF,UAAjB,EAAA,CAAA;AACAiD,MAAAA,WAAW,GAAG,KAAd,CAAA;AACD,KAAA;AACF,GAPI,EAQL,MAAK;AACH,IAAA,IAAIA,WAAJ,EAAiB;AACfY,MAAAA,gBAAgB,CAACyB,gBAAgB,CAACM,WAAjB,EAAD,CAAhB,CAAA;AACD,KAAA;AACF,GAZI,CAAP,CAAA;AAcD,CA7HM;;ACtGP,MAAMC,YAAY,GAAO,CAAA1f,CAAAA,EAAAA,kBAAzB,CAAA,CAAA,CAAA;AAIA,MAAM2f,gBAAgB,GAAO,CAAArf,CAAAA,EAAAA,kBAA7B,CAAA,CAAA;AACA,MAAMsf,uBAAuB,GAAG,CAAC,UAAD,CAAhC,CAAA;AACA,MAAMC,8BAA8B,GAAG,CAAC,MAAD,EAAS,MAAT,EAAiB,MAAjB,CAAvC,CAAA;AACA,MAAMC,sBAAsB,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,OAAhB,EAAyB,MAAzB,CAA/B,CAAA;AAEO,MAAMC,6BAA6B,GAAG,CAC3CpT,sBAD2C,EAE3ChN,KAF2C,EAG3CqgB,oBAH2C,KAMhB;AAC3B,EAAA,IAAIC,eAAJ,CAAA;AACA,EAAA,IAAIC,gBAAJ,CAAA;AACA,EAAA,IAAIC,uBAAJ,CAAA;EACA,MAAM,GAAG9S,QAAH,CAAA,GAAe1N,KAArB,CAAA;EACA,MAAM;IACJyG,KADI;IAEJC,SAFI;IAGJE,QAHI;IAIJkF,WAJI;IAKJG,iBALI;IAMJC,iBANI;AAOJE,IAAAA,uBAAAA;AAPI,GAAA,GAQFY,sBARJ,CAAA;EASA,MAAM;IAAErF,uBAAF;AAA2BG,IAAAA,YAAAA;AAA3B,GAAA,GAA4CuB,cAAc,EAAhE,CAAA;AAEA,EAAA,MAAM,CAACoX,sBAAD,CAA2B72B,GAAAA,WAAW,CAC1C;AACEI,IAAAA,MAAM,EAAEkN,OADV;AAEEnN,IAAAA,aAAa,EAAE;AAAE0R,MAAAA,CAAC,EAAE,CAAL;AAAQC,MAAAA,CAAC,EAAE,CAAA;AAAX,KAAA;AAFjB,GAD0C,EAK1C,MAAK;AACH,IAAA,MAAM/K,GAAG,GAAGub,iBAAiB,CAACnL,wBAAD,EAA2BP,4BAA3B,CAA7B,CAAA;;AACA7P,IAAAA,GAAG,IAAIyb,uBAAuB,CAACrL,wBAAD,EAA2BP,4BAA3B,CAA9B,CAAA;AAEA,IAAA,MAAMkgB,aAAa,GAAGtkB,UAAU,CAACwK,QAAD,CAAhC,CAAA;AACA,IAAA,MAAM+Z,cAAc,GAAGvkB,UAAU,CAACsK,SAAD,CAAjC,CAAA;AACA,IAAA,MAAMka,UAAU,GAAGrkB,cAAc,CAACmK,SAAD,CAAjC,CAAA;IAEA/V,GAAG,IAAIyb,uBAAuB,CAACrL,wBAAD,EAA2BP,4BAA3B,EAAyD,IAAzD,CAA9B,CAAA;IACA,OAAO;MACL/E,CAAC,EAAEklB,cAAc,CAACllB,CAAf,GAAmBilB,aAAa,CAACjlB,CAAjC,GAAqCmlB,UAAU,CAACnlB,CAD9C;MAELC,CAAC,EAAEilB,cAAc,CAACjlB,CAAf,GAAmBglB,aAAa,CAAChlB,CAAjC,GAAqCklB,UAAU,CAACllB,CAAAA;KAFrD,CAAA;AAID,GAlByC,CAA5C,CAAA;EAoBA,MAAMmlB,2BAA2B,GAAG/U,WAAW,GAC3CoU,8BAD2C,GAE3CC,sBAAsB,CAAC7c,MAAvB,CAA8B4c,8BAA9B,CAFJ,CAAA;AAGA,EAAA,MAAMY,oDAAoD,GAAGlpB,QAAQ,CAACyoB,oBAAD,EAAuB;IAC1FnoB,QAAQ,EAAE,MAAMooB,eAD0E;IAE1FnoB,SAAS,EAAE,MAAMooB,gBAFyE;;AAG1FnoB,IAAAA,YAAY,CAAC2oB,IAAD,EAAOx2B,IAAP,EAAW;MACrB,MAAM,CAACy2B,OAAD,CAAA,GAAYD,IAAlB,CAAA;MACA,MAAM,CAACE,OAAD,CAAA,GAAY12B,IAAlB,CAAA;AACA,MAAA,OAAO,CACLgD,IAAI,CAACyzB,OAAD,CAAJ,CACG1d,MADH,CACU/V,IAAI,CAAC0zB,OAAD,CADd,EAEGtmB,MAFH,CAEU,CAACvP,GAAD,EAAMkB,GAAN,KAAa;AACnBlB,QAAAA,GAAG,CAACkB,GAAD,CAAH,GAAW00B,OAAO,CAAC10B,GAAD,CAAP,IAAgB20B,OAAO,CAAC30B,GAAD,CAAlC,CAAA;AACA,QAAA,OAAOlB,GAAP,CAAA;OAJJ,EAKK,EALL,CADK,CAAP,CAAA;AAQD,KAAA;;AAdyF,GAAvB,CAArE,CAAA;;EAiBA,MAAM81B,2BAA2B,GAAI9e,UAAD,IAA0B;AAC5DjV,IAAAA,IAAI,CAACiV,UAAU,IAAI6d,uBAAf,EAAyCkB,SAAD,IAAc;MACxD,IAAI3zB,OAAO,CAACyyB,uBAAD,EAA0BkB,SAA1B,CAAP,GAA8C,CAAC,CAAnD,EAAsD;AACpD,QAAA,MAAMC,QAAQ,GAAGrxB,IAAI,CAAC0W,KAAD,EAAQ0a,SAAR,CAArB,CAAA;;AACA,QAAA,IAAIv1B,QAAQ,CAACw1B,QAAD,CAAZ,EAAwB;AACtBrxB,UAAAA,IAAI,CAAC2W,SAAD,EAAYya,SAAZ,EAAuBC,QAAvB,CAAJ,CAAA;AACD,SAFD,MAEO;AACLxwB,UAAAA,UAAU,CAAC8V,SAAD,EAAYya,SAAZ,CAAV,CAAA;AACD,SAAA;AACF,OAAA;AACF,KATG,CAAJ,CAAA;GADF,CAAA;;EAYA,MAAME,gBAAgB,GAAIC,oBAAD,IAA+C;AACtE,IAAA,MAAM,CAACxQ,eAAD,EAAkBzD,sBAAlB,IAA4CiU,oBAAlD,CAAA;AACA5T,IAAAA,QAAQ,CAAC;AAAEP,MAAAA,gBAAgB,EAAE2D,eAAAA;AAApB,KAAD,CAAR,CAAA;AACAuP,IAAAA,oBAAoB,CAAC;AAAEjT,MAAAA,uBAAuB,EAAEC,sBAAAA;AAA3B,KAAD,CAApB,CAAA;GAHF,CAAA;;EAKA,MAAM4O,aAAa,GAAG,CAAC;IACrB1O,YADqB;IAErBsM,oBAFqB;AAGrBvB,IAAAA,OAAAA;AAHqB,GAAD,KAIW;IAC/B,MAAMiJ,QAAQ,GACZ,CAAChU,YAAD,IAAiB+K,OAAjB,GACI+H,oBADJ,GAEIS,oDAHN,CAAA;IAKA,IAAIU,gBAAgB,GAAG,KAAvB,CAAA;;AACA,IAAA,IAAI3H,oBAAJ,EAA0B;AACxB,MAAA,MAAM,CAACvG,cAAD,EAAiB6H,qBAAjB,IAA0CtB,oBAAhD,CAAA;AACA2H,MAAAA,gBAAgB,GAAGrG,qBAAnB,CAAA;AACAzN,MAAAA,QAAQ,CAAC;AAAEM,QAAAA,eAAe,EAAEsF,cAAAA;AAAnB,OAAD,CAAR,CAAA;AACD,KAAA;;AAEDiO,IAAAA,QAAQ,CAAC;MAAEhU,YAAF;AAAgBU,MAAAA,iBAAiB,EAAEuT,gBAAAA;AAAnC,KAAD,CAAR,CAAA;GAjBF,CAAA;;EAmBA,MAAMC,iBAAiB,GAAIC,yBAAD,IAAuC;AAC/D,IAAA,MAAM,GAAGC,kBAAH,CAAyBlB,GAAAA,sBAAsB,EAArD,CAAA;AAEA,IAAA,MAAMc,QAAQ,GAAGG,yBAAyB,GACtCrB,oBADsC,GAEtCS,oDAFJ,CAAA;;AAIA,IAAA,IAAIa,kBAAJ,EAAwB;AACtBJ,MAAAA,QAAQ,CAAC;AACP/T,QAAAA,gBAAgB,EAAE,IAAA;AADX,OAAD,CAAR,CAAA;AAGD,KAAA;GAXH,CAAA;;AAaA,EAAA,MAAMoU,cAAc,GAAG,CAACzD,kBAAD,EAA+BE,kBAA/B,KAA8D;AACnF,IAAA,IAAIA,kBAAJ,EAAwB;AACtByC,MAAAA,oDAAoD,CAAC;AACnD3L,QAAAA,aAAa,EAAE,IAAA;AADoC,OAAD,CAApD,CAAA;AAGD,KAJD,MAIO,IAAI,CAAClJ,iBAAL,EAAwB;MAC7BiV,2BAA2B,CAAC/C,kBAAD,CAA3B,CAAA;AACD,KAAA;GAPH,CAAA;;AAUA,EAAA,MAAM0D,sBAAsB,GAC1B,CAACjb,QAAQ,IAAI,CAACkB,YAAd,KAA+B0T,qBAAqB,CAAC/U,KAAD,EAAQ4a,gBAAR,CADtD,CAAA;EAEA,MAAMS,mBAAmB,GACvB,CAAC7V,iBAAD,IACAiM,kBAAkB,CAACzR,KAAD,EAAQwV,aAAR,EAAuB;AACvC3D,IAAAA,OAAO,EAAE,IAD8B;AAEvCF,IAAAA,UAAU,EAAE,CAACzQ,uBAAAA;AAF0B,GAAvB,CAFpB,CAAA;EAMA,MAAM,CAACoa,2BAAD,CAAA,GAAgC9E,iBAAiB,CAACxW,KAAD,EAAQ,KAAR,EAAemb,cAAf,EAA+B;AACpFvE,IAAAA,wBAAwB,EAAE8C,sBAD0D;AAEpF/C,IAAAA,WAAW,EAAE+C,sBAAsB,CAAC7c,MAAvB,CAA8B2c,uBAA9B,CAAA;AAFuE,GAA/B,CAAvD,CAAA;AAKA,EAAA,MAAM+B,8BAA8B,GAClC/V,iBAAiB,IACjB,IAAIvW,yBAAJ,CAA+BumB,aAAa,CAACvlB,IAAd,CAAmB,CAAnB,EAAsB;AAAE6W,IAAAA,YAAY,EAAE,IAAA;AAAhB,GAAtB,CAA/B,CAFF,CAAA;AAIAyU,EAAAA,8BAA8B,IAAIA,8BAA8B,CAAC/H,OAA/B,CAAuCxT,KAAvC,CAAlC,CAAA;EACAya,2BAA2B,EAAA,CAAA;EAE3B,OAAO,CACJpT,WAAD,IAAgB;AACd,IAAA,MAAM,CAACzL,cAAD,CAAA,GAAmByL,WAAW,CAAkB,yBAAlB,CAApC,CAAA;IACA,MAAM,CAAC1L,UAAD,EAAa6f,iBAAb,IAAkCnU,WAAW,CAAkB,qBAAlB,CAAnD,CAAA;IACA,MAAM,CAAC3L,aAAD,EAAgB+f,oBAAhB,IAAwCpU,WAAW,CACvD,wBADuD,CAAzD,CAAA;IAGA,MAAM,CAACqU,aAAD,EAAgBC,eAAhB,IAAmCtU,WAAW,CAClD,mBADkD,CAApD,CAAA;AAGA,IAAA,MAAMuU,6BAA6B,GAAGH,oBAAoB,IAAID,iBAA9D,CAAA;;AACA,IAAA,MAAMK,yBAAyB,GAAI9D,QAAD,IAChC1yB,UAAU,CAACuW,cAAD,CAAV,IAA8BA,cAAc,CAACmc,QAAD,CAD9C,CAAA;;AAGA,IAAA,IAAI6D,6BAAJ,EAAmC;AACjC,MAAA,IAAI7B,uBAAJ,EAA6B;QAC3BA,uBAAuB,CAAC,CAAD,CAAvB,EAAA,CAAA;QACAA,uBAAuB,CAAC,CAAD,CAAvB,EAAA,CAAA;AACD,OAAA;;MACDA,uBAAuB,GAAGvD,iBAAiB,CACzCrW,QAAQ,IAAIF,SAD6B,EAEzC,IAFyC,EAGzC+a,iBAHyC,EAIzC;QACEpE,wBAAwB,EAAEwD,2BAA2B,CAACvd,MAA5B,CAAmClB,UAAU,IAAI,EAAjD,CAD5B;QAEEgb,WAAW,EAAEyD,2BAA2B,CAACvd,MAA5B,CAAmClB,UAAU,IAAI,EAAjD,CAFf;AAGEkb,QAAAA,mBAAmB,EAAEnb,aAHvB;AAIEob,QAAAA,qBAAqB,EAAEwC,YAJzB;AAKEtC,QAAAA,oBAAoB,EAAE,CAACe,QAAD,EAAWa,cAAX,KAA6B;UACjD,MAAM;YAAEvwB,MAAF;AAAU2vB,YAAAA,aAAAA;AAAV,WAAA,GAA4BD,QAAlC,CAAA;AACA,UAAA,MAAM+D,MAAM,GACV,CAAClD,cAAD,IAAmBZ,aAAnB,GACIxsB,WAAW,CAACnD,MAAD,EAAoBixB,YAApB,EAAkCC,gBAAlC,CADf,GAEI,KAHN,CAAA;AAIA,UAAA,OAAOuC,MAAM,IAAI,CAAC,CAACD,yBAAyB,CAAC9D,QAAD,CAA5C,CAAA;AACD,SAAA;AAZH,OAJyC,CAA3C,CAAA;AAmBD,KAAA;;AAED,IAAA,IAAI4D,eAAJ,EAAqB;AACnBtB,MAAAA,oDAAoD,CAAC1nB,MAArD,EAAA,CAAA;;AACA,MAAA,IAAIrN,OAAO,CAACo2B,aAAD,CAAX,EAA4B;AAC1B,QAAA,MAAMK,OAAO,GAAGL,aAAa,CAAC,CAAD,CAA7B,CAAA;AACA,QAAA,MAAMM,OAAO,GAAGN,aAAa,CAAC,CAAD,CAA7B,CAAA;QACA7B,eAAe,GAAG30B,QAAQ,CAAC62B,OAAD,CAAR,GAAoBA,OAApB,GAA8B,KAAhD,CAAA;QACAjC,gBAAgB,GAAG50B,QAAQ,CAAC82B,OAAD,CAAR,GAAoBA,OAApB,GAA8B,KAAjD,CAAA;AACD,OALD,MAKO,IAAI92B,QAAQ,CAACw2B,aAAD,CAAZ,EAA6B;AAClC7B,QAAAA,eAAe,GAAG6B,aAAlB,CAAA;AACA5B,QAAAA,gBAAgB,GAAG,KAAnB,CAAA;AACD,OAHM,MAGA;AACLD,QAAAA,eAAe,GAAG,KAAlB,CAAA;AACAC,QAAAA,gBAAgB,GAAG,KAAnB,CAAA;AACD,OAAA;AACF,KAAA;AACF,GAvDI,EAwDL,MAAK;AACHC,IAAAA,uBAAuB,IAAIA,uBAAuB,CAAC,CAAD,CAAvB,EAA3B,CAAA;IACAqB,sBAAsB,IAAIA,sBAAsB,EAAhD,CAAA;IACAC,mBAAmB,IAAIA,mBAAmB,EAA1C,CAAA;AACAE,IAAAA,8BAA8B,IAAIA,8BAA8B,CAAC9H,UAA/B,EAAlC,CAAA;IACA6H,2BAA2B,EAAA,CAAA;AAC5B,GA9DI,CAAP,CAAA;AAgED,CA7MM;;AC1BP,MAAMW,gCAAgC,GAAwB;AAC5D/b,EAAAA,QAAQ,EAAE;AACRtL,IAAAA,CAAC,EAAE,CADK;AAERC,IAAAA,CAAC,EAAE,CAFK;AAGRzE,IAAAA,CAAC,EAAE,CAHK;AAIR0E,IAAAA,CAAC,EAAE,CAAA;GALuD;AAO5D2T,EAAAA,gBAAgB,EAAE,KAP0C;AAQ5DC,EAAAA,qBAAqB,EAAE;AACrBV,IAAAA,WAAW,EAAE,CADQ;AAErBC,IAAAA,YAAY,EAAE,CAFO;AAGrBC,IAAAA,UAAU,EAAE,CAHS;AAIrBG,IAAAA,UAAU,EAAE,CAJS;AAKrBC,IAAAA,YAAY,EAAE,CALO;AAMrBC,IAAAA,aAAa,EAAE,CANM;AAOrBC,IAAAA,WAAW,EAAE,CAAA;GAf6C;AAiB5DyH,EAAAA,eAAe,EAAE;AACfrY,IAAAA,CAAC,EAAE,CADY;AAEfC,IAAAA,CAAC,EAAE,CAAA;GAnBuD;AAqB5DmU,EAAAA,cAAc,EAAE;AACdpU,IAAAA,CAAC,EAAE,QADW;AAEdC,IAAAA,CAAC,EAAE,QAAA;GAvBuD;AAyB5DqY,EAAAA,YAAY,EAAE;AACZtY,IAAAA,CAAC,EAAE,KADS;AAEZC,IAAAA,CAAC,EAAE,KAAA;GA3BuD;AA6B5D6O,EAAAA,gBAAgB,EAAE,KA7B0C;AA8B5Da,EAAAA,eAAe,EAAE,KAAA;AA9B2C,CAA9D,CAAA;AAiCO,MAAM2U,oBAAoB,GAAG,CAClC7zB,MADkC,EAElCjF,OAFkC,KAGuB;AACzD,EAAA,MAAM+4B,oBAAoB,GAAGhjB,iBAAiB,CAAC/V,OAAD,EAAU,EAAV,CAA9C,CAAA;AACA,EAAA,MAAMmW,KAAK,GAAGF,WAAW,CAAC4iB,gCAAD,CAAzB,CAAA;AACA,EAAA,MAAMG,kBAAkB,GAAG,IAAI10B,GAAJ,EAA3B,CAAA;EACA,MAAM,CAAC8e,QAAD,CAAA,GAAajN,KAAnB,CAAA;;EACA,MAAM8iB,qBAAqB,GAAG,CAC5B5V,WAD4B,EAE5BrN,cAF4B,EAG5BvV,KAH4B,KAI1B;AACFkE,IAAAA,OAAO,CAACq0B,kBAAD,EAAqB,CAAC3V,WAAD,EAAcrN,cAAc,IAAI,EAAhC,EAAoC,CAAC,CAACvV,KAAtC,CAArB,CAAP,CAAA;GALF,CAAA;;EAQA,MAAM,CAACqyB,QAAD,EAAWoG,eAAX,IAA8B/Y,4BAA4B,CAAClb,MAAD,CAAhE,CAAA;AACA,EAAA,MAAMk0B,eAAe,GAAG3L,0BAA0B,CAACsF,QAAD,EAAW3c,KAAX,CAAlD,CAAA;AACA,EAAA,MAAM,CAACijB,eAAD,EAAkBC,gBAAlB,CAAsC9C,GAAAA,6BAA6B,CACvEzD,QADuE,EAEvE3c,KAFuE,EAGtEkN,WAAD,IAAgB;AACd4V,IAAAA,qBAAqB,CAACE,eAAe,CAACJ,oBAAD,EAAuB1V,WAAvB,CAAhB,CAArB,CAAA;AACD,GALsE,CAAzE,CAAA;AAQA,EAAA,MAAMiW,mBAAmB,GAAGlW,QAAQ,CAACvW,IAAT,CAAc,CAAd,CAA5B,CAAA;;AAEAysB,EAAAA,mBAAmB,CAACC,qBAApB,GAA6CjmB,QAAD,IAAa;IACvD0lB,kBAAkB,CAACzyB,GAAnB,CAAuB+M,QAAvB,CAAA,CAAA;GADF,CAAA;;EAGAgmB,mBAAmB,CAACE,SAApB,GAAgC1G,QAAhC,CAAA;AAEA,EAAA,OAAO,CACL,CAAC9c,cAAD,EAAiBvV,KAAjB,KAA2B;IACzB,MAAMwjB,WAAW,GAAGlO,iBAAiB,CAAC/V,OAAD,EAAUgW,cAAV,EAA0BvV,KAA1B,CAArC,CAAA;IACA24B,eAAe,CAACnV,WAAD,CAAf,CAAA;IACAgV,qBAAqB,CAACE,eAAe,CAAClV,WAAD,EAAc,EAAd,EAAkBxjB,KAAlB,CAAhB,CAArB,CAAA;GAJG,EAML64B,mBANK,EAOL,MAAK;AACHN,IAAAA,kBAAkB,CAAC1jB,KAAnB,EAAA,CAAA;IACA+jB,gBAAgB,EAAA,CAAA;IAChBH,eAAe,EAAA,CAAA;AAChB,GAXI,CAAP,CAAA;AAaD,CA9CM;;AC1CP,MAAMO,oBAAoB,GAAIC,kBAAD,IAAmD;EAC9E,MAAMC,SAAS,GAAG3vB,SAAS,CAAC,GAAG0N,kBAAsB,CAAA,CAAA,EAAAgiB,kBAAoB,CAAA,CAA9C,CAA3B,CAAA;AACA,EAAA,MAAME,KAAK,GAAG5vB,SAAS,CAAC6N,uBAAD,CAAvB,CAAA;AACA,EAAA,MAAMgiB,MAAM,GAAG7vB,SAAS,CAAC8N,wBAAD,CAAxB,CAAA;AAEAxO,EAAAA,cAAc,CAACqwB,SAAD,EAAYC,KAAZ,CAAd,CAAA;AACAtwB,EAAAA,cAAc,CAACswB,KAAD,EAAQC,MAAR,CAAd,CAAA;EAEA,OAAO;AACLC,IAAAA,UAAU,EAAEH,SADP;AAELI,IAAAA,MAAM,EAAEH,KAFH;AAGLI,IAAAA,OAAO,EAAEH,MAAAA;GAHX,CAAA;AAKD,CAbD,CAAA;;AAeO,MAAMI,6BAA6B,GAAG,CAC3Ch1B,MAD2C,EAE3Cke,sBAF2C,KAGhB;EAC3B,MAAM;AAAEhF,IAAAA,0BAAAA;AAAF,GAAA,GAAiCqB,cAAc,EAArD,CAAA;;EACA,MAAM;AAAExC,IAAAA,eAAe,EAAEkd,wBAAAA;AAAnB,GAAA,GACJ/b,0BAA0B,EAD5B,CAAA;;EAEA,MAAM;IAAEqD,OAAF;IAAW5E,KAAX;IAAkBC,SAAlB;AAA6BsF,IAAAA,YAAAA;AAA7B,GAAA,GAA8CgB,sBAApD,CAAA;AACA,EAAA,MAAMgX,2BAA2B,GAC/B,CAAChY,YAAD,IAAkBld,MAAmC,CAACm1B,cADxD,CAAA;AAEA,EAAA,MAAMC,iCAAiC,GAAGp4B,UAAU,CAACk4B,2BAAD,CAAV,GACtCA,2BAA2B,CAAC3Y,OAAD,EAAU5E,KAAV,EAAiBC,SAAjB,CADW,GAEtCsd,2BAFJ,CAAA;EAGA,MAAMG,sBAAsB,GAC1BD,iCAAiC,KAChCp4B,UAAU,CAACi4B,wBAAD,CAAV,GACGA,wBAAwB,CAAC1Y,OAAD,EAAU5E,KAAV,EAAiBC,SAAjB,CAD3B,GAEGqd,wBAH6B,CAAjC,IAIAtd,KALF,CAAA;AAOA,EAAA,MAAM2d,4BAA4B,GAAGd,oBAAoB,CAAC9hB,4BAAD,CAAzD,CAAA;AACA,EAAA,MAAM6iB,0BAA0B,GAAGf,oBAAoB,CAAC7hB,0BAAD,CAAvD,CAAA;EAEA,MAAM;AAAEkiB,IAAAA,UAAU,EAAEW,mBAAAA;AAAd,GAAA,GAAsCF,4BAA5C,CAAA;EACA,MAAM;AAAET,IAAAA,UAAU,EAAEY,iBAAAA;AAAd,GAAA,GAAoCF,0BAA1C,CAAA;AAEAlxB,EAAAA,cAAc,CAACgxB,sBAAD,EAAyBG,mBAAzB,CAAd,CAAA;AACAnxB,EAAAA,cAAc,CAACgxB,sBAAD,EAAyBI,iBAAzB,CAAd,CAAA;AAEA,EAAA,OAAO,CACL;AACEC,IAAAA,6BAA6B,EAAEJ,4BADjC;AAEEK,IAAAA,2BAA2B,EAAEJ,0BAAAA;AAF/B,GADK,EAKL5wB,cAAc,CAACiD,IAAf,CAAoB,CAApB,EAAuB,CAAC4tB,mBAAD,EAAsBC,iBAAtB,CAAvB,CALK,CAAP,CAAA;AAOD,CApCM;;ACvBA,MAAMG,qBAAqB,GAAG,CACnC51B,MADmC,EAEnCjF,OAFmC,EAGnCmjB,sBAHmC,KAIwB;AAC3D,EAAA,MAAMhN,KAAK,GAAGF,WAAW,CAAC,EAAD,CAAzB,CAAA;EACA,MAAM,CAACmN,QAAD,CAAA,GAAajN,KAAnB,CAAA;EAEA,MAAM,CAAC2c,QAAD,EAAWoG,eAAX,CAAA,GAA8Be,6BAA6B,CAACh1B,MAAD,EAASke,sBAAT,CAAjE,CAAA;AAEA,EAAA,MAAM2X,oBAAoB,GAAG1X,QAAQ,CAACvW,IAAT,CAAc,CAAd,CAA7B,CAAA;EAEAiuB,oBAAoB,CAACtB,SAArB,GAAiC1G,QAAjC,CAAA;AAEA,EAAA,OAAO,CACL,CAAC9c,cAAD,EAAiBvV,KAAjB,KAA2B;IACzB,MAAMwjB,WAAW,GAAGlO,iBAAiB,CAAC/V,OAAD,EAAUgW,cAAV,EAA0BvV,KAA1B,CAArC,CAAA;IAEAs6B,OAAO,CAACC,GAAR,CAAY/W,WAAZ,CAAA,CAAA;GAJG,EAML6W,oBANK,EAOL,MAAK;IACH5B,eAAe,EAAA,CAAA;AAChB,GATI,CAAP,CAAA;AAWD,CAzBM;;ACTP,MAAM+B,cAAc,GAAqC,EAAzD,CAAA;AAEO,MAAMC,UAAU,GAAG,MAAMl2B,UAAU,CAAC,EAAD,EAAKi2B,cAAL,CAAnC,CAAA;AAEA,MAAME,SAAS,GAAIC,WAAD,IACvB93B,IAAI,CAAEpB,OAAO,CAACk5B,WAAD,CAAP,GAAuBA,WAAvB,GAAqC,CAACA,WAAD,CAAvC,EAAsEC,MAAD,IAAW;EAClFJ,cAAc,CAACI,MAAM,CAAC,CAAD,CAAP,CAAd,GAA4BA,MAAM,CAAC,CAAD,CAAlC,CAAA;AACD,CAFG,CADC;;;;;;;;;ACZP,EAAA,SAASC,QAAT,GAAoB;AAClBC,IAAAA,cAAA,GAAiBD,QAAQ,GAAGl6B,MAAM,CAACo6B,MAAP,GAAgBp6B,MAAM,CAACo6B,MAAP,CAAc3uB,IAAd,EAAhB,GAAuC,UAAU5H,MAAV,EAAkB;AACnF,MAAA,KAAK,IAAIxB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqL,SAAS,CAACxM,MAA9B,EAAsCmB,CAAC,EAAvC,EAA2C;AACzC,QAAA,IAAIF,MAAM,GAAGuL,SAAS,CAACrL,CAAD,CAAtB,CAAA;;AAEA,QAAA,KAAK,IAAIhB,GAAT,IAAgBc,MAAhB,EAAwB;AACtB,UAAA,IAAInC,MAAM,CAACC,SAAP,CAAiBF,cAAjB,CAAgCQ,IAAhC,CAAqC4B,MAArC,EAA6Cd,GAA7C,CAAJ,EAAuD;AACrDwC,YAAAA,MAAM,CAACxC,GAAD,CAAN,GAAcc,MAAM,CAACd,GAAD,CAApB,CAAA;AACD,WAAA;AACF,SAAA;AACF,OAAA;;AAED,MAAA,OAAOwC,MAAP,CAAA;AACD,KAZD,EAYGs2B,MAAA,CAAAE,OAAA,CAAAC,UAAA,GAA4B,IAZ/B,EAYqCH,MAAM,CAACE,OAAP,CAAe,SAAf,CAA4BF,GAAAA,MAAM,CAACE,OAZxE,CAAA;AAaA,IAAA,OAAOH,QAAQ,CAACn3B,KAAT,CAAe,IAAf,EAAqB2K,SAArB,CAAP,CAAA;AACD,GAAA;;EAEDysB,MAAA,CAAAE,OAAA,GAAiBH,QAAjB,EAA2BC,MAA4B,CAAAE,OAA5B,CAA4BC,UAA5B,GAA4B,IAAvD,EAA6DH,MAAM,CAACE,OAAP,CAAe,SAAf,CAAA,GAA4BF,MAAM,CAACE,OAAhG,CAAA;;;;;AC8CA,MAAME,wBAAwB,GAA8B,CAAC,QAAD,EAAW,SAAX,CAA5D,CAAA;AAOA,MAAMC,oBAAoB,GAAmC,CAC3D,SAD2D,EAE3D,QAF2D,EAG3D,QAH2D,EAI3D,OAJ2D,EAK3D,QAL2D,EAM3D,UAN2D,EAO3D,MAP2D,CAQ3D9qB,CAAAA,MAR2D,CAQpD,CAACzM,MAAD,EAASR,IAAT,KAAiB;AACxBQ,EAAAA,MAAM,CAACR,IAAD,CAAN,GAAe83B,wBAAwB,CAAC,CAAD,CAAxB,GAA8B93B,IAA9B,GAAqC83B,wBAAwB,CAAC,CAAD,CAA5E,CAAA;AACA,EAAA,OAAOt3B,MAAP,CAAA;AACD,CAX4D,EAW1D,EAX0D,CAA7D;;AC5DA,MAAMw3B,mBAAmB,GAAiCC,oBAAM,CAACC,MAAjE,CAAA;AACA,MAAMC,oBAAoB,GAAkCF,oBAAM,CAACG,OAAnE,CAAA;AACA,MAAMC,eAAe,GAAgD,CAACJ,oBAAM,CAAC93B,KAAR,EAAe83B,oBAAM,CAACK,IAAtB,CAArE,CAAA;AACA,MAAMC,qBAAqB,GACzB,sCADF,CAAA;AAEA,MAAMC,iCAAiC,GACrC,qBADF,CAAA;AAEA,MAAMC,+BAA+B,GACnC,wBADF,CAAA;CAGoD;AAElDlkB,EAAAA,eAAe,EAAE4jB,oBAFiC;AAGlD3jB,EAAAA,QAAQ,EAAE;AACRC,IAAAA,aAAa,EAAE4jB,eADP;AAER3jB,IAAAA,UAAU,EAAE2jB,eAFJ;AAGRnuB,IAAAA,QAAQ,EAAE,CAAC+tB,oBAAM,CAACC,MAAR,EAAgBD,oBAAM,CAAC93B,KAAvB,EAA8B83B,oBAAM,CAACK,IAArC,CAHF;IAIR3jB,cAAc,EAAE,CAACsjB,oBAAM,CAACS,QAAR,EAAkBT,oBAAM,CAACK,IAAzB,CAAA;GAPgC;AASlD1jB,EAAAA,QAAQ,EAAE;AACRjE,IAAAA,CAAC,EAAE4nB,qBADK;AAER3nB,IAAAA,CAAC,EAAE2nB,qBAAAA;GAX6C;AAalDvjB,EAAAA,UAAU,EAAE;AACVC,IAAAA,UAAU,EAAEujB,iCADF;AAEVtjB,IAAAA,QAAQ,EAAEujB,+BAFA;AAGVtjB,IAAAA,aAAa,EAAE6iB,mBAHL;AAIV5iB,IAAAA,UAAU,EAAE+iB,oBAJF;AAKV9iB,IAAAA,WAAW,EAAE8iB,oBALH;AAMV7iB,IAAAA,KAAK,EAAE6iB,oBAAAA;GAnByC;AA4BlDtjB,EAAAA,wBAAwB,EAAE;AACxBC,IAAAA,IAAI,EAAEqjB,oBADkB;AAExBpjB,IAAAA,UAAU,EAAEojB,oBAAAA;AAFY,GAAA;AA5BwB,GAApD;AAsCO,MAAMQ,2BAA2B,GAAG,6BAApC;;ACxDP,MAAMC,OAAO,GAAiB,IAAIn4B,GAAJ,EAA9B,CAAA;AACA,MAAMo4B,iBAAiB,GAAwC,IAAIvJ,OAAJ,EAA/D,CAAA;AAOO,MAAMwJ,WAAW,GAAG,CAAC13B,MAAD,EAAkB23B,UAAlB,KAAyD;AAClFF,EAAAA,iBAAiB,CAAClnB,GAAlB,CAAsBvQ,MAAtB,EAA8B23B,UAA9B,CAAA,CAAA;EACAH,OAAO,CAACl2B,GAAR,CAAYtB,MAAZ,CAAA,CAAA;AACD,CAHM,CAAA;AASA,MAAM43B,cAAc,GAAI53B,MAAD,IAA0B;EACtDy3B,iBAAiB,CAACxJ,MAAlB,CAAyBjuB,MAAzB,CAAA,CAAA;EACAw3B,OAAO,CAACvJ,MAAR,CAAejuB,MAAf,CAAA,CAAA;AACD,CAHM,CAAA;AASA,MAAM63B,WAAW,GAAI73B,MAAD,IACzBy3B,iBAAiB,CAACxpB,GAAlB,CAAsBjO,MAAtB,CADK;;AC6BA,MAAM83B,wBAAwB,GAAI/nB,qBAAD,IACtCD,sBAAsB,CAACC,qBAAD,CADjB;;ACkCA,MAAMgoB,iBAAiB,GAA4B,CACxD/3B,MADwD,EAExDjF,OAFwD,EAGxDi9B,cAHwD,KAInC;EACrB,MAAM;IACJ3e,kBADI;IAEJT,0BAFI;AAGJK,IAAAA,YAAY,EAAEgf,cAAAA;AAHV,GAAA,GAIF1d,cAAc,EAJlB,CAAA;EAKA,MAAM2d,OAAO,GAAGjC,UAAU,EAA1B,CAAA;EACA,MAAMkC,cAAc,GAAGr6B,aAAa,CAACkC,MAAD,CAAb,GAAwBA,MAAxB,GAAiCA,MAAM,CAACA,MAA/D,CAAA;AACA,EAAA,MAAMo4B,iBAAiB,GAAGP,WAAW,CAACM,cAAD,CAArC,CAAA;;AACA,EAAA,IAAIC,iBAAJ,EAAuB;AACrB,IAAA,OAAOA,iBAAP,CAAA;AACD,GAAA;;AAED,EAAA,MAAMC,uBAAuB,GAAGH,OAAO,CACrCX,2BADqC,CAAvC,CAAA;;EAGA,MAAMe,eAAe,GAAIjkB,UAAD,IAA2C;AACjE,IAAA,MAAMkkB,IAAI,GAAGlkB,UAAU,IAAI,EAA3B,CAAA;AACA,IAAA,MAAMmkB,QAAQ,GAAGH,uBAAuB,IAAIA,uBAAuB,CAACrlB,CAApE,CAAA;IACA,OAAOwlB,QAAQ,GAAGA,QAAQ,CAACD,IAAD,EAAO,IAAP,CAAX,GAA0BA,IAAzC,CAAA;GAHF,CAAA;;AAKA,EAAA,MAAME,cAAc,GAAsB14B,UAAU,CAClD,EADkD,EAElDsZ,kBAAkB,EAFgC,EAGlDif,eAAe,CAACv9B,OAAD,CAHmC,CAApD,CAAA;EAKA,MAAM,CAACuV,QAAD,EAAWJ,WAAX,EAAwBM,YAAxB,CAAwCsnB,GAAAA,wBAAwB,CAACE,cAAD,CAAtE,CAAA;;AAEA,EAAA,IACEpf,0BAA0B,CAACrJ,CAA3B,IACAqJ,0BAA0B,CAACpJ,CAD3B,IAEA,CAACipB,cAAc,CAAChlB,wBAAf,CAAwCE,UAH3C,EAIE;IACAnD,YAAY,CAAC,yBAAD,CAAZ,CAAA;AACD,GAAA;;AAED,EAAA,MAAM,CAAC0jB,eAAD,EAAkBwE,cAAlB,EAAkCC,gBAAlC,CAAsD9E,GAAAA,oBAAoB,CAC9E7zB,MAD8E,EAE9Ey4B,cAF8E,CAAhF,CAAA;AAIA,EAAA,MAAM,CAACG,gBAAD,GAAqBC,iBAArB,IAA0CjD,qBAAqB,CACnE51B,MADmE,EAEnEy4B,cAFmE,EAGnEC,cAAc,CAACnE,SAHoD,CAArE,CAAA;;AAMA,EAAA,MAAMv5B,MAAM,GAAG,CAAC+V,cAAD,EAA4CvV,KAA5C,KAA+D;AAC5E04B,IAAAA,eAAe,CAACnjB,cAAD,EAAiBvV,KAAjB,CAAf,CAAA;AACAo9B,IAAAA,gBAAgB,CAAC7nB,cAAD,EAAiBvV,KAAjB,CAAhB,CAAA;GAFF,CAAA;;AAKA,EAAA,MAAMs9B,iBAAiB,GAAGb,cAAc,CAACj9B,MAAM,CAAC4M,IAAP,CAAY,CAAZ,EAAe,EAAf,EAAmB,IAAnB,CAAD,CAAxC,CAAA;;EAEA8wB,cAAc,CAACpE,qBAAf,CAAqC,CAAClW,WAAD,EAAcrN,cAAd,EAA8BvV,KAA9B,KAAuC;IAC1E,MAAM;MACJijB,YADI;MAEJU,iBAFI;MAGJb,uBAHI;MAIJyJ,sBAJI;MAKJD,qBALI;MAMJpJ,gBANI;AAOJ2H,MAAAA,aAAAA;AAPI,KAAA,GAQFjI,WARJ,CAAA;IAUA5N,YAAY,CAAC,SAAD,EAAY;AACtB4N,MAAAA,WAAW,EAAE;AACX2a,QAAAA,WAAW,EAAEta,YADF;AAEXiU,QAAAA,gBAAgB,EAAEvT,iBAFP;AAGXZ,QAAAA,sBAAsB,EAAED,uBAHb;AAIXkJ,QAAAA,qBAAqB,EAAEO,sBAJZ;AAKXJ,QAAAA,oBAAoB,EAAEG,qBALX;AAMXzI,QAAAA,eAAe,EAAEX,gBANN;AAOXsa,QAAAA,YAAY,EAAE3S,aAAAA;OARM;MAUtBtV,cAVsB;AAWtBvV,MAAAA,KAAAA;AAXsB,KAAZ,CAAZ,CAAA;GAXF,CAAA,CAAA;;AA0BA,EAAA,MAAMy9B,QAAQ,GAAsB;IAClCl+B,OAAO,CAACsZ,UAAD,EAAuC;AAC5C,MAAA,IAAIA,UAAJ,EAAgB;QACd,MAAMtD,cAAc,GAAGoD,cAAc,CAACskB,cAAD,EAAiBH,eAAe,CAACjkB,UAAD,CAAhC,CAArC,CAAA;;AAEA,QAAA,IAAI,CAACzT,aAAa,CAACmQ,cAAD,CAAlB,EAAoC;AAClChR,UAAAA,UAAU,CAAC04B,cAAD,EAAiB1nB,cAAjB,CAAV,CAAA;UACA/V,MAAM,CAAC+V,cAAD,CAAN,CAAA;AACD,SAAA;AACF,OAAA;;AACD,MAAA,OAAOhR,UAAU,CAAC,EAAD,EAAK04B,cAAL,CAAjB,CAAA;KAVgC;;AAYlChqB,IAAAA,EAAE,EAAE6B,QAZ8B;AAalClC,IAAAA,GAAG,EAAE8B,WAb6B;;AAclCgB,IAAAA,KAAK,GAAA;MACH,MAAM;QAAE0W,eAAF;QAAmBjE,cAAnB;QAAmCkE,YAAnC;QAAiDhQ,QAAjD;AAA2DuI,QAAAA,gBAAAA;AAA3D,OAAA,GACJsY,cAAc,EADhB,CAAA;MAEA,OAAO34B,UAAU,CACf,EADe,EAEf;AACEwnB,QAAAA,cAAc,EAAEK,eADlB;AAEE/E,QAAAA,aAAa,EAAEc,cAFjB;AAGEG,QAAAA,WAAW,EAAE+D,YAHf;AAIEpL,QAAAA,OAAO,EAAE5E,QAJX;AAKE1E,QAAAA,eAAe,EAAEiN,gBAAAA;AALnB,OAFe,CAAjB,CAAA;KAjBgC;;AA4BlCyN,IAAAA,QAAQ,GAAA;MACN,MAAM;QAAEtR,OAAF;QAAW5E,KAAX;QAAkBE,QAAlB;QAA4BD,SAA5B;AAAuCE,QAAAA,QAAAA;OAAa4gB,GAAAA,cAAc,CAACnE,SAAzE,CAAA;MACA,OAAOx0B,UAAU,CACf,EADe,EAEf;AACEC,QAAAA,MAAM,EAAEuc,OADV;AAEEC,QAAAA,IAAI,EAAE7E,KAFR;QAGE8E,OAAO,EAAE5E,QAAQ,IAAID,SAHvB;AAIEsE,QAAAA,QAAQ,EAAEtE,SAJZ;QAKE8E,OAAO,EAAE5E,QAAQ,IAAIF,SAAAA;AALvB,OAFe,CAAjB,CAAA;KA9BgC;;IAyClC5c,MAAM,CAACQ,KAAD,EAAgB;AACpBR,MAAAA,MAAM,CAAC,EAAD,EAAKQ,KAAL,CAAN,CAAA;KA1CgC;;AA4ClCiyB,IAAAA,OAAO,EAAE,MAAK;MACZmK,cAAc,CAACO,cAAD,CAAd,CAAA;MACAW,iBAAiB,EAAA,CAAA;MACjB5oB,WAAW,EAAA,CAAA;MAEX2oB,iBAAiB,EAAA,CAAA;MACjBF,gBAAgB,EAAA,CAAA;MAEhBnoB,YAAY,CAAC,WAAD,CAAZ,CAAA;AACD,KAAA;GArDH,CAAA;AAwDAnS,EAAAA,IAAI,CAACI,IAAI,CAACy5B,OAAD,CAAL,EAAiBgB,UAAD,IAAe;AACjC,IAAA,MAAMC,cAAc,GAAGjB,OAAO,CAACgB,UAAD,CAA9B,CAAA;;AACA,IAAA,IAAIl8B,UAAU,CAACm8B,cAAD,CAAd,EAAgC;AAC9BA,MAAAA,cAAc,CAACpB,iBAAD,EAAoBkB,QAApB,CAAd,CAAA;AACD,KAAA;AACF,GALG,CAAJ,CAAA;EAOAA,QAAQ,CAACj+B,MAAT,CAAgB,IAAhB,CAAA,CAAA;AAEA08B,EAAAA,WAAW,CAACS,cAAD,EAAiBc,QAAjB,CAAX,CAAA;EAEAzoB,YAAY,CAAC,aAAD,CAAZ,CAAA;AAEA,EAAA,OAAOyoB,QAAP,CAAA;AACD,EAzJM;AA2JPlB,iBAAiB,CAAC3B,MAAlB,GAA2BF,SAA3B,CAAA;;AACA6B,iBAAiB,CAACrf,GAAlB,GAAwB,MAAK;EAC3B,MAAM;IACJC,oBADI;IAEJC,0BAFI;IAGJC,uBAHI;IAIJE,kBAJI;IAKJC,YALI;IAMJF,oBANI;IAOJU,8BAPI;IAQJC,sBARI;IASJP,0BATI;IAUJC,0BAVI;IAWJE,kBAXI;AAYJC,IAAAA,kBAAAA;AAZI,GAAA,GAaFiB,cAAc,EAblB,CAAA;EAcA,OAAOxa,UAAU,CACf,EADe,EAEf;AACEsa,IAAAA,aAAa,EAAE1B,oBADjB;AAEEygB,IAAAA,mBAAmB,EAAExgB,0BAFvB;AAGEygB,IAAAA,gBAAgB,EAAExgB,uBAHpB;AAIE6Q,IAAAA,iBAAiB,EAAE3Q,kBAJrB;AAKEugB,IAAAA,WAAW,EAAEtgB,YALf;AAMEugB,IAAAA,mBAAmB,EAAEzgB,oBANvB;AAOE0gB,IAAAA,6BAA6B,EAAEhgB,8BAPjC;AAQEf,IAAAA,qBAAqB,EAAEgB,sBARzB;AAUEggB,IAAAA,yBAAyB,EAAEvgB,0BAV7B;AAWEwgB,IAAAA,yBAAyB,EAAEvgB,0BAX7B;AAYEwgB,IAAAA,iBAAiB,EAAEtgB,kBAZrB;AAaEugB,IAAAA,iBAAiB,EAAEtgB,kBAAAA;AAbrB,GAFe,CAAjB,CAAA;AAkBD,CAjCD;;;;"} \ 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","../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 { from } from 'support/utils/array';\r\nimport { 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 | false | null | undefined,\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 | false | null | undefined, attrName: string): string | null;\r\nexport function attr(\r\n elm: HTMLElement | false | null | undefined,\r\n attrName: string,\r\n value: string\r\n): void;\r\nexport function attr(\r\n elm: HTMLElement | false | null | undefined,\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\nexport const attrClass = (\r\n elm: HTMLElement | false | null | undefined,\r\n attrName: string,\r\n value: string,\r\n add?: boolean\r\n) => {\r\n const currValues = attr(elm, attrName) || '';\r\n const currValuesSet = new Set(currValues.split(' '));\r\n currValuesSet[add ? 'add' : 'delete'](value);\r\n\r\n attr(elm, attrName, from(currValuesSet).join(' ').trim());\r\n};\r\n\r\nexport const hasAttrClass = (\r\n elm: HTMLElement | false | null | undefined,\r\n attrName: string,\r\n value: string\r\n) => {\r\n const currValues = attr(elm, attrName) || '';\r\n const currValuesSet = new Set(currValues.split(' '));\r\n return currValuesSet.has(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 | false | null | undefined, 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 | false | null | undefined): number;\r\nexport function scrollLeft(elm: HTMLElement | false | null | undefined, value: number): void;\r\nexport function scrollLeft(\r\n elm: HTMLElement | false | null | undefined,\r\n value?: number\r\n): 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 | false | null | undefined): number;\r\nexport function scrollTop(elm: HTMLElement | false | null | undefined, value: number): void;\r\nexport function scrollTop(\r\n elm: HTMLElement | false | null | undefined,\r\n value?: number\r\n): 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 | false | null | undefined): string;\r\nexport function val(elm: HTMLInputElement | false | null | undefined, value: string): void;\r\nexport function val(\r\n elm: HTMLInputElement | false | null | undefined,\r\n value?: string\r\n): 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 | false | null | undefined,\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 && className && 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 = (\r\n elm: Element | false | null | undefined,\r\n className: string | false | null | undefined\r\n): boolean => 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 = (\r\n elm: Element | false | null | undefined,\r\n className: string | false | null | undefined\r\n): 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 | false | null | undefined\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 | false | 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 | false | 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 | false | 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 | false | 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 dataAttributeHost = 'data-overlayscrollbars';\r\nexport const dataAttributeHostOverflowX = `${dataAttributeHost}-overflow-x`;\r\nexport const dataAttributeHostOverflowY = `${dataAttributeHost}-overflow-y`;\r\nexport const dataValueHostOverflowVisible = 'overflowVisible';\r\nexport const dataValueHostViewportScrollbarStyling = 'viewportStyled';\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\nexport const classNameOverflowVisible = `os-overflow-visible`;\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 =\r\n | 'hidden'\r\n | 'scroll'\r\n | 'visible'\r\n | 'visible-hidden'\r\n | 'visible-scroll';\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 paddingAbsolute: boolean;\r\n updating: {\r\n elementEvents: Array<[elementSelector: string, eventNames: string]> | null;\r\n attributes: string[] | null;\r\n debounce: [timeout: number, maxWait: number] | number | null; // (if tuple: [timeout: 0, maxWait: 33], if number: [timeout: number, maxWait: false]) debounce for content Changes\r\n ignoreMutation: ((mutation: MutationRecord) => any) | 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 nativeScrollbarsOverlaid: {\r\n show: boolean;\r\n initialize: boolean;\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 debounce: [0, 33], // number || number array || null\r\n attributes: null, // string array || null\r\n ignoreMutation: null, // () => any || 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 nativeScrollbarsOverlaid: {\r\n show: false, // true || false\r\n initialize: false, // true || false\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 /*\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 */\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 equalBCRWH,\r\n getBoundingClientRect,\r\n assignDeep,\r\n cssProperty,\r\n createCache,\r\n equalXY,\r\n createEventListenerHub,\r\n EventListener,\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 interface EnvironmentListenersNameArgsMap {\r\n _: undefined;\r\n}\r\n\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: EventListener): () => 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 [addEvent, , triggerEvent] = createEventListenerHub();\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) => addEvent('_', listener),\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 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 triggerEvent('_');\r\n }\r\n }\r\n\r\n size = sizeNew;\r\n dpr = dprNew;\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 hasClass,\r\n push,\r\n runEach,\r\n insertBefore,\r\n attr,\r\n isBoolean,\r\n isFunction,\r\n keys,\r\n removeAttr,\r\n attrClass,\r\n hasAttrClass,\r\n ResizeObserverConstructor,\r\n} from 'support';\r\nimport {\r\n dataAttributeHost,\r\n dataAttributeHostOverflowX,\r\n dataAttributeHostOverflowY,\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 _viewportIsTarget: boolean;\r\n _viewportHasClass: (className: string, attributeClassName: string) => boolean;\r\n _viewportAddRemoveClass: (className: string, attributeClassName: string, add?: boolean) => void;\r\n}\r\n\r\nlet contentArrangeCounter = 0;\r\n\r\nconst unwrap = (elm: HTMLElement | false | null | undefined) => {\r\n appendChildren(parent(elm), contents(elm));\r\n removeElements(elm);\r\n};\r\n\r\nconst createUniqueViewportArrangeElement = (): HTMLStyleElement | false => {\r\n const { _nativeScrollbarStyling, _nativeScrollbarIsOverlaid, _cssCustomProperties } =\r\n getEnvironment();\r\n /* istanbul ignore next */\r\n const create =\r\n !_cssCustomProperties &&\r\n !_nativeScrollbarStyling &&\r\n (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);\r\n const result = create ? document.createElement('style') : false;\r\n\r\n if (result) {\r\n attr(result, 'id', `${classNameViewportArrange}-${contentArrangeCounter}`);\r\n contentArrangeCounter++;\r\n }\r\n\r\n return result;\r\n};\r\n\r\nconst staticCreationFromStrategy = (\r\n target: OSTargetElement,\r\n initializationValue?: HTMLElement | undefined,\r\n strategy?: StructureInitializationStrategyStaticElement\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();\r\n};\r\n\r\nconst dynamicCreationFromStrategy = (\r\n target: OSTargetElement,\r\n initializationValue: HTMLElement | boolean | undefined,\r\n strategy: StructureInitializationStrategyDynamicElement\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() : result;\r\n};\r\n\r\nconst addDataAttrHost = (elm: HTMLElement, value?: string | false | null | undefined) => {\r\n attr(elm, dataAttributeHost, value || '');\r\n return removeAttr.bind(0, elm, dataAttributeHost);\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 singleElmSupport = !!ResizeObserverConstructor && _nativeScrollbarStyling;\r\n const potentialViewportElement = staticCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.viewport,\r\n viewportInitializationStrategy\r\n );\r\n const potentiallySingleElm = potentialViewportElement === targetElement;\r\n const viewportIsTarget = singleElmSupport && potentiallySingleElm;\r\n const viewportElement =\r\n potentiallySingleElm && !viewportIsTarget\r\n ? staticCreationFromStrategy(targetElement)\r\n : potentialViewportElement;\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 )\r\n : (targetElement as HTMLElement),\r\n _viewport: viewportElement,\r\n _padding: dynamicCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.padding,\r\n paddingInitializationStrategy\r\n ),\r\n _content: dynamicCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.content,\r\n contentInitializationStrategy\r\n ),\r\n _viewportArrange: !viewportIsTarget && 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 _viewportIsTarget: viewportIsTarget,\r\n _viewportHasClass: (className: string, attributeClassName: string) =>\r\n viewportIsTarget\r\n ? hasAttrClass(viewportElement, dataAttributeHost, attributeClassName)\r\n : hasClass(viewportElement, className),\r\n _viewportAddRemoveClass: (className: string, attributeClassName: string, add?: boolean) =>\r\n viewportIsTarget\r\n ? attrClass(viewportElement, dataAttributeHost, attributeClassName, add)\r\n : (add ? addClass : removeClass)(viewportElement, className),\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 const removeHostDataAttr = addDataAttrHost(_host, viewportIsTarget ? 'viewport' : 'host');\r\n const removePaddingClass = addClass(_padding, classNamePadding);\r\n const removeViewportClass = addClass(_viewport, !viewportIsTarget && classNameViewport);\r\n const removeContentClass = addClass(_content, classNameContent);\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, !viewportIsTarget && _viewport);\r\n appendChildren(_viewport, _content);\r\n\r\n push(destroyFns, () => {\r\n removeHostDataAttr();\r\n removeAttr(_viewport, dataAttributeHostOverflowX);\r\n removeAttr(_viewport, dataAttributeHostOverflowY);\r\n\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 removePaddingClass();\r\n removeViewportClass();\r\n removeContentClass();\r\n });\r\n\r\n if (_nativeScrollbarStyling && !viewportIsTarget) {\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 { 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 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 { _flexboxGlue } = getEnvironment();\r\n const { _heightIntrinsic } = getState();\r\n const { _heightIntrinsicChanged } = updateHints;\r\n const heightIntrinsicChanged = (_content || !_flexboxGlue) && _heightIntrinsicChanged;\r\n\r\n if (heightIntrinsicChanged) {\r\n style(_content, {\r\n height: _heightIntrinsic ? '' : '100%',\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, _viewportIsTarget: _isSingleElm } = 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 =\r\n !_isSingleElm && (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 attrClass,\r\n} from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport {\r\n classNameViewportArrange,\r\n classNameViewportScrollbarStyling,\r\n classNameOverflowVisible,\r\n dataAttributeHost,\r\n dataAttributeHostOverflowX,\r\n dataAttributeHostOverflowY,\r\n dataValueHostViewportScrollbarStyling,\r\n dataValueHostOverflowVisible,\r\n} from 'classnames';\r\nimport type { StyleObject, OverflowStyle } from 'typings';\r\nimport type { OverflowBehavior } from 'options';\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 _overflowStyle: 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 strVisible = 'visible';\r\nconst strHidden = 'hidden';\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: strHidden, y: strHidden } as XY,\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 % 1 !== 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\nconst conditionalClass = (\r\n elm: Element | false | null | undefined,\r\n classNames: string,\r\n add: boolean\r\n) => (add ? addClass(elm, classNames) : removeClass(elm, classNames));\r\n\r\nconst overflowIsVisible = (overflowBehavior: string) => overflowBehavior.indexOf(strVisible) === 0;\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 {\r\n _host,\r\n _padding,\r\n _viewport,\r\n _viewportArrange,\r\n _viewportIsTarget,\r\n _viewportAddRemoveClass,\r\n } = 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 !_viewportIsTarget &&\r\n !_nativeScrollbarStyling &&\r\n (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);\r\n\r\n const [updateSizeFraction, getCurrentSizeFraction] = createCache>(\r\n whCacheOptions,\r\n fractionalSize.bind(0, _viewport)\r\n );\r\n\r\n const [updateViewportScrollSizeCache, getCurrentViewportScrollSizeCache] = createCache<\r\n WH\r\n >(whCacheOptions, scrollSize.bind(0, _viewport));\r\n\r\n const [updateOverflowAmountCache, getCurrentOverflowAmountCache] =\r\n createCache>(whCacheOptions);\r\n\r\n const [updateOverflowStyleCache] = 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: 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 arrangeHideOffset =\r\n !_nativeScrollbarStyling && !showNativeOverlaidScrollbars ? overlaidScrollbarsHideOffset : 0;\r\n const getStatePerAxis = (\r\n styleKey: string,\r\n isOverlaid: boolean,\r\n nativeScrollbarSize: number\r\n ) => {\r\n const overflowStyle = style(_viewport, styleKey);\r\n // can't do something like \"viewportStyleObj && viewportStyleObj[styleKey] || overflowStyle\" here!\r\n const objectPrefferedOverflowStyle = viewportStyleObj\r\n ? viewportStyleObj[styleKey]\r\n : overflowStyle;\r\n const overflowScroll = objectPrefferedOverflowStyle === 'scroll';\r\n const nonScrollbarStylingHideOffset = isOverlaid ? arrangeHideOffset : nativeScrollbarSize;\r\n const scrollbarsHideOffset =\r\n overflowScroll && !_nativeScrollbarStyling ? nonScrollbarStylingHideOffset : 0;\r\n const scrollbarsHideOffsetArrange = isOverlaid && !!arrangeHideOffset;\r\n\r\n return [overflowStyle, overflowScroll, scrollbarsHideOffset, scrollbarsHideOffsetArrange] as [\r\n overflowStyle: OverflowStyle,\r\n overflowScroll: boolean,\r\n scrollbarsHideOffset: number,\r\n scrollbarsHideOffsetArrange: boolean\r\n ];\r\n };\r\n\r\n const [xOverflowStyle, xOverflowScroll, xScrollbarsHideOffset, xScrollbarsHideOffsetArrange] =\r\n getStatePerAxis('overflowX', _nativeScrollbarIsOverlaid.x, _nativeScrollbarSize.x);\r\n const [yOverflowStyle, yOverflowScroll, yScrollbarsHideOffset, yScrollbarsHideOffsetArrange] =\r\n getStatePerAxis('overflowY', _nativeScrollbarIsOverlaid.y, _nativeScrollbarSize.y);\r\n\r\n return {\r\n _overflowStyle: {\r\n x: xOverflowStyle,\r\n y: yOverflowStyle,\r\n },\r\n _overflowScroll: {\r\n x: xOverflowScroll,\r\n y: yOverflowScroll,\r\n },\r\n _scrollbarsHideOffset: {\r\n x: xScrollbarsHideOffset,\r\n y: yScrollbarsHideOffset,\r\n },\r\n _scrollbarsHideOffsetArrange: {\r\n x: xScrollbarsHideOffsetArrange,\r\n y: yScrollbarsHideOffsetArrange,\r\n },\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 hasOverflow: XY,\r\n overflowOption: XY,\r\n viewportStyleObj: StyleObject\r\n ): ViewportOverflowState => {\r\n const setAxisOverflowStyle = (behavior: OverflowBehavior, hasOverflowAxis: boolean) => {\r\n const overflowVisible = overflowIsVisible(behavior);\r\n const overflowVisibleBehavior =\r\n (hasOverflowAxis && overflowVisible && behavior.replace(`${strVisible}-`, '')) || '';\r\n return [\r\n hasOverflowAxis && !overflowVisible ? behavior : '',\r\n overflowIsVisible(overflowVisibleBehavior) ? 'hidden' : overflowVisibleBehavior,\r\n ];\r\n };\r\n\r\n const [overflowX, visibleBehaviorX] = setAxisOverflowStyle(overflowOption.x, hasOverflow.x);\r\n const [overflowY, visibleBehaviorY] = setAxisOverflowStyle(overflowOption.y, hasOverflow.y);\r\n\r\n viewportStyleObj.overflowX = visibleBehaviorX && overflowY ? visibleBehaviorX : overflowX;\r\n viewportStyleObj.overflowY = visibleBehaviorY && overflowX ? visibleBehaviorY : overflowY;\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\r\n const showNativeOverlaidScrollbars =\r\n showNativeOverlaidScrollbarsOption &&\r\n _nativeScrollbarIsOverlaid.x &&\r\n _nativeScrollbarIsOverlaid.y;\r\n const adjustFlexboxGlue =\r\n !_viewportIsTarget &&\r\n !_flexboxGlue &&\r\n (_sizeChanged ||\r\n _contentMutation ||\r\n _hostMutation ||\r\n showNativeOverlaidScrollbarsChanged ||\r\n _heightIntrinsicChanged);\r\n const overflowXVisible = overflowIsVisible(overflow.x);\r\n const overflowYVisible = overflowIsVisible(overflow.y);\r\n const overflowVisible = overflowXVisible || overflowYVisible;\r\n\r\n let sizeFractionCache = getCurrentSizeFraction(force);\r\n let viewportScrollSizeCache = getCurrentViewportScrollSizeCache(force);\r\n let overflowAmuntCache = getCurrentOverflowAmountCache(force);\r\n\r\n let preMeasureViewportOverflowState: ViewportOverflowState | undefined;\r\n\r\n if (showNativeOverlaidScrollbarsChanged && _nativeScrollbarStyling) {\r\n _viewportAddRemoveClass(\r\n classNameViewportScrollbarStyling,\r\n dataValueHostViewportScrollbarStyling,\r\n !showNativeOverlaidScrollbars\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 if (overflowVisible) {\r\n _viewportAddRemoveClass(classNameOverflowVisible, dataValueHostOverflowVisible, false);\r\n }\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 viewportclientSize = clientSize(_viewport);\r\n let arrangedViewportScrollSize = viewportScrollSize;\r\n let arrangedViewportClientSize = viewportclientSize;\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, viewportclientSize.w - viewportScrollSize.w),\r\n h: arrangedViewportClientSize.h + max(0, viewportclientSize.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 const hasOverflow = {\r\n x: overflowAmount.w > 0,\r\n y: overflowAmount.h > 0,\r\n };\r\n const removeClipping =\r\n (overflowXVisible && overflowYVisible && (hasOverflow.x || hasOverflow.y)) ||\r\n (overflowXVisible && hasOverflow.x && !hasOverflow.y) ||\r\n (overflowYVisible && hasOverflow.y && !hasOverflow.x);\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 const viewportOverflowState = setViewportOverflowState(\r\n showNativeOverlaidScrollbars,\r\n hasOverflow,\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\r\n if (!_viewportIsTarget) {\r\n hideNativeScrollbars(\r\n viewportOverflowState,\r\n _directionIsRTL,\r\n viewportArranged,\r\n viewportStyle\r\n );\r\n }\r\n\r\n if (adjustFlexboxGlue) {\r\n fixFlexboxGlue(viewportOverflowState, _heightIntrinsic);\r\n }\r\n\r\n if (_viewportIsTarget) {\r\n attr(_host, dataAttributeHostOverflowX, viewportStyle.overflowX as string);\r\n attr(_host, dataAttributeHostOverflowY, viewportStyle.overflowY as string);\r\n } else {\r\n style(_viewport, viewportStyle);\r\n }\r\n }\r\n\r\n attrClass(_host, dataAttributeHost, dataValueHostOverflowVisible, removeClipping);\r\n conditionalClass(_padding, classNameOverflowVisible, removeClipping);\r\n !_viewportIsTarget && conditionalClass(_viewport, classNameOverflowVisible, overflowVisible);\r\n\r\n const [overflowStyle, overflowStyleChanged] = updateOverflowStyleCache(\r\n getViewportOverflowState(showNativeOverlaidScrollbars)._overflowStyle\r\n );\r\n\r\n setState({\r\n _overflowStyle: overflowStyle,\r\n _overflowAmount: {\r\n x: overflowAmount.w,\r\n y: overflowAmount.h,\r\n },\r\n _hasOverflow: hasOverflow,\r\n });\r\n\r\n return {\r\n _overflowStyleChanged: overflowStyleChanged,\r\n _overflowAmountChanged: overflowAmountChanged,\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 _overflowAmountChanged: boolean;\r\n _overflowStyleChanged: 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 _overflowAmountChanged: false,\r\n _overflowStyleChanged: 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 * A function which can ignore a changed attribute if it returns true.\r\n * for DOMTargetObserver this applies to the changes to the observed target\r\n * for DOMContentObserver this applies to changes to nested targets -> nested targets are elements which match the \"_nestedTargetSelector\" selector\r\n */\r\n _ignoreTargetChange?: DOMObserverIgnoreTargetChange;\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}\r\n\r\ntype DOMTargetObserverOptions = DOMObserverOptionsBase;\r\n\r\ntype ContentChangeArrayItem = [selector?: string, eventNames?: 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 _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 = _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 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 liesBetween,\r\n scrollSize,\r\n equalWH,\r\n createCache,\r\n WH,\r\n fractionalSize,\r\n isFunction,\r\n ResizeObserverConstructor,\r\n} from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport {\r\n dataAttributeHost,\r\n dataValueHostOverflowVisible,\r\n classNameViewport,\r\n classNameOverflowVisible,\r\n} from 'classnames';\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\nconst hostSelector = `[${dataAttributeHost}]`;\r\n\r\n// TODO: observer textarea attrs if textarea\r\n\r\nconst viewportSelector = `.${classNameViewport}`;\r\nconst viewportAttrsFromTarget = ['tabindex'];\r\nconst baseStyleChangingAttrsTextarea = ['wrap', 'cols', 'rows'];\r\nconst baseStyleChangingAttrs = ['id', 'class', 'style', 'open'];\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 {\r\n _host,\r\n _viewport,\r\n _content,\r\n _isTextarea,\r\n _viewportIsTarget,\r\n _viewportHasClass,\r\n _viewportAddRemoveClass,\r\n } = structureSetupElements;\r\n const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment();\r\n\r\n const [updateContentSizeCache] = createCache>(\r\n {\r\n _equal: equalWH,\r\n _initialValue: { w: 0, h: 0 },\r\n },\r\n () => {\r\n const has = _viewportHasClass(classNameOverflowVisible, dataValueHostOverflowVisible);\r\n has && _viewportAddRemoveClass(classNameOverflowVisible, dataValueHostOverflowVisible);\r\n\r\n const contentScroll = scrollSize(_content);\r\n const viewportScroll = scrollSize(_viewport);\r\n const fractional = fractionalSize(_viewport);\r\n\r\n has && _viewportAddRemoveClass(classNameOverflowVisible, dataValueHostOverflowVisible, true);\r\n return {\r\n w: viewportScroll.w + contentScroll.w + fractional.w,\r\n h: viewportScroll.h + contentScroll.h + fractional.h,\r\n };\r\n }\r\n );\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 const [, contentSizeChanged] = updateContentSizeCache();\r\n // if contentChangedTroughEvent is true its already debounced\r\n const updateFn = contentChangedTroughEvent\r\n ? structureSetupUpdate\r\n : structureSetupUpdateWithDebouncedAdaptiveUpdateHints;\r\n\r\n if (contentSizeChanged) {\r\n updateFn({\r\n _contentMutation: true,\r\n });\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 if (!_viewportIsTarget) {\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 =\r\n !_viewportIsTarget &&\r\n 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 });\r\n\r\n const viewportIsTargetResizeObserver =\r\n _viewportIsTarget &&\r\n new ResizeObserverConstructor!(onSizeChanged.bind(0, { _sizeChanged: true }));\r\n\r\n viewportIsTargetResizeObserver && viewportIsTargetResizeObserver.observe(_host);\r\n updateViewportAttrsFromHost();\r\n\r\n return [\r\n (checkOption) => {\r\n const [ignoreMutation] = checkOption('updating.ignoreMutation');\r\n const [attributes, attributesChanged] = checkOption('updating.attributes');\r\n const [elementEvents, elementEventsChanged] = checkOption | null>(\r\n 'updating.elementEvents'\r\n );\r\n const [debounceValue, debounceChanged] = checkOption | number | null>(\r\n 'updating.debounce'\r\n );\r\n const updateContentMutationObserver = elementEventsChanged || attributesChanged;\r\n const ignoreMutationFromOptions = (mutation: MutationRecord) =>\r\n isFunction(ignoreMutation) && ignoreMutation(mutation);\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 _nestedTargetSelector: hostSelector,\r\n _ignoreContentChange: (mutation, isNestedTarget) => {\r\n const { target, attributeName } = mutation;\r\n const ignore =\r\n !isNestedTarget && attributeName\r\n ? liesBetween(target as Element, hostSelector, viewportSelector)\r\n : false;\r\n return ignore || !!ignoreMutationFromOptions(mutation);\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 && destroySizeObserver();\r\n viewportIsTargetResizeObserver && viewportIsTargetResizeObserver.disconnect();\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 } from 'support';\r\nimport type { OSOptions, ReadonlyOSOptions } from 'options';\r\nimport type { Setup } from 'setups';\r\nimport type { OSTarget, PartialOptions, StyleObject, OverflowStyle } from 'typings';\r\n\r\nexport interface StructureSetupState {\r\n _padding: TRBL;\r\n _paddingAbsolute: boolean;\r\n _viewportPaddingStyle: StyleObject;\r\n _overflowAmount: XY;\r\n _overflowStyle: XY;\r\n _hasOverflow: XY;\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 x: 0,\r\n y: 0,\r\n },\r\n _overflowStyle: {\r\n x: 'hidden',\r\n y: 'hidden',\r\n },\r\n _hasOverflow: {\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","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: any, ...args: any[]) => any;\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\nconst optionsTemplateTypes: OptionsTemplateTypesDictionary = {\r\n boolean: '__TPL_boolean_TYPE__',\r\n number: '__TPL_number_TYPE__',\r\n string: '__TPL_string_TYPE__',\r\n array: '__TPL_array_TYPE__',\r\n object: '__TPL_object_TYPE__',\r\n function: '__TPL_function_TYPE__',\r\n null: '__TPL_null_TYPE__',\r\n};\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 { OSOptions, OverflowBehavior, VisibilityBehavior, AutoHideBehavior } 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 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 ignoreMutation: [oTypes.function, oTypes.null], // function || 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 /*\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 */\r\n nativeScrollbarsOverlaid: {\r\n show: booleanAllowedValues, // true || false\r\n initialize: booleanAllowedValues, // true || false\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 } 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 overflowStyleChanged: 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 OSEventListenersNameArgsMap {\r\n initialized: undefined;\r\n initializationWithdrawn: undefined;\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, OverflowStyle } from 'typings';\r\nimport {\r\n assignDeep,\r\n isEmptyObject,\r\n each,\r\n isFunction,\r\n keys,\r\n isHTMLElement,\r\n XY,\r\n TRBL,\r\n} from 'support';\r\nimport { createStructureSetup, createScrollbarsSetup } from 'setups';\r\nimport { getOptionsDiff, OSOptions, ReadonlyOSOptions } from 'options';\r\nimport { DefaultInitializationStrategy, getEnvironment, InitializationStrategy } 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 plugin(osPlugin: OSPlugin | OSPlugin[]): void;\r\n env(): OverlayScrollbarsEnv;\r\n}\r\n\r\nexport interface OverlayScrollbarsEnv {\r\n scrollbarSize: XY;\r\n scrollbarIsOverlaid: XY;\r\n scrollbarStyling: boolean;\r\n rtlScrollBehavior: { n: boolean; i: boolean };\r\n flexboxGlue: boolean;\r\n cssCustomProperties: boolean;\r\n defaultInitializationStrategy: DefaultInitializationStrategy;\r\n defaultDefaultOptions: OSOptions;\r\n\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\nexport interface OverlayScrollbarsState {\r\n padding: TRBL;\r\n paddingAbsolute: boolean;\r\n overflowAmount: XY;\r\n overflowStyle: XY;\r\n hasOverflow: XY;\r\n}\r\n\r\nexport interface OverlayScrollbarsElements {\r\n target: HTMLElement;\r\n host: HTMLElement;\r\n padding: HTMLElement;\r\n viewport: HTMLElement;\r\n content: HTMLElement;\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(): OverlayScrollbarsState;\r\n elements(): OverlayScrollbarsElements;\r\n\r\n on: AddOSEventListener;\r\n off: RemoveOSEventListener;\r\n}\r\n\r\n/**\r\n * Notes:\r\n * Height intrinsic detection use \"content: true\" init strategy - or open ticket for custom height intrinsic observer\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 const removeEnvListener = addEnvListener(update.bind(0, {}, true));\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 _overflowStyleChanged,\r\n _contentMutation,\r\n _hostMutation,\r\n } = updateHints;\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 overflowStyleChanged: _overflowStyleChanged,\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 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 assignDeep({}, currentOptions);\r\n },\r\n on: addEvent,\r\n off: removeEvent,\r\n state() {\r\n const { _overflowAmount, _overflowStyle, _hasOverflow, _padding, _paddingAbsolute } =\r\n structureState();\r\n return assignDeep(\r\n {},\r\n {\r\n overflowAmount: _overflowAmount,\r\n overflowStyle: _overflowStyle,\r\n hasOverflow: _hasOverflow,\r\n padding: _padding,\r\n paddingAbsolute: _paddingAbsolute,\r\n }\r\n );\r\n },\r\n elements() {\r\n const { _target, _host, _padding, _viewport, _content } = structureState._elements;\r\n return assignDeep(\r\n {},\r\n {\r\n target: _target,\r\n host: _host,\r\n padding: _padding || _viewport,\r\n viewport: _viewport,\r\n content: _content || _viewport,\r\n }\r\n );\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.plugin = addPlugin;\r\nOverlayScrollbars.env = () => {\r\n const {\r\n _nativeScrollbarSize,\r\n _nativeScrollbarIsOverlaid,\r\n _nativeScrollbarStyling,\r\n _rtlScrollBehavior,\r\n _flexboxGlue,\r\n _cssCustomProperties,\r\n _defaultInitializationStrategy,\r\n _defaultDefaultOptions,\r\n _getInitializationStrategy,\r\n _setInitializationStrategy,\r\n _getDefaultOptions,\r\n _setDefaultOptions,\r\n } = getEnvironment();\r\n return assignDeep(\r\n {},\r\n {\r\n scrollbarSize: _nativeScrollbarSize,\r\n scrollbarIsOverlaid: _nativeScrollbarIsOverlaid,\r\n scrollbarStyling: _nativeScrollbarStyling,\r\n rtlScrollBehavior: _rtlScrollBehavior,\r\n flexboxGlue: _flexboxGlue,\r\n cssCustomProperties: _cssCustomProperties,\r\n defaultInitializationStrategy: _defaultInitializationStrategy,\r\n defaultDefaultOptions: _defaultDefaultOptions,\r\n\r\n getInitializationStrategy: _getInitializationStrategy,\r\n setInitializationStrategy: _setInitializationStrategy,\r\n getDefaultOptions: _getDefaultOptions,\r\n setDefaultOptions: _setDefaultOptions,\r\n }\r\n );\r\n};\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","attrClass","add","currValues","currValuesSet","split","join","trim","hasAttrClass","has","removeAttr","removeAttribute","scrollLeft","scrollTop","elmPrototype","find","selector","rootElm","document","querySelectorAll","findFirst","querySelector","is","matches","msMatchesSelector","contents","childNodes","parent","parentElement","closest","closestFn","liesBetween","highBoundarySelector","deepBoundarySelector","closestHighBoundaryElm","closestDeepBoundaryElm","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","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","hasClass","contains","removeClass","remove","addClass","bind","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","dataAttributeHost","dataAttributeHostOverflowX","dataAttributeHostOverflowY","dataValueHostOverflowVisible","dataValueHostViewportScrollbarStyling","classNamePadding","classNameViewport","classNameViewportArrange","classNameContent","classNameViewportScrollbarStyling","classNameOverflowVisible","classNameSizeObserver","classNameSizeObserverAppear","classNameSizeObserverListener","classNameSizeObserverListenerScroll","classNameSizeObserverListenerItem","classNameSizeObserverListenerItemFinal","classNameTrinsicObserver","classNameScrollbar","classNameScrollbarHorizontal","classNameScrollbarVertical","classNameScrollbarTrack","classNameScrollbarHandle","stringify","JSON","_","Error","defaultOptions","paddingAbsolute","updating","elementEvents","attributes","ignoreMutation","overflow","nativeScrollbarsOverlaid","show","initialize","scrollbars","visibility","autoHide","autoHideDelay","dragScroll","clickScroll","touch","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","updateNativeScrollbarSizeCache","getNativeScrollbarSizeCache","nativeScrollbarSize","nativeScrollbarIsOverlaid","initializationStrategy","defaultDefaultOptions","env","_nativeScrollbarSize","_nativeScrollbarIsOverlaid","_nativeScrollbarStyling","_cssCustomProperties","_rtlScrollBehavior","_flexboxGlue","_addListener","_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","dynamicCreationFromStrategy","takeInitializationValue","addDataAttrHost","createStructureSetupElements","hostInitializationStrategy","viewportInitializationStrategy","paddingInitializationStrategy","contentInitializationStrategy","targetIsElm","targetStructureInitialization","targetElement","isTextarea","isBody","ownerDocument","bodyElm","wnd","defaultView","singleElmSupport","potentialViewportElement","viewport","potentiallySingleElm","viewportIsTarget","viewportElement","evaluatedTargetObj","_target","host","padding","content","_viewportArrange","_windowElm","_documentElm","_htmlElm","_bodyElm","_isTextarea","_isBody","_targetIsElm","_viewportIsTarget","_viewportHasClass","attributeClassName","_viewportAddRemoveClass","generatedElements","elementIsGenerated","destroyFns","isTextareaHostGenerated","targetContents","contentSlot","removeHostDataAttr","removePaddingClass","removeViewportClass","removeContentClass","createTrinsicUpdate","structureSetupElements","getState","updateHints","_heightIntrinsic","_heightIntrinsicChanged","heightIntrinsicChanged","height","_sizeChanged","_contentMutation","createPaddingUpdate","setState","_isSingleElm","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","strVisible","overlaidScrollbarsHideOffset","whCacheOptions","xyCacheOptions","getOverflowAmount","viewportScrollSize","viewportClientSize","sizeFraction","tollerance","amount","conditionalClass","overflowIsVisible","overflowBehavior","createOverflowUpdate","doViewportArrange","updateSizeFraction","getCurrentSizeFraction","updateViewportScrollSizeCache","getCurrentViewportScrollSizeCache","updateOverflowAmountCache","getCurrentOverflowAmountCache","updateOverflowStyleCache","fixFlexboxGlue","viewportOverflowState","heightIntrinsic","_overflowScroll","_scrollbarsHideOffset","hostClientSize","isContentBox","subtractXScrollbar","getViewportOverflowState","showNativeOverlaidScrollbars","viewportStyleObj","arrangeHideOffset","getStatePerAxis","styleKey","isOverlaid","overflowStyle","objectPrefferedOverflowStyle","overflowScroll","nonScrollbarStylingHideOffset","scrollbarsHideOffset","scrollbarsHideOffsetArrange","xOverflowStyle","xOverflowScroll","xScrollbarsHideOffset","xScrollbarsHideOffsetArrange","yOverflowStyle","yOverflowScroll","yScrollbarsHideOffset","yScrollbarsHideOffsetArrange","_overflowStyle","_scrollbarsHideOffsetArrange","setViewportOverflowState","hasOverflow","overflowOption","setAxisOverflowStyle","behavior","hasOverflowAxis","overflowVisible","overflowVisibleBehavior","visibleBehaviorX","visibleBehaviorY","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","overflowXVisible","overflowYVisible","sizeFractionCache","viewportScrollSizeCache","overflowAmuntCache","preMeasureViewportOverflowState","redoViewportArrange","undoViewportArrangeOverflowState","sizeFractionChanged","viewportScrollSizeChanged","viewportclientSize","arrangedViewportScrollSize","arrangedViewportClientSize","overflowAmount","overflowAmountChanged","removeClipping","viewportArranged","overflowStyleChanged","_overflowAmount","_hasOverflow","_overflowStyleChanged","_overflowAmountChanged","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","intersectionObserverInstance","entries","root","onSizeChanged","newSize","createEventContentChange","eventContentChange","map","destroyed","destroy","updateElements","getElements","eventElmList","elements","entry","entryEventNames","entryOff","delete","WeakMap","createDOMObserver","isContentObserver","isConnected","_attributes","_styleChangingAttributes","_eventContentChange","_nestedTargetSelector","_ignoreTargetChange","_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","hostSelector","viewportSelector","viewportAttrsFromTarget","baseStyleChangingAttrsTextarea","baseStyleChangingAttrs","createStructureSetupObservers","structureSetupUpdate","debounceTimeout","debounceMaxDelay","contentMutationObserver","updateContentSizeCache","contentScroll","viewportScroll","fractional","contentMutationObserverAttr","structureSetupUpdateWithDebouncedAdaptiveUpdateHints","prev","prevObj","currObj","updateViewportAttrsFromHost","attribute","hostAttr","onTrinsicChanged","heightIntrinsicCache","updateFn","directionChanged","onContentMutation","contentChangedTroughEvent","contentSizeChanged","onHostMutation","destroyTrinsicObserver","destroySizeObserver","destroyHostMutationObserver","viewportIsTargetResizeObserver","attributesChanged","elementEventsChanged","debounceValue","debounceChanged","updateContentMutationObserver","ignoreMutationFromOptions","ignore","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","optionsTemplateTypes","boolean","number","string","object","function","null","numberAllowedValues","oTypes","booleanAllowedValues","arrayNullValues","overflowAllowedValues","scrollbarsVisibilityAllowedValues","scrollbarsAutoHideAllowedValues","optionsValidationPluginName","targets","targetInstanceMap","addInstance","osInstance","removeInstance","getInstance","createOSEventListenerHub","OverlayScrollbars","eventListeners","addEnvListener","plugins","instanceTarget","potentialInstance","optionsValidationPlugin","validateOptions","opts","validate","currentOptions","structureState","destroyStructure","updateScrollbars","destroyScrollbars","removeEnvListener","sizeChanged","hostMutation","instance","pluginName","pluginInstance","scrollbarIsOverlaid","scrollbarStyling","flexboxGlue","cssCustomProperties","defaultInitializationStrategy","getInitializationStrategy","setInitializationStrategy","getDefaultOptions","setDefaultOptions"],"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 c16a0a5..f65de5b 100644 --- a/packages/overlayscrollbars/dist/overlayscrollbars.esm.min.js +++ b/packages/overlayscrollbars/dist/overlayscrollbars.esm.min.js @@ -1 +1 @@ -function t(t,e){const{o:n,s:o,u:r}=t;let i,a=n;const s=(t,e)=>{const n=a,s=t,l=e||(o?!o(n,s):n!==s);return(l||r)&&(a=s,i=n),[a,l,i]};return[e?t=>s(e(a,i),t):s,t=>[a,!!t,i]]}const e=Node.ELEMENT_NODE,{toString:n,hasOwnProperty: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 e=!!t&&t.length,n=a(e)&&e>-1&&e%1==0;return!!(d(t)||!c(t)&&n)&&(!(e>0&&u(t))||e-1 in t)}function g(t){if(!t||!u(t)||"object"!==(t=>r(t)||i(t)?`${t}`:n.call(t).replace(/^\[object (.+)\]$/,"$1").toLowerCase())(t))return!1;let e;const a="constructor",s=t[a],l=s&&s.prototype,c=o.call(t,a),d=l&&o.call(l,"isPrototypeOf");if(s&&!c&&!d)return!1;for(e in t);return r(e)||o.call(t,e)}function f(t){const n=window.HTMLElement;return!!t&&(n?t instanceof n:t.nodeType===e)}function h(t){const n=window.Element;return!!t&&(n?t instanceof n:t.nodeType===e)}function v(t,e){if(_(t))for(let n=0;ne(t[n],n,t));return t}const w=(t,e,n)=>t.indexOf(e,n),p=(t,e,n)=>(n||s(e)||!_(e)?t.push(e):Array.prototype.push.apply(t,e),t),b=t=>{if(Array.from&&t)return Array.from(t);const e=[];return t instanceof Set?t.forEach(t=>{p(e,t)}):v(t,t=>{p(e,t)}),e},y=t=>!!t&&0===t.length,S=(t,e)=>{const n=t=>t&&t.apply(void 0,e||[]);t instanceof Set?t.forEach(n):v(t,n)},m=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),x=t=>t?Object.keys(t):[];function C(t,e,n,o,r,a,s){const l=[e,n,o,r,a,s];return"object"==typeof t&&!i(t)||c(t)||(t={}),v(l,e=>{v(x(e),n=>{const o=e[n];if(t===o)return!0;const r=d(o);if(o&&(g(o)||r)){const e=t[n];let i=e;r&&!d(e)?i=[]:r||g(e)||(i={}),t[n]=C(i,o)}else t[n]=o})}),t}function O(t,e,n,o){if(r(o))return n?n[t]:e;n&&(n[t]=o)}function $(t,e,n){if(r(n))return t?t.getAttribute(e):null;t&&t.setAttribute(e,n)}const I=(t,e,n,o)=>{const r=$(t,e)||"",i=new Set(r.split(" "));i[o?"add":"delete"](n),$(t,e,b(i).join(" ").trim())},z=(t,e)=>{t&&t.removeAttribute(e)};function A(t,e){return O("scrollLeft",0,t,e)}function M(t,e){return O("scrollTop",0,t,e)}const L=Element.prototype,T=(t,e)=>{const n=[],o=e?h(e)?e:null:document;return o?p(n,o.querySelectorAll(t)):n},R=(t,e)=>{if(h(t)){return(L.matches||L.msMatchesSelector).call(t,e)}return!1},P=t=>t?b(t.childNodes):[],D=t=>t?t.parentElement:null,V=(t,e)=>{if(h(t)){const n=L.closest;if(n)return n.call(t,e);do{if(R(t,e))return t;t=D(t)}while(t)}return null},j=(t,e,n)=>{const o=t&&V(t,e),r=t&&((t,e)=>{const n=e?h(e)?e:null:document;return n?n.querySelector(t):null})(n,o);return!(!o||!r)&&(o===t||r===t||V(V(t,n),e)!==o)},H=(t,e,n)=>{if(n){let o,r=e;t&&(_(n)?(o=document.createDocumentFragment(),v(n,t=>{t===r&&(r=t.previousSibling),o.appendChild(t)})):o=n,e&&(r?r!==e&&(r=r.nextSibling):r=t.firstChild),t.insertBefore(o,r||null))}},B=(t,e)=>{H(t,null,e)},E=(t,e)=>{H(t,t&&t.firstChild,e)},k=(t,e)=>{H(D(t),t&&t.nextSibling,e)},q=t=>{if(_(t))v(b(t),t=>q(t));else if(t){const e=D(t);e&&e.removeChild(t)}},G=t=>{const e=document.createElement("div");return t&&$(e,"class",t),e},F=t=>{const e=G();return e.innerHTML=t.trim(),v(P(e),t=>q(t))},N=t=>t.charAt(0).toUpperCase()+t.slice(1),W=["-webkit-","-moz-","-o-","-ms-"],Y=["WebKit","Moz","O","MS","webkit","moz","o","ms"],X={},U={},J=t=>{let e=U[t];if(m(U,t))return e;const n=N(t),o=G().style;return v(W,r=>{const i=r.replace(/-/g,""),a=[t,r+t,i+n,N(i)+n];return!(e=a.find(t=>void 0!==o[t]))}),U[t]=e||""},K=t=>{let e=X[t]||window[t];return m(X,t)||(v(Y,n=>(e=e||window[n+N(t)],!e)),X[t]=e),e},Q=K("MutationObserver"),Z=K("IntersectionObserver"),tt=K("ResizeObserver"),et=K("cancelAnimationFrame"),nt=K("requestAnimationFrame"),ot=/[^\x20\t\r\n\f]+/g,rt=(t,e,n)=>{let o,r=0,i=!1;if(t&&e&&s(e)){const a=e.match(ot)||[];for(i=a.length>0;o=a[r++];)i=!!n(t.classList,o)&&i}return i},it=(t,e)=>{rt(t,e,(t,e)=>t.remove(e))},at=(t,e)=>(rt(t,e,(t,e)=>t.add(e)),it.bind(0,t,e)),st=(t,e,n,o)=>{if(t&&e){let r=!0;return v(n,n=>{(o?o(t[n]):t[n])!==(o?o(e[n]):e[n])&&(r=!1)}),r}return!1},lt=(t,e)=>st(t,e,["w","h"]),ct=(t,e)=>st(t,e,["x","y"]),dt=(t,e)=>st(t,e,["t","r","b","l"]),ut=(t,e,n)=>st(t,e,["width","height"],n&&(t=>Math.round(t))),_t=t=>{t&&window.clearTimeout(t),t&&et(t)},gt=()=>{},ft=(t,e)=>{let n,o,r,i;const{_:s,g:l,v:d}=e||{},u=window.setTimeout,_=function(e){_t(n),_t(o),o=n=r=void 0,t.apply(this,e)},g=t=>d&&r?d(r,t):t,f=()=>{n&&_(g(i)||i)},h=function(){const t=b(arguments),e=c(s)?s():s,d=a(e)&&e>=0;if(d){const s=c(l)?l():l,d=a(s)&&s>=0,h=e>0?u:nt,v=g(t)||t,w=_.bind(0,v);_t(n),n=h(w,e),d&&!o&&(o=u(f,s)),r=i=v}else _(t)};return h.p=f,h},ht={opacity:1,zindex:1},vt=(t,e)=>{const n=e?parseFloat(t):parseInt(t,10);return Number.isNaN(n)?0:n},wt=(t,e,n)=>null!=e?e[n]||e.getPropertyValue(n):t.style[n],pt=(t,e,n)=>{try{if(t){const{style:o}=t;r(o[e])?o.setProperty(e,n):o[e]=((t,e)=>!ht[t.toLowerCase()]&&a(e)?`${e}px`:e)(e,n)}}catch(o){}};function bt(t,e){const n=s(e);if(d(e)||n){let o=n?"":{};if(t){const r=window.getComputedStyle(t,null);o=n?wt(t,r,e):e.reduce((e,n)=>(e[n]=wt(t,r,n),e),o)}return o}v(x(e),n=>pt(t,n,e[n]))}const yt=(t,e,n)=>{const o=e?`${e}-`:"",r=n?`-${n}`:"",i=`${o}top${r}`,a=`${o}right${r}`,s=`${o}bottom${r}`,l=`${o}left${r}`,c=bt(t,[i,a,s,l]);return{t:vt(c[i]),r:vt(c[a]),b:vt(c[s]),l:vt(c[l])}},St={w:0,h:0},mt=()=>({w:window.innerWidth,h:window.innerHeight}),xt=t=>t?{w:t.offsetWidth,h:t.offsetHeight}:St,Ct=t=>t?{w:t.clientWidth,h:t.clientHeight}:St,Ot=t=>t?{w:t.scrollWidth,h:t.scrollHeight}:St,$t=t=>{const e=parseFloat(bt(t,"height"))||0,n=parseFloat(bt(t,"height"))||0;return{w:n-Math.round(n),h:e-Math.round(e)}},It=t=>t.getBoundingClientRect();let zt;const At=t=>t.split(" "),Mt=(t,e,n,o)=>{v(At(e),e=>{t.removeEventListener(e,n,o)})},Lt=(t,e,n,o)=>{const i=(()=>{if(r(zt)){zt=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){zt=!0}}))}catch(t){}}return zt})(),a=i&&o&&o.S||!1,s=o&&o.m||!1,l=o&&o.C||!1,c=[],d=i?{passive:a,capture:s}:s;return v(At(e),e=>{const o=l?r=>{t.removeEventListener(e,o,s),n&&n(r)}:n;p(c,Mt.bind(null,t,e,o,s)),t.addEventListener(e,o,d)}),S.bind(0,c)},Tt=t=>(t=>t.stopPropagation())(t)||(t=>t.preventDefault())(t),Rt={x:0,y:0},Pt=t=>{const e=t?It(t):0;return e?{x:e.left+window.pageYOffset,y:e.top+window.pageXOffset}:Rt},Dt=(t,e)=>{v(d(e)?e:[e],t)},Vt=t=>{const e=new Map,n=(t,n)=>{if(t){const o=e.get(t);Dt(t=>{o&&o[t?"delete":"clear"](t)},n)}else e.forEach(t=>{t.clear()}),e.clear()},o=(t,o)=>{const r=e.get(t)||new Set;return e.set(t,r),Dt(t=>{t&&r.add(t)},o),n.bind(0,t,o)};return v(x(t),e=>{o(e,t[e])}),[o,n,(t,n)=>{const o=e.get(t);v(b(o),t=>{n?t(n):t()})}]},jt=(t,e)=>t?e.split(".").reduce((t,e)=>t&&m(t,e)?t[e]:void 0,t):void 0,Ht=(t,e,n)=>o=>[jt(t,o),n||void 0!==jt(e,o)],Bt=t=>{let e=t;return[()=>e,t=>{e=C({},e,t)}]},Et="os-environment",kt=`${Et}-flexbox-glue`,qt=`${kt}-max`,Gt="data-overlayscrollbars",Ft=`${Gt}-overflow-x`,Nt=`${Gt}-overflow-y`,Wt="overflowVisible",Yt="viewportStyled",Xt="os-padding",Ut="os-viewport",Jt=`${Ut}-arrange`,Kt="os-content",Qt=`${Ut}-scrollbar-styled`,Zt=`os-overflow-visible`,te="os-size-observer",ee=`${te}-appear`,ne=`${te}-listener`,oe=`${ne}-scroll`,re=`${ne}-item`,ie=`${re}-final`,ae="os-trinsic-observer",se="os-scrollbar",le=`${se}-horizontal`,ce=`${se}-vertical`,de="os-scrollbar-track",ue="os-scrollbar-handle",_e=t=>JSON.stringify(t,(t,e)=>{if(c(e))throw new Error;return e}),ge={paddingAbsolute:!1,updating:{elementEvents:[["img","load"]],debounce:[0,33],attributes:null,ignoreMutation:null},overflow:{x:"scroll",y:"scroll"},nativeScrollbarsOverlaid:{show:!1,initialize:!1},scrollbars:{visibility:"auto",autoHide:"never",autoHideDelay:800,dragScroll:!0,clickScroll:!1,touch:!0}},fe=(t,e)=>{const n={};return v(x(e).concat(x(t)),o=>{const r=t[o],i=e[o];if(u(r)&&u(i))C(n[o]={},fe(r,i));else if(m(e,o)&&i!==r){let t=!0;if(d(r)||d(i))try{_e(r)===_e(i)&&(t=!1)}catch(a){}t&&(n[o]=i)}}),n};let he;const{abs:ve,round:we}=Math,pe=(t,e,n)=>{B(t,e);const o=Ct(e),r=xt(e),i=$t(n);return{x:r.h-o.h+i.h,y:r.w-o.w+i.w}},be=(t,e)=>{const n="hidden";bt(t,{overflowX:n,overflowY:n,direction:"rtl"}),A(t,0);const o=Pt(t),r=Pt(e);A(t,-999);const i=Pt(e);return{i:o.x===r.x,n:r.x!==i.x}},ye=(t,e)=>{const n=at(t,kt),o=It(t),r=It(e),i=ut(r,o,!0),a=at(t,qt),s=It(t),l=It(e),c=ut(l,s,!0);return n(),a(),i&&c},Se=()=>{const t=window.screen.deviceXDPI||0,e=window.screen.logicalXDPI||1;return window.devicePixelRatio||t/e},me=()=>{const{body:e}=document,n=F(`
`)[0],o=n.firstChild,[r,,i]=Vt(),[a,s]=t({o:pe(e,n,o),s:ct}),[l]=s(),c=(t=>{let e=!1;const n=at(t,Qt);try{e="none"===bt(t,J("scrollbar-width"))||"none"===window.getComputedStyle(t,"::-webkit-scrollbar").getPropertyValue("display")}catch(o){}return n(),e})(n),d={x:0===l.x,y:0===l.y},u=(t=>({O:null,$:null,I:!t,A:!1,M:null}))(c),_=C({},ge),g={L:l,T:d,R:c,P:"-1"===bt(n,"zIndex"),D:be(n,o),V:ye(n,o),j:t=>r("_",t),H:C.bind(0,{},u),B(t){C(u,t)},k:C.bind(0,{},_),q(t){C(_,t)},G:C({},u),F:C({},_)};if(z(n,"style"),q(n),!(c||d.x&&d.y)){let t=mt(),r=Se();window.addEventListener("resize",()=>{const s=mt(),l={w:s.w-t.w,h:s.h-t.h};if(0===l.w&&0===l.h)return;const c=ve(l.w),d=ve(l.h),u={w:ve(we(s.w/(t.w/100))),h:ve(we(s.h/(t.h/100)))},_=Se(),g=c>2&&d>2,f=!((t,e)=>{const n=ve(t),o=ve(e);return!(n===o||n+1===o||n-1===o)})(u.w,u.h);if(g&&f&&(_!==r&&r>0)){const[t,r]=a(pe(e,n,o));C(he.L,t),q(n),r&&i("_")}t=s,r=_})}return g},xe=()=>(he||(he=me()),he);let Ce=0;const Oe=t=>{B(D(t),P(t)),q(t)},$e=()=>{const{R:t,T:e,P:n}=xe(),o=!!(!n&&!t&&(e.x||e.y))&&document.createElement("style");return o&&($(o,"id",`${Jt}-${Ce}`),Ce++),o},Ie=(t,e,n)=>e||(c(n)?n(t):n)||G(),ze=(t,e,n)=>{const o=l(e)||e?e:c(n)?n(t):n;return!0===o?G():o},Ae=t=>{const{H:e,R:n}=xe(),{O:o,$:r,I:i,A:a}=e(),s=f(t),l=t,c=s?t:l.target,d=R(c,"textarea"),u=!d&&R(c,"body"),_=c.ownerDocument,g=_.body,h=_.defaultView,v=!!tt&&n,b=Ie(c,l.viewport,r),y=b===c,m=v&&y,C=y&&!m?Ie(c):b,O={N:c,O:d?Ie(c,l.host,o):c,$:C,I:ze(c,l.padding,i),A:ze(c,l.content,a),W:!m&&$e(),Y:h,X:_,U:D(g),J:g,K:d,Z:u,tt:s,et:m,nt:(t,e)=>m?((t,e,n)=>{const o=$(t,e)||"";return new Set(o.split(" ")).has(n)})(C,Gt,e):((t,e)=>rt(t,e,(t,e)=>t.contains(e)))(C,t),ot:(t,e,n)=>m?I(C,Gt,e,n):(n?at:it)(C,t)},A=x(O).reduce((t,e)=>{const n=O[e];return p(t,!(!n||D(n))&&n)},[]),M=t=>t?w(A,t)>-1:null,{N:L,O:T,I:V,$:j,A:E,W:G}=O,F=[],N=d&&M(T),W=d?L:P([E,j,V,T,L].find(t=>!1===M(t))),Y=E||j,X=($(U=T,Gt,(m?"viewport":"host")||""),z.bind(0,U,Gt));var U;const J=at(V,Xt),K=at(j,!m&&Ut),Q=at(E,Kt);var Z,et;return N&&(k(L,T),p(F,()=>{k(T,L),q(T)})),B(Y,W),B(T,V),B(V||T,!m&&j),B(j,E),p(F,()=>{X(),z(j,Ft),z(j,Nt),M(E)&&Oe(E),M(j)&&Oe(j),M(V)&&Oe(V),J(),K(),Q()}),n&&!m&&p(F,it.bind(0,j,Qt)),G&&(et=G,H(D(Z=j),Z,et),p(F,q.bind(0,G))),[O,S.bind(0,F)]},Me=(t,e)=>{const{A:n}=t,[o]=e;return t=>{const{V:e}=xe(),{rt:r}=o(),{it:i}=t,a=(n||!e)&&i;return a&&bt(n,{height:r?"":"100%"}),{st:a,lt:a}}},Le=(e,n)=>{const[o,r]=n,{O:i,I:a,$:s,et:l}=e,[c,d]=t({s:dt,o:yt()},yt.bind(0,i,"padding",""));return(t,e,n)=>{let[i,u]=d(n);const{R:_,V:g}=xe(),{ct:f}=o(),{st:h,lt:v,dt:w}=t,[p,b]=e("paddingAbsolute");(h||u||!g&&v)&&([i,u]=c(n));const y=!l&&(b||w||u);if(y){const t=!p||!a&&!_,e=i.r+i.l,n=i.t+i.b,o={marginRight:t&&!f?-e:0,marginBottom:t?-n:0,marginLeft:t&&f?-e:0,top:t?-i.t:0,right:t?f?-i.r:"auto":0,left:t?f?"auto":-i.l:0,width:t?`calc(100% + ${e}px)`:""},l={paddingTop:t?i.t:0,paddingRight:t?i.r:0,paddingBottom:t?i.b:0,paddingLeft:t?i.l:0};bt(a||s,o),bt(s,l),r({I:i,ut:!t,_t:a?l:C({},o,l)})}return{gt:y}}},{max:Te}=Math,Re="visible",Pe="hidden",De=42,Ve={s:lt,o:{w:0,h:0}},je={s:ct,o:{x:Pe,y:Pe}},He=(t,e,n)=>n?at(t,e):it(t,e),Be=t=>0===t.indexOf(Re),Ee=(e,n)=>{const[o,r]=n,{O:i,I:a,$:s,W:l,et:c,ot:d}=e,{L:u,V:_,R:g,T:f}=xe(),h=!c&&!g&&(f.x||f.y),[w,p]=t(Ve,$t.bind(0,i)),[b,y]=t(Ve,Ot.bind(0,s)),[S,m]=t(Ve),[C]=t(je),O=(t,e)=>{if(bt(s,{height:""}),e){const{ut:e,I:n}=o(),{ft:r,ht:a}=t,l=$t(i),c=Ct(i),d="content-box"===bt(s,"boxSizing"),u=e||d?n.b+n.t:0,_=!(f.x&&d);bt(s,{height:c.h+l.h+(r.x&&_?a.x:0)-u})}},z=(t,e)=>{const n=g||t?0:De,o=(t,o,r)=>{const i=bt(s,t),a="scroll"===(e?e[t]:i);return[i,a,a&&!g?o?n:r:0,o&&!!n]},[r,i,a,l]=o("overflowX",f.x,u.x),[c,d,_,h]=o("overflowY",f.y,u.y);return{vt:{x:r,y:c},ft:{x:i,y:d},ht:{x:a,y:_},wt:{x:l,y:h}}},A=(t,e,n,r)=>{if(h){const{_t:i}=o(),{ht:a,wt:c}=t,{x:d,y:u}=c,{x:_,y:g}=a,f=i[r?"paddingRight":"paddingLeft"],h=i.paddingTop,v=e.w+n.w,w=e.h+n.h,p={w:g&&u?`${g+v-f}px`:"",h:_&&d?`${_+w-h}px`:""};if(l){const{sheet:t}=l;if(t){const{cssRules:e}=t;if(e){e.length||t.insertRule(`#${$(l,"id")} + .${Jt}::before {}`,0);const n=e[0].style;n.width=p.w,n.height=p.h}}}else bt(s,{"--os-vaw":p.w,"--os-vah":p.h})}return h},M=(t,e,n,r)=>{const{ht:i,wt:a}=t,{x:s,y:l}=a,{x:c,y:d}=i,{_t:u}=o(),_=e?"marginLeft":"marginRight",g=e?"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,n&&(r[g]=v+(l?d:0),r.paddingBottom=w+(s?c:0))};return(t,e,n)=>{const{st:l,pt:u,lt:L,gt:T,it:R,dt:P}=t,{rt:D,ct:V}=o(),[j,H]=e("nativeScrollbarsOverlaid.show"),[B,E]=e("overflow"),k=j&&f.x&&f.y,q=!c&&!_&&(l||L||u||H||R),G=Be(B.x),F=Be(B.y),N=G||F;let W,Y=p(n),X=y(n),U=m(n);if(H&&g&&d(Qt,Yt,!k),q&&(W=z(k),O(W,D)),l||T||L||P||H){N&&d(Zt,Wt,!1);const[t,e]=((t,e,n)=>{if(h){const r=n||z(t),{_t:i}=o(),{wt:a}=r,{x:l,y:c}=a,d={},u=t=>v(t.split(" "),t=>{d[t]=i[t]});l&&u("marginBottom paddingTop paddingBottom"),c&&u("marginLeft marginRight paddingLeft paddingRight");const g=bt(s,x(d));return it(s,Jt),_||(d.height=""),bt(s,d),[()=>{M(r,e,h,g),bt(s,g),at(s,Jt)},r]}return[gt]})(k,V,W),[r,i]=Y=w(n),[a,l]=X=b(n),c=Ct(s);let u=a,g=c;t(),(l||i||H)&&e&&!k&&A(e,a,r,V)&&(g=Ct(s),u=Ot(s)),U=S(((t,e,n)=>{const o=window.devicePixelRatio%1!=0?1:0,r={w:Te(0,t.w-e.w-Te(0,n.w)),h:Te(0,t.h-e.h-Te(0,n.h))};return{w:r.w>o?r.w:0,h:r.h>o?r.h:0}})({w:Te(a.w,u.w),h:Te(a.h,u.h)},{w:g.w+Te(0,c.w-a.w),h:g.h+Te(0,c.h-a.h)},r),n)}const[J,K]=U,[Q,Z]=X,[tt,et]=Y,nt={x:J.w>0,y:J.h>0},ot=G&&F&&(nt.x||nt.y)||G&&nt.x&&!nt.y||F&&nt.y&&!nt.x;if(T||P||et||Z||K||E||H||q){const t={marginRight:0,marginBottom:0,marginLeft:0,width:"",overflowY:"",overflowX:""},e=((t,e,n,o)=>{const r=(t,e)=>{const n=Be(t),o=e&&n&&t.replace(`${Re}-`,"")||"";return[e&&!n?t:"",Be(o)?"hidden":o]},[i,a]=r(n.x,e.x),[s,l]=r(n.y,e.y);return o.overflowX=a&&s?a:i,o.overflowY=l&&i?l:s,z(t,o)})(k,nt,B,t),n=A(e,Q,tt,V);c||M(e,V,n,t),q&&O(e,D),c?($(i,Ft,t.overflowX),$(i,Nt,t.overflowY)):bt(s,t)}I(i,Gt,Wt,ot),He(a,Zt,ot),!c&&He(s,Zt,N);const[rt,st]=C(z(k).vt);return r({vt:rt,bt:{x:J.w,y:J.h},yt:nt}),{St:st,xt:K}}},ke=(t,e,n)=>{const o={},r=e||{};return v(x(t).concat(x(r)),e=>{const i=t[e],a=r[e];o[e]=!!(n||i||a)}),o},qe="animationstart",Ge="scroll",Fe=3333333,Ne=t=>"rtl"===bt(t,"direction"),We=t=>t&&(t.height||t.width),Ye=(e,n,o)=>{const{Ct:r=!1,Ot:i=!1}=o||{},{D:a}=xe(),s=F(`
`)[0],c=s.firstChild,_=Ne.bind(0,s),[g]=t({o:void 0,u:!0,s:(t,e)=>!(!t||!We(t)&&We(e))}),f=t=>{const e=d(t)&&t.length>0&&u(t[0]),o=!e&&l(t[0]);let i=!1,c=!1,_=!0;if(e){const[e,,n]=g(t.pop().contentRect),o=We(e),r=We(n);i=!n||!o,c=!r&&o,_=!i}else o?[,_]=t:c=!0===t;if(r&&_){const e=o?t[0]:Ne(s);A(s,e?a.n?-Fe:a.i?0:Fe:Fe),M(s,Fe)}i||n({st:!o,$t:o?t:void 0,Ot:!!c})},h=[];let v,w=!!i&&f;if(tt){const t=new tt(f);t.observe(c),p(h,()=>{t.disconnect()})}else{const t=F(`
`);B(c,t),at(c,oe);const e=t[0],n=e.lastChild,o=e.firstChild,r=null==o?void 0:o.firstChild;let a,s=xt(e),l=s,d=!1;const u=()=>{A(o,Fe),M(o,Fe),A(n,Fe),M(n,Fe)},_=t=>{a=0,d&&(s=l,f(!0===t))},g=t=>{l=xt(e),d=!t||!lt(l,s),t?(Tt(t),d&&!a&&(et(a),a=nt(_))):_(!1===t),u()};p(h,[Lt(o,Ge,g),Lt(n,Ge,g)]),bt(r,{width:Fe,height:Fe}),u(),w=i?g.bind(0,!1):u}if(r){v=t({o:!_()},_);const[e]=v;p(h,Lt(s,Ge,t=>{const n=e(),[o,r]=n;r&&(it(c,"ltr rtl"),at(c,o?"rtl":"ltr"),f(n)),Tt(t)}))}return w&&(at(s,ee),p(h,Lt(s,qe,w,{C:!!tt}))),E(e,s),()=>{S(h),q(s)}},Xe=(t,e,n,o)=>{let r=!1;const{It:i,zt:a,At:l,Mt:c,Lt:d,Tt:u}=o||{},[_,g]=((t,e,n)=>{let o,r=!1;const i=i=>{if(n){v(n.reduce((e,n)=>{if(n){const o=n[0],r=n[1],a=r&&o&&(i?i(o):T(o,t));a&&a.length&&r&&s(r)&&p(e,[a,r.trim()],!0)}return e},[]),t=>v(t[0],n=>{const i=t[1],a=o.get(n);if(a){const t=a[0],e=a[1];t===i&&e()}const s=Lt(n,i,t=>{r?(s(),o.delete(n)):e(t)});o.set(n,[i,s])}))}};return n&&(o=new WeakMap,i()),[()=>{r=!0},i]})(t,ft(()=>{r&&n(!0)},{_:33,g:99}),l),f=a||[],h=(i||[]).concat(f),b=r=>{const i=d||gt,a=u||gt,l=[],_=[];let h=!1,b=!1,S=!1;v(r,n=>{const{attributeName:r,target:d,type:u,oldValue:g,addedNodes:v}=n,y="attributes"===u,m="childList"===u,x=t===d,C=y&&s(r)?$(d,r):0,O=0!==C&&g!==C,I=w(f,r)>-1&&O;if(e&&!x){const e=!y,s=y&&I,l=s&&c&&R(d,c),u=(l?!i(d,r,g,C):e||s)&&!a(n,!!l,t,o);p(_,v),b=b||u,S=S||m}!e&&x&&O&&!i(d,r,g,C)&&(p(l,r),h=h||I)}),S&&!y(_)&&g(t=>_.reduce((e,n)=>(p(e,T(t,n)),R(n,t)?p(e,n):e),[])),e?b&&n(!1):y(l)&&!h||n(l,h)},S=new Q(b);return S.observe(t,{attributes:!0,attributeOldValue:!0,attributeFilter:h,subtree:e,childList:e,characterData:e}),r=!0,[()=>{r&&(_(),S.disconnect(),r=!1)},()=>{r&&b(S.takeRecords())}]},Ue=`[${Gt}]`,Je=`.${Ut}`,Ke=["tabindex"],Qe=["wrap","cols","rows"],Ze=["id","class","style","open"],tn=(e,n,o)=>{let r,i,l;const[,u]=n,{O:_,$:g,A:f,K:h,et:b,nt:y,ot:m}=e,{R:C,V:O}=xe(),[I]=t({s:lt,o:{w:0,h:0}},()=>{const t=y(Zt,Wt);t&&m(Zt,Wt);const e=Ot(f),n=Ot(g),o=$t(g);return t&&m(Zt,Wt,!0),{w:n.w+e.w+o.w,h:n.h+e.h+o.h}}),A=h?Qe:Ze.concat(Qe),M=ft(o,{_:()=>r,g:()=>i,v(t,e){const[n]=t,[o]=e;return[x(n).concat(x(o)).reduce((t,e)=>(t[e]=n[e]||o[e],t),{})]}}),L=t=>{v(t||Ke,t=>{if(w(Ke,t)>-1){const e=$(_,t);s(e)?$(g,t,e):z(g,t)}})},T=({st:t,$t:e,Ot:n})=>{const r=!t||n?o:M;let i=!1;if(e){const[t,n]=e;i=n,u({ct:t})}r({st:t,dt:i})},R=t=>{const[,e]=I();e&&(t?o:M)({lt:!0})},P=(f||!O)&&((e,n)=>{const o=G(ae),r=[],[i]=t({o:!1}),a=t=>{if(t){const o=i(0===(e=t).h||e.isIntersecting||e.intersectionRatio>0),[,r]=o;r&&n(o)}var e};if(Z){const t=new Z(t=>{t&&t.length>0&&a(t.pop())},{root:e});t.observe(o),p(r,()=>{t.disconnect()})}else{const t=()=>{const t=xt(o);a(t)};p(r,Ye(o,t)),t()}return E(e,o),()=>{S(r),q(o)}})(_,t=>{const[e,n]=t;u({rt:e}),o({it:n})}),D=!b&&Ye(_,T,{Ot:!0,Ct:!C}),[V]=Xe(_,!1,(t,e)=>{e?M({pt:!0}):b||L(t)},{zt:Ze,It:Ze.concat(Ke)}),H=b&&new tt(T.bind(0,{st:!0}));return H&&H.observe(_),L(),[t=>{const[e]=t("updating.ignoreMutation"),[n,o]=t("updating.attributes"),[s,u]=t("updating.elementEvents"),[_,h]=t("updating.debounce");if((u||o)&&(l&&(l[1](),l[0]()),l=Xe(f||g,!0,R,{zt:A.concat(n||[]),It:A.concat(n||[]),At:s,Mt:Ue,Tt:(t,n)=>{const{target:o,attributeName:r}=t;return!(n||!r)&&j(o,Ue,Je)||!!(t=>c(e)&&e(t))(t)}})),h)if(M.p(),d(_)){const t=_[0],e=_[1];r=!!a(t)&&t,i=!!a(e)&&e}else a(_)?(r=_,i=!1):(r=!1,i=!1)},()=>{l&&l[0](),P&&P(),D&&D(),H&&H.disconnect(),V()}]},en={I:{t:0,r:0,b:0,l:0},ut:!1,_t:{marginRight:0,marginBottom:0,marginLeft:0,paddingTop:0,paddingRight:0,paddingBottom:0,paddingLeft:0},bt:{x:0,y:0},vt:{x:"hidden",y:"hidden"},yt:{x:!1,y:!1},rt:!1,ct:!1},nn=(t,e)=>{const n=Ht(e,{}),o=Bt(en),r=new Set,[i]=o,s=(t,e,n)=>{S(r,[t,e||{},!!n])},[l,c]=Ae(t),d=((t,e)=>{const{$:n}=t,{R:o,T:r,V:i}=xe(),s=!o&&(r.x||r.y),l=[Me(t,e),Le(t,e),Ee(t,e)];return(t,e,o)=>{const r=ke(C({st:!1,gt:!1,dt:!1,it:!1,xt:!1,St:!1,pt:!1,lt:!1},e),{},o),c=s||!i,d=c&&A(n),u=c&&M(n);let _=r;return v(l,e=>{_=ke(_,e(_,t,!!o)||{},o)}),a(d)&&A(n,d),a(u)&&M(n,u),_}})(l,o),[u,_]=tn(l,o,t=>{s(d(n,t))}),g=i.bind(0);return g.Rt=t=>{r.add(t)},g.Pt=l,[(t,n)=>{const o=Ht(e,t,n);u(o),s(d(o,{},n))},g,()=>{r.clear(),_(),c()}]},on=t=>{const e=G(`${se} ${t}`),n=G(de),o=G(ue);return B(e,n),B(n,o),{Dt:e,Vt:n,jt:o}},rn=(t,e,n)=>{const o=Bt({}),[r]=o,[i,a]=((t,e)=>{const{H:n}=xe(),{M:o}=n(),{N:r,O:i,$:a,tt:s}=e,l=!s&&t.scrollbarsSlot,d=(c(l)?l(r,i,a):l)||(c(o)?o(r,i,a):o)||i,u=on(le),_=on(ce),{Dt:g}=u,{Dt:f}=_;return B(d,g),B(d,f),[{Ht:u,Bt:_},q.bind(0,[g,f])]})(t,n),s=r.bind(0);return s.Pt=i,[(t,n)=>{const o=Ht(e,t,n);console.log(o)},s,()=>{a()}]},an={};var sn,ln={exports:{}};!function(t){function e(){return t.exports=e=Object.assign?Object.assign.bind():function(t){for(var e=1;e(t[e]=cn[0]+e+cn[1],t),{});dn.number,dn.boolean,dn.array,dn.null;dn.number,dn.array,dn.null,dn.function,dn.null;const un="__osOptionsValidationPlugin",_n=new Set,gn=new WeakMap,fn=(t,e,n)=>{const{k:o,T:r,j:i}=xe(),a=C({},an),s=f(t)?t:t.target,l=(t=>gn.get(t))(s);if(l)return l;const d=a[un],u=t=>{const e=t||{},n=d&&d.kt;return n?n(e,!0):e},_=C({},o(),u(e)),[g,h,w]=Vt(n);r.x&&r.y&&!_.nativeScrollbarsOverlaid.initialize&&w("initializationWithdrawn");const[p,b,y]=nn(t,_),[S,,m]=rn(t,_,b.Pt),O=(t,e)=>{p(t,e),S(t,e)},$=i(O.bind(0,{},!0));b.Rt((t,e,n)=>{const{st:o,dt:r,it:i,xt:a,St:s,lt:l,pt:c}=t;w("updated",{updateHints:{sizeChanged:o,directionChanged:r,heightIntrinsicChanged:i,overflowAmountChanged:a,overflowStyleChanged:s,contentMutation:l,hostMutation:c},changedOptions:e,force:n})});const I={options(t){if(t){const e=fe(_,u(t));(function(t){for(const e in t)return!1;return!0})(e)||(C(_,e),O(e))}return C({},_)},on:g,off:h,state(){const{bt:t,vt:e,yt:n,I:o,ut:r}=b();return C({},{overflowAmount:t,overflowStyle:e,hasOverflow:n,padding:o,paddingAbsolute:r})},elements(){const{N:t,O:e,I:n,$:o,A:r}=b.Pt;return C({},{target:t,host:e,padding:n||o,viewport:o,content:r||o})},update(t){O({},t)},destroy:()=>{(t=>{gn.delete(t),_n.delete(t)})(s),$(),h(),m(),y(),w("destroyed")}};return v(x(a),t=>{const e=a[t];c(e)&&e(fn,I)}),I.update(!0),((t,e)=>{gn.set(t,e),_n.add(t)})(s,I),w("initialized"),I};fn.plugin=t=>v(d(t)?t:[t],t=>{an[t[0]]=t[1]}),fn.env=()=>{const{L:t,T:e,R:n,D:o,V:r,P:i,G:a,F:s,H:l,B:c,k:d,q:u}=xe();return C({},{scrollbarSize:t,scrollbarIsOverlaid:e,scrollbarStyling:n,rtlScrollBehavior:o,flexboxGlue:r,cssCustomProperties:i,defaultInitializationStrategy:a,defaultDefaultOptions:s,getInitializationStrategy:l,setInitializationStrategy:c,getDefaultOptions:d,setDefaultOptions:u})};export{fn as default}; \ No newline at end of file +function t(t,e){const{o:n,s:o,u:r}=t;let i,a=n;const s=(t,e)=>{const n=a,s=t,l=e||(o?!o(n,s):n!==s);return(l||r)&&(a=s,i=n),[a,l,i]};return[e?t=>s(e(a,i),t):s,t=>[a,!!t,i]]}const e=Node.ELEMENT_NODE,{toString:n,hasOwnProperty: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 e=!!t&&t.length,n=a(e)&&e>-1&&e%1==0;return!!(d(t)||!c(t)&&n)&&(!(e>0&&u(t))||e-1 in t)}function g(t){if(!t||!u(t)||"object"!==(t=>r(t)||i(t)?`${t}`:n.call(t).replace(/^\[object (.+)\]$/,"$1").toLowerCase())(t))return!1;let e;const a="constructor",s=t[a],l=s&&s.prototype,c=o.call(t,a),d=l&&o.call(l,"isPrototypeOf");if(s&&!c&&!d)return!1;for(e in t);return r(e)||o.call(t,e)}function f(t){const n=window.HTMLElement;return!!t&&(n?t instanceof n:t.nodeType===e)}function h(t){const n=window.Element;return!!t&&(n?t instanceof n:t.nodeType===e)}function v(t,e){if(_(t))for(let n=0;ne(t[n],n,t));return t}const w=(t,e,n)=>t.indexOf(e,n),p=(t,e,n)=>(n||s(e)||!_(e)?t.push(e):Array.prototype.push.apply(t,e),t),b=t=>{if(Array.from&&t)return Array.from(t);const e=[];return t instanceof Set?t.forEach(t=>{p(e,t)}):v(t,t=>{p(e,t)}),e},y=t=>!!t&&0===t.length,S=(t,e)=>{const n=t=>t&&t.apply(void 0,e||[]);t instanceof Set?t.forEach(n):v(t,n)},m=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),x=t=>t?Object.keys(t):[];function C(t,e,n,o,r,a,s){const l=[e,n,o,r,a,s];return"object"==typeof t&&!i(t)||c(t)||(t={}),v(l,e=>{v(x(e),n=>{const o=e[n];if(t===o)return!0;const r=d(o);if(o&&(g(o)||r)){const e=t[n];let i=e;r&&!d(e)?i=[]:r||g(e)||(i={}),t[n]=C(i,o)}else t[n]=o})}),t}function $(t,e,n,o){if(r(o))return n?n[t]:e;n&&(n[t]=o)}function O(t,e,n){if(r(n))return t?t.getAttribute(e):null;t&&t.setAttribute(e,n)}const I=(t,e,n,o)=>{const r=O(t,e)||"",i=new Set(r.split(" "));i[o?"add":"delete"](n),O(t,e,b(i).join(" ").trim())},z=(t,e)=>{t&&t.removeAttribute(e)};function A(t,e){return $("scrollLeft",0,t,e)}function M(t,e){return $("scrollTop",0,t,e)}const L=Element.prototype,R=(t,e)=>{const n=[],o=e?h(e)?e:null:document;return o?p(n,o.querySelectorAll(t)):n},T=(t,e)=>{if(h(t)){return(L.matches||L.msMatchesSelector).call(t,e)}return!1},D=t=>t?b(t.childNodes):[],V=t=>t?t.parentElement:null,P=(t,e)=>{if(h(t)){const n=L.closest;if(n)return n.call(t,e);do{if(T(t,e))return t;t=V(t)}while(t)}return null},H=(t,e,n)=>{const o=t&&P(t,e),r=t&&((t,e)=>{const n=e?h(e)?e:null:document;return n?n.querySelector(t):null})(n,o);return!(!o||!r)&&(o===t||r===t||P(P(t,n),e)!==o)},B=(t,e,n)=>{if(n){let o,r=e;t&&(_(n)?(o=document.createDocumentFragment(),v(n,t=>{t===r&&(r=t.previousSibling),o.appendChild(t)})):o=n,e&&(r?r!==e&&(r=r.nextSibling):r=t.firstChild),t.insertBefore(o,r||null))}},E=(t,e)=>{B(t,null,e)},j=(t,e)=>{B(t,t&&t.firstChild,e)},k=(t,e)=>{B(V(t),t&&t.nextSibling,e)},q=t=>{if(_(t))v(b(t),t=>q(t));else if(t){const e=V(t);e&&e.removeChild(t)}},G=t=>{const e=document.createElement("div");return t&&O(e,"class",t),e},F=t=>{const e=G();return e.innerHTML=t.trim(),v(D(e),t=>q(t))},N=t=>t.charAt(0).toUpperCase()+t.slice(1),W=["-webkit-","-moz-","-o-","-ms-"],X=["WebKit","Moz","O","MS","webkit","moz","o","ms"],Y={},U={},J=t=>{let e=U[t];if(m(U,t))return e;const n=N(t),o=G().style;return v(W,r=>{const i=r.replace(/-/g,""),a=[t,r+t,i+n,N(i)+n];return!(e=a.find(t=>void 0!==o[t]))}),U[t]=e||""},K=t=>{let e=Y[t]||window[t];return m(Y,t)||(v(X,n=>(e=e||window[n+N(t)],!e)),Y[t]=e),e},Q=K("MutationObserver"),Z=K("IntersectionObserver"),tt=K("ResizeObserver"),et=K("cancelAnimationFrame"),nt=K("requestAnimationFrame"),ot=/[^\x20\t\r\n\f]+/g,rt=(t,e,n)=>{let o,r=0,i=!1;if(t&&e&&s(e)){const a=e.match(ot)||[];for(i=a.length>0;o=a[r++];)i=!!n(t.classList,o)&&i}return i},it=(t,e)=>{rt(t,e,(t,e)=>t.remove(e))},at=(t,e)=>(rt(t,e,(t,e)=>t.add(e)),it.bind(0,t,e)),st=(t,e,n,o)=>{if(t&&e){let r=!0;return v(n,n=>{(o?o(t[n]):t[n])!==(o?o(e[n]):e[n])&&(r=!1)}),r}return!1},lt=(t,e)=>st(t,e,["w","h"]),ct=(t,e)=>st(t,e,["x","y"]),dt=(t,e)=>st(t,e,["t","r","b","l"]),ut=(t,e,n)=>st(t,e,["width","height"],n&&(t=>Math.round(t))),_t=t=>{t&&window.clearTimeout(t),t&&et(t)},gt=()=>{},ft=(t,e)=>{let n,o,r,i;const{_:s,g:l,v:d}=e||{},u=window.setTimeout,_=function(e){_t(n),_t(o),o=n=r=void 0,t.apply(this,e)},g=t=>d&&r?d(r,t):t,f=()=>{n&&_(g(i)||i)},h=function(){const t=b(arguments),e=c(s)?s():s,d=a(e)&&e>=0;if(d){const s=c(l)?l():l,d=a(s)&&s>=0,h=e>0?u:nt,v=g(t)||t,w=_.bind(0,v);_t(n),n=h(w,e),d&&!o&&(o=u(f,s)),r=i=v}else _(t)};return h.p=f,h},ht={opacity:1,zindex:1},vt=(t,e)=>{const n=e?parseFloat(t):parseInt(t,10);return Number.isNaN(n)?0:n},wt=(t,e,n)=>null!=e?e[n]||e.getPropertyValue(n):t.style[n],pt=(t,e,n)=>{try{if(t){const{style:o}=t;r(o[e])?o.setProperty(e,n):o[e]=((t,e)=>!ht[t.toLowerCase()]&&a(e)?`${e}px`:e)(e,n)}}catch(o){}};function bt(t,e){const n=s(e);if(d(e)||n){let o=n?"":{};if(t){const r=window.getComputedStyle(t,null);o=n?wt(t,r,e):e.reduce((e,n)=>(e[n]=wt(t,r,n),e),o)}return o}v(x(e),n=>pt(t,n,e[n]))}const yt=(t,e,n)=>{const o=e?`${e}-`:"",r=n?`-${n}`:"",i=`${o}top${r}`,a=`${o}right${r}`,s=`${o}bottom${r}`,l=`${o}left${r}`,c=bt(t,[i,a,s,l]);return{t:vt(c[i]),r:vt(c[a]),b:vt(c[s]),l:vt(c[l])}},St={w:0,h:0},mt=()=>({w:window.innerWidth,h:window.innerHeight}),xt=t=>t?{w:t.offsetWidth,h:t.offsetHeight}:St,Ct=t=>t?{w:t.clientWidth,h:t.clientHeight}:St,$t=t=>t?{w:t.scrollWidth,h:t.scrollHeight}:St,Ot=t=>{const e=parseFloat(bt(t,"height"))||0,n=parseFloat(bt(t,"height"))||0;return{w:n-Math.round(n),h:e-Math.round(e)}},It=t=>t.getBoundingClientRect();let zt;const At=t=>t.split(" "),Mt=(t,e,n,o)=>{v(At(e),e=>{t.removeEventListener(e,n,o)})},Lt=(t,e,n,o)=>{const i=(()=>{if(r(zt)){zt=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){zt=!0}}))}catch(t){}}return zt})(),a=i&&o&&o.S||!1,s=o&&o.m||!1,l=o&&o.C||!1,c=[],d=i?{passive:a,capture:s}:s;return v(At(e),e=>{const o=l?r=>{t.removeEventListener(e,o,s),n&&n(r)}:n;p(c,Mt.bind(null,t,e,o,s)),t.addEventListener(e,o,d)}),S.bind(0,c)},Rt=t=>(t=>t.stopPropagation())(t)||(t=>t.preventDefault())(t),Tt={x:0,y:0},Dt=t=>{const e=t?It(t):0;return e?{x:e.left+window.pageYOffset,y:e.top+window.pageXOffset}:Tt},Vt=(t,e)=>{v(d(e)?e:[e],t)},Pt=t=>{const e=new Map,n=(t,n)=>{if(t){const o=e.get(t);Vt(t=>{o&&o[t?"delete":"clear"](t)},n)}else e.forEach(t=>{t.clear()}),e.clear()},o=(t,o)=>{const r=e.get(t)||new Set;return e.set(t,r),Vt(t=>{t&&r.add(t)},o),n.bind(0,t,o)};return v(x(t),e=>{o(e,t[e])}),[o,n,(t,n)=>{const o=e.get(t);v(b(o),t=>{n?t(n):t()})}]},Ht=(t,e)=>t?e.split(".").reduce((t,e)=>t&&m(t,e)?t[e]:void 0,t):void 0,Bt=(t,e,n)=>o=>[Ht(t,o),n||void 0!==Ht(e,o)],Et=t=>{let e=t;return[()=>e,t=>{e=C({},e,t)}]},jt="os-environment",kt=`${jt}-flexbox-glue`,qt=`${kt}-max`,Gt="data-overlayscrollbars",Ft=`${Gt}-overflow-x`,Nt=`${Gt}-overflow-y`,Wt="overflowVisible",Xt="viewportStyled",Yt="os-padding",Ut="os-viewport",Jt=`${Ut}-arrange`,Kt="os-content",Qt=`${Ut}-scrollbar-styled`,Zt=`os-overflow-visible`,te="os-size-observer",ee=`${te}-appear`,ne=`${te}-listener`,oe=`${ne}-scroll`,re=`${ne}-item`,ie=`${re}-final`,ae="os-trinsic-observer",se="os-scrollbar",le=`${se}-horizontal`,ce=`${se}-vertical`,de="os-scrollbar-track",ue="os-scrollbar-handle",_e=t=>JSON.stringify(t,(t,e)=>{if(c(e))throw new Error;return e}),ge={paddingAbsolute:!1,updating:{elementEvents:[["img","load"]],debounce:[0,33],attributes:null,ignoreMutation:null},overflow:{x:"scroll",y:"scroll"},nativeScrollbarsOverlaid:{show:!1,initialize:!1},scrollbars:{visibility:"auto",autoHide:"never",autoHideDelay:800,dragScroll:!0,clickScroll:!1,touch:!0}},fe=(t,e)=>{const n={};return v(x(e).concat(x(t)),o=>{const r=t[o],i=e[o];if(u(r)&&u(i))C(n[o]={},fe(r,i));else if(m(e,o)&&i!==r){let t=!0;if(d(r)||d(i))try{_e(r)===_e(i)&&(t=!1)}catch(a){}t&&(n[o]=i)}}),n};let he;const{abs:ve,round:we}=Math,pe=(t,e,n)=>{E(t,e);const o=Ct(e),r=xt(e),i=Ot(n);return{x:r.h-o.h+i.h,y:r.w-o.w+i.w}},be=(t,e)=>{const n="hidden";bt(t,{overflowX:n,overflowY:n,direction:"rtl"}),A(t,0);const o=Dt(t),r=Dt(e);A(t,-999);const i=Dt(e);return{i:o.x===r.x,n:r.x!==i.x}},ye=(t,e)=>{const n=at(t,kt),o=It(t),r=It(e),i=ut(r,o,!0),a=at(t,qt),s=It(t),l=It(e),c=ut(l,s,!0);return n(),a(),i&&c},Se=()=>{const t=window.screen.deviceXDPI||0,e=window.screen.logicalXDPI||1;return window.devicePixelRatio||t/e},me=()=>{const{body:e}=document,n=F(`
`)[0],o=n.firstChild,[r,,i]=Pt(),[a,s]=t({o:pe(e,n,o),s:ct}),[l]=s(),c=(t=>{let e=!1;const n=at(t,Qt);try{e="none"===bt(t,J("scrollbar-width"))||"none"===window.getComputedStyle(t,"::-webkit-scrollbar").getPropertyValue("display")}catch(o){}return n(),e})(n),d={x:0===l.x,y:0===l.y},u=(t=>({$:null,O:null,I:!t,A:!1,M:null}))(c),_=C({},ge),g={L:l,R:d,T:c,D:"-1"===bt(n,"zIndex"),V:be(n,o),P:ye(n,o),H:t=>r("_",t),B:C.bind(0,{},u),j(t){C(u,t)},k:C.bind(0,{},_),q(t){C(_,t)},G:C({},u),F:C({},_)};if(z(n,"style"),q(n),!(c||d.x&&d.y)){let t=mt(),r=Se();window.addEventListener("resize",()=>{const s=mt(),l={w:s.w-t.w,h:s.h-t.h};if(0===l.w&&0===l.h)return;const c=ve(l.w),d=ve(l.h),u={w:ve(we(s.w/(t.w/100))),h:ve(we(s.h/(t.h/100)))},_=Se(),g=c>2&&d>2,f=!((t,e)=>{const n=ve(t),o=ve(e);return!(n===o||n+1===o||n-1===o)})(u.w,u.h);if(g&&f&&(_!==r&&r>0)){const[t,r]=a(pe(e,n,o));C(he.L,t),q(n),r&&i("_")}t=s,r=_})}return g},xe=()=>(he||(he=me()),he);let Ce=0;const $e=t=>{E(V(t),D(t)),q(t)},Oe=()=>{const{T:t,R:e,D:n}=xe(),o=!!(!n&&!t&&(e.x||e.y))&&document.createElement("style");return o&&(O(o,"id",`${Jt}-${Ce}`),Ce++),o},Ie=(t,e,n)=>e||(c(n)?n(t):n)||G(),ze=(t,e,n)=>{const o=l(e)||e?e:c(n)?n(t):n;return!0===o?G():o},Ae=t=>{const{B:e,T:n}=xe(),{$:o,O:r,I:i,A:a}=e(),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=!!tt&&n,b=Ie(c,l.viewport,r),y=b===c,m=v&&y,C=y&&!m?Ie(c):b,$={N:c,$:d?Ie(c,l.host,o):c,O:C,I:ze(c,l.padding,i),A:ze(c,l.content,a),W:!m&&Oe(),X:h,Y:_,U:V(g),J:g,K:d,Z:u,tt:s,et:m,nt:(t,e)=>m?((t,e,n)=>{const o=O(t,e)||"";return new Set(o.split(" ")).has(n)})(C,Gt,e):((t,e)=>rt(t,e,(t,e)=>t.contains(e)))(C,t),ot:(t,e,n)=>m?I(C,Gt,e,n):(n?at:it)(C,t)},A=x($).reduce((t,e)=>{const n=$[e];return p(t,!(!n||V(n))&&n)},[]),M=t=>t?w(A,t)>-1:null,{N:L,$:R,I:P,O:H,A:j,W:G}=$,F=[],N=d&&M(R),W=d?L:D([j,H,P,R,L].find(t=>!1===M(t))),X=j||H,Y=(O(U=R,Gt,(m?"viewport":"host")||""),z.bind(0,U,Gt));var U;const J=at(P,Yt),K=at(H,!m&&Ut),Q=at(j,Kt);var Z,et;return N&&(k(L,R),p(F,()=>{k(R,L),q(R)})),E(X,W),E(R,P),E(P||R,!m&&H),E(H,j),p(F,()=>{Y(),z(H,Ft),z(H,Nt),M(j)&&$e(j),M(H)&&$e(H),M(P)&&$e(P),J(),K(),Q()}),n&&!m&&p(F,it.bind(0,H,Qt)),G&&(et=G,B(V(Z=H),Z,et),p(F,q.bind(0,G))),[$,S.bind(0,F)]},Me=(t,e)=>{const{A:n}=t,[o]=e;return t=>{const{P:e}=xe(),{rt:r}=o(),{it:i}=t,a=(n||!e)&&i;return a&&bt(n,{height:r?"":"100%"}),{st:a,lt:a}}},Le=(e,n)=>{const[o,r]=n,{$:i,I:a,O:s,et:l}=e,[c,d]=t({s:dt,o:yt()},yt.bind(0,i,"padding",""));return(t,e,n)=>{let[i,u]=d(n);const{T:_,P:g}=xe(),{ct:f}=o(),{st:h,lt:v,dt:w}=t,[p,b]=e("paddingAbsolute");(h||u||!g&&v)&&([i,u]=c(n));const y=!l&&(b||w||u);if(y){const t=!p||!a&&!_,e=i.r+i.l,n=i.t+i.b,o={marginRight:t&&!f?-e:0,marginBottom:t?-n:0,marginLeft:t&&f?-e:0,top:t?-i.t:0,right:t?f?-i.r:"auto":0,left:t?f?"auto":-i.l:0,width:t?`calc(100% + ${e}px)`:""},l={paddingTop:t?i.t:0,paddingRight:t?i.r:0,paddingBottom:t?i.b:0,paddingLeft:t?i.l:0};bt(a||s,o),bt(s,l),r({I:i,ut:!t,_t:a?l:C({},o,l)})}return{gt:y}}},{max:Re}=Math,Te="visible",De="hidden",Ve=42,Pe={s:lt,o:{w:0,h:0}},He={s:ct,o:{x:De,y:De}},Be=(t,e,n)=>n?at(t,e):it(t,e),Ee=t=>0===t.indexOf(Te),je=(e,n)=>{const[o,r]=n,{$:i,I:a,O:s,W:l,et:c,ot:d}=e,{L:u,P:_,T:g,R:f}=xe(),h=!c&&!g&&(f.x||f.y),[w,p]=t(Pe,Ot.bind(0,s)),[b,y]=t(Pe,$t.bind(0,s)),[S,m]=t(Pe),[C]=t(He),$=(t,e)=>{if(bt(s,{height:""}),e){const{ut:e,I:n}=o(),{ft:r,ht:a}=t,l=Ot(i),c=Ct(i),d="content-box"===bt(s,"boxSizing"),u=e||d?n.b+n.t:0,_=!(f.x&&d);bt(s,{height:c.h+l.h+(r.x&&_?a.x:0)-u})}},z=(t,e)=>{const n=g||t?0:Ve,o=(t,o,r)=>{const i=bt(s,t),a="scroll"===(e?e[t]:i);return[i,a,a&&!g?o?n:r:0,o&&!!n]},[r,i,a,l]=o("overflowX",f.x,u.x),[c,d,_,h]=o("overflowY",f.y,u.y);return{vt:{x:r,y:c},ft:{x:i,y:d},ht:{x:a,y:_},wt:{x:l,y:h}}},A=(t,e,n,r)=>{if(h){const{_t:i}=o(),{ht:a,wt:c}=t,{x:d,y:u}=c,{x:_,y:g}=a,f=i[r?"paddingRight":"paddingLeft"],h=i.paddingTop,v=e.w+n.w,w=e.h+n.h,p={w:g&&u?`${g+v-f}px`:"",h:_&&d?`${_+w-h}px`:""};if(l){const{sheet:t}=l;if(t){const{cssRules:e}=t;if(e){e.length||t.insertRule(`#${O(l,"id")} + .${Jt}::before {}`,0);const n=e[0].style;n.width=p.w,n.height=p.h}}}else bt(s,{"--os-vaw":p.w,"--os-vah":p.h})}return h},M=(t,e,n,r)=>{const{ht:i,wt:a}=t,{x:s,y:l}=a,{x:c,y:d}=i,{_t:u}=o(),_=e?"marginLeft":"marginRight",g=e?"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,n&&(r[g]=v+(l?d:0),r.paddingBottom=w+(s?c:0))};return(t,e,n)=>{const{st:l,pt:u,lt:L,gt:R,it:T,dt:D}=t,{rt:V,ct:P}=o(),[H,B]=e("nativeScrollbarsOverlaid.show"),[E,j]=e("overflow"),k=H&&f.x&&f.y,q=!c&&!_&&(l||L||u||B||T),G=Ee(E.x),F=Ee(E.y),N=G||F;let W,X=p(n),Y=y(n),U=m(n);if(B&&g&&d(Qt,Xt,!k),q&&(W=z(k),$(W,V)),l||R||L||D||B){N&&d(Zt,Wt,!1);const[t,e]=((t,e,n)=>{if(h){const r=n||z(t),{_t:i}=o(),{wt:a}=r,{x:l,y:c}=a,d={},u=t=>v(t.split(" "),t=>{d[t]=i[t]});l&&u("marginBottom paddingTop paddingBottom"),c&&u("marginLeft marginRight paddingLeft paddingRight");const g=bt(s,x(d));return it(s,Jt),_||(d.height=""),bt(s,d),[()=>{M(r,e,h,g),bt(s,g),at(s,Jt)},r]}return[gt]})(k,P,W),[r,i]=X=w(n),[a,l]=Y=b(n),c=Ct(s);let u=a,g=c;t(),(l||i||B)&&e&&!k&&A(e,a,r,P)&&(g=Ct(s),u=$t(s)),U=S(((t,e,n)=>{const o=window.devicePixelRatio%1!=0?1:0,r={w:Re(0,t.w-e.w-Re(0,n.w)),h:Re(0,t.h-e.h-Re(0,n.h))};return{w:r.w>o?r.w:0,h:r.h>o?r.h:0}})({w:Re(a.w,u.w),h:Re(a.h,u.h)},{w:g.w+Re(0,c.w-a.w),h:g.h+Re(0,c.h-a.h)},r),n)}const[J,K]=U,[Q,Z]=Y,[tt,et]=X,nt={x:J.w>0,y:J.h>0},ot=G&&F&&(nt.x||nt.y)||G&&nt.x&&!nt.y||F&&nt.y&&!nt.x;if(R||D||et||Z||K||j||B||q){const t={marginRight:0,marginBottom:0,marginLeft:0,width:"",overflowY:"",overflowX:""},e=((t,e,n,o)=>{const r=(t,e)=>{const n=Ee(t),o=e&&n&&t.replace(`${Te}-`,"")||"";return[e&&!n?t:"",Ee(o)?"hidden":o]},[i,a]=r(n.x,e.x),[s,l]=r(n.y,e.y);return o.overflowX=a&&s?a:i,o.overflowY=l&&i?l:s,z(t,o)})(k,nt,E,t),n=A(e,Q,tt,P);c||M(e,P,n,t),q&&$(e,V),c?(O(i,Ft,t.overflowX),O(i,Nt,t.overflowY)):bt(s,t)}I(i,Gt,Wt,ot),Be(a,Zt,ot),!c&&Be(s,Zt,N);const[rt,st]=C(z(k).vt);return r({vt:rt,bt:{x:J.w,y:J.h},yt:nt}),{St:st,xt:K}}},ke=(t,e,n)=>{const o={},r=e||{};return v(x(t).concat(x(r)),e=>{const i=t[e],a=r[e];o[e]=!!(n||i||a)}),o},qe="animationstart",Ge="scroll",Fe=3333333,Ne=t=>"rtl"===bt(t,"direction"),We=t=>t&&(t.height||t.width),Xe=(e,n,o)=>{const{Ct:r=!1,$t:i=!1}=o||{},{V:a}=xe(),s=F(`
`)[0],c=s.firstChild,_=Ne.bind(0,s),[g]=t({o:void 0,u:!0,s:(t,e)=>!(!t||!We(t)&&We(e))}),f=t=>{const e=d(t)&&t.length>0&&u(t[0]),o=!e&&l(t[0]);let i=!1,c=!1,_=!0;if(e){const[e,,n]=g(t.pop().contentRect),o=We(e),r=We(n);i=!n||!o,c=!r&&o,_=!i}else o?[,_]=t:c=!0===t;if(r&&_){const e=o?t[0]:Ne(s);A(s,e?a.n?-Fe:a.i?0:Fe:Fe),M(s,Fe)}i||n({st:!o,Ot:o?t:void 0,$t:!!c})},h=[];let v,w=!!i&&f;if(tt){const t=new tt(f);t.observe(c),p(h,()=>{t.disconnect()})}else{const t=F(`
`);E(c,t),at(c,oe);const e=t[0],n=e.lastChild,o=e.firstChild,r=null==o?void 0:o.firstChild;let a,s=xt(e),l=s,d=!1;const u=()=>{A(o,Fe),M(o,Fe),A(n,Fe),M(n,Fe)},_=t=>{a=0,d&&(s=l,f(!0===t))},g=t=>{l=xt(e),d=!t||!lt(l,s),t?(Rt(t),d&&!a&&(et(a),a=nt(_))):_(!1===t),u()};p(h,[Lt(o,Ge,g),Lt(n,Ge,g)]),bt(r,{width:Fe,height:Fe}),u(),w=i?g.bind(0,!1):u}if(r){v=t({o:!_()},_);const[e]=v;p(h,Lt(s,Ge,t=>{const n=e(),[o,r]=n;r&&(it(c,"ltr rtl"),at(c,o?"rtl":"ltr"),f(n)),Rt(t)}))}return w&&(at(s,ee),p(h,Lt(s,qe,w,{C:!!tt}))),j(e,s),()=>{S(h),q(s)}},Ye=(t,e,n,o)=>{let r=!1;const{It:i,zt:a,At:l,Mt:c,Lt:d,Rt:u}=o||{},[_,g]=((t,e,n)=>{let o,r=!1;const i=i=>{if(n){v(n.reduce((e,n)=>{if(n){const o=n[0],r=n[1],a=r&&o&&(i?i(o):R(o,t));a&&a.length&&r&&s(r)&&p(e,[a,r.trim()],!0)}return e},[]),t=>v(t[0],n=>{const i=t[1],a=o.get(n);if(a){const t=a[0],e=a[1];t===i&&e()}const s=Lt(n,i,t=>{r?(s(),o.delete(n)):e(t)});o.set(n,[i,s])}))}};return n&&(o=new WeakMap,i()),[()=>{r=!0},i]})(t,ft(()=>{r&&n(!0)},{_:33,g:99}),l),f=a||[],h=(i||[]).concat(f),b=r=>{const i=d||gt,a=u||gt,l=[],_=[];let h=!1,b=!1,S=!1;v(r,n=>{const{attributeName:r,target:d,type:u,oldValue:g,addedNodes:v}=n,y="attributes"===u,m="childList"===u,x=t===d,C=y&&s(r)?O(d,r):0,$=0!==C&&g!==C,I=w(f,r)>-1&&$;if(e&&!x){const e=!y,s=y&&I,l=s&&c&&T(d,c),u=(l?!i(d,r,g,C):e||s)&&!a(n,!!l,t,o);p(_,v),b=b||u,S=S||m}!e&&x&&$&&!i(d,r,g,C)&&(p(l,r),h=h||I)}),S&&!y(_)&&g(t=>_.reduce((e,n)=>(p(e,R(t,n)),T(n,t)?p(e,n):e),[])),e?b&&n(!1):y(l)&&!h||n(l,h)},S=new Q(b);return S.observe(t,{attributes:!0,attributeOldValue:!0,attributeFilter:h,subtree:e,childList:e,characterData:e}),r=!0,[()=>{r&&(_(),S.disconnect(),r=!1)},()=>{r&&b(S.takeRecords())}]},Ue=`[${Gt}]`,Je=`.${Ut}`,Ke=["tabindex"],Qe=["wrap","cols","rows"],Ze=["id","class","style","open"],tn=(e,n,o)=>{let r,i,l;const[,u]=n,{$:_,O:g,A:f,K:h,et:b,nt:y,ot:m}=e,{T:C,P:$}=xe(),[I]=t({s:lt,o:{w:0,h:0}},()=>{const t=y(Zt,Wt);t&&m(Zt,Wt);const e=$t(f),n=$t(g),o=Ot(g);return t&&m(Zt,Wt,!0),{w:n.w+e.w+o.w,h:n.h+e.h+o.h}}),A=h?Qe:Ze.concat(Qe),M=ft(o,{_:()=>r,g:()=>i,v(t,e){const[n]=t,[o]=e;return[x(n).concat(x(o)).reduce((t,e)=>(t[e]=n[e]||o[e],t),{})]}}),L=t=>{v(t||Ke,t=>{if(w(Ke,t)>-1){const e=O(_,t);s(e)?O(g,t,e):z(g,t)}})},R=({st:t,Ot:e,$t:n})=>{const r=!t||n?o:M;let i=!1;if(e){const[t,n]=e;i=n,u({ct:t})}r({st:t,dt:i})},T=t=>{const[,e]=I();e&&(t?o:M)({lt:!0})},D=(f||!$)&&((e,n)=>{const o=G(ae),r=[],[i]=t({o:!1}),a=t=>{if(t){const o=i(0===(e=t).h||e.isIntersecting||e.intersectionRatio>0),[,r]=o;r&&n(o)}var e};if(Z){const t=new Z(t=>{t&&t.length>0&&a(t.pop())},{root:e});t.observe(o),p(r,()=>{t.disconnect()})}else{const t=()=>{const t=xt(o);a(t)};p(r,Xe(o,t)),t()}return j(e,o),()=>{S(r),q(o)}})(_,t=>{const[e,n]=t;u({rt:e}),o({it:n})}),V=!b&&Xe(_,R,{$t:!0,Ct:!C}),[P]=Ye(_,!1,(t,e)=>{e?M({pt:!0}):b||L(t)},{zt:Ze,It:Ze.concat(Ke)}),B=b&&new tt(R.bind(0,{st:!0}));return B&&B.observe(_),L(),[t=>{const[e]=t("updating.ignoreMutation"),[n,o]=t("updating.attributes"),[s,u]=t("updating.elementEvents"),[_,h]=t("updating.debounce");if((u||o)&&(l&&(l[1](),l[0]()),l=Ye(f||g,!0,T,{zt:A.concat(n||[]),It:A.concat(n||[]),At:s,Mt:Ue,Rt:(t,n)=>{const{target:o,attributeName:r}=t;return!(n||!r)&&H(o,Ue,Je)||!!(t=>c(e)&&e(t))(t)}})),h)if(M.p(),d(_)){const t=_[0],e=_[1];r=!!a(t)&&t,i=!!a(e)&&e}else a(_)?(r=_,i=!1):(r=!1,i=!1)},()=>{l&&l[0](),D&&D(),V&&V(),B&&B.disconnect(),P()}]},en={I:{t:0,r:0,b:0,l:0},ut:!1,_t:{marginRight:0,marginBottom:0,marginLeft:0,paddingTop:0,paddingRight:0,paddingBottom:0,paddingLeft:0},bt:{x:0,y:0},vt:{x:"hidden",y:"hidden"},yt:{x:!1,y:!1},rt:!1,ct:!1},nn=(t,e)=>{const n=Bt(e,{}),o=Et(en),r=new Set,[i]=o,s=(t,e,n)=>{S(r,[t,e||{},!!n])},[l,c]=Ae(t),d=((t,e)=>{const{O:n}=t,{T:o,R:r,P:i}=xe(),s=!o&&(r.x||r.y),l=[Me(t,e),Le(t,e),je(t,e)];return(t,e,o)=>{const r=ke(C({st:!1,gt:!1,dt:!1,it:!1,xt:!1,St:!1,pt:!1,lt:!1},e),{},o),c=s||!i,d=c&&A(n),u=c&&M(n);let _=r;return v(l,e=>{_=ke(_,e(_,t,!!o)||{},o)}),a(d)&&A(n,d),a(u)&&M(n,u),_}})(l,o),[u,_]=tn(l,o,t=>{s(d(n,t))}),g=i.bind(0);return g.Tt=t=>{r.add(t)},g.Dt=l,[(t,n)=>{const o=Bt(e,t,n);u(o),s(d(o,{},n))},g,()=>{r.clear(),_(),c()}]},on=t=>{const e=G(`${se} ${t}`),n=G(de),o=G(ue);return E(e,n),E(n,o),{Vt:e,Pt:n,Ht:o}},rn=(t,e,n)=>{const o=Et({}),[r]=o,[i,a]=((t,e)=>{const{B:n}=xe(),{M:o}=n(),{N:r,$:i,O:a,tt:s}=e,l=!s&&t.scrollbarsSlot,d=(c(l)?l(r,i,a):l)||(c(o)?o(r,i,a):o)||i,u=on(le),_=on(ce),{Vt:g}=u,{Vt:f}=_;return E(d,g),E(d,f),[{Bt:u,Et:_},q.bind(0,[g,f])]})(t,n),s=r.bind(0);return s.Dt=i,[(t,n)=>{const o=Bt(e,t,n);console.log(o)},s,()=>{a()}]},an={},sn="__osOptionsValidationPlugin",ln=new Set,cn=new WeakMap,dn=(t,e,n)=>{const{k:o,R:r,H:i}=xe(),a=C({},an),s=f(t)?t:t.target,l=(t=>cn.get(t))(s);if(l)return l;const d=a[sn],u=t=>{const e=t||{},n=d&&d.jt;return n?n(e,!0):e},_=C({},o(),u(e)),[g,h,w]=Pt(n);r.x&&r.y&&!_.nativeScrollbarsOverlaid.initialize&&w("initializationWithdrawn");const[p,b,y]=nn(t,_),[S,,m]=rn(t,_,b.Dt),$=(t,e)=>{p(t,e),S(t,e)},O=i($.bind(0,{},!0));b.Tt((t,e,n)=>{const{st:o,dt:r,it:i,xt:a,St:s,lt:l,pt:c}=t;w("updated",{updateHints:{sizeChanged:o,directionChanged:r,heightIntrinsicChanged:i,overflowAmountChanged:a,overflowStyleChanged:s,contentMutation:l,hostMutation:c},changedOptions:e,force:n})});const I={options(t){if(t){const e=fe(_,u(t));(function(t){for(const e in t)return!1;return!0})(e)||(C(_,e),$(e))}return C({},_)},on:g,off:h,state(){const{bt:t,vt:e,yt:n,I:o,ut:r}=b();return C({},{overflowAmount:t,overflowStyle:e,hasOverflow:n,padding:o,paddingAbsolute:r})},elements(){const{N:t,$:e,I:n,O:o,A:r}=b.Dt;return C({},{target:t,host:e,padding:n||o,viewport:o,content:r||o})},update(t){$({},t)},destroy:()=>{(t=>{cn.delete(t),ln.delete(t)})(s),O(),h(),m(),y(),w("destroyed")}};return v(x(a),t=>{const e=a[t];c(e)&&e(dn,I)}),I.update(!0),((t,e)=>{cn.set(t,e),ln.add(t)})(s,I),w("initialized"),I};dn.plugin=t=>v(d(t)?t:[t],t=>{an[t[0]]=t[1]}),dn.env=()=>{const{L:t,R:e,T:n,V:o,P:r,D:i,G:a,F:s,B:l,j:c,k:d,q:u}=xe();return C({},{scrollbarSize:t,scrollbarIsOverlaid:e,scrollbarStyling:n,rtlScrollBehavior:o,flexboxGlue:r,cssCustomProperties:i,defaultInitializationStrategy:a,defaultDefaultOptions:s,getInitializationStrategy:l,setInitializationStrategy:c,getDefaultOptions:d,setDefaultOptions:u})};export{dn as default}; \ No newline at end of file diff --git a/packages/overlayscrollbars/dist/overlayscrollbars.js b/packages/overlayscrollbars/dist/overlayscrollbars.js index 13dbb35..d31c819 100644 --- a/packages/overlayscrollbars/dist/overlayscrollbars.js +++ b/packages/overlayscrollbars/dist/overlayscrollbars.js @@ -1,2412 +1,1870 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.OverlayScrollbars = factory()); -})(this, (function () { 'use strict'; - - function createCache(options, update) { - var _initialValue = options._initialValue, - _equal = options._equal, - _alwaysUpdateValues = options._alwaysUpdateValues; - var _value = _initialValue; - - var _previous; - - var cacheUpdateContextual = function cacheUpdateContextual(newValue, force) { - var curr = _value; - var newVal = newValue; - var changed = force || (_equal ? !_equal(curr, newVal) : curr !== newVal); - - if (changed || _alwaysUpdateValues) { - _value = newVal; - _previous = curr; - } - - return [_value, changed, _previous]; - }; - - var cacheUpdateIsolated = function cacheUpdateIsolated(force) { - return cacheUpdateContextual(update(_value, _previous), force); - }; - - var getCurrentCache = function getCurrentCache(force) { - return [_value, !!force, _previous]; - }; - - return [update ? cacheUpdateIsolated : cacheUpdateContextual, getCurrentCache]; - } - - var ElementNodeType = Node.ELEMENT_NODE; - var _Object$prototype = Object.prototype, - toString = _Object$prototype.toString, - hasOwnProperty$1 = _Object$prototype.hasOwnProperty; - function isUndefined(obj) { - return obj === undefined; - } - function isNull(obj) { - return obj === null; - } - var type = function type(obj) { - return isUndefined(obj) || isNull(obj) ? "" + obj : toString.call(obj).replace(/^\[object (.+)\]$/, '$1').toLowerCase(); - }; - function isNumber(obj) { - return typeof obj === 'number'; - } - function isString(obj) { - return typeof obj === 'string'; - } - function isBoolean(obj) { - return typeof obj === 'boolean'; - } - function isFunction(obj) { - return typeof obj === 'function'; - } - function isArray(obj) { - return Array.isArray(obj); - } - function isObject(obj) { - return typeof obj === 'object' && !isArray(obj) && !isNull(obj); - } - function isArrayLike(obj) { - var length = !!obj && obj.length; - var lengthCorrectFormat = isNumber(length) && length > -1 && length % 1 == 0; - return isArray(obj) || !isFunction(obj) && lengthCorrectFormat ? length > 0 && isObject(obj) ? length - 1 in obj : true : false; - } - function isPlainObject(obj) { - if (!obj || !isObject(obj) || type(obj) !== 'object') return false; - var key; - var cstr = 'constructor'; - var ctor = obj[cstr]; - var ctorProto = ctor && ctor.prototype; - var hasOwnConstructor = hasOwnProperty$1.call(obj, cstr); - var hasIsPrototypeOf = ctorProto && hasOwnProperty$1.call(ctorProto, 'isPrototypeOf'); - - if (ctor && !hasOwnConstructor && !hasIsPrototypeOf) { - return false; +function createCache(options, update) { + const { _initialValue, _equal, _alwaysUpdateValues } = options; + let _value = _initialValue; + let _previous; + const cacheUpdateContextual = (newValue, force) => { + const curr = _value; + const newVal = newValue; + const changed = force || (_equal ? !_equal(curr, newVal) : curr !== newVal); + if (changed || _alwaysUpdateValues) { + _value = newVal; + _previous = curr; } - - for (key in obj) {} - - return isUndefined(key) || hasOwnProperty$1.call(obj, key); - } - function isHTMLElement(obj) { - var instanceofObj = window.HTMLElement; - return obj ? instanceofObj ? obj instanceof instanceofObj : obj.nodeType === ElementNodeType : false; - } - function isElement(obj) { - var instanceofObj = window.Element; - return obj ? instanceofObj ? obj instanceof instanceofObj : obj.nodeType === ElementNodeType : false; - } - - function each(source, callback) { - if (isArrayLike(source)) { - for (var i = 0; i < source.length; i++) { - if (callback(source[i], i, source) === false) { - break; - } - } - } else if (source) { - each(Object.keys(source), function (key) { - return callback(source[key], key, source); - }); - } - - return source; - } - var indexOf = function indexOf(arr, item, fromIndex) { - return arr.indexOf(item, fromIndex); + return [_value, changed, _previous]; }; - var push = function push(array, items, arrayIsSingleItem) { - !arrayIsSingleItem && !isString(items) && isArrayLike(items) ? Array.prototype.push.apply(array, items) : array.push(items); - return array; - }; - var from = function from(arr) { - if (Array.from && arr) { - return Array.from(arr); - } - - var result = []; - - if (arr instanceof Set) { - arr.forEach(function (value) { - push(result, value); - }); - } else { - each(arr, function (elm) { - push(result, elm); - }); - } - - return result; - }; - var isEmptyArray = function isEmptyArray(array) { - return !!array && array.length === 0; - }; - var runEach = function runEach(arr, args) { - var runFn = function runFn(fn) { - return fn && fn.apply(undefined, args || []); - }; - - if (arr instanceof Set) { - arr.forEach(runFn); - } else { - each(arr, runFn); - } - }; - - var hasOwnProperty = function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); - }; - var keys = function keys(obj) { - return obj ? Object.keys(obj) : []; - }; - function assignDeep(target, object1, object2, object3, object4, object5, object6) { - var sources = [object1, object2, object3, object4, object5, object6]; - - if ((typeof target !== 'object' || isNull(target)) && !isFunction(target)) { - target = {}; - } - - each(sources, function (source) { - each(keys(source), function (key) { - var copy = source[key]; - - if (target === copy) { - return true; - } - - var copyIsArray = isArray(copy); - - if (copy && (isPlainObject(copy) || copyIsArray)) { - var src = target[key]; - var clone = src; - - if (copyIsArray && !isArray(src)) { - clone = []; - } else if (!copyIsArray && !isPlainObject(src)) { - clone = {}; - } - - target[key] = assignDeep(clone, copy); - } else { - target[key] = copy; - } - }); - }); - return target; - } - function isEmptyObject(obj) { - for (var name in obj) { - return false; - } - - return true; - } - - function getSetProp(topLeft, fallback, elm, value) { - if (isUndefined(value)) { - return elm ? elm[topLeft] : fallback; - } - - elm && (elm[topLeft] = value); - } - - function attr(elm, attrName, value) { - if (isUndefined(value)) { - return elm ? elm.getAttribute(attrName) : null; - } - - elm && elm.setAttribute(attrName, value); - } - var attrClass = function attrClass(elm, attrName, value, add) { - var currValues = attr(elm, attrName) || ''; - var currValuesSet = new Set(currValues.split(' ')); - currValuesSet[add ? 'add' : 'delete'](value); - attr(elm, attrName, from(currValuesSet).join(' ').trim()); - }; - var hasAttrClass = function hasAttrClass(elm, attrName, value) { - var currValues = attr(elm, attrName) || ''; - var currValuesSet = new Set(currValues.split(' ')); - return currValuesSet.has(value); - }; - var removeAttr = function removeAttr(elm, attrName) { - elm && elm.removeAttribute(attrName); - }; - function scrollLeft(elm, value) { - return getSetProp('scrollLeft', 0, elm, value); - } - function scrollTop(elm, value) { - return getSetProp('scrollTop', 0, elm, value); - } - - var elmPrototype = Element.prototype; - - var find = function find(selector, elm) { - var arr = []; - var rootElm = elm ? isElement(elm) ? elm : null : document; - return rootElm ? push(arr, rootElm.querySelectorAll(selector)) : arr; - }; - - var findFirst = function findFirst(selector, elm) { - var rootElm = elm ? isElement(elm) ? elm : null : document; - return rootElm ? rootElm.querySelector(selector) : null; - }; - - var is = function is(elm, selector) { - if (isElement(elm)) { - var fn = elmPrototype.matches || elmPrototype.msMatchesSelector; - return fn.call(elm, selector); - } + const cacheUpdateIsolated = (force) => cacheUpdateContextual(update(_value, _previous), force); + const getCurrentCache = (force) => [ + _value, + !!force, + _previous + ]; + return [update ? cacheUpdateIsolated : cacheUpdateContextual, getCurrentCache]; +} +const ElementNodeType = Node.ELEMENT_NODE; +const { toString, hasOwnProperty: hasOwnProperty$1 } = Object.prototype; +function isUndefined(obj) { + return obj === void 0; +} +function isNull(obj) { + return obj === null; +} +const type = (obj) => isUndefined(obj) || isNull(obj) ? `${obj}` : toString.call(obj).replace(/^\[object (.+)\]$/, "$1").toLowerCase(); +function isNumber(obj) { + return typeof obj === "number"; +} +function isString(obj) { + return typeof obj === "string"; +} +function isBoolean(obj) { + return typeof obj === "boolean"; +} +function isFunction(obj) { + return typeof obj === "function"; +} +function isArray(obj) { + return Array.isArray(obj); +} +function isObject(obj) { + return typeof obj === "object" && !isArray(obj) && !isNull(obj); +} +function isArrayLike(obj) { + const length = !!obj && obj.length; + const lengthCorrectFormat = isNumber(length) && length > -1 && length % 1 == 0; + return isArray(obj) || !isFunction(obj) && lengthCorrectFormat ? length > 0 && isObject(obj) ? length - 1 in obj : true : false; +} +function isPlainObject(obj) { + if (!obj || !isObject(obj) || type(obj) !== "object") return false; - }; - - var contents = function contents(elm) { - return elm ? from(elm.childNodes) : []; - }; - - var parent = function parent(elm) { - return elm ? elm.parentElement : null; - }; - - var closest = function closest(elm, selector) { - if (isElement(elm)) { - var closestFn = elmPrototype.closest; - - if (closestFn) { - return closestFn.call(elm, selector); - } - - do { - if (is(elm, selector)) { - return elm; - } - - elm = parent(elm); - } while (elm); - } - - return null; - }; - - var liesBetween = function liesBetween(elm, highBoundarySelector, deepBoundarySelector) { - var closestHighBoundaryElm = elm && closest(elm, highBoundarySelector); - var closestDeepBoundaryElm = elm && findFirst(deepBoundarySelector, closestHighBoundaryElm); - return closestHighBoundaryElm && closestDeepBoundaryElm ? closestHighBoundaryElm === elm || closestDeepBoundaryElm === elm || closest(closest(elm, deepBoundarySelector), highBoundarySelector) !== closestHighBoundaryElm : false; - }; - - var before = function before(parentElm, preferredAnchor, insertedElms) { - if (insertedElms) { - var anchor = preferredAnchor; - var fragment; - - if (parentElm) { - if (isArrayLike(insertedElms)) { - fragment = document.createDocumentFragment(); - each(insertedElms, function (insertedElm) { - if (insertedElm === anchor) { - anchor = insertedElm.previousSibling; - } - - fragment.appendChild(insertedElm); - }); - } else { - fragment = insertedElms; - } - - if (preferredAnchor) { - if (!anchor) { - anchor = parentElm.firstChild; - } else if (anchor !== preferredAnchor) { - anchor = anchor.nextSibling; - } - } - - parentElm.insertBefore(fragment, anchor || null); - } - } - }; - - var appendChildren = function appendChildren(node, children) { - before(node, null, children); - }; - var prependChildren = function prependChildren(node, children) { - before(node, node && node.firstChild, children); - }; - var insertBefore = function insertBefore(node, insertedNodes) { - before(parent(node), node, insertedNodes); - }; - var insertAfter = function insertAfter(node, insertedNodes) { - before(parent(node), node && node.nextSibling, insertedNodes); - }; - var removeElements = function removeElements(nodes) { - if (isArrayLike(nodes)) { - each(from(nodes), function (e) { - return removeElements(e); - }); - } else if (nodes) { - var parentElm = parent(nodes); - - if (parentElm) { - parentElm.removeChild(nodes); - } - } - }; - - var createDiv = function createDiv(classNames) { - var div = document.createElement('div'); - - if (classNames) { - attr(div, 'class', classNames); - } - - return div; - }; - var createDOM = function createDOM(html) { - var createdDiv = createDiv(); - createdDiv.innerHTML = html.trim(); - return each(contents(createdDiv), function (elm) { - return removeElements(elm); - }); - }; - - var firstLetterToUpper = function firstLetterToUpper(str) { - return str.charAt(0).toUpperCase() + str.slice(1); - }; - - var getDummyStyle = function getDummyStyle() { - return createDiv().style; - }; - - var cssPrefixes = ['-webkit-', '-moz-', '-o-', '-ms-']; - var jsPrefixes = ['WebKit', 'Moz', 'O', 'MS', 'webkit', 'moz', 'o', 'ms']; - var jsCache = {}; - var cssCache = {}; - var cssProperty = function cssProperty(name) { - var result = cssCache[name]; - - if (hasOwnProperty(cssCache, name)) { - return result; - } - - var uppercasedName = firstLetterToUpper(name); - var elmStyle = getDummyStyle(); - each(cssPrefixes, function (prefix) { - var prefixWithoutDashes = prefix.replace(/-/g, ''); - var resultPossibilities = [name, prefix + name, prefixWithoutDashes + uppercasedName, firstLetterToUpper(prefixWithoutDashes) + uppercasedName]; - return !(result = resultPossibilities.find(function (resultPossibility) { - return elmStyle[resultPossibility] !== undefined; - })); - }); - return cssCache[name] = result || ''; - }; - var jsAPI = function jsAPI(name) { - var result = jsCache[name] || window[name]; - - if (hasOwnProperty(jsCache, name)) { - return result; - } - - each(jsPrefixes, function (prefix) { - result = result || window[prefix + firstLetterToUpper(name)]; - return !result; - }); - jsCache[name] = result; - return result; - }; - - var MutationObserverConstructor = jsAPI('MutationObserver'); - var IntersectionObserverConstructor = jsAPI('IntersectionObserver'); - var ResizeObserverConstructor = jsAPI('ResizeObserver'); - var cAF = jsAPI('cancelAnimationFrame'); - var rAF = jsAPI('requestAnimationFrame'); - - var rnothtmlwhite = /[^\x20\t\r\n\f]+/g; - - var classListAction = function classListAction(elm, className, action) { - var clazz; - var i = 0; - var result = false; - - if (elm && className && isString(className)) { - var classes = className.match(rnothtmlwhite) || []; - result = classes.length > 0; - - while (clazz = classes[i++]) { - result = !!action(elm.classList, clazz) && result; - } - } - - return result; - }; - - var hasClass = function hasClass(elm, className) { - return classListAction(elm, className, function (classList, clazz) { - return classList.contains(clazz); - }); - }; - var removeClass = function removeClass(elm, className) { - classListAction(elm, className, function (classList, clazz) { - return classList.remove(clazz); - }); - }; - var addClass = function addClass(elm, className) { - classListAction(elm, className, function (classList, clazz) { - return classList.add(clazz); - }); - return removeClass.bind(0, elm, className); - }; - - var equal = function equal(a, b, props, propMutation) { - if (a && b) { - var result = true; - each(props, function (prop) { - var compareA = propMutation ? propMutation(a[prop]) : a[prop]; - var compareB = propMutation ? propMutation(b[prop]) : b[prop]; - - if (compareA !== compareB) { - result = false; - } - }); - return result; - } - + let key; + const cstr = "constructor"; + const ctor = obj[cstr]; + const ctorProto = ctor && ctor.prototype; + const hasOwnConstructor = hasOwnProperty$1.call(obj, cstr); + const hasIsPrototypeOf = ctorProto && hasOwnProperty$1.call(ctorProto, "isPrototypeOf"); + if (ctor && !hasOwnConstructor && !hasIsPrototypeOf) { return false; - }; - var equalWH = function equalWH(a, b) { - return equal(a, b, ['w', 'h']); - }; - var equalXY = function equalXY(a, b) { - return equal(a, b, ['x', 'y']); - }; - var equalTRBL = function equalTRBL(a, b) { - return equal(a, b, ['t', 'r', 'b', 'l']); - }; - var equalBCRWH = function equalBCRWH(a, b, round) { - return equal(a, b, ['width', 'height'], round && function (value) { - return Math.round(value); + } + for (key in obj) { + } + return isUndefined(key) || hasOwnProperty$1.call(obj, key); +} +function isHTMLElement(obj) { + const instanceofObj = window.HTMLElement; + return obj ? instanceofObj ? obj instanceof instanceofObj : obj.nodeType === ElementNodeType : false; +} +function isElement(obj) { + const instanceofObj = window.Element; + return obj ? instanceofObj ? obj instanceof instanceofObj : obj.nodeType === ElementNodeType : false; +} + +function each(source, callback) { + if (isArrayLike(source)) { + for (let i = 0; i < source.length; i++) { + if (callback(source[i], i, source) === false) { + break; + } + } + } else if (source) { + each(Object.keys(source), (key) => callback(source[key], key, source)); + } + return source; +} +const indexOf = (arr, item, fromIndex) => arr.indexOf(item, fromIndex); +const push = (array, items, arrayIsSingleItem) => { + !arrayIsSingleItem && !isString(items) && isArrayLike(items) ? Array.prototype.push.apply(array, items) : array.push(items); + return array; +}; +const from = (arr) => { + if (Array.from && arr) { + return Array.from(arr); + } + const result = []; + if (arr instanceof Set) { + arr.forEach((value) => { + push(result, value); }); + } else { + each(arr, (elm) => { + push(result, elm); + }); + } + return result; +}; +const isEmptyArray = (array) => !!array && array.length === 0; +const runEach = (arr, args) => { + const runFn = (fn) => fn && fn.apply(void 0, args || []); + if (arr instanceof Set) { + arr.forEach(runFn); + } else { + each(arr, runFn); + } +}; + +const hasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop); +const keys = (obj) => obj ? Object.keys(obj) : []; +function assignDeep(target, object1, object2, object3, object4, object5, object6) { + const sources = [object1, object2, object3, object4, object5, object6]; + if ((typeof target !== "object" || isNull(target)) && !isFunction(target)) { + target = {}; + } + each(sources, (source) => { + each(keys(source), (key) => { + const copy = source[key]; + if (target === copy) { + return true; + } + const copyIsArray = isArray(copy); + if (copy && (isPlainObject(copy) || copyIsArray)) { + const src = target[key]; + let clone = src; + if (copyIsArray && !isArray(src)) { + clone = []; + } else if (!copyIsArray && !isPlainObject(src)) { + clone = {}; + } + target[key] = assignDeep(clone, copy); + } else { + target[key] = copy; + } + }); + }); + return target; +} +function isEmptyObject(obj) { + for (const name in obj) + return false; + return true; +} + +function getSetProp(topLeft, fallback, elm, value) { + if (isUndefined(value)) { + return elm ? elm[topLeft] : fallback; + } + elm && (elm[topLeft] = value); +} +function attr(elm, attrName, value) { + if (isUndefined(value)) { + return elm ? elm.getAttribute(attrName) : null; + } + elm && elm.setAttribute(attrName, value); +} +const attrClass = (elm, attrName, value, add) => { + const currValues = attr(elm, attrName) || ""; + const currValuesSet = new Set(currValues.split(" ")); + currValuesSet[add ? "add" : "delete"](value); + attr(elm, attrName, from(currValuesSet).join(" ").trim()); +}; +const hasAttrClass = (elm, attrName, value) => { + const currValues = attr(elm, attrName) || ""; + const currValuesSet = new Set(currValues.split(" ")); + return currValuesSet.has(value); +}; +const removeAttr = (elm, attrName) => { + elm && elm.removeAttribute(attrName); +}; +function scrollLeft(elm, value) { + return getSetProp("scrollLeft", 0, elm, value); +} +function scrollTop(elm, value) { + return getSetProp("scrollTop", 0, elm, value); +} + +const elmPrototype = Element.prototype; +const find = (selector, elm) => { + const arr = []; + const rootElm = elm ? isElement(elm) ? elm : null : document; + return rootElm ? push(arr, rootElm.querySelectorAll(selector)) : arr; +}; +const findFirst = (selector, elm) => { + const rootElm = elm ? isElement(elm) ? elm : null : document; + return rootElm ? rootElm.querySelector(selector) : null; +}; +const is = (elm, selector) => { + if (isElement(elm)) { + const fn = elmPrototype.matches || elmPrototype.msMatchesSelector; + return fn.call(elm, selector); + } + return false; +}; +const contents = (elm) => elm ? from(elm.childNodes) : []; +const parent = (elm) => elm ? elm.parentElement : null; +const closest = (elm, selector) => { + if (isElement(elm)) { + const closestFn = elmPrototype.closest; + if (closestFn) { + return closestFn.call(elm, selector); + } + do { + if (is(elm, selector)) { + return elm; + } + elm = parent(elm); + } while (elm); + } + return null; +}; +const liesBetween = (elm, highBoundarySelector, deepBoundarySelector) => { + const closestHighBoundaryElm = elm && closest(elm, highBoundarySelector); + const closestDeepBoundaryElm = elm && findFirst(deepBoundarySelector, closestHighBoundaryElm); + return closestHighBoundaryElm && closestDeepBoundaryElm ? closestHighBoundaryElm === elm || closestDeepBoundaryElm === elm || closest(closest(elm, deepBoundarySelector), highBoundarySelector) !== closestHighBoundaryElm : false; +}; + +const before = (parentElm, preferredAnchor, insertedElms) => { + if (insertedElms) { + let anchor = preferredAnchor; + let fragment; + if (parentElm) { + if (isArrayLike(insertedElms)) { + fragment = document.createDocumentFragment(); + each(insertedElms, (insertedElm) => { + if (insertedElm === anchor) { + anchor = insertedElm.previousSibling; + } + fragment.appendChild(insertedElm); + }); + } else { + fragment = insertedElms; + } + if (preferredAnchor) { + if (!anchor) { + anchor = parentElm.firstChild; + } else if (anchor !== preferredAnchor) { + anchor = anchor.nextSibling; + } + } + parentElm.insertBefore(fragment, anchor || null); + } + } +}; +const appendChildren = (node, children) => { + before(node, null, children); +}; +const prependChildren = (node, children) => { + before(node, node && node.firstChild, children); +}; +const insertBefore = (node, insertedNodes) => { + before(parent(node), node, insertedNodes); +}; +const insertAfter = (node, insertedNodes) => { + before(parent(node), node && node.nextSibling, insertedNodes); +}; +const removeElements = (nodes) => { + if (isArrayLike(nodes)) { + each(from(nodes), (e) => removeElements(e)); + } else if (nodes) { + const parentElm = parent(nodes); + if (parentElm) { + parentElm.removeChild(nodes); + } + } +}; + +const createDiv = (classNames) => { + const div = document.createElement("div"); + if (classNames) { + attr(div, "class", classNames); + } + return div; +}; +const createDOM = (html) => { + const createdDiv = createDiv(); + createdDiv.innerHTML = html.trim(); + return each(contents(createdDiv), (elm) => removeElements(elm)); +}; + +const firstLetterToUpper = (str) => str.charAt(0).toUpperCase() + str.slice(1); +const getDummyStyle = () => createDiv().style; +const cssPrefixes = ["-webkit-", "-moz-", "-o-", "-ms-"]; +const jsPrefixes = [ + "WebKit", + "Moz", + "O", + "MS", + "webkit", + "moz", + "o", + "ms" +]; +const jsCache = {}; +const cssCache = {}; +const cssProperty = (name) => { + let result = cssCache[name]; + if (hasOwnProperty(cssCache, name)) { + return result; + } + const uppercasedName = firstLetterToUpper(name); + const elmStyle = getDummyStyle(); + each(cssPrefixes, (prefix) => { + const prefixWithoutDashes = prefix.replace(/-/g, ""); + const resultPossibilities = [ + name, + prefix + name, + prefixWithoutDashes + uppercasedName, + firstLetterToUpper(prefixWithoutDashes) + uppercasedName + ]; + return !(result = resultPossibilities.find((resultPossibility) => elmStyle[resultPossibility] !== void 0)); + }); + return cssCache[name] = result || ""; +}; +const jsAPI = (name) => { + let result = jsCache[name] || window[name]; + if (hasOwnProperty(jsCache, name)) { + return result; + } + each(jsPrefixes, (prefix) => { + result = result || window[prefix + firstLetterToUpper(name)]; + return !result; + }); + jsCache[name] = result; + return result; +}; + +const MutationObserverConstructor = jsAPI("MutationObserver"); +const IntersectionObserverConstructor = jsAPI("IntersectionObserver"); +const ResizeObserverConstructor = jsAPI("ResizeObserver"); +const cAF = jsAPI("cancelAnimationFrame"); +const rAF = jsAPI("requestAnimationFrame"); + +const rnothtmlwhite = /[^\x20\t\r\n\f]+/g; +const classListAction = (elm, className, action) => { + let clazz; + let i = 0; + let result = false; + if (elm && className && isString(className)) { + const classes = className.match(rnothtmlwhite) || []; + result = classes.length > 0; + while (clazz = classes[i++]) { + result = !!action(elm.classList, clazz) && result; + } + } + return result; +}; +const hasClass = (elm, className) => classListAction(elm, className, (classList, clazz) => classList.contains(clazz)); +const removeClass = (elm, className) => { + classListAction(elm, className, (classList, clazz) => classList.remove(clazz)); +}; +const addClass = (elm, className) => { + classListAction(elm, className, (classList, clazz) => classList.add(clazz)); + return removeClass.bind(0, elm, className); +}; + +const equal = (a, b, props, propMutation) => { + if (a && b) { + let result = true; + each(props, (prop) => { + const compareA = propMutation ? propMutation(a[prop]) : a[prop]; + const compareB = propMutation ? propMutation(b[prop]) : b[prop]; + if (compareA !== compareB) { + result = false; + } + }); + return result; + } + return false; +}; +const equalWH = (a, b) => equal(a, b, ["w", "h"]); +const equalXY = (a, b) => equal(a, b, ["x", "y"]); +const equalTRBL = (a, b) => equal(a, b, ["t", "r", "b", "l"]); +const equalBCRWH = (a, b, round) => equal(a, b, ["width", "height"], round && ((value) => Math.round(value))); + +const clearTimeouts = (id) => { + id && window.clearTimeout(id); + id && cAF(id); +}; +const noop = () => { +}; +const debounce = (functionToDebounce, options) => { + let timeoutId; + let maxTimeoutId; + let prevArguments; + let latestArguments; + const { _timeout, _maxDelay, _mergeParams } = options || {}; + const setT = window.setTimeout; + const invokeFunctionToDebounce = function(args) { + clearTimeouts(timeoutId); + clearTimeouts(maxTimeoutId); + maxTimeoutId = timeoutId = prevArguments = void 0; + functionToDebounce.apply(this, args); }; - - var clearTimeouts = function clearTimeouts(id) { - id && window.clearTimeout(id); - id && cAF(id); + const mergeParms = (curr) => _mergeParams && prevArguments ? _mergeParams(prevArguments, curr) : curr; + const flush = () => { + if (timeoutId) { + invokeFunctionToDebounce(mergeParms(latestArguments) || latestArguments); + } }; - - var noop = function noop() {}; - var debounce = function debounce(functionToDebounce, options) { - var timeoutId; - var maxTimeoutId; - var prevArguments; - var latestArguments; - - var _ref = options || {}, - _timeout = _ref._timeout, - _maxDelay = _ref._maxDelay, - _mergeParams = _ref._mergeParams; - - var setT = window.setTimeout; - - var invokeFunctionToDebounce = function invokeFunctionToDebounce(args) { + const debouncedFn = function() { + const args = from(arguments); + const finalTimeout = isFunction(_timeout) ? _timeout() : _timeout; + const hasTimeout = isNumber(finalTimeout) && finalTimeout >= 0; + if (hasTimeout) { + const finalMaxWait = isFunction(_maxDelay) ? _maxDelay() : _maxDelay; + const hasMaxWait = isNumber(finalMaxWait) && finalMaxWait >= 0; + const setTimeoutFn = finalTimeout > 0 ? setT : rAF; + const mergeParamsResult = mergeParms(args); + const invokedArgs = mergeParamsResult || args; + const boundInvoke = invokeFunctionToDebounce.bind(0, invokedArgs); clearTimeouts(timeoutId); - clearTimeouts(maxTimeoutId); - maxTimeoutId = timeoutId = prevArguments = undefined; - functionToDebounce.apply(this, args); - }; - - var mergeParms = function mergeParms(curr) { - return _mergeParams && prevArguments ? _mergeParams(prevArguments, curr) : curr; - }; - - var flush = function flush() { - if (timeoutId) { - invokeFunctionToDebounce(mergeParms(latestArguments) || latestArguments); + timeoutId = setTimeoutFn(boundInvoke, finalTimeout); + if (hasMaxWait && !maxTimeoutId) { + maxTimeoutId = setT(flush, finalMaxWait); } - }; - - var debouncedFn = function debouncedFn() { - var args = from(arguments); - var finalTimeout = isFunction(_timeout) ? _timeout() : _timeout; - var hasTimeout = isNumber(finalTimeout) && finalTimeout >= 0; - - if (hasTimeout) { - var finalMaxWait = isFunction(_maxDelay) ? _maxDelay() : _maxDelay; - var hasMaxWait = isNumber(finalMaxWait) && finalMaxWait >= 0; - var setTimeoutFn = finalTimeout > 0 ? setT : rAF; - var mergeParamsResult = mergeParms(args); - var invokedArgs = mergeParamsResult || args; - var boundInvoke = invokeFunctionToDebounce.bind(0, invokedArgs); - clearTimeouts(timeoutId); - timeoutId = setTimeoutFn(boundInvoke, finalTimeout); - - if (hasMaxWait && !maxTimeoutId) { - maxTimeoutId = setT(flush, finalMaxWait); - } - - prevArguments = latestArguments = invokedArgs; - } else { - invokeFunctionToDebounce(args); - } - }; - - debouncedFn._flush = flush; - return debouncedFn; - }; - - var cssNumber = { - opacity: 1, - zindex: 1 - }; - - var parseToZeroOrNumber = function parseToZeroOrNumber(value, toFloat) { - var num = toFloat ? parseFloat(value) : parseInt(value, 10); - return Number.isNaN(num) ? 0 : num; - }; - - var adaptCSSVal = function adaptCSSVal(prop, val) { - return !cssNumber[prop.toLowerCase()] && isNumber(val) ? val + "px" : val; - }; - - var getCSSVal = function getCSSVal(elm, computedStyle, prop) { - return computedStyle != null ? computedStyle[prop] || computedStyle.getPropertyValue(prop) : elm.style[prop]; - }; - - var setCSSVal = function setCSSVal(elm, prop, val) { - try { - if (elm) { - var elmStyle = elm.style; - - if (!isUndefined(elmStyle[prop])) { - elmStyle[prop] = adaptCSSVal(prop, val); - } else { - elmStyle.setProperty(prop, val); - } - } - } catch (e) {} - }; - - function style(elm, styles) { - var getSingleStyle = isString(styles); - var getStyles = isArray(styles) || getSingleStyle; - - if (getStyles) { - var getStylesResult = getSingleStyle ? '' : {}; - - if (elm) { - var computedStyle = window.getComputedStyle(elm, null); - getStylesResult = getSingleStyle ? getCSSVal(elm, computedStyle, styles) : styles.reduce(function (result, key) { - result[key] = getCSSVal(elm, computedStyle, key); - return result; - }, getStylesResult); - } - - return getStylesResult; + prevArguments = latestArguments = invokedArgs; + } else { + invokeFunctionToDebounce(args); } + }; + debouncedFn._flush = flush; + return debouncedFn; +}; - each(keys(styles), function (key) { - return setCSSVal(elm, key, styles[key]); +const cssNumber = { + opacity: 1, + zindex: 1 +}; +const parseToZeroOrNumber = (value, toFloat) => { + const num = toFloat ? parseFloat(value) : parseInt(value, 10); + return Number.isNaN(num) ? 0 : num; +}; +const adaptCSSVal = (prop, val) => !cssNumber[prop.toLowerCase()] && isNumber(val) ? `${val}px` : val; +const getCSSVal = (elm, computedStyle, prop) => computedStyle != null ? computedStyle[prop] || computedStyle.getPropertyValue(prop) : elm.style[prop]; +const setCSSVal = (elm, prop, val) => { + try { + if (elm) { + const { style: elmStyle } = elm; + if (!isUndefined(elmStyle[prop])) { + elmStyle[prop] = adaptCSSVal(prop, val); + } else { + elmStyle.setProperty(prop, val); + } + } + } catch (e) { + } +}; +function style(elm, styles) { + const getSingleStyle = isString(styles); + const getStyles = isArray(styles) || getSingleStyle; + if (getStyles) { + let getStylesResult = getSingleStyle ? "" : {}; + if (elm) { + const computedStyle = window.getComputedStyle(elm, null); + getStylesResult = getSingleStyle ? getCSSVal(elm, computedStyle, styles) : styles.reduce((result, key) => { + result[key] = getCSSVal(elm, computedStyle, key); + return result; + }, getStylesResult); + } + return getStylesResult; + } + each(keys(styles), (key) => setCSSVal(elm, key, styles[key])); +} +const topRightBottomLeft = (elm, propertyPrefix, propertySuffix) => { + const finalPrefix = propertyPrefix ? `${propertyPrefix}-` : ""; + const finalSuffix = propertySuffix ? `-${propertySuffix}` : ""; + const top = `${finalPrefix}top${finalSuffix}`; + const right = `${finalPrefix}right${finalSuffix}`; + const bottom = `${finalPrefix}bottom${finalSuffix}`; + const left = `${finalPrefix}left${finalSuffix}`; + const result = style(elm, [top, right, bottom, left]); + return { + t: parseToZeroOrNumber(result[top]), + r: parseToZeroOrNumber(result[right]), + b: parseToZeroOrNumber(result[bottom]), + l: parseToZeroOrNumber(result[left]) + }; +}; + +const zeroObj$1 = { + w: 0, + h: 0 +}; +const windowSize = () => ({ + w: window.innerWidth, + h: window.innerHeight +}); +const offsetSize = (elm) => elm ? { + w: elm.offsetWidth, + h: elm.offsetHeight +} : zeroObj$1; +const clientSize = (elm) => elm ? { + w: elm.clientWidth, + h: elm.clientHeight +} : zeroObj$1; +const scrollSize = (elm) => elm ? { + w: elm.scrollWidth, + h: elm.scrollHeight +} : zeroObj$1; +const fractionalSize = (elm) => { + const cssHeight = parseFloat(style(elm, "height")) || 0; + const cssWidth = parseFloat(style(elm, "height")) || 0; + return { + w: cssWidth - Math.round(cssWidth), + h: cssHeight - Math.round(cssHeight) + }; +}; +const getBoundingClientRect = (elm) => elm.getBoundingClientRect(); + +let passiveEventsSupport; +const supportPassiveEvents = () => { + if (isUndefined(passiveEventsSupport)) { + passiveEventsSupport = false; + try { + window.addEventListener("test", null, Object.defineProperty({}, "passive", { + get: function() { + passiveEventsSupport = true; + } + })); + } catch (e) { + } + } + return passiveEventsSupport; +}; +const splitEventNames = (eventNames) => eventNames.split(" "); +const off = (target, eventNames, listener, capture) => { + each(splitEventNames(eventNames), (eventName) => { + target.removeEventListener(eventName, listener, capture); + }); +}; +const on = (target, eventNames, listener, options) => { + const doSupportPassiveEvents = supportPassiveEvents(); + const passive = doSupportPassiveEvents && options && options._passive || false; + const capture = options && options._capture || false; + const once = options && options._once || false; + const offListeners = []; + const nativeOptions = doSupportPassiveEvents ? { + passive, + capture + } : capture; + each(splitEventNames(eventNames), (eventName) => { + const finalListener = once ? (evt) => { + target.removeEventListener(eventName, finalListener, capture); + listener && listener(evt); + } : listener; + push(offListeners, off.bind(null, target, eventName, finalListener, capture)); + target.addEventListener(eventName, finalListener, nativeOptions); + }); + return runEach.bind(0, offListeners); +}; +const stopPropagation = (evt) => evt.stopPropagation(); +const preventDefault = (evt) => evt.preventDefault(); +const stopAndPrevent = (evt) => stopPropagation(evt) || preventDefault(evt); + +const zeroObj = { + x: 0, + y: 0 +}; +const absoluteCoordinates = (elm) => { + const rect = elm ? getBoundingClientRect(elm) : 0; + return rect ? { + x: rect.left + window.pageYOffset, + y: rect.top + window.pageXOffset + } : zeroObj; +}; + +const manageListener = (callback, listener) => { + each(isArray(listener) ? listener : [listener], callback); +}; +const createEventListenerHub = (initialEventListeners) => { + const events = /* @__PURE__ */ new Map(); + const removeEvent = (name, listener) => { + if (name) { + const eventSet = events.get(name); + manageListener((currListener) => { + if (eventSet) { + eventSet[currListener ? "delete" : "clear"](currListener); + } + }, listener); + } else { + events.forEach((eventSet) => { + eventSet.clear(); + }); + events.clear(); + } + }; + const addEvent = (name, listener) => { + const eventSet = events.get(name) || /* @__PURE__ */ new Set(); + events.set(name, eventSet); + manageListener((currListener) => { + currListener && eventSet.add(currListener); + }, listener); + return removeEvent.bind(0, name, listener); + }; + const triggerEvent = (name, args) => { + const eventSet = events.get(name); + each(from(eventSet), (event) => { + if (args) { + event(args); + } else { + event(); + } + }); + }; + const initialListenerKeys = keys(initialEventListeners); + each(initialListenerKeys, (key) => { + addEvent(key, initialEventListeners[key]); + }); + return [addEvent, removeEvent, triggerEvent]; +}; + +const getPropByPath = (obj, path) => obj ? path.split(".").reduce((o, prop) => o && hasOwnProperty(o, prop) ? o[prop] : void 0, obj) : void 0; +const createOptionCheck = (options, changedOptions, force) => (path) => [getPropByPath(options, path), force || getPropByPath(changedOptions, path) !== void 0]; +const createState = (initialState) => { + let state = initialState; + return [ + () => state, + (newState) => { + state = assignDeep({}, state, newState); + } + ]; +}; + +const classNameEnvironment = "os-environment"; +const classNameEnvironmentFlexboxGlue = `${classNameEnvironment}-flexbox-glue`; +const classNameEnvironmentFlexboxGlueMax = `${classNameEnvironmentFlexboxGlue}-max`; +const dataAttributeHost = "data-overlayscrollbars"; +const dataAttributeHostOverflowX = `${dataAttributeHost}-overflow-x`; +const dataAttributeHostOverflowY = `${dataAttributeHost}-overflow-y`; +const dataValueHostOverflowVisible = "overflowVisible"; +const dataValueHostViewportScrollbarStyling = "viewportStyled"; +const classNamePadding = "os-padding"; +const classNameViewport = "os-viewport"; +const classNameViewportArrange = `${classNameViewport}-arrange`; +const classNameContent = "os-content"; +const classNameViewportScrollbarStyling = `${classNameViewport}-scrollbar-styled`; +const classNameOverflowVisible = `os-overflow-visible`; +const classNameSizeObserver = "os-size-observer"; +const classNameSizeObserverAppear = `${classNameSizeObserver}-appear`; +const classNameSizeObserverListener = `${classNameSizeObserver}-listener`; +const classNameSizeObserverListenerScroll = `${classNameSizeObserverListener}-scroll`; +const classNameSizeObserverListenerItem = `${classNameSizeObserverListener}-item`; +const classNameSizeObserverListenerItemFinal = `${classNameSizeObserverListenerItem}-final`; +const classNameTrinsicObserver = "os-trinsic-observer"; +const classNameScrollbar = "os-scrollbar"; +const classNameScrollbarHorizontal = `${classNameScrollbar}-horizontal`; +const classNameScrollbarVertical = `${classNameScrollbar}-vertical`; +const classNameScrollbarTrack = "os-scrollbar-track"; +const classNameScrollbarHandle = "os-scrollbar-handle"; + +const stringify = (value) => JSON.stringify(value, (_, val) => { + if (isFunction(val)) { + throw new Error(); + } + return val; +}); +const defaultOptions = { + paddingAbsolute: false, + updating: { + elementEvents: [["img", "load"]], + debounce: [0, 33], + attributes: null, + ignoreMutation: null + }, + overflow: { + x: "scroll", + y: "scroll" + }, + nativeScrollbarsOverlaid: { + show: false, + initialize: false + }, + scrollbars: { + visibility: "auto", + autoHide: "never", + autoHideDelay: 800, + dragScroll: true, + clickScroll: false, + touch: true + } +}; +const getOptionsDiff = (currOptions, newOptions) => { + const diff = {}; + const optionsKeys = keys(newOptions).concat(keys(currOptions)); + each(optionsKeys, (optionKey) => { + const currOptionValue = currOptions[optionKey]; + const newOptionValue = newOptions[optionKey]; + if (isObject(currOptionValue) && isObject(newOptionValue)) { + assignDeep(diff[optionKey] = {}, getOptionsDiff(currOptionValue, newOptionValue)); + } else if (hasOwnProperty(newOptions, optionKey) && newOptionValue !== currOptionValue) { + let isDiff = true; + if (isArray(currOptionValue) || isArray(newOptionValue)) { + try { + if (stringify(currOptionValue) === stringify(newOptionValue)) { + isDiff = false; + } + } catch (e) { + } + } + if (isDiff) { + diff[optionKey] = newOptionValue; + } + } + }); + return diff; +}; + +let environmentInstance; +const { abs, round } = Math; +const diffBiggerThanOne = (valOne, valTwo) => { + const absValOne = abs(valOne); + const absValTwo = abs(valTwo); + return !(absValOne === absValTwo || absValOne + 1 === absValTwo || absValOne - 1 === absValTwo); +}; +const getNativeScrollbarSize = (body, measureElm, measureElmChild) => { + appendChildren(body, measureElm); + const cSize = clientSize(measureElm); + const oSize = offsetSize(measureElm); + const fSize = fractionalSize(measureElmChild); + return { + x: oSize.h - cSize.h + fSize.h, + y: oSize.w - cSize.w + fSize.w + }; +}; +const getNativeScrollbarStyling = (testElm) => { + let result = false; + const revertClass = addClass(testElm, classNameViewportScrollbarStyling); + try { + result = style(testElm, cssProperty("scrollbar-width")) === "none" || window.getComputedStyle(testElm, "::-webkit-scrollbar").getPropertyValue("display") === "none"; + } catch (ex) { + } + revertClass(); + return result; +}; +const getRtlScrollBehavior = (parentElm, childElm) => { + const strHidden = "hidden"; + style(parentElm, { overflowX: strHidden, overflowY: strHidden, direction: "rtl" }); + scrollLeft(parentElm, 0); + const parentOffset = absoluteCoordinates(parentElm); + const childOffset = absoluteCoordinates(childElm); + scrollLeft(parentElm, -999); + const childOffsetAfterScroll = absoluteCoordinates(childElm); + return { + i: parentOffset.x === childOffset.x, + n: childOffset.x !== childOffsetAfterScroll.x + }; +}; +const getFlexboxGlue = (parentElm, childElm) => { + const revertFbxGlue = addClass(parentElm, classNameEnvironmentFlexboxGlue); + const minOffsetsizeParent = getBoundingClientRect(parentElm); + const minOffsetsize = getBoundingClientRect(childElm); + const supportsMin = equalBCRWH(minOffsetsize, minOffsetsizeParent, true); + const revertFbxGlueMax = addClass(parentElm, classNameEnvironmentFlexboxGlueMax); + const maxOffsetsizeParent = getBoundingClientRect(parentElm); + const maxOffsetsize = getBoundingClientRect(childElm); + const supportsMax = equalBCRWH(maxOffsetsize, maxOffsetsizeParent, true); + revertFbxGlue(); + revertFbxGlueMax(); + return supportsMin && supportsMax; +}; +const getWindowDPR = () => { + const dDPI = window.screen.deviceXDPI || 0; + const sDPI = window.screen.logicalXDPI || 1; + return window.devicePixelRatio || dDPI / sDPI; +}; +const getDefaultInitializationStrategy = (nativeScrollbarStyling) => ({ + _host: null, + _viewport: null, + _padding: !nativeScrollbarStyling, + _content: false, + _scrollbarsSlot: null +}); +const createEnvironment = () => { + const { body } = document; + const envDOM = createDOM(`
`); + const envElm = envDOM[0]; + const envChildElm = envElm.firstChild; + const [addEvent, , triggerEvent] = createEventListenerHub(); + const [updateNativeScrollbarSizeCache, getNativeScrollbarSizeCache] = createCache({ + _initialValue: getNativeScrollbarSize(body, envElm, envChildElm), + _equal: equalXY + }); + const [nativeScrollbarSize] = getNativeScrollbarSizeCache(); + const nativeScrollbarStyling = getNativeScrollbarStyling(envElm); + const nativeScrollbarIsOverlaid = { + x: nativeScrollbarSize.x === 0, + y: nativeScrollbarSize.y === 0 + }; + const initializationStrategy = getDefaultInitializationStrategy(nativeScrollbarStyling); + const defaultDefaultOptions = assignDeep({}, defaultOptions); + const env = { + _nativeScrollbarSize: nativeScrollbarSize, + _nativeScrollbarIsOverlaid: nativeScrollbarIsOverlaid, + _nativeScrollbarStyling: nativeScrollbarStyling, + _cssCustomProperties: style(envElm, "zIndex") === "-1", + _rtlScrollBehavior: getRtlScrollBehavior(envElm, envChildElm), + _flexboxGlue: getFlexboxGlue(envElm, envChildElm), + _addListener: (listener) => addEvent("_", listener), + _getInitializationStrategy: assignDeep.bind(0, {}, initializationStrategy), + _setInitializationStrategy(newInitializationStrategy) { + assignDeep(initializationStrategy, newInitializationStrategy); + }, + _getDefaultOptions: assignDeep.bind(0, {}, defaultDefaultOptions), + _setDefaultOptions(newDefaultOptions) { + assignDeep(defaultDefaultOptions, newDefaultOptions); + }, + _defaultInitializationStrategy: assignDeep({}, initializationStrategy), + _defaultDefaultOptions: assignDeep({}, defaultDefaultOptions) + }; + removeAttr(envElm, "style"); + removeElements(envElm); + if (!nativeScrollbarStyling && (!nativeScrollbarIsOverlaid.x || !nativeScrollbarIsOverlaid.y)) { + let size = windowSize(); + let dpr = getWindowDPR(); + window.addEventListener("resize", () => { + const sizeNew = windowSize(); + const deltaSize = { + w: sizeNew.w - size.w, + h: sizeNew.h - size.h + }; + if (deltaSize.w === 0 && deltaSize.h === 0) + return; + const deltaAbsSize = { + w: abs(deltaSize.w), + h: abs(deltaSize.h) + }; + const deltaAbsRatio = { + w: abs(round(sizeNew.w / (size.w / 100))), + h: abs(round(sizeNew.h / (size.h / 100))) + }; + const dprNew = getWindowDPR(); + const deltaIsBigger = deltaAbsSize.w > 2 && deltaAbsSize.h > 2; + const difference = !diffBiggerThanOne(deltaAbsRatio.w, deltaAbsRatio.h); + const dprChanged = dprNew !== dpr && dpr > 0; + const isZoom = deltaIsBigger && difference && dprChanged; + if (isZoom) { + const [scrollbarSize, scrollbarSizeChanged] = updateNativeScrollbarSizeCache(getNativeScrollbarSize(body, envElm, envChildElm)); + assignDeep(environmentInstance._nativeScrollbarSize, scrollbarSize); + removeElements(envElm); + if (scrollbarSizeChanged) { + triggerEvent("_"); + } + } + size = sizeNew; + dpr = dprNew; }); } - var topRightBottomLeft = function topRightBottomLeft(elm, propertyPrefix, propertySuffix) { - var finalPrefix = propertyPrefix ? propertyPrefix + "-" : ''; - var finalSuffix = propertySuffix ? "-" + propertySuffix : ''; - var top = finalPrefix + "top" + finalSuffix; - var right = finalPrefix + "right" + finalSuffix; - var bottom = finalPrefix + "bottom" + finalSuffix; - var left = finalPrefix + "left" + finalSuffix; - var result = style(elm, [top, right, bottom, left]); - return { - t: parseToZeroOrNumber(result[top]), - r: parseToZeroOrNumber(result[right]), - b: parseToZeroOrNumber(result[bottom]), - l: parseToZeroOrNumber(result[left]) - }; - }; + return env; +}; +const getEnvironment = () => { + if (!environmentInstance) { + environmentInstance = createEnvironment(); + } + return environmentInstance; +}; - var zeroObj$1 = { - w: 0, - h: 0 +let contentArrangeCounter = 0; +const unwrap = (elm) => { + appendChildren(parent(elm), contents(elm)); + removeElements(elm); +}; +const createUniqueViewportArrangeElement = () => { + const { _nativeScrollbarStyling, _nativeScrollbarIsOverlaid, _cssCustomProperties } = getEnvironment(); + const create = !_cssCustomProperties && !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y); + const result = create ? document.createElement("style") : false; + if (result) { + attr(result, "id", `${classNameViewportArrange}-${contentArrangeCounter}`); + contentArrangeCounter++; + } + return result; +}; +const staticCreationFromStrategy = (target, initializationValue, strategy) => { + const result = initializationValue || (isFunction(strategy) ? strategy(target) : strategy); + return result || createDiv(); +}; +const dynamicCreationFromStrategy = (target, initializationValue, strategy) => { + const takeInitializationValue = isBoolean(initializationValue) || initializationValue; + const result = takeInitializationValue ? initializationValue : isFunction(strategy) ? strategy(target) : strategy; + return result === true ? createDiv() : result; +}; +const addDataAttrHost = (elm, value) => { + attr(elm, dataAttributeHost, value || ""); + return removeAttr.bind(0, elm, dataAttributeHost); +}; +const createStructureSetupElements = (target) => { + const { _getInitializationStrategy, _nativeScrollbarStyling } = getEnvironment(); + const { + _host: hostInitializationStrategy, + _viewport: viewportInitializationStrategy, + _padding: paddingInitializationStrategy, + _content: contentInitializationStrategy + } = _getInitializationStrategy(); + const targetIsElm = isHTMLElement(target); + const targetStructureInitialization = target; + const targetElement = targetIsElm ? target : targetStructureInitialization.target; + const isTextarea = is(targetElement, "textarea"); + const isBody = !isTextarea && is(targetElement, "body"); + const ownerDocument = targetElement.ownerDocument; + const bodyElm = ownerDocument.body; + const wnd = ownerDocument.defaultView; + const singleElmSupport = !!ResizeObserverConstructor && _nativeScrollbarStyling; + const potentialViewportElement = staticCreationFromStrategy(targetElement, targetStructureInitialization.viewport, viewportInitializationStrategy); + const potentiallySingleElm = potentialViewportElement === targetElement; + const viewportIsTarget = singleElmSupport && potentiallySingleElm; + const viewportElement = potentiallySingleElm && !viewportIsTarget ? staticCreationFromStrategy(targetElement) : potentialViewportElement; + const evaluatedTargetObj = { + _target: targetElement, + _host: isTextarea ? staticCreationFromStrategy(targetElement, targetStructureInitialization.host, hostInitializationStrategy) : targetElement, + _viewport: viewportElement, + _padding: dynamicCreationFromStrategy(targetElement, targetStructureInitialization.padding, paddingInitializationStrategy), + _content: dynamicCreationFromStrategy(targetElement, targetStructureInitialization.content, contentInitializationStrategy), + _viewportArrange: !viewportIsTarget && createUniqueViewportArrangeElement(), + _windowElm: wnd, + _documentElm: ownerDocument, + _htmlElm: parent(bodyElm), + _bodyElm: bodyElm, + _isTextarea: isTextarea, + _isBody: isBody, + _targetIsElm: targetIsElm, + _viewportIsTarget: viewportIsTarget, + _viewportHasClass: (className, attributeClassName) => viewportIsTarget ? hasAttrClass(viewportElement, dataAttributeHost, attributeClassName) : hasClass(viewportElement, className), + _viewportAddRemoveClass: (className, attributeClassName, add) => viewportIsTarget ? attrClass(viewportElement, dataAttributeHost, attributeClassName, add) : (add ? addClass : removeClass)(viewportElement, className) }; - var windowSize = function windowSize() { - return { - w: window.innerWidth, - h: window.innerHeight - }; - }; - var offsetSize = function offsetSize(elm) { - return elm ? { - w: elm.offsetWidth, - h: elm.offsetHeight - } : zeroObj$1; - }; - var clientSize = function clientSize(elm) { - return elm ? { - w: elm.clientWidth, - h: elm.clientHeight - } : zeroObj$1; - }; - var scrollSize = function scrollSize(elm) { - return elm ? { - w: elm.scrollWidth, - h: elm.scrollHeight - } : zeroObj$1; - }; - var fractionalSize = function fractionalSize(elm) { - var cssHeight = parseFloat(style(elm, 'height')) || 0; - var cssWidth = parseFloat(style(elm, 'height')) || 0; - return { - w: cssWidth - Math.round(cssWidth), - h: cssHeight - Math.round(cssHeight) - }; - }; - var getBoundingClientRect = function getBoundingClientRect(elm) { - return elm.getBoundingClientRect(); - }; - - var passiveEventsSupport; - - var supportPassiveEvents = function supportPassiveEvents() { - if (isUndefined(passiveEventsSupport)) { - passiveEventsSupport = false; - - try { - window.addEventListener('test', null, Object.defineProperty({}, 'passive', { - get: function get() { - passiveEventsSupport = true; - } - })); - } catch (e) {} + const generatedElements = keys(evaluatedTargetObj).reduce((arr, key) => { + const value = evaluatedTargetObj[key]; + return push(arr, value && !parent(value) ? value : false); + }, []); + const elementIsGenerated = (elm) => elm ? indexOf(generatedElements, elm) > -1 : null; + const { _target, _host, _padding, _viewport, _content, _viewportArrange } = evaluatedTargetObj; + const destroyFns = []; + const isTextareaHostGenerated = isTextarea && elementIsGenerated(_host); + const targetContents = isTextarea ? _target : contents([_content, _viewport, _padding, _host, _target].find((elm) => elementIsGenerated(elm) === false)); + const contentSlot = _content || _viewport; + const removeHostDataAttr = addDataAttrHost(_host, viewportIsTarget ? "viewport" : "host"); + const removePaddingClass = addClass(_padding, classNamePadding); + const removeViewportClass = addClass(_viewport, !viewportIsTarget && classNameViewport); + const removeContentClass = addClass(_content, classNameContent); + if (isTextareaHostGenerated) { + insertAfter(_target, _host); + push(destroyFns, () => { + insertAfter(_host, _target); + removeElements(_host); + }); + } + appendChildren(contentSlot, targetContents); + appendChildren(_host, _padding); + appendChildren(_padding || _host, !viewportIsTarget && _viewport); + appendChildren(_viewport, _content); + push(destroyFns, () => { + removeHostDataAttr(); + removeAttr(_viewport, dataAttributeHostOverflowX); + removeAttr(_viewport, dataAttributeHostOverflowY); + if (elementIsGenerated(_content)) { + unwrap(_content); } - - return passiveEventsSupport; - }; - - var splitEventNames = function splitEventNames(eventNames) { - return eventNames.split(' '); - }; - - var off = function off(target, eventNames, listener, capture) { - each(splitEventNames(eventNames), function (eventName) { - target.removeEventListener(eventName, listener, capture); - }); - }; - var on = function on(target, eventNames, listener, options) { - var doSupportPassiveEvents = supportPassiveEvents(); - var passive = doSupportPassiveEvents && options && options._passive || false; - var capture = options && options._capture || false; - var once = options && options._once || false; - var offListeners = []; - var nativeOptions = doSupportPassiveEvents ? { - passive: passive, - capture: capture - } : capture; - each(splitEventNames(eventNames), function (eventName) { - var finalListener = once ? function (evt) { - target.removeEventListener(eventName, finalListener, capture); - listener && listener(evt); - } : listener; - push(offListeners, off.bind(null, target, eventName, finalListener, capture)); - target.addEventListener(eventName, finalListener, nativeOptions); - }); - return runEach.bind(0, offListeners); - }; - var stopPropagation = function stopPropagation(evt) { - return evt.stopPropagation(); - }; - var preventDefault = function preventDefault(evt) { - return evt.preventDefault(); - }; - var stopAndPrevent = function stopAndPrevent(evt) { - return stopPropagation(evt) || preventDefault(evt); - }; - - var zeroObj = { - x: 0, - y: 0 - }; - var absoluteCoordinates = function absoluteCoordinates(elm) { - var rect = elm ? getBoundingClientRect(elm) : 0; - return rect ? { - x: rect.left + window.pageYOffset, - y: rect.top + window.pageXOffset - } : zeroObj; - }; - - var manageListener = function manageListener(callback, listener) { - each(isArray(listener) ? listener : [listener], callback); - }; - - var createEventListenerHub = function createEventListenerHub(initialEventListeners) { - var events = new Map(); - - var removeEvent = function removeEvent(name, listener) { - if (name) { - var eventSet = events.get(name); - manageListener(function (currListener) { - if (eventSet) { - eventSet[currListener ? 'delete' : 'clear'](currListener); - } - }, listener); - } else { - events.forEach(function (eventSet) { - eventSet.clear(); - }); - events.clear(); - } - }; - - var addEvent = function addEvent(name, listener) { - var eventSet = events.get(name) || new Set(); - events.set(name, eventSet); - manageListener(function (currListener) { - currListener && eventSet.add(currListener); - }, listener); - return removeEvent.bind(0, name, listener); - }; - - var triggerEvent = function triggerEvent(name, args) { - var eventSet = events.get(name); - each(from(eventSet), function (event) { - if (args) { - event(args); - } else { - event(); - } - }); - }; - - var initialListenerKeys = keys(initialEventListeners); - each(initialListenerKeys, function (key) { - addEvent(key, initialEventListeners[key]); - }); - return [addEvent, removeEvent, triggerEvent]; - }; - - var getPropByPath = function getPropByPath(obj, path) { - return obj ? path.split('.').reduce(function (o, prop) { - return o && hasOwnProperty(o, prop) ? o[prop] : undefined; - }, obj) : undefined; - }; - - var createOptionCheck = function createOptionCheck(options, changedOptions, force) { - return function (path) { - return [getPropByPath(options, path), force || getPropByPath(changedOptions, path) !== undefined]; - }; - }; - var createState = function createState(initialState) { - var state = initialState; - return [function () { - return state; - }, function (newState) { - state = assignDeep({}, state, newState); - }]; - }; - - var classNameEnvironment = 'os-environment'; - var classNameEnvironmentFlexboxGlue = classNameEnvironment + "-flexbox-glue"; - var classNameEnvironmentFlexboxGlueMax = classNameEnvironmentFlexboxGlue + "-max"; - var dataAttributeHost = 'data-overlayscrollbars'; - var dataAttributeHostOverflowX = dataAttributeHost + "-overflow-x"; - var dataAttributeHostOverflowY = dataAttributeHost + "-overflow-y"; - var dataValueHostOverflowVisible = 'overflowVisible'; - var dataValueHostViewportScrollbarStyling = 'viewportStyled'; - var classNamePadding = 'os-padding'; - var classNameViewport = 'os-viewport'; - var classNameViewportArrange = classNameViewport + "-arrange"; - var classNameContent = 'os-content'; - var classNameViewportScrollbarStyling = classNameViewport + "-scrollbar-styled"; - var classNameOverflowVisible = "os-overflow-visible"; - var classNameSizeObserver = 'os-size-observer'; - var classNameSizeObserverAppear = classNameSizeObserver + "-appear"; - var classNameSizeObserverListener = classNameSizeObserver + "-listener"; - var classNameSizeObserverListenerScroll = classNameSizeObserverListener + "-scroll"; - var classNameSizeObserverListenerItem = classNameSizeObserverListener + "-item"; - var classNameSizeObserverListenerItemFinal = classNameSizeObserverListenerItem + "-final"; - var classNameTrinsicObserver = 'os-trinsic-observer'; - var classNameScrollbar = 'os-scrollbar'; - var classNameScrollbarHorizontal = classNameScrollbar + "-horizontal"; - var classNameScrollbarVertical = classNameScrollbar + "-vertical"; - var classNameScrollbarTrack = 'os-scrollbar-track'; - var classNameScrollbarHandle = 'os-scrollbar-handle'; - - var stringify = function stringify(value) { - return JSON.stringify(value, function (_, val) { - if (isFunction(val)) { - throw new Error(); - } - - return val; - }); - }; - - var defaultOptions = { - paddingAbsolute: false, - updating: { - elementEvents: [['img', 'load']], - debounce: [0, 33], - attributes: null, - ignoreMutation: null - }, - overflow: { - x: 'scroll', - y: 'scroll' - }, - nativeScrollbarsOverlaid: { - show: false, - initialize: false - }, - scrollbars: { - visibility: 'auto', - autoHide: 'never', - autoHideDelay: 800, - dragScroll: true, - clickScroll: false, - touch: true + if (elementIsGenerated(_viewport)) { + unwrap(_viewport); } - }; - var getOptionsDiff = function getOptionsDiff(currOptions, newOptions) { - var diff = {}; - var optionsKeys = keys(newOptions).concat(keys(currOptions)); - each(optionsKeys, function (optionKey) { - var currOptionValue = currOptions[optionKey]; - var newOptionValue = newOptions[optionKey]; + if (elementIsGenerated(_padding)) { + unwrap(_padding); + } + removePaddingClass(); + removeViewportClass(); + removeContentClass(); + }); + if (_nativeScrollbarStyling && !viewportIsTarget) { + push(destroyFns, removeClass.bind(0, _viewport, classNameViewportScrollbarStyling)); + } + if (_viewportArrange) { + insertBefore(_viewport, _viewportArrange); + push(destroyFns, removeElements.bind(0, _viewportArrange)); + } + return [evaluatedTargetObj, runEach.bind(0, destroyFns)]; +}; - if (isObject(currOptionValue) && isObject(newOptionValue)) { - assignDeep(diff[optionKey] = {}, getOptionsDiff(currOptionValue, newOptionValue)); - } else if (hasOwnProperty(newOptions, optionKey) && newOptionValue !== currOptionValue) { - var isDiff = true; - - if (isArray(currOptionValue) || isArray(newOptionValue)) { - try { - if (stringify(currOptionValue) === stringify(newOptionValue)) { - isDiff = false; - } - } catch (_unused) {} - } - - if (isDiff) { - diff[optionKey] = newOptionValue; - } - } - }); - return diff; - }; - - var environmentInstance; - var abs = Math.abs, - round = Math.round; - - var diffBiggerThanOne = function diffBiggerThanOne(valOne, valTwo) { - var absValOne = abs(valOne); - var absValTwo = abs(valTwo); - return !(absValOne === absValTwo || absValOne + 1 === absValTwo || absValOne - 1 === absValTwo); - }; - - var getNativeScrollbarSize = function getNativeScrollbarSize(body, measureElm, measureElmChild) { - appendChildren(body, measureElm); - var cSize = clientSize(measureElm); - var oSize = offsetSize(measureElm); - var fSize = fractionalSize(measureElmChild); - return { - x: oSize.h - cSize.h + fSize.h, - y: oSize.w - cSize.w + fSize.w - }; - }; - - var getNativeScrollbarStyling = function getNativeScrollbarStyling(testElm) { - var result = false; - var revertClass = addClass(testElm, classNameViewportScrollbarStyling); - - try { - result = style(testElm, cssProperty('scrollbar-width')) === 'none' || window.getComputedStyle(testElm, '::-webkit-scrollbar').getPropertyValue('display') === 'none'; - } catch (ex) {} - - revertClass(); - return result; - }; - - var getRtlScrollBehavior = function getRtlScrollBehavior(parentElm, childElm) { - var strHidden = 'hidden'; - style(parentElm, { - overflowX: strHidden, - overflowY: strHidden, - direction: 'rtl' - }); - scrollLeft(parentElm, 0); - var parentOffset = absoluteCoordinates(parentElm); - var childOffset = absoluteCoordinates(childElm); - scrollLeft(parentElm, -999); - var childOffsetAfterScroll = absoluteCoordinates(childElm); - return { - i: parentOffset.x === childOffset.x, - n: childOffset.x !== childOffsetAfterScroll.x - }; - }; - - var getFlexboxGlue = function getFlexboxGlue(parentElm, childElm) { - var revertFbxGlue = addClass(parentElm, classNameEnvironmentFlexboxGlue); - var minOffsetsizeParent = getBoundingClientRect(parentElm); - var minOffsetsize = getBoundingClientRect(childElm); - var supportsMin = equalBCRWH(minOffsetsize, minOffsetsizeParent, true); - var revertFbxGlueMax = addClass(parentElm, classNameEnvironmentFlexboxGlueMax); - var maxOffsetsizeParent = getBoundingClientRect(parentElm); - var maxOffsetsize = getBoundingClientRect(childElm); - var supportsMax = equalBCRWH(maxOffsetsize, maxOffsetsizeParent, true); - revertFbxGlue(); - revertFbxGlueMax(); - return supportsMin && supportsMax; - }; - - var getWindowDPR = function getWindowDPR() { - var dDPI = window.screen.deviceXDPI || 0; - var sDPI = window.screen.logicalXDPI || 1; - return window.devicePixelRatio || dDPI / sDPI; - }; - - var getDefaultInitializationStrategy = function getDefaultInitializationStrategy(nativeScrollbarStyling) { - return { - _host: null, - _viewport: null, - _padding: !nativeScrollbarStyling, - _content: false, - _scrollbarsSlot: null - }; - }; - - var createEnvironment = function createEnvironment() { - var _document = document, - body = _document.body; - var envDOM = createDOM("
"); - var envElm = envDOM[0]; - var envChildElm = envElm.firstChild; - - var _createEventListenerH = createEventListenerHub(), - addEvent = _createEventListenerH[0], - triggerEvent = _createEventListenerH[2]; - - var _createCache = createCache({ - _initialValue: getNativeScrollbarSize(body, envElm, envChildElm), - _equal: equalXY - }), - updateNativeScrollbarSizeCache = _createCache[0], - getNativeScrollbarSizeCache = _createCache[1]; - - var _getNativeScrollbarSi = getNativeScrollbarSizeCache(), - nativeScrollbarSize = _getNativeScrollbarSi[0]; - - var nativeScrollbarStyling = getNativeScrollbarStyling(envElm); - var nativeScrollbarIsOverlaid = { - x: nativeScrollbarSize.x === 0, - y: nativeScrollbarSize.y === 0 - }; - var initializationStrategy = getDefaultInitializationStrategy(nativeScrollbarStyling); - var defaultDefaultOptions = assignDeep({}, defaultOptions); - var env = { - _nativeScrollbarSize: nativeScrollbarSize, - _nativeScrollbarIsOverlaid: nativeScrollbarIsOverlaid, - _nativeScrollbarStyling: nativeScrollbarStyling, - _cssCustomProperties: style(envElm, 'zIndex') === '-1', - _rtlScrollBehavior: getRtlScrollBehavior(envElm, envChildElm), - _flexboxGlue: getFlexboxGlue(envElm, envChildElm), - _addListener: function _addListener(listener) { - return addEvent('_', listener); - }, - _getInitializationStrategy: assignDeep.bind(0, {}, initializationStrategy), - _setInitializationStrategy: function _setInitializationStrategy(newInitializationStrategy) { - assignDeep(initializationStrategy, newInitializationStrategy); - }, - _getDefaultOptions: assignDeep.bind(0, {}, defaultDefaultOptions), - _setDefaultOptions: function _setDefaultOptions(newDefaultOptions) { - assignDeep(defaultDefaultOptions, newDefaultOptions); - }, - _defaultInitializationStrategy: assignDeep({}, initializationStrategy), - _defaultDefaultOptions: assignDeep({}, defaultDefaultOptions) - }; - removeAttr(envElm, 'style'); - removeElements(envElm); - - if (!nativeScrollbarStyling && (!nativeScrollbarIsOverlaid.x || !nativeScrollbarIsOverlaid.y)) { - var size = windowSize(); - var dpr = getWindowDPR(); - window.addEventListener('resize', function () { - var sizeNew = windowSize(); - var deltaSize = { - w: sizeNew.w - size.w, - h: sizeNew.h - size.h - }; - if (deltaSize.w === 0 && deltaSize.h === 0) return; - var deltaAbsSize = { - w: abs(deltaSize.w), - h: abs(deltaSize.h) - }; - var deltaAbsRatio = { - 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; - var difference = !diffBiggerThanOne(deltaAbsRatio.w, deltaAbsRatio.h); - var dprChanged = dprNew !== dpr && dpr > 0; - var isZoom = deltaIsBigger && difference && dprChanged; - - if (isZoom) { - var _updateNativeScrollba = updateNativeScrollbarSizeCache(getNativeScrollbarSize(body, envElm, envChildElm)), - scrollbarSize = _updateNativeScrollba[0], - scrollbarSizeChanged = _updateNativeScrollba[1]; - - assignDeep(environmentInstance._nativeScrollbarSize, scrollbarSize); - removeElements(envElm); - - if (scrollbarSizeChanged) { - triggerEvent('_'); - } - } - - size = sizeNew; - dpr = dprNew; +const createTrinsicUpdate = (structureSetupElements, state) => { + const { _content } = structureSetupElements; + const [getState] = state; + return (updateHints) => { + const { _flexboxGlue } = getEnvironment(); + const { _heightIntrinsic } = getState(); + const { _heightIntrinsicChanged } = updateHints; + const heightIntrinsicChanged = (_content || !_flexboxGlue) && _heightIntrinsicChanged; + if (heightIntrinsicChanged) { + style(_content, { + height: _heightIntrinsic ? "" : "100%" }); } - - return env; - }; - - var getEnvironment = function getEnvironment() { - if (!environmentInstance) { - environmentInstance = createEnvironment(); - } - - return environmentInstance; - }; - - var contentArrangeCounter = 0; - - var unwrap = function unwrap(elm) { - appendChildren(parent(elm), contents(elm)); - removeElements(elm); - }; - - var createUniqueViewportArrangeElement = function createUniqueViewportArrangeElement() { - var _getEnvironment = getEnvironment(), - _nativeScrollbarStyling = _getEnvironment._nativeScrollbarStyling, - _nativeScrollbarIsOverlaid = _getEnvironment._nativeScrollbarIsOverlaid, - _cssCustomProperties = _getEnvironment._cssCustomProperties; - - var create = !_cssCustomProperties && !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y); - var result = create ? document.createElement('style') : false; - - if (result) { - attr(result, 'id', classNameViewportArrange + "-" + contentArrangeCounter); - contentArrangeCounter++; - } - - return result; - }; - - var staticCreationFromStrategy = function staticCreationFromStrategy(target, initializationValue, strategy) { - var result = initializationValue || (isFunction(strategy) ? strategy(target) : strategy); - return result || createDiv(); - }; - - var dynamicCreationFromStrategy = function dynamicCreationFromStrategy(target, initializationValue, strategy) { - var takeInitializationValue = isBoolean(initializationValue) || initializationValue; - var result = takeInitializationValue ? initializationValue : isFunction(strategy) ? strategy(target) : strategy; - return result === true ? createDiv() : result; - }; - - var addDataAttrHost = function addDataAttrHost(elm, value) { - attr(elm, dataAttributeHost, value || ''); - return removeAttr.bind(0, elm, dataAttributeHost); - }; - - var createStructureSetupElements = function createStructureSetupElements(target) { - var _getEnvironment2 = getEnvironment(), - _getInitializationStrategy = _getEnvironment2._getInitializationStrategy, - _nativeScrollbarStyling = _getEnvironment2._nativeScrollbarStyling; - - var _getInitializationStr = _getInitializationStrategy(), - hostInitializationStrategy = _getInitializationStr._host, - viewportInitializationStrategy = _getInitializationStr._viewport, - paddingInitializationStrategy = _getInitializationStr._padding, - contentInitializationStrategy = _getInitializationStr._content; - - var targetIsElm = isHTMLElement(target); - var targetStructureInitialization = target; - var targetElement = targetIsElm ? target : targetStructureInitialization.target; - var isTextarea = is(targetElement, 'textarea'); - var isBody = !isTextarea && is(targetElement, 'body'); - var ownerDocument = targetElement.ownerDocument; - var bodyElm = ownerDocument.body; - var wnd = ownerDocument.defaultView; - var singleElmSupport = !!ResizeObserverConstructor && _nativeScrollbarStyling; - var potentialViewportElement = staticCreationFromStrategy(targetElement, targetStructureInitialization.viewport, viewportInitializationStrategy); - var potentiallySingleElm = potentialViewportElement === targetElement; - var viewportIsTarget = singleElmSupport && potentiallySingleElm; - var viewportElement = potentiallySingleElm && !viewportIsTarget ? staticCreationFromStrategy(targetElement) : potentialViewportElement; - var evaluatedTargetObj = { - _target: targetElement, - _host: isTextarea ? staticCreationFromStrategy(targetElement, targetStructureInitialization.host, hostInitializationStrategy) : targetElement, - _viewport: viewportElement, - _padding: dynamicCreationFromStrategy(targetElement, targetStructureInitialization.padding, paddingInitializationStrategy), - _content: dynamicCreationFromStrategy(targetElement, targetStructureInitialization.content, contentInitializationStrategy), - _viewportArrange: !viewportIsTarget && createUniqueViewportArrangeElement(), - _windowElm: wnd, - _documentElm: ownerDocument, - _htmlElm: parent(bodyElm), - _bodyElm: bodyElm, - _isTextarea: isTextarea, - _isBody: isBody, - _targetIsElm: targetIsElm, - _viewportIsTarget: viewportIsTarget, - _viewportHasClass: function _viewportHasClass(className, attributeClassName) { - return viewportIsTarget ? hasAttrClass(viewportElement, dataAttributeHost, attributeClassName) : hasClass(viewportElement, className); - }, - _viewportAddRemoveClass: function _viewportAddRemoveClass(className, attributeClassName, add) { - return viewportIsTarget ? attrClass(viewportElement, dataAttributeHost, attributeClassName, add) : (add ? addClass : removeClass)(viewportElement, className); - } + return { + _sizeChanged: heightIntrinsicChanged, + _contentMutation: heightIntrinsicChanged }; - var generatedElements = keys(evaluatedTargetObj).reduce(function (arr, key) { - var value = evaluatedTargetObj[key]; - return push(arr, value && !parent(value) ? value : false); - }, []); - - var elementIsGenerated = function elementIsGenerated(elm) { - return elm ? indexOf(generatedElements, elm) > -1 : null; - }; - - var _target = evaluatedTargetObj._target, - _host = evaluatedTargetObj._host, - _padding = evaluatedTargetObj._padding, - _viewport = evaluatedTargetObj._viewport, - _content = evaluatedTargetObj._content, - _viewportArrange = evaluatedTargetObj._viewportArrange; - var destroyFns = []; - var isTextareaHostGenerated = isTextarea && elementIsGenerated(_host); - var targetContents = isTextarea ? _target : contents([_content, _viewport, _padding, _host, _target].find(function (elm) { - return elementIsGenerated(elm) === false; - })); - var contentSlot = _content || _viewport; - var removeHostDataAttr = addDataAttrHost(_host, viewportIsTarget ? 'viewport' : 'host'); - var removePaddingClass = addClass(_padding, classNamePadding); - var removeViewportClass = addClass(_viewport, !viewportIsTarget && classNameViewport); - var removeContentClass = addClass(_content, classNameContent); - - if (isTextareaHostGenerated) { - insertAfter(_target, _host); - push(destroyFns, function () { - insertAfter(_host, _target); - removeElements(_host); - }); - } - - appendChildren(contentSlot, targetContents); - appendChildren(_host, _padding); - appendChildren(_padding || _host, !viewportIsTarget && _viewport); - appendChildren(_viewport, _content); - push(destroyFns, function () { - removeHostDataAttr(); - removeAttr(_viewport, dataAttributeHostOverflowX); - removeAttr(_viewport, dataAttributeHostOverflowY); - - if (elementIsGenerated(_content)) { - unwrap(_content); - } - - if (elementIsGenerated(_viewport)) { - unwrap(_viewport); - } - - if (elementIsGenerated(_padding)) { - unwrap(_padding); - } - - removePaddingClass(); - removeViewportClass(); - removeContentClass(); - }); - - if (_nativeScrollbarStyling && !viewportIsTarget) { - push(destroyFns, removeClass.bind(0, _viewport, classNameViewportScrollbarStyling)); - } - - if (_viewportArrange) { - insertBefore(_viewport, _viewportArrange); - push(destroyFns, removeElements.bind(0, _viewportArrange)); - } - - return [evaluatedTargetObj, runEach.bind(0, destroyFns)]; }; +}; - var createTrinsicUpdate = function createTrinsicUpdate(structureSetupElements, state) { - var _content = structureSetupElements._content; - var getState = state[0]; - return function (updateHints) { - var _getEnvironment = getEnvironment(), - _flexboxGlue = _getEnvironment._flexboxGlue; - - var _getState = getState(), - _heightIntrinsic = _getState._heightIntrinsic; - - var _heightIntrinsicChanged = updateHints._heightIntrinsicChanged; - var heightIntrinsicChanged = (_content || !_flexboxGlue) && _heightIntrinsicChanged; - - if (heightIntrinsicChanged) { - style(_content, { - height: _heightIntrinsic ? '' : '100%' - }); - } - - return { - _sizeChanged: heightIntrinsicChanged, - _contentMutation: heightIntrinsicChanged +const createPaddingUpdate = (structureSetupElements, state) => { + const [getState, setState] = state; + const { _host, _padding, _viewport, _viewportIsTarget: _isSingleElm } = structureSetupElements; + const [updatePaddingCache, currentPaddingCache] = createCache({ + _equal: equalTRBL, + _initialValue: topRightBottomLeft() + }, topRightBottomLeft.bind(0, _host, "padding", "")); + return (updateHints, checkOption, force) => { + let [padding, paddingChanged] = currentPaddingCache(force); + const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment(); + const { _directionIsRTL } = getState(); + const { _sizeChanged, _contentMutation, _directionChanged } = updateHints; + const [paddingAbsolute, paddingAbsoluteChanged] = checkOption("paddingAbsolute"); + const contentMutation = !_flexboxGlue && _contentMutation; + if (_sizeChanged || paddingChanged || contentMutation) { + [padding, paddingChanged] = updatePaddingCache(force); + } + const paddingStyleChanged = !_isSingleElm && (paddingAbsoluteChanged || _directionChanged || paddingChanged); + if (paddingStyleChanged) { + const paddingRelative = !paddingAbsolute || !_padding && !_nativeScrollbarStyling; + const paddingHorizontal = padding.r + padding.l; + const paddingVertical = padding.t + padding.b; + const paddingStyle = { + marginRight: paddingRelative && !_directionIsRTL ? -paddingHorizontal : 0, + marginBottom: paddingRelative ? -paddingVertical : 0, + marginLeft: paddingRelative && _directionIsRTL ? -paddingHorizontal : 0, + top: paddingRelative ? -padding.t : 0, + right: paddingRelative ? _directionIsRTL ? -padding.r : "auto" : 0, + left: paddingRelative ? _directionIsRTL ? "auto" : -padding.l : 0, + width: paddingRelative ? `calc(100% + ${paddingHorizontal}px)` : "" }; - }; - }; - - var createPaddingUpdate = function createPaddingUpdate(structureSetupElements, state) { - var getState = state[0], - setState = state[1]; - var _host = structureSetupElements._host, - _padding = structureSetupElements._padding, - _viewport = structureSetupElements._viewport, - _isSingleElm = structureSetupElements._viewportIsTarget; - - var _createCache = createCache({ - _equal: equalTRBL, - _initialValue: topRightBottomLeft() - }, topRightBottomLeft.bind(0, _host, 'padding', '')), - updatePaddingCache = _createCache[0], - currentPaddingCache = _createCache[1]; - - return function (updateHints, checkOption, force) { - var _currentPaddingCache = currentPaddingCache(force), - padding = _currentPaddingCache[0], - paddingChanged = _currentPaddingCache[1]; - - var _getEnvironment = getEnvironment(), - _nativeScrollbarStyling = _getEnvironment._nativeScrollbarStyling, - _flexboxGlue = _getEnvironment._flexboxGlue; - - var _getState = getState(), - _directionIsRTL = _getState._directionIsRTL; - - var _sizeChanged = updateHints._sizeChanged, - _contentMutation = updateHints._contentMutation, - _directionChanged = updateHints._directionChanged; - - var _checkOption = checkOption('paddingAbsolute'), - paddingAbsolute = _checkOption[0], - paddingAbsoluteChanged = _checkOption[1]; - - var contentMutation = !_flexboxGlue && _contentMutation; - - if (_sizeChanged || paddingChanged || contentMutation) { - var _updatePaddingCache = updatePaddingCache(force); - - padding = _updatePaddingCache[0]; - paddingChanged = _updatePaddingCache[1]; - } - - var paddingStyleChanged = !_isSingleElm && (paddingAbsoluteChanged || _directionChanged || paddingChanged); - - if (paddingStyleChanged) { - var paddingRelative = !paddingAbsolute || !_padding && !_nativeScrollbarStyling; - var paddingHorizontal = padding.r + padding.l; - var paddingVertical = padding.t + padding.b; - var paddingStyle = { - marginRight: paddingRelative && !_directionIsRTL ? -paddingHorizontal : 0, - marginBottom: paddingRelative ? -paddingVertical : 0, - marginLeft: paddingRelative && _directionIsRTL ? -paddingHorizontal : 0, - top: paddingRelative ? -padding.t : 0, - right: paddingRelative ? _directionIsRTL ? -padding.r : 'auto' : 0, - left: paddingRelative ? _directionIsRTL ? 'auto' : -padding.l : 0, - width: paddingRelative ? "calc(100% + " + paddingHorizontal + "px)" : '' - }; - var viewportStyle = { - paddingTop: paddingRelative ? padding.t : 0, - paddingRight: paddingRelative ? padding.r : 0, - paddingBottom: paddingRelative ? padding.b : 0, - paddingLeft: paddingRelative ? padding.l : 0 - }; - style(_padding || _viewport, paddingStyle); - style(_viewport, viewportStyle); - setState({ - _padding: padding, - _paddingAbsolute: !paddingRelative, - _viewportPaddingStyle: _padding ? viewportStyle : assignDeep({}, paddingStyle, viewportStyle) - }); - } - - return { - _paddingStyleChanged: paddingStyleChanged + const viewportStyle = { + paddingTop: paddingRelative ? padding.t : 0, + paddingRight: paddingRelative ? padding.r : 0, + paddingBottom: paddingRelative ? padding.b : 0, + paddingLeft: paddingRelative ? padding.l : 0 }; - }; - }; - - var max = Math.max; - var strVisible = 'visible'; - var strHidden = 'hidden'; - var overlaidScrollbarsHideOffset = 42; - var whCacheOptions = { - _equal: equalWH, - _initialValue: { - w: 0, - h: 0 + style(_padding || _viewport, paddingStyle); + style(_viewport, viewportStyle); + setState({ + _padding: padding, + _paddingAbsolute: !paddingRelative, + _viewportPaddingStyle: _padding ? viewportStyle : assignDeep({}, paddingStyle, viewportStyle) + }); } - }; - var xyCacheOptions = { - _equal: equalXY, - _initialValue: { - x: strHidden, - y: strHidden - } - }; - - var getOverflowAmount = function getOverflowAmount(viewportScrollSize, viewportClientSize, sizeFraction) { - var tollerance = window.devicePixelRatio % 1 !== 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: amount.w > tollerance ? amount.w : 0, - h: amount.h > tollerance ? amount.h : 0 + _paddingStyleChanged: paddingStyleChanged }; }; +}; - var conditionalClass = function conditionalClass(elm, classNames, add) { - return add ? addClass(elm, classNames) : removeClass(elm, classNames); +const { max } = Math; +const strVisible = "visible"; +const strHidden = "hidden"; +const overlaidScrollbarsHideOffset = 42; +const whCacheOptions = { + _equal: equalWH, + _initialValue: { w: 0, h: 0 } +}; +const xyCacheOptions = { + _equal: equalXY, + _initialValue: { x: strHidden, y: strHidden } +}; +const getOverflowAmount = (viewportScrollSize, viewportClientSize, sizeFraction) => { + 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)) }; - - var overflowIsVisible = function overflowIsVisible(overflowBehavior) { - return overflowBehavior.indexOf(strVisible) === 0; + return { + w: amount.w > tollerance ? amount.w : 0, + h: amount.h > tollerance ? amount.h : 0 }; - - var createOverflowUpdate = function createOverflowUpdate(structureSetupElements, state) { - var getState = state[0], - setState = state[1]; - var _host = structureSetupElements._host, - _padding = structureSetupElements._padding, - _viewport = structureSetupElements._viewport, - _viewportArrange = structureSetupElements._viewportArrange, - _viewportIsTarget = structureSetupElements._viewportIsTarget, - _viewportAddRemoveClass = structureSetupElements._viewportAddRemoveClass; - - var _getEnvironment = getEnvironment(), - _nativeScrollbarSize = _getEnvironment._nativeScrollbarSize, - _flexboxGlue = _getEnvironment._flexboxGlue, - _nativeScrollbarStyling = _getEnvironment._nativeScrollbarStyling, - _nativeScrollbarIsOverlaid = _getEnvironment._nativeScrollbarIsOverlaid; - - var doViewportArrange = !_viewportIsTarget && !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y); - - var _createCache = createCache(whCacheOptions, fractionalSize.bind(0, _host)), - updateSizeFraction = _createCache[0], - getCurrentSizeFraction = _createCache[1]; - - var _createCache2 = createCache(whCacheOptions, scrollSize.bind(0, _viewport)), - updateViewportScrollSizeCache = _createCache2[0], - getCurrentViewportScrollSizeCache = _createCache2[1]; - - var _createCache3 = createCache(whCacheOptions), - updateOverflowAmountCache = _createCache3[0], - getCurrentOverflowAmountCache = _createCache3[1]; - - var _createCache4 = createCache(xyCacheOptions), - updateOverflowStyleCache = _createCache4[0]; - - var fixFlexboxGlue = function fixFlexboxGlue(viewportOverflowState, heightIntrinsic) { +}; +const conditionalClass = (elm, classNames, add) => add ? addClass(elm, classNames) : removeClass(elm, classNames); +const overflowIsVisible = (overflowBehavior) => overflowBehavior.indexOf(strVisible) === 0; +const createOverflowUpdate = (structureSetupElements, state) => { + const [getState, setState] = state; + const { + _host, + _padding, + _viewport, + _viewportArrange, + _viewportIsTarget, + _viewportAddRemoveClass + } = structureSetupElements; + const { + _nativeScrollbarSize, + _flexboxGlue, + _nativeScrollbarStyling, + _nativeScrollbarIsOverlaid + } = getEnvironment(); + const doViewportArrange = !_viewportIsTarget && !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y); + const [updateSizeFraction, getCurrentSizeFraction] = createCache(whCacheOptions, fractionalSize.bind(0, _viewport)); + const [updateViewportScrollSizeCache, getCurrentViewportScrollSizeCache] = createCache(whCacheOptions, scrollSize.bind(0, _viewport)); + const [updateOverflowAmountCache, getCurrentOverflowAmountCache] = createCache(whCacheOptions); + const [updateOverflowStyleCache] = createCache(xyCacheOptions); + const fixFlexboxGlue = (viewportOverflowState, heightIntrinsic) => { + style(_viewport, { + height: "" + }); + if (heightIntrinsic) { + const { _paddingAbsolute, _padding: padding } = getState(); + const { _overflowScroll, _scrollbarsHideOffset } = viewportOverflowState; + 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 subtractXScrollbar = !(_nativeScrollbarIsOverlaid.x && isContentBox); style(_viewport, { - height: '' + height: hostClientSize.h + fSize.h + (_overflowScroll.x && subtractXScrollbar ? _scrollbarsHideOffset.x : 0) - paddingVertical }); - - if (heightIntrinsic) { - var _getState = getState(), - _paddingAbsolute = _getState._paddingAbsolute, - padding = _getState._padding; - - var _overflowScroll = viewportOverflowState._overflowScroll, - _scrollbarsHideOffset = viewportOverflowState._scrollbarsHideOffset; - 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 subtractXScrollbar = !(_nativeScrollbarIsOverlaid.x && isContentBox); + } + }; + const getViewportOverflowState = (showNativeOverlaidScrollbars, viewportStyleObj) => { + const arrangeHideOffset = !_nativeScrollbarStyling && !showNativeOverlaidScrollbars ? overlaidScrollbarsHideOffset : 0; + const getStatePerAxis = (styleKey, isOverlaid, nativeScrollbarSize) => { + const overflowStyle = style(_viewport, styleKey); + const objectPrefferedOverflowStyle = viewportStyleObj ? viewportStyleObj[styleKey] : overflowStyle; + const overflowScroll = objectPrefferedOverflowStyle === "scroll"; + const nonScrollbarStylingHideOffset = isOverlaid ? arrangeHideOffset : nativeScrollbarSize; + const scrollbarsHideOffset = overflowScroll && !_nativeScrollbarStyling ? nonScrollbarStylingHideOffset : 0; + const scrollbarsHideOffsetArrange = isOverlaid && !!arrangeHideOffset; + return [overflowStyle, overflowScroll, scrollbarsHideOffset, scrollbarsHideOffsetArrange]; + }; + const [xOverflowStyle, xOverflowScroll, xScrollbarsHideOffset, xScrollbarsHideOffsetArrange] = getStatePerAxis("overflowX", _nativeScrollbarIsOverlaid.x, _nativeScrollbarSize.x); + const [yOverflowStyle, yOverflowScroll, yScrollbarsHideOffset, yScrollbarsHideOffsetArrange] = getStatePerAxis("overflowY", _nativeScrollbarIsOverlaid.y, _nativeScrollbarSize.y); + return { + _overflowStyle: { + x: xOverflowStyle, + y: yOverflowStyle + }, + _overflowScroll: { + x: xOverflowScroll, + y: yOverflowScroll + }, + _scrollbarsHideOffset: { + x: xScrollbarsHideOffset, + y: yScrollbarsHideOffset + }, + _scrollbarsHideOffsetArrange: { + x: xScrollbarsHideOffsetArrange, + y: yScrollbarsHideOffsetArrange + } + }; + }; + const setViewportOverflowState = (showNativeOverlaidScrollbars, hasOverflow, overflowOption, viewportStyleObj) => { + const setAxisOverflowStyle = (behavior, hasOverflowAxis) => { + const overflowVisible = overflowIsVisible(behavior); + const overflowVisibleBehavior = hasOverflowAxis && overflowVisible && behavior.replace(`${strVisible}-`, "") || ""; + return [ + hasOverflowAxis && !overflowVisible ? behavior : "", + overflowIsVisible(overflowVisibleBehavior) ? "hidden" : overflowVisibleBehavior + ]; + }; + const [overflowX, visibleBehaviorX] = setAxisOverflowStyle(overflowOption.x, hasOverflow.x); + const [overflowY, visibleBehaviorY] = setAxisOverflowStyle(overflowOption.y, hasOverflow.y); + viewportStyleObj.overflowX = visibleBehaviorX && overflowY ? visibleBehaviorX : overflowX; + viewportStyleObj.overflowY = visibleBehaviorY && overflowX ? visibleBehaviorY : overflowY; + return getViewportOverflowState(showNativeOverlaidScrollbars, viewportStyleObj); + }; + const arrangeViewport = (viewportOverflowState, viewportScrollSize, sizeFraction, directionIsRTL) => { + if (doViewportArrange) { + const { _viewportPaddingStyle } = getState(); + const { _scrollbarsHideOffset, _scrollbarsHideOffsetArrange } = viewportOverflowState; + const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange; + const { x: hideOffsetX, y: hideOffsetY } = _scrollbarsHideOffset; + const viewportArrangeHorizontalPaddingKey = directionIsRTL ? "paddingRight" : "paddingLeft"; + const viewportArrangeHorizontalPaddingValue = _viewportPaddingStyle[viewportArrangeHorizontalPaddingKey]; + const viewportArrangeVerticalPaddingValue = _viewportPaddingStyle.paddingTop; + const fractionalContentWidth = viewportScrollSize.w + sizeFraction.w; + const fractionalContenHeight = viewportScrollSize.h + sizeFraction.h; + const arrangeSize = { + w: hideOffsetY && arrangeY ? `${hideOffsetY + fractionalContentWidth - viewportArrangeHorizontalPaddingValue}px` : "", + h: hideOffsetX && arrangeX ? `${hideOffsetX + fractionalContenHeight - viewportArrangeVerticalPaddingValue}px` : "" + }; + if (_viewportArrange) { + const { sheet } = _viewportArrange; + if (sheet) { + const { cssRules } = sheet; + if (cssRules) { + if (!cssRules.length) { + sheet.insertRule(`#${attr(_viewportArrange, "id")} + .${classNameViewportArrange}::before {}`, 0); + } + const ruleStyle = cssRules[0].style; + ruleStyle.width = arrangeSize.w; + ruleStyle.height = arrangeSize.h; + } + } + } else { style(_viewport, { - height: hostClientSize.h + fSize.h + (_overflowScroll.x && subtractXScrollbar ? _scrollbarsHideOffset.x : 0) - paddingVertical + "--os-vaw": arrangeSize.w, + "--os-vah": arrangeSize.h }); } - }; - - var getViewportOverflowState = function getViewportOverflowState(showNativeOverlaidScrollbars, viewportStyleObj) { - var arrangeHideOffset = !_nativeScrollbarStyling && !showNativeOverlaidScrollbars ? overlaidScrollbarsHideOffset : 0; - - var getStatePerAxis = function getStatePerAxis(styleKey, isOverlaid, nativeScrollbarSize) { - var overflowStyle = style(_viewport, styleKey); - var objectPrefferedOverflowStyle = viewportStyleObj ? viewportStyleObj[styleKey] : overflowStyle; - var overflowScroll = objectPrefferedOverflowStyle === 'scroll'; - var nonScrollbarStylingHideOffset = isOverlaid ? arrangeHideOffset : nativeScrollbarSize; - var scrollbarsHideOffset = overflowScroll && !_nativeScrollbarStyling ? nonScrollbarStylingHideOffset : 0; - var scrollbarsHideOffsetArrange = isOverlaid && !!arrangeHideOffset; - return [overflowStyle, overflowScroll, scrollbarsHideOffset, scrollbarsHideOffsetArrange]; - }; - - var _getStatePerAxis = getStatePerAxis('overflowX', _nativeScrollbarIsOverlaid.x, _nativeScrollbarSize.x), - xOverflowStyle = _getStatePerAxis[0], - xOverflowScroll = _getStatePerAxis[1], - xScrollbarsHideOffset = _getStatePerAxis[2], - xScrollbarsHideOffsetArrange = _getStatePerAxis[3]; - - var _getStatePerAxis2 = getStatePerAxis('overflowY', _nativeScrollbarIsOverlaid.y, _nativeScrollbarSize.y), - yOverflowStyle = _getStatePerAxis2[0], - yOverflowScroll = _getStatePerAxis2[1], - yScrollbarsHideOffset = _getStatePerAxis2[2], - yScrollbarsHideOffsetArrange = _getStatePerAxis2[3]; - - return { - _overflowStyle: { - x: xOverflowStyle, - y: yOverflowStyle - }, - _overflowScroll: { - x: xOverflowScroll, - y: yOverflowScroll - }, - _scrollbarsHideOffset: { - x: xScrollbarsHideOffset, - y: yScrollbarsHideOffset - }, - _scrollbarsHideOffsetArrange: { - x: xScrollbarsHideOffsetArrange, - y: yScrollbarsHideOffsetArrange - } - }; - }; - - var setViewportOverflowState = function setViewportOverflowState(showNativeOverlaidScrollbars, hasOverflow, overflowOption, viewportStyleObj) { - var setAxisOverflowStyle = function setAxisOverflowStyle(behavior, hasOverflowAxis) { - var overflowVisible = overflowIsVisible(behavior); - var overflowVisibleBehavior = hasOverflowAxis && overflowVisible && behavior.replace(strVisible + "-", '') || ''; - return [hasOverflowAxis && !overflowVisible ? behavior : '', overflowIsVisible(overflowVisibleBehavior) ? 'hidden' : overflowVisibleBehavior]; - }; - - var _setAxisOverflowStyle = setAxisOverflowStyle(overflowOption.x, hasOverflow.x), - overflowX = _setAxisOverflowStyle[0], - visibleBehaviorX = _setAxisOverflowStyle[1]; - - var _setAxisOverflowStyle2 = setAxisOverflowStyle(overflowOption.y, hasOverflow.y), - overflowY = _setAxisOverflowStyle2[0], - visibleBehaviorY = _setAxisOverflowStyle2[1]; - - viewportStyleObj.overflowX = visibleBehaviorX && overflowY ? visibleBehaviorX : overflowX; - viewportStyleObj.overflowY = visibleBehaviorY && overflowX ? visibleBehaviorY : overflowY; - return getViewportOverflowState(showNativeOverlaidScrollbars, viewportStyleObj); - }; - - var arrangeViewport = function arrangeViewport(viewportOverflowState, viewportScrollSize, sizeFraction, directionIsRTL) { - if (doViewportArrange) { - var _getState2 = getState(), - _viewportPaddingStyle = _getState2._viewportPaddingStyle; - - var _scrollbarsHideOffset = viewportOverflowState._scrollbarsHideOffset, - _scrollbarsHideOffsetArrange = viewportOverflowState._scrollbarsHideOffsetArrange; - var arrangeX = _scrollbarsHideOffsetArrange.x, - arrangeY = _scrollbarsHideOffsetArrange.y; - var hideOffsetX = _scrollbarsHideOffset.x, - hideOffsetY = _scrollbarsHideOffset.y; - var viewportArrangeHorizontalPaddingKey = directionIsRTL ? 'paddingRight' : 'paddingLeft'; - var viewportArrangeHorizontalPaddingValue = _viewportPaddingStyle[viewportArrangeHorizontalPaddingKey]; - var viewportArrangeVerticalPaddingValue = _viewportPaddingStyle.paddingTop; - var fractionalContentWidth = viewportScrollSize.w + sizeFraction.w; - var fractionalContenHeight = viewportScrollSize.h + sizeFraction.h; - var arrangeSize = { - w: hideOffsetY && arrangeY ? hideOffsetY + fractionalContentWidth - viewportArrangeHorizontalPaddingValue + "px" : '', - h: hideOffsetX && arrangeX ? hideOffsetX + fractionalContenHeight - viewportArrangeVerticalPaddingValue + "px" : '' - }; - - if (_viewportArrange) { - var sheet = _viewportArrange.sheet; - - if (sheet) { - var cssRules = sheet.cssRules; - - if (cssRules) { - if (!cssRules.length) { - sheet.insertRule("#" + attr(_viewportArrange, 'id') + " + ." + classNameViewportArrange + "::before {}", 0); - } - - var ruleStyle = cssRules[0].style; - ruleStyle.width = arrangeSize.w; - ruleStyle.height = arrangeSize.h; - } - } - } else { - style(_viewport, { - '--os-vaw': arrangeSize.w, - '--os-vah': arrangeSize.h - }); - } + } + return doViewportArrange; + }; + const hideNativeScrollbars = (viewportOverflowState, directionIsRTL, viewportArrange, viewportStyleObj) => { + const { _scrollbarsHideOffset, _scrollbarsHideOffsetArrange } = viewportOverflowState; + const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange; + const { x: hideOffsetX, y: hideOffsetY } = _scrollbarsHideOffset; + const { _viewportPaddingStyle: viewportPaddingStyle } = getState(); + const horizontalMarginKey = directionIsRTL ? "marginLeft" : "marginRight"; + const viewportHorizontalPaddingKey = directionIsRTL ? "paddingLeft" : "paddingRight"; + const horizontalMarginValue = viewportPaddingStyle[horizontalMarginKey]; + const verticalMarginValue = viewportPaddingStyle.marginBottom; + const horizontalPaddingValue = viewportPaddingStyle[viewportHorizontalPaddingKey]; + const verticalPaddingValue = viewportPaddingStyle.paddingBottom; + viewportStyleObj.width = `calc(100% + ${hideOffsetY + horizontalMarginValue * -1}px)`; + viewportStyleObj[horizontalMarginKey] = -hideOffsetY + horizontalMarginValue; + viewportStyleObj.marginBottom = -hideOffsetX + verticalMarginValue; + if (viewportArrange) { + viewportStyleObj[viewportHorizontalPaddingKey] = horizontalPaddingValue + (arrangeY ? hideOffsetY : 0); + viewportStyleObj.paddingBottom = verticalPaddingValue + (arrangeX ? hideOffsetX : 0); + } + }; + const undoViewportArrange = (showNativeOverlaidScrollbars, directionIsRTL, viewportOverflowState) => { + if (doViewportArrange) { + const finalViewportOverflowState = viewportOverflowState || getViewportOverflowState(showNativeOverlaidScrollbars); + const { _viewportPaddingStyle: viewportPaddingStyle } = getState(); + const { _scrollbarsHideOffsetArrange } = finalViewportOverflowState; + const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange; + const finalPaddingStyle = {}; + const assignProps = (props) => each(props.split(" "), (prop) => { + finalPaddingStyle[prop] = viewportPaddingStyle[prop]; + }); + if (arrangeX) { + assignProps("marginBottom paddingTop paddingBottom"); } - - return doViewportArrange; - }; - - var hideNativeScrollbars = function hideNativeScrollbars(viewportOverflowState, directionIsRTL, viewportArrange, viewportStyleObj) { - var _scrollbarsHideOffset = viewportOverflowState._scrollbarsHideOffset, - _scrollbarsHideOffsetArrange = viewportOverflowState._scrollbarsHideOffsetArrange; - var arrangeX = _scrollbarsHideOffsetArrange.x, - arrangeY = _scrollbarsHideOffsetArrange.y; - var hideOffsetX = _scrollbarsHideOffset.x, - hideOffsetY = _scrollbarsHideOffset.y; - - var _getState3 = getState(), - viewportPaddingStyle = _getState3._viewportPaddingStyle; - - var horizontalMarginKey = directionIsRTL ? 'marginLeft' : 'marginRight'; - var viewportHorizontalPaddingKey = directionIsRTL ? 'paddingLeft' : 'paddingRight'; - var horizontalMarginValue = viewportPaddingStyle[horizontalMarginKey]; - var verticalMarginValue = viewportPaddingStyle.marginBottom; - var horizontalPaddingValue = viewportPaddingStyle[viewportHorizontalPaddingKey]; - var verticalPaddingValue = viewportPaddingStyle.paddingBottom; - viewportStyleObj.width = "calc(100% + " + (hideOffsetY + horizontalMarginValue * -1) + "px)"; - viewportStyleObj[horizontalMarginKey] = -hideOffsetY + horizontalMarginValue; - viewportStyleObj.marginBottom = -hideOffsetX + verticalMarginValue; - - if (viewportArrange) { - viewportStyleObj[viewportHorizontalPaddingKey] = horizontalPaddingValue + (arrangeY ? hideOffsetY : 0); - viewportStyleObj.paddingBottom = verticalPaddingValue + (arrangeX ? hideOffsetX : 0); + if (arrangeY) { + assignProps("marginLeft marginRight paddingLeft paddingRight"); } - }; - - var undoViewportArrange = function undoViewportArrange(showNativeOverlaidScrollbars, directionIsRTL, viewportOverflowState) { - if (doViewportArrange) { - var finalViewportOverflowState = viewportOverflowState || getViewportOverflowState(showNativeOverlaidScrollbars); - - var _getState4 = getState(), - viewportPaddingStyle = _getState4._viewportPaddingStyle; - - var _scrollbarsHideOffsetArrange = finalViewportOverflowState._scrollbarsHideOffsetArrange; - var arrangeX = _scrollbarsHideOffsetArrange.x, - arrangeY = _scrollbarsHideOffsetArrange.y; - var finalPaddingStyle = {}; - - var assignProps = function assignProps(props) { - return each(props.split(' '), function (prop) { - finalPaddingStyle[prop] = viewportPaddingStyle[prop]; - }); - }; - - if (arrangeX) { - assignProps('marginBottom paddingTop paddingBottom'); - } - - if (arrangeY) { - assignProps('marginLeft marginRight paddingLeft paddingRight'); - } - - var prevStyle = style(_viewport, keys(finalPaddingStyle)); - removeClass(_viewport, classNameViewportArrange); - - if (!_flexboxGlue) { - finalPaddingStyle.height = ''; - } - - style(_viewport, finalPaddingStyle); - return [function () { + const prevStyle = style(_viewport, keys(finalPaddingStyle)); + removeClass(_viewport, classNameViewportArrange); + if (!_flexboxGlue) { + finalPaddingStyle.height = ""; + } + style(_viewport, finalPaddingStyle); + return [ + () => { hideNativeScrollbars(finalViewportOverflowState, directionIsRTL, doViewportArrange, prevStyle); style(_viewport, prevStyle); addClass(_viewport, classNameViewportArrange); - }, finalViewportOverflowState]; - } - - return [noop]; - }; - - return function (updateHints, checkOption, force) { - var _sizeChanged = updateHints._sizeChanged, - _hostMutation = updateHints._hostMutation, - _contentMutation = updateHints._contentMutation, - _paddingStyleChanged = updateHints._paddingStyleChanged, - _heightIntrinsicChanged = updateHints._heightIntrinsicChanged, - _directionChanged = updateHints._directionChanged; - - var _getState5 = getState(), - _heightIntrinsic = _getState5._heightIntrinsic, - _directionIsRTL = _getState5._directionIsRTL; - - var _checkOption = checkOption('nativeScrollbarsOverlaid.show'), - 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 = !_viewportIsTarget && !_flexboxGlue && (_sizeChanged || _contentMutation || _hostMutation || showNativeOverlaidScrollbarsChanged || _heightIntrinsicChanged); - var overflowXVisible = overflowIsVisible(overflow.x); - var overflowYVisible = overflowIsVisible(overflow.y); - var overflowVisible = overflowXVisible || overflowYVisible; - var sizeFractionCache = getCurrentSizeFraction(force); - var viewportScrollSizeCache = getCurrentViewportScrollSizeCache(force); - var overflowAmuntCache = getCurrentOverflowAmountCache(force); - var preMeasureViewportOverflowState; - - if (showNativeOverlaidScrollbarsChanged && _nativeScrollbarStyling) { - _viewportAddRemoveClass(classNameViewportScrollbarStyling, dataValueHostViewportScrollbarStyling, !showNativeOverlaidScrollbars); - } - - if (adjustFlexboxGlue) { - preMeasureViewportOverflowState = getViewportOverflowState(showNativeOverlaidScrollbars); - fixFlexboxGlue(preMeasureViewportOverflowState, _heightIntrinsic); - } - - if (_sizeChanged || _paddingStyleChanged || _contentMutation || _directionChanged || showNativeOverlaidScrollbarsChanged) { - if (overflowVisible) { - _viewportAddRemoveClass(classNameOverflowVisible, dataValueHostOverflowVisible, false); - } - - var _undoViewportArrange = undoViewportArrange(showNativeOverlaidScrollbars, _directionIsRTL, preMeasureViewportOverflowState), - redoViewportArrange = _undoViewportArrange[0], - undoViewportArrangeOverflowState = _undoViewportArrange[1]; - - var _sizeFractionCache = sizeFractionCache = updateSizeFraction(force), - _sizeFraction = _sizeFractionCache[0], - _sizeFractionChanged = _sizeFractionCache[1]; - - var _viewportScrollSizeCa = viewportScrollSizeCache = updateViewportScrollSizeCache(force), - _viewportScrollSize = _viewportScrollSizeCa[0], - _viewportScrollSizeChanged = _viewportScrollSizeCa[1]; - - var viewportclientSize = clientSize(_viewport); - var arrangedViewportScrollSize = _viewportScrollSize; - var arrangedViewportClientSize = viewportclientSize; - redoViewportArrange(); - - if ((_viewportScrollSizeChanged || _sizeFractionChanged || showNativeOverlaidScrollbarsChanged) && undoViewportArrangeOverflowState && !showNativeOverlaidScrollbars && arrangeViewport(undoViewportArrangeOverflowState, _viewportScrollSize, _sizeFraction, _directionIsRTL)) { - arrangedViewportClientSize = clientSize(_viewport); - arrangedViewportScrollSize = scrollSize(_viewport); - } - - overflowAmuntCache = updateOverflowAmountCache(getOverflowAmount({ - w: max(_viewportScrollSize.w, arrangedViewportScrollSize.w), - h: max(_viewportScrollSize.h, arrangedViewportScrollSize.h) - }, { - w: arrangedViewportClientSize.w + max(0, viewportclientSize.w - _viewportScrollSize.w), - h: arrangedViewportClientSize.h + max(0, viewportclientSize.h - _viewportScrollSize.h) - }, _sizeFraction), force); - } - - var _overflowAmuntCache = overflowAmuntCache, - overflowAmount = _overflowAmuntCache[0], - overflowAmountChanged = _overflowAmuntCache[1]; - var _viewportScrollSizeCa2 = viewportScrollSizeCache, - viewportScrollSize = _viewportScrollSizeCa2[0], - viewportScrollSizeChanged = _viewportScrollSizeCa2[1]; - var _sizeFractionCache2 = sizeFractionCache, - sizeFraction = _sizeFractionCache2[0], - sizeFractionChanged = _sizeFractionCache2[1]; - var hasOverflow = { - x: overflowAmount.w > 0, - y: overflowAmount.h > 0 - }; - var removeClipping = overflowXVisible && overflowYVisible && (hasOverflow.x || hasOverflow.y) || overflowXVisible && hasOverflow.x && !hasOverflow.y || overflowYVisible && hasOverflow.y && !hasOverflow.x; - - if (_paddingStyleChanged || _directionChanged || sizeFractionChanged || viewportScrollSizeChanged || overflowAmountChanged || overflowChanged || showNativeOverlaidScrollbarsChanged || adjustFlexboxGlue) { - var viewportStyle = { - marginRight: 0, - marginBottom: 0, - marginLeft: 0, - width: '', - overflowY: '', - overflowX: '' - }; - var viewportOverflowState = setViewportOverflowState(showNativeOverlaidScrollbars, hasOverflow, overflow, viewportStyle); - var viewportArranged = arrangeViewport(viewportOverflowState, viewportScrollSize, sizeFraction, _directionIsRTL); - - if (!_viewportIsTarget) { - hideNativeScrollbars(viewportOverflowState, _directionIsRTL, viewportArranged, viewportStyle); - } - - if (adjustFlexboxGlue) { - fixFlexboxGlue(viewportOverflowState, _heightIntrinsic); - } - - if (_viewportIsTarget) { - attr(_host, dataAttributeHostOverflowX, viewportStyle.overflowX); - attr(_host, dataAttributeHostOverflowY, viewportStyle.overflowY); - } else { - style(_viewport, viewportStyle); - } - } - - attrClass(_host, dataAttributeHost, dataValueHostOverflowVisible, removeClipping); - conditionalClass(_padding, classNameOverflowVisible, removeClipping); - !_viewportIsTarget && conditionalClass(_viewport, classNameOverflowVisible, overflowVisible); - - var _updateOverflowStyleC = updateOverflowStyleCache(getViewportOverflowState(showNativeOverlaidScrollbars)._overflowStyle), - overflowStyle = _updateOverflowStyleC[0], - overflowStyleChanged = _updateOverflowStyleC[1]; - - setState({ - _overflowStyle: overflowStyle, - _overflowAmount: { - x: overflowAmount.w, - y: overflowAmount.h }, - _hasOverflow: hasOverflow - }); - return { - _overflowStyleChanged: overflowStyleChanged, - _overflowAmountChanged: overflowAmountChanged - }; - }; - }; - - var prepareUpdateHints = function prepareUpdateHints(leading, adaptive, force) { - var result = {}; - var finalAdaptive = adaptive || {}; - var objKeys = keys(leading).concat(keys(finalAdaptive)); - each(objKeys, function (key) { - var leadingValue = leading[key]; - var adaptiveValue = finalAdaptive[key]; - result[key] = !!(force || leadingValue || adaptiveValue); - }); - return result; - }; - - var createStructureSetupUpdate = function createStructureSetupUpdate(structureSetupElements, state) { - var _viewport = structureSetupElements._viewport; - - var _getEnvironment = getEnvironment(), - _nativeScrollbarStyling = _getEnvironment._nativeScrollbarStyling, - _nativeScrollbarIsOverlaid = _getEnvironment._nativeScrollbarIsOverlaid, - _flexboxGlue = _getEnvironment._flexboxGlue; - - var doViewportArrange = !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y); - var updateSegments = [createTrinsicUpdate(structureSetupElements, state), createPaddingUpdate(structureSetupElements, state), createOverflowUpdate(structureSetupElements, state)]; - return function (checkOption, updateHints, force) { - var initialUpdateHints = prepareUpdateHints(assignDeep({ - _sizeChanged: false, - _paddingStyleChanged: false, - _directionChanged: false, - _heightIntrinsicChanged: false, - _overflowAmountChanged: false, - _overflowStyleChanged: false, - _hostMutation: false, - _contentMutation: false - }, updateHints), {}, force); - var adjustScrollOffset = doViewportArrange || !_flexboxGlue; - var scrollOffsetX = adjustScrollOffset && scrollLeft(_viewport); - var scrollOffsetY = adjustScrollOffset && scrollTop(_viewport); - var adaptivedUpdateHints = initialUpdateHints; - each(updateSegments, function (updateSegment) { - adaptivedUpdateHints = prepareUpdateHints(adaptivedUpdateHints, updateSegment(adaptivedUpdateHints, checkOption, !!force) || {}, force); - }); - - if (isNumber(scrollOffsetX)) { - scrollLeft(_viewport, scrollOffsetX); - } - - if (isNumber(scrollOffsetY)) { - scrollTop(_viewport, scrollOffsetY); - } - - return adaptivedUpdateHints; - }; - }; - - var animationStartEventName = 'animationstart'; - var scrollEventName = 'scroll'; - var scrollAmount = 3333333; - - var getElmDirectionIsRTL = function getElmDirectionIsRTL(elm) { - return style(elm, 'direction') === 'rtl'; - }; - - var domRectHasDimensions = function domRectHasDimensions(rect) { - return rect && (rect.height || rect.width); - }; - - var createSizeObserver = function createSizeObserver(target, onSizeChangedCallback, options) { - var _ref = options || {}, - _ref$_direction = _ref._direction, - observeDirectionChange = _ref$_direction === void 0 ? false : _ref$_direction, - _ref$_appear = _ref._appear, - observeAppearChange = _ref$_appear === void 0 ? false : _ref$_appear; - - var _getEnvironment = getEnvironment(), - rtlScrollBehavior = _getEnvironment._rtlScrollBehavior; - - var baseElements = createDOM("
"); - var sizeObserver = baseElements[0]; - var listenerElement = sizeObserver.firstChild; - var getIsDirectionRTL = getElmDirectionIsRTL.bind(0, sizeObserver); - - var _createCache = createCache({ - _initialValue: undefined, - _alwaysUpdateValues: true, - _equal: function _equal(currVal, newVal) { - return !(!currVal || !domRectHasDimensions(currVal) && domRectHasDimensions(newVal)); - } - }), - updateResizeObserverContentRectCache = _createCache[0]; - - var onSizeChangedCallbackProxy = function onSizeChangedCallbackProxy(sizeChangedContext) { - var isResizeObserverCall = isArray(sizeChangedContext) && sizeChangedContext.length > 0 && isObject(sizeChangedContext[0]); - var hasDirectionCache = !isResizeObserverCall && isBoolean(sizeChangedContext[0]); - var skip = false; - var appear = false; - var doDirectionScroll = true; - - if (isResizeObserverCall) { - var _updateResizeObserver = updateResizeObserverContentRectCache(sizeChangedContext.pop().contentRect), - currRContentRect = _updateResizeObserver[0], - prevContentRect = _updateResizeObserver[2]; - - var hasDimensions = domRectHasDimensions(currRContentRect); - var hadDimensions = domRectHasDimensions(prevContentRect); - skip = !prevContentRect || !hasDimensions; - appear = !hadDimensions && hasDimensions; - doDirectionScroll = !skip; - } else if (hasDirectionCache) { - doDirectionScroll = sizeChangedContext[1]; - } else { - appear = sizeChangedContext === true; - } - - if (observeDirectionChange && doDirectionScroll) { - var rtl = hasDirectionCache ? sizeChangedContext[0] : getElmDirectionIsRTL(sizeObserver); - scrollLeft(sizeObserver, rtl ? rtlScrollBehavior.n ? -scrollAmount : rtlScrollBehavior.i ? 0 : scrollAmount : scrollAmount); - scrollTop(sizeObserver, scrollAmount); - } - - if (!skip) { - onSizeChangedCallback({ - _sizeChanged: !hasDirectionCache, - _directionIsRTLCache: hasDirectionCache ? sizeChangedContext : undefined, - _appear: !!appear - }); - } - }; - - var offListeners = []; - var appearCallback = observeAppearChange ? onSizeChangedCallbackProxy : false; - var directionIsRTLCache; - - if (ResizeObserverConstructor) { - var resizeObserverInstance = new ResizeObserverConstructor(onSizeChangedCallbackProxy); - resizeObserverInstance.observe(listenerElement); - push(offListeners, function () { - resizeObserverInstance.disconnect(); - }); - } else { - var observerElementChildren = createDOM("
"); - appendChildren(listenerElement, observerElementChildren); - addClass(listenerElement, classNameSizeObserverListenerScroll); - var observerElementChildrenRoot = observerElementChildren[0]; - var shrinkElement = observerElementChildrenRoot.lastChild; - var expandElement = observerElementChildrenRoot.firstChild; - var expandElementChild = expandElement == null ? void 0 : expandElement.firstChild; - var cacheSize = offsetSize(observerElementChildrenRoot); - var currSize = cacheSize; - var isDirty = false; - var rAFId; - - var reset = function reset() { - scrollLeft(expandElement, scrollAmount); - scrollTop(expandElement, scrollAmount); - scrollLeft(shrinkElement, scrollAmount); - scrollTop(shrinkElement, scrollAmount); - }; - - var onResized = function onResized(appear) { - rAFId = 0; - - if (isDirty) { - cacheSize = currSize; - onSizeChangedCallbackProxy(appear === true); - } - }; - - var onScroll = function onScroll(scrollEvent) { - currSize = offsetSize(observerElementChildrenRoot); - isDirty = !scrollEvent || !equalWH(currSize, cacheSize); - - if (scrollEvent) { - stopAndPrevent(scrollEvent); - - if (isDirty && !rAFId) { - cAF(rAFId); - rAFId = rAF(onResized); - } - } else { - onResized(scrollEvent === false); - } - - reset(); - }; - - push(offListeners, [on(expandElement, scrollEventName, onScroll), on(shrinkElement, scrollEventName, onScroll)]); - style(expandElementChild, { - width: scrollAmount, - height: scrollAmount - }); - reset(); - appearCallback = observeAppearChange ? onScroll.bind(0, false) : reset; + finalViewportOverflowState + ]; } - - if (observeDirectionChange) { - directionIsRTLCache = createCache({ - _initialValue: !getIsDirectionRTL() - }, getIsDirectionRTL); - var _directionIsRTLCache = directionIsRTLCache, - updateDirectionIsRTLCache = _directionIsRTLCache[0]; - push(offListeners, on(sizeObserver, scrollEventName, function (event) { - var directionIsRTLCacheValues = updateDirectionIsRTLCache(); - var directionIsRTL = directionIsRTLCacheValues[0], - directionIsRTLChanged = directionIsRTLCacheValues[1]; - - if (directionIsRTLChanged) { - removeClass(listenerElement, 'ltr rtl'); - - if (directionIsRTL) { - addClass(listenerElement, 'rtl'); - } else { - addClass(listenerElement, 'ltr'); - } - - onSizeChangedCallbackProxy(directionIsRTLCacheValues); - } - - stopAndPrevent(event); - })); - } - - if (appearCallback) { - addClass(sizeObserver, classNameSizeObserverAppear); - push(offListeners, on(sizeObserver, animationStartEventName, appearCallback, { - _once: !!ResizeObserverConstructor - })); - } - - prependChildren(target, sizeObserver); - return function () { - runEach(offListeners); - removeElements(sizeObserver); - }; + return [noop]; }; - - var isHeightIntrinsic = function isHeightIntrinsic(ioEntryOrSize) { - return ioEntryOrSize.h === 0 || ioEntryOrSize.isIntersecting || ioEntryOrSize.intersectionRatio > 0; - }; - - var createTrinsicObserver = function createTrinsicObserver(target, onTrinsicChangedCallback) { - var trinsicObserver = createDiv(classNameTrinsicObserver); - var offListeners = []; - - var _createCache = createCache({ - _initialValue: false - }), - updateHeightIntrinsicCache = _createCache[0]; - - var triggerOnTrinsicChangedCallback = function triggerOnTrinsicChangedCallback(updateValue) { - if (updateValue) { - var heightIntrinsic = updateHeightIntrinsicCache(isHeightIntrinsic(updateValue)); - var heightIntrinsicChanged = heightIntrinsic[1]; - - if (heightIntrinsicChanged) { - onTrinsicChangedCallback(heightIntrinsic); - } + return (updateHints, checkOption, force) => { + const { + _sizeChanged, + _hostMutation, + _contentMutation, + _paddingStyleChanged, + _heightIntrinsicChanged, + _directionChanged + } = updateHints; + const { _heightIntrinsic, _directionIsRTL } = getState(); + const [showNativeOverlaidScrollbarsOption, showNativeOverlaidScrollbarsChanged] = checkOption("nativeScrollbarsOverlaid.show"); + const [overflow, overflowChanged] = checkOption("overflow"); + const showNativeOverlaidScrollbars = showNativeOverlaidScrollbarsOption && _nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.y; + const adjustFlexboxGlue = !_viewportIsTarget && !_flexboxGlue && (_sizeChanged || _contentMutation || _hostMutation || showNativeOverlaidScrollbarsChanged || _heightIntrinsicChanged); + const overflowXVisible = overflowIsVisible(overflow.x); + const overflowYVisible = overflowIsVisible(overflow.y); + const overflowVisible = overflowXVisible || overflowYVisible; + let sizeFractionCache = getCurrentSizeFraction(force); + let viewportScrollSizeCache = getCurrentViewportScrollSizeCache(force); + let overflowAmuntCache = getCurrentOverflowAmountCache(force); + let preMeasureViewportOverflowState; + if (showNativeOverlaidScrollbarsChanged && _nativeScrollbarStyling) { + _viewportAddRemoveClass(classNameViewportScrollbarStyling, dataValueHostViewportScrollbarStyling, !showNativeOverlaidScrollbars); + } + if (adjustFlexboxGlue) { + preMeasureViewportOverflowState = getViewportOverflowState(showNativeOverlaidScrollbars); + fixFlexboxGlue(preMeasureViewportOverflowState, _heightIntrinsic); + } + if (_sizeChanged || _paddingStyleChanged || _contentMutation || _directionChanged || showNativeOverlaidScrollbarsChanged) { + if (overflowVisible) { + _viewportAddRemoveClass(classNameOverflowVisible, dataValueHostOverflowVisible, false); } - }; - - if (IntersectionObserverConstructor) { - var intersectionObserverInstance = new IntersectionObserverConstructor(function (entries) { - if (entries && entries.length > 0) { - triggerOnTrinsicChangedCallback(entries.pop()); - } + const [redoViewportArrange, undoViewportArrangeOverflowState] = undoViewportArrange(showNativeOverlaidScrollbars, _directionIsRTL, preMeasureViewportOverflowState); + const [sizeFraction2, sizeFractionChanged2] = sizeFractionCache = updateSizeFraction(force); + const [viewportScrollSize2, viewportScrollSizeChanged2] = viewportScrollSizeCache = updateViewportScrollSizeCache(force); + const viewportclientSize = clientSize(_viewport); + let arrangedViewportScrollSize = viewportScrollSize2; + let arrangedViewportClientSize = viewportclientSize; + redoViewportArrange(); + if ((viewportScrollSizeChanged2 || sizeFractionChanged2 || showNativeOverlaidScrollbarsChanged) && undoViewportArrangeOverflowState && !showNativeOverlaidScrollbars && arrangeViewport(undoViewportArrangeOverflowState, viewportScrollSize2, sizeFraction2, _directionIsRTL)) { + arrangedViewportClientSize = clientSize(_viewport); + arrangedViewportScrollSize = scrollSize(_viewport); + } + overflowAmuntCache = updateOverflowAmountCache(getOverflowAmount({ + w: max(viewportScrollSize2.w, arrangedViewportScrollSize.w), + h: max(viewportScrollSize2.h, arrangedViewportScrollSize.h) }, { - root: target - }); - intersectionObserverInstance.observe(trinsicObserver); - push(offListeners, function () { - intersectionObserverInstance.disconnect(); - }); - } else { - var onSizeChanged = function onSizeChanged() { - var newSize = offsetSize(trinsicObserver); - triggerOnTrinsicChangedCallback(newSize); + w: arrangedViewportClientSize.w + max(0, viewportclientSize.w - viewportScrollSize2.w), + h: arrangedViewportClientSize.h + max(0, viewportclientSize.h - viewportScrollSize2.h) + }, sizeFraction2), force); + } + const [overflowAmount, overflowAmountChanged] = overflowAmuntCache; + const [viewportScrollSize, viewportScrollSizeChanged] = viewportScrollSizeCache; + const [sizeFraction, sizeFractionChanged] = sizeFractionCache; + const hasOverflow = { + x: overflowAmount.w > 0, + y: overflowAmount.h > 0 + }; + const removeClipping = overflowXVisible && overflowYVisible && (hasOverflow.x || hasOverflow.y) || overflowXVisible && hasOverflow.x && !hasOverflow.y || overflowYVisible && hasOverflow.y && !hasOverflow.x; + if (_paddingStyleChanged || _directionChanged || sizeFractionChanged || viewportScrollSizeChanged || overflowAmountChanged || overflowChanged || showNativeOverlaidScrollbarsChanged || adjustFlexboxGlue) { + const viewportStyle = { + marginRight: 0, + marginBottom: 0, + marginLeft: 0, + width: "", + overflowY: "", + overflowX: "" }; - - push(offListeners, createSizeObserver(trinsicObserver, onSizeChanged)); - onSizeChanged(); + const viewportOverflowState = setViewportOverflowState(showNativeOverlaidScrollbars, hasOverflow, overflow, viewportStyle); + const viewportArranged = arrangeViewport(viewportOverflowState, viewportScrollSize, sizeFraction, _directionIsRTL); + if (!_viewportIsTarget) { + hideNativeScrollbars(viewportOverflowState, _directionIsRTL, viewportArranged, viewportStyle); + } + if (adjustFlexboxGlue) { + fixFlexboxGlue(viewportOverflowState, _heightIntrinsic); + } + if (_viewportIsTarget) { + attr(_host, dataAttributeHostOverflowX, viewportStyle.overflowX); + attr(_host, dataAttributeHostOverflowY, viewportStyle.overflowY); + } else { + style(_viewport, viewportStyle); + } } - - prependChildren(target, trinsicObserver); - return function () { - runEach(offListeners); - removeElements(trinsicObserver); - }; - }; - - var createEventContentChange = function createEventContentChange(target, callback, eventContentChange) { - var map; - var destroyed = false; - - var destroy = function destroy() { - destroyed = true; - }; - - var updateElements = function updateElements(getElements) { - if (eventContentChange) { - var eventElmList = eventContentChange.reduce(function (arr, item) { - if (item) { - var selector = item[0]; - var eventNames = item[1]; - var elements = eventNames && selector && (getElements ? getElements(selector) : find(selector, target)); - - if (elements && elements.length && eventNames && isString(eventNames)) { - push(arr, [elements, eventNames.trim()], true); - } - } - - return arr; - }, []); - each(eventElmList, function (item) { - return each(item[0], function (elm) { - var eventNames = item[1]; - var entry = map.get(elm); - - if (entry) { - var entryEventNames = entry[0]; - var entryOff = entry[1]; - - if (entryEventNames === eventNames) { - entryOff(); - } - } - - var off = on(elm, eventNames, function (event) { - if (destroyed) { - off(); - map.delete(elm); - } else { - callback(event); - } - }); - map.set(elm, [eventNames, off]); - }); - }); - } - }; - - if (eventContentChange) { - map = new WeakMap(); - updateElements(); - } - - return [destroy, updateElements]; - }; - - var createDOMObserver = function createDOMObserver(target, isContentObserver, callback, options) { - var isConnected = false; - - var _ref = options || {}, - _attributes = _ref._attributes, - _styleChangingAttributes = _ref._styleChangingAttributes, - _eventContentChange = _ref._eventContentChange, - _nestedTargetSelector = _ref._nestedTargetSelector, - _ignoreTargetChange = _ref._ignoreTargetChange, - _ignoreContentChange = _ref._ignoreContentChange; - - var _createEventContentCh = createEventContentChange(target, debounce(function () { - if (isConnected) { - callback(true); - } - }, { - _timeout: 33, - _maxDelay: 99 - }), _eventContentChange), - destroyEventContentChange = _createEventContentCh[0], - updateEventContentChangeElements = _createEventContentCh[1]; - - var finalAttributes = _attributes || []; - var finalStyleChangingAttributes = _styleChangingAttributes || []; - var observedAttributes = finalAttributes.concat(finalStyleChangingAttributes); - - var observerCallback = function observerCallback(mutations) { - var ignoreTargetChange = _ignoreTargetChange || noop; - var ignoreContentChange = _ignoreContentChange || noop; - var targetChangedAttrs = []; - var totalAddedNodes = []; - var targetStyleChanged = false; - var contentChanged = false; - var childListChanged = false; - each(mutations, function (mutation) { - var attributeName = mutation.attributeName, - mutationTarget = mutation.target, - type = mutation.type, - oldValue = mutation.oldValue, - addedNodes = mutation.addedNodes; - var isAttributesType = type === 'attributes'; - var isChildListType = type === 'childList'; - var targetIsMutationTarget = target === mutationTarget; - var attributeValue = isAttributesType && isString(attributeName) ? attr(mutationTarget, attributeName) : 0; - var attributeChanged = attributeValue !== 0 && oldValue !== attributeValue; - var styleChangingAttrChanged = indexOf(finalStyleChangingAttributes, attributeName) > -1 && attributeChanged; - - if (isContentObserver && !targetIsMutationTarget) { - var notOnlyAttrChanged = !isAttributesType; - var contentAttrChanged = isAttributesType && styleChangingAttrChanged; - var isNestedTarget = contentAttrChanged && _nestedTargetSelector && is(mutationTarget, _nestedTargetSelector); - var baseAssertion = isNestedTarget ? !ignoreTargetChange(mutationTarget, attributeName, oldValue, attributeValue) : notOnlyAttrChanged || contentAttrChanged; - var contentFinalChanged = baseAssertion && !ignoreContentChange(mutation, !!isNestedTarget, target, options); - push(totalAddedNodes, addedNodes); - contentChanged = contentChanged || contentFinalChanged; - childListChanged = childListChanged || isChildListType; - } - - if (!isContentObserver && targetIsMutationTarget && attributeChanged && !ignoreTargetChange(mutationTarget, attributeName, oldValue, attributeValue)) { - push(targetChangedAttrs, attributeName); - targetStyleChanged = targetStyleChanged || styleChangingAttrChanged; - } - }); - - if (childListChanged && !isEmptyArray(totalAddedNodes)) { - updateEventContentChangeElements(function (selector) { - return totalAddedNodes.reduce(function (arr, node) { - push(arr, find(selector, node)); - return is(node, selector) ? push(arr, node) : arr; - }, []); - }); - } - - if (isContentObserver) { - contentChanged && callback(false); - } else if (!isEmptyArray(targetChangedAttrs) || targetStyleChanged) { - callback(targetChangedAttrs, targetStyleChanged); - } - }; - - var mutationObserver = new MutationObserverConstructor(observerCallback); - mutationObserver.observe(target, { - attributes: true, - attributeOldValue: true, - attributeFilter: observedAttributes, - subtree: isContentObserver, - childList: isContentObserver, - characterData: isContentObserver + attrClass(_host, dataAttributeHost, dataValueHostOverflowVisible, removeClipping); + conditionalClass(_padding, classNameOverflowVisible, removeClipping); + !_viewportIsTarget && conditionalClass(_viewport, classNameOverflowVisible, overflowVisible); + const [overflowStyle, overflowStyleChanged] = updateOverflowStyleCache(getViewportOverflowState(showNativeOverlaidScrollbars)._overflowStyle); + setState({ + _overflowStyle: overflowStyle, + _overflowAmount: { + x: overflowAmount.w, + y: overflowAmount.h + }, + _hasOverflow: hasOverflow }); - isConnected = true; - return [function () { + return { + _overflowStyleChanged: overflowStyleChanged, + _overflowAmountChanged: overflowAmountChanged + }; + }; +}; + +const prepareUpdateHints = (leading, adaptive, force) => { + const result = {}; + const finalAdaptive = adaptive || {}; + const objKeys = keys(leading).concat(keys(finalAdaptive)); + each(objKeys, (key) => { + const leadingValue = leading[key]; + const adaptiveValue = finalAdaptive[key]; + result[key] = !!(force || leadingValue || adaptiveValue); + }); + return result; +}; +const createStructureSetupUpdate = (structureSetupElements, state) => { + const { _viewport } = structureSetupElements; + const { _nativeScrollbarStyling, _nativeScrollbarIsOverlaid, _flexboxGlue } = getEnvironment(); + const doViewportArrange = !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y); + const updateSegments = [ + createTrinsicUpdate(structureSetupElements, state), + createPaddingUpdate(structureSetupElements, state), + createOverflowUpdate(structureSetupElements, state) + ]; + return (checkOption, updateHints, force) => { + const initialUpdateHints = prepareUpdateHints(assignDeep({ + _sizeChanged: false, + _paddingStyleChanged: false, + _directionChanged: false, + _heightIntrinsicChanged: false, + _overflowAmountChanged: false, + _overflowStyleChanged: false, + _hostMutation: false, + _contentMutation: false + }, updateHints), {}, force); + const adjustScrollOffset = doViewportArrange || !_flexboxGlue; + const scrollOffsetX = adjustScrollOffset && scrollLeft(_viewport); + const scrollOffsetY = adjustScrollOffset && scrollTop(_viewport); + let adaptivedUpdateHints = initialUpdateHints; + each(updateSegments, (updateSegment) => { + adaptivedUpdateHints = prepareUpdateHints(adaptivedUpdateHints, updateSegment(adaptivedUpdateHints, checkOption, !!force) || {}, force); + }); + if (isNumber(scrollOffsetX)) { + scrollLeft(_viewport, scrollOffsetX); + } + if (isNumber(scrollOffsetY)) { + scrollTop(_viewport, scrollOffsetY); + } + return adaptivedUpdateHints; + }; +}; + +const animationStartEventName = "animationstart"; +const scrollEventName = "scroll"; +const scrollAmount = 3333333; +const getElmDirectionIsRTL = (elm) => style(elm, "direction") === "rtl"; +const domRectHasDimensions = (rect) => rect && (rect.height || rect.width); +const createSizeObserver = (target, onSizeChangedCallback, options) => { + const { _direction: observeDirectionChange = false, _appear: observeAppearChange = false } = options || {}; + const { _rtlScrollBehavior: rtlScrollBehavior } = getEnvironment(); + const baseElements = createDOM(`
`); + const sizeObserver = baseElements[0]; + const listenerElement = sizeObserver.firstChild; + const getIsDirectionRTL = getElmDirectionIsRTL.bind(0, sizeObserver); + const [updateResizeObserverContentRectCache] = createCache({ + _initialValue: void 0, + _alwaysUpdateValues: true, + _equal: (currVal, newVal) => !(!currVal || !domRectHasDimensions(currVal) && domRectHasDimensions(newVal)) + }); + const onSizeChangedCallbackProxy = (sizeChangedContext) => { + const isResizeObserverCall = isArray(sizeChangedContext) && sizeChangedContext.length > 0 && isObject(sizeChangedContext[0]); + const hasDirectionCache = !isResizeObserverCall && isBoolean(sizeChangedContext[0]); + let skip = false; + let appear = false; + let doDirectionScroll = true; + if (isResizeObserverCall) { + const [currRContentRect, , prevContentRect] = updateResizeObserverContentRectCache(sizeChangedContext.pop().contentRect); + const hasDimensions = domRectHasDimensions(currRContentRect); + const hadDimensions = domRectHasDimensions(prevContentRect); + skip = !prevContentRect || !hasDimensions; + appear = !hadDimensions && hasDimensions; + doDirectionScroll = !skip; + } else if (hasDirectionCache) { + [, doDirectionScroll] = sizeChangedContext; + } else { + appear = sizeChangedContext === true; + } + if (observeDirectionChange && doDirectionScroll) { + const rtl = hasDirectionCache ? sizeChangedContext[0] : getElmDirectionIsRTL(sizeObserver); + scrollLeft(sizeObserver, rtl ? rtlScrollBehavior.n ? -scrollAmount : rtlScrollBehavior.i ? 0 : scrollAmount : scrollAmount); + scrollTop(sizeObserver, scrollAmount); + } + if (!skip) { + onSizeChangedCallback({ + _sizeChanged: !hasDirectionCache, + _directionIsRTLCache: hasDirectionCache ? sizeChangedContext : void 0, + _appear: !!appear + }); + } + }; + const offListeners = []; + let appearCallback = observeAppearChange ? onSizeChangedCallbackProxy : false; + let directionIsRTLCache; + if (ResizeObserverConstructor) { + const resizeObserverInstance = new ResizeObserverConstructor(onSizeChangedCallbackProxy); + resizeObserverInstance.observe(listenerElement); + push(offListeners, () => { + resizeObserverInstance.disconnect(); + }); + } else { + const observerElementChildren = createDOM(`
`); + appendChildren(listenerElement, observerElementChildren); + addClass(listenerElement, classNameSizeObserverListenerScroll); + const observerElementChildrenRoot = observerElementChildren[0]; + const shrinkElement = observerElementChildrenRoot.lastChild; + const expandElement = observerElementChildrenRoot.firstChild; + const expandElementChild = expandElement == null ? void 0 : expandElement.firstChild; + let cacheSize = offsetSize(observerElementChildrenRoot); + let currSize = cacheSize; + let isDirty = false; + let rAFId; + const reset = () => { + scrollLeft(expandElement, scrollAmount); + scrollTop(expandElement, scrollAmount); + scrollLeft(shrinkElement, scrollAmount); + scrollTop(shrinkElement, scrollAmount); + }; + const onResized = (appear) => { + rAFId = 0; + if (isDirty) { + cacheSize = currSize; + onSizeChangedCallbackProxy(appear === true); + } + }; + const onScroll = (scrollEvent) => { + currSize = offsetSize(observerElementChildrenRoot); + isDirty = !scrollEvent || !equalWH(currSize, cacheSize); + if (scrollEvent) { + stopAndPrevent(scrollEvent); + if (isDirty && !rAFId) { + cAF(rAFId); + rAFId = rAF(onResized); + } + } else { + onResized(scrollEvent === false); + } + reset(); + }; + push(offListeners, [ + on(expandElement, scrollEventName, onScroll), + on(shrinkElement, scrollEventName, onScroll) + ]); + style(expandElementChild, { + width: scrollAmount, + height: scrollAmount + }); + reset(); + appearCallback = observeAppearChange ? onScroll.bind(0, false) : reset; + } + if (observeDirectionChange) { + directionIsRTLCache = createCache({ + _initialValue: !getIsDirectionRTL() + }, getIsDirectionRTL); + const [updateDirectionIsRTLCache] = directionIsRTLCache; + push(offListeners, on(sizeObserver, scrollEventName, (event) => { + const directionIsRTLCacheValues = updateDirectionIsRTLCache(); + const [directionIsRTL, directionIsRTLChanged] = directionIsRTLCacheValues; + if (directionIsRTLChanged) { + removeClass(listenerElement, "ltr rtl"); + if (directionIsRTL) { + addClass(listenerElement, "rtl"); + } else { + addClass(listenerElement, "ltr"); + } + onSizeChangedCallbackProxy(directionIsRTLCacheValues); + } + stopAndPrevent(event); + })); + } + if (appearCallback) { + addClass(sizeObserver, classNameSizeObserverAppear); + push(offListeners, on(sizeObserver, animationStartEventName, appearCallback, { + _once: !!ResizeObserverConstructor + })); + } + prependChildren(target, sizeObserver); + return () => { + runEach(offListeners); + removeElements(sizeObserver); + }; +}; + +const isHeightIntrinsic = (ioEntryOrSize) => ioEntryOrSize.h === 0 || ioEntryOrSize.isIntersecting || ioEntryOrSize.intersectionRatio > 0; +const createTrinsicObserver = (target, onTrinsicChangedCallback) => { + const trinsicObserver = createDiv(classNameTrinsicObserver); + const offListeners = []; + const [updateHeightIntrinsicCache] = createCache({ + _initialValue: false + }); + const triggerOnTrinsicChangedCallback = (updateValue) => { + if (updateValue) { + const heightIntrinsic = updateHeightIntrinsicCache(isHeightIntrinsic(updateValue)); + const [, heightIntrinsicChanged] = heightIntrinsic; + if (heightIntrinsicChanged) { + onTrinsicChangedCallback(heightIntrinsic); + } + } + }; + if (IntersectionObserverConstructor) { + const intersectionObserverInstance = new IntersectionObserverConstructor((entries) => { + if (entries && entries.length > 0) { + triggerOnTrinsicChangedCallback(entries.pop()); + } + }, { root: target }); + intersectionObserverInstance.observe(trinsicObserver); + push(offListeners, () => { + intersectionObserverInstance.disconnect(); + }); + } else { + const onSizeChanged = () => { + const newSize = offsetSize(trinsicObserver); + triggerOnTrinsicChangedCallback(newSize); + }; + push(offListeners, createSizeObserver(trinsicObserver, onSizeChanged)); + onSizeChanged(); + } + prependChildren(target, trinsicObserver); + return () => { + runEach(offListeners); + removeElements(trinsicObserver); + }; +}; + +const createEventContentChange = (target, callback, eventContentChange) => { + let map; + let destroyed = false; + const destroy = () => { + destroyed = true; + }; + const updateElements = (getElements) => { + if (eventContentChange) { + const eventElmList = eventContentChange.reduce((arr, item) => { + if (item) { + const selector = item[0]; + const eventNames = item[1]; + const elements = eventNames && selector && (getElements ? getElements(selector) : find(selector, target)); + if (elements && elements.length && eventNames && isString(eventNames)) { + push(arr, [elements, eventNames.trim()], true); + } + } + return arr; + }, []); + each(eventElmList, (item) => each(item[0], (elm) => { + const eventNames = item[1]; + const entry = map.get(elm); + if (entry) { + const entryEventNames = entry[0]; + const entryOff = entry[1]; + if (entryEventNames === eventNames) { + entryOff(); + } + } + const off = on(elm, eventNames, (event) => { + if (destroyed) { + off(); + map.delete(elm); + } else { + callback(event); + } + }); + map.set(elm, [eventNames, off]); + })); + } + }; + if (eventContentChange) { + map = /* @__PURE__ */ new WeakMap(); + updateElements(); + } + return [destroy, updateElements]; +}; +const createDOMObserver = (target, isContentObserver, callback, options) => { + let isConnected = false; + const { + _attributes, + _styleChangingAttributes, + _eventContentChange, + _nestedTargetSelector, + _ignoreTargetChange, + _ignoreContentChange + } = options || {}; + const [destroyEventContentChange, updateEventContentChangeElements] = createEventContentChange(target, debounce(() => { + if (isConnected) { + callback(true); + } + }, { _timeout: 33, _maxDelay: 99 }), _eventContentChange); + const finalAttributes = _attributes || []; + const finalStyleChangingAttributes = _styleChangingAttributes || []; + const observedAttributes = finalAttributes.concat(finalStyleChangingAttributes); + const observerCallback = (mutations) => { + const ignoreTargetChange = _ignoreTargetChange || noop; + const ignoreContentChange = _ignoreContentChange || noop; + const targetChangedAttrs = []; + const totalAddedNodes = []; + let targetStyleChanged = false; + let contentChanged = false; + let childListChanged = false; + each(mutations, (mutation) => { + const { attributeName, target: mutationTarget, type, oldValue, addedNodes } = mutation; + const isAttributesType = type === "attributes"; + const isChildListType = type === "childList"; + const targetIsMutationTarget = target === mutationTarget; + const attributeValue = isAttributesType && isString(attributeName) ? attr(mutationTarget, attributeName) : 0; + const attributeChanged = attributeValue !== 0 && oldValue !== attributeValue; + const styleChangingAttrChanged = indexOf(finalStyleChangingAttributes, attributeName) > -1 && attributeChanged; + if (isContentObserver && !targetIsMutationTarget) { + const notOnlyAttrChanged = !isAttributesType; + const contentAttrChanged = isAttributesType && styleChangingAttrChanged; + const isNestedTarget = contentAttrChanged && _nestedTargetSelector && is(mutationTarget, _nestedTargetSelector); + const baseAssertion = isNestedTarget ? !ignoreTargetChange(mutationTarget, attributeName, oldValue, attributeValue) : notOnlyAttrChanged || contentAttrChanged; + const contentFinalChanged = baseAssertion && !ignoreContentChange(mutation, !!isNestedTarget, target, options); + push(totalAddedNodes, addedNodes); + contentChanged = contentChanged || contentFinalChanged; + childListChanged = childListChanged || isChildListType; + } + if (!isContentObserver && targetIsMutationTarget && attributeChanged && !ignoreTargetChange(mutationTarget, attributeName, oldValue, attributeValue)) { + push(targetChangedAttrs, attributeName); + targetStyleChanged = targetStyleChanged || styleChangingAttrChanged; + } + }); + if (childListChanged && !isEmptyArray(totalAddedNodes)) { + updateEventContentChangeElements((selector) => totalAddedNodes.reduce((arr, node) => { + push(arr, find(selector, node)); + return is(node, selector) ? push(arr, node) : arr; + }, [])); + } + if (isContentObserver) { + contentChanged && callback(false); + } else if (!isEmptyArray(targetChangedAttrs) || targetStyleChanged) { + callback(targetChangedAttrs, targetStyleChanged); + } + }; + const mutationObserver = new MutationObserverConstructor(observerCallback); + mutationObserver.observe(target, { + attributes: true, + attributeOldValue: true, + attributeFilter: observedAttributes, + subtree: isContentObserver, + childList: isContentObserver, + characterData: isContentObserver + }); + isConnected = true; + return [ + () => { if (isConnected) { destroyEventContentChange(); mutationObserver.disconnect(); isConnected = false; } - }, function () { + }, + () => { if (isConnected) { observerCallback(mutationObserver.takeRecords()); } - }]; - }; + } + ]; +}; - var hostSelector = "[" + dataAttributeHost + "]"; - var viewportSelector = "." + classNameViewport; - var viewportAttrsFromTarget = ['tabindex']; - var baseStyleChangingAttrsTextarea = ['wrap', 'cols', 'rows']; - var baseStyleChangingAttrs = ['id', 'class', 'style', 'open']; - var createStructureSetupObservers = function createStructureSetupObservers(structureSetupElements, state, structureSetupUpdate) { - var debounceTimeout; - var debounceMaxDelay; - var contentMutationObserver; - var setState = state[1]; - var _host = structureSetupElements._host, - _viewport = structureSetupElements._viewport, - _content = structureSetupElements._content, - _isTextarea = structureSetupElements._isTextarea, - _viewportIsTarget = structureSetupElements._viewportIsTarget, - _viewportHasClass = structureSetupElements._viewportHasClass, - _viewportAddRemoveClass = structureSetupElements._viewportAddRemoveClass; - - var _getEnvironment = getEnvironment(), - _nativeScrollbarStyling = _getEnvironment._nativeScrollbarStyling, - _flexboxGlue = _getEnvironment._flexboxGlue; - - var _createCache = createCache({ - _equal: equalWH, - _initialValue: { - w: 0, - h: 0 - } - }, function () { - var has = _viewportHasClass(classNameOverflowVisible, dataValueHostOverflowVisible); - - has && _viewportAddRemoveClass(classNameOverflowVisible, dataValueHostOverflowVisible); - var contentScroll = scrollSize(_content); - var viewportScroll = scrollSize(_viewport); - var fractional = fractionalSize(_viewport); - has && _viewportAddRemoveClass(classNameOverflowVisible, dataValueHostOverflowVisible, true); - return { - w: viewportScroll.w + contentScroll.w + fractional.w, - h: viewportScroll.h + contentScroll.h + fractional.h - }; - }), - updateContentSizeCache = _createCache[0]; - - var contentMutationObserverAttr = _isTextarea ? baseStyleChangingAttrsTextarea : baseStyleChangingAttrs.concat(baseStyleChangingAttrsTextarea); - var structureSetupUpdateWithDebouncedAdaptiveUpdateHints = debounce(structureSetupUpdate, { - _timeout: function _timeout() { - return debounceTimeout; - }, - _maxDelay: function _maxDelay() { - return debounceMaxDelay; - }, - _mergeParams: function _mergeParams(prev, curr) { - var prevObj = prev[0]; - var currObj = curr[0]; - return [keys(prevObj).concat(keys(currObj)).reduce(function (obj, key) { +const hostSelector = `[${dataAttributeHost}]`; +const viewportSelector = `.${classNameViewport}`; +const viewportAttrsFromTarget = ["tabindex"]; +const baseStyleChangingAttrsTextarea = ["wrap", "cols", "rows"]; +const baseStyleChangingAttrs = ["id", "class", "style", "open"]; +const createStructureSetupObservers = (structureSetupElements, state, structureSetupUpdate) => { + let debounceTimeout; + let debounceMaxDelay; + let contentMutationObserver; + const [, setState] = state; + const { + _host, + _viewport, + _content, + _isTextarea, + _viewportIsTarget, + _viewportHasClass, + _viewportAddRemoveClass + } = structureSetupElements; + const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment(); + const [updateContentSizeCache] = createCache({ + _equal: equalWH, + _initialValue: { w: 0, h: 0 } + }, () => { + const has = _viewportHasClass(classNameOverflowVisible, dataValueHostOverflowVisible); + has && _viewportAddRemoveClass(classNameOverflowVisible, dataValueHostOverflowVisible); + const contentScroll = scrollSize(_content); + const viewportScroll = scrollSize(_viewport); + const fractional = fractionalSize(_viewport); + has && _viewportAddRemoveClass(classNameOverflowVisible, dataValueHostOverflowVisible, true); + return { + w: viewportScroll.w + contentScroll.w + fractional.w, + h: viewportScroll.h + contentScroll.h + fractional.h + }; + }); + const contentMutationObserverAttr = _isTextarea ? baseStyleChangingAttrsTextarea : baseStyleChangingAttrs.concat(baseStyleChangingAttrsTextarea); + const structureSetupUpdateWithDebouncedAdaptiveUpdateHints = debounce(structureSetupUpdate, { + _timeout: () => debounceTimeout, + _maxDelay: () => debounceMaxDelay, + _mergeParams(prev, curr) { + const [prevObj] = prev; + const [currObj] = curr; + return [ + keys(prevObj).concat(keys(currObj)).reduce((obj, key) => { obj[key] = prevObj[key] || currObj[key]; return obj; - }, {})]; - } - }); - - var updateViewportAttrsFromHost = function updateViewportAttrsFromHost(attributes) { - each(attributes || viewportAttrsFromTarget, function (attribute) { - if (indexOf(viewportAttrsFromTarget, attribute) > -1) { - var hostAttr = attr(_host, attribute); - - if (isString(hostAttr)) { - attr(_viewport, attribute, hostAttr); - } else { - removeAttr(_viewport, attribute); - } + }, {}) + ]; + } + }); + const updateViewportAttrsFromHost = (attributes) => { + each(attributes || viewportAttrsFromTarget, (attribute) => { + if (indexOf(viewportAttrsFromTarget, attribute) > -1) { + const hostAttr = attr(_host, attribute); + if (isString(hostAttr)) { + attr(_viewport, attribute, hostAttr); + } else { + removeAttr(_viewport, attribute); } - }); - }; - - var onTrinsicChanged = function onTrinsicChanged(heightIntrinsicCache) { - var heightIntrinsic = heightIntrinsicCache[0], - heightIntrinsicChanged = heightIntrinsicCache[1]; - setState({ - _heightIntrinsic: heightIntrinsic - }); - structureSetupUpdate({ - _heightIntrinsicChanged: heightIntrinsicChanged - }); - }; - - var onSizeChanged = function onSizeChanged(_ref) { - var _sizeChanged = _ref._sizeChanged, - _directionIsRTLCache = _ref._directionIsRTLCache, - _appear = _ref._appear; - var updateFn = !_sizeChanged || _appear ? structureSetupUpdate : structureSetupUpdateWithDebouncedAdaptiveUpdateHints; - var directionChanged = false; - - if (_directionIsRTLCache) { - var directionIsRTL = _directionIsRTLCache[0], - directionIsRTLChanged = _directionIsRTLCache[1]; - directionChanged = directionIsRTLChanged; - setState({ - _directionIsRTL: directionIsRTL - }); } - - updateFn({ - _sizeChanged: _sizeChanged, - _directionChanged: directionChanged - }); - }; - - var onContentMutation = function onContentMutation(contentChangedTroughEvent) { - var _updateContentSizeCac = updateContentSizeCache(), - contentSizeChanged = _updateContentSizeCac[1]; - - var updateFn = contentChangedTroughEvent ? structureSetupUpdate : structureSetupUpdateWithDebouncedAdaptiveUpdateHints; - - if (contentSizeChanged) { - updateFn({ - _contentMutation: true - }); - } - }; - - var onHostMutation = function onHostMutation(targetChangedAttrs, targetStyleChanged) { - if (targetStyleChanged) { - structureSetupUpdateWithDebouncedAdaptiveUpdateHints({ - _hostMutation: true - }); - } else if (!_viewportIsTarget) { - updateViewportAttrsFromHost(targetChangedAttrs); - } - }; - - var destroyTrinsicObserver = (_content || !_flexboxGlue) && createTrinsicObserver(_host, onTrinsicChanged); - var destroySizeObserver = !_viewportIsTarget && createSizeObserver(_host, onSizeChanged, { - _appear: true, - _direction: !_nativeScrollbarStyling }); - - var _createDOMObserver = createDOMObserver(_host, false, onHostMutation, { - _styleChangingAttributes: baseStyleChangingAttrs, - _attributes: baseStyleChangingAttrs.concat(viewportAttrsFromTarget) - }), - destroyHostMutationObserver = _createDOMObserver[0]; - - var viewportIsTargetResizeObserver = _viewportIsTarget && new ResizeObserverConstructor(onSizeChanged.bind(0, { - _sizeChanged: true - })); - viewportIsTargetResizeObserver && viewportIsTargetResizeObserver.observe(_host); - updateViewportAttrsFromHost(); - return [function (checkOption) { - var _checkOption = checkOption('updating.ignoreMutation'), - ignoreMutation = _checkOption[0]; - - var _checkOption2 = checkOption('updating.attributes'), - attributes = _checkOption2[0], - attributesChanged = _checkOption2[1]; - - var _checkOption3 = checkOption('updating.elementEvents'), - elementEvents = _checkOption3[0], - elementEventsChanged = _checkOption3[1]; - - var _checkOption4 = checkOption('updating.debounce'), - debounceValue = _checkOption4[0], - debounceChanged = _checkOption4[1]; - - var updateContentMutationObserver = elementEventsChanged || attributesChanged; - - var ignoreMutationFromOptions = function ignoreMutationFromOptions(mutation) { - return isFunction(ignoreMutation) && ignoreMutation(mutation); - }; - + }; + const onTrinsicChanged = (heightIntrinsicCache) => { + const [heightIntrinsic, heightIntrinsicChanged] = heightIntrinsicCache; + setState({ _heightIntrinsic: heightIntrinsic }); + structureSetupUpdate({ _heightIntrinsicChanged: heightIntrinsicChanged }); + }; + const onSizeChanged = ({ + _sizeChanged, + _directionIsRTLCache, + _appear + }) => { + const updateFn = !_sizeChanged || _appear ? structureSetupUpdate : structureSetupUpdateWithDebouncedAdaptiveUpdateHints; + let directionChanged = false; + if (_directionIsRTLCache) { + const [directionIsRTL, directionIsRTLChanged] = _directionIsRTLCache; + directionChanged = directionIsRTLChanged; + setState({ _directionIsRTL: directionIsRTL }); + } + updateFn({ _sizeChanged, _directionChanged: directionChanged }); + }; + const onContentMutation = (contentChangedTroughEvent) => { + const [, contentSizeChanged] = updateContentSizeCache(); + const updateFn = contentChangedTroughEvent ? structureSetupUpdate : structureSetupUpdateWithDebouncedAdaptiveUpdateHints; + if (contentSizeChanged) { + updateFn({ + _contentMutation: true + }); + } + }; + const onHostMutation = (targetChangedAttrs, targetStyleChanged) => { + if (targetStyleChanged) { + structureSetupUpdateWithDebouncedAdaptiveUpdateHints({ + _hostMutation: true + }); + } else if (!_viewportIsTarget) { + updateViewportAttrsFromHost(targetChangedAttrs); + } + }; + const destroyTrinsicObserver = (_content || !_flexboxGlue) && createTrinsicObserver(_host, onTrinsicChanged); + const destroySizeObserver = !_viewportIsTarget && createSizeObserver(_host, onSizeChanged, { + _appear: true, + _direction: !_nativeScrollbarStyling + }); + const [destroyHostMutationObserver] = createDOMObserver(_host, false, onHostMutation, { + _styleChangingAttributes: baseStyleChangingAttrs, + _attributes: baseStyleChangingAttrs.concat(viewportAttrsFromTarget) + }); + const viewportIsTargetResizeObserver = _viewportIsTarget && new ResizeObserverConstructor(onSizeChanged.bind(0, { _sizeChanged: true })); + viewportIsTargetResizeObserver && viewportIsTargetResizeObserver.observe(_host); + updateViewportAttrsFromHost(); + return [ + (checkOption) => { + const [ignoreMutation] = checkOption("updating.ignoreMutation"); + const [attributes, attributesChanged] = checkOption("updating.attributes"); + const [elementEvents, elementEventsChanged] = checkOption("updating.elementEvents"); + const [debounceValue, debounceChanged] = checkOption("updating.debounce"); + const updateContentMutationObserver = elementEventsChanged || attributesChanged; + const ignoreMutationFromOptions = (mutation) => isFunction(ignoreMutation) && ignoreMutation(mutation); if (updateContentMutationObserver) { if (contentMutationObserver) { contentMutationObserver[1](); contentMutationObserver[0](); } - contentMutationObserver = createDOMObserver(_content || _viewport, true, onContentMutation, { _styleChangingAttributes: contentMutationObserverAttr.concat(attributes || []), _attributes: contentMutationObserverAttr.concat(attributes || []), _eventContentChange: elementEvents, _nestedTargetSelector: hostSelector, - _ignoreContentChange: function _ignoreContentChange(mutation, isNestedTarget) { - var target = mutation.target, - attributeName = mutation.attributeName; - var ignore = !isNestedTarget && attributeName ? liesBetween(target, hostSelector, viewportSelector) : false; + _ignoreContentChange: (mutation, isNestedTarget) => { + const { target, attributeName } = mutation; + const ignore = !isNestedTarget && attributeName ? liesBetween(target, hostSelector, viewportSelector) : false; return ignore || !!ignoreMutationFromOptions(mutation); } }); } - if (debounceChanged) { structureSetupUpdateWithDebouncedAdaptiveUpdateHints._flush(); - if (isArray(debounceValue)) { - var timeout = debounceValue[0]; - var maxWait = debounceValue[1]; + const timeout = debounceValue[0]; + const maxWait = debounceValue[1]; debounceTimeout = isNumber(timeout) ? timeout : false; debounceMaxDelay = isNumber(maxWait) ? maxWait : false; } else if (isNumber(debounceValue)) { @@ -2417,417 +1875,297 @@ debounceMaxDelay = false; } } - }, function () { + }, + () => { contentMutationObserver && contentMutationObserver[0](); destroyTrinsicObserver && destroyTrinsicObserver(); destroySizeObserver && destroySizeObserver(); viewportIsTargetResizeObserver && viewportIsTargetResizeObserver.disconnect(); destroyHostMutationObserver(); - }]; + } + ]; +}; + +const initialStructureSetupUpdateState = { + _padding: { + t: 0, + r: 0, + b: 0, + l: 0 + }, + _paddingAbsolute: false, + _viewportPaddingStyle: { + marginRight: 0, + marginBottom: 0, + marginLeft: 0, + paddingTop: 0, + paddingRight: 0, + paddingBottom: 0, + paddingLeft: 0 + }, + _overflowAmount: { + x: 0, + y: 0 + }, + _overflowStyle: { + x: "hidden", + y: "hidden" + }, + _hasOverflow: { + x: false, + y: false + }, + _heightIntrinsic: false, + _directionIsRTL: false +}; +const createStructureSetup = (target, options) => { + const checkOptionsFallback = createOptionCheck(options, {}); + const state = createState(initialStructureSetupUpdateState); + const onUpdatedListeners = /* @__PURE__ */ new Set(); + const [getState] = state; + const runOnUpdatedListeners = (updateHints, changedOptions, force) => { + runEach(onUpdatedListeners, [updateHints, changedOptions || {}, !!force]); }; - - var initialStructureSetupUpdateState = { - _padding: { - t: 0, - r: 0, - b: 0, - l: 0 - }, - _paddingAbsolute: false, - _viewportPaddingStyle: { - marginRight: 0, - marginBottom: 0, - marginLeft: 0, - paddingTop: 0, - paddingRight: 0, - paddingBottom: 0, - paddingLeft: 0 - }, - _overflowAmount: { - x: 0, - y: 0 - }, - _overflowStyle: { - x: 'hidden', - y: 'hidden' - }, - _hasOverflow: { - x: false, - y: false - }, - _heightIntrinsic: false, - _directionIsRTL: false + const [elements, destroyElements] = createStructureSetupElements(target); + const updateStructure = createStructureSetupUpdate(elements, state); + const [updateObservers, destroyObservers] = createStructureSetupObservers(elements, state, (updateHints) => { + runOnUpdatedListeners(updateStructure(checkOptionsFallback, updateHints)); + }); + const structureSetupState = getState.bind(0); + structureSetupState._addOnUpdatedListener = (listener) => { + onUpdatedListeners.add(listener); }; - var createStructureSetup = function createStructureSetup(target, options) { - var checkOptionsFallback = createOptionCheck(options, {}); - var state = createState(initialStructureSetupUpdateState); - var onUpdatedListeners = new Set(); - var getState = state[0]; - - var runOnUpdatedListeners = function runOnUpdatedListeners(updateHints, changedOptions, force) { - runEach(onUpdatedListeners, [updateHints, changedOptions || {}, !!force]); - }; - - var _createStructureSetup = createStructureSetupElements(target), - elements = _createStructureSetup[0], - destroyElements = _createStructureSetup[1]; - - var updateStructure = createStructureSetupUpdate(elements, state); - - var _createStructureSetup2 = createStructureSetupObservers(elements, state, function (updateHints) { - runOnUpdatedListeners(updateStructure(checkOptionsFallback, updateHints)); - }), - updateObservers = _createStructureSetup2[0], - destroyObservers = _createStructureSetup2[1]; - - var structureSetupState = getState.bind(0); - - structureSetupState._addOnUpdatedListener = function (listener) { - onUpdatedListeners.add(listener); - }; - - structureSetupState._elements = elements; - return [function (changedOptions, force) { - var checkOption = createOptionCheck(options, changedOptions, force); + structureSetupState._elements = elements; + return [ + (changedOptions, force) => { + const checkOption = createOptionCheck(options, changedOptions, force); updateObservers(checkOption); runOnUpdatedListeners(updateStructure(checkOption, {}, force)); - }, structureSetupState, function () { + }, + structureSetupState, + () => { onUpdatedListeners.clear(); destroyObservers(); destroyElements(); - }]; + } + ]; +}; + +const generateScrollbarDOM = (scrollbarClassName) => { + const scrollbar = createDiv(`${classNameScrollbar} ${scrollbarClassName}`); + const track = createDiv(classNameScrollbarTrack); + const handle = createDiv(classNameScrollbarHandle); + appendChildren(scrollbar, track); + appendChildren(track, handle); + return { + _scrollbar: scrollbar, + _track: track, + _handle: handle }; - - var generateScrollbarDOM = function generateScrollbarDOM(scrollbarClassName) { - var scrollbar = createDiv(classNameScrollbar + " " + scrollbarClassName); - var track = createDiv(classNameScrollbarTrack); - var handle = createDiv(classNameScrollbarHandle); - appendChildren(scrollbar, track); - appendChildren(track, handle); - return { - _scrollbar: scrollbar, - _track: track, - _handle: handle - }; - }; - - var createScrollbarsSetupElements = function createScrollbarsSetupElements(target, structureSetupElements) { - var _getEnvironment = getEnvironment(), - _getInitializationStrategy = _getEnvironment._getInitializationStrategy; - - var _getInitializationStr = _getInitializationStrategy(), - environmentScrollbarSlot = _getInitializationStr._scrollbarsSlot; - - var _target = structureSetupElements._target, - _host = structureSetupElements._host, - _viewport = structureSetupElements._viewport, - _targetIsElm = structureSetupElements._targetIsElm; - var initializationScrollbarSlot = !_targetIsElm && target.scrollbarsSlot; - var initializationScrollbarSlotResult = isFunction(initializationScrollbarSlot) ? initializationScrollbarSlot(_target, _host, _viewport) : initializationScrollbarSlot; - var evaluatedScrollbarSlot = initializationScrollbarSlotResult || (isFunction(environmentScrollbarSlot) ? environmentScrollbarSlot(_target, _host, _viewport) : environmentScrollbarSlot) || _host; - var horizontalScrollbarStructure = generateScrollbarDOM(classNameScrollbarHorizontal); - var verticalScrollbarStructure = generateScrollbarDOM(classNameScrollbarVertical); - var horizontalScrollbar = horizontalScrollbarStructure._scrollbar; - var verticalScrollbar = verticalScrollbarStructure._scrollbar; - appendChildren(evaluatedScrollbarSlot, horizontalScrollbar); - appendChildren(evaluatedScrollbarSlot, verticalScrollbar); - return [{ +}; +const createScrollbarsSetupElements = (target, structureSetupElements) => { + const { _getInitializationStrategy } = getEnvironment(); + const { _scrollbarsSlot: environmentScrollbarSlot } = _getInitializationStrategy(); + const { _target, _host, _viewport, _targetIsElm } = structureSetupElements; + const initializationScrollbarSlot = !_targetIsElm && target.scrollbarsSlot; + const initializationScrollbarSlotResult = isFunction(initializationScrollbarSlot) ? initializationScrollbarSlot(_target, _host, _viewport) : initializationScrollbarSlot; + const evaluatedScrollbarSlot = initializationScrollbarSlotResult || (isFunction(environmentScrollbarSlot) ? environmentScrollbarSlot(_target, _host, _viewport) : environmentScrollbarSlot) || _host; + const horizontalScrollbarStructure = generateScrollbarDOM(classNameScrollbarHorizontal); + const verticalScrollbarStructure = generateScrollbarDOM(classNameScrollbarVertical); + const { _scrollbar: horizontalScrollbar } = horizontalScrollbarStructure; + const { _scrollbar: verticalScrollbar } = verticalScrollbarStructure; + appendChildren(evaluatedScrollbarSlot, horizontalScrollbar); + appendChildren(evaluatedScrollbarSlot, verticalScrollbar); + return [ + { _horizontalScrollbarStructure: horizontalScrollbarStructure, _verticalScrollbarStructure: verticalScrollbarStructure - }, removeElements.bind(0, [horizontalScrollbar, verticalScrollbar])]; - }; + }, + removeElements.bind(0, [horizontalScrollbar, verticalScrollbar]) + ]; +}; - var createScrollbarsSetup = function createScrollbarsSetup(target, options, structureSetupElements) { - var state = createState({}); - var getState = state[0]; - - var _createScrollbarsSetu = createScrollbarsSetupElements(target, structureSetupElements), - elements = _createScrollbarsSetu[0], - destroyElements = _createScrollbarsSetu[1]; - - var scrollbarsSetupState = getState.bind(0); - scrollbarsSetupState._elements = elements; - return [function (changedOptions, force) { - var checkOption = createOptionCheck(options, changedOptions, force); +const createScrollbarsSetup = (target, options, structureSetupElements) => { + const state = createState({}); + const [getState] = state; + const [elements, destroyElements] = createScrollbarsSetupElements(target, structureSetupElements); + const scrollbarsSetupState = getState.bind(0); + scrollbarsSetupState._elements = elements; + return [ + (changedOptions, force) => { + const checkOption = createOptionCheck(options, changedOptions, force); console.log(checkOption); - }, scrollbarsSetupState, function () { + }, + scrollbarsSetupState, + () => { destroyElements(); - }]; - }; - - var pluginRegistry = {}; - var getPlugins = function getPlugins() { - return assignDeep({}, pluginRegistry); - }; - var addPlugin = function addPlugin(addedPlugin) { - return each(isArray(addedPlugin) ? addedPlugin : [addedPlugin], function (plugin) { - pluginRegistry[plugin[0]] = plugin[1]; - }); - }; - - function getDefaultExportFromCjs (x) { - return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; - } - - var _extends = {exports: {}}; - - (function (module) { - function _extends() { - module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - - return target; - }, module.exports.__esModule = true, module.exports["default"] = module.exports; - return _extends.apply(this, arguments); } + ]; +}; - module.exports = _extends, module.exports.__esModule = true, module.exports["default"] = module.exports; - })(_extends); +const pluginRegistry = {}; +const getPlugins = () => assignDeep({}, pluginRegistry); +const addPlugin = (addedPlugin) => each(isArray(addedPlugin) ? addedPlugin : [addedPlugin], (plugin) => { + pluginRegistry[plugin[0]] = plugin[1]; +}); - getDefaultExportFromCjs(_extends.exports); +const optionsValidationPluginName = "__osOptionsValidationPlugin"; - var templateTypePrefixSuffix = ['__TPL_', '_TYPE__']; - var optionsTemplateTypes = ['boolean', 'number', 'string', 'array', 'object', 'function', 'null'].reduce(function (result, item) { - result[item] = templateTypePrefixSuffix[0] + item + templateTypePrefixSuffix[1]; - return result; - }, {}); +const targets = /* @__PURE__ */ new Set(); +const targetInstanceMap = /* @__PURE__ */ new WeakMap(); +const addInstance = (target, osInstance) => { + targetInstanceMap.set(target, osInstance); + targets.add(target); +}; +const removeInstance = (target) => { + targetInstanceMap.delete(target); + targets.delete(target); +}; +const getInstance = (target) => targetInstanceMap.get(target); - var numberAllowedValues = optionsTemplateTypes.number; - var booleanAllowedValues = optionsTemplateTypes.boolean; - var arrayNullValues = [optionsTemplateTypes.array, optionsTemplateTypes.null]; - var overflowAllowedValues = 'hidden scroll visible visible-hidden'; - var scrollbarsVisibilityAllowedValues = 'visible hidden auto'; - var scrollbarsAutoHideAllowedValues = 'never scroll leavemove'; - ({ - paddingAbsolute: booleanAllowedValues, - updating: { - elementEvents: arrayNullValues, - attributes: arrayNullValues, - debounce: [optionsTemplateTypes.number, optionsTemplateTypes.array, optionsTemplateTypes.null], - ignoreMutation: [optionsTemplateTypes.function, optionsTemplateTypes.null] +const createOSEventListenerHub = (initialEventListeners) => createEventListenerHub(initialEventListeners); + +const OverlayScrollbars = (target, options, eventListeners) => { + const { + _getDefaultOptions, + _nativeScrollbarIsOverlaid, + _addListener: addEnvListener + } = getEnvironment(); + const plugins = getPlugins(); + const instanceTarget = isHTMLElement(target) ? target : target.target; + const potentialInstance = getInstance(instanceTarget); + if (potentialInstance) { + return potentialInstance; + } + const optionsValidationPlugin = plugins[optionsValidationPluginName]; + const validateOptions = (newOptions) => { + const opts = newOptions || {}; + const validate = optionsValidationPlugin && optionsValidationPlugin._; + return validate ? validate(opts, true) : opts; + }; + const currentOptions = assignDeep({}, _getDefaultOptions(), validateOptions(options)); + const [addEvent, removeEvent, triggerEvent] = createOSEventListenerHub(eventListeners); + if (_nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.y && !currentOptions.nativeScrollbarsOverlaid.initialize) { + triggerEvent("initializationWithdrawn"); + } + const [updateStructure, structureState, destroyStructure] = createStructureSetup(target, currentOptions); + const [updateScrollbars, , destroyScrollbars] = createScrollbarsSetup(target, currentOptions, structureState._elements); + const update = (changedOptions, force) => { + updateStructure(changedOptions, force); + updateScrollbars(changedOptions, force); + }; + const removeEnvListener = addEnvListener(update.bind(0, {}, true)); + structureState._addOnUpdatedListener((updateHints, changedOptions, force) => { + const { + _sizeChanged, + _directionChanged, + _heightIntrinsicChanged, + _overflowAmountChanged, + _overflowStyleChanged, + _contentMutation, + _hostMutation + } = updateHints; + triggerEvent("updated", { + updateHints: { + sizeChanged: _sizeChanged, + directionChanged: _directionChanged, + heightIntrinsicChanged: _heightIntrinsicChanged, + overflowAmountChanged: _overflowAmountChanged, + overflowStyleChanged: _overflowStyleChanged, + contentMutation: _contentMutation, + hostMutation: _hostMutation + }, + changedOptions, + force + }); + }); + const instance = { + options(newOptions) { + if (newOptions) { + const changedOptions = getOptionsDiff(currentOptions, validateOptions(newOptions)); + if (!isEmptyObject(changedOptions)) { + assignDeep(currentOptions, changedOptions); + update(changedOptions); + } + } + return assignDeep({}, currentOptions); }, - overflow: { - x: overflowAllowedValues, - y: overflowAllowedValues + on: addEvent, + off: removeEvent, + state() { + const { _overflowAmount, _overflowStyle, _hasOverflow, _padding, _paddingAbsolute } = structureState(); + return assignDeep({}, { + overflowAmount: _overflowAmount, + overflowStyle: _overflowStyle, + hasOverflow: _hasOverflow, + padding: _padding, + paddingAbsolute: _paddingAbsolute + }); }, - scrollbars: { - visibility: scrollbarsVisibilityAllowedValues, - autoHide: scrollbarsAutoHideAllowedValues, - autoHideDelay: numberAllowedValues, - dragScroll: booleanAllowedValues, - clickScroll: booleanAllowedValues, - touch: booleanAllowedValues + elements() { + const { _target, _host, _padding, _viewport, _content } = structureState._elements; + return assignDeep({}, { + target: _target, + host: _host, + padding: _padding || _viewport, + viewport: _viewport, + content: _content || _viewport + }); }, - nativeScrollbarsOverlaid: { - show: booleanAllowedValues, - initialize: booleanAllowedValues + update(force) { + update({}, force); + }, + destroy: () => { + removeInstance(instanceTarget); + removeEnvListener(); + removeEvent(); + destroyScrollbars(); + destroyStructure(); + triggerEvent("destroyed"); + } + }; + each(keys(plugins), (pluginName) => { + const pluginInstance = plugins[pluginName]; + if (isFunction(pluginInstance)) { + pluginInstance(OverlayScrollbars, instance); } }); - var optionsValidationPluginName = '__osOptionsValidationPlugin'; + instance.update(true); + addInstance(instanceTarget, instance); + triggerEvent("initialized"); + return instance; +}; +OverlayScrollbars.plugin = addPlugin; +OverlayScrollbars.env = () => { + const { + _nativeScrollbarSize, + _nativeScrollbarIsOverlaid, + _nativeScrollbarStyling, + _rtlScrollBehavior, + _flexboxGlue, + _cssCustomProperties, + _defaultInitializationStrategy, + _defaultDefaultOptions, + _getInitializationStrategy, + _setInitializationStrategy, + _getDefaultOptions, + _setDefaultOptions + } = getEnvironment(); + return assignDeep({}, { + scrollbarSize: _nativeScrollbarSize, + scrollbarIsOverlaid: _nativeScrollbarIsOverlaid, + scrollbarStyling: _nativeScrollbarStyling, + rtlScrollBehavior: _rtlScrollBehavior, + flexboxGlue: _flexboxGlue, + cssCustomProperties: _cssCustomProperties, + defaultInitializationStrategy: _defaultInitializationStrategy, + defaultDefaultOptions: _defaultDefaultOptions, + getInitializationStrategy: _getInitializationStrategy, + setInitializationStrategy: _setInitializationStrategy, + getDefaultOptions: _getDefaultOptions, + setDefaultOptions: _setDefaultOptions + }); +}; - var targets = new Set(); - var targetInstanceMap = new WeakMap(); - var addInstance = function addInstance(target, osInstance) { - targetInstanceMap.set(target, osInstance); - targets.add(target); - }; - var removeInstance = function removeInstance(target) { - targetInstanceMap.delete(target); - targets.delete(target); - }; - var getInstance = function getInstance(target) { - return targetInstanceMap.get(target); - }; - - var createOSEventListenerHub = function createOSEventListenerHub(initialEventListeners) { - return createEventListenerHub(initialEventListeners); - }; - - var OverlayScrollbars = function OverlayScrollbars(target, options, eventListeners) { - var _getEnvironment = getEnvironment(), - _getDefaultOptions = _getEnvironment._getDefaultOptions, - _nativeScrollbarIsOverlaid = _getEnvironment._nativeScrollbarIsOverlaid, - addEnvListener = _getEnvironment._addListener; - - var plugins = getPlugins(); - var instanceTarget = isHTMLElement(target) ? target : target.target; - var potentialInstance = getInstance(instanceTarget); - - if (potentialInstance) { - return potentialInstance; - } - - var optionsValidationPlugin = plugins[optionsValidationPluginName]; - - var validateOptions = function validateOptions(newOptions) { - var opts = newOptions || {}; - var validate = optionsValidationPlugin && optionsValidationPlugin._; - return validate ? validate(opts, true) : opts; - }; - - var currentOptions = assignDeep({}, _getDefaultOptions(), validateOptions(options)); - - var _createOSEventListene = createOSEventListenerHub(eventListeners), - addEvent = _createOSEventListene[0], - removeEvent = _createOSEventListene[1], - triggerEvent = _createOSEventListene[2]; - - if (_nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.y && !currentOptions.nativeScrollbarsOverlaid.initialize) { - triggerEvent('initializationWithdrawn'); - } - - var _createStructureSetup = createStructureSetup(target, currentOptions), - updateStructure = _createStructureSetup[0], - structureState = _createStructureSetup[1], - destroyStructure = _createStructureSetup[2]; - - var _createScrollbarsSetu = createScrollbarsSetup(target, currentOptions, structureState._elements), - updateScrollbars = _createScrollbarsSetu[0], - destroyScrollbars = _createScrollbarsSetu[2]; - - var _update = function update(changedOptions, force) { - updateStructure(changedOptions, force); - updateScrollbars(changedOptions, force); - }; - - var removeEnvListener = addEnvListener(_update.bind(0, {}, true)); - - structureState._addOnUpdatedListener(function (updateHints, changedOptions, force) { - var _sizeChanged = updateHints._sizeChanged, - _directionChanged = updateHints._directionChanged, - _heightIntrinsicChanged = updateHints._heightIntrinsicChanged, - _overflowAmountChanged = updateHints._overflowAmountChanged, - _overflowStyleChanged = updateHints._overflowStyleChanged, - _contentMutation = updateHints._contentMutation, - _hostMutation = updateHints._hostMutation; - triggerEvent('updated', { - updateHints: { - sizeChanged: _sizeChanged, - directionChanged: _directionChanged, - heightIntrinsicChanged: _heightIntrinsicChanged, - overflowAmountChanged: _overflowAmountChanged, - overflowStyleChanged: _overflowStyleChanged, - contentMutation: _contentMutation, - hostMutation: _hostMutation - }, - changedOptions: changedOptions, - force: force - }); - }); - - var instance = { - options: function options(newOptions) { - if (newOptions) { - var changedOptions = getOptionsDiff(currentOptions, validateOptions(newOptions)); - - if (!isEmptyObject(changedOptions)) { - assignDeep(currentOptions, changedOptions); - - _update(changedOptions); - } - } - - return assignDeep({}, currentOptions); - }, - on: addEvent, - off: removeEvent, - state: function state() { - var _structureState = structureState(), - _overflowAmount = _structureState._overflowAmount, - _overflowStyle = _structureState._overflowStyle, - _hasOverflow = _structureState._hasOverflow, - _padding = _structureState._padding, - _paddingAbsolute = _structureState._paddingAbsolute; - - return assignDeep({}, { - overflowAmount: _overflowAmount, - overflowStyle: _overflowStyle, - hasOverflow: _hasOverflow, - padding: _padding, - paddingAbsolute: _paddingAbsolute - }); - }, - elements: function elements() { - var _structureState$_elem = structureState._elements, - _target = _structureState$_elem._target, - _host = _structureState$_elem._host, - _padding = _structureState$_elem._padding, - _viewport = _structureState$_elem._viewport, - _content = _structureState$_elem._content; - return assignDeep({}, { - target: _target, - host: _host, - padding: _padding || _viewport, - viewport: _viewport, - content: _content || _viewport - }); - }, - update: function update(force) { - _update({}, force); - }, - destroy: function destroy() { - removeInstance(instanceTarget); - removeEnvListener(); - removeEvent(); - destroyScrollbars(); - destroyStructure(); - triggerEvent('destroyed'); - } - }; - each(keys(plugins), function (pluginName) { - var pluginInstance = plugins[pluginName]; - - if (isFunction(pluginInstance)) { - pluginInstance(OverlayScrollbars, instance); - } - }); - instance.update(true); - addInstance(instanceTarget, instance); - triggerEvent('initialized'); - return instance; - }; - OverlayScrollbars.plugin = addPlugin; - - OverlayScrollbars.env = function () { - var _getEnvironment2 = getEnvironment(), - _nativeScrollbarSize = _getEnvironment2._nativeScrollbarSize, - _nativeScrollbarIsOverlaid = _getEnvironment2._nativeScrollbarIsOverlaid, - _nativeScrollbarStyling = _getEnvironment2._nativeScrollbarStyling, - _rtlScrollBehavior = _getEnvironment2._rtlScrollBehavior, - _flexboxGlue = _getEnvironment2._flexboxGlue, - _cssCustomProperties = _getEnvironment2._cssCustomProperties, - _defaultInitializationStrategy = _getEnvironment2._defaultInitializationStrategy, - _defaultDefaultOptions = _getEnvironment2._defaultDefaultOptions, - _getInitializationStrategy = _getEnvironment2._getInitializationStrategy, - _setInitializationStrategy = _getEnvironment2._setInitializationStrategy, - _getDefaultOptions = _getEnvironment2._getDefaultOptions, - _setDefaultOptions = _getEnvironment2._setDefaultOptions; - - return assignDeep({}, { - scrollbarSize: _nativeScrollbarSize, - scrollbarIsOverlaid: _nativeScrollbarIsOverlaid, - scrollbarStyling: _nativeScrollbarStyling, - rtlScrollBehavior: _rtlScrollBehavior, - flexboxGlue: _flexboxGlue, - cssCustomProperties: _cssCustomProperties, - defaultInitializationStrategy: _defaultInitializationStrategy, - defaultDefaultOptions: _defaultDefaultOptions, - getInitializationStrategy: _getInitializationStrategy, - setInitializationStrategy: _setInitializationStrategy, - getDefaultOptions: _getDefaultOptions, - setDefaultOptions: _setDefaultOptions - }); - }; - - return OverlayScrollbars; - -})); +export { OverlayScrollbars as default }; //# sourceMappingURL=overlayscrollbars.js.map diff --git a/packages/overlayscrollbars/dist/overlayscrollbars.js.map b/packages/overlayscrollbars/dist/overlayscrollbars.js.map index 4980ad3..5f4e6a4 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 { from } from 'support/utils/array';\r\nimport { 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 | false | null | undefined,\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 | false | null | undefined, attrName: string): string | null;\r\nexport function attr(\r\n elm: HTMLElement | false | null | undefined,\r\n attrName: string,\r\n value: string\r\n): void;\r\nexport function attr(\r\n elm: HTMLElement | false | null | undefined,\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\nexport const attrClass = (\r\n elm: HTMLElement | false | null | undefined,\r\n attrName: string,\r\n value: string,\r\n add?: boolean\r\n) => {\r\n const currValues = attr(elm, attrName) || '';\r\n const currValuesSet = new Set(currValues.split(' '));\r\n currValuesSet[add ? 'add' : 'delete'](value);\r\n\r\n attr(elm, attrName, from(currValuesSet).join(' ').trim());\r\n};\r\n\r\nexport const hasAttrClass = (\r\n elm: HTMLElement | false | null | undefined,\r\n attrName: string,\r\n value: string\r\n) => {\r\n const currValues = attr(elm, attrName) || '';\r\n const currValuesSet = new Set(currValues.split(' '));\r\n return currValuesSet.has(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 | false | null | undefined, 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 | false | null | undefined): number;\r\nexport function scrollLeft(elm: HTMLElement | false | null | undefined, value: number): void;\r\nexport function scrollLeft(\r\n elm: HTMLElement | false | null | undefined,\r\n value?: number\r\n): 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 | false | null | undefined): number;\r\nexport function scrollTop(elm: HTMLElement | false | null | undefined, value: number): void;\r\nexport function scrollTop(\r\n elm: HTMLElement | false | null | undefined,\r\n value?: number\r\n): 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 | false | null | undefined): string;\r\nexport function val(elm: HTMLInputElement | false | null | undefined, value: string): void;\r\nexport function val(\r\n elm: HTMLInputElement | false | null | undefined,\r\n value?: string\r\n): 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 | false | null | undefined,\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 && className && 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 = (\r\n elm: Element | false | null | undefined,\r\n className: string | false | null | undefined\r\n): boolean => 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 = (\r\n elm: Element | false | null | undefined,\r\n className: string | false | null | undefined\r\n): 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 | false | null | undefined\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 | false | 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 | false | 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 | false | 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 | false | 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 dataAttributeHost = 'data-overlayscrollbars';\r\nexport const dataAttributeHostOverflowX = `${dataAttributeHost}-overflow-x`;\r\nexport const dataAttributeHostOverflowY = `${dataAttributeHost}-overflow-y`;\r\nexport const dataValueHostOverflowVisible = 'overflowVisible';\r\nexport const dataValueHostViewportScrollbarStyling = 'viewportStyled';\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\nexport const classNameOverflowVisible = `os-overflow-visible`;\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 =\r\n | 'hidden'\r\n | 'scroll'\r\n | 'visible'\r\n | 'visible-hidden'\r\n | 'visible-scroll';\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 paddingAbsolute: boolean;\r\n updating: {\r\n elementEvents: Array<[elementSelector: string, eventNames: string]> | null;\r\n attributes: string[] | null;\r\n debounce: [timeout: number, maxWait: number] | number | null; // (if tuple: [timeout: 0, maxWait: 33], if number: [timeout: number, maxWait: false]) debounce for content Changes\r\n ignoreMutation: ((mutation: MutationRecord) => any) | 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 nativeScrollbarsOverlaid: {\r\n show: boolean;\r\n initialize: boolean;\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 debounce: [0, 33], // number || number array || null\r\n attributes: null, // string array || null\r\n ignoreMutation: null, // () => any || 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 nativeScrollbarsOverlaid: {\r\n show: false, // true || false\r\n initialize: false, // true || false\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 /*\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 */\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 equalBCRWH,\r\n getBoundingClientRect,\r\n assignDeep,\r\n cssProperty,\r\n createCache,\r\n equalXY,\r\n createEventListenerHub,\r\n EventListener,\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 interface EnvironmentListenersNameArgsMap {\r\n _: undefined;\r\n}\r\n\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: EventListener): () => 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 [addEvent, , triggerEvent] = createEventListenerHub();\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) => addEvent('_', listener),\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 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 triggerEvent('_');\r\n }\r\n }\r\n\r\n size = sizeNew;\r\n dpr = dprNew;\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 hasClass,\r\n push,\r\n runEach,\r\n insertBefore,\r\n attr,\r\n isBoolean,\r\n isFunction,\r\n keys,\r\n removeAttr,\r\n attrClass,\r\n hasAttrClass,\r\n ResizeObserverConstructor,\r\n} from 'support';\r\nimport {\r\n dataAttributeHost,\r\n dataAttributeHostOverflowX,\r\n dataAttributeHostOverflowY,\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 _viewportIsTarget: boolean;\r\n _viewportHasClass: (className: string, attributeClassName: string) => boolean;\r\n _viewportAddRemoveClass: (className: string, attributeClassName: string, add?: boolean) => void;\r\n}\r\n\r\nlet contentArrangeCounter = 0;\r\n\r\nconst unwrap = (elm: HTMLElement | false | null | undefined) => {\r\n appendChildren(parent(elm), contents(elm));\r\n removeElements(elm);\r\n};\r\n\r\nconst createUniqueViewportArrangeElement = (): HTMLStyleElement | false => {\r\n const { _nativeScrollbarStyling, _nativeScrollbarIsOverlaid, _cssCustomProperties } =\r\n getEnvironment();\r\n /* istanbul ignore next */\r\n const create =\r\n !_cssCustomProperties &&\r\n !_nativeScrollbarStyling &&\r\n (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);\r\n const result = create ? document.createElement('style') : false;\r\n\r\n if (result) {\r\n attr(result, 'id', `${classNameViewportArrange}-${contentArrangeCounter}`);\r\n contentArrangeCounter++;\r\n }\r\n\r\n return result;\r\n};\r\n\r\nconst staticCreationFromStrategy = (\r\n target: OSTargetElement,\r\n initializationValue?: HTMLElement | undefined,\r\n strategy?: StructureInitializationStrategyStaticElement\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();\r\n};\r\n\r\nconst dynamicCreationFromStrategy = (\r\n target: OSTargetElement,\r\n initializationValue: HTMLElement | boolean | undefined,\r\n strategy: StructureInitializationStrategyDynamicElement\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() : result;\r\n};\r\n\r\nconst addDataAttrHost = (elm: HTMLElement, value?: string | false | null | undefined) => {\r\n attr(elm, dataAttributeHost, value || '');\r\n return removeAttr.bind(0, elm, dataAttributeHost);\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 singleElmSupport = !!ResizeObserverConstructor && _nativeScrollbarStyling;\r\n const potentialViewportElement = staticCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.viewport,\r\n viewportInitializationStrategy\r\n );\r\n const potentiallySingleElm = potentialViewportElement === targetElement;\r\n const viewportIsTarget = singleElmSupport && potentiallySingleElm;\r\n const viewportElement =\r\n potentiallySingleElm && !viewportIsTarget\r\n ? staticCreationFromStrategy(targetElement)\r\n : potentialViewportElement;\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 )\r\n : (targetElement as HTMLElement),\r\n _viewport: viewportElement,\r\n _padding: dynamicCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.padding,\r\n paddingInitializationStrategy\r\n ),\r\n _content: dynamicCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.content,\r\n contentInitializationStrategy\r\n ),\r\n _viewportArrange: !viewportIsTarget && 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 _viewportIsTarget: viewportIsTarget,\r\n _viewportHasClass: (className: string, attributeClassName: string) =>\r\n viewportIsTarget\r\n ? hasAttrClass(viewportElement, dataAttributeHost, attributeClassName)\r\n : hasClass(viewportElement, className),\r\n _viewportAddRemoveClass: (className: string, attributeClassName: string, add?: boolean) =>\r\n viewportIsTarget\r\n ? attrClass(viewportElement, dataAttributeHost, attributeClassName, add)\r\n : (add ? addClass : removeClass)(viewportElement, className),\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 const removeHostDataAttr = addDataAttrHost(_host, viewportIsTarget ? 'viewport' : 'host');\r\n const removePaddingClass = addClass(_padding, classNamePadding);\r\n const removeViewportClass = addClass(_viewport, !viewportIsTarget && classNameViewport);\r\n const removeContentClass = addClass(_content, classNameContent);\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, !viewportIsTarget && _viewport);\r\n appendChildren(_viewport, _content);\r\n\r\n push(destroyFns, () => {\r\n removeHostDataAttr();\r\n removeAttr(_viewport, dataAttributeHostOverflowX);\r\n removeAttr(_viewport, dataAttributeHostOverflowY);\r\n\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 removePaddingClass();\r\n removeViewportClass();\r\n removeContentClass();\r\n });\r\n\r\n if (_nativeScrollbarStyling && !viewportIsTarget) {\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 { 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 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 { _flexboxGlue } = getEnvironment();\r\n const { _heightIntrinsic } = getState();\r\n const { _heightIntrinsicChanged } = updateHints;\r\n const heightIntrinsicChanged = (_content || !_flexboxGlue) && _heightIntrinsicChanged;\r\n\r\n if (heightIntrinsicChanged) {\r\n style(_content, {\r\n height: _heightIntrinsic ? '' : '100%',\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, _viewportIsTarget: _isSingleElm } = 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 =\r\n !_isSingleElm && (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 attrClass,\r\n} from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport {\r\n classNameViewportArrange,\r\n classNameViewportScrollbarStyling,\r\n classNameOverflowVisible,\r\n dataAttributeHost,\r\n dataAttributeHostOverflowX,\r\n dataAttributeHostOverflowY,\r\n dataValueHostViewportScrollbarStyling,\r\n dataValueHostOverflowVisible,\r\n} from 'classnames';\r\nimport type { StyleObject, OverflowStyle } from 'typings';\r\nimport type { OverflowBehavior } from 'options';\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 _overflowStyle: 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 strVisible = 'visible';\r\nconst strHidden = 'hidden';\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: strHidden, y: strHidden } as XY,\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 % 1 !== 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\nconst conditionalClass = (\r\n elm: Element | false | null | undefined,\r\n classNames: string,\r\n add: boolean\r\n) => (add ? addClass(elm, classNames) : removeClass(elm, classNames));\r\n\r\nconst overflowIsVisible = (overflowBehavior: string) => overflowBehavior.indexOf(strVisible) === 0;\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 {\r\n _host,\r\n _padding,\r\n _viewport,\r\n _viewportArrange,\r\n _viewportIsTarget,\r\n _viewportAddRemoveClass,\r\n } = 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 !_viewportIsTarget &&\r\n !_nativeScrollbarStyling &&\r\n (_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 [updateOverflowStyleCache] = 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: 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 arrangeHideOffset =\r\n !_nativeScrollbarStyling && !showNativeOverlaidScrollbars ? overlaidScrollbarsHideOffset : 0;\r\n const getStatePerAxis = (\r\n styleKey: string,\r\n isOverlaid: boolean,\r\n nativeScrollbarSize: number\r\n ) => {\r\n const overflowStyle = style(_viewport, styleKey);\r\n // can't do something like \"viewportStyleObj && viewportStyleObj[styleKey] || overflowStyle\" here!\r\n const objectPrefferedOverflowStyle = viewportStyleObj\r\n ? viewportStyleObj[styleKey]\r\n : overflowStyle;\r\n const overflowScroll = objectPrefferedOverflowStyle === 'scroll';\r\n const nonScrollbarStylingHideOffset = isOverlaid ? arrangeHideOffset : nativeScrollbarSize;\r\n const scrollbarsHideOffset =\r\n overflowScroll && !_nativeScrollbarStyling ? nonScrollbarStylingHideOffset : 0;\r\n const scrollbarsHideOffsetArrange = isOverlaid && !!arrangeHideOffset;\r\n\r\n return [overflowStyle, overflowScroll, scrollbarsHideOffset, scrollbarsHideOffsetArrange] as [\r\n overflowStyle: OverflowStyle,\r\n overflowScroll: boolean,\r\n scrollbarsHideOffset: number,\r\n scrollbarsHideOffsetArrange: boolean\r\n ];\r\n };\r\n\r\n const [xOverflowStyle, xOverflowScroll, xScrollbarsHideOffset, xScrollbarsHideOffsetArrange] =\r\n getStatePerAxis('overflowX', _nativeScrollbarIsOverlaid.x, _nativeScrollbarSize.x);\r\n const [yOverflowStyle, yOverflowScroll, yScrollbarsHideOffset, yScrollbarsHideOffsetArrange] =\r\n getStatePerAxis('overflowY', _nativeScrollbarIsOverlaid.y, _nativeScrollbarSize.y);\r\n\r\n return {\r\n _overflowStyle: {\r\n x: xOverflowStyle,\r\n y: yOverflowStyle,\r\n },\r\n _overflowScroll: {\r\n x: xOverflowScroll,\r\n y: yOverflowScroll,\r\n },\r\n _scrollbarsHideOffset: {\r\n x: xScrollbarsHideOffset,\r\n y: yScrollbarsHideOffset,\r\n },\r\n _scrollbarsHideOffsetArrange: {\r\n x: xScrollbarsHideOffsetArrange,\r\n y: yScrollbarsHideOffsetArrange,\r\n },\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 hasOverflow: XY,\r\n overflowOption: XY,\r\n viewportStyleObj: StyleObject\r\n ): ViewportOverflowState => {\r\n const setAxisOverflowStyle = (behavior: OverflowBehavior, hasOverflowAxis: boolean) => {\r\n const overflowVisible = overflowIsVisible(behavior);\r\n const overflowVisibleBehavior =\r\n (hasOverflowAxis && overflowVisible && behavior.replace(`${strVisible}-`, '')) || '';\r\n return [\r\n hasOverflowAxis && !overflowVisible ? behavior : '',\r\n overflowIsVisible(overflowVisibleBehavior) ? 'hidden' : overflowVisibleBehavior,\r\n ];\r\n };\r\n\r\n const [overflowX, visibleBehaviorX] = setAxisOverflowStyle(overflowOption.x, hasOverflow.x);\r\n const [overflowY, visibleBehaviorY] = setAxisOverflowStyle(overflowOption.y, hasOverflow.y);\r\n\r\n viewportStyleObj.overflowX = visibleBehaviorX && overflowY ? visibleBehaviorX : overflowX;\r\n viewportStyleObj.overflowY = visibleBehaviorY && overflowX ? visibleBehaviorY : overflowY;\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\r\n const showNativeOverlaidScrollbars =\r\n showNativeOverlaidScrollbarsOption &&\r\n _nativeScrollbarIsOverlaid.x &&\r\n _nativeScrollbarIsOverlaid.y;\r\n const adjustFlexboxGlue =\r\n !_viewportIsTarget &&\r\n !_flexboxGlue &&\r\n (_sizeChanged ||\r\n _contentMutation ||\r\n _hostMutation ||\r\n showNativeOverlaidScrollbarsChanged ||\r\n _heightIntrinsicChanged);\r\n const overflowXVisible = overflowIsVisible(overflow.x);\r\n const overflowYVisible = overflowIsVisible(overflow.y);\r\n const overflowVisible = overflowXVisible || overflowYVisible;\r\n\r\n let sizeFractionCache = getCurrentSizeFraction(force);\r\n let viewportScrollSizeCache = getCurrentViewportScrollSizeCache(force);\r\n let overflowAmuntCache = getCurrentOverflowAmountCache(force);\r\n\r\n let preMeasureViewportOverflowState: ViewportOverflowState | undefined;\r\n\r\n if (showNativeOverlaidScrollbarsChanged && _nativeScrollbarStyling) {\r\n _viewportAddRemoveClass(\r\n classNameViewportScrollbarStyling,\r\n dataValueHostViewportScrollbarStyling,\r\n !showNativeOverlaidScrollbars\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 if (overflowVisible) {\r\n _viewportAddRemoveClass(classNameOverflowVisible, dataValueHostOverflowVisible, false);\r\n }\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 viewportclientSize = clientSize(_viewport);\r\n let arrangedViewportScrollSize = viewportScrollSize;\r\n let arrangedViewportClientSize = viewportclientSize;\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, viewportclientSize.w - viewportScrollSize.w),\r\n h: arrangedViewportClientSize.h + max(0, viewportclientSize.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 const hasOverflow = {\r\n x: overflowAmount.w > 0,\r\n y: overflowAmount.h > 0,\r\n };\r\n const removeClipping =\r\n (overflowXVisible && overflowYVisible && (hasOverflow.x || hasOverflow.y)) ||\r\n (overflowXVisible && hasOverflow.x && !hasOverflow.y) ||\r\n (overflowYVisible && hasOverflow.y && !hasOverflow.x);\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 const viewportOverflowState = setViewportOverflowState(\r\n showNativeOverlaidScrollbars,\r\n hasOverflow,\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\r\n if (!_viewportIsTarget) {\r\n hideNativeScrollbars(\r\n viewportOverflowState,\r\n _directionIsRTL,\r\n viewportArranged,\r\n viewportStyle\r\n );\r\n }\r\n\r\n if (adjustFlexboxGlue) {\r\n fixFlexboxGlue(viewportOverflowState, _heightIntrinsic);\r\n }\r\n\r\n if (_viewportIsTarget) {\r\n attr(_host, dataAttributeHostOverflowX, viewportStyle.overflowX as string);\r\n attr(_host, dataAttributeHostOverflowY, viewportStyle.overflowY as string);\r\n } else {\r\n style(_viewport, viewportStyle);\r\n }\r\n }\r\n\r\n attrClass(_host, dataAttributeHost, dataValueHostOverflowVisible, removeClipping);\r\n conditionalClass(_padding, classNameOverflowVisible, removeClipping);\r\n !_viewportIsTarget && conditionalClass(_viewport, classNameOverflowVisible, overflowVisible);\r\n\r\n const [overflowStyle, overflowStyleChanged] = updateOverflowStyleCache(\r\n getViewportOverflowState(showNativeOverlaidScrollbars)._overflowStyle\r\n );\r\n\r\n setState({\r\n _overflowStyle: overflowStyle,\r\n _overflowAmount: {\r\n x: overflowAmount.w,\r\n y: overflowAmount.h,\r\n },\r\n _hasOverflow: hasOverflow,\r\n });\r\n\r\n return {\r\n _overflowStyleChanged: overflowStyleChanged,\r\n _overflowAmountChanged: overflowAmountChanged,\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 _overflowAmountChanged: boolean;\r\n _overflowStyleChanged: 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 _overflowAmountChanged: false,\r\n _overflowStyleChanged: 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 * A function which can ignore a changed attribute if it returns true.\r\n * for DOMTargetObserver this applies to the changes to the observed target\r\n * for DOMContentObserver this applies to changes to nested targets -> nested targets are elements which match the \"_nestedTargetSelector\" selector\r\n */\r\n _ignoreTargetChange?: DOMObserverIgnoreTargetChange;\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}\r\n\r\ntype DOMTargetObserverOptions = DOMObserverOptionsBase;\r\n\r\ntype ContentChangeArrayItem = [selector?: string, eventNames?: 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 _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 = _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 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 liesBetween,\r\n scrollSize,\r\n equalWH,\r\n createCache,\r\n WH,\r\n fractionalSize,\r\n isFunction,\r\n ResizeObserverConstructor,\r\n} from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport {\r\n dataAttributeHost,\r\n dataValueHostOverflowVisible,\r\n classNameViewport,\r\n classNameOverflowVisible,\r\n} from 'classnames';\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\nconst hostSelector = `[${dataAttributeHost}]`;\r\n\r\n// TODO: observer textarea attrs if textarea\r\n\r\nconst viewportSelector = `.${classNameViewport}`;\r\nconst viewportAttrsFromTarget = ['tabindex'];\r\nconst baseStyleChangingAttrsTextarea = ['wrap', 'cols', 'rows'];\r\nconst baseStyleChangingAttrs = ['id', 'class', 'style', 'open'];\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 {\r\n _host,\r\n _viewport,\r\n _content,\r\n _isTextarea,\r\n _viewportIsTarget,\r\n _viewportHasClass,\r\n _viewportAddRemoveClass,\r\n } = structureSetupElements;\r\n const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment();\r\n\r\n const [updateContentSizeCache] = createCache>(\r\n {\r\n _equal: equalWH,\r\n _initialValue: { w: 0, h: 0 },\r\n },\r\n () => {\r\n const has = _viewportHasClass(classNameOverflowVisible, dataValueHostOverflowVisible);\r\n has && _viewportAddRemoveClass(classNameOverflowVisible, dataValueHostOverflowVisible);\r\n\r\n const contentScroll = scrollSize(_content);\r\n const viewportScroll = scrollSize(_viewport);\r\n const fractional = fractionalSize(_viewport);\r\n\r\n has && _viewportAddRemoveClass(classNameOverflowVisible, dataValueHostOverflowVisible, true);\r\n return {\r\n w: viewportScroll.w + contentScroll.w + fractional.w,\r\n h: viewportScroll.h + contentScroll.h + fractional.h,\r\n };\r\n }\r\n );\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 const [, contentSizeChanged] = updateContentSizeCache();\r\n // if contentChangedTroughEvent is true its already debounced\r\n const updateFn = contentChangedTroughEvent\r\n ? structureSetupUpdate\r\n : structureSetupUpdateWithDebouncedAdaptiveUpdateHints;\r\n\r\n if (contentSizeChanged) {\r\n updateFn({\r\n _contentMutation: true,\r\n });\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 if (!_viewportIsTarget) {\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 =\r\n !_viewportIsTarget &&\r\n 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 });\r\n\r\n const viewportIsTargetResizeObserver =\r\n _viewportIsTarget &&\r\n new ResizeObserverConstructor!(onSizeChanged.bind(0, { _sizeChanged: true }));\r\n\r\n viewportIsTargetResizeObserver && viewportIsTargetResizeObserver.observe(_host);\r\n updateViewportAttrsFromHost();\r\n\r\n return [\r\n (checkOption) => {\r\n const [ignoreMutation] = checkOption('updating.ignoreMutation');\r\n const [attributes, attributesChanged] = checkOption('updating.attributes');\r\n const [elementEvents, elementEventsChanged] = checkOption | null>(\r\n 'updating.elementEvents'\r\n );\r\n const [debounceValue, debounceChanged] = checkOption | number | null>(\r\n 'updating.debounce'\r\n );\r\n const updateContentMutationObserver = elementEventsChanged || attributesChanged;\r\n const ignoreMutationFromOptions = (mutation: MutationRecord) =>\r\n isFunction(ignoreMutation) && ignoreMutation(mutation);\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 _nestedTargetSelector: hostSelector,\r\n _ignoreContentChange: (mutation, isNestedTarget) => {\r\n const { target, attributeName } = mutation;\r\n const ignore =\r\n !isNestedTarget && attributeName\r\n ? liesBetween(target as Element, hostSelector, viewportSelector)\r\n : false;\r\n return ignore || !!ignoreMutationFromOptions(mutation);\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 && destroySizeObserver();\r\n viewportIsTargetResizeObserver && viewportIsTargetResizeObserver.disconnect();\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 } from 'support';\r\nimport type { OSOptions, ReadonlyOSOptions } from 'options';\r\nimport type { Setup } from 'setups';\r\nimport type { OSTarget, PartialOptions, StyleObject, OverflowStyle } from 'typings';\r\n\r\nexport interface StructureSetupState {\r\n _padding: TRBL;\r\n _paddingAbsolute: boolean;\r\n _viewportPaddingStyle: StyleObject;\r\n _overflowAmount: XY;\r\n _overflowStyle: XY;\r\n _hasOverflow: XY;\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 x: 0,\r\n y: 0,\r\n },\r\n _overflowStyle: {\r\n x: 'hidden',\r\n y: 'hidden',\r\n },\r\n _hasOverflow: {\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: any, ...args: any[]) => any;\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 { OSOptions, OverflowBehavior, VisibilityBehavior, AutoHideBehavior } 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 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 ignoreMutation: [oTypes.function, oTypes.null], // function || 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 /*\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 */\r\n nativeScrollbarsOverlaid: {\r\n show: booleanAllowedValues, // true || false\r\n initialize: booleanAllowedValues, // true || false\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 } 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 overflowStyleChanged: 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 OSEventListenersNameArgsMap {\r\n initialized: undefined;\r\n initializationWithdrawn: undefined;\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, OverflowStyle } from 'typings';\r\nimport {\r\n assignDeep,\r\n isEmptyObject,\r\n each,\r\n isFunction,\r\n keys,\r\n isHTMLElement,\r\n XY,\r\n TRBL,\r\n} from 'support';\r\nimport { createStructureSetup, createScrollbarsSetup } from 'setups';\r\nimport { getOptionsDiff, OSOptions, ReadonlyOSOptions } from 'options';\r\nimport { DefaultInitializationStrategy, getEnvironment, InitializationStrategy } 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 plugin(osPlugin: OSPlugin | OSPlugin[]): void;\r\n env(): OverlayScrollbarsEnv;\r\n}\r\n\r\nexport interface OverlayScrollbarsEnv {\r\n scrollbarSize: XY;\r\n scrollbarIsOverlaid: XY;\r\n scrollbarStyling: boolean;\r\n rtlScrollBehavior: { n: boolean; i: boolean };\r\n flexboxGlue: boolean;\r\n cssCustomProperties: boolean;\r\n defaultInitializationStrategy: DefaultInitializationStrategy;\r\n defaultDefaultOptions: OSOptions;\r\n\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\nexport interface OverlayScrollbarsState {\r\n padding: TRBL;\r\n paddingAbsolute: boolean;\r\n overflowAmount: XY;\r\n overflowStyle: XY;\r\n hasOverflow: XY;\r\n}\r\n\r\nexport interface OverlayScrollbarsElements {\r\n target: HTMLElement;\r\n host: HTMLElement;\r\n padding: HTMLElement;\r\n viewport: HTMLElement;\r\n content: HTMLElement;\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(): OverlayScrollbarsState;\r\n elements(): OverlayScrollbarsElements;\r\n\r\n on: AddOSEventListener;\r\n off: RemoveOSEventListener;\r\n}\r\n\r\n/**\r\n * Notes:\r\n * Height intrinsic detection use \"content: true\" init strategy - or open ticket for custom height intrinsic observer\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 const removeEnvListener = addEnvListener(update.bind(0, {}, true));\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 _overflowStyleChanged,\r\n _contentMutation,\r\n _hostMutation,\r\n } = updateHints;\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 overflowStyleChanged: _overflowStyleChanged,\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 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 assignDeep({}, currentOptions);\r\n },\r\n on: addEvent,\r\n off: removeEvent,\r\n state() {\r\n const { _overflowAmount, _overflowStyle, _hasOverflow, _padding, _paddingAbsolute } =\r\n structureState();\r\n return assignDeep(\r\n {},\r\n {\r\n overflowAmount: _overflowAmount,\r\n overflowStyle: _overflowStyle,\r\n hasOverflow: _hasOverflow,\r\n padding: _padding,\r\n paddingAbsolute: _paddingAbsolute,\r\n }\r\n );\r\n },\r\n elements() {\r\n const { _target, _host, _padding, _viewport, _content } = structureState._elements;\r\n return assignDeep(\r\n {},\r\n {\r\n target: _target,\r\n host: _host,\r\n padding: _padding || _viewport,\r\n viewport: _viewport,\r\n content: _content || _viewport,\r\n }\r\n );\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.plugin = addPlugin;\r\nOverlayScrollbars.env = () => {\r\n const {\r\n _nativeScrollbarSize,\r\n _nativeScrollbarIsOverlaid,\r\n _nativeScrollbarStyling,\r\n _rtlScrollBehavior,\r\n _flexboxGlue,\r\n _cssCustomProperties,\r\n _defaultInitializationStrategy,\r\n _defaultDefaultOptions,\r\n _getInitializationStrategy,\r\n _setInitializationStrategy,\r\n _getDefaultOptions,\r\n _setDefaultOptions,\r\n } = getEnvironment();\r\n return assignDeep(\r\n {},\r\n {\r\n scrollbarSize: _nativeScrollbarSize,\r\n scrollbarIsOverlaid: _nativeScrollbarIsOverlaid,\r\n scrollbarStyling: _nativeScrollbarStyling,\r\n rtlScrollBehavior: _rtlScrollBehavior,\r\n flexboxGlue: _flexboxGlue,\r\n cssCustomProperties: _cssCustomProperties,\r\n defaultInitializationStrategy: _defaultInitializationStrategy,\r\n defaultDefaultOptions: _defaultDefaultOptions,\r\n\r\n getInitializationStrategy: _getInitializationStrategy,\r\n setInitializationStrategy: _setInitializationStrategy,\r\n getDefaultOptions: _getDefaultOptions,\r\n setDefaultOptions: _setDefaultOptions,\r\n }\r\n );\r\n};\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","attrClass","add","currValues","currValuesSet","split","join","trim","hasAttrClass","has","removeAttr","removeAttribute","scrollLeft","scrollTop","elmPrototype","find","selector","rootElm","document","querySelectorAll","findFirst","querySelector","is","matches","msMatchesSelector","contents","childNodes","parent","parentElement","closest","closestFn","liesBetween","highBoundarySelector","deepBoundarySelector","closestHighBoundaryElm","closestDeepBoundaryElm","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","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","hasClass","contains","removeClass","remove","addClass","bind","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","dataAttributeHost","dataAttributeHostOverflowX","dataAttributeHostOverflowY","dataValueHostOverflowVisible","dataValueHostViewportScrollbarStyling","classNamePadding","classNameViewport","classNameViewportArrange","classNameContent","classNameViewportScrollbarStyling","classNameOverflowVisible","classNameSizeObserver","classNameSizeObserverAppear","classNameSizeObserverListener","classNameSizeObserverListenerScroll","classNameSizeObserverListenerItem","classNameSizeObserverListenerItemFinal","classNameTrinsicObserver","classNameScrollbar","classNameScrollbarHorizontal","classNameScrollbarVertical","classNameScrollbarTrack","classNameScrollbarHandle","stringify","JSON","_","Error","defaultOptions","paddingAbsolute","updating","elementEvents","attributes","ignoreMutation","overflow","nativeScrollbarsOverlaid","show","initialize","scrollbars","visibility","autoHide","autoHideDelay","dragScroll","clickScroll","touch","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","updateNativeScrollbarSizeCache","getNativeScrollbarSizeCache","nativeScrollbarSize","nativeScrollbarIsOverlaid","initializationStrategy","defaultDefaultOptions","env","_nativeScrollbarSize","_nativeScrollbarIsOverlaid","_nativeScrollbarStyling","_cssCustomProperties","_rtlScrollBehavior","_flexboxGlue","_addListener","_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","dynamicCreationFromStrategy","takeInitializationValue","addDataAttrHost","createStructureSetupElements","hostInitializationStrategy","viewportInitializationStrategy","paddingInitializationStrategy","contentInitializationStrategy","targetIsElm","targetStructureInitialization","targetElement","isTextarea","isBody","ownerDocument","bodyElm","wnd","defaultView","singleElmSupport","potentialViewportElement","viewport","potentiallySingleElm","viewportIsTarget","viewportElement","evaluatedTargetObj","_target","host","padding","content","_viewportArrange","_windowElm","_documentElm","_htmlElm","_bodyElm","_isTextarea","_isBody","_targetIsElm","_viewportIsTarget","_viewportHasClass","attributeClassName","_viewportAddRemoveClass","generatedElements","elementIsGenerated","destroyFns","isTextareaHostGenerated","targetContents","contentSlot","removeHostDataAttr","removePaddingClass","removeViewportClass","removeContentClass","createTrinsicUpdate","structureSetupElements","getState","updateHints","_heightIntrinsic","_heightIntrinsicChanged","heightIntrinsicChanged","height","_sizeChanged","_contentMutation","createPaddingUpdate","setState","_isSingleElm","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","strVisible","overlaidScrollbarsHideOffset","whCacheOptions","xyCacheOptions","getOverflowAmount","viewportScrollSize","viewportClientSize","sizeFraction","tollerance","amount","conditionalClass","overflowIsVisible","overflowBehavior","createOverflowUpdate","doViewportArrange","updateSizeFraction","getCurrentSizeFraction","updateViewportScrollSizeCache","getCurrentViewportScrollSizeCache","updateOverflowAmountCache","getCurrentOverflowAmountCache","updateOverflowStyleCache","fixFlexboxGlue","viewportOverflowState","heightIntrinsic","_overflowScroll","_scrollbarsHideOffset","hostClientSize","isContentBox","subtractXScrollbar","getViewportOverflowState","showNativeOverlaidScrollbars","viewportStyleObj","arrangeHideOffset","getStatePerAxis","styleKey","isOverlaid","overflowStyle","objectPrefferedOverflowStyle","overflowScroll","nonScrollbarStylingHideOffset","scrollbarsHideOffset","scrollbarsHideOffsetArrange","xOverflowStyle","xOverflowScroll","xScrollbarsHideOffset","xScrollbarsHideOffsetArrange","yOverflowStyle","yOverflowScroll","yScrollbarsHideOffset","yScrollbarsHideOffsetArrange","_overflowStyle","_scrollbarsHideOffsetArrange","setViewportOverflowState","hasOverflow","overflowOption","setAxisOverflowStyle","behavior","hasOverflowAxis","overflowVisible","overflowVisibleBehavior","visibleBehaviorX","visibleBehaviorY","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","overflowXVisible","overflowYVisible","sizeFractionCache","viewportScrollSizeCache","overflowAmuntCache","preMeasureViewportOverflowState","redoViewportArrange","undoViewportArrangeOverflowState","sizeFractionChanged","viewportScrollSizeChanged","viewportclientSize","arrangedViewportScrollSize","arrangedViewportClientSize","overflowAmount","overflowAmountChanged","removeClipping","viewportArranged","overflowStyleChanged","_overflowAmount","_hasOverflow","_overflowStyleChanged","_overflowAmountChanged","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","intersectionObserverInstance","entries","root","onSizeChanged","newSize","createEventContentChange","eventContentChange","map","destroyed","destroy","updateElements","getElements","eventElmList","elements","entry","entryEventNames","entryOff","delete","WeakMap","createDOMObserver","isContentObserver","isConnected","_attributes","_styleChangingAttributes","_eventContentChange","_nestedTargetSelector","_ignoreTargetChange","_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","hostSelector","viewportSelector","viewportAttrsFromTarget","baseStyleChangingAttrsTextarea","baseStyleChangingAttrs","createStructureSetupObservers","structureSetupUpdate","debounceTimeout","debounceMaxDelay","contentMutationObserver","contentScroll","viewportScroll","fractional","updateContentSizeCache","contentMutationObserverAttr","structureSetupUpdateWithDebouncedAdaptiveUpdateHints","prev","prevObj","currObj","updateViewportAttrsFromHost","attribute","hostAttr","onTrinsicChanged","heightIntrinsicCache","updateFn","directionChanged","onContentMutation","contentChangedTroughEvent","contentSizeChanged","onHostMutation","destroyTrinsicObserver","destroySizeObserver","destroyHostMutationObserver","viewportIsTargetResizeObserver","attributesChanged","elementEventsChanged","debounceValue","debounceChanged","updateContentMutationObserver","ignoreMutationFromOptions","ignore","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","overflowAllowedValues","scrollbarsVisibilityAllowedValues","scrollbarsAutoHideAllowedValues","function","optionsValidationPluginName","targets","targetInstanceMap","addInstance","osInstance","removeInstance","getInstance","createOSEventListenerHub","OverlayScrollbars","eventListeners","addEnvListener","plugins","instanceTarget","potentialInstance","optionsValidationPlugin","validateOptions","opts","validate","currentOptions","structureState","destroyStructure","updateScrollbars","destroyScrollbars","removeEnvListener","sizeChanged","hostMutation","instance","pluginName","pluginInstance","scrollbarIsOverlaid","scrollbarStyling","flexboxGlue","cssCustomProperties","defaultInitializationStrategy","getInitializationStrategy","setInitializationStrategy","getDefaultOptions","setDefaultOptions"],"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","../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 { from } from 'support/utils/array';\r\nimport { 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 | false | null | undefined,\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 | false | null | undefined, attrName: string): string | null;\r\nexport function attr(\r\n elm: HTMLElement | false | null | undefined,\r\n attrName: string,\r\n value: string\r\n): void;\r\nexport function attr(\r\n elm: HTMLElement | false | null | undefined,\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\nexport const attrClass = (\r\n elm: HTMLElement | false | null | undefined,\r\n attrName: string,\r\n value: string,\r\n add?: boolean\r\n) => {\r\n const currValues = attr(elm, attrName) || '';\r\n const currValuesSet = new Set(currValues.split(' '));\r\n currValuesSet[add ? 'add' : 'delete'](value);\r\n\r\n attr(elm, attrName, from(currValuesSet).join(' ').trim());\r\n};\r\n\r\nexport const hasAttrClass = (\r\n elm: HTMLElement | false | null | undefined,\r\n attrName: string,\r\n value: string\r\n) => {\r\n const currValues = attr(elm, attrName) || '';\r\n const currValuesSet = new Set(currValues.split(' '));\r\n return currValuesSet.has(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 | false | null | undefined, 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 | false | null | undefined): number;\r\nexport function scrollLeft(elm: HTMLElement | false | null | undefined, value: number): void;\r\nexport function scrollLeft(\r\n elm: HTMLElement | false | null | undefined,\r\n value?: number\r\n): 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 | false | null | undefined): number;\r\nexport function scrollTop(elm: HTMLElement | false | null | undefined, value: number): void;\r\nexport function scrollTop(\r\n elm: HTMLElement | false | null | undefined,\r\n value?: number\r\n): 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 | false | null | undefined): string;\r\nexport function val(elm: HTMLInputElement | false | null | undefined, value: string): void;\r\nexport function val(\r\n elm: HTMLInputElement | false | null | undefined,\r\n value?: string\r\n): 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 | false | null | undefined,\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 && className && 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 = (\r\n elm: Element | false | null | undefined,\r\n className: string | false | null | undefined\r\n): boolean => 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 = (\r\n elm: Element | false | null | undefined,\r\n className: string | false | null | undefined\r\n): 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 | false | null | undefined\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 | false | 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 | false | 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 | false | 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 | false | 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 dataAttributeHost = 'data-overlayscrollbars';\r\nexport const dataAttributeHostOverflowX = `${dataAttributeHost}-overflow-x`;\r\nexport const dataAttributeHostOverflowY = `${dataAttributeHost}-overflow-y`;\r\nexport const dataValueHostOverflowVisible = 'overflowVisible';\r\nexport const dataValueHostViewportScrollbarStyling = 'viewportStyled';\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\nexport const classNameOverflowVisible = `os-overflow-visible`;\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 =\r\n | 'hidden'\r\n | 'scroll'\r\n | 'visible'\r\n | 'visible-hidden'\r\n | 'visible-scroll';\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 paddingAbsolute: boolean;\r\n updating: {\r\n elementEvents: Array<[elementSelector: string, eventNames: string]> | null;\r\n attributes: string[] | null;\r\n debounce: [timeout: number, maxWait: number] | number | null; // (if tuple: [timeout: 0, maxWait: 33], if number: [timeout: number, maxWait: false]) debounce for content Changes\r\n ignoreMutation: ((mutation: MutationRecord) => any) | 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 nativeScrollbarsOverlaid: {\r\n show: boolean;\r\n initialize: boolean;\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 debounce: [0, 33], // number || number array || null\r\n attributes: null, // string array || null\r\n ignoreMutation: null, // () => any || 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 nativeScrollbarsOverlaid: {\r\n show: false, // true || false\r\n initialize: false, // true || false\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 /*\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 */\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 equalBCRWH,\r\n getBoundingClientRect,\r\n assignDeep,\r\n cssProperty,\r\n createCache,\r\n equalXY,\r\n createEventListenerHub,\r\n EventListener,\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 interface EnvironmentListenersNameArgsMap {\r\n _: undefined;\r\n}\r\n\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: EventListener): () => 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 [addEvent, , triggerEvent] = createEventListenerHub();\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) => addEvent('_', listener),\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 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 triggerEvent('_');\r\n }\r\n }\r\n\r\n size = sizeNew;\r\n dpr = dprNew;\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 hasClass,\r\n push,\r\n runEach,\r\n insertBefore,\r\n attr,\r\n isBoolean,\r\n isFunction,\r\n keys,\r\n removeAttr,\r\n attrClass,\r\n hasAttrClass,\r\n ResizeObserverConstructor,\r\n} from 'support';\r\nimport {\r\n dataAttributeHost,\r\n dataAttributeHostOverflowX,\r\n dataAttributeHostOverflowY,\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 _viewportIsTarget: boolean;\r\n _viewportHasClass: (className: string, attributeClassName: string) => boolean;\r\n _viewportAddRemoveClass: (className: string, attributeClassName: string, add?: boolean) => void;\r\n}\r\n\r\nlet contentArrangeCounter = 0;\r\n\r\nconst unwrap = (elm: HTMLElement | false | null | undefined) => {\r\n appendChildren(parent(elm), contents(elm));\r\n removeElements(elm);\r\n};\r\n\r\nconst createUniqueViewportArrangeElement = (): HTMLStyleElement | false => {\r\n const { _nativeScrollbarStyling, _nativeScrollbarIsOverlaid, _cssCustomProperties } =\r\n getEnvironment();\r\n /* istanbul ignore next */\r\n const create =\r\n !_cssCustomProperties &&\r\n !_nativeScrollbarStyling &&\r\n (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);\r\n const result = create ? document.createElement('style') : false;\r\n\r\n if (result) {\r\n attr(result, 'id', `${classNameViewportArrange}-${contentArrangeCounter}`);\r\n contentArrangeCounter++;\r\n }\r\n\r\n return result;\r\n};\r\n\r\nconst staticCreationFromStrategy = (\r\n target: OSTargetElement,\r\n initializationValue?: HTMLElement | undefined,\r\n strategy?: StructureInitializationStrategyStaticElement\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();\r\n};\r\n\r\nconst dynamicCreationFromStrategy = (\r\n target: OSTargetElement,\r\n initializationValue: HTMLElement | boolean | undefined,\r\n strategy: StructureInitializationStrategyDynamicElement\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() : result;\r\n};\r\n\r\nconst addDataAttrHost = (elm: HTMLElement, value?: string | false | null | undefined) => {\r\n attr(elm, dataAttributeHost, value || '');\r\n return removeAttr.bind(0, elm, dataAttributeHost);\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 singleElmSupport = !!ResizeObserverConstructor && _nativeScrollbarStyling;\r\n const potentialViewportElement = staticCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.viewport,\r\n viewportInitializationStrategy\r\n );\r\n const potentiallySingleElm = potentialViewportElement === targetElement;\r\n const viewportIsTarget = singleElmSupport && potentiallySingleElm;\r\n const viewportElement =\r\n potentiallySingleElm && !viewportIsTarget\r\n ? staticCreationFromStrategy(targetElement)\r\n : potentialViewportElement;\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 )\r\n : (targetElement as HTMLElement),\r\n _viewport: viewportElement,\r\n _padding: dynamicCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.padding,\r\n paddingInitializationStrategy\r\n ),\r\n _content: dynamicCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.content,\r\n contentInitializationStrategy\r\n ),\r\n _viewportArrange: !viewportIsTarget && 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 _viewportIsTarget: viewportIsTarget,\r\n _viewportHasClass: (className: string, attributeClassName: string) =>\r\n viewportIsTarget\r\n ? hasAttrClass(viewportElement, dataAttributeHost, attributeClassName)\r\n : hasClass(viewportElement, className),\r\n _viewportAddRemoveClass: (className: string, attributeClassName: string, add?: boolean) =>\r\n viewportIsTarget\r\n ? attrClass(viewportElement, dataAttributeHost, attributeClassName, add)\r\n : (add ? addClass : removeClass)(viewportElement, className),\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 const removeHostDataAttr = addDataAttrHost(_host, viewportIsTarget ? 'viewport' : 'host');\r\n const removePaddingClass = addClass(_padding, classNamePadding);\r\n const removeViewportClass = addClass(_viewport, !viewportIsTarget && classNameViewport);\r\n const removeContentClass = addClass(_content, classNameContent);\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, !viewportIsTarget && _viewport);\r\n appendChildren(_viewport, _content);\r\n\r\n push(destroyFns, () => {\r\n removeHostDataAttr();\r\n removeAttr(_viewport, dataAttributeHostOverflowX);\r\n removeAttr(_viewport, dataAttributeHostOverflowY);\r\n\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 removePaddingClass();\r\n removeViewportClass();\r\n removeContentClass();\r\n });\r\n\r\n if (_nativeScrollbarStyling && !viewportIsTarget) {\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 { 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 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 { _flexboxGlue } = getEnvironment();\r\n const { _heightIntrinsic } = getState();\r\n const { _heightIntrinsicChanged } = updateHints;\r\n const heightIntrinsicChanged = (_content || !_flexboxGlue) && _heightIntrinsicChanged;\r\n\r\n if (heightIntrinsicChanged) {\r\n style(_content, {\r\n height: _heightIntrinsic ? '' : '100%',\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, _viewportIsTarget: _isSingleElm } = 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 =\r\n !_isSingleElm && (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 attrClass,\r\n} from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport {\r\n classNameViewportArrange,\r\n classNameViewportScrollbarStyling,\r\n classNameOverflowVisible,\r\n dataAttributeHost,\r\n dataAttributeHostOverflowX,\r\n dataAttributeHostOverflowY,\r\n dataValueHostViewportScrollbarStyling,\r\n dataValueHostOverflowVisible,\r\n} from 'classnames';\r\nimport type { StyleObject, OverflowStyle } from 'typings';\r\nimport type { OverflowBehavior } from 'options';\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 _overflowStyle: 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 strVisible = 'visible';\r\nconst strHidden = 'hidden';\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: strHidden, y: strHidden } as XY,\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 % 1 !== 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\nconst conditionalClass = (\r\n elm: Element | false | null | undefined,\r\n classNames: string,\r\n add: boolean\r\n) => (add ? addClass(elm, classNames) : removeClass(elm, classNames));\r\n\r\nconst overflowIsVisible = (overflowBehavior: string) => overflowBehavior.indexOf(strVisible) === 0;\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 {\r\n _host,\r\n _padding,\r\n _viewport,\r\n _viewportArrange,\r\n _viewportIsTarget,\r\n _viewportAddRemoveClass,\r\n } = 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 !_viewportIsTarget &&\r\n !_nativeScrollbarStyling &&\r\n (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);\r\n\r\n const [updateSizeFraction, getCurrentSizeFraction] = createCache>(\r\n whCacheOptions,\r\n fractionalSize.bind(0, _viewport)\r\n );\r\n\r\n const [updateViewportScrollSizeCache, getCurrentViewportScrollSizeCache] = createCache<\r\n WH\r\n >(whCacheOptions, scrollSize.bind(0, _viewport));\r\n\r\n const [updateOverflowAmountCache, getCurrentOverflowAmountCache] =\r\n createCache>(whCacheOptions);\r\n\r\n const [updateOverflowStyleCache] = 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: 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 arrangeHideOffset =\r\n !_nativeScrollbarStyling && !showNativeOverlaidScrollbars ? overlaidScrollbarsHideOffset : 0;\r\n const getStatePerAxis = (\r\n styleKey: string,\r\n isOverlaid: boolean,\r\n nativeScrollbarSize: number\r\n ) => {\r\n const overflowStyle = style(_viewport, styleKey);\r\n // can't do something like \"viewportStyleObj && viewportStyleObj[styleKey] || overflowStyle\" here!\r\n const objectPrefferedOverflowStyle = viewportStyleObj\r\n ? viewportStyleObj[styleKey]\r\n : overflowStyle;\r\n const overflowScroll = objectPrefferedOverflowStyle === 'scroll';\r\n const nonScrollbarStylingHideOffset = isOverlaid ? arrangeHideOffset : nativeScrollbarSize;\r\n const scrollbarsHideOffset =\r\n overflowScroll && !_nativeScrollbarStyling ? nonScrollbarStylingHideOffset : 0;\r\n const scrollbarsHideOffsetArrange = isOverlaid && !!arrangeHideOffset;\r\n\r\n return [overflowStyle, overflowScroll, scrollbarsHideOffset, scrollbarsHideOffsetArrange] as [\r\n overflowStyle: OverflowStyle,\r\n overflowScroll: boolean,\r\n scrollbarsHideOffset: number,\r\n scrollbarsHideOffsetArrange: boolean\r\n ];\r\n };\r\n\r\n const [xOverflowStyle, xOverflowScroll, xScrollbarsHideOffset, xScrollbarsHideOffsetArrange] =\r\n getStatePerAxis('overflowX', _nativeScrollbarIsOverlaid.x, _nativeScrollbarSize.x);\r\n const [yOverflowStyle, yOverflowScroll, yScrollbarsHideOffset, yScrollbarsHideOffsetArrange] =\r\n getStatePerAxis('overflowY', _nativeScrollbarIsOverlaid.y, _nativeScrollbarSize.y);\r\n\r\n return {\r\n _overflowStyle: {\r\n x: xOverflowStyle,\r\n y: yOverflowStyle,\r\n },\r\n _overflowScroll: {\r\n x: xOverflowScroll,\r\n y: yOverflowScroll,\r\n },\r\n _scrollbarsHideOffset: {\r\n x: xScrollbarsHideOffset,\r\n y: yScrollbarsHideOffset,\r\n },\r\n _scrollbarsHideOffsetArrange: {\r\n x: xScrollbarsHideOffsetArrange,\r\n y: yScrollbarsHideOffsetArrange,\r\n },\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 hasOverflow: XY,\r\n overflowOption: XY,\r\n viewportStyleObj: StyleObject\r\n ): ViewportOverflowState => {\r\n const setAxisOverflowStyle = (behavior: OverflowBehavior, hasOverflowAxis: boolean) => {\r\n const overflowVisible = overflowIsVisible(behavior);\r\n const overflowVisibleBehavior =\r\n (hasOverflowAxis && overflowVisible && behavior.replace(`${strVisible}-`, '')) || '';\r\n return [\r\n hasOverflowAxis && !overflowVisible ? behavior : '',\r\n overflowIsVisible(overflowVisibleBehavior) ? 'hidden' : overflowVisibleBehavior,\r\n ];\r\n };\r\n\r\n const [overflowX, visibleBehaviorX] = setAxisOverflowStyle(overflowOption.x, hasOverflow.x);\r\n const [overflowY, visibleBehaviorY] = setAxisOverflowStyle(overflowOption.y, hasOverflow.y);\r\n\r\n viewportStyleObj.overflowX = visibleBehaviorX && overflowY ? visibleBehaviorX : overflowX;\r\n viewportStyleObj.overflowY = visibleBehaviorY && overflowX ? visibleBehaviorY : overflowY;\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\r\n const showNativeOverlaidScrollbars =\r\n showNativeOverlaidScrollbarsOption &&\r\n _nativeScrollbarIsOverlaid.x &&\r\n _nativeScrollbarIsOverlaid.y;\r\n const adjustFlexboxGlue =\r\n !_viewportIsTarget &&\r\n !_flexboxGlue &&\r\n (_sizeChanged ||\r\n _contentMutation ||\r\n _hostMutation ||\r\n showNativeOverlaidScrollbarsChanged ||\r\n _heightIntrinsicChanged);\r\n const overflowXVisible = overflowIsVisible(overflow.x);\r\n const overflowYVisible = overflowIsVisible(overflow.y);\r\n const overflowVisible = overflowXVisible || overflowYVisible;\r\n\r\n let sizeFractionCache = getCurrentSizeFraction(force);\r\n let viewportScrollSizeCache = getCurrentViewportScrollSizeCache(force);\r\n let overflowAmuntCache = getCurrentOverflowAmountCache(force);\r\n\r\n let preMeasureViewportOverflowState: ViewportOverflowState | undefined;\r\n\r\n if (showNativeOverlaidScrollbarsChanged && _nativeScrollbarStyling) {\r\n _viewportAddRemoveClass(\r\n classNameViewportScrollbarStyling,\r\n dataValueHostViewportScrollbarStyling,\r\n !showNativeOverlaidScrollbars\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 if (overflowVisible) {\r\n _viewportAddRemoveClass(classNameOverflowVisible, dataValueHostOverflowVisible, false);\r\n }\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 viewportclientSize = clientSize(_viewport);\r\n let arrangedViewportScrollSize = viewportScrollSize;\r\n let arrangedViewportClientSize = viewportclientSize;\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, viewportclientSize.w - viewportScrollSize.w),\r\n h: arrangedViewportClientSize.h + max(0, viewportclientSize.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 const hasOverflow = {\r\n x: overflowAmount.w > 0,\r\n y: overflowAmount.h > 0,\r\n };\r\n const removeClipping =\r\n (overflowXVisible && overflowYVisible && (hasOverflow.x || hasOverflow.y)) ||\r\n (overflowXVisible && hasOverflow.x && !hasOverflow.y) ||\r\n (overflowYVisible && hasOverflow.y && !hasOverflow.x);\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 const viewportOverflowState = setViewportOverflowState(\r\n showNativeOverlaidScrollbars,\r\n hasOverflow,\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\r\n if (!_viewportIsTarget) {\r\n hideNativeScrollbars(\r\n viewportOverflowState,\r\n _directionIsRTL,\r\n viewportArranged,\r\n viewportStyle\r\n );\r\n }\r\n\r\n if (adjustFlexboxGlue) {\r\n fixFlexboxGlue(viewportOverflowState, _heightIntrinsic);\r\n }\r\n\r\n if (_viewportIsTarget) {\r\n attr(_host, dataAttributeHostOverflowX, viewportStyle.overflowX as string);\r\n attr(_host, dataAttributeHostOverflowY, viewportStyle.overflowY as string);\r\n } else {\r\n style(_viewport, viewportStyle);\r\n }\r\n }\r\n\r\n attrClass(_host, dataAttributeHost, dataValueHostOverflowVisible, removeClipping);\r\n conditionalClass(_padding, classNameOverflowVisible, removeClipping);\r\n !_viewportIsTarget && conditionalClass(_viewport, classNameOverflowVisible, overflowVisible);\r\n\r\n const [overflowStyle, overflowStyleChanged] = updateOverflowStyleCache(\r\n getViewportOverflowState(showNativeOverlaidScrollbars)._overflowStyle\r\n );\r\n\r\n setState({\r\n _overflowStyle: overflowStyle,\r\n _overflowAmount: {\r\n x: overflowAmount.w,\r\n y: overflowAmount.h,\r\n },\r\n _hasOverflow: hasOverflow,\r\n });\r\n\r\n return {\r\n _overflowStyleChanged: overflowStyleChanged,\r\n _overflowAmountChanged: overflowAmountChanged,\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 _overflowAmountChanged: boolean;\r\n _overflowStyleChanged: 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 _overflowAmountChanged: false,\r\n _overflowStyleChanged: 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 * A function which can ignore a changed attribute if it returns true.\r\n * for DOMTargetObserver this applies to the changes to the observed target\r\n * for DOMContentObserver this applies to changes to nested targets -> nested targets are elements which match the \"_nestedTargetSelector\" selector\r\n */\r\n _ignoreTargetChange?: DOMObserverIgnoreTargetChange;\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}\r\n\r\ntype DOMTargetObserverOptions = DOMObserverOptionsBase;\r\n\r\ntype ContentChangeArrayItem = [selector?: string, eventNames?: 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 _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 = _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 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 liesBetween,\r\n scrollSize,\r\n equalWH,\r\n createCache,\r\n WH,\r\n fractionalSize,\r\n isFunction,\r\n ResizeObserverConstructor,\r\n} from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport {\r\n dataAttributeHost,\r\n dataValueHostOverflowVisible,\r\n classNameViewport,\r\n classNameOverflowVisible,\r\n} from 'classnames';\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\nconst hostSelector = `[${dataAttributeHost}]`;\r\n\r\n// TODO: observer textarea attrs if textarea\r\n\r\nconst viewportSelector = `.${classNameViewport}`;\r\nconst viewportAttrsFromTarget = ['tabindex'];\r\nconst baseStyleChangingAttrsTextarea = ['wrap', 'cols', 'rows'];\r\nconst baseStyleChangingAttrs = ['id', 'class', 'style', 'open'];\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 {\r\n _host,\r\n _viewport,\r\n _content,\r\n _isTextarea,\r\n _viewportIsTarget,\r\n _viewportHasClass,\r\n _viewportAddRemoveClass,\r\n } = structureSetupElements;\r\n const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment();\r\n\r\n const [updateContentSizeCache] = createCache>(\r\n {\r\n _equal: equalWH,\r\n _initialValue: { w: 0, h: 0 },\r\n },\r\n () => {\r\n const has = _viewportHasClass(classNameOverflowVisible, dataValueHostOverflowVisible);\r\n has && _viewportAddRemoveClass(classNameOverflowVisible, dataValueHostOverflowVisible);\r\n\r\n const contentScroll = scrollSize(_content);\r\n const viewportScroll = scrollSize(_viewport);\r\n const fractional = fractionalSize(_viewport);\r\n\r\n has && _viewportAddRemoveClass(classNameOverflowVisible, dataValueHostOverflowVisible, true);\r\n return {\r\n w: viewportScroll.w + contentScroll.w + fractional.w,\r\n h: viewportScroll.h + contentScroll.h + fractional.h,\r\n };\r\n }\r\n );\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 const [, contentSizeChanged] = updateContentSizeCache();\r\n // if contentChangedTroughEvent is true its already debounced\r\n const updateFn = contentChangedTroughEvent\r\n ? structureSetupUpdate\r\n : structureSetupUpdateWithDebouncedAdaptiveUpdateHints;\r\n\r\n if (contentSizeChanged) {\r\n updateFn({\r\n _contentMutation: true,\r\n });\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 if (!_viewportIsTarget) {\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 =\r\n !_viewportIsTarget &&\r\n 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 });\r\n\r\n const viewportIsTargetResizeObserver =\r\n _viewportIsTarget &&\r\n new ResizeObserverConstructor!(onSizeChanged.bind(0, { _sizeChanged: true }));\r\n\r\n viewportIsTargetResizeObserver && viewportIsTargetResizeObserver.observe(_host);\r\n updateViewportAttrsFromHost();\r\n\r\n return [\r\n (checkOption) => {\r\n const [ignoreMutation] = checkOption('updating.ignoreMutation');\r\n const [attributes, attributesChanged] = checkOption('updating.attributes');\r\n const [elementEvents, elementEventsChanged] = checkOption | null>(\r\n 'updating.elementEvents'\r\n );\r\n const [debounceValue, debounceChanged] = checkOption | number | null>(\r\n 'updating.debounce'\r\n );\r\n const updateContentMutationObserver = elementEventsChanged || attributesChanged;\r\n const ignoreMutationFromOptions = (mutation: MutationRecord) =>\r\n isFunction(ignoreMutation) && ignoreMutation(mutation);\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 _nestedTargetSelector: hostSelector,\r\n _ignoreContentChange: (mutation, isNestedTarget) => {\r\n const { target, attributeName } = mutation;\r\n const ignore =\r\n !isNestedTarget && attributeName\r\n ? liesBetween(target as Element, hostSelector, viewportSelector)\r\n : false;\r\n return ignore || !!ignoreMutationFromOptions(mutation);\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 && destroySizeObserver();\r\n viewportIsTargetResizeObserver && viewportIsTargetResizeObserver.disconnect();\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 } from 'support';\r\nimport type { OSOptions, ReadonlyOSOptions } from 'options';\r\nimport type { Setup } from 'setups';\r\nimport type { OSTarget, PartialOptions, StyleObject, OverflowStyle } from 'typings';\r\n\r\nexport interface StructureSetupState {\r\n _padding: TRBL;\r\n _paddingAbsolute: boolean;\r\n _viewportPaddingStyle: StyleObject;\r\n _overflowAmount: XY;\r\n _overflowStyle: XY;\r\n _hasOverflow: XY;\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 x: 0,\r\n y: 0,\r\n },\r\n _overflowStyle: {\r\n x: 'hidden',\r\n y: 'hidden',\r\n },\r\n _hasOverflow: {\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","import { OSPlugin } from 'plugins';\r\nimport { OSOptions, OverflowBehavior, VisibilityBehavior, AutoHideBehavior } 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 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 ignoreMutation: [oTypes.function, oTypes.null], // function || 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 /*\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 */\r\n nativeScrollbarsOverlaid: {\r\n show: booleanAllowedValues, // true || false\r\n initialize: booleanAllowedValues, // true || false\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 } 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 overflowStyleChanged: 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 OSEventListenersNameArgsMap {\r\n initialized: undefined;\r\n initializationWithdrawn: undefined;\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, OverflowStyle } from 'typings';\r\nimport {\r\n assignDeep,\r\n isEmptyObject,\r\n each,\r\n isFunction,\r\n keys,\r\n isHTMLElement,\r\n XY,\r\n TRBL,\r\n} from 'support';\r\nimport { createStructureSetup, createScrollbarsSetup } from 'setups';\r\nimport { getOptionsDiff, OSOptions, ReadonlyOSOptions } from 'options';\r\nimport { DefaultInitializationStrategy, getEnvironment, InitializationStrategy } 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 plugin(osPlugin: OSPlugin | OSPlugin[]): void;\r\n env(): OverlayScrollbarsEnv;\r\n}\r\n\r\nexport interface OverlayScrollbarsEnv {\r\n scrollbarSize: XY;\r\n scrollbarIsOverlaid: XY;\r\n scrollbarStyling: boolean;\r\n rtlScrollBehavior: { n: boolean; i: boolean };\r\n flexboxGlue: boolean;\r\n cssCustomProperties: boolean;\r\n defaultInitializationStrategy: DefaultInitializationStrategy;\r\n defaultDefaultOptions: OSOptions;\r\n\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\nexport interface OverlayScrollbarsState {\r\n padding: TRBL;\r\n paddingAbsolute: boolean;\r\n overflowAmount: XY;\r\n overflowStyle: XY;\r\n hasOverflow: XY;\r\n}\r\n\r\nexport interface OverlayScrollbarsElements {\r\n target: HTMLElement;\r\n host: HTMLElement;\r\n padding: HTMLElement;\r\n viewport: HTMLElement;\r\n content: HTMLElement;\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(): OverlayScrollbarsState;\r\n elements(): OverlayScrollbarsElements;\r\n\r\n on: AddOSEventListener;\r\n off: RemoveOSEventListener;\r\n}\r\n\r\n/**\r\n * Notes:\r\n * Height intrinsic detection use \"content: true\" init strategy - or open ticket for custom height intrinsic observer\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 const removeEnvListener = addEnvListener(update.bind(0, {}, true));\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 _overflowStyleChanged,\r\n _contentMutation,\r\n _hostMutation,\r\n } = updateHints;\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 overflowStyleChanged: _overflowStyleChanged,\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 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 assignDeep({}, currentOptions);\r\n },\r\n on: addEvent,\r\n off: removeEvent,\r\n state() {\r\n const { _overflowAmount, _overflowStyle, _hasOverflow, _padding, _paddingAbsolute } =\r\n structureState();\r\n return assignDeep(\r\n {},\r\n {\r\n overflowAmount: _overflowAmount,\r\n overflowStyle: _overflowStyle,\r\n hasOverflow: _hasOverflow,\r\n padding: _padding,\r\n paddingAbsolute: _paddingAbsolute,\r\n }\r\n );\r\n },\r\n elements() {\r\n const { _target, _host, _padding, _viewport, _content } = structureState._elements;\r\n return assignDeep(\r\n {},\r\n {\r\n target: _target,\r\n host: _host,\r\n padding: _padding || _viewport,\r\n viewport: _viewport,\r\n content: _content || _viewport,\r\n }\r\n );\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.plugin = addPlugin;\r\nOverlayScrollbars.env = () => {\r\n const {\r\n _nativeScrollbarSize,\r\n _nativeScrollbarIsOverlaid,\r\n _nativeScrollbarStyling,\r\n _rtlScrollBehavior,\r\n _flexboxGlue,\r\n _cssCustomProperties,\r\n _defaultInitializationStrategy,\r\n _defaultDefaultOptions,\r\n _getInitializationStrategy,\r\n _setInitializationStrategy,\r\n _getDefaultOptions,\r\n _setDefaultOptions,\r\n } = getEnvironment();\r\n return assignDeep(\r\n {},\r\n {\r\n scrollbarSize: _nativeScrollbarSize,\r\n scrollbarIsOverlaid: _nativeScrollbarIsOverlaid,\r\n scrollbarStyling: _nativeScrollbarStyling,\r\n rtlScrollBehavior: _rtlScrollBehavior,\r\n flexboxGlue: _flexboxGlue,\r\n cssCustomProperties: _cssCustomProperties,\r\n defaultInitializationStrategy: _defaultInitializationStrategy,\r\n defaultDefaultOptions: _defaultDefaultOptions,\r\n\r\n getInitializationStrategy: _getInitializationStrategy,\r\n setInitializationStrategy: _setInitializationStrategy,\r\n getDefaultOptions: _getDefaultOptions,\r\n setDefaultOptions: _setDefaultOptions,\r\n }\r\n );\r\n};\r\n"],"names":["hasOwnProperty","zeroObj"],"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 519d916..fc4d840 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,f=t||(e?!e(i,a):i!==a);return(f||o)&&(u=a,r=i),[u,f,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 f(n){return"string"==typeof n}function c(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 g(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],f=a&&a.prototype,c=e.call(n,r),l=f&&e.call(f,"isPrototypeOf");if(a&&!c&&!l)return!1;for(t in n);return o(t)||e.call(n,t)}function h(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},an=function(n,t){un(n,t,(function(n,t){return n.remove(t)}))},fn=function(n,t){return un(n,t,(function(n,t){return n.add(t)})),an.bind(0,n,t)},cn=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},ln=function(n,t){return cn(n,t,["w","h"])},vn=function(n,t){return cn(n,t,["x","y"])},dn=function(n,t){return cn(n,t,["t","r","b","l"])},sn=function(n,t,r){return cn(n,t,["width","height"],r&&function(n){return Math.round(n)})},gn=function(n){n&&window.clearTimeout(n),n&&rn(n)},hn=function(){},wn=function(n,t){var r,i,e,o,u=t||{},f=u.s,c=u.g,v=u._,d=window.setTimeout,s=function(t){gn(r),gn(i),i=r=e=void 0,n.apply(this,t)},g=function(n){return v&&e?v(e,n):n},h=function(){r&&s(g(o)||o)},w=function(){var n=y(arguments),t=l(f)?f():f,u=a(t)&&t>=0;if(u){var v=l(c)?c():c,w=a(v)&&v>=0,_=t>0?d:en,p=g(n),b=p||n,m=s.bind(0,b);gn(r),r=_(m,t),w&&!i&&(i=d(h,v)),e=o=b}else s(n)};return w.p=h,w},_n={opacity:1,zindex:1},pn=function(n,t){var r=t?parseFloat(n):parseInt(n,10);return Number.isNaN(r)?0:r},bn=function(n,t,r){return null!=t?t[r]||t.getPropertyValue(r):n.style[r]},yn=function(n,t,r){try{if(n){var i=n.style;o(i[t])?i.setProperty(t,r):i[t]=function(n,t){return!_n[n.toLowerCase()]&&a(t)?t+"px":t}(t,r)}}catch(e){}};function mn(n,t){var r=f(t);if(v(t)||r){var i=r?"":{};if(n){var e=window.getComputedStyle(n,null);i=r?bn(n,e,t):t.reduce((function(t,r){return t[r]=bn(n,e,r),t}),i)}return i}_(O(t),(function(r){return yn(n,r,t[r])}))}var Sn,xn,On=function(n,t,r){var i=t?t+"-":"",e=r?"-"+r:"",o=i+"top"+e,u=i+"right"+e,a=i+"bottom"+e,f=i+"left"+e,c=mn(n,[o,u,a,f]);return{t:pn(c[o]),r:pn(c[u]),b:pn(c[a]),l:pn(c[f])}},Cn={w:0,h:0},zn=function(){return{w:window.innerWidth,h:window.innerHeight}},An=function(n){return n?{w:n.offsetWidth,h:n.offsetHeight}:Cn},In=function(n){return n?{w:n.clientWidth,h:n.clientHeight}:Cn},Mn=function(n){return n?{w:n.scrollWidth,h:n.scrollHeight}:Cn},Ln=function(n){var t=parseFloat(mn(n,"height"))||0,r=parseFloat(mn(n,"height"))||0;return{w:r-Math.round(r),h:t-Math.round(t)}},jn=function(n){return n.getBoundingClientRect()},Rn=function(n){return n.split(" ")},Tn=function(n,t,r,i){_(Rn(t),(function(t){n.removeEventListener(t,r,i)}))},Vn=function(n,t,r,i){var e=function(){if(o(Sn)){Sn=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){Sn=!0}}))}catch(n){}}return Sn}(),u=e&&i&&i.m||!1,a=i&&i.S||!1,f=i&&i.O||!1,c=[],l=e?{passive:u,capture:a}:a;return _(Rn(t),(function(t){var i=f?function(e){n.removeEventListener(t,i,a),r&&r(e)}:r;b(c,Tn.bind(null,n,t,i,a)),n.addEventListener(t,i,l)})),S.bind(0,c)},Bn=function(n){return function(n){return n.stopPropagation()}(n)||function(n){return n.preventDefault()}(n)},Dn={x:0,y:0},En=function(n){var t=n?jn(n):0;return t?{x:t.left+window.pageYOffset,y:t.top+window.pageXOffset}:Dn},Pn=function(n,t){_(v(t)?t:[t],n)},kn=function(n){var t=new Map,r=function(n,r){if(n){var i=t.get(n);Pn((function(n){i&&i[n?"delete":"clear"](n)}),r)}else t.forEach((function(n){n.clear()})),t.clear()},i=function(n,i){var e=t.get(n)||new Set;return t.set(n,e),Pn((function(n){n&&e.add(n)}),i),r.bind(0,n,i)};return _(O(n),(function(t){i(t,n[t])})),[i,r,function(n,r){var i=t.get(n);_(y(i),(function(n){r?n(r):n()}))}]},qn=function(n,t){return n?t.split(".").reduce((function(n,t){return n&&x(n,t)?n[t]:void 0}),n):void 0},Fn=function(n,t,r){return function(i){return[qn(n,i),r||void 0!==qn(t,i)]}},Hn=function(n){var t=n;return[function(){return t},function(n){t=C({},t,n)}]},Wn="os-environment",Yn=Wn+"-flexbox-glue",Nn=Yn+"-max",Xn="data-overlayscrollbars",Gn=Xn+"-overflow-x",$n=Xn+"-overflow-y",Jn="overflowVisible",Kn="viewportStyled",Un="os-padding",Qn="os-viewport",Zn=Qn+"-arrange",nt="os-content",tt=Qn+"-scrollbar-styled",rt="os-overflow-visible",it="os-size-observer",et=it+"-appear",ot=it+"-listener",ut=ot+"-scroll",at=ot+"-item",ft=at+"-final",ct="os-trinsic-observer",lt="os-scrollbar",vt=lt+"-horizontal",dt=lt+"-vertical",st="os-scrollbar-track",gt="os-scrollbar-handle",ht=function(n){return JSON.stringify(n,(function(n,t){if(l(t))throw new Error;return t}))},wt={paddingAbsolute:!1,updating:{elementEvents:[["img","load"]],debounce:[0,33],attributes:null,ignoreMutation:null},overflow:{x:"scroll",y:"scroll"},nativeScrollbarsOverlaid:{show:!1,initialize:!1},scrollbars:{visibility:"auto",autoHide:"never",autoHideDelay:800,dragScroll:!0,clickScroll:!1,touch:!0}},_t=Math.abs,pt=Math.round,bt=function(n,t,r){q(n,t);var i=In(t),e=An(t),o=Ln(r);return{x:e.h-i.h+o.h,y:e.w-i.w+o.w}},yt=function(n,t){var r="hidden";mn(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}},mt=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,f,c,l,v=document.body,d=N('
')[0],s=d.firstChild,g=kn(),h=g[0],w=g[2],_=n({o:bt(v,d,s),u:vn}),p=_[0],b=(0,_[1])()[0],y=function(n){var t=!1,r=fn(n,tt);try{t="none"===mn(n,U("scrollbar-width"))||"none"===window.getComputedStyle(n,"::-webkit-scrollbar").getPropertyValue("display")}catch(i){}return r(),t}(d),m={x:0===b.x,y:0===b.y},S=function(n){return{C:null,A:null,I:!n,M:!1,L:null}}(y),x=C({},wt),O={j:b,R:m,T:y,V:"-1"===mn(d,"zIndex"),B:yt(d,s),D:(t=d,r=s,i=fn(t,Yn),e=jn(t),o=jn(r),u=sn(o,e,!0),a=fn(t,Nn),f=jn(t),c=jn(r),l=sn(c,f,!0),i(),a(),u&&l),P:function(n){return h("_",n)},k:C.bind(0,{},S),q:function(n){C(S,n)},F:C.bind(0,{},x),H:function(n){C(x,n)},W:C({},S),Y:C({},x)};if(M(d,"style"),W(d),!(y||m.x&&m.y)){var z=zn(),A=mt();window.addEventListener("resize",(function(){var n=zn(),t={w:n.w-z.w,h:n.h-z.h};if(0!==t.w||0!==t.h){var r,i,e,o=_t(t.w),u=_t(t.h),a={w:_t(pt(n.w/(z.w/100))),h:_t(pt(n.h/(z.h/100)))},f=mt(),c=o>2&&u>2,l=(r=a.h,i=_t(a.w),e=_t(r),!(i!==e&&i+1!==e&&i-1!==e));if(c&&l&&(f!==A&&A>0)){var g=p(bt(v,d,s)),h=g[0],_=g[1];C(xn.j,h),W(d),_&&w("_")}z=n,A=f}}))}return O},xt=function(){return xn||(xn=St()),xn},Ot=0,Ct=function(n){q(D(n),B(n)),W(n)},zt=function(){var n=xt(),t=n.T,r=n.R,i=!!(!n.V&&!t&&(r.x||r.y))&&document.createElement("style");return i&&(A(i,"id",Zn+"-"+Ot),Ot++),i},At=function(n,t,r){return t||(l(r)?r(n):r)||Y()},It=function(n,t,r){var i=c(t)||t?t:l(r)?r(n):r;return!0===i?Y():i},Mt=function(n){var t,r,i,e=xt(),o=e.k,u=e.T,a=o(),f=a.C,c=a.A,l=a.I,v=a.M,d=h(n),s=n,g=d?n:s.target,w=V(g,"textarea"),_=!w&&V(g,"body"),y=g.ownerDocument,m=y.body,x=y.defaultView,C=!!tn&&u,z=At(g,s.viewport,c),L=z===g,j=C&&L,R=L&&!j?At(g):z,T={N:g,C:w?At(g,s.host,f):g,A:R,I:It(g,s.padding,l),M:It(g,s.content,v),X:!j&&zt(),G:x,$:y,J:D(m),K:m,U:w,Z:_,nn:d,tn:j,rn:function(n,t){return j?(r=t,i=A(R,Xn)||"",new Set(i.split(" ")).has(r)):function(n,t){return un(n,t,(function(n,t){return n.contains(t)}))}(R,n);var r,i},in:function(n,t,r){return j?I(R,Xn,t,r):(r?fn:an)(R,n)}},E=O(T).reduce((function(n,t){var r=T[t];return b(n,!(!r||D(r))&&r)}),[]),P=function(n){return n?p(E,n)>-1:null},F=T.N,Y=T.C,N=T.I,X=T.A,G=T.M,$=T.X,J=[],K=w&&P(Y),U=w?F:B([G,X,N,Y,F].find((function(n){return!1===P(n)}))),Q=G||X,Z=(A(t=Y,Xn,(j?"viewport":"host")||""),M.bind(0,t,Xn)),nn=fn(N,Un),rn=fn(X,!j&&Qn),en=fn(G,nt);return K&&(H(F,Y),b(J,(function(){H(Y,F),W(Y)}))),q(Q,U),q(Y,N),q(N||Y,!j&&X),q(X,G),b(J,(function(){Z(),M(X,Gn),M(X,$n),P(G)&&Ct(G),P(X)&&Ct(X),P(N)&&Ct(N),nn(),rn(),en()})),u&&!j&&b(J,an.bind(0,X,tt)),$&&(i=$,k(D(r=X),r,i),b(J,W.bind(0,$))),[T,S.bind(0,J)]},Lt=function(n,t){var r=n.M,i=t[0];return function(n){var t=xt().D,e=i().en,o=n.un,u=(r||!t)&&o;return u&&mn(r,{height:e?"":"100%"}),{an:u,fn:u}}},jt=function(t,r){var i=r[0],e=r[1],o=t.C,u=t.I,a=t.A,f=t.tn,c=n({u:dn,o:On()},On.bind(0,o,"padding","")),l=c[0],v=c[1];return function(n,t,r){var o=v(r),c=o[0],d=o[1],s=xt(),g=s.T,h=s.D,w=i().cn,_=n.an,p=n.fn,b=n.ln,y=t("paddingAbsolute"),m=y[0],S=y[1];if(_||d||!h&&p){var x=l(r);c=x[0],d=x[1]}var O=!f&&(S||b||d);if(O){var z=!m||!u&&!g,A=c.r+c.l,I=c.t+c.b,M={marginRight:z&&!w?-A:0,marginBottom:z?-I:0,marginLeft:z&&w?-A:0,top:z?-c.t:0,right:z?w?-c.r:"auto":0,left:z?w?"auto":-c.l:0,width:z?"calc(100% + "+A+"px)":""},L={paddingTop:z?c.t:0,paddingRight:z?c.r:0,paddingBottom:z?c.b:0,paddingLeft:z?c.l:0};mn(u||a,M),mn(a,L),e({I:c,vn:!z,dn:u?L:C({},M,L)})}return{sn:O}}},Rt=Math.max,Tt="visible",Vt="hidden",Bt=42,Dt={u:ln,o:{w:0,h:0}},Et={u:vn,o:{x:Vt,y:Vt}},Pt=function(n,t,r){return r?fn(n,t):an(n,t)},kt=function(n){return 0===n.indexOf(Tt)},qt=function(t,r){var i=r[0],e=r[1],o=t.C,u=t.I,a=t.A,f=t.X,c=t.tn,l=t.in,v=xt(),d=v.j,s=v.D,g=v.T,h=v.R,w=!c&&!g&&(h.x||h.y),p=n(Dt,Ln.bind(0,o)),b=p[0],y=p[1],m=n(Dt,Mn.bind(0,a)),S=m[0],x=m[1],C=n(Dt),z=C[0],M=C[1],L=n(Et)[0],j=function(n,t){if(mn(a,{height:""}),t){var r=i(),e=r.vn,u=r.I,f=n.gn,c=n.hn,l=Ln(o),v=In(o),d="content-box"===mn(a,"boxSizing"),s=e||d?u.b+u.t:0,g=!(h.x&&d);mn(a,{height:v.h+l.h+(f.x&&g?c.x:0)-s})}},R=function(n,t){var r=g||n?0:Bt,i=function(n,i,e){var o=mn(a,n),u="scroll"===(t?t[n]:o);return[o,u,u&&!g?i?r:e:0,i&&!!r]},e=i("overflowX",h.x,d.x),o=e[0],u=e[1],f=e[2],c=e[3],l=i("overflowY",h.y,d.y);return{wn:{x:o,y:l[0]},gn:{x:u,y:l[1]},hn:{x:f,y:l[2]},_n:{x:c,y:l[3]}}},T=function(n,t,r,e){if(w){var o=i().dn,u=n.hn,c=n._n,l=c.x,v=c.y,d=u.x,s=u.y,g=o[e?"paddingRight":"paddingLeft"],h=o.paddingTop,_=t.w+r.w,p=t.h+r.h,b={w:s&&v?s+_-g+"px":"",h:d&&l?d+p-h+"px":""};if(f){var y=f.sheet;if(y){var m=y.cssRules;if(m){m.length||y.insertRule("#"+A(f,"id")+" + ."+Zn+"::before {}",0);var S=m[0].style;S.width=b.w,S.height=b.h}}}else mn(a,{"--os-vaw":b.w,"--os-vah":b.h})}return w},V=function(n,t,r,e){var o=n.hn,u=n._n,a=u.x,f=u.y,c=o.x,l=o.y,v=i().dn,d=t?"marginLeft":"marginRight",s=t?"paddingLeft":"paddingRight",g=v[d],h=v.marginBottom,w=v[s],_=v.paddingBottom;e.width="calc(100% + "+(l+-1*g)+"px)",e[d]=-l+g,e.marginBottom=-c+h,r&&(e[s]=w+(f?l:0),e.paddingBottom=_+(a?c:0))};return function(n,t,r){var f,v=n.an,d=n.pn,p=n.fn,m=n.sn,C=n.un,B=n.ln,D=i(),E=D.en,P=D.cn,k=t("nativeScrollbarsOverlaid.show"),q=k[0],F=k[1],H=t("overflow"),W=H[0],Y=H[1],N=q&&h.x&&h.y,X=!c&&!s&&(v||p||d||F||C),G=kt(W.x),$=kt(W.y),J=G||$,K=y(r),U=x(r),Q=M(r);if(F&&g&&l(tt,Kn,!N),X&&(f=R(N),j(f,E)),v||m||p||B||F){J&&l(rt,Jn,!1);var Z=function(n,t,r){if(w){var e=r||R(n),o=i().dn,u=e._n,f=u.x,c=u.y,l={},v=function(n){return _(n.split(" "),(function(n){l[n]=o[n]}))};f&&v("marginBottom paddingTop paddingBottom"),c&&v("marginLeft marginRight paddingLeft paddingRight");var d=mn(a,O(l));return an(a,Zn),s||(l.height=""),mn(a,l),[function(){V(e,t,w,d),mn(a,d),fn(a,Zn)},e]}return[hn]}(N,P,f),nn=Z[0],tn=Z[1],rn=K=b(r),en=rn[0],on=rn[1],un=U=S(r),cn=un[0],ln=un[1],vn=In(a),dn=cn,sn=vn;nn(),(ln||on||F)&&tn&&!N&&T(tn,cn,en,P)&&(sn=In(a),dn=Mn(a)),Q=z(function(n,t,r){var i=window.devicePixelRatio%1!=0?1:0,e={w:Rt(0,n.w-t.w-Rt(0,r.w)),h:Rt(0,n.h-t.h-Rt(0,r.h))};return{w:e.w>i?e.w:0,h:e.h>i?e.h:0}}({w:Rt(cn.w,dn.w),h:Rt(cn.h,dn.h)},{w:sn.w+Rt(0,vn.w-cn.w),h:sn.h+Rt(0,vn.h-cn.h)},en),r)}var gn=Q,wn=gn[0],_n=gn[1],pn=U,bn=pn[0],yn=pn[1],Sn=K,xn=Sn[0],On=Sn[1],Cn={x:wn.w>0,y:wn.h>0},zn=G&&$&&(Cn.x||Cn.y)||G&&Cn.x&&!Cn.y||$&&Cn.y&&!Cn.x;if(m||B||On||yn||_n||Y||F||X){var An={marginRight:0,marginBottom:0,marginLeft:0,width:"",overflowY:"",overflowX:""},Ln=function(n,t,r,i){var e=function(n,t){var r=kt(n),i=t&&r&&n.replace(Tt+"-","")||"";return[t&&!r?n:"",kt(i)?"hidden":i]},o=e(r.x,t.x),u=o[0],a=o[1],f=e(r.y,t.y),c=f[0],l=f[1];return i.overflowX=a&&c?a:u,i.overflowY=l&&u?l:c,R(n,i)}(N,Cn,W,An),jn=T(Ln,bn,xn,P);c||V(Ln,P,jn,An),X&&j(Ln,E),c?(A(o,Gn,An.overflowX),A(o,$n,An.overflowY)):mn(a,An)}I(o,Xn,Jn,zn),Pt(u,rt,zn),!c&&Pt(a,rt,J);var Rn=L(R(N).wn),Tn=Rn[0],Vn=Rn[1];return e({wn:Tn,bn:{x:wn.w,y:wn.h},yn:Cn}),{mn:Vn,Sn:_n}}},Ft=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]=!!(r||o||u)})),i},Ht="animationstart",Wt="scroll",Yt=3333333,Nt=function(n){return"rtl"===mn(n,"direction")},Xt=function(n){return n&&(n.height||n.width)},Gt=function(t,r,i){var e=i||{},o=e.xn,u=void 0!==o&&o,a=e.On,f=void 0!==a&&a,l=xt().B,s=N('
')[0],g=s.firstChild,h=Nt.bind(0,s),w=n({o:void 0,v:!0,u:function(n,t){return!(!n||!Xt(n)&&Xt(t))}})[0],_=function(n){var t=v(n)&&n.length>0&&d(n[0]),i=!t&&c(n[0]),e=!1,o=!1,a=!0;if(t){var f=w(n.pop().contentRect),g=f[0],h=f[2],_=Xt(g);o=!Xt(h)&&_,a=!(e=!h||!_)}else i?a=n[1]:o=!0===n;if(u&&a){var p=i?n[0]:Nt(s);L(s,p?l.n?-Yt:l.i?0:Yt:Yt),j(s,Yt)}e||r({an:!i,Cn:i?n:void 0,On:!!o})},p=[],y=!!f&&_;if(tn){var m=new tn(_);m.observe(g),b(p,(function(){m.disconnect()}))}else{var x=N('
');q(g,x),fn(g,ut);var O,C=x[0],z=C.lastChild,A=C.firstChild,I=null==A?void 0:A.firstChild,M=An(C),R=M,T=!1,V=function(){L(A,Yt),j(A,Yt),L(z,Yt),j(z,Yt)},B=function(n){O=0,T&&(M=R,_(!0===n))},D=function(n){R=An(C),T=!n||!ln(R,M),n?(Bn(n),T&&!O&&(rn(O),O=en(B))):B(!1===n),V()};b(p,[Vn(A,Wt,D),Vn(z,Wt,D)]),mn(I,{width:Yt,height:Yt}),V(),y=f?D.bind(0,!1):V}if(u){var E=n({o:!h()},h)[0];b(p,Vn(s,Wt,(function(n){var t=E(),r=t[0];t[1]&&(an(g,"ltr rtl"),fn(g,r?"rtl":"ltr"),_(t)),Bn(n)})))}return y&&(fn(s,et),b(p,Vn(s,Ht,y,{O:!!tn}))),F(t,s),function(){S(p),W(s)}},$t=function(n,t,r,i){var e=!1,o=i||{},u=o.zn,a=o.An,c=o.In,l=o.Mn,v=o.Ln,d=o.jn,s=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&&f(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],f=u[1];a===o&&f()}var c=Vn(r,o,(function(n){e?(c(),i.delete(r)):t(n)}));i.set(r,[o,c])}))}))};return r&&(i=new WeakMap,o()),[function(){e=!0},o]}(n,wn((function(){e&&r(!0)}),{s:33,g:99}),c),g=s[0],h=s[1],w=a||[],y=(u||[]).concat(w),S=function(e){var o=v||hn,u=d||hn,a=[],c=[],s=!1,g=!1,y=!1;_(e,(function(r){var e=r.attributeName,v=r.target,d=r.type,h=r.oldValue,_=r.addedNodes,m="attributes"===d,S="childList"===d,x=n===v,O=m&&f(e)?A(v,e):0,C=0!==O&&h!==O,z=p(w,e)>-1&&C;if(t&&!x){var I=!m,M=m&&z,L=M&&l&&V(v,l),j=(L?!o(v,e,h,O):I||M)&&!u(r,!!L,n,i);b(c,_),g=g||j,y=y||S}!t&&x&&C&&!o(v,e,h,O)&&(b(a,e),s=s||z)})),y&&!m(c)&&h((function(n){return c.reduce((function(t,r){return b(t,T(n,r)),V(r,n)?b(t,r):t}),[])})),t?g&&r(!1):m(a)&&!s||r(a,s)},x=new Z(S);return x.observe(n,{attributes:!0,attributeOldValue:!0,attributeFilter:y,subtree:t,childList:t,characterData:t}),e=!0,[function(){e&&(g(),x.disconnect(),e=!1)},function(){e&&S(x.takeRecords())}]},Jt="["+Xn+"]",Kt="."+Qn,Ut=["tabindex"],Qt=["wrap","cols","rows"],Zt=["id","class","style","open"],nr=function(t,r,i){var e,o,u,c=r[1],d=t.C,s=t.A,g=t.M,h=t.U,w=t.tn,y=t.rn,m=t.in,x=xt(),C=x.T,z=x.D,I=n({u:ln,o:{w:0,h:0}},(function(){var n=y(rt,Jn);n&&m(rt,Jn);var t=Mn(g),r=Mn(s),i=Ln(s);return n&&m(rt,Jn,!0),{w:r.w+t.w+i.w,h:r.h+t.h+i.h}}))[0],L=h?Qt:Zt.concat(Qt),j=wn(i,{s:function(){return e},g:function(){return o},_:function(n,t){var r=n[0],i=t[0];return[O(r).concat(O(i)).reduce((function(n,t){return n[t]=r[t]||i[t],n}),{})]}}),R=function(n){_(n||Ut,(function(n){if(p(Ut,n)>-1){var t=A(d,n);f(t)?A(s,n,t):M(s,n)}}))},T=function(n){var t=n.an,r=n.Cn,e=n.On,o=!t||e?i:j,u=!1;if(r){var a=r[0];u=r[1],c({cn:a})}o({an:t,ln:u})},V=function(n){I()[1]&&(n?i:j)({fn:!0})},B=(g||!z)&&function(t,r){var i=Y(ct),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(nn){var a=new nn((function(n){n&&n.length>0&&u(n.pop())}),{root:t});a.observe(i),b(e,(function(){a.disconnect()}))}else{var f=function(){var n=An(i);u(n)};b(e,Gt(i,f)),f()}return F(t,i),function(){S(e),W(i)}}(d,(function(n){var t=n[0],r=n[1];c({en:t}),i({un:r})})),D=!w&&Gt(d,T,{On:!0,xn:!C}),E=$t(d,!1,(function(n,t){t?j({pn:!0}):w||R(n)}),{An:Zt,zn:Zt.concat(Ut)})[0],k=w&&new tn(T.bind(0,{an:!0}));return k&&k.observe(d),R(),[function(n){var t=n("updating.ignoreMutation")[0],r=n("updating.attributes"),i=r[0],f=r[1],c=n("updating.elementEvents"),d=c[0],h=c[1],w=n("updating.debounce"),_=w[0],p=w[1];if((h||f)&&(u&&(u[1](),u[0]()),u=$t(g||s,!0,V,{An:L.concat(i||[]),zn:L.concat(i||[]),In:d,Mn:Jt,jn:function(n,r){var i=n.target,e=n.attributeName;return!(r||!e)&&P(i,Jt,Kt)||!!function(n){return l(t)&&t(n)}(n)}})),p)if(j.p(),v(_)){var b=_[0],y=_[1];e=!!a(b)&&b,o=!!a(y)&&y}else a(_)?(e=_,o=!1):(e=!1,o=!1)},function(){u&&u[0](),B&&B(),D&&D(),k&&k.disconnect(),E()}]},tr={I:{t:0,r:0,b:0,l:0},vn:!1,dn:{marginRight:0,marginBottom:0,marginLeft:0,paddingTop:0,paddingRight:0,paddingBottom:0,paddingLeft:0},bn:{x:0,y:0},wn:{x:"hidden",y:"hidden"},yn:{x:!1,y:!1},en:!1,cn:!1},rr=function(n,t){var r=Fn(t,{}),i=Hn(tr),e=new Set,o=i[0],u=function(n,t,r){S(e,[n,t||{},!!r])},f=Mt(n),c=f[0],l=f[1],v=function(n,t){var r=n.A,i=xt(),e=i.T,o=i.R,u=i.D,f=!e&&(o.x||o.y),c=[Lt(n,t),jt(n,t),qt(n,t)];return function(n,t,i){var e=Ft(C({an:!1,sn:!1,ln:!1,un:!1,Sn:!1,mn:!1,pn:!1,fn:!1},t),{},i),o=f||!u,l=o&&L(r),v=o&&j(r),d=e;return _(c,(function(t){d=Ft(d,t(d,n,!!i)||{},i)})),a(l)&&L(r,l),a(v)&&j(r,v),d}}(c,i),d=nr(c,i,(function(n){u(v(r,n))})),s=d[0],g=d[1],h=o.bind(0);return h.Rn=function(n){e.add(n)},h.Tn=c,[function(n,r){var i=Fn(t,n,r);s(i),u(v(i,{},r))},h,function(){e.clear(),g(),l()}]},ir=function(n){var t=Y(lt+" "+n),r=Y(st),i=Y(gt);return q(t,r),q(r,i),{Vn:t,Bn:r,Dn:i}},er=function(n,t,r){var i=Hn({})[0],e=function(n,t){var r=(0,xt().k)().L,i=t.N,e=t.C,o=t.A,u=!t.nn&&n.scrollbarsSlot,a=(l(u)?u(i,e,o):u)||(l(r)?r(i,e,o):r)||e,f=ir(vt),c=ir(dt),v=f.Vn,d=c.Vn;return q(a,v),q(a,d),[{En:f,Pn:c},W.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=Fn(t,n,r);console.log(i)},a,function(){u()}]},or={};var ur,ar={exports:{}};!function(n){function t(){return n.exports=t=Object.assign?Object.assign.bind():function(n){for(var t=1;t-1&&t%1==0;return!!(v(n)||!l(n)&&r)&&(!(t>0&&d(n))||t-1 in n)}function g(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],f=a&&a.prototype,c=e.call(n,r),l=f&&e.call(f,"isPrototypeOf");if(a&&!c&&!l)return!1;for(t in n);return o(t)||e.call(n,t)}function h(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},an=function(n,t){un(n,t,(function(n,t){return n.remove(t)}))},fn=function(n,t){return un(n,t,(function(n,t){return n.add(t)})),an.bind(0,n,t)},cn=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},ln=function(n,t){return cn(n,t,["w","h"])},vn=function(n,t){return cn(n,t,["x","y"])},dn=function(n,t){return cn(n,t,["t","r","b","l"])},sn=function(n,t,r){return cn(n,t,["width","height"],r&&function(n){return Math.round(n)})},gn=function(n){n&&window.clearTimeout(n),n&&rn(n)},hn=function(){},wn=function(n,t){var r,i,e,o,u=t||{},f=u.s,c=u.g,v=u._,d=window.setTimeout,s=function(t){gn(r),gn(i),i=r=e=void 0,n.apply(this,t)},g=function(n){return v&&e?v(e,n):n},h=function(){r&&s(g(o)||o)},w=function(){var n=y(arguments),t=l(f)?f():f,u=a(t)&&t>=0;if(u){var v=l(c)?c():c,w=a(v)&&v>=0,_=t>0?d:en,p=g(n),b=p||n,m=s.bind(0,b);gn(r),r=_(m,t),w&&!i&&(i=d(h,v)),e=o=b}else s(n)};return w.p=h,w},_n={opacity:1,zindex:1},pn=function(n,t){var r=t?parseFloat(n):parseInt(n,10);return Number.isNaN(r)?0:r},bn=function(n,t,r){return null!=t?t[r]||t.getPropertyValue(r):n.style[r]},yn=function(n,t,r){try{if(n){var i=n.style;o(i[t])?i.setProperty(t,r):i[t]=function(n,t){return!_n[n.toLowerCase()]&&a(t)?t+"px":t}(t,r)}}catch(e){}};function mn(n,t){var r=f(t);if(v(t)||r){var i=r?"":{};if(n){var e=window.getComputedStyle(n,null);i=r?bn(n,e,t):t.reduce((function(t,r){return t[r]=bn(n,e,r),t}),i)}return i}_(C(t),(function(r){return yn(n,r,t[r])}))}var Sn,xn,Cn=function(n,t,r){var i=t?t+"-":"",e=r?"-"+r:"",o=i+"top"+e,u=i+"right"+e,a=i+"bottom"+e,f=i+"left"+e,c=mn(n,[o,u,a,f]);return{t:pn(c[o]),r:pn(c[u]),b:pn(c[a]),l:pn(c[f])}},On={w:0,h:0},zn=function(){return{w:window.innerWidth,h:window.innerHeight}},An=function(n){return n?{w:n.offsetWidth,h:n.offsetHeight}:On},In=function(n){return n?{w:n.clientWidth,h:n.clientHeight}:On},Mn=function(n){return n?{w:n.scrollWidth,h:n.scrollHeight}:On},Ln=function(n){var t=parseFloat(mn(n,"height"))||0,r=parseFloat(mn(n,"height"))||0;return{w:r-Math.round(r),h:t-Math.round(t)}},Rn=function(n){return n.getBoundingClientRect()},Tn=function(n){return n.split(" ")},Vn=function(n,t,r,i){_(Tn(t),(function(t){n.removeEventListener(t,r,i)}))},jn=function(n,t,r,i){var e=function(){if(o(Sn)){Sn=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){Sn=!0}}))}catch(n){}}return Sn}(),u=e&&i&&i.m||!1,a=i&&i.S||!1,f=i&&i.C||!1,c=[],l=e?{passive:u,capture:a}:a;return _(Tn(t),(function(t){var i=f?function(e){n.removeEventListener(t,i,a),r&&r(e)}:r;b(c,Vn.bind(null,n,t,i,a)),n.addEventListener(t,i,l)})),S.bind(0,c)},Bn=function(n){return function(n){return n.stopPropagation()}(n)||function(n){return n.preventDefault()}(n)},Dn={x:0,y:0},En=function(n){var t=n?Rn(n):0;return t?{x:t.left+window.pageYOffset,y:t.top+window.pageXOffset}:Dn},kn=function(n,t){_(v(t)?t:[t],n)},qn=function(n){var t=new Map,r=function(n,r){if(n){var i=t.get(n);kn((function(n){i&&i[n?"delete":"clear"](n)}),r)}else t.forEach((function(n){n.clear()})),t.clear()},i=function(n,i){var e=t.get(n)||new Set;return t.set(n,e),kn((function(n){n&&e.add(n)}),i),r.bind(0,n,i)};return _(C(n),(function(t){i(t,n[t])})),[i,r,function(n,r){var i=t.get(n);_(y(i),(function(n){r?n(r):n()}))}]},Pn=function(n,t){return n?t.split(".").reduce((function(n,t){return n&&x(n,t)?n[t]:void 0}),n):void 0},Fn=function(n,t,r){return function(i){return[Pn(n,i),r||void 0!==Pn(t,i)]}},Hn=function(n){var t=n;return[function(){return t},function(n){t=O({},t,n)}]},Wn="os-environment",Nn=Wn+"-flexbox-glue",Xn=Nn+"-max",Yn="data-overlayscrollbars",Gn=Yn+"-overflow-x",$n=Yn+"-overflow-y",Jn="overflowVisible",Kn="viewportStyled",Un="os-padding",Qn="os-viewport",Zn=Qn+"-arrange",nt="os-content",tt=Qn+"-scrollbar-styled",rt="os-overflow-visible",it="os-size-observer",et=it+"-appear",ot=it+"-listener",ut=ot+"-scroll",at=ot+"-item",ft=at+"-final",ct="os-trinsic-observer",lt="os-scrollbar",vt=lt+"-horizontal",dt=lt+"-vertical",st="os-scrollbar-track",gt="os-scrollbar-handle",ht=function(n){return JSON.stringify(n,(function(n,t){if(l(t))throw new Error;return t}))},wt={paddingAbsolute:!1,updating:{elementEvents:[["img","load"]],debounce:[0,33],attributes:null,ignoreMutation:null},overflow:{x:"scroll",y:"scroll"},nativeScrollbarsOverlaid:{show:!1,initialize:!1},scrollbars:{visibility:"auto",autoHide:"never",autoHideDelay:800,dragScroll:!0,clickScroll:!1,touch:!0}},_t=Math.abs,pt=Math.round,bt=function(n,t,r){P(n,t);var i=In(t),e=An(t),o=Ln(r);return{x:e.h-i.h+o.h,y:e.w-i.w+o.w}},yt=function(n,t){var r="hidden";mn(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}},mt=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,f,c,l,v=document.body,d=X('
')[0],s=d.firstChild,g=qn(),h=g[0],w=g[2],_=n({o:bt(v,d,s),u:vn}),p=_[0],b=(0,_[1])()[0],y=function(n){var t=!1,r=fn(n,tt);try{t="none"===mn(n,U("scrollbar-width"))||"none"===window.getComputedStyle(n,"::-webkit-scrollbar").getPropertyValue("display")}catch(i){}return r(),t}(d),m={x:0===b.x,y:0===b.y},S=function(n){return{O:null,A:null,I:!n,M:!1,L:null}}(y),x=O({},wt),C={R:b,T:m,V:y,j:"-1"===mn(d,"zIndex"),B:yt(d,s),D:(t=d,r=s,i=fn(t,Nn),e=Rn(t),o=Rn(r),u=sn(o,e,!0),a=fn(t,Xn),f=Rn(t),c=Rn(r),l=sn(c,f,!0),i(),a(),u&&l),k:function(n){return h("_",n)},q:O.bind(0,{},S),P:function(n){O(S,n)},F:O.bind(0,{},x),H:function(n){O(x,n)},W:O({},S),N:O({},x)};if(M(d,"style"),W(d),!(y||m.x&&m.y)){var z=zn(),A=mt();window.addEventListener("resize",(function(){var n=zn(),t={w:n.w-z.w,h:n.h-z.h};if(0!==t.w||0!==t.h){var r,i,e,o=_t(t.w),u=_t(t.h),a={w:_t(pt(n.w/(z.w/100))),h:_t(pt(n.h/(z.h/100)))},f=mt(),c=o>2&&u>2,l=(r=a.h,i=_t(a.w),e=_t(r),!(i!==e&&i+1!==e&&i-1!==e));if(c&&l&&(f!==A&&A>0)){var g=p(bt(v,d,s)),h=g[0],_=g[1];O(xn.R,h),W(d),_&&w("_")}z=n,A=f}}))}return C},xt=function(){return xn||(xn=St()),xn},Ct=0,Ot=function(n){P(D(n),B(n)),W(n)},zt=function(){var n=xt(),t=n.V,r=n.T,i=!!(!n.j&&!t&&(r.x||r.y))&&document.createElement("style");return i&&(A(i,"id",Zn+"-"+Ct),Ct++),i},At=function(n,t,r){return t||(l(r)?r(n):r)||N()},It=function(n,t,r){var i=c(t)||t?t:l(r)?r(n):r;return!0===i?N():i},Mt=function(n){var t,r,i,e=xt(),o=e.q,u=e.V,a=o(),f=a.O,c=a.A,l=a.I,v=a.M,d=h(n),s=n,g=d?n:s.target,w=j(g,"textarea"),_=!w&&j(g,"body"),y=g.ownerDocument,m=y.body,x=y.defaultView,O=!!tn&&u,z=At(g,s.viewport,c),L=z===g,R=O&&L,T=L&&!R?At(g):z,V={X:g,O:w?At(g,s.host,f):g,A:T,I:It(g,s.padding,l),M:It(g,s.content,v),Y:!R&&zt(),G:x,$:y,J:D(m),K:m,U:w,Z:_,nn:d,tn:R,rn:function(n,t){return R?(r=t,i=A(T,Yn)||"",new Set(i.split(" ")).has(r)):function(n,t){return un(n,t,(function(n,t){return n.contains(t)}))}(T,n);var r,i},in:function(n,t,r){return R?I(T,Yn,t,r):(r?fn:an)(T,n)}},E=C(V).reduce((function(n,t){var r=V[t];return b(n,!(!r||D(r))&&r)}),[]),k=function(n){return n?p(E,n)>-1:null},F=V.X,N=V.O,X=V.I,Y=V.A,G=V.M,$=V.Y,J=[],K=w&&k(N),U=w?F:B([G,Y,X,N,F].find((function(n){return!1===k(n)}))),Q=G||Y,Z=(A(t=N,Yn,(R?"viewport":"host")||""),M.bind(0,t,Yn)),nn=fn(X,Un),rn=fn(Y,!R&&Qn),en=fn(G,nt);return K&&(H(F,N),b(J,(function(){H(N,F),W(N)}))),P(Q,U),P(N,X),P(X||N,!R&&Y),P(Y,G),b(J,(function(){Z(),M(Y,Gn),M(Y,$n),k(G)&&Ot(G),k(Y)&&Ot(Y),k(X)&&Ot(X),nn(),rn(),en()})),u&&!R&&b(J,an.bind(0,Y,tt)),$&&(i=$,q(D(r=Y),r,i),b(J,W.bind(0,$))),[V,S.bind(0,J)]},Lt=function(n,t){var r=n.M,i=t[0];return function(n){var t=xt().D,e=i().en,o=n.un,u=(r||!t)&&o;return u&&mn(r,{height:e?"":"100%"}),{an:u,fn:u}}},Rt=function(t,r){var i=r[0],e=r[1],o=t.O,u=t.I,a=t.A,f=t.tn,c=n({u:dn,o:Cn()},Cn.bind(0,o,"padding","")),l=c[0],v=c[1];return function(n,t,r){var o=v(r),c=o[0],d=o[1],s=xt(),g=s.V,h=s.D,w=i().cn,_=n.an,p=n.fn,b=n.ln,y=t("paddingAbsolute"),m=y[0],S=y[1];if(_||d||!h&&p){var x=l(r);c=x[0],d=x[1]}var C=!f&&(S||b||d);if(C){var z=!m||!u&&!g,A=c.r+c.l,I=c.t+c.b,M={marginRight:z&&!w?-A:0,marginBottom:z?-I:0,marginLeft:z&&w?-A:0,top:z?-c.t:0,right:z?w?-c.r:"auto":0,left:z?w?"auto":-c.l:0,width:z?"calc(100% + "+A+"px)":""},L={paddingTop:z?c.t:0,paddingRight:z?c.r:0,paddingBottom:z?c.b:0,paddingLeft:z?c.l:0};mn(u||a,M),mn(a,L),e({I:c,vn:!z,dn:u?L:O({},M,L)})}return{sn:C}}},Tt=Math.max,Vt="visible",jt="hidden",Bt=42,Dt={u:ln,o:{w:0,h:0}},Et={u:vn,o:{x:jt,y:jt}},kt=function(n,t,r){return r?fn(n,t):an(n,t)},qt=function(n){return 0===n.indexOf(Vt)},Pt=function(t,r){var i=r[0],e=r[1],o=t.O,u=t.I,a=t.A,f=t.Y,c=t.tn,l=t.in,v=xt(),d=v.R,s=v.D,g=v.V,h=v.T,w=!c&&!g&&(h.x||h.y),p=n(Dt,Ln.bind(0,a)),b=p[0],y=p[1],m=n(Dt,Mn.bind(0,a)),S=m[0],x=m[1],O=n(Dt),z=O[0],M=O[1],L=n(Et)[0],R=function(n,t){if(mn(a,{height:""}),t){var r=i(),e=r.vn,u=r.I,f=n.gn,c=n.hn,l=Ln(o),v=In(o),d="content-box"===mn(a,"boxSizing"),s=e||d?u.b+u.t:0,g=!(h.x&&d);mn(a,{height:v.h+l.h+(f.x&&g?c.x:0)-s})}},T=function(n,t){var r=g||n?0:Bt,i=function(n,i,e){var o=mn(a,n),u="scroll"===(t?t[n]:o);return[o,u,u&&!g?i?r:e:0,i&&!!r]},e=i("overflowX",h.x,d.x),o=e[0],u=e[1],f=e[2],c=e[3],l=i("overflowY",h.y,d.y);return{wn:{x:o,y:l[0]},gn:{x:u,y:l[1]},hn:{x:f,y:l[2]},_n:{x:c,y:l[3]}}},V=function(n,t,r,e){if(w){var o=i().dn,u=n.hn,c=n._n,l=c.x,v=c.y,d=u.x,s=u.y,g=o[e?"paddingRight":"paddingLeft"],h=o.paddingTop,_=t.w+r.w,p=t.h+r.h,b={w:s&&v?s+_-g+"px":"",h:d&&l?d+p-h+"px":""};if(f){var y=f.sheet;if(y){var m=y.cssRules;if(m){m.length||y.insertRule("#"+A(f,"id")+" + ."+Zn+"::before {}",0);var S=m[0].style;S.width=b.w,S.height=b.h}}}else mn(a,{"--os-vaw":b.w,"--os-vah":b.h})}return w},j=function(n,t,r,e){var o=n.hn,u=n._n,a=u.x,f=u.y,c=o.x,l=o.y,v=i().dn,d=t?"marginLeft":"marginRight",s=t?"paddingLeft":"paddingRight",g=v[d],h=v.marginBottom,w=v[s],_=v.paddingBottom;e.width="calc(100% + "+(l+-1*g)+"px)",e[d]=-l+g,e.marginBottom=-c+h,r&&(e[s]=w+(f?l:0),e.paddingBottom=_+(a?c:0))};return function(n,t,r){var f,v=n.an,d=n.pn,p=n.fn,m=n.sn,O=n.un,B=n.ln,D=i(),E=D.en,k=D.cn,q=t("nativeScrollbarsOverlaid.show"),P=q[0],F=q[1],H=t("overflow"),W=H[0],N=H[1],X=P&&h.x&&h.y,Y=!c&&!s&&(v||p||d||F||O),G=qt(W.x),$=qt(W.y),J=G||$,K=y(r),U=x(r),Q=M(r);if(F&&g&&l(tt,Kn,!X),Y&&(f=T(X),R(f,E)),v||m||p||B||F){J&&l(rt,Jn,!1);var Z=function(n,t,r){if(w){var e=r||T(n),o=i().dn,u=e._n,f=u.x,c=u.y,l={},v=function(n){return _(n.split(" "),(function(n){l[n]=o[n]}))};f&&v("marginBottom paddingTop paddingBottom"),c&&v("marginLeft marginRight paddingLeft paddingRight");var d=mn(a,C(l));return an(a,Zn),s||(l.height=""),mn(a,l),[function(){j(e,t,w,d),mn(a,d),fn(a,Zn)},e]}return[hn]}(X,k,f),nn=Z[0],tn=Z[1],rn=K=b(r),en=rn[0],on=rn[1],un=U=S(r),cn=un[0],ln=un[1],vn=In(a),dn=cn,sn=vn;nn(),(ln||on||F)&&tn&&!X&&V(tn,cn,en,k)&&(sn=In(a),dn=Mn(a)),Q=z(function(n,t,r){var i=window.devicePixelRatio%1!=0?1:0,e={w:Tt(0,n.w-t.w-Tt(0,r.w)),h:Tt(0,n.h-t.h-Tt(0,r.h))};return{w:e.w>i?e.w:0,h:e.h>i?e.h:0}}({w:Tt(cn.w,dn.w),h:Tt(cn.h,dn.h)},{w:sn.w+Tt(0,vn.w-cn.w),h:sn.h+Tt(0,vn.h-cn.h)},en),r)}var gn=Q,wn=gn[0],_n=gn[1],pn=U,bn=pn[0],yn=pn[1],Sn=K,xn=Sn[0],Cn=Sn[1],On={x:wn.w>0,y:wn.h>0},zn=G&&$&&(On.x||On.y)||G&&On.x&&!On.y||$&&On.y&&!On.x;if(m||B||Cn||yn||_n||N||F||Y){var An={marginRight:0,marginBottom:0,marginLeft:0,width:"",overflowY:"",overflowX:""},Ln=function(n,t,r,i){var e=function(n,t){var r=qt(n),i=t&&r&&n.replace(Vt+"-","")||"";return[t&&!r?n:"",qt(i)?"hidden":i]},o=e(r.x,t.x),u=o[0],a=o[1],f=e(r.y,t.y),c=f[0],l=f[1];return i.overflowX=a&&c?a:u,i.overflowY=l&&u?l:c,T(n,i)}(X,On,W,An),Rn=V(Ln,bn,xn,k);c||j(Ln,k,Rn,An),Y&&R(Ln,E),c?(A(o,Gn,An.overflowX),A(o,$n,An.overflowY)):mn(a,An)}I(o,Yn,Jn,zn),kt(u,rt,zn),!c&&kt(a,rt,J);var Tn=L(T(X).wn),Vn=Tn[0],jn=Tn[1];return e({wn:Vn,bn:{x:wn.w,y:wn.h},yn:On}),{mn:jn,Sn:_n}}},Ft=function(n,t,r){var i={},e=t||{};return _(C(n).concat(C(e)),(function(t){var o=n[t],u=e[t];i[t]=!!(r||o||u)})),i},Ht="animationstart",Wt="scroll",Nt=3333333,Xt=function(n){return"rtl"===mn(n,"direction")},Yt=function(n){return n&&(n.height||n.width)},Gt=function(t,r,i){var e=i||{},o=e.xn,u=void 0!==o&&o,a=e.Cn,f=void 0!==a&&a,l=xt().B,s=X('
')[0],g=s.firstChild,h=Xt.bind(0,s),w=n({o:void 0,v:!0,u:function(n,t){return!(!n||!Yt(n)&&Yt(t))}})[0],_=function(n){var t=v(n)&&n.length>0&&d(n[0]),i=!t&&c(n[0]),e=!1,o=!1,a=!0;if(t){var f=w(n.pop().contentRect),g=f[0],h=f[2],_=Yt(g);o=!Yt(h)&&_,a=!(e=!h||!_)}else i?a=n[1]:o=!0===n;if(u&&a){var p=i?n[0]:Xt(s);L(s,p?l.n?-Nt:l.i?0:Nt:Nt),R(s,Nt)}e||r({an:!i,On:i?n:void 0,Cn:!!o})},p=[],y=!!f&&_;if(tn){var m=new tn(_);m.observe(g),b(p,(function(){m.disconnect()}))}else{var x=X('
');P(g,x),fn(g,ut);var C,O=x[0],z=O.lastChild,A=O.firstChild,I=null==A?void 0:A.firstChild,M=An(O),T=M,V=!1,j=function(){L(A,Nt),R(A,Nt),L(z,Nt),R(z,Nt)},B=function(n){C=0,V&&(M=T,_(!0===n))},D=function(n){T=An(O),V=!n||!ln(T,M),n?(Bn(n),V&&!C&&(rn(C),C=en(B))):B(!1===n),j()};b(p,[jn(A,Wt,D),jn(z,Wt,D)]),mn(I,{width:Nt,height:Nt}),j(),y=f?D.bind(0,!1):j}if(u){var E=n({o:!h()},h)[0];b(p,jn(s,Wt,(function(n){var t=E(),r=t[0];t[1]&&(an(g,"ltr rtl"),fn(g,r?"rtl":"ltr"),_(t)),Bn(n)})))}return y&&(fn(s,et),b(p,jn(s,Ht,y,{C:!!tn}))),F(t,s),function(){S(p),W(s)}},$t=function(n,t,r,i){var e=!1,o=i||{},u=o.zn,a=o.An,c=o.In,l=o.Mn,v=o.Ln,d=o.Rn,s=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):V(i,n));u&&u.length&&e&&f(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],f=u[1];a===o&&f()}var c=jn(r,o,(function(n){e?(c(),i.delete(r)):t(n)}));i.set(r,[o,c])}))}))};return r&&(i=new WeakMap,o()),[function(){e=!0},o]}(n,wn((function(){e&&r(!0)}),{s:33,g:99}),c),g=s[0],h=s[1],w=a||[],y=(u||[]).concat(w),S=function(e){var o=v||hn,u=d||hn,a=[],c=[],s=!1,g=!1,y=!1;_(e,(function(r){var e=r.attributeName,v=r.target,d=r.type,h=r.oldValue,_=r.addedNodes,m="attributes"===d,S="childList"===d,x=n===v,C=m&&f(e)?A(v,e):0,O=0!==C&&h!==C,z=p(w,e)>-1&&O;if(t&&!x){var I=!m,M=m&&z,L=M&&l&&j(v,l),R=(L?!o(v,e,h,C):I||M)&&!u(r,!!L,n,i);b(c,_),g=g||R,y=y||S}!t&&x&&O&&!o(v,e,h,C)&&(b(a,e),s=s||z)})),y&&!m(c)&&h((function(n){return c.reduce((function(t,r){return b(t,V(n,r)),j(r,n)?b(t,r):t}),[])})),t?g&&r(!1):m(a)&&!s||r(a,s)},x=new Z(S);return x.observe(n,{attributes:!0,attributeOldValue:!0,attributeFilter:y,subtree:t,childList:t,characterData:t}),e=!0,[function(){e&&(g(),x.disconnect(),e=!1)},function(){e&&S(x.takeRecords())}]},Jt="["+Yn+"]",Kt="."+Qn,Ut=["tabindex"],Qt=["wrap","cols","rows"],Zt=["id","class","style","open"],nr=function(t,r,i){var e,o,u,c=r[1],d=t.O,s=t.A,g=t.M,h=t.U,w=t.tn,y=t.rn,m=t.in,x=xt(),O=x.V,z=x.D,I=n({u:ln,o:{w:0,h:0}},(function(){var n=y(rt,Jn);n&&m(rt,Jn);var t=Mn(g),r=Mn(s),i=Ln(s);return n&&m(rt,Jn,!0),{w:r.w+t.w+i.w,h:r.h+t.h+i.h}}))[0],L=h?Qt:Zt.concat(Qt),R=wn(i,{s:function(){return e},g:function(){return o},_: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}),{})]}}),T=function(n){_(n||Ut,(function(n){if(p(Ut,n)>-1){var t=A(d,n);f(t)?A(s,n,t):M(s,n)}}))},V=function(n){var t=n.an,r=n.On,e=n.Cn,o=!t||e?i:R,u=!1;if(r){var a=r[0];u=r[1],c({cn:a})}o({an:t,ln:u})},j=function(n){I()[1]&&(n?i:R)({fn:!0})},B=(g||!z)&&function(t,r){var i=N(ct),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(nn){var a=new nn((function(n){n&&n.length>0&&u(n.pop())}),{root:t});a.observe(i),b(e,(function(){a.disconnect()}))}else{var f=function(){var n=An(i);u(n)};b(e,Gt(i,f)),f()}return F(t,i),function(){S(e),W(i)}}(d,(function(n){var t=n[0],r=n[1];c({en:t}),i({un:r})})),D=!w&&Gt(d,V,{Cn:!0,xn:!O}),E=$t(d,!1,(function(n,t){t?R({pn:!0}):w||T(n)}),{An:Zt,zn:Zt.concat(Ut)})[0],q=w&&new tn(V.bind(0,{an:!0}));return q&&q.observe(d),T(),[function(n){var t=n("updating.ignoreMutation")[0],r=n("updating.attributes"),i=r[0],f=r[1],c=n("updating.elementEvents"),d=c[0],h=c[1],w=n("updating.debounce"),_=w[0],p=w[1];if((h||f)&&(u&&(u[1](),u[0]()),u=$t(g||s,!0,j,{An:L.concat(i||[]),zn:L.concat(i||[]),In:d,Mn:Jt,Rn:function(n,r){var i=n.target,e=n.attributeName;return!(r||!e)&&k(i,Jt,Kt)||!!function(n){return l(t)&&t(n)}(n)}})),p)if(R.p(),v(_)){var b=_[0],y=_[1];e=!!a(b)&&b,o=!!a(y)&&y}else a(_)?(e=_,o=!1):(e=!1,o=!1)},function(){u&&u[0](),B&&B(),D&&D(),q&&q.disconnect(),E()}]},tr={I:{t:0,r:0,b:0,l:0},vn:!1,dn:{marginRight:0,marginBottom:0,marginLeft:0,paddingTop:0,paddingRight:0,paddingBottom:0,paddingLeft:0},bn:{x:0,y:0},wn:{x:"hidden",y:"hidden"},yn:{x:!1,y:!1},en:!1,cn:!1},rr=function(n,t){var r=Fn(t,{}),i=Hn(tr),e=new Set,o=i[0],u=function(n,t,r){S(e,[n,t||{},!!r])},f=Mt(n),c=f[0],l=f[1],v=function(n,t){var r=n.A,i=xt(),e=i.V,o=i.T,u=i.D,f=!e&&(o.x||o.y),c=[Lt(n,t),Rt(n,t),Pt(n,t)];return function(n,t,i){var e=Ft(O({an:!1,sn:!1,ln:!1,un:!1,Sn:!1,mn:!1,pn:!1,fn:!1},t),{},i),o=f||!u,l=o&&L(r),v=o&&R(r),d=e;return _(c,(function(t){d=Ft(d,t(d,n,!!i)||{},i)})),a(l)&&L(r,l),a(v)&&R(r,v),d}}(c,i),d=nr(c,i,(function(n){u(v(r,n))})),s=d[0],g=d[1],h=o.bind(0);return h.Tn=function(n){e.add(n)},h.Vn=c,[function(n,r){var i=Fn(t,n,r);s(i),u(v(i,{},r))},h,function(){e.clear(),g(),l()}]},ir=function(n){var t=N(lt+" "+n),r=N(st),i=N(gt);return P(t,r),P(r,i),{jn:t,Bn:r,Dn:i}},er=function(n,t,r){var i=Hn({})[0],e=function(n,t){var r=(0,xt().q)().L,i=t.X,e=t.O,o=t.A,u=!t.nn&&n.scrollbarsSlot,a=(l(u)?u(i,e,o):u)||(l(r)?r(i,e,o):r)||e,f=ir(vt),c=ir(dt),v=f.jn,d=c.jn;return P(a,v),P(a,d),[{En:f,kn:c},W.bind(0,[v,d])]}(n,r),o=e[0],u=e[1],a=i.bind(0);return a.Vn=o,[function(n,r){var i=Fn(t,n,r);console.log(i)},a,function(){u()}]},or={},ur="__osOptionsValidationPlugin",ar=new Set,fr=new WeakMap,cr=function n(t,r,i){var e=xt(),o=e.F,u=e.T,a=e.k,f=O({},or),c=h(t)?t:t.target,s=function(n){return fr.get(n)}(c);if(s)return s;var g=f[ur],w=function(n){var t=n||{},r=g&&g.qn;return r?r(t,!0):t},p=O({},o(),w(r)),b=qn(i),y=b[0],m=b[1],S=b[2];u.x&&u.y&&!p.nativeScrollbarsOverlaid.initialize&&S("initializationWithdrawn");var z=rr(t,p),A=z[0],I=z[1],M=z[2],L=er(t,p,I.Vn),R=L[0],T=L[2],V=function(n,t){A(n,t),R(n,t)},j=a(V.bind(0,{},!0));I.Tn((function(n,t,r){var i=n.an,e=n.ln,o=n.un,u=n.Sn,a=n.mn,f=n.fn,c=n.pn;S("updated",{updateHints:{sizeChanged:i,directionChanged:e,heightIntrinsicChanged:o,overflowAmountChanged:u,overflowStyleChanged:a,contentMutation:f,hostMutation:c},changedOptions:t,force:r})}));var B={options:function(n){if(n){var t=function n(t,r){var i={};return _(C(r).concat(C(t)),(function(e){var o=t[e],u=r[e];if(d(o)&&d(u))O(i[e]={},n(o,u));else if(x(r,e)&&u!==o){var a=!0;if(v(o)||v(u))try{ht(o)===ht(u)&&(a=!1)}catch(f){}a&&(i[e]=u)}})),i}(p,w(n));(function(n){for(var t in n)return!1;return!0})(t)||(O(p,t),V(t))}return O({},p)},on:y,off:m,state:function(){var n=I();return O({},{overflowAmount:n.bn,overflowStyle:n.wn,hasOverflow:n.yn,padding:n.I,paddingAbsolute:n.vn})},elements:function(){var n=I.Vn,t=n.X,r=n.O,i=n.I,e=n.A;return O({},{target:t,host:r,padding:i||e,viewport:e,content:n.M||e})},update:function(n){V({},n)},destroy:function(){!function(n){fr.delete(n),ar.delete(n)}(c),j(),m(),T(),M(),S("destroyed")}};return _(C(f),(function(t){var r=f[t];l(r)&&r(n,B)})),B.update(!0),function(n,t){fr.set(n,t),ar.add(n)}(c,B),S("initialized"),B};return cr.plugin=function(n){return _(v(n)?n:[n],(function(n){or[n[0]]=n[1]}))},cr.env=function(){var n=xt();return O({},{scrollbarSize:n.R,scrollbarIsOverlaid:n.T,scrollbarStyling:n.V,rtlScrollBehavior:n.B,flexboxGlue:n.D,cssCustomProperties:n.j,defaultInitializationStrategy:n.W,defaultDefaultOptions:n.N,getInitializationStrategy:n.q,setInitializationStrategy:n.P,getDefaultOptions:n.F,setDefaultOptions:n.H})},cr})); \ No newline at end of file diff --git a/packages/overlayscrollbars/rollup.config.js b/packages/overlayscrollbars/rollup.config.js index f67c144..c9132c8 100644 --- a/packages/overlayscrollbars/rollup.config.js +++ b/packages/overlayscrollbars/rollup.config.js @@ -3,6 +3,7 @@ const { devDependencies, peerDependencies } = require('./package.json'); module.exports = createRollupConfig({ project: 'OverlayScrollbars', + extractStyle: true, rollup: { external: Object.keys(devDependencies || {}).concat(Object.keys(peerDependencies || {})), output: { diff --git a/packages/overlayscrollbars/src/index.scss b/packages/overlayscrollbars/src/index.scss new file mode 100644 index 0000000..d4052a9 --- /dev/null +++ b/packages/overlayscrollbars/src/index.scss @@ -0,0 +1,4 @@ +@import './styles/sizeobserver.scss'; +@import './styles/trinsicobserver.scss'; +@import './styles/scrollbars.scss'; +@import './styles/structure.scss'; diff --git a/packages/overlayscrollbars/src/index.ts b/packages/overlayscrollbars/src/index.ts index b62d83b..e114279 100644 --- a/packages/overlayscrollbars/src/index.ts +++ b/packages/overlayscrollbars/src/index.ts @@ -1 +1,3 @@ +import 'index.scss'; + export { OverlayScrollbars as default } from 'overlayscrollbars'; diff --git a/packages/overlayscrollbars/src/plugins/optionsValidation/validation.ts b/packages/overlayscrollbars/src/plugins/optionsValidation/validation.ts index d782b7f..66524cf 100644 --- a/packages/overlayscrollbars/src/plugins/optionsValidation/validation.ts +++ b/packages/overlayscrollbars/src/plugins/optionsValidation/validation.ts @@ -58,28 +58,15 @@ type OptionsTemplateTypesDictionary = { readonly null: OptionsTemplateType; }; -/** - * A prefix and suffix tuple which serves as recognition pattern for template types. - */ -const templateTypePrefixSuffix: readonly [string, string] = ['__TPL_', '_TYPE__']; - -/** - * A object which serves as a mapping for "normal" types and template types. - * Key = normal type string - * value = template type string - */ -const optionsTemplateTypes: OptionsTemplateTypesDictionary = [ - 'boolean', - 'number', - 'string', - 'array', - 'object', - 'function', - 'null', -].reduce((result, item) => { - result[item] = templateTypePrefixSuffix[0] + item + templateTypePrefixSuffix[1]; - return result; -}, {} as OptionsTemplateTypesDictionary); +const optionsTemplateTypes: OptionsTemplateTypesDictionary = { + boolean: '__TPL_boolean_TYPE__', + number: '__TPL_number_TYPE__', + string: '__TPL_string_TYPE__', + array: '__TPL_array_TYPE__', + object: '__TPL_object_TYPE__', + function: '__TPL_function_TYPE__', + null: '__TPL_null_TYPE__', +}; /** * Validates the given options object according to the given template object and returns a object which looks like: diff --git a/packages/overlayscrollbars/src/styles/overlayscrollbars.scss b/packages/overlayscrollbars/src/styles/structure.scss similarity index 96% rename from packages/overlayscrollbars/src/styles/overlayscrollbars.scss rename to packages/overlayscrollbars/src/styles/structure.scss index 30c2c7c..0ce2a2b 100644 --- a/packages/overlayscrollbars/src/styles/overlayscrollbars.scss +++ b/packages/overlayscrollbars/src/styles/structure.scss @@ -1,7 +1,3 @@ -@import './sizeobserver.scss'; -@import './trinsicobserver.scss'; -@import './scrollbars.scss'; - .os-environment { --os-custom-prop: -1; position: fixed; diff --git a/packages/overlayscrollbars/tests/playwright/environment/index.browser.ts b/packages/overlayscrollbars/tests/playwright/environment/index.browser.ts index b5bc433..0a7fb4e 100644 --- a/packages/overlayscrollbars/tests/playwright/environment/index.browser.ts +++ b/packages/overlayscrollbars/tests/playwright/environment/index.browser.ts @@ -1,4 +1,4 @@ -import 'styles/overlayscrollbars.scss'; +import 'index.scss'; import { createDOM, appendChildren } from 'support'; import { getEnvironment } from 'environment'; diff --git a/packages/overlayscrollbars/tests/playwright/observers/domObserver/index.browser.ts b/packages/overlayscrollbars/tests/playwright/observers/domObserver/index.browser.ts index 2fe6d7b..6b91d2b 100644 --- a/packages/overlayscrollbars/tests/playwright/observers/domObserver/index.browser.ts +++ b/packages/overlayscrollbars/tests/playwright/observers/domObserver/index.browser.ts @@ -1,4 +1,4 @@ -import 'styles/overlayscrollbars.scss'; +import 'index.scss'; import './index.scss'; import should from 'should'; import { generateSelectCallback, iterateSelect } from '@/testing-browser/Select'; diff --git a/packages/overlayscrollbars/tests/playwright/observers/sizeObserver/index.browser.ts b/packages/overlayscrollbars/tests/playwright/observers/sizeObserver/index.browser.ts index 5dde808..07f1834 100644 --- a/packages/overlayscrollbars/tests/playwright/observers/sizeObserver/index.browser.ts +++ b/packages/overlayscrollbars/tests/playwright/observers/sizeObserver/index.browser.ts @@ -1,4 +1,4 @@ -import 'styles/overlayscrollbars.scss'; +import 'index.scss'; import './index.scss'; import './handleEnvironment'; import should from 'should'; diff --git a/packages/overlayscrollbars/tests/playwright/observers/trinsicObserver/index.browser.ts b/packages/overlayscrollbars/tests/playwright/observers/trinsicObserver/index.browser.ts index 5682c86..cd2647b 100644 --- a/packages/overlayscrollbars/tests/playwright/observers/trinsicObserver/index.browser.ts +++ b/packages/overlayscrollbars/tests/playwright/observers/trinsicObserver/index.browser.ts @@ -1,4 +1,4 @@ -import 'styles/overlayscrollbars.scss'; +import 'index.scss'; import './index.scss'; import './handleEnvironment'; import should from 'should'; diff --git a/packages/overlayscrollbars/tests/playwright/setups/structureSetup/nesting/index.browser.ts b/packages/overlayscrollbars/tests/playwright/setups/structureSetup/nesting/index.browser.ts index 0f9d5f3..0f92955 100644 --- a/packages/overlayscrollbars/tests/playwright/setups/structureSetup/nesting/index.browser.ts +++ b/packages/overlayscrollbars/tests/playwright/setups/structureSetup/nesting/index.browser.ts @@ -1,5 +1,5 @@ import './index.scss'; -import 'styles/overlayscrollbars.scss'; +import 'index.scss'; import should from 'should'; import { OverlayScrollbars } from 'overlayscrollbars'; import { resize } from '@/testing-browser/Resize'; diff --git a/packages/overlayscrollbars/tests/playwright/setups/structureSetup/observers/index.browser.ts b/packages/overlayscrollbars/tests/playwright/setups/structureSetup/observers/index.browser.ts index 906a3a6..795faae 100644 --- a/packages/overlayscrollbars/tests/playwright/setups/structureSetup/observers/index.browser.ts +++ b/packages/overlayscrollbars/tests/playwright/setups/structureSetup/observers/index.browser.ts @@ -1,5 +1,5 @@ import './index.scss'; -import 'styles/overlayscrollbars.scss'; +import 'index.scss'; // test viewport inheritted attrs (tabindex) for multiple and single element init // test appear & resize for multiple and single element init diff --git a/packages/overlayscrollbars/tests/playwright/setups/structureSetup/update/index.browser.ts b/packages/overlayscrollbars/tests/playwright/setups/structureSetup/update/index.browser.ts index 62c94e3..9fac564 100644 --- a/packages/overlayscrollbars/tests/playwright/setups/structureSetup/update/index.browser.ts +++ b/packages/overlayscrollbars/tests/playwright/setups/structureSetup/update/index.browser.ts @@ -1,8 +1,8 @@ -import 'styles/overlayscrollbars.scss'; +import 'index.scss'; import './index.scss'; import './handleEnvironment'; -import should from 'should'; import { OverlayScrollbars } from 'overlayscrollbars'; +import should from 'should'; import { assignDeep, clientSize, diff --git a/yarn.lock b/yarn.lock index e194a6d..8431327 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2015,6 +2015,18 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== +autoprefixer@^10.4.7: + version "10.4.7" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.7.tgz#1db8d195f41a52ca5069b7593be167618edbbedf" + integrity sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA== + dependencies: + browserslist "^4.20.3" + caniuse-lite "^1.0.30001335" + fraction.js "^4.2.0" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" @@ -2205,6 +2217,16 @@ browserslist@^4.0.0, browserslist@^4.20.2, browserslist@^4.20.4: node-releases "^2.0.5" update-browserslist-db "^1.0.0" +browserslist@^4.20.3: + version "4.21.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.1.tgz#c9b9b0a54c7607e8dc3e01a0d311727188011a00" + integrity sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ== + dependencies: + caniuse-lite "^1.0.30001359" + electron-to-chromium "^1.4.172" + node-releases "^2.0.5" + update-browserslist-db "^1.0.4" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -2319,6 +2341,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001317, caniuse-lite@^1.0.30001328, can resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001358.tgz#473d35dabf5e448b463095cab7924e96ccfb8c00" integrity sha512-hvp8PSRymk85R20bsDra7ZTCpSVGN/PAz9pSAjPSjKC+rNmnUk5vCRgJwiTT/O4feQ/yu/drvZYpKxxhbFuChw== +caniuse-lite@^1.0.30001335, caniuse-lite@^1.0.30001359: + version "1.0.30001363" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001363.tgz#26bec2d606924ba318235944e1193304ea7c4f15" + integrity sha512-HpQhpzTGGPVMnCjIomjt+jvyUu8vNFo3TaDiZ/RcoTrlOq/5+tC8zHdsbgFB6MxmaY+jCpsH09aD80Bb4Ow3Sg== + canvas@^2.6.1: version "2.9.1" resolved "https://registry.yarnpkg.com/canvas/-/canvas-2.9.1.tgz#58ec841cba36cef0675bc7a74ebd1561f0b476b0" @@ -2943,6 +2970,11 @@ electron-to-chromium@^1.4.164, electron-to-chromium@^1.4.84: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.167.tgz#72424aebc85df12c5331d37b1bcfd1ae01322c55" integrity sha512-lPHuHXBwpkr4RcfaZBKm6TKOWG/1N9mVggUpP4fY3l1JIUU2x4fkM8928smYdZ5lF+6KCTAxo1aK9JmqT+X71Q== +electron-to-chromium@^1.4.172: + version "1.4.185" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.185.tgz#3432d7944f1c5fe20664bb45d9cced2151405ce2" + integrity sha512-9kV/isoOGpKkBt04yYNaSWIBn3187Q5VZRtoReq8oz5NY/A4XmU6cAoqgQlDp7kKJCZMRjWZ8nsQyxfpFHvfyw== + emittery@^0.10.2: version "0.10.2" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" @@ -3446,6 +3478,11 @@ estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== +estree-walker@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" + integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== + estree-walker@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" @@ -3627,6 +3664,11 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== + fs-extra@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" @@ -5405,6 +5447,11 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + normalize-url@^3.0.0: version "3.3.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" @@ -6073,7 +6120,7 @@ postcss-value-parser@^3.0.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: +postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== @@ -6086,7 +6133,7 @@ postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: picocolors "^0.2.1" source-map "^0.6.1" -postcss@^8.2.4, postcss@^8.4.13: +postcss@^8.2.4, postcss@^8.4.13, postcss@^8.4.14: version "8.4.14" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== @@ -6476,6 +6523,11 @@ rollup-plugin-esbuild@^4.9.1: joycon "^3.0.1" jsonc-parser "^3.0.0" +rollup-plugin-ignore-import@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-ignore-import/-/rollup-plugin-ignore-import-1.3.2.tgz#5379eac73d2c7e389ebeb5b3a90ae4c15c15e6c8" + integrity sha512-q7yH2c+PKVfb61+MTXqqyBHIgflikumC7OEB+OfQWNsSmDqE5FLZLeewcBGl1VDmjDjSXuALXsaBjyIsl3oNmQ== + rollup-plugin-livereload@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/rollup-plugin-livereload/-/rollup-plugin-livereload-2.0.5.tgz#4747fa292a2cceb0c972c573d71b3d66b4252b37" @@ -6483,6 +6535,13 @@ rollup-plugin-livereload@^2.0.0: dependencies: livereload "^0.9.1" +rollup-plugin-scss@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-scss/-/rollup-plugin-scss-3.0.0.tgz#35ad0adc614217e0278e702d8a674820faa0929e" + integrity sha512-UldNaNHEon2a5IusHvj/Nnwc7q13YDvbFxz5pfNbHBNStxGoUNyM+0XwAA/UafJ1u8XRPGdBMrhWFthrrGZdWQ== + dependencies: + rollup-pluginutils "^2.3.3" + rollup-plugin-serve@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/rollup-plugin-serve/-/rollup-plugin-serve-1.1.0.tgz#0654a57021a21b903340c69940f7463706e8288d" @@ -6541,6 +6600,13 @@ rollup-plugin-ts@^3.0.1: ts-clone-node "^1.0.0" tslib "^2.4.0" +rollup-pluginutils@^2.3.3: + version "2.8.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" + integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== + dependencies: + estree-walker "^0.6.1" + rollup@^2.59.0, rollup@^2.75.5: version "2.75.7" resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.75.7.tgz#221ff11887ae271e37dcc649ba32ce1590aaa0b9" @@ -7350,6 +7416,14 @@ update-browserslist-db@^1.0.0: escalade "^3.1.1" picocolors "^1.0.0" +update-browserslist-db@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz#dbfc5a789caa26b1db8990796c2c8ebbce304824" + integrity sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"