diff --git a/.eslintrc.js b/.eslintrc.js index 3e78ec5..76d441a 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,8 +1,12 @@ const resolve = require('./resolve.config'); -const browserRollupConfig = require('./config/jest-puppeteer.rollup.config.js'); module.exports = { - extends: ['plugin:jest-playwright/recommended', 'plugin:@typescript-eslint/recommended', 'plugin:react/recommended', 'airbnb', 'prettier'], + extends: [ + 'plugin:@typescript-eslint/recommended', + 'plugin:react/recommended', + 'airbnb', + 'prettier', + ], env: { browser: true, es2020: true, @@ -43,6 +47,13 @@ module.exports = { 'consistent-return': 'off', 'import/prefer-default-export': 'off', 'import/no-extraneous-dependencies': 'off', + 'import/no-unresolved': [ + 'error', + { + ignore: [`^@/.*`], + }, + ], + '@typescript-eslint/ban-ts-comment': 'off', '@typescript-eslint/no-non-null-assertion': 'off', '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/explicit-module-boundary-types': 'off', @@ -54,12 +65,6 @@ module.exports = { allowedNames: ['self', '_self'], // Allow `const self = this`; `[]` by default }, ], - 'import/no-unresolved': [ - 'error', - { - ignore: [`^@/.*`], - }, - ], 'import/extensions': [ 'error', 'ignorePackages', @@ -73,8 +78,10 @@ module.exports = { }, overrides: [ { - files: ['*.test.*', `*${browserRollupConfig.js.input}.*`], + files: ['*.test.*', '**/tests/**'], rules: { + 'no-shadow': 'off', + 'no-use-before-define': 'off', 'no-restricted-syntax': 'off', '@typescript-eslint/ban-ts-comment': 'off', '@typescript-eslint/no-empty-function': 'off', @@ -87,16 +94,10 @@ module.exports = { 'no-void': 'off', 'no-empty-function': 'off', 'no-new-func': 'off', - 'import/no-unresolved': [ - 'error', - { - ignore: [`\\./${browserRollupConfig.build}/${browserRollupConfig.html.output}$`, `^@/.*`], - }, - ], }, }, { - files: ['rollup.config.*'], + files: ['*rollup*'], rules: { 'no-console': 'off', 'global-require': 'off', diff --git a/.prettierrc b/.prettierrc index a324b31..9b0f0c6 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,5 +1,5 @@ { - "printWidth": 150, + "printWidth": 100, "tabWidth": 2, "singleQuote": true, "trailingComma": "es5", diff --git a/babel.config.base.js b/babel.config.base.js index 7247b49..b077b0d 100644 --- a/babel.config.base.js +++ b/babel.config.base.js @@ -1,21 +1,13 @@ module.exports = function (api) { api.cache.using(() => process.env.NODE_ENV); - const isRollup = api.caller((caller) => !!(caller && caller.name === 'babel-rollup-build')); const isJest = api.caller((caller) => !!(caller && caller.name === 'babel-jest')); - if (isRollup) { - return { - plugins: [ - '@babel/plugin-transform-runtime', - '@babel/plugin-proposal-class-properties', - ['@babel/plugin-proposal-private-methods', { loose: false }], - ], - }; - } - if (isJest) { return { - plugins: ['@babel/plugin-transform-modules-commonjs', ['@babel/plugin-proposal-private-methods', { loose: false }]], + plugins: [ + '@babel/plugin-transform-modules-commonjs', + ['@babel/plugin-proposal-private-methods', { loose: false }], + ], presets: [ [ '@babel/preset-env', diff --git a/config/jest-browser.env.js b/config/jest-browser.env.js deleted file mode 100644 index da645ee..0000000 --- a/config/jest-browser.env.js +++ /dev/null @@ -1,32 +0,0 @@ -const PlaywrightEnvironment = require('jest-playwright-preset/lib/PlaywrightEnvironment').default; -const { setupRollupTest, cleanupRollupTest } = require('./jest-browser.rollup.js'); - -const buildTests = []; - -class BrowserRollupEnvironment extends PlaywrightEnvironment { - constructor(envConfig, envContext) { - super(envConfig, envContext); - - this.watch = (envConfig.displayName.name || '').includes('-dev'); - this.ctx = envContext; - this.cfg = envConfig; - } - - async setup() { - const { testPath } = this.ctx; - - if (!buildTests.includes(testPath)) { - await cleanupRollupTest(testPath, this.cfg.cache); - await setupRollupTest(this.cfg.rootDir, this.ctx.testPath, this.cfg.cache && this.cfg.cacheDirectory, this.watch); - buildTests.push(testPath); - } - - await super.setup(); - } - - async teardown() { - await super.teardown(); - } -} - -module.exports = BrowserRollupEnvironment; diff --git a/config/jest-browser.globalSetup.js b/config/jest-browser.globalSetup.js deleted file mode 100644 index af775c0..0000000 --- a/config/jest-browser.globalSetup.js +++ /dev/null @@ -1,5 +0,0 @@ -const { globalSetup } = require('jest-playwright-preset'); - -module.exports = async (jestConfig) => { - await globalSetup(jestConfig); -}; diff --git a/config/jest-browser.globalTeardown.js b/config/jest-browser.globalTeardown.js deleted file mode 100644 index f88db2c..0000000 --- a/config/jest-browser.globalTeardown.js +++ /dev/null @@ -1,36 +0,0 @@ -const fs = require('fs'); -const path = require('path'); -const { execSync } = require('child_process'); -const del = require('del'); -const { globalTeardown } = require('jest-playwright-preset'); - -const coverageTempDir = './.nyc_output'; -const coverageTempDirFile = 'coverage.json'; -const reportDir = './.coverage/browser'; - -module.exports = async (jestConfig) => { - await globalTeardown(jestConfig); - - const { rootDir } = jestConfig; - const coverageTempDirPath = path.resolve(rootDir, coverageTempDir); - const coverageTempFilePath = path.resolve(coverageTempDirPath, coverageTempDirFile); - const reportDirPath = path.resolve(rootDir, reportDir); - - if (fs.existsSync(coverageTempFilePath)) { - const coverageReportText = ' COVERAGE '; - - console.log(''); - console.log(`\x1b[1m\x1b[44m${coverageReportText}\x1b[0m`); - console.log(`Reporting from: "${path.relative(rootDir, coverageTempFilePath)}" in "${path.relative(rootDir, reportDirPath)}"`); - - del.sync(reportDirPath); - execSync(`npx nyc report --reporter=lcov --report-dir=${reportDir}`, { - cwd: rootDir, - }); - - const [deletedTempDir] = del.sync(coverageTempDirPath); - if (deletedTempDir) { - console.log('Deleted:', path.relative(rootDir, deletedTempDir)); - } - } -}; diff --git a/config/jest-browser.rollup.config.js b/config/jest-browser.rollup.config.js deleted file mode 100644 index 177cf2b..0000000 --- a/config/jest-browser.rollup.config.js +++ /dev/null @@ -1,19 +0,0 @@ -const path = require('path'); - -module.exports = { - port: 8080, - root: path.join(__dirname, '../'), - build: '.build', - html: { - input: 'index.html', - output: 'build.html', - }, - js: { - input: 'index.browser', - output: 'build', - }, - dev: { - servePort: 18080, - livereloadPort: 28080, - }, -}; diff --git a/config/jest-browser.rollup.js b/config/jest-browser.rollup.js deleted file mode 100644 index 75b8e04..0000000 --- a/config/jest-browser.rollup.js +++ /dev/null @@ -1,337 +0,0 @@ -const fs = require('fs'); -const crypto = require('crypto'); -const path = require('path'); -const del = require('del'); -const chalk = require('chalk'); -const readline = require('readline'); -const rollup = require('rollup'); -const rollupPluginHtml = require('@rollup/plugin-html'); -const rollupPluginStyles = require('rollup-plugin-styles'); -const rollupPluginServe = require('rollup-plugin-serve'); -const rollupPluginLivereload = require('rollup-plugin-livereload'); -const deploymentConfig = require('./jest-browser.rollup.config.js'); - -const rollupConfigName = 'rollup.config.js'; -const cacheFilePrefix = 'jest-browser-overlayscrollbars-cache-'; -const cacheEncoding = 'utf8'; -const cacheHash = 'md5'; - -const rollupAdditionalWatchFiles = (files) => ({ - buildStart() { - if (files) { - files.forEach((file) => { - if (fs.existsSync(file)) { - this.addWatchFile(file); - } - }); - } - }, -}); - -const makeHtmlAttributes = (attributes) => { - if (!attributes) { - return ''; - } - - const keys = Object.keys(attributes); - // eslint-disable-next-line no-param-reassign - // eslint-disable-next-line no-return-assign - return keys.reduce((result, key) => (result += ` ${key}="${attributes[key]}"`), ''); -}; - -const genHtmlTemplateFunc = (contentOrContentFn) => ({ attributes, files, meta, publicPath, title }) => { - const scripts = (files.js || []) - .map(({ fileName }) => ``) - .join('\n'); - - const links = (files.css || []) - .map(({ fileName }) => ``) - .join('\n'); - - const metas = meta.map((input) => ``).join('\n'); - - return ` - - - ${metas} - ${title} - - ${links} - - - ${(typeof contentOrContentFn === 'function' ? contentOrContentFn() : contentOrContentFn) || ''} - ${scripts} -
- -`; -}; - -const getAllFilesFrom = (dir, except) => { - const result = []; - fs.readdirSync(dir).forEach((dirOrFile) => { - if (!except.includes(dirOrFile)) { - const dirOrFileResolved = path.resolve(dir, dirOrFile); - if (fs.statSync(dirOrFileResolved).isDirectory()) { - result.push(...getAllFilesFrom(dirOrFileResolved)); - } - result.push(dirOrFileResolved); - } - }); - return result; -}; - -const createCacheObj = (testPath) => { - const testFileName = path.basename(testPath); - const testFiles = getAllFilesFrom(path.dirname(testPath), [deploymentConfig.build, testFileName]); - const obj = {}; - - testFiles.forEach((dir) => { - obj[dir] = crypto.createHash(cacheHash).update(fs.readFileSync(dir, cacheEncoding), cacheEncoding).digest('hex'); - }); - - return obj; -}; - -const filesChanged = (testPath, cacheDir) => { - let result = true; - const cacheObjString = JSON.stringify(createCacheObj(testPath)); - const getCacheFile = path.resolve(cacheDir, cacheFilePrefix + crypto.createHash(cacheHash).update(testPath, cacheEncoding).digest('hex')); - if (fs.existsSync(getCacheFile)) { - result = cacheObjString !== fs.readFileSync(getCacheFile, cacheEncoding); - } - - if (result) { - fs.writeFileSync(getCacheFile, cacheObjString); - } - - return result; -}; - -const setupRollupTest = async (rootDir, testPath, cacheDir, watch) => { - const rollupWatchers = []; - const rollupServers = []; - const testDir = path.dirname(testPath); - const testName = path.basename(testDir); - const changed = cacheDir && !watch ? filesChanged(testPath, cacheDir) : true; - const buildFolderExists = fs.existsSync(path.resolve(testDir, deploymentConfig.build)); - - if (changed || !buildFolderExists) { - const rollupConfigPath = path.resolve(rootDir, rollupConfigName); - - if (fs.existsSync(rollupConfigPath)) { - const rollupConfig = require(rollupConfigPath); // eslint-disable-line - - if (typeof rollupConfig === 'function') { - try { - const htmlFilePath = path.resolve(testDir, deploymentConfig.html.input); - const dist = path.resolve(testDir, deploymentConfig.build); - const getHtmlFileContent = () => (fs.existsSync(htmlFilePath) ? fs.readFileSync(htmlFilePath, 'utf8') : null); - const logBuilding = (re) => { - const text = re ? ' RE-BUILDING ' : ' BUILDING '; - console.log(`${chalk.bgBlue.bold.whiteBright(text)} ${chalk.blackBright(testPath)}`); // eslint-disable-line - }; - const logBundleFinish = (duration) => { - if (duration) { - console.log(`Bundle finished after ${Math.round(duration / 1000)} seconds.`); // eslint-disable-line - } else { - console.log(`Bundle finished.`); // eslint-disable-line - } - }; - - let rollupConfigObj = rollupConfig(undefined, { - project: rootDir, - overwrite: ({ defaultConfig }) => { - return { - dist, - input: path.resolve(testDir, deploymentConfig.js.input), - file: deploymentConfig.js.output, - types: null, - minVersions: false, - esmBuild: false, - sourcemap: true, - name: testName, - pipeline: [ - rollupPluginStyles(), - ...defaultConfig.pipeline, - rollupPluginHtml({ - title: `Jest-Browser: ${testName}`, - fileName: deploymentConfig.html.output, - template: genHtmlTemplateFunc(getHtmlFileContent), - meta: [{ charset: 'utf-8' }, { 'http-equiv': 'X-UA-Compatible', content: 'IE=edge' }], - }), - ...(watch - ? [ - rollupAdditionalWatchFiles([htmlFilePath]), - rollupPluginServe({ - contentBase: dist, - historyApiFallback: `/${deploymentConfig.html.output}`, - port: deploymentConfig.dev.servePort, - onListening(server) { - rollupServers.push(server); - }, - }), - rollupPluginLivereload({ - watch: dist, - port: deploymentConfig.dev.livereloadPort, - }), - ] - : []), - ], - }; - }, - silent: true, - fast: true, - }); - - if (!Array.isArray(rollupConfigObj)) { - rollupConfigObj = [rollupConfigObj]; - } - - for (let i = 0; i < rollupConfigObj.length; i++) { - const inputConfig = rollupConfigObj[i]; - let { output } = inputConfig; - - if (!Array.isArray(output)) { - output = [output]; - } - - if (watch) { - let firstWatch = true; - const rollupWatcher = rollup.watch({ - ...inputConfig, - output, - }); - - // eslint-disable-next-line no-await-in-loop - await new Promise((resolve) => { - rollupWatcher.on('event', ({ code, duration, error, result }) => { - if (code === 'ERROR') { - console.log('Error:', error); // eslint-disable-line - } - if (code === 'START') { - if (firstWatch) { - console.log(''); // eslint-disable-line - } - logBuilding(!firstWatch); - } - if (code === 'BUNDLE_END') { - logBundleFinish(duration); - if (result && result.close) { - result.close(); - } - } - if (code === 'END') { - console.log('Watching for changes, press ENTER to continue.'); // eslint-disable-line - console.log(''); // eslint-disable-line - if (firstWatch) { - firstWatch = false; - resolve(); - } - } - }); - }); - - rollupWatchers.push(rollupWatcher); - } else { - console.log(''); // eslint-disable-line - logBuilding(); - const startTime = Date.now(); - // eslint-disable-next-line no-await-in-loop - const bundle = await rollup.rollup(inputConfig); - - for (let v = 0; v < output.length; v++) { - const outputConfig = output[i]; - // eslint-disable-next-line no-await-in-loop - await bundle.write(outputConfig); - - const endTime = Date.now(); - logBundleFinish(endTime - startTime); - } - - console.log(''); // eslint-disable-line - } - } - - if (watch) { - const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout, - }); - - await new Promise((resolve) => { - rl.on('line', () => { - resolve(); - }); - rl.on('close', () => { - resolve(); - }); - }); - - rl.close(); - rollupWatchers.forEach((watcher) => { - watcher.close(); - }); - rollupServers.forEach((server) => { - server.close(); - }); - if (rollupPluginLivereload && global.PLUGIN_LIVERELOAD && global.PLUGIN_LIVERELOAD.server) { - global.PLUGIN_LIVERELOAD.server.close(); - global.PLUGIN_LIVERELOAD.server = null; - } - } - } catch (e) { - console.warn(e); - } - } - } - } -}; - -const cleanupRollupTest = async (testPath, cache) => { - if (!cache) { - await del(path.resolve(path.dirname(testPath), deploymentConfig.build)); - } -}; - -module.exports = { setupRollupTest, cleanupRollupTest }; diff --git a/config/jest-browser.setupAfterEnv.js b/config/jest-browser.setupAfterEnv.js deleted file mode 100644 index 6e64826..0000000 --- a/config/jest-browser.setupAfterEnv.js +++ /dev/null @@ -1,2 +0,0 @@ -jest.setTimeout(60000 * 5); -context.setDefaultTimeout(60000 * 5); diff --git a/config/jest-test-server.js b/config/jest-test-server.js deleted file mode 100644 index eca1c8b..0000000 --- a/config/jest-test-server.js +++ /dev/null @@ -1,7 +0,0 @@ -const express = require('express'); -const deploymentConfig = require('./jest-browser.rollup.config.js'); - -const app = express(); - -app.use(express.static(deploymentConfig.root)); -app.listen(deploymentConfig.port); diff --git a/config/jest-test-server.loader.js b/config/jest-test-server.loader.js deleted file mode 100644 index 326a743..0000000 --- a/config/jest-test-server.loader.js +++ /dev/null @@ -1,10 +0,0 @@ -const path = require('path'); -const deploymentConfig = require('./jest-browser.rollup.config.js'); - -module.exports = { - process: (src, filePath) => { - const deploymentPath = path.relative(deploymentConfig.root, filePath); - const split = deploymentPath.split(path.sep); - return `module.exports = ${JSON.stringify(`http://127.0.0.1:${deploymentConfig.port}/${path.posix.join(...split)}`)}`; - }, -}; diff --git a/config/jest-jsdom.setup.js b/config/jest/jest.setup.js similarity index 100% rename from config/jest-jsdom.setup.js rename to config/jest/jest.setup.js diff --git a/config/playwright/rollup.config.js b/config/playwright/rollup.config.js new file mode 100644 index 0000000..863422d --- /dev/null +++ b/config/playwright/rollup.config.js @@ -0,0 +1,73 @@ +const fs = require('fs'); +const path = require('path'); +const rollupPluginStyles = require('rollup-plugin-styles'); +const rollupPluginServe = require('rollup-plugin-serve'); +const rollupPluginLivereload = require('rollup-plugin-livereload'); + +const createRollupConfig = require('../rollup/rollup.config'); +const rollupPluginHtml = require('./rollup.pluginHtml'); +const rollupAdditionalWatchFiles = require('./rollup.pluginAdditionalWatchFiles'); + +const portRange = { + min: 20000, + max: 60000, +}; + +const meta = { + dist: './.build', + html: './index.html', + input: './index.browser', +}; + +module.exports = (testDir, onListening = null) => { + const name = path.basename(testDir); + const htmlFilePath = path.resolve(testDir, meta.html); + const dist = path.resolve(testDir, meta.dist); + const htmlName = `${name}.html`; + const { min, max } = portRange; + const port = Math.floor(Math.random() * (max - min + 1) + min); + + return createRollupConfig({ + project: name, + mode: 'dev', + paths: { + dist, + src: path.resolve(testDir, './'), + }, + versions: { + minified: false, + module: false, + }, + rollup: { + input: path.resolve(testDir, meta.input), + context: 'this', + moduleContext: () => 'this', + output: { + sourcemap: true, + }, + plugins: [ + rollupPluginStyles(), + rollupPluginHtml(`Playwright: ${name}`, htmlName, () => + fs.existsSync(htmlFilePath) ? fs.readFileSync(htmlFilePath, 'utf8') : null + ), + ...(onListening + ? [ + rollupAdditionalWatchFiles([htmlFilePath]), + rollupPluginServe({ + contentBase: dist, + historyApiFallback: `/${htmlName}`, + host: '127.0.0.1', + port, + onListening, + }), + rollupPluginLivereload({ + watch: dist, + port: port - 1, + verbose: false, + }), + ] + : []), + ], + }, + }); +}; diff --git a/config/playwright/rollup.pluginAdditionalWatchFiles.js b/config/playwright/rollup.pluginAdditionalWatchFiles.js new file mode 100644 index 0000000..24097e5 --- /dev/null +++ b/config/playwright/rollup.pluginAdditionalWatchFiles.js @@ -0,0 +1,13 @@ +const fs = require('fs'); + +module.exports = (files) => ({ + buildStart() { + if (files) { + files.forEach((file) => { + if (fs.existsSync(file)) { + this.addWatchFile(file); + } + }); + } + }, +}); diff --git a/config/playwright/rollup.pluginHtml.js b/config/playwright/rollup.pluginHtml.js new file mode 100644 index 0000000..601e348 --- /dev/null +++ b/config/playwright/rollup.pluginHtml.js @@ -0,0 +1,102 @@ +const rollupPluginHtml = require('@rollup/plugin-html'); + +const makeHtmlAttributes = (attributes) => { + if (!attributes) { + return ''; + } + + const keys = Object.keys(attributes); + // eslint-disable-next-line no-param-reassign + // eslint-disable-next-line no-return-assign + return keys.reduce((result, key) => (result += ` ${key}="${attributes[key]}"`), ''); +}; + +const genHtmlTemplateFunc = (contentOrContentFn) => ({ + attributes, + files, + meta, + publicPath, + title, +}) => { + const scripts = (files.js || []) + .map( + ({ fileName }) => + `` + ) + .join('\n'); + + const links = (files.css || []) + .map( + ({ fileName }) => + `` + ) + .join('\n'); + + const metas = meta.map((input) => ``).join('\n'); + + return ` + + + ${metas} + ${title} + + ${links} + + + ${(typeof contentOrContentFn === 'function' ? contentOrContentFn() : contentOrContentFn) || ''} + ${scripts} +
+ +`; +}; + +module.exports = (title, fileName, getHtmlContent) => + rollupPluginHtml({ + title, + fileName, + template: genHtmlTemplateFunc(getHtmlContent), + meta: [{ charset: 'utf-8' }, { 'http-equiv': 'X-UA-Compatible', content: 'IE=edge' }], + }); diff --git a/config/rollup/babel.config.esm.js b/config/rollup/babel.config.esm.js new file mode 100644 index 0000000..d401820 --- /dev/null +++ b/config/rollup/babel.config.esm.js @@ -0,0 +1,14 @@ +module.exports = { + presets: [ + [ + '@babel/preset-env', + { + loose: true, + bugfixes: true, + targets: { + esmodules: true, + }, + }, + ], + ], +}; diff --git a/config/rollup/babel.config.umd.js b/config/rollup/babel.config.umd.js new file mode 100644 index 0000000..30d30f0 --- /dev/null +++ b/config/rollup/babel.config.umd.js @@ -0,0 +1,13 @@ +module.exports = { + presets: [ + [ + '@babel/preset-env', + { + loose: true, + targets: { + ie: '11', + }, + }, + ], + ], +}; diff --git a/config/rollup/defaultOptions.js b/config/rollup/defaultOptions.js new file mode 100644 index 0000000..c1e46ed --- /dev/null +++ b/config/rollup/defaultOptions.js @@ -0,0 +1,21 @@ +module.exports = { + project: null, + mode: 'build', + paths: { + src: './src', + dist: './dist', + types: './types', + }, + versions: { + minified: true, + module: true, + }, + alias: {}, + rollup: { + input: './src/index', + output: { + sourcemap: true, + exports: 'auto', + }, + }, +}; diff --git a/config/rollup/pipeline.build.js b/config/rollup/pipeline.build.js new file mode 100644 index 0000000..bdc3e56 --- /dev/null +++ b/config/rollup/pipeline.build.js @@ -0,0 +1,107 @@ +const path = require('path'); +const { babel: rollupBabelInputPlugin } = require('@rollup/plugin-babel'); +const { terser: rollupTerser } = require('rollup-plugin-terser'); +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 { extensions } = require('../../resolve.config.json'); + +const createOutputWithMinifiedVersion = (output, esm, buildMinifiedVersion) => + [output].concat( + buildMinifiedVersion + ? [ + { + ...output, + compact: true, + file: output.file.replace('.js', '.min.js'), + sourcemap: false, + plugins: [ + ...(output.plugins || []), + rollupTerser({ + ecma: esm ? 2015 : 5, + safari10: true, + mangle: { + safari10: true, + properties: { + regex: /^_/, + }, + }, + compress: { + evaluate: false, + }, + }), + ], + }, + ] + : [] + ); + +module.exports = (esm, options, declarationFiles = false) => { + const { rollup, paths, versions, alias } = options; + const { output: rollupOutput, input, plugins = [], ...rollupOptions } = rollup; + const { name, file, globals, exports, sourcemap: rawSourcemap, ...outputConfig } = rollupOutput; + const { minified: buildMinifiedVersion } = versions; + const { src: srcPath, dist: distPath, types: typesPath } = paths; + const sourcemap = rawSourcemap; + + const output = createOutputWithMinifiedVersion( + { + ...outputConfig, + ...(!esm && { + name, + globals, + exports, + }), + sourcemap, + format: esm ? 'esm' : 'umd', + generatedCode: esm ? 'es2015' : 'es5', + file: path.resolve(distPath, `${file}${esm ? '.esm' : ''}.js`), + }, + esm, + buildMinifiedVersion + ); + + return { + input, + output, + ...rollupOptions, + plugins: [ + rollupAlias(alias), + rollupTs({ + tsconfig: (resolvedConfig) => ({ + ...resolvedConfig, + declaration: declarationFiles, + declarationDir: typesPath, + }), + include: ['*.ts+(|x)', '**/*.ts+(|x)'], + exclude: ['node_modules', '**/node_modules/*'], + }), + rollupResolve(srcPath), + rollupCommonjs(sourcemap), + rollupBabelInputPlugin({ + ...(esm ? babelConfigEsm : babelConfigUmd), + assumptions: { + iterableIsArray: true, + noNewArrows: true, + noClassCalls: true, + ignoreToPrimitiveHint: true, + ignoreFunctionLength: true, + }, + plugins: [ + '@babel/plugin-transform-runtime', + ['@babel/plugin-proposal-class-properties', { loose: true }], + ['@babel/plugin-proposal-private-methods', { loose: true }], + ], + babelHelpers: 'runtime', + shouldPrintComment: () => false, + caller: { + name: 'babel-rollup-build', + }, + extensions, + }), + ...plugins, + ], + }; +}; diff --git a/config/rollup/pipeline.common.plugins.js b/config/rollup/pipeline.common.plugins.js new file mode 100644 index 0000000..1dfcfc2 --- /dev/null +++ b/config/rollup/pipeline.common.plugins.js @@ -0,0 +1,23 @@ +const { nodeResolve: rollupPluginResolve } = require('@rollup/plugin-node-resolve'); +const rollupPluginCommonjs = require('@rollup/plugin-commonjs'); +const rollupPluginAlias = require('@rollup/plugin-alias'); +const { extensions, directories } = require('../../resolve.config.json'); + +module.exports = { + rollupAlias: (aliasEntries) => + rollupPluginAlias({ + entries: aliasEntries, + }), + rollupCommonjs: (sourcemap) => + rollupPluginCommonjs({ + sourceMap: sourcemap, + extensions, + }), + rollupResolve: (srcPath) => + rollupPluginResolve({ + mainFields: ['browser', 'umd:main', 'module', 'main'], + rootDir: srcPath, + moduleDirectories: directories, + extensions, + }), +}; diff --git a/config/rollup/pipeline.dev.js b/config/rollup/pipeline.dev.js new file mode 100644 index 0000000..6d4ebb5 --- /dev/null +++ b/config/rollup/pipeline.dev.js @@ -0,0 +1,37 @@ +const path = require('path'); +const { default: rollupEsBuild } = require('rollup-plugin-esbuild'); +const { rollupCommonjs, rollupResolve, rollupAlias } = require('./pipeline.common.plugins'); + +module.exports = (options) => { + const { rollup, paths, alias } = options; + const { output: rollupOutput, input, plugins = [], ...rollupOptions } = rollup; + const { file, sourcemap: rawSourcemap, ...outputConfig } = rollupOutput; + const { src: srcPath, dist: distPath } = paths; + const sourcemap = rawSourcemap; + + const output = { + ...outputConfig, + sourcemap: true, + format: 'esm', + generatedCode: 'es2015', + file: path.resolve(distPath, `${file}.js`), + }; + + return { + input, + output, + ...rollupOptions, + plugins: [ + rollupAlias(alias), + rollupResolve(srcPath), + rollupEsBuild({ + include: /\.[jt]sx?$/, + sourceMap: true, + target: 'es6', + tsconfig: './tsconfig.json', + }), + rollupCommonjs(sourcemap), + ...plugins, + ], + }; +}; diff --git a/config/rollup/rollup.config.js b/config/rollup/rollup.config.js new file mode 100644 index 0000000..343a7af --- /dev/null +++ b/config/rollup/rollup.config.js @@ -0,0 +1,107 @@ +const fs = require('fs'); +const path = require('path'); +const glob = require('glob'); +const resolve = require('../../resolve.config.json'); +const pkg = require('../../package.json'); + +const defaultOptions = require('./defaultOptions'); +const pipelineBuild = require('./pipeline.build'); +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; + +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; + return normalizePath(result && appendExt ? appendExtension(result) : result); +}; + +const getWorkspaceAliases = () => + pkg.workspaces + .map((pattern) => glob.sync(pattern, { cwd: repoRoot })) + .flat() + .reduce((obj, resolvedPath) => { + let projTsConfig; + const absolutePath = path.resolve(repoRoot, resolvedPath); + try { + projTsConfig = require(`${path.resolve(repoRoot, resolvedPath)}/tsconfig.json`); + } catch {} + + obj[`@/${path.basename(absolutePath)}`] = `${normalizePath( + 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 projectPath = process.cwd(); + const mergedOptions = { + project: project || path.basename(projectPath), + mode: rawMode || defaultMode, + repoRoot, + paths: { + ...defaultPaths, + ...rawPaths, + }, + versions: { + ...defaultVersions, + ...rawVersions, + }, + alias: { + ...getWorkspaceAliases(), + ...defaultAlias, + ...rawAlias, + }, + rollup: { + ...defaultRollup, + ...rawRollup, + output: { + ...defaultRollup.output, + ...(rawRollup.output || {}), + }, + }, + }; + const { src, dist, types, tests } = 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 = { + ...(mergedOptions.rollup.output || {}), + name: mergedOptions.rollup.output?.name || mergedOptions.project, + file: mergedOptions.rollup.output?.file || mergedOptions.project.toLocaleLowerCase(), + }; + + return mergedOptions; +}; + +const createConfig = (userOptions = {}) => { + const options = mergeAndResolveOptions(userOptions); + const { project, mode, versions } = options; + const { module: buildModuleVersion } = versions; + const isBuild = mode === 'build'; + + if (isBuild) { + console.log(''); + console.log('PROJECT : ', project); + console.log('OPTIONS : ', options); + + const umd = pipelineBuild(false, options, true); + const esm = buildModuleVersion ? pipelineBuild(true, options) : null; + + return [umd, esm].filter((build) => !!build); + } + + return pipelineDev(options); +}; + +module.exports = createConfig; diff --git a/jest-playwright.config.base.js b/jest-playwright.config.base.js deleted file mode 100644 index 504f9ce..0000000 --- a/jest-playwright.config.base.js +++ /dev/null @@ -1,18 +0,0 @@ -const path = require('path'); - -const deploymentConfig = path.resolve(__dirname, './config/jest-browser.rollup.config.js'); -const testServerPath = path.resolve(__dirname, './config/jest-test-server.js'); - -module.exports = { - browsers: ['chromium', 'firefox', 'webkit'], - collectCoverage: true, - launchType: 'LAUNCH', - launchOptions: { - headless: false, - }, - serverOptions: { - command: `node ${testServerPath}`, - port: deploymentConfig.port, - launchTimeout: 10000, - }, -}; diff --git a/jest.config.base.js b/jest.config.base.js index 76279b4..d03a6b1 100644 --- a/jest.config.base.js +++ b/jest.config.base.js @@ -1,64 +1,17 @@ const path = require('path'); const resolve = require('./resolve.config'); -const browserRollupConfig = require('./config/jest-browser.rollup.config.js'); - -const testServerLoaderPath = path.resolve(__dirname, './config/jest-test-server.loader.js'); -const jsdomSetupFile = path.resolve(__dirname, './config/jest-jsdom.setup.js'); -const browserGlobalSetupPath = path.resolve(__dirname, './config/jest-browser.globalSetup.js'); -const browserGlobalTeardownPath = path.resolve(__dirname, './config/jest-browser.globalTeardown.js'); -const browserTestEnvironmentPath = path.resolve(__dirname, './config/jest-browser.env.js'); -const browserSetupAfterEnvFile = path.resolve(__dirname, './config/jest-browser.setupAfterEnv.js'); // For a detailed explanation regarding each configuration property, visit: // https://jestjs.io/docs/en/configuration.html -const base = { +module.exports = { clearMocks: true, - coverageDirectory: './.coverage/jsdom', + coverageDirectory: './.coverage/jest', testEnvironment: 'jsdom', moduleDirectories: resolve.directories, moduleFileExtensions: resolve.extensions.map((ext) => ext.replace(/\./, '')), testPathIgnorePatterns: ['\\\\node_modules\\\\'], -}; - -const browserBase = { - ...base, - collectCoverage: false, - preset: 'jest-playwright-preset', - globalSetup: browserGlobalSetupPath, - globalTeardown: browserGlobalTeardownPath, - testEnvironment: browserTestEnvironmentPath, - setupFilesAfterEnv: [browserSetupAfterEnvFile], - testMatch: ['**/tests/browser/**/*.test.[jt]s?(x)'], - coveragePathIgnorePatterns: ['/node_modules/', `/${browserRollupConfig.build}/`], - transform: { - '^.+\\.[jt]sx?$': 'babel-jest', - [`^.+${browserRollupConfig.build}.+${browserRollupConfig.html.output}?$`]: testServerLoaderPath, - }, -}; - -module.exports = { - ...base, - projects: [ - { - ...base, - displayName: 'jsdom', - setupFilesAfterEnv: [jsdomSetupFile], - testMatch: ['**/tests/jsdom/**/*.test.[jt]s?(x)'], - }, - { - ...browserBase, - displayName: { - name: 'browser', - color: 'white', - }, - }, - { - ...browserBase, - displayName: { - name: 'browser-dev', - color: 'white', - }, - }, - ], + displayName: 'jest', + setupFilesAfterEnv: [path.resolve(__dirname, './config/jest/jest.setup.js')], + testMatch: ['**/tests/jest/**/*.test.[jt]s?(x)'], }; diff --git a/package.json b/package.json index 2dcb6fa..8886549 100644 --- a/package.json +++ b/package.json @@ -4,66 +4,58 @@ "packages/*" ], "devDependencies": { - "@babel/core": "^7.14.6", - "@babel/plugin-transform-runtime": "^7.14.5", - "@babel/preset-env": "^7.14.7", - "@babel/preset-typescript": "^7.14.5", - "@rollup/plugin-babel": "^5.3.0", - "@rollup/plugin-commonjs": "^17.0.0", + "@babel/core": "^7.18.2", + "@babel/plugin-transform-runtime": "^7.18.2", + "@babel/preset-env": "^7.18.2", + "@babel/preset-typescript": "^7.17.12", + "@babel/runtime": "^7.18.2", + "@playwright/test": "^1.22.2", + "@rollup/plugin-alias": "^3.1.9", + "@rollup/plugin-babel": "^5.3.1", + "@rollup/plugin-commonjs": "^22.0.0", "@rollup/plugin-html": "^0.2.0", - "@rollup/plugin-inject": "^4.0.2", - "@rollup/plugin-node-resolve": "^11.0.1", - "@rollup/plugin-typescript": "^5.0.2", + "@rollup/plugin-node-resolve": "^13.3.0", "@testing-library/dom": "^7.26.3", "@types/jest": "^26.0.24", "@typescript-eslint/eslint-plugin": "^3.7.0", "@typescript-eslint/parser": "^3.7.0", - "babel-jest": "^27.0.6", - "babel-plugin-istanbul": "^6.0.0", + "babel-jest": "^28.1.1", "bufferutil": "^4.0.1", "canvas": "^2.6.1", "chalk": "^4.1.0", "core-js": "^3.6.5", "del": "^5.1.0", + "esbuild": "^0.14.42", "eslint": "^7.5.0", "eslint-config-airbnb": "^18.2.0", "eslint-config-prettier": "^6.11.0", "eslint-plugin-import": "^2.22.0", "eslint-plugin-jest": "^24.3.6", - "eslint-plugin-jest-playwright": "^0.4.1", "eslint-plugin-json": "^2.1.2", "eslint-plugin-jsx-a11y": "^6.3.1", "eslint-plugin-prettier": "^3.1.4", "eslint-plugin-react": "^7.20.3", "eslint-plugin-react-hooks": "^4.0.8", - "expect-playwright": "^0.3.4", - "express": "^4.17.1", "glob": "^7.1.6", - "jest": "^27.0.6", - "jest-circus": "^27.0.6", - "jest-dev-server": "^4.4.0", - "jest-environment-node": "^27.0.6", - "jest-playwright-preset": "^1.7.0", - "jest-runner": "^27.0.6", - "mkdirp": "^1.0.4", - "node-sass": "^4.14.1", - "playwright": "^1.12.3", - "playwright-chromium": "^1.12.3", - "playwright-core": "^1.12.3", - "playwright-firefox": "^1.12.3", - "playwright-webkit": "1.12.3", + "jest": "^28.1.1", + "node-sass": "^7.0.1", + "playwright": "^1.22.2", + "playwright-chromium": "^1.22.2", + "playwright-core": "^1.22.2", + "playwright-firefox": "^1.22.2", + "playwright-webkit": "^1.22.2", "prettier": "^2.0.5", "prettier-eslint": "^11.0.0", - "rollup": "^2.36.1", + "rollup": "^2.75.5", + "rollup-plugin-esbuild": "^4.9.1", "rollup-plugin-livereload": "^2.0.0", - "rollup-plugin-prettier": "^2.1.0", "rollup-plugin-serve": "^1.1.0", "rollup-plugin-styles": "^3.10.0", "rollup-plugin-terser": "^6.1.0", - "rollup-plugin-typescript2": "^0.27.1", + "rollup-plugin-ts": "^3.0.1", "should": "^13.2.3", - "tslib": "^2.2.0", - "typescript": "^4.3.2", + "tslib": "^2.4.0", + "typescript": "^4.7.3", "utf-8-validate": "^5.0.2" }, "scripts": { @@ -72,6 +64,7 @@ "test:browser": "yarn workspaces run test:browser", "test:browser:quick": "yarn workspaces run test:browser:quick", "test:browser-dev": "yarn workspaces run test:browser-dev", + "test:playwright": "yarn workspaces run test:playwright", "build": "yarn workspaces run build", "lint": "npx eslint --fix ." } diff --git a/packages/overlayscrollbars-example/.gitignore b/packages/overlayscrollbars-example/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/packages/overlayscrollbars-example/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/packages/overlayscrollbars-example/favicon.svg b/packages/overlayscrollbars-example/favicon.svg new file mode 100644 index 0000000..de4aedd --- /dev/null +++ b/packages/overlayscrollbars-example/favicon.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/packages/overlayscrollbars-example/index.html b/packages/overlayscrollbars-example/index.html new file mode 100644 index 0000000..3a37503 --- /dev/null +++ b/packages/overlayscrollbars-example/index.html @@ -0,0 +1,13 @@ + + + + + + + OverlayScrollbars example + + +
+ + + diff --git a/packages/overlayscrollbars-example/package.json b/packages/overlayscrollbars-example/package.json new file mode 100644 index 0000000..2496d7c --- /dev/null +++ b/packages/overlayscrollbars-example/package.json @@ -0,0 +1,17 @@ +{ + "name": "overlayscrollbars-example", + "private": true, + "version": "0.0.0", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview" + }, + "devDependencies": { + "typescript": "^4.5.4", + "vite": "^2.9.9" + }, + "dependencies": { + "overlayscrollbars": "file:./../overlayscrollbars" + } +} \ No newline at end of file diff --git a/packages/overlayscrollbars-example/src/main.ts b/packages/overlayscrollbars-example/src/main.ts new file mode 100644 index 0000000..77ce734 --- /dev/null +++ b/packages/overlayscrollbars-example/src/main.ts @@ -0,0 +1,8 @@ +import './style.css'; + +const app = document.querySelector('#app')!; + +app.innerHTML = ` +

Hello Vite!

+ Documentation +`; diff --git a/packages/overlayscrollbars-example/src/style.css b/packages/overlayscrollbars-example/src/style.css new file mode 100644 index 0000000..852de7a --- /dev/null +++ b/packages/overlayscrollbars-example/src/style.css @@ -0,0 +1,8 @@ +#app { + font-family: Avenir, Helvetica, Arial, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-align: center; + color: #2c3e50; + margin-top: 60px; +} diff --git a/packages/overlayscrollbars-example/src/vite-env.d.ts b/packages/overlayscrollbars-example/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/packages/overlayscrollbars-example/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/packages/overlayscrollbars-example/tsconfig.json b/packages/overlayscrollbars-example/tsconfig.json new file mode 100644 index 0000000..fbd0225 --- /dev/null +++ b/packages/overlayscrollbars-example/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ESNext", "DOM"], + "moduleResolution": "Node", + "strict": true, + "sourceMap": true, + "resolveJsonModule": true, + "isolatedModules": true, + "esModuleInterop": true, + "noEmit": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitReturns": true, + "skipLibCheck": true + }, + "include": ["src"] +} diff --git a/packages/overlayscrollbars/dist/overlayscrollbars.esm.js b/packages/overlayscrollbars/dist/overlayscrollbars.esm.js index fcbd70c..f40c408 100644 --- a/packages/overlayscrollbars/dist/overlayscrollbars.esm.js +++ b/packages/overlayscrollbars/dist/overlayscrollbars.esm.js @@ -1,5 +1,9 @@ const createCache = (update, options) => { - const { _equal, _initialValue, _alwaysUpdateValues } = options || {}; + const { + _initialValue, + _equal, + _alwaysUpdateValues + } = options || {}; let _value = _initialValue; let _previous; @@ -14,38 +18,25 @@ const createCache = (update, options) => { _previous = curr; } - return { - _value, - _previous, - _changed: changed, - }; + return [_value, changed, _previous]; }; - return { - _update: cacheUpdate, - _current: (force) => ({ - _value, - _previous, - _changed: !!force, - }), - }; + return [cacheUpdate, force => [_value, !!force, _previous]]; }; const ElementNodeType = Node.ELEMENT_NODE; -const { toString, hasOwnProperty } = Object.prototype; +const { + toString, + hasOwnProperty: hasOwnProperty$1 +} = Object.prototype; function isUndefined(obj) { return obj === undefined; } function isNull(obj) { return obj === null; } -const type = (obj) => { - return isUndefined(obj) || isNull(obj) - ? `${obj}` - : toString - .call(obj) - .replace(/^\[object (.+)\]$/, '$1') - .toLowerCase(); +const type = obj => { + return isUndefined(obj) || isNull(obj) ? `${obj}` : toString.call(obj).replace(/^\[object (.+)\]$/, '$1').toLowerCase(); }; function isNumber(obj) { return typeof obj === 'number'; @@ -68,7 +59,7 @@ function isObject(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; + 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; @@ -76,25 +67,24 @@ function isPlainObject(obj) { const cstr = 'constructor'; const ctor = obj[cstr]; const ctorProto = ctor && ctor.prototype; - const hasOwnConstructor = hasOwnProperty.call(obj, cstr); - const hasIsPrototypeOf = ctorProto && hasOwnProperty.call(ctorProto, 'isPrototypeOf'); + const hasOwnConstructor = hasOwnProperty$1.call(obj, cstr); + const hasIsPrototypeOf = ctorProto && hasOwnProperty$1.call(ctorProto, 'isPrototypeOf'); if (ctor && !hasOwnConstructor && !hasIsPrototypeOf) { return false; } - for (key in obj) { - } + for (key in obj) {} - return isUndefined(key) || hasOwnProperty.call(obj, key); + 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; + 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; + return obj ? instanceofObj ? obj instanceof instanceofObj : obj.nodeType === ElementNodeType : false; } function each(source, callback) { @@ -105,7 +95,7 @@ function each(source, callback) { } } } else if (source) { - each(Object.keys(source), (key) => callback(source[key], key, source)); + each(Object.keys(source), key => callback(source[key], key, source)); } return source; @@ -115,20 +105,20 @@ const push = (array, items, arrayIsSingleItem) => { !arrayIsSingleItem && !isString(items) && isArrayLike(items) ? Array.prototype.push.apply(array, items) : array.push(items); return array; }; -const from = (arr) => { +const from = arr => { if (Array.from) { return Array.from(arr); } const result = []; - each(arr, (elm) => { + each(arr, elm => { push(result, elm); }); return result; }; -const isEmptyArray = (array) => array && array.length === 0; +const isEmptyArray = array => array && array.length === 0; const runEach = (arr, p1) => { - const runFn = (fn) => fn && fn(p1); + const runFn = fn => fn && fn(p1); if (arr instanceof Set) { arr.forEach(runFn); @@ -137,8 +127,8 @@ const runEach = (arr, p1) => { } }; -const hasOwnProperty$1 = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop); -const keys = (obj) => (obj ? Object.keys(obj) : []); +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]; @@ -146,8 +136,8 @@ function assignDeep(target, object1, object2, object3, object4, object5, object6 target = {}; } - each(sources, (source) => { - each(keys(source), (key) => { + each(sources, source => { + each(keys(source), key => { const copy = source[key]; if (target === copy) { @@ -209,7 +199,7 @@ const elmPrototype = Element.prototype; const find = (selector, elm) => { const arr = []; - const rootElm = elm ? (isElement(elm) ? elm : null) : document; + const rootElm = elm ? isElement(elm) ? elm : null : document; return rootElm ? push(arr, rootElm.querySelectorAll(selector)) : arr; }; @@ -222,9 +212,9 @@ const is = (elm, selector) => { return false; }; -const contents = (elm) => (elm ? from(elm.childNodes) : []); +const contents = elm => elm ? from(elm.childNodes) : []; -const parent = (elm) => (elm ? elm.parentElement : null); +const parent = elm => elm ? elm.parentElement : null; const before = (parentElm, preferredAnchor, insertedElms) => { if (insertedElms) { @@ -234,7 +224,7 @@ const before = (parentElm, preferredAnchor, insertedElms) => { if (parentElm) { if (isArrayLike(insertedElms)) { fragment = document.createDocumentFragment(); - each(insertedElms, (insertedElm) => { + each(insertedElms, insertedElm => { if (insertedElm === anchor) { anchor = insertedElm.previousSibling; } @@ -270,9 +260,9 @@ const insertBefore = (node, insertedNodes) => { const insertAfter = (node, insertedNodes) => { before(parent(node), node && node.nextSibling, insertedNodes); }; -const removeElements = (nodes) => { +const removeElements = nodes => { if (isArrayLike(nodes)) { - each(from(nodes), (e) => removeElements(e)); + each(from(nodes), e => removeElements(e)); } else if (nodes) { const parentElm = parent(nodes); @@ -282,7 +272,7 @@ const removeElements = (nodes) => { } }; -const createDiv = (classNames) => { +const createDiv = classNames => { const div = document.createElement('div'); if (classNames) { @@ -291,13 +281,13 @@ const createDiv = (classNames) => { return div; }; -const createDOM = (html) => { +const createDOM = html => { const createdDiv = createDiv(); createdDiv.innerHTML = html.trim(); - return each(contents(createdDiv), (elm) => removeElements(elm)); + return each(contents(createdDiv), elm => removeElements(elm)); }; -const firstLetterToUpper = (str) => str.charAt(0).toUpperCase() + str.slice(1); +const firstLetterToUpper = str => str.charAt(0).toUpperCase() + str.slice(1); const getDummyStyle = () => createDiv().style; @@ -305,30 +295,30 @@ const cssPrefixes = ['-webkit-', '-moz-', '-o-', '-ms-']; const jsPrefixes = ['WebKit', 'Moz', 'O', 'MS', 'webkit', 'moz', 'o', 'ms']; const jsCache = {}; const cssCache = {}; -const cssProperty = (name) => { +const cssProperty = name => { let result = cssCache[name]; - if (hasOwnProperty$1(cssCache, name)) { + if (hasOwnProperty(cssCache, name)) { return result; } const uppercasedName = firstLetterToUpper(name); const elmStyle = getDummyStyle(); - each(cssPrefixes, (prefix) => { + 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] !== undefined)); + return !(result = resultPossibilities.find(resultPossibility => elmStyle[resultPossibility] !== undefined)); }); - return (cssCache[name] = result || ''); + return cssCache[name] = result || ''; }; -const jsAPI = (name) => { +const jsAPI = name => { let result = jsCache[name] || window[name]; - if (hasOwnProperty$1(jsCache, name)) { + if (hasOwnProperty(jsCache, name)) { return result; } - each(jsPrefixes, (prefix) => { + each(jsPrefixes, prefix => { result = result || window[prefix + firstLetterToUpper(name)]; return !result; }); @@ -353,7 +343,7 @@ const classListAction = (elm, className, action) => { const classes = className.match(rnothtmlwhite) || []; result = classes.length > 0; - while ((clazz = classes[i++])) { + while (clazz = classes[i++]) { result = !!action(elm.classList, clazz) && result; } } @@ -370,10 +360,10 @@ const diffClass = (classNameA, classNameB) => { const classNameASplit = classNameA && classNameA.split(' '); const classNameBSplit = classNameB && classNameB.split(' '); const tempObj = {}; - each(classNameASplit, (className) => { + each(classNameASplit, className => { tempObj[className] = 1; }); - each(classNameBSplit, (className) => { + each(classNameBSplit, className => { if (tempObj[className]) { delete tempObj[className]; } else { @@ -383,36 +373,27 @@ const diffClass = (classNameA, classNameB) => { return keys(tempObj); }; -const zeroObj = { +const zeroObj$1 = { w: 0, - h: 0, + h: 0 }; const windowSize = () => ({ w: window.innerWidth, - h: window.innerHeight, + h: window.innerHeight }); -const offsetSize = (elm) => - elm - ? { - w: elm.offsetWidth, - h: elm.offsetHeight, - } - : zeroObj; -const clientSize = (elm) => - elm - ? { - w: elm.clientWidth, - h: elm.clientHeight, - } - : zeroObj; -const scrollSize = (elm) => - elm - ? { - w: elm.scrollWidth, - h: elm.scrollHeight, - } - : zeroObj; -const getBoundingClientRect = (elm) => elm.getBoundingClientRect(); +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 getBoundingClientRect = elm => elm.getBoundingClientRect(); let passiveEventsSupport; @@ -421,60 +402,52 @@ const supportPassiveEvents = () => { passiveEventsSupport = false; try { - window.addEventListener( - 'test', - null, - Object.defineProperty({}, 'passive', { - get: function () { - passiveEventsSupport = true; - }, - }) - ); + window.addEventListener('test', null, Object.defineProperty({}, 'passive', { + get: function () { + passiveEventsSupport = true; + } + })); } catch (e) {} } return passiveEventsSupport; }; -const splitEventNames = (eventNames) => eventNames.split(' '); +const splitEventNames = eventNames => eventNames.split(' '); const off = (target, eventNames, listener, capture) => { - each(splitEventNames(eventNames), (eventName) => { + 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 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; + 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 stopPropagation = evt => evt.stopPropagation(); +const preventDefault = evt => evt.preventDefault(); +const stopAndPrevent = evt => stopPropagation(evt) || preventDefault(evt); const equal = (a, b, props, propMutation) => { if (a && b) { let result = true; - each(props, (prop) => { + each(props, prop => { const compareA = propMutation ? propMutation(a[prop]) : a[prop]; const compareB = propMutation ? propMutation(b[prop]) : b[prop]; @@ -489,11 +462,11 @@ const equal = (a, b, props, propMutation) => { }; const equalWH = (a, b) => equal(a, b, ['w', 'h']); 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 equalBCRWH = (a, b, round) => equal(a, b, ['width', 'height'], round && (value => Math.round(value))); const setT = window.setTimeout; -const clearTimeouts = (id) => { +const clearTimeouts = id => { id && window.clearTimeout(id); id && cAF(id); }; @@ -504,7 +477,11 @@ const debounce = (functionToDebounce, options) => { let maxTimeoutId; let prevArguments; let latestArguments; - const { _timeout, _maxDelay, _mergeParams } = options; + const { + _timeout, + _maxDelay, + _mergeParams + } = options; const invokeFunctionToDebounce = function invokeFunctionToDebounce(args) { clearTimeouts(timeoutId); @@ -513,7 +490,7 @@ const debounce = (functionToDebounce, options) => { functionToDebounce.apply(this, args); }; - const mergeParms = (curr) => (_mergeParams && prevArguments ? _mergeParams(prevArguments, curr) : curr); + const mergeParms = curr => _mergeParams && prevArguments ? _mergeParams(prevArguments, curr) : curr; const flush = () => { if (timeoutId) { @@ -557,7 +534,7 @@ const debounce = (functionToDebounce, options) => { const cssNumber = { opacity: 1, - zindex: 1, + zindex: 1 }; const parseToZeroOrNumber = (value, toFloat) => { @@ -565,15 +542,16 @@ const parseToZeroOrNumber = (value, toFloat) => { return Number.isNaN(num) ? 0 : num; }; -const adaptCSSVal = (prop, val) => (!cssNumber[prop.toLowerCase()] && isNumber(val) ? `${val}px` : val); +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 getCSSVal = (elm, computedStyle, prop) => computedStyle != null ? computedStyle[prop] || computedStyle.getPropertyValue(prop) : elm.style[prop]; const setCSSVal = (elm, prop, val) => { try { if (elm) { - const { style } = elm; + const { + style + } = elm; if (!isUndefined(style[prop])) { style[prop] = adaptCSSVal(prop, val); @@ -593,18 +571,16 @@ function style(elm, styles) { 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); + 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])); + each(keys(styles), key => setCSSVal(elm, key, styles[key])); } const topRightBottomLeft = (elm, propertyPrefix, propertySuffix) => { const finalPrefix = propertyPrefix ? `${propertyPrefix}-` : ''; @@ -618,54 +594,54 @@ const topRightBottomLeft = (elm, propertyPrefix, propertySuffix) => { t: parseToZeroOrNumber(result[top]), r: parseToZeroOrNumber(result[right]), b: parseToZeroOrNumber(result[bottom]), - l: parseToZeroOrNumber(result[left]), + l: parseToZeroOrNumber(result[left]) }; }; -const zeroObj$1 = { +const zeroObj = { x: 0, - y: 0, + y: 0 }; -const absoluteCoordinates = (elm) => { +const absoluteCoordinates = elm => { const rect = elm ? getBoundingClientRect(elm) : 0; - return rect - ? { - x: rect.left + window.pageYOffset, - y: rect.top + window.pageXOffset, - } - : zeroObj$1; + return rect ? { + x: rect.left + window.pageYOffset, + y: rect.top + window.pageXOffset + } : zeroObj; }; -function createCommonjsModule(fn) { - var module = { exports: {} }; - return fn(module, module.exports), module.exports; +function getDefaultExportFromCjs (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var _extends_1 = createCommonjsModule(function (module) { - function _extends() { - module.exports = _extends = - Object.assign || - function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; +var _extends$1 = {exports: {}}; - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } +(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; - }; - + return target; + }, module.exports.__esModule = true, module.exports["default"] = module.exports; return _extends.apply(this, arguments); } - module.exports = _extends; -}); + module.exports = _extends, module.exports.__esModule = true, module.exports["default"] = module.exports; +})(_extends$1); -const { stringify } = JSON; +const _extends = getDefaultExportFromCjs(_extends$1.exports); + +const { + stringify +} = JSON; const templateTypePrefixSuffix = ['__TPL_', '_TYPE__']; const optionsTemplateTypes = ['boolean', 'number', 'string', 'array', 'object', 'function', 'null'].reduce((result, item) => { result[item] = templateTypePrefixSuffix[0] + item + templateTypePrefixSuffix[1]; @@ -675,10 +651,10 @@ const optionsTemplateTypes = ['boolean', 'number', 'string', 'array', 'object', const validateRecursive = (options, template, optionsDiff, doWriteErrors, propPath) => { const validatedOptions = {}; - const optionsCopy = _extends_1({}, options); + const optionsCopy = _extends({}, options); - const props = keys(template).filter((prop) => hasOwnProperty$1(options, prop)); - each(props, (prop) => { + const props = keys(template).filter(prop => hasOwnProperty(options, prop)); + each(props, prop => { const optionsDiffValue = isUndefined(optionsDiff[prop]) ? {} : optionsDiff[prop]; const optionsValue = options[prop]; const templateValue = template[prop]; @@ -689,7 +665,7 @@ const validateRecursive = (options, template, optionsDiff, doWriteErrors, propPa const validatedResult = validateRecursive(optionsValue, templateValue, optionsDiffValue, doWriteErrors, propPrefix + prop); validatedOptions[prop] = validatedResult._validated; optionsCopy[prop] = validatedResult._foreign; - each([optionsCopy, validatedOptions], (value) => { + each([optionsCopy, validatedOptions], value => { if (isEmptyObject(value[prop])) { delete value[prop]; } @@ -700,7 +676,7 @@ const validateRecursive = (options, template, optionsDiff, doWriteErrors, propPa const errorPossibleTypes = []; const optionsValueType = type(optionsValue); const templateValueArr = !isArray(templateValue) ? [templateValue] : templateValue; - each(templateValueArr, (currTemplateType) => { + each(templateValueArr, currTemplateType => { let typeString; each(optionsTemplateTypes, (value, key) => { if (value === currTemplateType) { @@ -711,7 +687,7 @@ const validateRecursive = (options, template, optionsDiff, doWriteErrors, propPa if (isEnumString && isString(optionsValue)) { const enumStringSplit = currTemplateType.split(' '); - isValid = !!enumStringSplit.find((possibility) => possibility === optionsValue); + isValid = !!enumStringSplit.find(possibility => possibility === optionsValue); push(errorEnumStrings, enumStringSplit); } else { isValid = optionsTemplateTypes[optionsValueType] === currTemplateType; @@ -722,18 +698,14 @@ const validateRecursive = (options, template, optionsDiff, doWriteErrors, propPa }); if (isValid) { - const doStringifyComparison = isArray(optionsValue) || isPlainObject(optionsValue); + const isPrimitiveArr = isArray(optionsValue) && !optionsValue.some(val => !isNumber(val) && !isString(val) && !isBoolean(val)); + const doStringifyComparison = isPrimitiveArr || isPlainObject(optionsValue); if (doStringifyComparison ? stringify(optionsValue) !== stringify(optionsDiffValue) : optionsValue !== optionsDiffValue) { validatedOptions[prop] = optionsValue; } } else if (doWriteErrors) { - console.warn( - `${ - `The option "${propPrefix}${prop}" wasn't set, because it doesn't accept the type [ ${optionsValueType.toUpperCase()} ] with the value of "${optionsValue}".\r\n` + - `Accepted types are: [ ${errorPossibleTypes.join(', ').toUpperCase()} ].\r\n` - }${errorEnumStrings.length > 0 ? `\r\nValid strings are: [ ${errorEnumStrings.join(', ')} ].` : ''}` - ); + console.warn(`${`The option "${propPrefix}${prop}" wasn't set, because it doesn't accept the type [ ${optionsValueType.toUpperCase()} ] with the value of "${optionsValue}".\r\n` + `Accepted types are: [ ${errorPossibleTypes.join(', ').toUpperCase()} ].\r\n`}${errorEnumStrings.length > 0 ? `\r\nValid strings are: [ ${errorEnumStrings.join(', ')} ].` : ''}`); } delete optionsCopy[prop]; @@ -741,7 +713,7 @@ const validateRecursive = (options, template, optionsDiff, doWriteErrors, propPa }); return { _foreign: optionsCopy, - _validated: validatedOptions, + _validated: validatedOptions }; }; @@ -749,12 +721,12 @@ const validateOptions = (options, template, optionsDiff, doWriteErrors) => { return validateRecursive(options, template, optionsDiff || {}, doWriteErrors || false); }; -const transformOptions = (optionsWithOptionsTemplate) => { +const transformOptions = optionsWithOptionsTemplate => { const result = { _template: {}, - _options: {}, + _options: {} }; - each(keys(optionsWithOptionsTemplate), (key) => { + each(keys(optionsWithOptionsTemplate), key => { const val = optionsWithOptionsTemplate[key]; if (isArray(val)) { @@ -785,6 +757,11 @@ const classNameSizeObserverListenerScroll = `${classNameSizeObserverListener}-sc 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 numberAllowedValues = optionsTemplateTypes.number; const arrayNullValues = [optionsTemplateTypes.array, optionsTemplateTypes.null]; @@ -801,14 +778,11 @@ const defaultOptionsWithTemplate = { updating: { elementEvents: [[['img', 'load']], arrayNullValues], attributes: [null, arrayNullValues], - debounce: [ - [0, 33], - [optionsTemplateTypes.number, optionsTemplateTypes.array, optionsTemplateTypes.null], - ], + debounce: [[0, 33], [optionsTemplateTypes.number, optionsTemplateTypes.array, optionsTemplateTypes.null]] }, overflow: { x: ['scroll', overflowAllowedValues], - y: ['scroll', overflowAllowedValues], + y: ['scroll', overflowAllowedValues] }, scrollbars: { visibility: ['auto', scrollbarsVisibilityAllowedValues], @@ -816,29 +790,35 @@ const defaultOptionsWithTemplate = { autoHideDelay: [800, numberAllowedValues], dragScroll: booleanTrueTemplate, clickScroll: booleanFalseTemplate, - touch: booleanTrueTemplate, + touch: booleanTrueTemplate }, textarea: { dynWidth: booleanFalseTemplate, dynHeight: booleanFalseTemplate, - inheritedAttrs: [['style', 'class'], stringArrayNullAllowedValues], + inheritedAttrs: [['style', 'class'], stringArrayNullAllowedValues] }, nativeScrollbarsOverlaid: { show: booleanFalseTemplate, - initialize: booleanFalseTemplate, + initialize: booleanFalseTemplate }, callbacks: { - onUpdated: [null, [optionsTemplateTypes.function, optionsTemplateTypes.null]], - }, + onUpdated: [null, [optionsTemplateTypes.function, optionsTemplateTypes.null]] + } }; -const { _template: optionsTemplate, _options: defaultOptions } = transformOptions(defaultOptionsWithTemplate); +const { + _template: optionsTemplate, + _options: defaultOptions +} = transformOptions(defaultOptionsWithTemplate); let environmentInstance; -const { abs, round } = Math; +const { + abs: abs$1, + round: round$1 +} = Math; const diffBiggerThanOne = (valOne, valTwo) => { - const absValOne = abs(valOne); - const absValTwo = abs(valTwo); + const absValOne = abs$1(valOne); + const absValTwo = abs$1(valTwo); return !(absValOne === absValTwo || absValOne + 1 === absValTwo || absValOne - 1 === absValTwo); }; @@ -848,18 +828,16 @@ const getNativeScrollbarSize = (body, measureElm) => { const oSize = offsetSize(measureElm); return { x: oSize.h - cSize.h, - y: oSize.w - cSize.w, + y: oSize.w - cSize.w }; }; -const getNativeScrollbarStyling = (testElm) => { +const getNativeScrollbarStyling = testElm => { let result = false; addClass(testElm, classNameViewportScrollbarStyling); try { - result = - style(testElm, cssProperty('scrollbar-width')) === 'none' || - window.getComputedStyle(testElm, '::-webkit-scrollbar').getPropertyValue('display') === 'none'; + result = style(testElm, cssProperty('scrollbar-width')) === 'none' || window.getComputedStyle(testElm, '::-webkit-scrollbar').getPropertyValue('display') === 'none'; } catch (ex) {} return result; @@ -870,7 +848,7 @@ const getRtlScrollBehavior = (parentElm, childElm) => { style(parentElm, { overflowX: strHidden, overflowY: strHidden, - direction: 'rtl', + direction: 'rtl' }); scrollLeft(parentElm, 0); const parentOffset = absoluteCoordinates(parentElm); @@ -879,7 +857,7 @@ const getRtlScrollBehavior = (parentElm, childElm) => { const childOffsetAfterScroll = absoluteCoordinates(childElm); return { i: parentOffset.x === childOffset.x, - n: childOffset.x !== childOffsetAfterScroll.x, + n: childOffset.x !== childOffsetAfterScroll.x }; }; @@ -901,13 +879,18 @@ const getWindowDPR = () => { return window.devicePixelRatio || dDPI / sDPI; }; -const getDefaultInitializationStrategy = (nativeScrollbarStyling) => ({ - _padding: !nativeScrollbarStyling, - _content: false, +const getDefaultInitializationStrategy = nativeScrollbarStyling => ({ + _host: null, + _viewport: null, + _padding: null, + _content: null, + _scrollbarsSlot: null }); const createEnvironment = () => { - const { body } = document; + const { + body + } = document; const envDOM = createDOM(`
`); const envElm = envDOM[0]; const envChildElm = envElm.firstChild; @@ -916,9 +899,9 @@ const createEnvironment = () => { const nativeScrollbarStyling = getNativeScrollbarStyling(envElm); const nativeScrollbarIsOverlaid = { x: nativeScrollbarSize.x === 0, - y: nativeScrollbarSize.y === 0, + y: nativeScrollbarSize.y === 0 }; - const defaultInitializationStrategy = getDefaultInitializationStrategy(nativeScrollbarStyling); + const defaultInitializationStrategy = getDefaultInitializationStrategy(); let initializationStrategy = defaultInitializationStrategy; let defaultDefaultOptions = defaultOptions; const env = { @@ -937,20 +920,20 @@ const createEnvironment = () => { onChangedListener.delete(listener); }, - _getInitializationStrategy: () => _extends_1({}, initializationStrategy), + _getInitializationStrategy: () => _extends({}, initializationStrategy), _setInitializationStrategy(newInitializationStrategy) { initializationStrategy = assignDeep({}, initializationStrategy, newInitializationStrategy); }, - _getDefaultOptions: () => _extends_1({}, defaultDefaultOptions), + _getDefaultOptions: () => _extends({}, defaultDefaultOptions), _setDefaultOptions(newDefaultOptions) { defaultDefaultOptions = assignDeep({}, defaultDefaultOptions, newDefaultOptions); }, _defaultInitializationStrategy: defaultInitializationStrategy, - _defaultDefaultOptions: defaultDefaultOptions, + _defaultDefaultOptions: defaultDefaultOptions }; removeAttr(envElm, 'style'); removeElements(envElm); @@ -964,16 +947,16 @@ const createEnvironment = () => { const sizeNew = windowSize(); const deltaSize = { w: sizeNew.w - size.w, - h: sizeNew.h - size.h, + h: sizeNew.h - size.h }; if (deltaSize.w === 0 && deltaSize.h === 0) return; const deltaAbsSize = { - w: abs(deltaSize.w), - h: abs(deltaSize.h), + w: abs$1(deltaSize.w), + h: abs$1(deltaSize.h) }; const deltaAbsRatio = { - w: abs(round(sizeNew.w / (size.w / 100.0))), - h: abs(round(sizeNew.h / (size.h / 100.0))), + w: abs$1(round$1(sizeNew.w / (size.w / 100.0))), + h: abs$1(round$1(sizeNew.h / (size.h / 100.0))) }; const dprNew = getWindowDPR(); const deltaIsBigger = deltaAbsSize.w > 2 && deltaAbsSize.h > 2; @@ -982,7 +965,7 @@ const createEnvironment = () => { const isZoom = deltaIsBigger && difference && dprChanged; if (isZoom) { - const newScrollbarSize = (environmentInstance._nativeScrollbarSize = getNativeScrollbarSize(body, envElm)); + const newScrollbarSize = environmentInstance._nativeScrollbarSize = getNativeScrollbarSize(body, envElm); removeElements(envElm); if (scrollbarSize.x !== newScrollbarSize.x || scrollbarSize.y !== newScrollbarSize.y) { @@ -1009,66 +992,103 @@ const getEnvironment = () => { return environmentInstance; }; -const unwrap = (elm) => { +let contentArrangeCounter = 0; + +const unwrap = elm => { appendChildren(parent(elm), contents(elm)); removeElements(elm); }; -let contentArrangeCounter = 0; - const createUniqueViewportArrangeElement = () => { - const elm = document.createElement('style'); - attr(elm, 'id', `${classNameViewportArrange}-${contentArrangeCounter}`); - contentArrangeCounter++; - return elm; -}; + const { + _nativeScrollbarStyling, + _nativeScrollbarIsOverlaid, + _cssCustomProperties + } = getEnvironment(); + const create = !_cssCustomProperties && !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y); + const result = create ? document.createElement('style') : false; -const evaluateCreationFromStrategy = (initializationValue, strategy) => { - const isBooleanValue = isBoolean(initializationValue); - - if (isBooleanValue || isUndefined(initializationValue)) { - return (isBooleanValue ? initializationValue : strategy) && undefined; + if (result) { + attr(result, 'id', `${classNameViewportArrange}-${contentArrangeCounter}`); + contentArrangeCounter++; } - return initializationValue; + return result; }; -const createStructureSetup = (target) => { - const { _getInitializationStrategy, _nativeScrollbarStyling, _nativeScrollbarIsOverlaid, _cssCustomProperties } = getEnvironment(); +const staticCreationFromStrategy = (target, initializationValue, strategy, elementClass) => { + const result = initializationValue ? initializationValue : isFunction(strategy) ? strategy(target) : strategy; + return result ? result : createDiv(elementClass); +}; - const { _padding: paddingNeeded, _content: contentNeeded } = _getInitializationStrategy(); +const dynamicCreationFromStrategy = (target, initializationValue, strategy, elementClass, defaultValue) => { + const takeInitializationValue = isBoolean(initializationValue) || initializationValue; + const result = takeInitializationValue ? initializationValue : isFunction(strategy) ? strategy(target) : strategy; + + if (result === null) { + return defaultValue ? createDiv(elementClass) : false; + } + + return result === true ? createDiv(elementClass) : result; +}; + +const createStructureSetup = target => { + const { + _getInitializationStrategy, + _nativeScrollbarStyling + } = getEnvironment(); + + const { + _host: hostInitializationStrategy, + _viewport: viewportInitializationStrategy, + _padding: paddingInitializationStrategy, + _content: contentInitializationStrategy + } = _getInitializationStrategy(); const targetIsElm = isHTMLElement(target); - const osTargetObj = targetIsElm - ? {} - : { - _host: target.host, - _target: target.target, - _viewport: target.viewport, - _padding: evaluateCreationFromStrategy(target.padding, paddingNeeded), - _content: evaluateCreationFromStrategy(target.content, contentNeeded), - }; + 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 evaluatedTargetObj = { + _target: targetElement, + _host: isTextarea ? staticCreationFromStrategy(targetElement, targetStructureInitialization.host, hostInitializationStrategy, classNameHost) : targetElement, + _viewport: staticCreationFromStrategy(targetElement, targetStructureInitialization.viewport, viewportInitializationStrategy, classNameViewport), + _padding: dynamicCreationFromStrategy(targetElement, targetStructureInitialization.padding, paddingInitializationStrategy, classNamePadding, !_nativeScrollbarStyling), + _content: dynamicCreationFromStrategy(targetElement, targetStructureInitialization.content, contentInitializationStrategy, classNameContent, false), + _viewportArrange: createUniqueViewportArrangeElement() + }; + const ctx = { + _windowElm: wnd, + _documentElm: ownerDocument, + _htmlElm: parent(bodyElm), + _bodyElm: bodyElm, + _isTextarea: isTextarea, + _isBody: isBody, + _targetIsElm: targetIsElm + }; + const generatedElements = keys(evaluatedTargetObj).reduce((arr, key) => { + const value = evaluatedTargetObj[key]; + return push(arr, value && !parent(value) ? value : false); + }, []); - if (targetIsElm) { - const viewport = createDiv(classNameViewport); - const padding = paddingNeeded && createDiv(classNamePadding); - const content = contentNeeded && createDiv(classNameContent); - osTargetObj._target = target; - osTargetObj._padding = padding; - osTargetObj._viewport = viewport; - osTargetObj._content = content; - } + const elementIsGenerated = elm => elm ? indexOf(generatedElements, elm) > -1 : null; - let { _target, _padding, _viewport, _content } = osTargetObj; + const { + _target, + _host, + _padding, + _viewport, + _content, + _viewportArrange + } = evaluatedTargetObj; const destroyFns = []; - const isTextarea = is(_target, 'textarea'); - const isBody = !isTextarea && is(_target, 'body'); - - const _host = isTextarea ? osTargetObj._host || createDiv() : _target; - - const getTargetContents = (contentSlot) => (isTextarea ? _target : contents(contentSlot)); - - const isTextareaHostGenerated = isTextarea && _host !== osTargetObj._host; + const isTextareaHostGenerated = isTextarea && elementIsGenerated(_host); + const targetContents = isTextarea ? _target : contents([_content, _viewport, _padding, _host, _target].find(elm => elementIsGenerated(elm) === false)); + const contentSlot = _content || _viewport; if (isTextareaHostGenerated) { insertAfter(_target, _host); @@ -1078,41 +1098,29 @@ const createStructureSetup = (target) => { }); } - if (targetIsElm) { - const contentSlot = _content || _viewport; - appendChildren(contentSlot, getTargetContents(_target)); - appendChildren(_host, _padding); - appendChildren(_padding || _host, _viewport); - appendChildren(_viewport, _content); - push(destroyFns, () => { + appendChildren(contentSlot, targetContents); + appendChildren(_host, _padding); + appendChildren(_padding || _host, _viewport); + appendChildren(_viewport, _content); + addClass(_host, classNameHost); + addClass(_padding, classNamePadding); + addClass(_viewport, classNameViewport); + addClass(_content, classNameContent); + push(destroyFns, () => { + if (targetIsElm) { appendChildren(_host, contents(contentSlot)); removeElements(_padding || _viewport); removeClass(_host, classNameHost); - }); - } else { - const contentContainingElm = _content || _viewport || _padding || _host; - const createPadding = isUndefined(_padding); - const createViewport = isUndefined(_viewport); - const createContent = isUndefined(_content); - const targetContents = getTargetContents(contentContainingElm); - _padding = osTargetObj._padding = createPadding ? createDiv() : _padding; - _viewport = osTargetObj._viewport = createViewport ? createDiv() : _viewport; - _content = osTargetObj._content = createContent ? createDiv() : _content; - appendChildren(_host, _padding); - appendChildren(_padding || _host, _viewport); - appendChildren(_viewport, _content); - const contentSlot = _content || _viewport; - appendChildren(contentSlot, targetContents); - push(destroyFns, () => { - if (createContent) { + } else { + if (elementIsGenerated(_content)) { unwrap(_content); } - if (createViewport) { + if (elementIsGenerated(_viewport)) { unwrap(_viewport); } - if (createPadding) { + if (elementIsGenerated(_padding)) { unwrap(_padding); } @@ -1120,44 +1128,79 @@ const createStructureSetup = (target) => { removeClass(_padding, classNamePadding); removeClass(_viewport, classNameViewport); removeClass(_content, classNameContent); - }); - } - - addClass(_host, classNameHost); - addClass(_padding, classNamePadding); - addClass(_viewport, classNameViewport); - addClass(_content, classNameContent); - const ownerDocument = _target.ownerDocument; - const bodyElm = ownerDocument.body; - const wnd = ownerDocument.defaultView; - const ctx = { - _windowElm: wnd, - _documentElm: ownerDocument, - _htmlElm: parent(bodyElm), - _bodyElm: bodyElm, - _isTextarea: isTextarea, - _isBody: isBody, - }; - - const obj = _extends_1({}, osTargetObj, { - _host, + } }); if (_nativeScrollbarStyling) { push(destroyFns, removeClass.bind(0, _viewport, classNameViewportScrollbarStyling)); - } else if (!_cssCustomProperties && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y)) { - const viewportArrangeElm = createUniqueViewportArrangeElement(); - insertBefore(_viewport, viewportArrangeElm); - push(destroyFns, removeElements.bind(0, viewportArrangeElm)); - obj._viewportArrange = viewportArrangeElm; + } + + if (_viewportArrange) { + insertBefore(_viewport, _viewportArrange); + push(destroyFns, removeElements.bind(0, _viewportArrange)); } return { - _targetObj: obj, + _targetObj: evaluatedTargetObj, _targetCtx: ctx, _destroy: () => { runEach(destroyFns); - }, + } + }; +}; + +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 + }; +}; + +const createScrollbarsSetup = (target, structureSetup) => { + const { + _getInitializationStrategy + } = getEnvironment(); + + const { + _scrollbarsSlot: environmentScrollbarSlot + } = _getInitializationStrategy(); + + const { + _targetObj, + _targetCtx + } = structureSetup; + const { + _target, + _host, + _viewport + } = _targetObj; + const initializationScrollbarSlot = !_targetCtx._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, + + _destroy() { + removeElements([horizontalScrollbar, verticalScrollbar]); + } + }; }; @@ -1165,43 +1208,51 @@ const animationStartEventName = 'animationstart'; const scrollEventName = 'scroll'; const scrollAmount = 3333333; -const directionIsRTL = (elm) => style(elm, 'direction') === 'rtl'; +const getElmDirectionIsRTL = elm => style(elm, 'direction') === 'rtl'; -const domRectHasDimensions = (rect) => rect && (rect.height || rect.width); +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 { + _direction: observeDirectionChange = false, + _appear: observeAppearChange = false + } = options || {}; + const { + _rtlScrollBehavior: rtlScrollBehavior + } = getEnvironment(); const baseElements = createDOM(`
`); const sizeObserver = baseElements[0]; const listenerElement = sizeObserver.firstChild; - const { _update: updateResizeObserverContentRectCache } = createCache(0, { + const getIsDirectionRTL = getElmDirectionIsRTL.bind(0, sizeObserver); + const [updateResizeObserverContentRectCache] = createCache(0, { + _initialValue: undefined, _alwaysUpdateValues: true, - _equal: (currVal, newVal) => !(!currVal || (!domRectHasDimensions(currVal) && domRectHasDimensions(newVal))), + _equal: (currVal, newVal) => !(!currVal || !domRectHasDimensions(currVal) && domRectHasDimensions(newVal)) }); - const onSizeChangedCallbackProxy = (sizeChangedContext) => { - const hasDirectionCache = sizeChangedContext && isBoolean(sizeChangedContext._value); + 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 (isArray(sizeChangedContext) && sizeChangedContext.length > 0) { - const { _previous, _value } = updateResizeObserverContentRectCache(0, sizeChangedContext.pop().contentRect); - const hasDimensions = domRectHasDimensions(_value); - const hadDimensions = domRectHasDimensions(_previous); - skip = !_previous || !hasDimensions; + if (isResizeObserverCall) { + const [currRContentRect,, prevContentRect] = updateResizeObserverContentRectCache(0, sizeChangedContext.pop().contentRect); + const hasDimensions = domRectHasDimensions(currRContentRect); + const hadDimensions = domRectHasDimensions(prevContentRect); + skip = !prevContentRect || !hasDimensions; appear = !hadDimensions && hasDimensions; doDirectionScroll = !skip; } else if (hasDirectionCache) { - doDirectionScroll = sizeChangedContext._changed; + [, doDirectionScroll] = sizeChangedContext; } else { appear = sizeChangedContext === true; } if (observeDirectionChange && doDirectionScroll) { - const rtl = hasDirectionCache ? sizeChangedContext._value : directionIsRTL(sizeObserver); - scrollLeft(sizeObserver, rtl ? (rtlScrollBehavior.n ? -scrollAmount : rtlScrollBehavior.i ? 0 : scrollAmount) : scrollAmount); + const rtl = hasDirectionCache ? sizeChangedContext[0] : getElmDirectionIsRTL(sizeObserver); + scrollLeft(sizeObserver, rtl ? rtlScrollBehavior.n ? -scrollAmount : rtlScrollBehavior.i ? 0 : scrollAmount : scrollAmount); scrollTop(sizeObserver, scrollAmount); } @@ -1209,7 +1260,7 @@ const createSizeObserver = (target, onSizeChangedCallback, options) => { onSizeChangedCallback({ _sizeChanged: !hasDirectionCache, _directionIsRTLCache: hasDirectionCache ? sizeChangedContext : undefined, - _appear: !!appear, + _appear: !!appear }); } }; @@ -1225,9 +1276,7 @@ const createSizeObserver = (target, onSizeChangedCallback, options) => { resizeObserverInstance.disconnect(); }); } else { - const observerElementChildren = createDOM( - `
` - ); + const observerElementChildren = createDOM(`
`); appendChildren(listenerElement, observerElementChildren); addClass(listenerElement, classNameSizeObserverListenerScroll); const observerElementChildrenRoot = observerElementChildren[0]; @@ -1246,7 +1295,7 @@ const createSizeObserver = (target, onSizeChangedCallback, options) => { scrollTop(shrinkElement, scrollAmount); }; - const onResized = (appear) => { + const onResized = appear => { rAFId = 0; if (isDirty) { @@ -1255,7 +1304,7 @@ const createSizeObserver = (target, onSizeChangedCallback, options) => { } }; - const onScroll = (scrollEvent) => { + const onScroll = scrollEvent => { currSize = offsetSize(observerElementChildrenRoot); isDirty = !scrollEvent || !equalWH(currSize, cacheSize); @@ -1276,46 +1325,42 @@ const createSizeObserver = (target, onSizeChangedCallback, options) => { push(offListeners, [on(expandElement, scrollEventName, onScroll), on(shrinkElement, scrollEventName, onScroll)]); style(expandElementChild, { width: scrollAmount, - height: scrollAmount, + height: scrollAmount }); reset(); appearCallback = observeAppearChange ? onScroll.bind(0, false) : reset; } if (observeDirectionChange) { - directionIsRTLCache = createCache(directionIsRTL.bind(0, sizeObserver)); - const { _update: updateDirectionIsRTLCache } = directionIsRTLCache; - push( - offListeners, - on(sizeObserver, scrollEventName, (event) => { - const directionIsRTLCacheValues = updateDirectionIsRTLCache(); - const { _value, _changed } = directionIsRTLCacheValues; + directionIsRTLCache = createCache(getIsDirectionRTL, { + _initialValue: !getIsDirectionRTL() + }); + const [updateDirectionIsRTLCache] = directionIsRTLCache; + push(offListeners, on(sizeObserver, scrollEventName, event => { + const directionIsRTLCacheValues = updateDirectionIsRTLCache(); + const [directionIsRTL, directionIsRTLChanged] = directionIsRTLCacheValues; - if (_changed) { - removeClass(listenerElement, 'ltr rtl'); + if (directionIsRTLChanged) { + removeClass(listenerElement, 'ltr rtl'); - if (_value) { - addClass(listenerElement, 'rtl'); - } else { - addClass(listenerElement, 'ltr'); - } - - onSizeChangedCallbackProxy(directionIsRTLCacheValues); + if (directionIsRTL) { + addClass(listenerElement, 'rtl'); + } else { + addClass(listenerElement, 'ltr'); } - stopAndPrevent(event); - }) - ); + onSizeChangedCallbackProxy(directionIsRTLCacheValues); + } + + stopAndPrevent(event); + })); } if (appearCallback) { addClass(sizeObserver, classNameSizeObserverAppear); - push( - offListeners, - on(sizeObserver, animationStartEventName, appearCallback, { - _once: !!ResizeObserverConstructor, - }) - ); + push(offListeners, on(sizeObserver, animationStartEventName, appearCallback, { + _once: !!ResizeObserverConstructor + })); } prependChildren(target, sizeObserver); @@ -1327,47 +1372,39 @@ const createSizeObserver = (target, onSizeChangedCallback, options) => { _getCurrentCacheValues(force) { return { - _directionIsRTL: directionIsRTLCache - ? directionIsRTLCache._current(force) - : { - _value: false, - _previous: false, - _changed: false, - }, + _directionIsRTL: directionIsRTLCache ? directionIsRTLCache[1](force) : [false, false, false] }; - }, + } + }; }; const createTrinsicObserver = (target, onTrinsicChangedCallback) => { const trinsicObserver = createDiv(classNameTrinsicObserver); const offListeners = []; - const { _update: updateHeightIntrinsicCache, _current: getCurrentHeightIntrinsicCache } = createCache( - (ioEntryOrSize) => ioEntryOrSize.h === 0 || ioEntryOrSize.isIntersecting || ioEntryOrSize.intersectionRatio > 0, - { - _initialValue: false, + const [updateHeightIntrinsicCache, getCurrentHeightIntrinsicCache] = createCache(ioEntryOrSize => ioEntryOrSize.h === 0 || ioEntryOrSize.isIntersecting || ioEntryOrSize.intersectionRatio > 0, { + _initialValue: false + }); + + const triggerOnTrinsicChangedCallback = updateValue => { + if (updateValue) { + const heightIntrinsic = updateHeightIntrinsicCache(0, updateValue); + const [, heightIntrinsicChanged] = heightIntrinsic; + + if (heightIntrinsicChanged) { + onTrinsicChangedCallback(heightIntrinsic); + } } - ); + }; if (IntersectionObserverConstructor) { - const intersectionObserverInstance = new IntersectionObserverConstructor( - (entries) => { - if (entries && entries.length > 0) { - const last = entries.pop(); - - if (last) { - const heightIntrinsic = updateHeightIntrinsicCache(0, last); - - if (heightIntrinsic._changed) { - onTrinsicChangedCallback(heightIntrinsic); - } - } - } - }, - { - root: target, + const intersectionObserverInstance = new IntersectionObserverConstructor(entries => { + if (entries && entries.length > 0) { + triggerOnTrinsicChangedCallback(entries.pop()); } - ); + }, { + root: target + }); intersectionObserverInstance.observe(trinsicObserver); push(offListeners, () => { intersectionObserverInstance.disconnect(); @@ -1375,11 +1412,7 @@ const createTrinsicObserver = (target, onTrinsicChangedCallback) => { } else { const onSizeChanged = () => { const newSize = offsetSize(trinsicObserver); - const heightIntrinsicCache = updateHeightIntrinsicCache(0, newSize); - - if (heightIntrinsicCache._changed) { - onTrinsicChangedCallback(heightIntrinsicCache); - } + triggerOnTrinsicChangedCallback(newSize); }; push(offListeners, createSizeObserver(trinsicObserver, onSizeChanged)._destroy); @@ -1395,26 +1428,23 @@ const createTrinsicObserver = (target, onTrinsicChangedCallback) => { _getCurrentCacheValues(force) { return { - _heightIntrinsic: getCurrentHeightIntrinsicCache(force), + _heightIntrinsic: getCurrentHeightIntrinsicCache(force) }; - }, + } + }; }; -const createEventContentChange = (target, eventContentChange, callback) => { +const createEventContentChange = (target, callback, eventContentChange) => { let map; + let destroyed = false; const _destroy = () => { - if (map) { - map.forEach((eventName, elm) => { - off(elm, eventName, callback); - }); - map.clear(); - } + destroyed = true; }; - const _updateElements = (getElements) => { - if (map && eventContentChange) { + const _updateElements = getElements => { + if (eventContentChange) { const eventElmList = eventContentChange.reduce((arr, item) => { if (item) { const selector = item[0]; @@ -1428,36 +1458,41 @@ const createEventContentChange = (target, eventContentChange, callback) => { return arr; }, []); - each(eventElmList, (item) => - each(item[0], (elm) => { - const eventNames = item[1]; - const registredEventNames = map.get(elm); - const newEntry = isUndefined(registredEventNames); - const changingExistingEntry = !newEntry && eventNames !== registredEventNames; - const finalEventNames = changingExistingEntry ? `${registredEventNames} ${eventNames}` : eventNames; + each(eventElmList, item => each(item[0], elm => { + const eventNames = item[1]; + const entry = map.get(elm); - if (changingExistingEntry) { - off(elm, registredEventNames, callback); + if (entry) { + const entryEventNames = entry[0]; + const entryOff = entry[1]; + + if (entryEventNames === eventNames) { + entryOff(); } + } - map.set(elm, finalEventNames); - on(elm, finalEventNames, callback); - }) - ); + const off = on(elm, eventNames, event => { + if (destroyed) { + off(); + map.delete(elm); + } else { + callback(event); + } + }); + map.set(elm, [eventNames, off]); + })); } }; if (eventContentChange) { - map = map || new Map(); - - _destroy(); + map = new WeakMap(); _updateElements(); } return { _destroy, - _updateElements, + _updateElements }; }; @@ -1470,28 +1505,24 @@ const createDOMObserver = (target, isContentObserver, callback, options) => { _nestedTargetSelector, _ignoreTargetChange, _ignoreNestedTargetChange, - _ignoreContentChange, + _ignoreContentChange } = options || {}; - const { _destroy: destroyEventContentChange, _updateElements: updateEventContentChangeElements } = createEventContentChange( - target, - isContentObserver && _eventContentChange, - debounce( - () => { - if (isConnected) { - callback(true); - } - }, - { - _timeout: 33, - _maxDelay: 99, - } - ) - ); + const { + _destroy: destroyEventContentChange, + _updateElements: 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 observerCallback = mutations => { const ignoreTargetChange = (isContentObserver ? _ignoreNestedTargetChange : _ignoreTargetChange) || noop; const ignoreContentChange = _ignoreContentChange || noop; const targetChangedAttrs = []; @@ -1499,8 +1530,14 @@ const createDOMObserver = (target, isContentObserver, callback, options) => { let targetStyleChanged = false; let contentChanged = false; let childListChanged = false; - each(mutations, (mutation) => { - const { attributeName, target: mutationTarget, type, oldValue, addedNodes } = mutation; + each(mutations, mutation => { + const { + attributeName, + target: mutationTarget, + type, + oldValue, + addedNodes + } = mutation; const isAttributesType = type === 'attributes'; const isChildListType = type === 'childList'; const targetIsMutationTarget = target === mutationTarget; @@ -1512,33 +1549,24 @@ const createDOMObserver = (target, isContentObserver, callback, options) => { 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 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) - ) { + 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; - }, []) - ); + updateEventContentChangeElements(selector => totalAddedNodes.reduce((arr, node) => { + push(arr, find(selector, node)); + return is(node, selector) ? push(arr, node) : arr; + }, [])); } if (isContentObserver) { @@ -1555,7 +1583,7 @@ const createDOMObserver = (target, isContentObserver, callback, options) => { attributeFilter: observedAttributes, subtree: isContentObserver, childList: isContentObserver, - characterData: isContentObserver, + characterData: isContentObserver }); isConnected = true; return { @@ -1570,7 +1598,7 @@ const createDOMObserver = (target, isContentObserver, callback, options) => { if (isConnected) { observerCallback(mutationObserver.takeRecords()); } - }, + } }; }; @@ -1582,7 +1610,7 @@ const baseStyleChangingAttrs = ['id', 'class', 'style', 'open']; const ignoreTargetChange = (target, attrName, oldValue, newValue) => { if (attrName === 'class' && oldValue && newValue) { const diff = diffClass(oldValue, newValue); - return !!diff.find((addedOrRemovedClass) => addedOrRemovedClass.indexOf(ignorePrefix) !== 0); + return !!diff.find(addedOrRemovedClass => addedOrRemovedClass.indexOf(ignorePrefix) !== 0); } return false; @@ -1592,32 +1620,53 @@ const lifecycleHubOservers = (instance, updateLifecycles) => { let debounceTimeout; let debounceMaxDelay; let contentMutationObserver; - const { _structureSetup } = instance; - const { _targetObj, _targetCtx } = _structureSetup; - const { _host, _viewport, _content } = _targetObj; - const { _isTextarea } = _targetCtx; - const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment(); + const { + _structureSetup + } = instance; + const { + _targetObj, + _targetCtx + } = _structureSetup; + const { + _host, + _viewport, + _content + } = _targetObj; + const { + _isTextarea + } = _targetCtx; + const { + _nativeScrollbarStyling, + _flexboxGlue + } = getEnvironment(); const contentMutationObserverAttr = _isTextarea ? baseStyleChangingAttrsTextarea : baseStyleChangingAttrs.concat(baseStyleChangingAttrsTextarea); const updateLifecyclesWithDebouncedAdaptiveUpdateHints = debounce(updateLifecycles, { _timeout: () => debounceTimeout, _maxDelay: () => debounceMaxDelay, _mergeParams(prev, curr) { - const { _sizeChanged: prevSizeChanged, _hostMutation: prevHostMutation, _contentMutation: prevContentMutation } = prev[0]; - const { _sizeChanged: currSizeChanged, _hostMutation: currvHostMutation, _contentMutation: currContentMutation } = curr[0]; - const merged = [ - { - _sizeChanged: prevSizeChanged || currSizeChanged, - _hostMutation: prevHostMutation || currvHostMutation, - _contentMutation: prevContentMutation || currContentMutation, - }, - ]; + const { + _sizeChanged: prevSizeChanged, + _hostMutation: prevHostMutation, + _contentMutation: prevContentMutation + } = prev[0]; + const { + _sizeChanged: currSizeChanged, + _hostMutation: currvHostMutation, + _contentMutation: currContentMutation + } = curr[0]; + const merged = [{ + _sizeChanged: prevSizeChanged || currSizeChanged, + _hostMutation: prevHostMutation || currvHostMutation, + _contentMutation: prevContentMutation || currContentMutation + }]; return merged; - }, + } + }); - const updateViewportAttrsFromHost = (attributes) => { - each(attributes || viewportAttrsFromTarget, (attribute) => { + const updateViewportAttrsFromHost = attributes => { + each(attributes || viewportAttrsFromTarget, attribute => { if (indexOf(viewportAttrsFromTarget, attribute) > -1) { const hostAttr = attr(_host, attribute); @@ -1630,31 +1679,35 @@ const lifecycleHubOservers = (instance, updateLifecycles) => { }); }; - const onTrinsicChanged = (heightIntrinsic) => { + const onTrinsicChanged = heightIntrinsic => { updateLifecycles({ - _heightIntrinsic: heightIntrinsic, + _heightIntrinsic: heightIntrinsic }); }; - const onSizeChanged = ({ _sizeChanged, _directionIsRTLCache, _appear }) => { + const onSizeChanged = ({ + _sizeChanged, + _directionIsRTLCache, + _appear + }) => { const updateFn = !_sizeChanged || _appear ? updateLifecycles : updateLifecyclesWithDebouncedAdaptiveUpdateHints; updateFn({ _sizeChanged, - _directionIsRTL: _directionIsRTLCache, + _directionIsRTL: _directionIsRTLCache }); }; - const onContentMutation = (contentChangedTroughEvent) => { + const onContentMutation = contentChangedTroughEvent => { const updateFn = contentChangedTroughEvent ? updateLifecycles : updateLifecyclesWithDebouncedAdaptiveUpdateHints; updateFn({ - _contentMutation: true, + _contentMutation: true }); }; const onHostMutation = (targetChangedAttrs, targetStyleChanged) => { if (targetStyleChanged) { updateLifecyclesWithDebouncedAdaptiveUpdateHints({ - _hostMutation: true, + _hostMutation: true }); } else { updateViewportAttrsFromHost(targetChangedAttrs); @@ -1664,18 +1717,18 @@ const lifecycleHubOservers = (instance, updateLifecycles) => { const trinsicObserver = (_content || !_flexboxGlue) && createTrinsicObserver(_host, onTrinsicChanged); const sizeObserver = createSizeObserver(_host, onSizeChanged, { _appear: true, - _direction: !_nativeScrollbarStyling, + _direction: !_nativeScrollbarStyling }); const hostMutationObserver = createDOMObserver(_host, false, onHostMutation, { _styleChangingAttributes: baseStyleChangingAttrs, _attributes: baseStyleChangingAttrs.concat(viewportAttrsFromTarget), - _ignoreTargetChange: ignoreTargetChange, + _ignoreTargetChange: ignoreTargetChange }); - const updateOptions = (checkOption) => { - const { _value: elementEvents, _changed: elementEventsChanged } = checkOption('updating.elementEvents'); - const { _value: attributes, _changed: attributesChanged } = checkOption('updating.attributes'); - const { _value: debounce, _changed: debounceChanged } = checkOption('updating.debounce'); + const updateOptions = checkOption => { + const [elementEvents, elementEventsChanged] = checkOption('updating.elementEvents'); + const [attributes, attributesChanged] = checkOption('updating.attributes'); + const [debounceValue, debounceChanged] = checkOption('updating.debounce'); const updateContentMutationObserver = elementEventsChanged || attributesChanged; if (updateContentMutationObserver) { @@ -1689,20 +1742,20 @@ const lifecycleHubOservers = (instance, updateLifecycles) => { _styleChangingAttributes: contentMutationObserverAttr.concat(attributes || []), _attributes: contentMutationObserverAttr.concat(attributes || []), _eventContentChange: elementEvents, - _ignoreNestedTargetChange: ignoreTargetChange, + _ignoreNestedTargetChange: ignoreTargetChange }); } if (debounceChanged) { updateLifecyclesWithDebouncedAdaptiveUpdateHints._flush(); - if (isArray(debounce)) { - const timeout = debounce[0]; - const maxWait = debounce[1]; + if (isArray(debounceValue)) { + const timeout = debounceValue[0]; + const maxWait = debounceValue[1]; debounceTimeout = isNumber(timeout) ? timeout : false; debounceMaxDelay = isNumber(maxWait) ? maxWait : false; - } else if (isNumber(debounce)) { - debounceTimeout = debounce; + } else if (isNumber(debounceValue)) { + debounceTimeout = debounceValue; debounceMaxDelay = false; } else { debounceTimeout = false; @@ -1724,54 +1777,75 @@ const lifecycleHubOservers = (instance, updateLifecycles) => { sizeObserver._destroy(); hostMutationObserver._destroy(); - }, + } + }; }; -const createTrinsicLifecycle = (lifecycleHub) => { - const { _structureSetup } = lifecycleHub; - const { _content } = _structureSetup._targetObj; - return (updateHints) => { - const { _heightIntrinsic } = updateHints; - const { _value: heightIntrinsic, _changed: heightIntrinsicChanged } = _heightIntrinsic; +const createTrinsicLifecycle = lifecycleHub => { + const { + _structureSetup + } = lifecycleHub; + const { + _content + } = _structureSetup._targetObj; + return updateHints => { + const { + _heightIntrinsic + } = updateHints; + const [heightIntrinsic, heightIntrinsicChanged] = _heightIntrinsic; if (heightIntrinsicChanged) { style(_content, { height: heightIntrinsic ? '' : '100%', - display: heightIntrinsic ? '' : 'inline', + display: heightIntrinsic ? '' : 'inline' }); } return { _sizeChanged: heightIntrinsicChanged, - _contentMutation: heightIntrinsicChanged, + _contentMutation: heightIntrinsicChanged }; }; }; -const createPaddingLifecycle = (lifecycleHub) => { - const { _structureSetup, _setLifecycleCommunication } = lifecycleHub; - const { _host, _padding, _viewport } = _structureSetup._targetObj; - const { _update: updatePaddingCache, _current: currentPaddingCache } = createCache(topRightBottomLeft.bind(0, _host, 'padding'), { +const createPaddingLifecycle = lifecycleHub => { + const { + _structureSetup, + _setLifecycleCommunication + } = lifecycleHub; + const { + _host, + _padding, + _viewport + } = _structureSetup._targetObj; + const [updatePaddingCache, currentPaddingCache] = createCache(topRightBottomLeft.bind(0, _host, 'padding'), { _equal: equalTRBL, - _initialValue: topRightBottomLeft(), + _initialValue: topRightBottomLeft() }); return (updateHints, checkOption, force) => { - let { _value: padding, _changed: paddingChanged } = currentPaddingCache(force); - const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment(); - const { _sizeChanged, _directionIsRTL, _contentMutation } = updateHints; - const { _value: directionIsRTL, _changed: directionChanged } = _directionIsRTL; - const { _value: paddingAbsolute, _changed: paddingAbsoluteChanged } = checkOption('paddingAbsolute'); + let [padding, paddingChanged] = currentPaddingCache(force); + const { + _nativeScrollbarStyling, + _flexboxGlue + } = getEnvironment(); + const { + _sizeChanged, + _directionIsRTL, + _contentMutation + } = updateHints; + const [directionIsRTL, directionChanged] = _directionIsRTL; + const [paddingAbsolute, paddingAbsoluteChanged] = checkOption('paddingAbsolute'); const contentMutation = !_flexboxGlue && _contentMutation; if (_sizeChanged || paddingChanged || contentMutation) { - ({ _value: padding, _changed: paddingChanged } = updatePaddingCache(force)); + [padding, paddingChanged] = updatePaddingCache(force); } const paddingStyleChanged = paddingAbsoluteChanged || directionChanged || paddingChanged; if (paddingStyleChanged) { - const paddingRelative = !paddingAbsolute || (!_padding && !_nativeScrollbarStyling); + const paddingRelative = !paddingAbsolute || !_padding && !_nativeScrollbarStyling; const paddingHorizontal = padding.r + padding.l; const paddingVertical = padding.t + padding.b; const paddingStyle = { @@ -1779,15 +1853,15 @@ const createPaddingLifecycle = (lifecycleHub) => { 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)` : '', + right: paddingRelative ? directionIsRTL ? -padding.r : 'auto' : 0, + left: paddingRelative ? directionIsRTL ? 'auto' : -padding.l : 0, + width: paddingRelative ? `calc(100% + ${paddingHorizontal}px)` : '' }; const viewportStyle = { paddingTop: paddingRelative ? padding.t : 0, paddingRight: paddingRelative ? padding.r : 0, paddingBottom: paddingRelative ? padding.b : 0, - paddingLeft: paddingRelative ? padding.l : 0, + paddingLeft: paddingRelative ? padding.l : 0 }; style(_padding || _viewport, paddingStyle); style(_viewport, viewportStyle); @@ -1795,38 +1869,42 @@ const createPaddingLifecycle = (lifecycleHub) => { _setLifecycleCommunication({ _paddingInfo: { _absolute: !paddingRelative, - _padding: padding, + _padding: padding }, - _viewportPaddingStyle: _padding ? viewportStyle : _extends_1({}, paddingStyle, viewportStyle), + _viewportPaddingStyle: _padding ? viewportStyle : _extends({}, paddingStyle, viewportStyle) }); } return { - _paddingStyleChanged: paddingStyleChanged, + _paddingStyleChanged: paddingStyleChanged }; }; }; -const { max, abs: abs$1, round: round$1 } = Math; +const { + max, + abs, + round +} = Math; const overlaidScrollbarsHideOffset = 42; const whCacheOptions = { _equal: equalWH, _initialValue: { w: 0, - h: 0, - }, + h: 0 + } }; -const sizeFraction = (elm) => { +const sizeFraction = elm => { const viewportOffsetSize = offsetSize(elm); const viewportRect = getBoundingClientRect(elm); return { w: viewportRect.width - viewportOffsetSize.w, - h: viewportRect.height - viewportOffsetSize.h, + h: viewportRect.height - viewportOffsetSize.h }; }; -const fractionalPixelRatioTollerance = () => (window.devicePixelRatio % 1 === 0 ? 0 : 1); +const fractionalPixelRatioTollerance = () => window.devicePixelRatio % 1 === 0 ? 0 : 1; const setAxisOverflowStyle = (horizontal, overflowAmount, behavior, styleObj) => { const overflowKey = horizontal ? 'overflowX' : 'overflowY'; @@ -1845,81 +1923,104 @@ const setAxisOverflowStyle = (horizontal, overflowAmount, behavior, styleObj) => return { _visible: behaviorIsVisible, - _behavior: behaviorIsVisibleHidden ? 'hidden' : 'scroll', + _behavior: behaviorIsVisibleHidden ? 'hidden' : 'scroll' }; }; -const createOverflowLifecycle = (lifecycleHub) => { - const { _structureSetup, _doViewportArrange, _getLifecycleCommunication, _setLifecycleCommunication } = lifecycleHub; - const { _host, _viewport, _viewportArrange } = _structureSetup._targetObj; - const { _update: updateViewportSizeFraction, _current: getCurrentViewportSizeFraction } = createCache( - sizeFraction.bind(0, _viewport), - whCacheOptions - ); - const { _update: updateViewportScrollSizeCache, _current: getCurrentViewportScrollSizeCache } = createCache( - scrollSize.bind(0, _viewport), - whCacheOptions - ); - const { _update: updateOverflowAmountCache, _current: getCurrentOverflowAmountCache } = createCache( - ({ _viewportScrollSize, _viewportClientSize, _viewportSizeFraction }) => ({ - w: max( - 0, - round$1(max(0, _viewportScrollSize.w - _viewportClientSize.w) - (fractionalPixelRatioTollerance() || max(0, _viewportSizeFraction.w))) - ), - h: max( - 0, - round$1(max(0, _viewportScrollSize.h - _viewportClientSize.h) - (fractionalPixelRatioTollerance() || max(0, _viewportSizeFraction.h))) - ), - }), - whCacheOptions - ); +const createOverflowLifecycle = lifecycleHub => { + const { + _structureSetup, + _doViewportArrange, + _getLifecycleCommunication, + _setLifecycleCommunication + } = lifecycleHub; + const { + _host, + _viewport, + _viewportArrange + } = _structureSetup._targetObj; + const [updateViewportSizeFraction, getCurrentViewportSizeFraction] = createCache(sizeFraction.bind(0, _viewport), whCacheOptions); + const [updateViewportScrollSizeCache, getCurrentViewportScrollSizeCache] = createCache(scrollSize.bind(0, _viewport), whCacheOptions); + const [updateOverflowAmountCache, getCurrentOverflowAmountCache] = createCache(({ + _viewportScrollSize, + _viewportClientSize, + _viewportSizeFraction + }) => ({ + w: max(0, round(max(0, _viewportScrollSize.w - _viewportClientSize.w) - (fractionalPixelRatioTollerance() || max(0, _viewportSizeFraction.w)))), + h: max(0, round(max(0, _viewportScrollSize.h - _viewportClientSize.h) - (fractionalPixelRatioTollerance() || max(0, _viewportSizeFraction.h)))) + }), whCacheOptions); const fixFlexboxGlue = (viewportOverflowState, heightIntrinsic) => { style(_viewport, { - height: '', + height: '' }); if (heightIntrinsic) { - const { _absolute: paddingAbsolute, _padding: padding } = _getLifecycleCommunication()._paddingInfo; + const { + _nativeScrollbarIsOverlaid + } = getEnvironment(); - const { _overflowScroll, _scrollbarsHideOffset } = viewportOverflowState; + const { + _absolute: paddingAbsolute, + _padding: padding + } = _getLifecycleCommunication()._paddingInfo; + + const { + _overflowScroll, + _scrollbarsHideOffset + } = viewportOverflowState; const hostSizeFraction = sizeFraction(_host); const hostClientSize = clientSize(_host); - const paddingVertical = paddingAbsolute || style(_viewport, 'boxSizing') === 'content-box' ? padding.b + padding.t : 0; - const fractionalClientHeight = hostClientSize.h + (abs$1(hostSizeFraction.h) < 1 ? hostSizeFraction.h : 0); + const isContentBox = style(_viewport, 'boxSizing') === 'content-box'; + const paddingVertical = paddingAbsolute || isContentBox ? padding.b + padding.t : 0; + const fractionalClientHeight = hostClientSize.h + (abs(hostSizeFraction.h) < 1 ? hostSizeFraction.h : 0); + const subtractXScrollbar = !(_nativeScrollbarIsOverlaid.x && isContentBox); style(_viewport, { - height: fractionalClientHeight + (_overflowScroll.x ? _scrollbarsHideOffset.x : 0) - paddingVertical, + height: fractionalClientHeight + (_overflowScroll.x && subtractXScrollbar ? _scrollbarsHideOffset.x : 0) - paddingVertical }); } }; const getViewportOverflowState = (showNativeOverlaidScrollbars, viewportStyleObj) => { - const { _nativeScrollbarSize, _nativeScrollbarIsOverlaid, _nativeScrollbarStyling } = getEnvironment(); - const { x: overlaidX, y: overlaidY } = _nativeScrollbarIsOverlaid; + const { + _nativeScrollbarSize, + _nativeScrollbarIsOverlaid, + _nativeScrollbarStyling + } = getEnvironment(); + const { + x: overlaidX, + y: overlaidY + } = _nativeScrollbarIsOverlaid; const determineOverflow = !viewportStyleObj; const arrangeHideOffset = !_nativeScrollbarStyling && !showNativeOverlaidScrollbars ? overlaidScrollbarsHideOffset : 0; const styleObj = determineOverflow ? style(_viewport, ['overflowX', 'overflowY']) : viewportStyleObj; const scroll = { x: styleObj.overflowX === 'scroll', - y: styleObj.overflowY === 'scroll', + y: styleObj.overflowY === 'scroll' }; const scrollbarsHideOffset = { - x: scroll.x && !_nativeScrollbarStyling ? (overlaidX ? arrangeHideOffset : _nativeScrollbarSize.x) : 0, - y: scroll.y && !_nativeScrollbarStyling ? (overlaidY ? arrangeHideOffset : _nativeScrollbarSize.y) : 0, + x: scroll.x && !_nativeScrollbarStyling ? overlaidX ? arrangeHideOffset : _nativeScrollbarSize.x : 0, + y: scroll.y && !_nativeScrollbarStyling ? overlaidY ? arrangeHideOffset : _nativeScrollbarSize.y : 0 }; return { _overflowScroll: scroll, _scrollbarsHideOffsetArrange: { x: overlaidX && !!arrangeHideOffset, - y: overlaidY && !!arrangeHideOffset, + y: overlaidY && !!arrangeHideOffset }, - _scrollbarsHideOffset: scrollbarsHideOffset, + _scrollbarsHideOffset: scrollbarsHideOffset }; }; const setViewportOverflowState = (showNativeOverlaidScrollbars, overflowAmount, overflow, viewportStyleObj) => { - const { _visible: xVisible, _behavior: xVisibleBehavior } = setAxisOverflowStyle(true, overflowAmount.w, overflow.x, viewportStyleObj); - const { _visible: yVisible, _behavior: yVisibleBehavior } = setAxisOverflowStyle(false, overflowAmount.h, overflow.y, viewportStyleObj); + const { + _visible: xVisible, + _behavior: xVisibleBehavior + } = setAxisOverflowStyle(true, overflowAmount.w, overflow.x, viewportStyleObj); + const { + _visible: yVisible, + _behavior: yVisibleBehavior + } = setAxisOverflowStyle(false, overflowAmount.h, overflow.y, viewportStyleObj); if (xVisible && !yVisible) { viewportStyleObj.overflowX = xVisibleBehavior; @@ -1934,27 +2035,42 @@ const createOverflowLifecycle = (lifecycleHub) => { const arrangeViewport = (viewportOverflowState, viewportScrollSize, viewportSizeFraction, directionIsRTL) => { if (_doViewportArrange) { - const { _scrollbarsHideOffset, _scrollbarsHideOffsetArrange } = viewportOverflowState; - const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange; - const { x: hideOffsetX, y: hideOffsetY } = _scrollbarsHideOffset; + const { + _scrollbarsHideOffset, + _scrollbarsHideOffsetArrange + } = viewportOverflowState; + const { + x: arrangeX, + y: arrangeY + } = _scrollbarsHideOffsetArrange; + const { + x: hideOffsetX, + y: hideOffsetY + } = _scrollbarsHideOffset; - const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication(); + const { + _viewportPaddingStyle: viewportPaddingStyle + } = _getLifecycleCommunication(); const viewportArrangeHorizontalPaddingKey = directionIsRTL ? 'paddingRight' : 'paddingLeft'; const viewportArrangeHorizontalPaddingValue = viewportPaddingStyle[viewportArrangeHorizontalPaddingKey]; const viewportArrangeVerticalPaddingValue = viewportPaddingStyle.paddingTop; - const fractionalContentWidth = viewportScrollSize.w + (abs$1(viewportSizeFraction.w) < 1 ? viewportSizeFraction.w : 0); - const fractionalContenHeight = viewportScrollSize.h + (abs$1(viewportSizeFraction.h) < 1 ? viewportSizeFraction.h : 0); + const fractionalContentWidth = viewportScrollSize.w + (abs(viewportSizeFraction.w) < 1 ? viewportSizeFraction.w : 0); + const fractionalContenHeight = viewportScrollSize.h + (abs(viewportSizeFraction.h) < 1 ? viewportSizeFraction.h : 0); const arrangeSize = { w: hideOffsetY && arrangeY ? `${hideOffsetY + fractionalContentWidth - viewportArrangeHorizontalPaddingValue}px` : '', - h: hideOffsetX && arrangeX ? `${hideOffsetX + fractionalContenHeight - viewportArrangeVerticalPaddingValue}px` : '', + h: hideOffsetX && arrangeX ? `${hideOffsetX + fractionalContenHeight - viewportArrangeVerticalPaddingValue}px` : '' }; if (_viewportArrange) { - const { sheet } = _viewportArrange; + const { + sheet + } = _viewportArrange; if (sheet) { - const { cssRules } = sheet; + const { + cssRules + } = sheet; if (cssRules) { if (!cssRules.length) { @@ -1969,7 +2085,7 @@ const createOverflowLifecycle = (lifecycleHub) => { } else { style(_viewport, { '--os-vaw': arrangeSize.w, - '--os-vah': arrangeSize.h, + '--os-vah': arrangeSize.h }); } } @@ -1978,11 +2094,22 @@ const createOverflowLifecycle = (lifecycleHub) => { }; const hideNativeScrollbars = (viewportOverflowState, directionIsRTL, viewportArrange, viewportStyleObj) => { - const { _scrollbarsHideOffset, _scrollbarsHideOffsetArrange } = viewportOverflowState; - const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange; - const { x: hideOffsetX, y: hideOffsetY } = _scrollbarsHideOffset; + const { + _scrollbarsHideOffset, + _scrollbarsHideOffsetArrange + } = viewportOverflowState; + const { + x: arrangeX, + y: arrangeY + } = _scrollbarsHideOffsetArrange; + const { + x: hideOffsetX, + y: hideOffsetY + } = _scrollbarsHideOffset; - const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication(); + const { + _viewportPaddingStyle: viewportPaddingStyle + } = _getLifecycleCommunication(); const horizontalMarginKey = directionIsRTL ? 'marginLeft' : 'marginRight'; const viewportHorizontalPaddingKey = directionIsRTL ? 'paddingLeft' : 'paddingRight'; @@ -2004,17 +2131,25 @@ const createOverflowLifecycle = (lifecycleHub) => { if (_doViewportArrange) { const finalViewportOverflowState = viewportOverflowState || getViewportOverflowState(showNativeOverlaidScrollbars); - const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication(); + const { + _viewportPaddingStyle: viewportPaddingStyle + } = _getLifecycleCommunication(); - const { _flexboxGlue } = getEnvironment(); - const { _scrollbarsHideOffsetArrange } = finalViewportOverflowState; - const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange; + const { + _flexboxGlue + } = getEnvironment(); + const { + _scrollbarsHideOffsetArrange + } = finalViewportOverflowState; + const { + x: arrangeX, + y: arrangeY + } = _scrollbarsHideOffsetArrange; const finalPaddingStyle = {}; - const assignProps = (props) => - each(props.split(' '), (prop) => { - finalPaddingStyle[prop] = viewportPaddingStyle[prop]; - }); + const assignProps = props => each(props.split(' '), prop => { + finalPaddingStyle[prop] = viewportPaddingStyle[prop]; + }); if (!_flexboxGlue) { finalPaddingStyle.height = ''; @@ -2037,26 +2172,34 @@ const createOverflowLifecycle = (lifecycleHub) => { style(_viewport, prevStyle); addClass(_viewport, classNameViewportArrange); }, - _viewportOverflowState: finalViewportOverflowState, + _viewportOverflowState: finalViewportOverflowState }; } return { - _redoViewportArrange: noop, + _redoViewportArrange: noop }; }; return (updateHints, checkOption, force) => { - const { _directionIsRTL, _heightIntrinsic, _sizeChanged, _hostMutation, _contentMutation, _paddingStyleChanged } = updateHints; - const { _flexboxGlue, _nativeScrollbarStyling, _nativeScrollbarIsOverlaid } = getEnvironment(); - const { _value: heightIntrinsic, _changed: heightIntrinsicChanged } = _heightIntrinsic; - const { _value: directionIsRTL, _changed: directionChanged } = _directionIsRTL; - const { _value: showNativeOverlaidScrollbarsOption, _changed: showNativeOverlaidScrollbarsChanged } = checkOption( - 'nativeScrollbarsOverlaid.show' - ); + const { + _directionIsRTL, + _heightIntrinsic, + _sizeChanged, + _hostMutation, + _contentMutation, + _paddingStyleChanged + } = updateHints; + const { + _flexboxGlue, + _nativeScrollbarStyling, + _nativeScrollbarIsOverlaid + } = getEnvironment(); + const [heightIntrinsic, heightIntrinsicChanged] = _heightIntrinsic; + const [directionIsRTL, directionChanged] = _directionIsRTL; + const [showNativeOverlaidScrollbarsOption, showNativeOverlaidScrollbarsChanged] = checkOption('nativeScrollbarsOverlaid.show'); const showNativeOverlaidScrollbars = showNativeOverlaidScrollbarsOption && _nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.y; - const adjustFlexboxGlue = - !_flexboxGlue && (_sizeChanged || _contentMutation || _hostMutation || showNativeOverlaidScrollbarsChanged || heightIntrinsicChanged); + const adjustFlexboxGlue = !_flexboxGlue && (_sizeChanged || _contentMutation || _hostMutation || showNativeOverlaidScrollbarsChanged || heightIntrinsicChanged); let viewportSizeFractionCache = getCurrentViewportSizeFraction(force); let viewportScrollSizeCache = getCurrentViewportScrollSizeCache(force); let overflowAmuntCache = getCurrentOverflowAmountCache(force); @@ -2076,27 +2219,19 @@ const createOverflowLifecycle = (lifecycleHub) => { } if (_sizeChanged || _paddingStyleChanged || _contentMutation || showNativeOverlaidScrollbarsChanged || directionChanged) { - const { _redoViewportArrange, _viewportOverflowState: undoViewportArrangeOverflowState } = undoViewportArrange( - showNativeOverlaidScrollbars, - directionIsRTL, - preMeasureViewportOverflowState - ); - const { _value: _viewportSizeFraction2, _changed: viewportSizeFractionCahnged } = (viewportSizeFractionCache = updateViewportSizeFraction( - force - )); - const { _value: _viewportScrollSize2, _changed: _viewportScrollSizeChanged } = (viewportScrollSizeCache = updateViewportScrollSizeCache(force)); + const { + _redoViewportArrange, + _viewportOverflowState: undoViewportArrangeOverflowState + } = undoViewportArrange(showNativeOverlaidScrollbars, directionIsRTL, preMeasureViewportOverflowState); + const [_viewportSizeFraction2, viewportSizeFractionCahnged] = viewportSizeFractionCache = updateViewportSizeFraction(force); + const [_viewportScrollSize2, _viewportScrollSizeChanged] = viewportScrollSizeCache = updateViewportScrollSizeCache(force); const viewportContentSize = clientSize(_viewport); let arrangedViewportScrollSize = _viewportScrollSize2; let arrangedViewportClientSize = viewportContentSize; _redoViewportArrange(); - if ( - (_viewportScrollSizeChanged || viewportSizeFractionCahnged || showNativeOverlaidScrollbarsChanged) && - undoViewportArrangeOverflowState && - !showNativeOverlaidScrollbars && - arrangeViewport(undoViewportArrangeOverflowState, _viewportScrollSize2, _viewportSizeFraction2, directionIsRTL) - ) { + if ((_viewportScrollSizeChanged || viewportSizeFractionCahnged || showNativeOverlaidScrollbarsChanged) && undoViewportArrangeOverflowState && !showNativeOverlaidScrollbars && arrangeViewport(undoViewportArrangeOverflowState, _viewportScrollSize2, _viewportSizeFraction2, directionIsRTL)) { arrangedViewportClientSize = clientSize(_viewport); arrangedViewportScrollSize = scrollSize(_viewport); } @@ -2105,37 +2240,28 @@ const createOverflowLifecycle = (lifecycleHub) => { _viewportSizeFraction: _viewportSizeFraction2, _viewportScrollSize: { w: max(_viewportScrollSize2.w, arrangedViewportScrollSize.w), - h: max(_viewportScrollSize2.h, arrangedViewportScrollSize.h), + h: max(_viewportScrollSize2.h, arrangedViewportScrollSize.h) }, _viewportClientSize: { w: arrangedViewportClientSize.w + max(0, viewportContentSize.w - _viewportScrollSize2.w), - h: arrangedViewportClientSize.h + max(0, viewportContentSize.h - _viewportScrollSize2.h), - }, + h: arrangedViewportClientSize.h + max(0, viewportContentSize.h - _viewportScrollSize2.h) + } }); } - const { _value: viewportSizeFraction, _changed: viewportSizeFractionChanged } = viewportSizeFractionCache; - const { _value: viewportScrollSize, _changed: viewportScrollSizeChanged } = viewportScrollSizeCache; - const { _value: overflowAmount, _changed: overflowAmountChanged } = overflowAmuntCache; - const { _value: overflow, _changed: overflowChanged } = checkOption('overflow'); + const [viewportSizeFraction, viewportSizeFractionChanged] = viewportSizeFractionCache; + const [viewportScrollSize, viewportScrollSizeChanged] = viewportScrollSizeCache; + const [overflowAmount, overflowAmountChanged] = overflowAmuntCache; + const [overflow, overflowChanged] = checkOption('overflow'); - if ( - _paddingStyleChanged || - viewportSizeFractionChanged || - viewportScrollSizeChanged || - overflowAmountChanged || - overflowChanged || - showNativeOverlaidScrollbarsChanged || - directionChanged || - adjustFlexboxGlue - ) { + if (_paddingStyleChanged || viewportSizeFractionChanged || viewportScrollSizeChanged || overflowAmountChanged || overflowChanged || showNativeOverlaidScrollbarsChanged || directionChanged || adjustFlexboxGlue) { const viewportStyle = { marginRight: 0, marginBottom: 0, marginLeft: 0, width: '', overflowY: '', - overflowX: '', + overflowX: '' }; const viewportOverflowState = setViewportOverflowState(showNativeOverlaidScrollbars, overflowAmount, overflow, viewportStyle); const viewportArranged = arrangeViewport(viewportOverflowState, viewportScrollSize, viewportSizeFraction, directionIsRTL); @@ -2149,20 +2275,15 @@ const createOverflowLifecycle = (lifecycleHub) => { _setLifecycleCommunication({ _viewportOverflowScroll: viewportOverflowState._overflowScroll, - _viewportOverflowAmount: overflowAmount, + _viewportOverflowAmount: overflowAmount }); } }; }; -const getPropByPath = (obj, path) => - obj ? path.split('.').reduce((o, prop) => (o && hasOwnProperty$1(o, prop) ? o[prop] : undefined), obj) : undefined; +const getPropByPath = (obj, path) => obj ? path.split('.').reduce((o, prop) => o && hasOwnProperty(o, prop) ? o[prop] : undefined, obj) : undefined; -const booleanCacheValuesFallback = { - _value: false, - _previous: false, - _changed: false, -}; +const booleanCacheValuesFallback = [false, false, false]; const lifecycleCommunicationFallback = { _paddingInfo: { _absolute: false, @@ -2170,16 +2291,16 @@ const lifecycleCommunicationFallback = { t: 0, r: 0, b: 0, - l: 0, - }, + l: 0 + } }, _viewportOverflowScroll: { x: false, - y: false, + y: false }, _viewportOverflowAmount: { w: 0, - h: 0, + h: 0 }, _viewportPaddingStyle: { marginRight: 0, @@ -2188,18 +2309,20 @@ const lifecycleCommunicationFallback = { paddingTop: 0, paddingRight: 0, paddingBottom: 0, - paddingLeft: 0, - }, + paddingLeft: 0 + } }; -const createLifecycleHub = (options, structureSetup) => { +const createLifecycleHub = (options, structureSetup, scrollbarsSetup) => { let lifecycleCommunication = lifecycleCommunicationFallback; - const { _viewport } = structureSetup._targetObj; + const { + _viewport + } = structureSetup._targetObj; const { _nativeScrollbarStyling, _nativeScrollbarIsOverlaid, _flexboxGlue, _addListener: addEnvironmentListener, - _removeListener: removeEnvironmentListener, + _removeListener: removeEnvironmentListener } = getEnvironment(); const doViewportArrange = !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y); const instance = { @@ -2210,7 +2333,8 @@ const createLifecycleHub = (options, structureSetup) => { _setLifecycleCommunication(newLifecycleCommunication) { lifecycleCommunication = assignDeep({}, lifecycleCommunication, newLifecycleCommunication); - }, + } + }; const lifecycles = [createTrinsicLifecycle(instance), createPaddingLifecycle(instance), createOverflowLifecycle(instance)]; @@ -2221,17 +2345,12 @@ const createLifecycleHub = (options, structureSetup) => { _sizeChanged = force || false, _hostMutation = force || false, _contentMutation = force || false, - _paddingStyleChanged = force || false, + _paddingStyleChanged = force || false } = updateHints || {}; - const finalDirectionIsRTL = - _directionIsRTL || (_sizeObserver ? _sizeObserver._getCurrentCacheValues(force)._directionIsRTL : booleanCacheValuesFallback); - const finalHeightIntrinsic = - _heightIntrinsic || (_trinsicObserver ? _trinsicObserver._getCurrentCacheValues(force)._heightIntrinsic : booleanCacheValuesFallback); + const finalDirectionIsRTL = _directionIsRTL || (_sizeObserver ? _sizeObserver._getCurrentCacheValues(force)._directionIsRTL : booleanCacheValuesFallback); + const finalHeightIntrinsic = _heightIntrinsic || (_trinsicObserver ? _trinsicObserver._getCurrentCacheValues(force)._heightIntrinsic : booleanCacheValuesFallback); - const checkOption = (path) => ({ - _value: getPropByPath(options, path), - _changed: force || getPropByPath(changedOptions, path) !== undefined, - }); + const checkOption = path => [getPropByPath(options, path), force || getPropByPath(changedOptions, path) !== undefined]; const adjustScrollOffset = doViewportArrange || !_flexboxGlue; const scrollOffsetX = adjustScrollOffset && scrollLeft(_viewport); @@ -2241,25 +2360,20 @@ const createLifecycleHub = (options, structureSetup) => { _updateObserverOptions(checkOption); } - each(lifecycles, (lifecycle) => { + each(lifecycles, lifecycle => { const { _sizeChanged: adaptiveSizeChanged, _hostMutation: adaptiveHostMutation, _contentMutation: adaptiveContentMutation, - _paddingStyleChanged: adaptivePaddingStyleChanged, - } = - lifecycle( - { - _directionIsRTL: finalDirectionIsRTL, - _heightIntrinsic: finalHeightIntrinsic, - _sizeChanged, - _hostMutation, - _contentMutation, - _paddingStyleChanged, - }, - checkOption, - !!force - ) || {}; + _paddingStyleChanged: adaptivePaddingStyleChanged + } = lifecycle({ + _directionIsRTL: finalDirectionIsRTL, + _heightIntrinsic: finalHeightIntrinsic, + _sizeChanged, + _hostMutation, + _contentMutation, + _paddingStyleChanged + }, checkOption, !!force) || {}; _sizeChanged = adaptiveSizeChanged || _sizeChanged; _hostMutation = adaptiveHostMutation || _hostMutation; _contentMutation = adaptiveContentMutation || _contentMutation; @@ -2279,7 +2393,12 @@ const createLifecycleHub = (options, structureSetup) => { } }; - const { _sizeObserver, _trinsicObserver, _updateObserverOptions, _destroy: destroyObservers } = lifecycleHubOservers(instance, updateLifecycles); + const { + _sizeObserver, + _trinsicObserver, + _updateObserverOptions, + _destroy: destroyObservers + } = lifecycleHubOservers(instance, updateLifecycles); const update = (changedOptions, force) => updateLifecycles(null, changedOptions, force); @@ -2289,25 +2408,35 @@ const createLifecycleHub = (options, structureSetup) => { return { _update: update, _state: () => ({ - _overflowAmount: lifecycleCommunication._viewportOverflowAmount, + _overflowAmount: lifecycleCommunication._viewportOverflowAmount }), _destroy() { destroyObservers(); removeEnvironmentListener(envUpdateListener); - }, + + structureSetup._destroy(); + + scrollbarsSetup._destroy(); + } + }; }; const OverlayScrollbars = (target, options, extensions) => { - const { _getDefaultOptions } = getEnvironment(); + const { + _getDefaultOptions + } = getEnvironment(); const currentOptions = assignDeep({}, _getDefaultOptions(), validateOptions(options || {}, optionsTemplate, null, true)._validated); const structureSetup = createStructureSetup(target); - const lifecycleHub = createLifecycleHub(currentOptions, structureSetup); + const scrollbarsSetup = createScrollbarsSetup(target, structureSetup); + const lifecycleHub = createLifecycleHub(currentOptions, structureSetup, scrollbarsSetup); const instance = { options(newOptions) { if (newOptions) { - const { _validated: _changedOptions } = validateOptions(newOptions, optionsTemplate, currentOptions, true); + const { + _validated: _changedOptions + } = validateOptions(newOptions, optionsTemplate, currentOptions, true); if (!isEmptyObject(_changedOptions)) { assignDeep(currentOptions, _changedOptions); @@ -2324,10 +2453,12 @@ const OverlayScrollbars = (target, options, extensions) => { update(force) { lifecycleHub._update(null, force); }, + + destroy: () => lifecycleHub._destroy() }; instance.update(true); return instance; }; -export default OverlayScrollbars; +export { OverlayScrollbars as default }; //# sourceMappingURL=overlayscrollbars.esm.js.map diff --git a/packages/overlayscrollbars/dist/overlayscrollbars.esm.js.map b/packages/overlayscrollbars/dist/overlayscrollbars.esm.js.map index 4e20aaf..d99b4d2 100644 --- a/packages/overlayscrollbars/dist/overlayscrollbars.esm.js.map +++ b/packages/overlayscrollbars/dist/overlayscrollbars.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"overlayscrollbars.esm.js","sources":["../src/support/cache/cache.ts","../src/support/utils/types.ts","../src/support/utils/array.ts","../src/support/utils/object.ts","../src/support/dom/attribute.ts","../src/support/dom/traversal.ts","../src/support/dom/manipulation.ts","../src/support/dom/create.ts","../src/support/compatibility/vendors.ts","../src/support/compatibility/apis.ts","../src/support/dom/class.ts","../src/support/dom/dimensions.ts","../src/support/dom/events.ts","../src/support/utils/equal.ts","../src/support/utils/function.ts","../src/support/dom/style.ts","../src/support/dom/offset.ts","../../../node_modules/@babel/runtime/helpers/extends.js","../src/support/options/validation.ts","../src/support/options/transformation.ts","../src/classnames.ts","../src/options.ts","../src/environment.ts","../src/setups/structureSetup.ts","../src/observers/sizeObserver.ts","../src/observers/trinsicObserver.ts","../src/observers/domObserver.ts","../src/lifecycles/lifecycleHubObservers.ts","../src/lifecycles/trinsicLifecycle.ts","../src/lifecycles/paddingLifecycle.ts","../src/lifecycles/overflowLifecycle.ts","../src/lifecycles/lifecycleHub.ts","../src/overlayscrollbars.ts"],"sourcesContent":["export interface CacheValues {\r\n readonly _value?: T;\r\n readonly _previous?: T;\r\n _changed: boolean;\r\n}\r\n\r\nexport interface CacheOptions {\r\n // Custom comparison function if shallow compare isn't enough. Returns true if nothing changed.\r\n _equal?: EqualCachePropFunction;\r\n // Initial value for _value\r\n _initialValue?: T;\r\n // If true updates always _value and _previous, otherwise they update only when changed\r\n _alwaysUpdateValues?: boolean;\r\n}\r\n\r\nexport interface Cache {\r\n _current: (force?: boolean) => CacheValues;\r\n _update: CacheUpdate;\r\n}\r\n\r\nexport type CacheUpdate = undefined extends C\r\n ? (force?: boolean | 0, context?: C) => CacheValues\r\n : (force: boolean | 0, context: C) => CacheValues;\r\n\r\nexport type UpdateCachePropFunction = undefined extends C\r\n ? (context?: C, current?: T, previous?: T) => T\r\n : C extends T\r\n ? ((context: C, current?: T, previous?: T) => T) | 0\r\n : (context: C, current?: T, previous?: T) => T;\r\n\r\nexport type EqualCachePropFunction = (currentVal?: T, newVal?: T) => boolean;\r\n\r\nexport const createCache = (update: UpdateCachePropFunction, options?: CacheOptions): Cache => {\r\n const { _equal, _initialValue, _alwaysUpdateValues } = options || {};\r\n let _value: T | undefined = _initialValue;\r\n let _previous: T | undefined;\r\n\r\n const cacheUpdate = ((force?: boolean | 0, context?: C) => {\r\n const curr = _value;\r\n // @ts-ignore\r\n // update can only not be a function if C extends T as described in \"UpdateCachePropFunction\" type definition\r\n // if C extends T the cast (context as T) is perfectly valid\r\n const newVal = update ? update(context, _value, _previous) : (context as T);\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 {\r\n _value,\r\n _previous,\r\n _changed: changed,\r\n };\r\n }) as CacheUpdate;\r\n\r\n return {\r\n _update: cacheUpdate,\r\n _current: (force?: boolean) => ({\r\n _value,\r\n _previous,\r\n _changed: !!force,\r\n }),\r\n };\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 return 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\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: Array) => unknown {\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) ? (length > 0 && isObject(obj) ? length - 1 in obj : true) : 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 ? (instanceofObj ? obj instanceof instanceofObj : obj.nodeType === ElementNodeType) : 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 ? (instanceofObj ? obj instanceof instanceofObj : obj.nodeType === ElementNodeType) : 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(obj: PlainObject, callback: (value: any, indexOrKey: string, source: PlainObject) => boolean | unknown): 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: Array, item: T, fromIndex?: number): number => 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: Array, items: T | ArrayLike, arrayIsSingleItem?: boolean): Array => {\r\n !arrayIsSingleItem && !isString(items) && isArrayLike(items) ? Array.prototype.push.apply(array, items as Array) : 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) => {\r\n if (Array.from) {\r\n return Array.from(arr);\r\n }\r\n const result: Array = [];\r\n\r\n each(arr, (elm) => {\r\n push(result, elm);\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: Array | null | undefined) => array && array.length === 0;\r\n\r\n/**\r\n * Calls all functions in the passed array/set of functions.\r\n * @param arr The array filled with function which shall be called.\r\n * @param p1 The first param.\r\n */\r\nexport const runEach = (arr: ArrayLike | Set, p1?: unknown): void => {\r\n const runFn = (fn: RunEachItem) => fn && fn(p1);\r\n if (arr instanceof Set) {\r\n arr.forEach(runFn);\r\n } else {\r\n each(arr, runFn);\r\n }\r\n};\r\n","import { isArray, isFunction, isPlainObject, isNull } from 'support/utils/types';\r\nimport { each } from 'support/utils/array';\r\n\r\n/**\r\n * Determines whether the passed object has a property with the passed name.\r\n * @param obj The object.\r\n * @param prop The name of the property.\r\n */\r\nexport const hasOwnProperty = (obj: any, prop: string | number | symbol): boolean => 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(target: T, object1: U, object2: V, object3: W): T & U & V & W;\r\nexport function assignDeep(target: T, object1: U, object2: V, object3: W, object4: X): T & U & V & W & X;\r\nexport function assignDeep(target: T, object1: U, object2: V, object3: W, object4: X, object5: Y): T & U & V & W & X & Y;\r\nexport function assignDeep(\r\n target: T,\r\n object1?: U,\r\n object2?: V,\r\n object3?: W,\r\n object4?: X,\r\n object5?: Y,\r\n object6?: Z\r\n): T & U & V & W & X & Y & Z {\r\n const sources: Array = [object1, object2, object3, object4, object5, object6];\r\n\r\n // Handle case when target is a string or something (possible in deep copy)\r\n if ((typeof target !== 'object' || isNull(target)) && !isFunction(target)) {\r\n target = {} as T;\r\n }\r\n\r\n each(sources, (source) => {\r\n // Extend the base object\r\n each(keys(source), (key) => {\r\n const copy: any = source[key];\r\n\r\n // Prevent Object.prototype pollution\r\n // Prevent never-ending loop\r\n if (target === copy) {\r\n return true;\r\n }\r\n\r\n const copyIsArray = isArray(copy);\r\n\r\n // Recurse if we're merging plain objects or arrays\r\n if (copy && (isPlainObject(copy) || copyIsArray)) {\r\n const src = target[key];\r\n let clone: any = src;\r\n\r\n // Ensure proper type for the source value\r\n if (copyIsArray && !isArray(src)) {\r\n clone = [];\r\n } else if (!copyIsArray && !isPlainObject(src)) {\r\n clone = {};\r\n }\r\n\r\n // Never move original objects, clone them\r\n target[key] = assignDeep(clone, copy) as any;\r\n } else {\r\n target[key] = copy;\r\n }\r\n });\r\n });\r\n\r\n // Return the modified object\r\n return target as any;\r\n}\r\n\r\n/**\r\n * Returns true if the given object is empty, false otherwise.\r\n * @param obj The Object.\r\n */\r\nexport function isEmptyObject(obj: any): boolean {\r\n /* eslint-disable no-restricted-syntax, guard-for-in */\r\n for (const name in obj) return false;\r\n return true;\r\n /* eslint-enable */\r\n}\r\n","import { isUndefined } from 'support/utils/types';\r\n\r\ntype GetSetPropName = 'scrollLeft' | 'scrollTop' | 'value';\r\n\r\nfunction getSetProp(\r\n topLeft: GetSetPropName,\r\n fallback: number | string,\r\n elm: HTMLElement | HTMLInputElement | null,\r\n value?: number | string\r\n): number | string | void {\r\n if (isUndefined(value)) {\r\n return elm ? elm[topLeft] : fallback;\r\n }\r\n elm && (elm[topLeft] = value);\r\n}\r\n\r\n/**\r\n * Gets or sets a attribute with the given attribute of the given element depending whether the value attribute is given.\r\n * Returns null if the element has no attribute with the given name.\r\n * @param elm The element of which the attribute shall be get or set.\r\n * @param attrName The attribute name which shall be get or set.\r\n * @param value The value of the attribute which shall be set.\r\n */\r\nexport function attr(elm: HTMLElement | null, attrName: string): string | null;\r\nexport function attr(elm: HTMLElement | null, attrName: string, value: string): void;\r\nexport function attr(elm: HTMLElement | null, attrName: string, value?: string): string | null | void {\r\n if (isUndefined(value)) {\r\n return elm ? elm.getAttribute(attrName) : null;\r\n }\r\n elm && elm.setAttribute(attrName, value);\r\n}\r\n\r\n/**\r\n * Removes the given attribute from the given element.\r\n * @param elm The element of which the attribute shall be removed.\r\n * @param attrName The attribute name.\r\n */\r\nexport const removeAttr = (elm: Element | null, attrName: string): void => {\r\n elm && elm.removeAttribute(attrName);\r\n};\r\n\r\n/**\r\n * Gets or sets the scrollLeft value of the given element depending whether the value attribute is given.\r\n * @param elm The element of which the scrollLeft value shall be get or set.\r\n * @param value The scrollLeft value which shall be set.\r\n */\r\nexport function scrollLeft(elm: HTMLElement | null): number;\r\nexport function scrollLeft(elm: HTMLElement | null, value: number): void;\r\nexport function scrollLeft(elm: HTMLElement | null, value?: number): number | void {\r\n return getSetProp('scrollLeft', 0, elm, value) as number;\r\n}\r\n\r\n/**\r\n * Gets or sets the scrollTop value of the given element depending whether the value attribute is given.\r\n * @param elm The element of which the scrollTop value shall be get or set.\r\n * @param value The scrollTop value which shall be set.\r\n */\r\nexport function scrollTop(elm: HTMLElement | null): number;\r\nexport function scrollTop(elm: HTMLElement | null, value: number): void;\r\nexport function scrollTop(elm: HTMLElement | null, value?: number): number | void {\r\n return getSetProp('scrollTop', 0, elm, value) as number;\r\n}\r\n\r\n/**\r\n * Gets or sets the value of the given input element depending whether the value attribute is given.\r\n * @param elm The input element of which the value shall be get or set.\r\n * @param value The value which shall be set.\r\n */\r\nexport function val(elm: HTMLInputElement | null): string;\r\nexport function val(elm: HTMLInputElement | null, value: string): void;\r\nexport function val(elm: HTMLInputElement | null, value?: string): string | void {\r\n return getSetProp('value', '', elm, value) as string;\r\n}\r\n","import { isElement } from 'support/utils/types';\r\nimport { push, from } from 'support/utils/array';\r\n\r\ntype InputElementType = Element | Node | false | null | undefined;\r\ntype OutputElementType = Element | null;\r\n\r\nconst elmPrototype = Element.prototype;\r\n\r\n/**\r\n * Find all elements with the passed selector, outgoing (and including) the passed element or the document if no element was provided.\r\n * @param selector The selector which has to be searched by.\r\n * @param elm The element from which the search shall be outgoing.\r\n */\r\nconst find = (selector: string, elm?: InputElementType): Element[] => {\r\n const arr: Array = [];\r\n const rootElm = elm ? (isElement(elm) ? elm : null) : document;\r\n\r\n return rootElm ? push(arr, rootElm.querySelectorAll(selector)) : arr;\r\n};\r\n\r\n/**\r\n * Find the first element with the passed selector, outgoing (and including) the passed element or the document if no element was provided.\r\n * @param selector The selector which has to be searched by.\r\n * @param elm The element from which the search shall be outgoing.\r\n */\r\nconst findFirst = (selector: string, elm?: InputElementType): OutputElementType => {\r\n const rootElm = elm ? (isElement(elm) ? elm : null) : document;\r\n\r\n return rootElm ? rootElm.querySelector(selector) : null;\r\n};\r\n\r\n/**\r\n * Determines whether the passed element is matching with the passed selector.\r\n * @param elm The element which has to be compared with the passed selector.\r\n * @param selector The selector which has to be compared with the passed element. Additional selectors: ':visible' and ':hidden'.\r\n */\r\nconst is = (elm: InputElementType, selector: string): boolean => {\r\n if (isElement(elm)) {\r\n /* istanbul ignore next */\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n const fn: (...args: any) => boolean = elmPrototype.matches || elmPrototype.msMatchesSelector;\r\n return fn.call(elm, selector);\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Returns the children (no text-nodes or comments) of the passed element which are matching the passed selector. An empty array is returned if the passed element is null.\r\n * @param elm The element of which the children shall be returned.\r\n * @param selector The selector which must match with the children elements.\r\n */\r\nconst children = (elm: InputElementType, selector?: string): ReadonlyArray => {\r\n const childs: Array = [];\r\n\r\n return isElement(elm)\r\n ? push(\r\n childs,\r\n from(elm.children).filter((child) => (selector ? is(child, selector) : child))\r\n )\r\n : childs;\r\n};\r\n\r\n/**\r\n * Returns the childNodes (incl. text-nodes or comments etc.) of the passed element. An empty array is returned if the passed element is null.\r\n * @param elm The element of which the childNodes shall be returned.\r\n */\r\nconst contents = (elm: InputElementType): ReadonlyArray => (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 = (elm: InputElementType, highBoundarySelector: string, deepBoundarySelector: string): 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 = (parentElm: Node | false | null | undefined, preferredAnchor: Node | null | undefined, insertedElms: NodeCollection): 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 = (node: Node | null | undefined, insertedNodes: NodeCollection): 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 = ['WebKit', 'Moz', 'O', 'MS', 'webkit', 'moz', 'o', 'ms'];\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 return !(result = resultPossibilities.find((resultPossibility: string) => elmStyle[resultPossibility] !== undefined));\r\n });\r\n\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 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('IntersectionObserver');\r\nexport const ResizeObserverConstructor = jsAPI('ResizeObserver');\r\nexport const cAF = jsAPI('cancelAnimationFrame');\r\nexport const rAF = jsAPI('requestAnimationFrame');\r\n","import { isString } from 'support/utils/types';\r\nimport { each } from 'support/utils/array';\r\nimport { keys } from 'support/utils/object';\r\n\r\nconst rnothtmlwhite = /[^\\x20\\t\\r\\n\\f]+/g;\r\nconst classListAction = (\r\n elm: Element | false | null | undefined,\r\n className: string,\r\n action: (elmClassList: DOMTokenList, clazz: string) => boolean | void\r\n): boolean => {\r\n let clazz: string;\r\n let i = 0;\r\n let result = false;\r\n\r\n if (elm && isString(className)) {\r\n const classes: Array = className.match(rnothtmlwhite) || [];\r\n result = classes.length > 0;\r\n while ((clazz = classes[i++])) {\r\n result = !!action(elm.classList, clazz) && result;\r\n }\r\n }\r\n return result;\r\n};\r\n\r\n/**\r\n * Check whether the given element has the given class name(s).\r\n * @param elm The element.\r\n * @param className The class name(s).\r\n */\r\nexport const hasClass = (elm: Element | false | null | undefined, className: string): boolean =>\r\n classListAction(elm, className, (classList, clazz) => classList.contains(clazz));\r\n\r\n/**\r\n * Adds the given class name(s) to the given element.\r\n * @param elm The element.\r\n * @param className The class name(s) which shall be added. (separated by spaces)\r\n */\r\nexport const addClass = (elm: Element | false | null | undefined, className: string): void => {\r\n classListAction(elm, className, (classList, clazz) => classList.add(clazz));\r\n};\r\n\r\n/**\r\n * Removes the given class name(s) from the given element.\r\n * @param elm The element.\r\n * @param className The class name(s) which shall be removed. (separated by spaces)\r\n */\r\nexport const removeClass = (elm: Element | false | null | undefined, className: string): void => {\r\n classListAction(elm, className, (classList, clazz) => classList.remove(clazz));\r\n};\r\n\r\n/**\r\n * Takes two className strings, compares them and returns the difference as array.\r\n * @param classNameA ClassName A.\r\n * @param classNameB ClassName B.\r\n */\r\nexport const diffClass = (classNameA: string | null | undefined, classNameB: string | null | undefined) => {\r\n const classNameASplit = classNameA && classNameA.split(' ');\r\n const classNameBSplit = classNameB && classNameB.split(' ');\r\n const tempObj = {};\r\n\r\n each(classNameASplit, (className) => {\r\n tempObj[className] = 1;\r\n });\r\n each(classNameBSplit, (className) => {\r\n if (tempObj[className]) {\r\n delete tempObj[className];\r\n } else {\r\n tempObj[className] = 1;\r\n }\r\n });\r\n\r\n return keys(tempObj);\r\n};\r\n","export interface WH {\r\n w: T;\r\n h: T;\r\n}\r\n\r\nconst elementHasDimensions = (elm: HTMLElement): boolean => !!(elm.offsetWidth || elm.offsetHeight || elm.getClientRects().length);\r\nconst zeroObj: WH = {\r\n w: 0,\r\n h: 0,\r\n};\r\n\r\n/**\r\n * Returns the window inner- width and height.\r\n */\r\nexport const windowSize = (): WH => ({\r\n w: window.innerWidth,\r\n h: window.innerHeight,\r\n});\r\n\r\n/**\r\n * Returns the scroll- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the scroll- width and height shall be returned.\r\n */\r\nexport const offsetSize = (elm: HTMLElement | null | undefined): WH =>\r\n elm\r\n ? {\r\n w: elm.offsetWidth,\r\n h: elm.offsetHeight,\r\n }\r\n : zeroObj;\r\n\r\n/**\r\n * Returns the client- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the client- width and height shall be returned.\r\n */\r\nexport const clientSize = (elm: HTMLElement | null | undefined): WH =>\r\n elm\r\n ? {\r\n w: elm.clientWidth,\r\n h: elm.clientHeight,\r\n }\r\n : zeroObj;\r\n\r\n/**\r\n * Returns the client- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the client- width and height shall be returned.\r\n */\r\nexport const scrollSize = (elm: HTMLElement | null | undefined): WH =>\r\n elm\r\n ? {\r\n w: elm.scrollWidth,\r\n h: elm.scrollHeight,\r\n }\r\n : zeroObj;\r\n\r\n/**\r\n * Returns the BoundingClientRect of the passed element.\r\n * @param elm The element of which the BoundingClientRect shall be returned.\r\n */\r\nexport const getBoundingClientRect = (elm: HTMLElement): DOMRect => elm.getBoundingClientRect();\r\n\r\n/**\r\n * Determines whether the passed element has any dimensions.\r\n * @param elm The element.\r\n */\r\nexport const hasDimensions = (elm: HTMLElement | null | undefined): boolean => (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 = (target: EventTarget, eventNames: string, listener: (event: T) => any, capture?: boolean): 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 => (stopPropagation(evt) as undefined) || (preventDefault(evt) as undefined);\r\n","import { each } from 'support/utils/array';\r\nimport { WH, XY, TRBL } from 'support/dom';\r\nimport { PlainObject } from 'typings';\r\n\r\n/**\r\n * Compares two objects and returns true if all values of the passed prop names are identical, false otherwise or if one of the two object is falsy.\r\n * @param a Object a.\r\n * @param b Object b.\r\n * @param props The props which shall be compared.\r\n */\r\nexport const equal = (\r\n a: T | undefined,\r\n b: T | undefined,\r\n props: Array,\r\n propMutation?: ((value: any) => any) | null | false\r\n): boolean => {\r\n if (a && b) {\r\n let result = true;\r\n each(props, (prop) => {\r\n const compareA = propMutation ? propMutation(a[prop]) : a[prop];\r\n const compareB = propMutation ? propMutation(b[prop]) : b[prop];\r\n if (compareA !== compareB) {\r\n result = false;\r\n }\r\n });\r\n return result;\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalWH = (a?: WH, b?: WH) => equal(a, b, ['w', 'h']);\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalXY = (a?: XY, b?: XY) => equal(a, b, ['x', 'y']);\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalTRBL = (a?: TRBL, b?: TRBL) => equal(a, b, ['t', 'r', 'b', 'l']);\r\n\r\n/**\r\n * Compares two DOM Rects for their equality of their width and height properties\r\n * Also returns false if one of the DOM Rects is undefined or null.\r\n * @param a DOM Rect a.\r\n * @param b DOM Rect b.\r\n * @param round Whether the values should be rounded.\r\n */\r\nexport const equalBCRWH = (a?: DOMRect, b?: DOMRect, round?: boolean) =>\r\n equal(a, b, ['width', 'height'], round && ((value) => Math.round(value)));\r\n","import { isNumber, isFunction } from 'support/utils/types';\r\nimport { rAF, cAF } from 'support/compatibility/apis';\r\n\r\nconst setT = window.setTimeout;\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\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 = (curr: Parameters): Parameters | false | null | undefined =>\r\n _mergeParams && prevArguments ? _mergeParams(prevArguments, curr) : curr;\r\n\r\n const flush = () => {\r\n if (timeoutId) {\r\n invokeFunctionToDebounce(mergeParms(latestArguments!) || latestArguments!);\r\n }\r\n };\r\n\r\n const debouncedFn = function () {\r\n const args: Parameters = arguments as Parameters;\r\n const finalTimeout = isFunction(_timeout) ? _timeout() : _timeout;\r\n const hasTimeout = isNumber(finalTimeout) && finalTimeout >= 0;\r\n\r\n if (hasTimeout) {\r\n const finalMaxWait = isFunction(_maxDelay) ? _maxDelay() : _maxDelay;\r\n const hasMaxWait = isNumber(finalMaxWait) && finalMaxWait >= 0;\r\n const setTimeoutFn = finalTimeout! > 0 ? setT : rAF!;\r\n const mergeParamsResult = mergeParms(args);\r\n const invokedArgs = mergeParamsResult || args;\r\n const boundInvoke = invokeFunctionToDebounce.bind(0, invokedArgs);\r\n\r\n if (!mergeParamsResult) {\r\n invokeFunctionToDebounce(prevArguments || args);\r\n }\r\n\r\n clearTimeouts(timeoutId);\r\n timeoutId = setTimeoutFn(boundInvoke, finalTimeout as number) as number;\r\n\r\n if (hasMaxWait && !maxTimeoutId) {\r\n maxTimeoutId = setT(flush, finalMaxWait as number);\r\n }\r\n\r\n prevArguments = latestArguments = invokedArgs;\r\n } else {\r\n invokeFunctionToDebounce(args);\r\n }\r\n };\r\n debouncedFn._flush = flush;\r\n\r\n return debouncedFn as Debounced;\r\n};\r\n","import { each, keys } from 'support/utils';\r\nimport { isString, isNumber, isArray, isUndefined } from 'support/utils/types';\r\nimport { PlainObject, StyleObject } from 'typings';\r\n\r\nexport interface TRBL {\r\n t: number;\r\n r: number;\r\n b: number;\r\n l: number;\r\n}\r\n\r\nconst cssNumber = {\r\n //animationiterationcount: 1,\r\n //columncount: 1,\r\n //fillopacity: 1,\r\n //flexgrow: 1,\r\n //flexshrink: 1,\r\n //fontweight: 1,\r\n //lineheight: 1,\r\n opacity: 1,\r\n //order: 1,\r\n //orphans: 1,\r\n //widows: 1,\r\n zindex: 1,\r\n //zoom: 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 => (!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 ? computedStyle[prop] || computedStyle.getPropertyValue(prop) : elm.style[prop];\r\nconst setCSSVal = (elm: HTMLElement | false | null | undefined, prop: string, val: string | number): void => {\r\n try {\r\n if (elm) {\r\n const { style } = elm;\r\n if (!isUndefined(style[prop])) {\r\n style[prop] = adaptCSSVal(prop, val);\r\n } else {\r\n style.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(elm: HTMLElement | false | null | undefined, styles: StyleObject): void;\r\nexport function style(elm: HTMLElement | false | null | undefined, styles: string): string;\r\nexport function style(elm: HTMLElement | false | null | undefined, styles: Array | string): { [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 = (elm?: HTMLElement | false | null | undefined, propertyPrefix?: string, propertySuffix?: string): TRBL => {\r\n const finalPrefix = propertyPrefix ? `${propertyPrefix}-` : '';\r\n const finalSuffix = propertySuffix ? `-${propertySuffix}` : '';\r\n const top = `${finalPrefix}top${finalSuffix}`;\r\n const right = `${finalPrefix}right${finalSuffix}`;\r\n const bottom = `${finalPrefix}bottom${finalSuffix}`;\r\n const left = `${finalPrefix}left${finalSuffix}`;\r\n const result = style(elm, [top, right, bottom, left]);\r\n return {\r\n t: parseToZeroOrNumber(result[top]),\r\n r: parseToZeroOrNumber(result[right]),\r\n b: parseToZeroOrNumber(result[bottom]),\r\n l: parseToZeroOrNumber(result[left]),\r\n };\r\n};\r\n","import { getBoundingClientRect } from 'support/dom/dimensions';\r\n\r\nexport interface XY {\r\n x: T;\r\n y: T;\r\n}\r\n\r\nconst zeroObj: XY = {\r\n x: 0,\r\n y: 0,\r\n};\r\n\r\n/**\r\n * Returns the offset- left and top coordinates of the passed element relative to the document. If the element is null the top and left values are 0.\r\n * @param elm The element of which the offset- top and left coordinates shall be returned.\r\n */\r\nexport const absoluteCoordinates = (elm: HTMLElement | null | undefined): XY => {\r\n const rect = elm ? getBoundingClientRect(elm) : 0;\r\n return rect\r\n ? {\r\n x: rect.left + window.pageYOffset,\r\n y: rect.top + window.pageXOffset,\r\n }\r\n : zeroObj;\r\n};\r\n\r\n/**\r\n * Returns the offset- left and top coordinates of the passed element. If the element is null the top and left values are 0.\r\n * @param elm The element of which the offset- top and left coordinates shall be returned.\r\n */\r\nexport const offsetCoordinates = (elm: HTMLElement | null | undefined): XY =>\r\n elm\r\n ? {\r\n x: elm.offsetLeft,\r\n y: elm.offsetTop,\r\n }\r\n : zeroObj;\r\n","function _extends() {\n module.exports = _extends = Object.assign || 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 };\n\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","import { each, hasOwnProperty, keys, push, isEmptyObject } from 'support/utils';\r\nimport { type, isArray, isUndefined, isPlainObject, isString } from 'support/utils/types';\r\nimport { PlainObject } from 'typings';\r\n\r\nexport type OptionsObjectType = Record;\r\nexport type OptionsFunctionType = (this: unknown, ...args: unknown[]) => unknown;\r\nexport type OptionsTemplateType = ExtractPropsKey;\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 readonly _foreign: Record;\r\n readonly _validated: PartialOptions;\r\n};\r\n\r\nexport type PartialOptions = {\r\n [P in keyof T]?: T[P] extends OptionsObjectType ? PartialOptions : T[P];\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 { stringify } = JSON;\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 = ['boolean', 'number', 'string', 'array', 'object', 'function', 'null'].reduce(\r\n (result, item) => {\r\n result[item] = templateTypePrefixSuffix[0] + item + templateTypePrefixSuffix[1];\r\n return result;\r\n },\r\n {} as OptionsTemplateTypesDictionary\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 options The options object which shall be validated.\r\n * @param template The template according to which the options object 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 options: PartialOptions,\r\n template: OptionsTemplate,\r\n optionsDiff: T,\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 optionsDiffValue: any = isUndefined(optionsDiff[prop]) ? {} : optionsDiff[prop];\r\n const optionsValue: any = options[prop];\r\n const templateValue: PlainObject | string | OptionsTemplateTypes | Array = 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 validatedResult = validateRecursive(optionsValue, templateValue as T, optionsDiffValue, doWriteErrors, propPrefix + prop);\r\n validatedOptions[prop] = validatedResult._validated as any;\r\n optionsCopy[prop] = validatedResult._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 const doStringifyComparison = isArray(optionsValue) || isPlainObject(optionsValue);\r\n if (doStringifyComparison ? stringify(optionsValue) !== stringify(optionsDiffValue) : optionsValue !== optionsDiffValue) {\r\n validatedOptions[prop] = optionsValue;\r\n }\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 }${errorEnumStrings.length > 0 ? `\\r\\nValid strings are: [ ${errorEnumStrings.join(', ')} ].` : ''}`\r\n );\r\n }\r\n\r\n delete optionsCopy[prop];\r\n }\r\n });\r\n\r\n return {\r\n _foreign: optionsCopy,\r\n _validated: validatedOptions,\r\n };\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 options The options object which shall be validated.\r\n * @param template The template according to which the options object 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 */\r\nconst validateOptions = (\r\n options: PartialOptions,\r\n template: OptionsTemplate,\r\n optionsDiff?: T | null,\r\n doWriteErrors?: boolean\r\n): OptionsValidationResult => {\r\n /*\r\n if (!isEmptyObject(foreign) && doWriteErrors)\r\n console.warn(`The following options are discarded due to invalidity:\\r\\n ${window.JSON.stringify(foreign, null, 2)}`);\r\n\r\n //add values, which aren't specified in the template, to the finished validated object to prevent them from being discarded\r\n if (keepForeignProps) {\r\n Object.assign(result.validated, foreign);\r\n }\r\n */\r\n return validateRecursive(options, template, optionsDiff || ({} as T), doWriteErrors || false);\r\n};\r\n\r\nexport { validateOptions, optionsTemplateTypes };\r\n","import {\r\n OptionsTemplate,\r\n OptionsObjectType,\r\n OptionsTemplateNativeTypes,\r\n OptionsTemplateTypes,\r\n OptionsTemplateValue,\r\n} from 'support/options/validation';\r\nimport { PlainObject } from 'typings';\r\nimport { isArray } from 'support/utils/types';\r\nimport { each, keys } from 'support/utils';\r\n\r\nexport interface OptionsWithOptionsTemplateTransformation {\r\n _template: OptionsTemplate;\r\n _options: T;\r\n}\r\n\r\nexport type OptionsWithOptionsTemplateValue = [T, OptionsTemplateValue];\r\n\r\nexport type OptionsWithOptionsTemplate = {\r\n [P in keyof T]: T[P] extends OptionsObjectType\r\n ? OptionsWithOptionsTemplate\r\n : T[P] extends OptionsTemplateNativeTypes\r\n ? OptionsWithOptionsTemplateValue\r\n : never;\r\n};\r\n\r\n/**\r\n * Transforms the given OptionsWithOptionsTemplate object to its corresponding generic (T) Object or its corresponding Template object.\r\n * @param optionsWithOptionsTemplate The OptionsWithOptionsTemplate object which shall be converted.\r\n * @param toTemplate True if the given OptionsWithOptionsTemplate shall be converted to its corresponding Template object.\r\n */\r\nexport const transformOptions = (optionsWithOptionsTemplate: OptionsWithOptionsTemplate): OptionsWithOptionsTemplateTransformation => {\r\n const result: any = {\r\n _template: {},\r\n _options: {},\r\n };\r\n\r\n each(keys(optionsWithOptionsTemplate), (key: Extract) => {\r\n const val: PlainObject | OptionsTemplateTypes | Array = optionsWithOptionsTemplate[key];\r\n\r\n if (isArray(val)) {\r\n result._template[key] = val[1];\r\n result._options[key] = val[0];\r\n } else {\r\n // if (isObject(val))\r\n const tmpResult = transformOptions(val as OptionsWithOptionsTemplate);\r\n result._template[key] = tmpResult._template;\r\n result._options[key] = tmpResult._options;\r\n }\r\n });\r\n\r\n return result;\r\n};\r\n","export const classNameEnvironment = 'os-environment';\r\nexport const classNameEnvironmentFlexboxGlue = `${classNameEnvironment}-flexbox-glue`;\r\nexport const classNameEnvironmentFlexboxGlueMax = `${classNameEnvironmentFlexboxGlue}-max`;\r\n\r\nexport const classNameHost = 'os-host';\r\nexport const classNamePadding = 'os-padding';\r\nexport const classNameViewport = 'os-viewport';\r\nexport const classNameViewportArrange = `${classNameViewport}-arrange`;\r\nexport const classNameContent = 'os-content';\r\nexport const classNameViewportScrollbarStyling = `${classNameViewport}-scrollbar-styled`;\r\n\r\nexport const classNameSizeObserver = 'os-size-observer';\r\nexport const classNameSizeObserverAppear = `${classNameSizeObserver}-appear`;\r\nexport const classNameSizeObserverListener = `${classNameSizeObserver}-listener`;\r\nexport const classNameSizeObserverListenerScroll = `${classNameSizeObserverListener}-scroll`;\r\nexport const classNameSizeObserverListenerItem = `${classNameSizeObserverListener}-item`;\r\nexport const classNameSizeObserverListenerItemFinal = `${classNameSizeObserverListenerItem}-final`;\r\n\r\nexport const classNameTrinsicObserver = 'os-trinsic-observer';\r\n","import {\r\n optionsTemplateTypes as oTypes,\r\n transformOptions,\r\n OptionsTemplateValue,\r\n OptionsWithOptionsTemplateValue,\r\n OptionsWithOptionsTemplate,\r\n} from 'support/options';\r\n\r\nexport type ResizeBehavior = 'none' | 'both' | 'horizontal' | 'vertical';\r\n\r\nexport type OverflowBehavior = 'hidden' | 'scroll' | 'visible' | 'visible-hidden';\r\n\r\nexport type VisibilityBehavior = 'visible' | 'hidden' | 'auto';\r\n\r\nexport type AutoHideBehavior = 'never' | 'scroll' | 'leave' | 'move';\r\n\r\nexport type ScrollBehavior = 'always' | 'ifneeded' | 'never';\r\n\r\nexport type BasicEventCallback = (this: any) => void;\r\n\r\nexport type ScrollEventCallback = (this: any, args?: UIEvent) => void;\r\n\r\nexport type OverflowChangedCallback = (this: any, args?: OverflowChangedArgs) => void;\r\n\r\nexport type OverflowAmountChangedCallback = (this: any, args?: OverflowAmountChangedArgs) => void;\r\n\r\nexport type DirectionChangedCallback = (this: any, args?: DirectionChangedArgs) => void;\r\n\r\nexport type SizeChangedCallback = (this: any, args?: SizeChangedArgs) => void;\r\n\r\nexport type UpdatedCallback = (this: any, args?: UpdatedArgs) => void;\r\n\r\nexport interface OSOptions {\r\n resize: ResizeBehavior;\r\n paddingAbsolute: boolean;\r\n updating: {\r\n elementEvents: Array<[string, string]> | null;\r\n attributes: string[] | null;\r\n debounce: number | [number, number] | null;\r\n };\r\n overflow: {\r\n x: OverflowBehavior;\r\n y: OverflowBehavior;\r\n };\r\n scrollbars: {\r\n visibility: VisibilityBehavior;\r\n autoHide: AutoHideBehavior;\r\n autoHideDelay: number;\r\n dragScroll: boolean;\r\n clickScroll: boolean;\r\n touch: boolean;\r\n };\r\n textarea: {\r\n dynWidth: boolean;\r\n dynHeight: boolean;\r\n inheritedAttrs: string | Array | null;\r\n };\r\n nativeScrollbarsOverlaid: {\r\n show: boolean;\r\n initialize: boolean;\r\n };\r\n callbacks: {\r\n onUpdated: (() => any) | null;\r\n };\r\n /*\r\n callbacks?: {\r\n onInitialized?: BasicEventCallback | null;\r\n onInitializationWithdrawn?: BasicEventCallback | null;\r\n onDestroyed?: BasicEventCallback | null;\r\n onScrollStart?: ScrollEventCallback | null;\r\n onScroll?: ScrollEventCallback | null;\r\n onScrollStop?: ScrollEventCallback | null;\r\n onOverflowChanged?: OverflowChangedCallback | null;\r\n onOverflowAmountChanged?: OverflowAmountChangedCallback | null;\r\n onDirectionChanged?: DirectionChangedCallback | null;\r\n onContentSizeChanged?: SizeChangedCallback | null;\r\n onHostSizeChanged?: SizeChangedCallback | null;\r\n onUpdated?: UpdatedCallback | null;\r\n };\r\n */\r\n}\r\n\r\nexport interface OverflowChangedArgs {\r\n x: boolean;\r\n y: boolean;\r\n xScrollable: boolean;\r\n yScrollable: boolean;\r\n clipped: boolean;\r\n}\r\n\r\nexport interface OverflowAmountChangedArgs {\r\n x: number;\r\n y: number;\r\n}\r\n\r\nexport interface DirectionChangedArgs {\r\n isRTL: number;\r\n dir: string;\r\n}\r\n\r\nexport interface SizeChangedArgs {\r\n width: number;\r\n height: number;\r\n}\r\n\r\nexport interface UpdatedArgs {\r\n forced: boolean;\r\n}\r\n\r\nconst numberAllowedValues: OptionsTemplateValue = oTypes.number;\r\nconst arrayNullValues: OptionsTemplateValue | null> = [oTypes.array, oTypes.null];\r\nconst stringArrayNullAllowedValues: OptionsTemplateValue | null> = [oTypes.string, oTypes.array, oTypes.null];\r\nconst booleanTrueTemplate: OptionsWithOptionsTemplateValue = [true, oTypes.boolean];\r\nconst booleanFalseTemplate: OptionsWithOptionsTemplateValue = [false, oTypes.boolean];\r\n// const callbackTemplate: OptionsWithOptionsTemplateValue = [null, [oTypes.function, oTypes.null]];\r\nconst resizeAllowedValues: OptionsTemplateValue = 'none both horizontal vertical';\r\nconst overflowAllowedValues: OptionsTemplateValue = 'hidden scroll visible visible-hidden';\r\nconst scrollbarsVisibilityAllowedValues: OptionsTemplateValue = 'visible hidden auto';\r\nconst scrollbarsAutoHideAllowedValues: OptionsTemplateValue = 'never scroll leavemove';\r\n\r\n/**\r\n * A object which serves as \"default options object\" and \"options template object\".\r\n * I combined these two into one object so that I don't have to define two separate big objects, instead I define one big object.\r\n *\r\n * The property value is a tuple:\r\n * the first value is the default value\r\n * the second value is the template value\r\n * Example:\r\n * {\r\n * a: ['default', [Type.string, Type.null]],\r\n * b: [250, Type.number]\r\n * }\r\n * Property \"a\" has a default value of 'default' and it can be a string or null\r\n * Property \"b\" has a default value of 250 and it can be number\r\n */\r\nconst defaultOptionsWithTemplate: OptionsWithOptionsTemplate = {\r\n resize: ['none', resizeAllowedValues], // none || both || horizontal || vertical || n || b || h || v\r\n paddingAbsolute: booleanFalseTemplate, // true || false\r\n updating: {\r\n elementEvents: [[['img', 'load']], arrayNullValues], // array of tuples || null\r\n attributes: [null, arrayNullValues],\r\n debounce: [\r\n [0, 33],\r\n [oTypes.number, oTypes.array, oTypes.null],\r\n ], // number || number array || null\r\n },\r\n overflow: {\r\n x: ['scroll', overflowAllowedValues], // visible-hidden || visible-scroll || hidden || scroll || v-h || v-s || h || s\r\n y: ['scroll', overflowAllowedValues], // visible-hidden || visible-scroll || hidden || scroll || v-h || v-s || h || s\r\n },\r\n scrollbars: {\r\n visibility: ['auto', scrollbarsVisibilityAllowedValues], // visible || hidden || auto || v || h || a\r\n autoHide: ['never', scrollbarsAutoHideAllowedValues], // never || scroll || leave || move || n || s || l || m\r\n autoHideDelay: [800, numberAllowedValues], // number\r\n dragScroll: booleanTrueTemplate, // true || false\r\n clickScroll: booleanFalseTemplate, // true || false\r\n touch: booleanTrueTemplate, // true || false\r\n },\r\n textarea: {\r\n dynWidth: booleanFalseTemplate, // true || false\r\n dynHeight: booleanFalseTemplate, // true || false\r\n inheritedAttrs: [['style', 'class'], stringArrayNullAllowedValues], // string || array || null\r\n },\r\n nativeScrollbarsOverlaid: {\r\n show: booleanFalseTemplate, // true || false\r\n initialize: booleanFalseTemplate, // true || false\r\n },\r\n callbacks: {\r\n onUpdated: [null, [oTypes.function, oTypes.null]],\r\n },\r\n /*\r\n callbacks: {\r\n onInitialized: callbackTemplate, // null || function\r\n onInitializationWithdrawn: callbackTemplate, // null || function\r\n onDestroyed: callbackTemplate, // null || function\r\n onScrollStart: callbackTemplate, // null || function\r\n onScroll: callbackTemplate, // null || function\r\n onScrollStop: callbackTemplate, // null || function\r\n onOverflowChanged: callbackTemplate, // null || function\r\n onOverflowAmountChanged: callbackTemplate, // null || function\r\n onDirectionChanged: callbackTemplate, // null || function\r\n onContentSizeChanged: callbackTemplate, // null || function\r\n onHostSizeChanged: callbackTemplate, // null || function\r\n onUpdated: callbackTemplate, // null || function\r\n },\r\n */\r\n};\r\n\r\nexport const { _template: optionsTemplate, _options: defaultOptions } = transformOptions(defaultOptionsWithTemplate);\r\n","import {\r\n createDOM,\r\n addClass,\r\n style,\r\n appendChildren,\r\n clientSize,\r\n absoluteCoordinates,\r\n offsetSize,\r\n scrollLeft,\r\n XY,\r\n removeAttr,\r\n removeElements,\r\n windowSize,\r\n runEach,\r\n equalBCRWH,\r\n getBoundingClientRect,\r\n assignDeep,\r\n cssProperty,\r\n PartialOptions,\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\n\r\nexport interface InitializationStrategy {\r\n _padding: boolean;\r\n _content: boolean;\r\n}\r\n\r\nexport type OnEnvironmentChanged = (env: Environment) => void;\r\nexport interface Environment {\r\n _nativeScrollbarSize: XY;\r\n _nativeScrollbarIsOverlaid: XY;\r\n _nativeScrollbarStyling: boolean;\r\n _rtlScrollBehavior: { n: boolean; i: boolean };\r\n _flexboxGlue: boolean;\r\n _cssCustomProperties: boolean;\r\n _addListener(listener: OnEnvironmentChanged): void;\r\n _removeListener(listener: OnEnvironmentChanged): void;\r\n _getInitializationStrategy(): InitializationStrategy;\r\n _setInitializationStrategy(newInitializationStrategy: Partial): void;\r\n _getDefaultOptions(): OSOptions;\r\n _setDefaultOptions(newDefaultOptions: PartialOptions): void;\r\n _defaultInitializationStrategy: InitializationStrategy;\r\n _defaultDefaultOptions: OSOptions;\r\n}\r\n\r\nlet environmentInstance: Environment;\r\nconst { abs, round } = Math;\r\n\r\nconst diffBiggerThanOne = (valOne: number, valTwo: number): boolean => {\r\n const absValOne = abs(valOne);\r\n const absValTwo = abs(valTwo);\r\n return !(absValOne === absValTwo || absValOne + 1 === absValTwo || absValOne - 1 === absValTwo);\r\n};\r\n\r\nconst getNativeScrollbarSize = (body: HTMLElement, measureElm: HTMLElement): XY => {\r\n appendChildren(body, measureElm);\r\n const cSize = clientSize(measureElm);\r\n const oSize = offsetSize(measureElm);\r\n\r\n return {\r\n x: oSize.h - cSize.h,\r\n y: oSize.w - cSize.w,\r\n };\r\n};\r\n\r\nconst getNativeScrollbarStyling = (testElm: HTMLElement): boolean => {\r\n let result = false;\r\n addClass(testElm, classNameViewportScrollbarStyling);\r\n try {\r\n result =\r\n style(testElm, cssProperty('scrollbar-width')) === 'none' ||\r\n window.getComputedStyle(testElm, '::-webkit-scrollbar').getPropertyValue('display') === 'none';\r\n } catch (ex) {}\r\n\r\n return result;\r\n};\r\n\r\nconst getRtlScrollBehavior = (parentElm: HTMLElement, childElm: HTMLElement): { i: boolean; n: boolean } => {\r\n const strHidden = 'hidden';\r\n style(parentElm, { overflowX: strHidden, overflowY: strHidden, direction: 'rtl' });\r\n scrollLeft(parentElm, 0);\r\n\r\n const parentOffset = absoluteCoordinates(parentElm);\r\n const childOffset = absoluteCoordinates(childElm);\r\n scrollLeft(parentElm, -999); // https://github.com/KingSora/OverlayScrollbars/issues/187\r\n const childOffsetAfterScroll = absoluteCoordinates(childElm);\r\n return {\r\n /**\r\n * origin direction = determines if the zero scroll position is on the left or right side\r\n * 'i' means 'invert' (i === true means that the axis must be inverted to be correct)\r\n * true = on the left side\r\n * false = on the right side\r\n */\r\n i: parentOffset.x === childOffset.x,\r\n /**\r\n * negative = determines if the maximum scroll is positive or negative\r\n * 'n' means 'negate' (n === true means that the axis must be negated to be correct)\r\n * true = negative\r\n * false = positive\r\n */\r\n n: childOffset.x !== childOffsetAfterScroll.x,\r\n };\r\n};\r\n\r\nconst getFlexboxGlue = (parentElm: HTMLElement, childElm: HTMLElement): boolean => {\r\n addClass(parentElm, classNameEnvironmentFlexboxGlue);\r\n const minOffsetsizeParent = getBoundingClientRect(parentElm);\r\n const minOffsetsize = getBoundingClientRect(childElm);\r\n const supportsMin = equalBCRWH(minOffsetsize, minOffsetsizeParent, true);\r\n\r\n addClass(parentElm, classNameEnvironmentFlexboxGlueMax);\r\n const maxOffsetsizeParent = getBoundingClientRect(parentElm);\r\n const maxOffsetsize = getBoundingClientRect(childElm);\r\n const supportsMax = equalBCRWH(maxOffsetsize, maxOffsetsizeParent, true);\r\n\r\n return supportsMin && supportsMax;\r\n};\r\n\r\nconst getWindowDPR = (): number => {\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n const dDPI = window.screen.deviceXDPI || 0;\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n const sDPI = window.screen.logicalXDPI || 1;\r\n return window.devicePixelRatio || dDPI / sDPI;\r\n};\r\n\r\nconst getDefaultInitializationStrategy = (nativeScrollbarStyling: boolean): InitializationStrategy => ({\r\n _padding: !nativeScrollbarStyling,\r\n _content: false,\r\n});\r\n\r\nconst createEnvironment = (): Environment => {\r\n const { body } = document;\r\n const envDOM = createDOM(`
`);\r\n const envElm = envDOM[0] as HTMLElement;\r\n const envChildElm = envElm.firstChild as HTMLElement;\r\n const onChangedListener: Set = new Set();\r\n const nativeScrollbarSize = getNativeScrollbarSize(body, envElm);\r\n const nativeScrollbarStyling = getNativeScrollbarStyling(envElm);\r\n const nativeScrollbarIsOverlaid = {\r\n x: nativeScrollbarSize.x === 0,\r\n y: nativeScrollbarSize.y === 0,\r\n };\r\n const defaultInitializationStrategy = getDefaultInitializationStrategy(nativeScrollbarStyling);\r\n let initializationStrategy = defaultInitializationStrategy;\r\n let defaultDefaultOptions = defaultOptions;\r\n\r\n const env: Environment = {\r\n _nativeScrollbarSize: nativeScrollbarSize,\r\n _nativeScrollbarIsOverlaid: nativeScrollbarIsOverlaid,\r\n _nativeScrollbarStyling: nativeScrollbarStyling,\r\n _cssCustomProperties: style(envElm, 'zIndex') === '-1',\r\n _rtlScrollBehavior: getRtlScrollBehavior(envElm, envChildElm),\r\n _flexboxGlue: getFlexboxGlue(envElm, envChildElm),\r\n _addListener(listener: OnEnvironmentChanged): void {\r\n onChangedListener.add(listener);\r\n },\r\n _removeListener(listener: OnEnvironmentChanged): void {\r\n onChangedListener.delete(listener);\r\n },\r\n _getInitializationStrategy: () => ({ ...initializationStrategy }),\r\n _setInitializationStrategy(newInitializationStrategy) {\r\n initializationStrategy = assignDeep({}, initializationStrategy, newInitializationStrategy);\r\n },\r\n _getDefaultOptions: () => ({ ...defaultDefaultOptions }),\r\n _setDefaultOptions(newDefaultOptions) {\r\n defaultDefaultOptions = assignDeep({}, defaultDefaultOptions, newDefaultOptions);\r\n },\r\n _defaultInitializationStrategy: defaultInitializationStrategy,\r\n _defaultDefaultOptions: defaultDefaultOptions,\r\n };\r\n\r\n removeAttr(envElm, 'style');\r\n removeElements(envElm);\r\n\r\n if (!nativeScrollbarStyling && (!nativeScrollbarIsOverlaid.x || !nativeScrollbarIsOverlaid.y)) {\r\n let size = windowSize();\r\n let dpr = getWindowDPR();\r\n let scrollbarSize = nativeScrollbarSize;\r\n\r\n window.addEventListener('resize', () => {\r\n if (onChangedListener.size) {\r\n const sizeNew = windowSize();\r\n const deltaSize = {\r\n w: sizeNew.w - size.w,\r\n h: sizeNew.h - size.h,\r\n };\r\n\r\n if (deltaSize.w === 0 && deltaSize.h === 0) return;\r\n\r\n const deltaAbsSize = {\r\n w: abs(deltaSize.w),\r\n h: abs(deltaSize.h),\r\n };\r\n const deltaAbsRatio = {\r\n w: abs(round(sizeNew.w / (size.w / 100.0))),\r\n h: abs(round(sizeNew.h / (size.h / 100.0))),\r\n };\r\n const dprNew = getWindowDPR();\r\n const deltaIsBigger = deltaAbsSize.w > 2 && deltaAbsSize.h > 2;\r\n const difference = !diffBiggerThanOne(deltaAbsRatio.w, deltaAbsRatio.h);\r\n const dprChanged = dprNew !== dpr && dpr > 0;\r\n const isZoom = deltaIsBigger && difference && dprChanged;\r\n\r\n if (isZoom) {\r\n const newScrollbarSize = (environmentInstance._nativeScrollbarSize = getNativeScrollbarSize(body, envElm));\r\n removeElements(envElm);\r\n\r\n if (scrollbarSize.x !== newScrollbarSize.x || scrollbarSize.y !== newScrollbarSize.y) {\r\n runEach(onChangedListener);\r\n }\r\n\r\n scrollbarSize = newScrollbarSize;\r\n }\r\n\r\n size = sizeNew;\r\n dpr = dprNew;\r\n }\r\n });\r\n }\r\n\r\n return env;\r\n};\r\n\r\nexport const getEnvironment = (): Environment => {\r\n if (!environmentInstance) {\r\n environmentInstance = createEnvironment();\r\n }\r\n return environmentInstance;\r\n};\r\n","import {\r\n isHTMLElement,\r\n appendChildren,\r\n is,\r\n createDiv,\r\n contents,\r\n insertAfter,\r\n addClass,\r\n parent,\r\n isUndefined,\r\n removeElements,\r\n removeClass,\r\n push,\r\n runEach,\r\n insertBefore,\r\n attr,\r\n isBoolean,\r\n} from 'support';\r\nimport {\r\n classNameHost,\r\n classNamePadding,\r\n classNameViewport,\r\n classNameViewportArrange,\r\n classNameContent,\r\n classNameViewportScrollbarStyling,\r\n} from 'classnames';\r\nimport { getEnvironment } from 'environment';\r\nimport { OSTarget, OSTargetObject, OSTargetElement } from 'typings';\r\n\r\nexport interface OSTargetContext {\r\n _isTextarea: boolean;\r\n _isBody: boolean;\r\n _htmlElm: HTMLHtmlElement;\r\n _bodyElm: HTMLBodyElement;\r\n _windowElm: Window;\r\n _documentElm: HTMLDocument;\r\n}\r\n\r\nexport interface PreparedOSTargetObject {\r\n _target: OSTargetElement;\r\n _host: HTMLElement;\r\n _viewport: HTMLElement;\r\n _padding: HTMLElement | false | null;\r\n _content: HTMLElement | false | null;\r\n _viewportArrange: HTMLStyleElement | false | null;\r\n}\r\n\r\nexport interface StructureSetup {\r\n _targetObj: PreparedOSTargetObject;\r\n _targetCtx: OSTargetContext;\r\n _destroy: () => void;\r\n}\r\n\r\nconst unwrap = (elm: HTMLElement | false | null | undefined) => {\r\n appendChildren(parent(elm), contents(elm));\r\n removeElements(elm);\r\n};\r\n\r\nlet contentArrangeCounter = 0;\r\nconst createUniqueViewportArrangeElement = (): HTMLStyleElement => {\r\n const elm = document.createElement('style');\r\n\r\n attr(elm, 'id', `${classNameViewportArrange}-${contentArrangeCounter}`);\r\n contentArrangeCounter++;\r\n\r\n return elm;\r\n};\r\nconst evaluateCreationFromStrategy = (initializationValue: HTMLElement | boolean | undefined, strategy: boolean): HTMLElement | false | undefined => {\r\n const isBooleanValue = isBoolean(initializationValue);\r\n if (isBooleanValue || isUndefined(initializationValue)) {\r\n return (isBooleanValue ? initializationValue : strategy) && undefined;\r\n }\r\n return initializationValue as HTMLElement;\r\n};\r\n\r\nexport const createStructureSetup = (target: OSTarget | OSTargetObject): StructureSetup => {\r\n const { _getInitializationStrategy, _nativeScrollbarStyling, _nativeScrollbarIsOverlaid, _cssCustomProperties } = getEnvironment();\r\n const { _padding: paddingNeeded, _content: contentNeeded } = _getInitializationStrategy();\r\n const targetIsElm = isHTMLElement(target);\r\n const osTargetObj: Partial = targetIsElm\r\n ? ({} as Partial)\r\n : {\r\n _host: (target as OSTargetObject).host,\r\n _target: (target as OSTargetObject).target,\r\n _viewport: (target as OSTargetObject).viewport,\r\n _padding: evaluateCreationFromStrategy((target as OSTargetObject).padding, paddingNeeded),\r\n _content: evaluateCreationFromStrategy((target as OSTargetObject).content, contentNeeded),\r\n };\r\n\r\n if (targetIsElm) {\r\n const viewport = createDiv(classNameViewport);\r\n const padding = paddingNeeded && createDiv(classNamePadding);\r\n const content = contentNeeded && createDiv(classNameContent);\r\n\r\n osTargetObj._target = target as OSTargetElement;\r\n osTargetObj._padding = padding;\r\n osTargetObj._viewport = viewport;\r\n osTargetObj._content = content;\r\n }\r\n\r\n let { _target, _padding, _viewport, _content } = osTargetObj;\r\n const destroyFns: (() => any)[] = [];\r\n const isTextarea = is(_target, 'textarea');\r\n const isBody = !isTextarea && is(_target, 'body');\r\n const _host = (isTextarea ? osTargetObj._host || createDiv() : _target) as HTMLElement;\r\n const getTargetContents = (contentSlot: HTMLElement) => (isTextarea ? (_target as HTMLTextAreaElement) : contents(contentSlot as HTMLElement));\r\n const isTextareaHostGenerated = isTextarea && _host !== osTargetObj._host;\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 if (targetIsElm) {\r\n const contentSlot = _content || _viewport;\r\n appendChildren(contentSlot, getTargetContents(_target!));\r\n appendChildren(_host, _padding);\r\n appendChildren(_padding || _host, _viewport);\r\n appendChildren(_viewport, _content);\r\n\r\n push(destroyFns, () => {\r\n appendChildren(_host, contents(contentSlot));\r\n removeElements(_padding || _viewport);\r\n removeClass(_host, classNameHost);\r\n });\r\n } else {\r\n const contentContainingElm = _content || _viewport || _padding || _host;\r\n const createPadding = isUndefined(_padding);\r\n const createViewport = isUndefined(_viewport);\r\n const createContent = isUndefined(_content);\r\n const targetContents = getTargetContents(contentContainingElm);\r\n\r\n _padding = osTargetObj._padding = createPadding ? createDiv() : _padding;\r\n _viewport = osTargetObj._viewport = createViewport ? createDiv() : _viewport;\r\n _content = osTargetObj._content = createContent ? createDiv() : _content;\r\n\r\n appendChildren(_host, _padding);\r\n appendChildren(_padding || _host, _viewport);\r\n appendChildren(_viewport, _content);\r\n\r\n const contentSlot = _content || _viewport;\r\n appendChildren(contentSlot, targetContents);\r\n\r\n push(destroyFns, () => {\r\n if (createContent) {\r\n unwrap(_content);\r\n }\r\n if (createViewport) {\r\n unwrap(_viewport);\r\n }\r\n if (createPadding) {\r\n unwrap(_padding);\r\n }\r\n removeClass(_host, classNameHost);\r\n removeClass(_padding, classNamePadding);\r\n removeClass(_viewport, classNameViewport);\r\n removeClass(_content, classNameContent);\r\n });\r\n }\r\n\r\n addClass(_host, classNameHost);\r\n addClass(_padding, classNamePadding);\r\n addClass(_viewport, classNameViewport);\r\n addClass(_content, classNameContent);\r\n\r\n const ownerDocument: HTMLDocument = _target!.ownerDocument;\r\n const bodyElm = ownerDocument.body as HTMLBodyElement;\r\n const wnd = ownerDocument.defaultView as Window;\r\n const ctx: OSTargetContext = {\r\n _windowElm: wnd,\r\n _documentElm: ownerDocument,\r\n _htmlElm: parent(bodyElm) as HTMLHtmlElement,\r\n _bodyElm: bodyElm,\r\n _isTextarea: isTextarea,\r\n _isBody: isBody,\r\n };\r\n // @ts-ignore\r\n const obj: PreparedOSTargetObject = {\r\n ...osTargetObj,\r\n _host,\r\n };\r\n\r\n if (_nativeScrollbarStyling) {\r\n push(destroyFns, removeClass.bind(0, _viewport, classNameViewportScrollbarStyling));\r\n } else if (!_cssCustomProperties && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y)) {\r\n const viewportArrangeElm = createUniqueViewportArrangeElement();\r\n\r\n insertBefore(_viewport, viewportArrangeElm);\r\n push(destroyFns, removeElements.bind(0, viewportArrangeElm));\r\n\r\n obj._viewportArrange = viewportArrangeElm;\r\n }\r\n\r\n return {\r\n _targetObj: obj,\r\n _targetCtx: ctx,\r\n _destroy: () => {\r\n runEach(destroyFns);\r\n },\r\n };\r\n};\r\n","import {\r\n Cache,\r\n CacheValues,\r\n createCache,\r\n createDOM,\r\n style,\r\n appendChildren,\r\n offsetSize,\r\n scrollLeft,\r\n scrollTop,\r\n runEach,\r\n prependChildren,\r\n removeElements,\r\n on,\r\n stopAndPrevent,\r\n addClass,\r\n equalWH,\r\n push,\r\n cAF,\r\n rAF,\r\n ResizeObserverConstructor,\r\n isArray,\r\n isBoolean,\r\n removeClass,\r\n} from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport {\r\n classNameSizeObserver,\r\n classNameSizeObserverAppear,\r\n classNameSizeObserverListener,\r\n classNameSizeObserverListenerScroll,\r\n classNameSizeObserverListenerItem,\r\n classNameSizeObserverListenerItemFinal,\r\n} from 'classnames';\r\n\r\nexport interface SizeObserverOptions {\r\n _direction?: boolean;\r\n _appear?: boolean;\r\n}\r\n\r\nexport interface SizeObserverCallbackParams {\r\n _sizeChanged: boolean;\r\n _directionIsRTLCache?: CacheValues;\r\n _appear?: boolean;\r\n}\r\n\r\nexport interface SizeObserver {\r\n _destroy(): void;\r\n _getCurrentCacheValues(\r\n force?: boolean\r\n ): {\r\n _directionIsRTL: CacheValues;\r\n };\r\n}\r\n\r\n/*\r\nconst directionIsRTLMap = {\r\n direction: ['rtl'],\r\n 'writing-mode': ['sideways-rl', 'tb', 'tb-rl', 'vertical-rl'],\r\n};\r\nconst directionIsRTL = (elm: HTMLElement): boolean => {\r\n let isRTL = false;\r\n const styles = style(elm, ['direction', 'writing-mode']);\r\n each(styles, (value, key) => {\r\n isRTL = isRTL || indexOf(directionIsRTLMap[key], value) > -1;\r\n });\r\n return isRTL;\r\n};\r\n*/\r\nconst animationStartEventName = 'animationstart';\r\nconst scrollEventName = 'scroll';\r\nconst scrollAmount = 3333333;\r\nconst directionIsRTL = (elm: HTMLElement): boolean => style(elm, 'direction') === 'rtl';\r\nconst domRectHasDimensions = (rect?: DOMRectReadOnly) => rect && (rect.height || rect.width);\r\n\r\n/**\r\n * Creates a size observer which observes any size, padding, border, margin and box-sizing changes of the target element. Depending on the options also direction and appear can be observed.\r\n * @param target The target element which shall be observed.\r\n * @param onSizeChangedCallback The callback which gets called after a size change was detected.\r\n * @param options The options for size detection, whether to observe also direction and appear.\r\n * @returns A object which represents the instance of the size observer.\r\n */\r\nexport const createSizeObserver = (\r\n target: HTMLElement,\r\n onSizeChangedCallback: (params: SizeObserverCallbackParams) => any,\r\n options?: SizeObserverOptions\r\n): SizeObserver => {\r\n const { _direction: observeDirectionChange = false, _appear: observeAppearChange = false } = options || {};\r\n const { _rtlScrollBehavior: rtlScrollBehavior } = getEnvironment();\r\n const baseElements = createDOM(`
`);\r\n const sizeObserver = baseElements[0] as HTMLElement;\r\n const listenerElement = sizeObserver.firstChild as HTMLElement;\r\n const { _update: updateResizeObserverContentRectCache } = createCache(0, {\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 = (sizeChangedContext?: CacheValues | ResizeObserverEntry[] | Event | boolean) => {\r\n const hasDirectionCache = sizeChangedContext && isBoolean((sizeChangedContext as CacheValues)._value);\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 (isArray(sizeChangedContext) && sizeChangedContext.length > 0) {\r\n const { _previous, _value } = updateResizeObserverContentRectCache(0, sizeChangedContext.pop()!.contentRect);\r\n const hasDimensions = domRectHasDimensions(_value);\r\n const hadDimensions = domRectHasDimensions(_previous);\r\n skip = !_previous || !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)._changed; // 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 ? (sizeChangedContext as CacheValues)._value : directionIsRTL(sizeObserver);\r\n scrollLeft(sizeObserver, rtl ? (rtlScrollBehavior.n ? -scrollAmount : rtlScrollBehavior.i ? 0 : scrollAmount) : scrollAmount);\r\n scrollTop(sizeObserver, scrollAmount);\r\n }\r\n\r\n if (!skip) {\r\n onSizeChangedCallback({\r\n _sizeChanged: !hasDirectionCache,\r\n _directionIsRTLCache: hasDirectionCache ? (sizeChangedContext as CacheValues) : 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 ? onSizeChangedCallbackProxy : 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, [on(expandElement, scrollEventName, onScroll), on(shrinkElement, scrollEventName, onScroll)]);\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(directionIsRTL.bind(0, sizeObserver));\r\n const { _update: updateDirectionIsRTLCache } = directionIsRTLCache;\r\n push(\r\n offListeners,\r\n on(sizeObserver, scrollEventName, (event: Event) => {\r\n const directionIsRTLCacheValues = updateDirectionIsRTLCache();\r\n console.log;\r\n const { _value, _changed } = directionIsRTLCacheValues;\r\n if (_changed) {\r\n removeClass(listenerElement, 'ltr rtl');\r\n if (_value) {\r\n addClass(listenerElement, 'rtl');\r\n } else {\r\n addClass(listenerElement, 'ltr');\r\n }\r\n onSizeChangedCallbackProxy(directionIsRTLCacheValues);\r\n }\r\n\r\n stopAndPrevent(event);\r\n })\r\n );\r\n }\r\n\r\n // appearCallback is always needed on scroll-observer strategy to reset it\r\n if (appearCallback) {\r\n addClass(sizeObserver, classNameSizeObserverAppear);\r\n push(\r\n offListeners,\r\n on(sizeObserver, animationStartEventName, appearCallback, {\r\n // Fire only once for \"CSS is ready\" event if ResizeObserver strategy is used\r\n _once: !!ResizeObserverConstructor,\r\n })\r\n );\r\n }\r\n\r\n prependChildren(target, sizeObserver);\r\n\r\n return {\r\n _destroy() {\r\n runEach(offListeners);\r\n removeElements(sizeObserver);\r\n },\r\n _getCurrentCacheValues(force?: boolean) {\r\n return {\r\n _directionIsRTL: directionIsRTLCache\r\n ? directionIsRTLCache._current(force)\r\n : {\r\n _value: false,\r\n _previous: false,\r\n _changed: false,\r\n },\r\n };\r\n },\r\n };\r\n};\r\n","import {\r\n WH,\r\n CacheValues,\r\n createDiv,\r\n offsetSize,\r\n runEach,\r\n prependChildren,\r\n removeElements,\r\n createCache,\r\n push,\r\n IntersectionObserverConstructor,\r\n} from 'support';\r\nimport { createSizeObserver } from 'observers/sizeObserver';\r\nimport { classNameTrinsicObserver } from 'classnames';\r\n\r\nexport interface TrinsicObserver {\r\n _destroy(): void;\r\n _getCurrentCacheValues(\r\n force?: boolean\r\n ): {\r\n _heightIntrinsic: CacheValues;\r\n };\r\n}\r\n\r\n/**\r\n * Creates a trinsic observer which observes changes to intrinsic or extrinsic sizing for the height of the target element.\r\n * @param target The element which shall be observed.\r\n * @param onTrinsicChangedCallback The callback which gets called after a change was detected.\r\n * @returns A object which represents the instance of the trinsic observer.\r\n */\r\nexport const createTrinsicObserver = (\r\n target: HTMLElement,\r\n onTrinsicChangedCallback: (heightIntrinsic: CacheValues) => any\r\n): TrinsicObserver => {\r\n const trinsicObserver = createDiv(classNameTrinsicObserver);\r\n const offListeners: (() => void)[] = [];\r\n const { _update: updateHeightIntrinsicCache, _current: getCurrentHeightIntrinsicCache } = createCache<\r\n boolean,\r\n IntersectionObserverEntry | WH\r\n >(\r\n (ioEntryOrSize: IntersectionObserverEntry | WH) =>\r\n (ioEntryOrSize! as WH).h === 0 ||\r\n (ioEntryOrSize! as IntersectionObserverEntry).isIntersecting ||\r\n (ioEntryOrSize! as IntersectionObserverEntry).intersectionRatio > 0,\r\n {\r\n _initialValue: false,\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 const last = entries.pop();\r\n if (last) {\r\n const heightIntrinsic = updateHeightIntrinsicCache(0, last);\r\n\r\n if (heightIntrinsic._changed) {\r\n onTrinsicChangedCallback(heightIntrinsic);\r\n }\r\n }\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 const heightIntrinsicCache = updateHeightIntrinsicCache(0, newSize);\r\n if (heightIntrinsicCache._changed) {\r\n onTrinsicChangedCallback(heightIntrinsicCache);\r\n }\r\n };\r\n push(offListeners, createSizeObserver(trinsicObserver, onSizeChanged)._destroy);\r\n onSizeChanged();\r\n }\r\n\r\n prependChildren(target, trinsicObserver);\r\n\r\n return {\r\n _destroy() {\r\n runEach(offListeners);\r\n removeElements(trinsicObserver);\r\n },\r\n _getCurrentCacheValues(force?: boolean) {\r\n return {\r\n _heightIntrinsic: getCurrentHeightIntrinsicCache(force),\r\n };\r\n },\r\n };\r\n};\r\n","import {\r\n each,\r\n noop,\r\n debounce,\r\n indexOf,\r\n isString,\r\n MutationObserverConstructor,\r\n isEmptyArray,\r\n on,\r\n off,\r\n attr,\r\n is,\r\n find,\r\n push,\r\n isUndefined,\r\n} from 'support';\r\n\r\ntype StringNullUndefined = string | null | undefined;\r\n\r\ntype DOMContentObserverCallback = (contentChangedTroughEvent: boolean) => any;\r\n\r\ntype DOMTargetObserverCallback = (targetChangedAttrs: string[], targetStyleChanged: boolean) => any;\r\n\r\ninterface DOMObserverOptionsBase {\r\n _attributes?: string[];\r\n _styleChangingAttributes?: string[];\r\n}\r\n\r\ninterface DOMContentObserverOptions extends DOMObserverOptionsBase {\r\n _eventContentChange?: DOMObserverEventContentChange; // [selector, eventname(s) | function returning eventname(s)] -> eventnames divided by whitespaces\r\n _nestedTargetSelector?: string;\r\n _ignoreContentChange?: DOMObserverIgnoreContentChange; // function which will prevent marking certain dom changes as content change if it returns true\r\n _ignoreNestedTargetChange?: DOMObserverIgnoreTargetChange; // a function which will prevent marking certain attributes as changed on nested targets if it returns true\r\n}\r\n\r\ninterface DOMTargetObserverOptions extends DOMObserverOptionsBase {\r\n _ignoreTargetChange?: DOMObserverIgnoreTargetChange; // a function which will prevent marking certain attributes as changed if it returns true\r\n}\r\n\r\ntype ContentChangeArrayItem = [StringNullUndefined, StringNullUndefined] | null | undefined;\r\n\r\nexport type DOMObserverEventContentChange = Array | false | null | 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 ? DOMContentObserverOptions : DOMTargetObserverOptions;\r\n\r\nexport interface DOMObserver {\r\n _destroy: () => void;\r\n _update: () => void;\r\n}\r\n\r\n/**\r\n * Creates a set of helper functions to observe events of elements inside the target element.\r\n * @param target The target element of which the children elements shall be observed. (not only direct children but also nested ones)\r\n * @param eventContentChange The event content change array. (array of tuples: selector and eventname(s))\r\n * @param callback Callback which is called if one of the elements emits the corresponding event.\r\n * @returns A object which contains a set of helper functions to destroy and update the observation of elements.\r\n */\r\nconst createEventContentChange = (target: Element, eventContentChange: DOMObserverEventContentChange, callback: (...args: any) => any) => {\r\n let map: Map | undefined;\r\n const _destroy = () => {\r\n if (map) {\r\n map.forEach((eventName: string, elm: Node) => {\r\n off(elm, eventName, callback);\r\n });\r\n map.clear();\r\n }\r\n };\r\n const _updateElements = (getElements?: (selector: string) => Node[]) => {\r\n if (map && 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 = eventNames && selector && (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 registredEventNames = map!.get(elm);\r\n const newEntry = isUndefined(registredEventNames);\r\n const changingExistingEntry = !newEntry && eventNames !== registredEventNames;\r\n const finalEventNames = changingExistingEntry ? `${registredEventNames} ${eventNames}` : eventNames;\r\n\r\n if (changingExistingEntry) {\r\n off(elm, registredEventNames!, callback);\r\n }\r\n\r\n map!.set(elm, finalEventNames);\r\n on(elm, finalEventNames, callback);\r\n })\r\n );\r\n }\r\n };\r\n\r\n if (eventContentChange) {\r\n map = map || new Map();\r\n _destroy();\r\n _updateElements();\r\n }\r\n\r\n return {\r\n _destroy,\r\n _updateElements,\r\n };\r\n};\r\n\r\n/**\r\n * Creates a DOM observer which observes DOM changes to either the target element or its children.\r\n * @param target The element which shall be observed.\r\n * @param isContentObserver Whether this observer is just observing the target or just the targets children. (not only direct children but also nested ones)\r\n * @param callback The callback which gets called if a change was detected.\r\n * @param options The options for DOM change detection.\r\n * @returns A object which represents the instance of the DOM observer.\r\n */\r\nexport const createDOMObserver = (\r\n target: HTMLElement,\r\n isContentObserver: ContentObserver,\r\n callback: DOMObserverCallback,\r\n options?: DOMObserverOptions\r\n): DOMObserver => {\r\n let isConnected = false;\r\n const {\r\n _attributes,\r\n _styleChangingAttributes,\r\n _eventContentChange,\r\n _nestedTargetSelector,\r\n _ignoreTargetChange,\r\n _ignoreNestedTargetChange,\r\n _ignoreContentChange,\r\n } = (options as DOMContentObserverOptions & DOMTargetObserverOptions) || {};\r\n const { _destroy: destroyEventContentChange, _updateElements: updateEventContentChangeElements } = createEventContentChange(\r\n target,\r\n isContentObserver && _eventContentChange,\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 );\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 = (isContentObserver ? _ignoreNestedTargetChange : _ignoreTargetChange) || noop;\r\n const ignoreContentChange = _ignoreContentChange || noop;\r\n const targetChangedAttrs: string[] = [];\r\n const totalAddedNodes: Node[] = [];\r\n let targetStyleChanged = false;\r\n let contentChanged = false;\r\n let childListChanged = false;\r\n each(mutations, (mutation) => {\r\n const { attributeName, target: mutationTarget, type, oldValue, addedNodes } = mutation;\r\n const isAttributesType = type === 'attributes';\r\n const isChildListType = type === 'childList';\r\n const targetIsMutationTarget = target === mutationTarget;\r\n const attributeValue = isAttributesType && isString(attributeName) ? attr(mutationTarget as HTMLElement, attributeName!) : 0;\r\n const attributeChanged = attributeValue !== 0 && oldValue !== attributeValue;\r\n const styleChangingAttrChanged = 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 = contentAttrChanged && _nestedTargetSelector && is(mutationTarget, _nestedTargetSelector);\r\n const baseAssertion = isNestedTarget\r\n ? !ignoreTargetChange(mutationTarget, attributeName!, oldValue, attributeValue as string | null)\r\n : notOnlyAttrChanged || contentAttrChanged;\r\n const contentFinalChanged = 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 as string | null)\r\n ) {\r\n push(targetChangedAttrs, attributeName!);\r\n targetStyleChanged = targetStyleChanged || styleChangingAttrChanged;\r\n }\r\n });\r\n\r\n if (childListChanged && !isEmptyArray(totalAddedNodes)) {\r\n // adds / removes the new elements from the event content change\r\n updateEventContentChangeElements((selector) =>\r\n totalAddedNodes.reduce((arr, node) => {\r\n push(arr, find(selector, node));\r\n return is(node, selector) ? push(arr, node) : arr;\r\n }, [])\r\n );\r\n }\r\n\r\n if (isContentObserver) {\r\n contentChanged && (callback as DOMContentObserverCallback)(false);\r\n } else if (!isEmptyArray(targetChangedAttrs) || targetStyleChanged) {\r\n (callback as DOMTargetObserverCallback)(targetChangedAttrs, targetStyleChanged);\r\n }\r\n };\r\n const mutationObserver: MutationObserver = new MutationObserverConstructor!(observerCallback);\r\n\r\n // Connect\r\n mutationObserver.observe(target, {\r\n attributes: true,\r\n attributeOldValue: true,\r\n attributeFilter: observedAttributes,\r\n subtree: isContentObserver,\r\n childList: isContentObserver,\r\n characterData: isContentObserver,\r\n });\r\n isConnected = true;\r\n\r\n return {\r\n _destroy: () => {\r\n if (isConnected) {\r\n destroyEventContentChange();\r\n mutationObserver.disconnect();\r\n isConnected = false;\r\n }\r\n },\r\n _update: () => {\r\n if (isConnected) {\r\n observerCallback(mutationObserver.takeRecords());\r\n }\r\n },\r\n };\r\n};\r\n","import { CacheValues, diffClass, debounce, isArray, isNumber, each, indexOf, isString, attr, removeAttr } from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport { createSizeObserver, SizeObserverCallbackParams } from 'observers/sizeObserver';\r\nimport { createTrinsicObserver } from 'observers/trinsicObserver';\r\nimport { createDOMObserver, DOMObserver } from 'observers/domObserver';\r\nimport { LifecycleHub, LifecycleCheckOption, LifecycleUpdateHints } from 'lifecycles/lifecycleHub';\r\n\r\n//const hostSelector = `.${classNameHost}`;\r\n\r\n// TODO: observer textarea attrs if textarea\r\n// TODO: test _ignoreContentChange & _ignoreNestedTargetChange for content dom observer\r\n// TODO: test _ignoreTargetChange for target dom observer\r\n\r\n//const viewportSelector = `.${classNameViewport}`;\r\n//const contentSelector = `.${classNameContent}`;\r\nconst ignorePrefix = 'os-';\r\nconst viewportAttrsFromTarget = ['tabindex'];\r\nconst baseStyleChangingAttrsTextarea = ['wrap', 'cols', 'rows'];\r\nconst baseStyleChangingAttrs = ['id', 'class', 'style', 'open'];\r\n\r\nconst ignoreTargetChange = (target: Node, attrName: string, oldValue: string | null, newValue: string | null) => {\r\n if (attrName === 'class' && oldValue && newValue) {\r\n const diff = diffClass(oldValue, newValue);\r\n return !!diff.find((addedOrRemovedClass) => addedOrRemovedClass.indexOf(ignorePrefix) !== 0);\r\n }\r\n return false;\r\n};\r\n\r\nexport const lifecycleHubOservers = (instance: LifecycleHub, updateLifecycles: (updateHints?: Partial | null) => unknown) => {\r\n let debounceTimeout: number | false | undefined;\r\n let debounceMaxDelay: number | false | undefined;\r\n let contentMutationObserver: DOMObserver | undefined;\r\n const { _structureSetup } = instance;\r\n const { _targetObj, _targetCtx } = _structureSetup;\r\n const { _host, _viewport, _content } = _targetObj;\r\n const { _isTextarea } = _targetCtx;\r\n const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment();\r\n const contentMutationObserverAttr = _isTextarea ? baseStyleChangingAttrsTextarea : baseStyleChangingAttrs.concat(baseStyleChangingAttrsTextarea);\r\n const updateLifecyclesWithDebouncedAdaptiveUpdateHints = debounce(updateLifecycles as (updateHints: Partial) => any, {\r\n _timeout: () => debounceTimeout,\r\n _maxDelay: () => debounceMaxDelay,\r\n _mergeParams(prev, curr) {\r\n const { _sizeChanged: prevSizeChanged, _hostMutation: prevHostMutation, _contentMutation: prevContentMutation } = prev[0];\r\n const { _sizeChanged: currSizeChanged, _hostMutation: currvHostMutation, _contentMutation: currContentMutation } = curr[0];\r\n const merged: [Partial] = [\r\n {\r\n _sizeChanged: prevSizeChanged || currSizeChanged,\r\n _hostMutation: prevHostMutation || currvHostMutation,\r\n _contentMutation: prevContentMutation || currContentMutation,\r\n },\r\n ];\r\n\r\n return merged;\r\n },\r\n });\r\n\r\n const updateViewportAttrsFromHost = (attributes?: string[]) => {\r\n each(attributes || viewportAttrsFromTarget, (attribute) => {\r\n if (indexOf(viewportAttrsFromTarget, attribute) > -1) {\r\n const hostAttr = attr(_host, attribute);\r\n if (isString(hostAttr)) {\r\n attr(_viewport, attribute, hostAttr);\r\n } else {\r\n removeAttr(_viewport, attribute);\r\n }\r\n }\r\n });\r\n };\r\n const onTrinsicChanged = (heightIntrinsic: CacheValues) => {\r\n updateLifecycles({\r\n _heightIntrinsic: heightIntrinsic,\r\n });\r\n };\r\n const onSizeChanged = ({ _sizeChanged, _directionIsRTLCache, _appear }: SizeObserverCallbackParams) => {\r\n const updateFn = !_sizeChanged || _appear ? updateLifecycles : updateLifecyclesWithDebouncedAdaptiveUpdateHints;\r\n updateFn({\r\n _sizeChanged,\r\n _directionIsRTL: _directionIsRTLCache,\r\n });\r\n };\r\n const onContentMutation = (contentChangedTroughEvent: boolean) => {\r\n // if contentChangedTroughEvent is true its already debounced\r\n const updateFn = contentChangedTroughEvent ? updateLifecycles : updateLifecyclesWithDebouncedAdaptiveUpdateHints;\r\n updateFn({\r\n _contentMutation: true,\r\n });\r\n };\r\n const onHostMutation = (targetChangedAttrs: string[], targetStyleChanged: boolean) => {\r\n if (targetStyleChanged) {\r\n updateLifecyclesWithDebouncedAdaptiveUpdateHints({\r\n _hostMutation: true,\r\n });\r\n } else {\r\n updateViewportAttrsFromHost(targetChangedAttrs);\r\n }\r\n };\r\n\r\n const trinsicObserver = (_content || !_flexboxGlue) && createTrinsicObserver(_host, onTrinsicChanged);\r\n const sizeObserver = createSizeObserver(_host, onSizeChanged, { _appear: true, _direction: !_nativeScrollbarStyling });\r\n const hostMutationObserver = createDOMObserver(_host, false, onHostMutation, {\r\n _styleChangingAttributes: baseStyleChangingAttrs,\r\n _attributes: baseStyleChangingAttrs.concat(viewportAttrsFromTarget),\r\n _ignoreTargetChange: ignoreTargetChange,\r\n });\r\n\r\n const updateOptions = (checkOption: LifecycleCheckOption) => {\r\n const { _value: elementEvents, _changed: elementEventsChanged } = checkOption | null>('updating.elementEvents');\r\n const { _value: attributes, _changed: attributesChanged } = checkOption('updating.attributes');\r\n const { _value: debounce, _changed: debounceChanged } = checkOption | number | null>('updating.debounce');\r\n const updateContentMutationObserver = elementEventsChanged || attributesChanged;\r\n\r\n if (updateContentMutationObserver) {\r\n if (contentMutationObserver) {\r\n contentMutationObserver._update();\r\n contentMutationObserver._destroy();\r\n }\r\n contentMutationObserver = createDOMObserver(_content || _viewport, true, onContentMutation, {\r\n _styleChangingAttributes: contentMutationObserverAttr.concat(attributes || []),\r\n _attributes: contentMutationObserverAttr.concat(attributes || []),\r\n _eventContentChange: elementEvents,\r\n _ignoreNestedTargetChange: ignoreTargetChange,\r\n //_nestedTargetSelector: hostSelector,\r\n /*\r\n _ignoreContentChange: (mutation, isNestedTarget) => {\r\n const { target, attributeName } = mutation;\r\n return isNestedTarget\r\n ? false\r\n : attributeName\r\n ? liesBetween(target as Element, hostSelector, viewportSelector) || liesBetween(target as Element, hostSelector, contentSelector)\r\n : false;\r\n },\r\n */\r\n });\r\n }\r\n\r\n if (debounceChanged) {\r\n updateLifecyclesWithDebouncedAdaptiveUpdateHints._flush();\r\n if (isArray(debounce)) {\r\n const timeout = debounce[0];\r\n const maxWait = debounce[1];\r\n debounceTimeout = isNumber(timeout) ? timeout : false;\r\n debounceMaxDelay = isNumber(maxWait) ? maxWait : false;\r\n } else if (isNumber(debounce)) {\r\n debounceTimeout = debounce;\r\n debounceMaxDelay = false;\r\n } else {\r\n debounceTimeout = false;\r\n debounceMaxDelay = false;\r\n }\r\n }\r\n };\r\n\r\n updateViewportAttrsFromHost();\r\n\r\n return {\r\n _trinsicObserver: trinsicObserver,\r\n _sizeObserver: sizeObserver,\r\n _updateObserverOptions: updateOptions,\r\n _destroy() {\r\n contentMutationObserver && contentMutationObserver._destroy();\r\n trinsicObserver && trinsicObserver._destroy();\r\n sizeObserver._destroy();\r\n hostMutationObserver._destroy();\r\n },\r\n };\r\n};\r\n","import { style } from 'support';\r\nimport { LifecycleHub, Lifecycle } from 'lifecycles/lifecycleHub';\r\n\r\n/**\r\n * Lifecycle with the responsibility to adjust the trinsic behavior of the content element.\r\n * @param lifecycleHub\r\n * @returns\r\n */\r\nexport const createTrinsicLifecycle = (lifecycleHub: LifecycleHub): Lifecycle => {\r\n const { _structureSetup } = lifecycleHub;\r\n const { _content } = _structureSetup._targetObj;\r\n\r\n return (updateHints) => {\r\n const { _heightIntrinsic } = updateHints;\r\n const { _value: heightIntrinsic, _changed: heightIntrinsicChanged } = _heightIntrinsic;\r\n\r\n if (heightIntrinsicChanged) {\r\n style(_content, {\r\n height: heightIntrinsic ? '' : '100%',\r\n display: heightIntrinsic ? '' : 'inline',\r\n });\r\n }\r\n\r\n return {\r\n _sizeChanged: heightIntrinsicChanged,\r\n _contentMutation: heightIntrinsicChanged,\r\n };\r\n };\r\n};\r\n","import { createCache, topRightBottomLeft, equalTRBL, style, TRBL } from 'support';\r\nimport { LifecycleHub, Lifecycle } from 'lifecycles/lifecycleHub';\r\nimport { StyleObject } from 'typings';\r\nimport { getEnvironment } from 'environment';\r\n\r\n/**\r\n * Lifecycle with the responsibility to adjust the padding styling of the padding and viewport element.\r\n * @param lifecycleHub\r\n * @returns\r\n */\r\nexport const createPaddingLifecycle = (lifecycleHub: LifecycleHub): Lifecycle => {\r\n const { _structureSetup, _setLifecycleCommunication } = lifecycleHub;\r\n const { _host, _padding, _viewport } = _structureSetup._targetObj;\r\n const { _update: updatePaddingCache, _current: currentPaddingCache } = createCache(topRightBottomLeft.bind(0, _host, 'padding'), {\r\n _equal: equalTRBL,\r\n _initialValue: topRightBottomLeft(),\r\n });\r\n\r\n return (updateHints, checkOption, force) => {\r\n let { _value: padding, _changed: paddingChanged } = currentPaddingCache(force);\r\n const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment();\r\n const { _sizeChanged, _directionIsRTL, _contentMutation } = updateHints;\r\n const { _value: directionIsRTL, _changed: directionChanged } = _directionIsRTL;\r\n const { _value: paddingAbsolute, _changed: paddingAbsoluteChanged } = checkOption('paddingAbsolute');\r\n const contentMutation = !_flexboxGlue && _contentMutation;\r\n\r\n if (_sizeChanged || paddingChanged || contentMutation) {\r\n ({ _value: padding, _changed: paddingChanged } = updatePaddingCache(force));\r\n }\r\n\r\n const paddingStyleChanged = paddingAbsoluteChanged || directionChanged || paddingChanged;\r\n\r\n if (paddingStyleChanged) {\r\n // if there is no padding element and no scrollbar styling, paddingAbsolute isn't supported\r\n const paddingRelative = !paddingAbsolute || (!_padding && !_nativeScrollbarStyling);\r\n const paddingHorizontal = padding!.r + padding!.l;\r\n const paddingVertical = padding!.t + padding!.b;\r\n\r\n const paddingStyle: StyleObject = {\r\n marginRight: paddingRelative && !directionIsRTL ? -paddingHorizontal : 0,\r\n marginBottom: paddingRelative ? -paddingVertical : 0,\r\n marginLeft: paddingRelative && directionIsRTL ? -paddingHorizontal : 0,\r\n top: paddingRelative ? -padding!.t : 0,\r\n right: paddingRelative ? (directionIsRTL ? -padding!.r : 'auto') : 0,\r\n left: paddingRelative ? (directionIsRTL ? 'auto' : -padding!.l) : 0,\r\n width: paddingRelative ? `calc(100% + ${paddingHorizontal}px)` : '',\r\n };\r\n const viewportStyle: StyleObject = {\r\n paddingTop: paddingRelative ? padding!.t : 0,\r\n paddingRight: paddingRelative ? padding!.r : 0,\r\n paddingBottom: paddingRelative ? padding!.b : 0,\r\n paddingLeft: paddingRelative ? padding!.l : 0,\r\n };\r\n\r\n // if there is no padding element apply the style to the viewport element instead\r\n style(_padding || _viewport, paddingStyle);\r\n style(_viewport, viewportStyle);\r\n\r\n _setLifecycleCommunication({\r\n _paddingInfo: {\r\n _absolute: !paddingRelative,\r\n _padding: padding!,\r\n },\r\n _viewportPaddingStyle: _padding\r\n ? viewportStyle\r\n : {\r\n ...paddingStyle,\r\n ...viewportStyle,\r\n },\r\n });\r\n }\r\n\r\n return {\r\n _paddingStyleChanged: paddingStyleChanged,\r\n };\r\n };\r\n};\r\n","import {\r\n createCache,\r\n keys,\r\n attr,\r\n WH,\r\n XY,\r\n style,\r\n scrollSize,\r\n CacheValues,\r\n equalWH,\r\n addClass,\r\n removeClass,\r\n clientSize,\r\n offsetSize,\r\n getBoundingClientRect,\r\n noop,\r\n each,\r\n} from 'support';\r\nimport { LifecycleHub, Lifecycle } from 'lifecycles/lifecycleHub';\r\nimport { getEnvironment } from 'environment';\r\nimport { OverflowBehavior } from 'options';\r\nimport { StyleObject } from 'typings';\r\nimport { classNameViewportArrange, classNameViewportScrollbarStyling } from 'classnames';\r\n\r\ninterface OverflowAmountCacheContext {\r\n _viewportScrollSize: WH;\r\n _viewportClientSize: WH;\r\n _viewportSizeFraction: WH;\r\n}\r\n\r\ninterface ViewportOverflowState {\r\n _scrollbarsHideOffset: XY;\r\n _scrollbarsHideOffsetArrange: XY;\r\n _overflowScroll: XY;\r\n}\r\n\r\ninterface UndoViewportArrangeResult {\r\n _redoViewportArrange: () => void;\r\n _viewportOverflowState?: ViewportOverflowState;\r\n}\r\n\r\ninterface OverflowOption {\r\n x: OverflowBehavior;\r\n y: OverflowBehavior;\r\n}\r\n\r\nconst { max, abs, round } = Math;\r\nconst overlaidScrollbarsHideOffset = 42;\r\nconst whCacheOptions = {\r\n _equal: equalWH,\r\n _initialValue: { w: 0, h: 0 },\r\n};\r\nconst sizeFraction = (elm: HTMLElement): WH => {\r\n const viewportOffsetSize = offsetSize(elm);\r\n const viewportRect = getBoundingClientRect(elm);\r\n return {\r\n w: viewportRect.width - viewportOffsetSize.w,\r\n h: viewportRect.height - viewportOffsetSize.h,\r\n };\r\n};\r\nconst fractionalPixelRatioTollerance = () => (window.devicePixelRatio % 1 === 0 ? 0 : 1);\r\nconst setAxisOverflowStyle = (horizontal: boolean, overflowAmount: number, behavior: OverflowBehavior, styleObj: StyleObject) => {\r\n const overflowKey: keyof StyleObject = horizontal ? 'overflowX' : 'overflowY';\r\n const behaviorIsVisible = behavior.indexOf('visible') === 0;\r\n const behaviorIsVisibleHidden = behavior === 'visible-hidden';\r\n const behaviorIsScroll = behavior === 'scroll';\r\n const hasOverflow = overflowAmount > 0;\r\n\r\n if (behaviorIsVisible) {\r\n styleObj[overflowKey] = 'visible';\r\n }\r\n if (behaviorIsScroll && hasOverflow) {\r\n styleObj[overflowKey] = behavior;\r\n }\r\n\r\n return {\r\n _visible: behaviorIsVisible,\r\n _behavior: behaviorIsVisibleHidden ? 'hidden' : 'scroll',\r\n };\r\n};\r\n\r\n/**\r\n * Lifecycle with the responsibility to set the correct overflow and scrollbar hiding styles of the viewport element.\r\n * @param lifecycleHub\r\n * @returns\r\n */\r\nexport const createOverflowLifecycle = (lifecycleHub: LifecycleHub): Lifecycle => {\r\n const { _structureSetup, _doViewportArrange, _getLifecycleCommunication, _setLifecycleCommunication } = lifecycleHub;\r\n const { _host, _viewport, _viewportArrange } = _structureSetup._targetObj;\r\n const { _update: updateViewportSizeFraction, _current: getCurrentViewportSizeFraction } = createCache>(\r\n sizeFraction.bind(0, _viewport),\r\n whCacheOptions\r\n );\r\n const { _update: updateViewportScrollSizeCache, _current: getCurrentViewportScrollSizeCache } = createCache>(\r\n scrollSize.bind(0, _viewport),\r\n whCacheOptions\r\n );\r\n const { _update: updateOverflowAmountCache, _current: getCurrentOverflowAmountCache } = createCache, OverflowAmountCacheContext>(\r\n ({ _viewportScrollSize, _viewportClientSize, _viewportSizeFraction }) => ({\r\n w: max(0, round(max(0, _viewportScrollSize.w - _viewportClientSize.w) - (fractionalPixelRatioTollerance() || max(0, _viewportSizeFraction.w)))),\r\n h: max(0, round(max(0, _viewportScrollSize.h - _viewportClientSize.h) - (fractionalPixelRatioTollerance() || max(0, _viewportSizeFraction.h)))),\r\n }),\r\n whCacheOptions\r\n );\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 = (viewportOverflowState: ViewportOverflowState, heightIntrinsic: boolean) => {\r\n style(_viewport, {\r\n height: '',\r\n });\r\n\r\n if (heightIntrinsic) {\r\n const { _absolute: paddingAbsolute, _padding: padding } = _getLifecycleCommunication()._paddingInfo;\r\n const { _overflowScroll, _scrollbarsHideOffset } = viewportOverflowState;\r\n const hostSizeFraction = sizeFraction(_host);\r\n const hostClientSize = clientSize(_host);\r\n // padding subtraction is only needed if padding is absolute or if viewport is content-box\r\n const paddingVertical = paddingAbsolute || style(_viewport, 'boxSizing') === 'content-box' ? padding.b + padding.t : 0;\r\n const fractionalClientHeight = hostClientSize.h + (abs(hostSizeFraction.h) < 1 ? hostSizeFraction.h : 0);\r\n\r\n style(_viewport, {\r\n height: fractionalClientHeight + (_overflowScroll.x ? _scrollbarsHideOffset.x : 0) - 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 = (showNativeOverlaidScrollbars: boolean, viewportStyleObj?: StyleObject): ViewportOverflowState => {\r\n const { _nativeScrollbarSize, _nativeScrollbarIsOverlaid, _nativeScrollbarStyling } = getEnvironment();\r\n const { x: overlaidX, y: overlaidY } = _nativeScrollbarIsOverlaid;\r\n const determineOverflow = !viewportStyleObj;\r\n const arrangeHideOffset = !_nativeScrollbarStyling && !showNativeOverlaidScrollbars ? overlaidScrollbarsHideOffset : 0;\r\n const styleObj = determineOverflow ? style(_viewport, ['overflowX', 'overflowY']) : viewportStyleObj;\r\n const scroll = {\r\n x: styleObj!.overflowX === 'scroll',\r\n y: styleObj!.overflowY === 'scroll',\r\n };\r\n const scrollbarsHideOffset = {\r\n x: scroll.x && !_nativeScrollbarStyling ? (overlaidX ? arrangeHideOffset : _nativeScrollbarSize.x) : 0,\r\n y: scroll.y && !_nativeScrollbarStyling ? (overlaidY ? arrangeHideOffset : _nativeScrollbarSize.y) : 0,\r\n };\r\n\r\n return {\r\n _overflowScroll: scroll,\r\n _scrollbarsHideOffsetArrange: {\r\n x: overlaidX && !!arrangeHideOffset,\r\n y: overlaidY && !!arrangeHideOffset,\r\n },\r\n _scrollbarsHideOffset: scrollbarsHideOffset,\r\n };\r\n };\r\n\r\n /**\r\n * Sets the overflow property of the viewport and calculates the a overflow state according to the new parameters.\r\n * @param showNativeOverlaidScrollbars Whether to show natively overlaid scrollbars.\r\n * @param overflowAmount The overflow amount.\r\n * @param overflow The overflow behavior according to the options.\r\n * @param viewportStyleObj The viewport style object to which the overflow style shall be applied.\r\n * @returns A object which represents the newly set overflow state.\r\n */\r\n const setViewportOverflowState = (\r\n showNativeOverlaidScrollbars: boolean,\r\n overflowAmount: WH,\r\n overflow: OverflowOption,\r\n viewportStyleObj: StyleObject\r\n ): ViewportOverflowState => {\r\n const { _visible: xVisible, _behavior: xVisibleBehavior } = setAxisOverflowStyle(true, overflowAmount!.w, overflow.x, viewportStyleObj);\r\n const { _visible: yVisible, _behavior: yVisibleBehavior } = setAxisOverflowStyle(false, overflowAmount!.h, overflow.y, viewportStyleObj);\r\n\r\n if (xVisible && !yVisible) {\r\n viewportStyleObj.overflowX = xVisibleBehavior;\r\n }\r\n if (yVisible && !xVisible) {\r\n viewportStyleObj.overflowY = yVisibleBehavior;\r\n }\r\n\r\n return getViewportOverflowState(showNativeOverlaidScrollbars, viewportStyleObj);\r\n };\r\n\r\n /**\r\n * Sets the styles of the viewport arrange element.\r\n * @param viewportOverflowState The viewport overflow state according to which the scrollbars shall be hidden.\r\n * @param viewportScrollSize The content scroll size.\r\n * @param directionIsRTL Whether the direction is RTL or not.\r\n * @returns A boolean which indicates whether the viewport arrange element was adjusted.\r\n */\r\n const arrangeViewport = (\r\n viewportOverflowState: ViewportOverflowState,\r\n viewportScrollSize: WH,\r\n viewportSizeFraction: WH,\r\n directionIsRTL: boolean\r\n ) => {\r\n if (_doViewportArrange) {\r\n const { _scrollbarsHideOffset, _scrollbarsHideOffsetArrange } = viewportOverflowState;\r\n const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange;\r\n const { x: hideOffsetX, y: hideOffsetY } = _scrollbarsHideOffset;\r\n const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication();\r\n const viewportArrangeHorizontalPaddingKey: keyof StyleObject = directionIsRTL ? 'paddingRight' : 'paddingLeft';\r\n const viewportArrangeHorizontalPaddingValue = viewportPaddingStyle[viewportArrangeHorizontalPaddingKey] as number;\r\n const viewportArrangeVerticalPaddingValue = viewportPaddingStyle.paddingTop as number;\r\n const fractionalContentWidth = viewportScrollSize.w + (abs(viewportSizeFraction.w) < 1 ? viewportSizeFraction.w : 0);\r\n const fractionalContenHeight = viewportScrollSize.h + (abs(viewportSizeFraction.h) < 1 ? viewportSizeFraction.h : 0);\r\n const arrangeSize = {\r\n w: hideOffsetY && arrangeY ? `${hideOffsetY + fractionalContentWidth - viewportArrangeHorizontalPaddingValue}px` : '',\r\n h: hideOffsetX && arrangeX ? `${hideOffsetX + fractionalContenHeight - viewportArrangeVerticalPaddingValue}px` : '',\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(`#${attr(_viewportArrange, 'id')} + .${classNameViewportArrange}::before {}`, 0);\r\n }\r\n\r\n // @ts-ignore\r\n const ruleStyle = cssRules[0].style;\r\n\r\n ruleStyle.width = arrangeSize.w;\r\n ruleStyle.height = arrangeSize.h;\r\n }\r\n }\r\n } else {\r\n style<'--os-vaw' | '--os-vah'>(_viewport, {\r\n '--os-vaw': arrangeSize.w,\r\n '--os-vah': arrangeSize.h,\r\n });\r\n }\r\n }\r\n\r\n return _doViewportArrange;\r\n };\r\n\r\n /**\r\n * Hides the native scrollbars according to the passed parameters.\r\n * @param viewportOverflowState The viewport overflow state.\r\n * @param directionIsRTL Whether the direction is RTL or not.\r\n * @param viewportArrange Whether special styles related to the viewport arrange strategy shall be applied.\r\n * @param viewportStyleObj The viewport style object to which the needed styles shall be applied.\r\n */\r\n const hideNativeScrollbars = (\r\n viewportOverflowState: ViewportOverflowState,\r\n directionIsRTL: boolean,\r\n viewportArrange: boolean,\r\n viewportStyleObj: StyleObject\r\n ) => {\r\n const { _scrollbarsHideOffset, _scrollbarsHideOffsetArrange } = viewportOverflowState;\r\n const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange;\r\n const { x: hideOffsetX, y: hideOffsetY } = _scrollbarsHideOffset;\r\n const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication();\r\n const horizontalMarginKey: keyof StyleObject = directionIsRTL ? 'marginLeft' : 'marginRight';\r\n const viewportHorizontalPaddingKey: keyof StyleObject = directionIsRTL ? 'paddingLeft' : '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] = 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 = viewportOverflowState || getViewportOverflowState(showNativeOverlaidScrollbars);\r\n const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication();\r\n const { _flexboxGlue } = getEnvironment();\r\n const { _scrollbarsHideOffsetArrange } = finalViewportOverflowState;\r\n const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange;\r\n const finalPaddingStyle: StyleObject = {};\r\n const assignProps = (props: string) =>\r\n each(props.split(' '), (prop) => {\r\n finalPaddingStyle[prop] = viewportPaddingStyle[prop];\r\n });\r\n\r\n if (!_flexboxGlue) {\r\n finalPaddingStyle.height = '';\r\n }\r\n\r\n if (arrangeX) {\r\n assignProps('marginBottom paddingTop paddingBottom');\r\n }\r\n\r\n if (arrangeY) {\r\n assignProps('marginLeft marginRight paddingLeft paddingRight');\r\n }\r\n\r\n const prevStyle = style(_viewport, keys(finalPaddingStyle));\r\n removeClass(_viewport, classNameViewportArrange);\r\n style(_viewport, finalPaddingStyle);\r\n\r\n return {\r\n _redoViewportArrange: () => {\r\n hideNativeScrollbars(finalViewportOverflowState, directionIsRTL, _doViewportArrange, prevStyle);\r\n style(_viewport, prevStyle);\r\n addClass(_viewport, classNameViewportArrange);\r\n },\r\n _viewportOverflowState: finalViewportOverflowState,\r\n };\r\n }\r\n return {\r\n _redoViewportArrange: noop,\r\n };\r\n };\r\n\r\n return (updateHints, checkOption, force) => {\r\n const { _directionIsRTL, _heightIntrinsic, _sizeChanged, _hostMutation, _contentMutation, _paddingStyleChanged } = updateHints;\r\n const { _flexboxGlue, _nativeScrollbarStyling, _nativeScrollbarIsOverlaid } = getEnvironment();\r\n const { _value: heightIntrinsic, _changed: heightIntrinsicChanged } = _heightIntrinsic;\r\n const { _value: directionIsRTL, _changed: directionChanged } = _directionIsRTL;\r\n const { _value: showNativeOverlaidScrollbarsOption, _changed: showNativeOverlaidScrollbarsChanged } = checkOption(\r\n 'nativeScrollbarsOverlaid.show'\r\n );\r\n const showNativeOverlaidScrollbars = showNativeOverlaidScrollbarsOption && _nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.y;\r\n const adjustFlexboxGlue =\r\n !_flexboxGlue && (_sizeChanged || _contentMutation || _hostMutation || showNativeOverlaidScrollbarsChanged || heightIntrinsicChanged);\r\n let viewportSizeFractionCache: CacheValues> = getCurrentViewportSizeFraction(force);\r\n let viewportScrollSizeCache: CacheValues> = getCurrentViewportScrollSizeCache(force);\r\n let overflowAmuntCache: CacheValues> = getCurrentOverflowAmountCache(force);\r\n let preMeasureViewportOverflowState: ViewportOverflowState | undefined;\r\n\r\n if (showNativeOverlaidScrollbarsChanged && _nativeScrollbarStyling) {\r\n if (showNativeOverlaidScrollbars) {\r\n removeClass(_viewport, classNameViewportScrollbarStyling);\r\n } else {\r\n addClass(_viewport, classNameViewportScrollbarStyling);\r\n }\r\n }\r\n\r\n if (adjustFlexboxGlue) {\r\n preMeasureViewportOverflowState = getViewportOverflowState(showNativeOverlaidScrollbars);\r\n fixFlexboxGlue(preMeasureViewportOverflowState, !!heightIntrinsic);\r\n }\r\n\r\n if (_sizeChanged || _paddingStyleChanged || _contentMutation || showNativeOverlaidScrollbarsChanged || directionChanged) {\r\n const { _redoViewportArrange, _viewportOverflowState: undoViewportArrangeOverflowState } = undoViewportArrange(\r\n showNativeOverlaidScrollbars,\r\n directionIsRTL!,\r\n preMeasureViewportOverflowState\r\n );\r\n const { _value: viewportSizeFraction, _changed: viewportSizeFractionCahnged } = (viewportSizeFractionCache = updateViewportSizeFraction(force));\r\n const { _value: viewportScrollSize, _changed: viewportScrollSizeChanged } = (viewportScrollSizeCache = updateViewportScrollSizeCache(force));\r\n const viewportContentSize = clientSize(_viewport);\r\n let arrangedViewportScrollSize = viewportScrollSize!;\r\n let arrangedViewportClientSize = viewportContentSize;\r\n\r\n _redoViewportArrange();\r\n\r\n // if re measure is required (only required if content arrange strategy is used)\r\n if (\r\n (viewportScrollSizeChanged || viewportSizeFractionCahnged || showNativeOverlaidScrollbarsChanged) &&\r\n undoViewportArrangeOverflowState &&\r\n !showNativeOverlaidScrollbars &&\r\n arrangeViewport(undoViewportArrangeOverflowState, viewportScrollSize!, viewportSizeFraction!, directionIsRTL!)\r\n ) {\r\n arrangedViewportClientSize = clientSize(_viewport);\r\n arrangedViewportScrollSize = scrollSize(_viewport);\r\n }\r\n\r\n overflowAmuntCache = updateOverflowAmountCache(force, {\r\n _viewportSizeFraction: viewportSizeFraction!,\r\n _viewportScrollSize: {\r\n w: max(viewportScrollSize!.w, arrangedViewportScrollSize.w),\r\n h: max(viewportScrollSize!.h, arrangedViewportScrollSize.h),\r\n },\r\n _viewportClientSize: {\r\n w: arrangedViewportClientSize.w + max(0, viewportContentSize.w - viewportScrollSize!.w),\r\n h: arrangedViewportClientSize.h + max(0, viewportContentSize.h - viewportScrollSize!.h),\r\n },\r\n });\r\n }\r\n\r\n const { _value: viewportSizeFraction, _changed: viewportSizeFractionChanged } = viewportSizeFractionCache;\r\n const { _value: viewportScrollSize, _changed: viewportScrollSizeChanged } = viewportScrollSizeCache;\r\n const { _value: overflowAmount, _changed: overflowAmountChanged } = overflowAmuntCache;\r\n const { _value: overflow, _changed: overflowChanged } = checkOption('overflow');\r\n\r\n if (\r\n _paddingStyleChanged ||\r\n viewportSizeFractionChanged ||\r\n viewportScrollSizeChanged ||\r\n overflowAmountChanged ||\r\n overflowChanged ||\r\n showNativeOverlaidScrollbarsChanged ||\r\n directionChanged ||\r\n adjustFlexboxGlue\r\n ) {\r\n const viewportStyle: StyleObject = {\r\n marginRight: 0,\r\n marginBottom: 0,\r\n marginLeft: 0,\r\n width: '',\r\n overflowY: '',\r\n overflowX: '',\r\n };\r\n\r\n const viewportOverflowState = setViewportOverflowState(showNativeOverlaidScrollbars, overflowAmount!, overflow, viewportStyle);\r\n const viewportArranged = arrangeViewport(viewportOverflowState, viewportScrollSize!, viewportSizeFraction!, directionIsRTL!);\r\n hideNativeScrollbars(viewportOverflowState, directionIsRTL!, viewportArranged, viewportStyle);\r\n\r\n if (adjustFlexboxGlue) {\r\n fixFlexboxGlue(viewportOverflowState, !!heightIntrinsic);\r\n }\r\n\r\n // TODO: hide host overflow if scroll x or y and no padding element there\r\n // TODO: Test without content\r\n // TODO: Test without padding\r\n // TODO: overflow: visible on padding / host if overflow visible on both axis\r\n\r\n style(_viewport, viewportStyle);\r\n\r\n _setLifecycleCommunication({\r\n _viewportOverflowScroll: viewportOverflowState._overflowScroll,\r\n _viewportOverflowAmount: overflowAmount,\r\n });\r\n }\r\n };\r\n};\r\n","import { XY, WH, TRBL, CacheValues, PartialOptions, each, hasOwnProperty, isNumber, scrollLeft, scrollTop, assignDeep } from 'support';\r\nimport { OSOptions } from 'options';\r\nimport { getEnvironment } from 'environment';\r\nimport { StructureSetup } from 'setups/structureSetup';\r\nimport { lifecycleHubOservers } from 'lifecycles/lifecycleHubObservers';\r\nimport { createTrinsicLifecycle } from 'lifecycles/trinsicLifecycle';\r\nimport { createPaddingLifecycle } from 'lifecycles/paddingLifecycle';\r\nimport { createOverflowLifecycle } from 'lifecycles/overflowLifecycle';\r\nimport { StyleObject } from 'typings';\r\n\r\nexport type LifecycleCheckOption = (path: string) => LifecycleOptionInfo;\r\n\r\nexport type Lifecycle = (\r\n updateHints: LifecycleUpdateHints,\r\n checkOption: LifecycleCheckOption,\r\n force: boolean\r\n) => Partial | void;\r\n\r\nexport interface LifecycleOptionInfo {\r\n readonly _value: T;\r\n _changed: boolean;\r\n}\r\n\r\nexport interface LifecycleCommunication {\r\n _paddingInfo: {\r\n _absolute: boolean;\r\n _padding: TRBL;\r\n };\r\n _viewportPaddingStyle: StyleObject;\r\n _viewportOverflowScroll: XY;\r\n _viewportOverflowAmount: WH;\r\n}\r\n\r\nexport interface LifecycleAdaptiveUpdateHints {\r\n _sizeChanged: boolean;\r\n _hostMutation: boolean;\r\n _contentMutation: boolean;\r\n _paddingStyleChanged: boolean;\r\n}\r\n\r\nexport interface LifecycleUpdateHints extends LifecycleAdaptiveUpdateHints {\r\n _directionIsRTL: CacheValues;\r\n _heightIntrinsic: CacheValues;\r\n}\r\n\r\nexport interface LifecycleHubState {\r\n _overflowAmount: WH;\r\n}\r\n\r\nexport interface LifecycleHubInstance {\r\n _update(changedOptions?: PartialOptions | null, force?: boolean): void;\r\n _state(): LifecycleHubState;\r\n _destroy(): void;\r\n}\r\n\r\nexport interface LifecycleHub {\r\n _options: OSOptions;\r\n _structureSetup: StructureSetup;\r\n // whether the \"viewport arrange\" strategy must be used (true if no native scrollbar hiding and scrollbars are overlaid)\r\n _doViewportArrange: boolean;\r\n _getLifecycleCommunication(): LifecycleCommunication;\r\n _setLifecycleCommunication(newLifecycleCommunication?: Partial): void;\r\n}\r\n\r\nconst getPropByPath = (obj: any, path: string): T =>\r\n obj ? path.split('.').reduce((o, prop) => (o && hasOwnProperty(o, prop) ? o[prop] : undefined), obj) : undefined;\r\n\r\nconst booleanCacheValuesFallback: CacheValues = {\r\n _value: false,\r\n _previous: false,\r\n _changed: false,\r\n};\r\nconst lifecycleCommunicationFallback: LifecycleCommunication = {\r\n _paddingInfo: {\r\n _absolute: false,\r\n _padding: {\r\n t: 0,\r\n r: 0,\r\n b: 0,\r\n l: 0,\r\n },\r\n },\r\n _viewportOverflowScroll: {\r\n x: false,\r\n y: false,\r\n },\r\n _viewportOverflowAmount: {\r\n w: 0,\r\n h: 0,\r\n },\r\n _viewportPaddingStyle: {\r\n marginRight: 0,\r\n marginBottom: 0,\r\n marginLeft: 0,\r\n paddingTop: 0,\r\n paddingRight: 0,\r\n paddingBottom: 0,\r\n paddingLeft: 0,\r\n },\r\n};\r\n\r\nexport const createLifecycleHub = (options: OSOptions, structureSetup: StructureSetup): LifecycleHubInstance => {\r\n let lifecycleCommunication = lifecycleCommunicationFallback;\r\n const { _viewport } = structureSetup._targetObj;\r\n const {\r\n _nativeScrollbarStyling,\r\n _nativeScrollbarIsOverlaid,\r\n _flexboxGlue,\r\n _addListener: addEnvironmentListener,\r\n _removeListener: removeEnvironmentListener,\r\n } = getEnvironment();\r\n const doViewportArrange = !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);\r\n const instance: LifecycleHub = {\r\n _options: options,\r\n _structureSetup: structureSetup,\r\n _doViewportArrange: doViewportArrange,\r\n _getLifecycleCommunication: () => lifecycleCommunication,\r\n _setLifecycleCommunication(newLifecycleCommunication) {\r\n lifecycleCommunication = assignDeep({}, lifecycleCommunication, newLifecycleCommunication);\r\n },\r\n };\r\n const lifecycles: Lifecycle[] = [createTrinsicLifecycle(instance), createPaddingLifecycle(instance), createOverflowLifecycle(instance)];\r\n\r\n const updateLifecycles = (updateHints?: Partial | null, changedOptions?: Partial | null, force?: boolean) => {\r\n let {\r\n _directionIsRTL,\r\n _heightIntrinsic,\r\n _sizeChanged = force || false,\r\n _hostMutation = force || false,\r\n _contentMutation = force || false,\r\n _paddingStyleChanged = force || false,\r\n } = updateHints || {};\r\n\r\n const finalDirectionIsRTL =\r\n _directionIsRTL || (_sizeObserver ? _sizeObserver._getCurrentCacheValues(force)._directionIsRTL : booleanCacheValuesFallback);\r\n const finalHeightIntrinsic =\r\n _heightIntrinsic || (_trinsicObserver ? _trinsicObserver._getCurrentCacheValues(force)._heightIntrinsic : booleanCacheValuesFallback);\r\n const checkOption: LifecycleCheckOption = (path) => ({\r\n _value: getPropByPath(options, path),\r\n _changed: force || getPropByPath(changedOptions, path) !== undefined,\r\n });\r\n const adjustScrollOffset = doViewportArrange || !_flexboxGlue;\r\n const scrollOffsetX = adjustScrollOffset && scrollLeft(_viewport);\r\n const scrollOffsetY = adjustScrollOffset && scrollTop(_viewport);\r\n\r\n // place before updating lifecycles because of possible flushing of debounce\r\n if (_updateObserverOptions) {\r\n _updateObserverOptions(checkOption);\r\n }\r\n\r\n each(lifecycles, (lifecycle) => {\r\n const {\r\n _sizeChanged: adaptiveSizeChanged,\r\n _hostMutation: adaptiveHostMutation,\r\n _contentMutation: adaptiveContentMutation,\r\n _paddingStyleChanged: adaptivePaddingStyleChanged,\r\n } =\r\n lifecycle(\r\n {\r\n _directionIsRTL: finalDirectionIsRTL,\r\n _heightIntrinsic: finalHeightIntrinsic,\r\n _sizeChanged,\r\n _hostMutation,\r\n _contentMutation,\r\n _paddingStyleChanged,\r\n },\r\n checkOption,\r\n !!force\r\n ) || {};\r\n\r\n _sizeChanged = adaptiveSizeChanged || _sizeChanged;\r\n _hostMutation = adaptiveHostMutation || _hostMutation;\r\n _contentMutation = adaptiveContentMutation || _contentMutation;\r\n _paddingStyleChanged = adaptivePaddingStyleChanged || _paddingStyleChanged;\r\n });\r\n\r\n if (isNumber(scrollOffsetX)) {\r\n scrollLeft(_viewport, scrollOffsetX);\r\n }\r\n if (isNumber(scrollOffsetY)) {\r\n scrollTop(_viewport, scrollOffsetY);\r\n }\r\n\r\n if (options.callbacks.onUpdated) {\r\n options.callbacks.onUpdated();\r\n }\r\n };\r\n const { _sizeObserver, _trinsicObserver, _updateObserverOptions, _destroy: destroyObservers } = lifecycleHubOservers(instance, updateLifecycles);\r\n\r\n const update = (changedOptions?: Partial | null, force?: boolean) => updateLifecycles(null, changedOptions, force);\r\n const envUpdateListener = update.bind(null, null, true);\r\n addEnvironmentListener(envUpdateListener);\r\n\r\n console.log(getEnvironment());\r\n\r\n return {\r\n _update: update,\r\n _state: () => ({\r\n _overflowAmount: lifecycleCommunication._viewportOverflowAmount,\r\n }),\r\n _destroy() {\r\n destroyObservers();\r\n removeEnvironmentListener(envUpdateListener);\r\n },\r\n };\r\n};\r\n","import { OSTarget, OSTargetObject } from 'typings';\r\nimport { PartialOptions, validateOptions, assignDeep, isEmptyObject } from 'support';\r\nimport { createStructureSetup, StructureSetup } from 'setups/structureSetup';\r\nimport { createLifecycleHub } from 'lifecycles/lifecycleHub';\r\nimport { OSOptions, optionsTemplate } from 'options';\r\nimport { getEnvironment } from 'environment';\r\n\r\nexport interface OverlayScrollbarsStatic {\r\n (target: OSTarget | OSTargetObject, options?: PartialOptions, extensions?: any): OverlayScrollbars;\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\r\n state(): any;\r\n}\r\n\r\nexport const OverlayScrollbars: OverlayScrollbarsStatic = (\r\n target: OSTarget | OSTargetObject,\r\n options?: PartialOptions,\r\n extensions?: any\r\n): OverlayScrollbars => {\r\n const { _getDefaultOptions } = getEnvironment();\r\n const currentOptions: OSOptions = assignDeep(\r\n {},\r\n _getDefaultOptions(),\r\n validateOptions(options || ({} as PartialOptions), optionsTemplate, null, true)._validated\r\n );\r\n const structureSetup: StructureSetup = createStructureSetup(target);\r\n const lifecycleHub = createLifecycleHub(currentOptions, structureSetup);\r\n const instance: OverlayScrollbars = {\r\n options(newOptions?: PartialOptions) {\r\n if (newOptions) {\r\n const { _validated: _changedOptions } = validateOptions(newOptions, optionsTemplate, currentOptions, true);\r\n\r\n if (!isEmptyObject(_changedOptions)) {\r\n assignDeep(currentOptions, _changedOptions);\r\n lifecycleHub._update(_changedOptions);\r\n }\r\n }\r\n return currentOptions;\r\n },\r\n state: () => lifecycleHub._state(),\r\n update(force?: boolean) {\r\n lifecycleHub._update(null, force);\r\n },\r\n };\r\n\r\n instance.update(true);\r\n\r\n return instance;\r\n};\r\n"],"names":["createCache","update","options","_equal","_initialValue","_alwaysUpdateValues","_value","_previous","cacheUpdate","force","context","curr","newVal","changed","_changed","_update","_current","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","elm","isEmptyArray","runEach","p1","runFn","fn","Set","forEach","prop","assignDeep","target","object1","object2","object3","object4","object5","object6","sources","copy","copyIsArray","src","clone","isEmptyObject","name","getSetProp","topLeft","fallback","value","attr","attrName","getAttribute","setAttribute","removeAttr","removeAttribute","scrollLeft","scrollTop","elmPrototype","find","selector","rootElm","document","querySelectorAll","is","matches","msMatchesSelector","contents","childNodes","parent","parentElement","before","parentElm","preferredAnchor","insertedElms","anchor","fragment","createDocumentFragment","insertedElm","previousSibling","appendChild","firstChild","nextSibling","insertBefore","appendChildren","node","children","prependChildren","insertedNodes","insertAfter","removeElements","nodes","e","removeChild","createDiv","classNames","div","createElement","createDOM","html","createdDiv","innerHTML","trim","firstLetterToUpper","str","charAt","toUpperCase","slice","getDummyStyle","style","cssPrefixes","jsPrefixes","jsCache","cssCache","cssProperty","uppercasedName","elmStyle","prefix","prefixWithoutDashes","resultPossibilities","resultPossibility","jsAPI","MutationObserverConstructor","IntersectionObserverConstructor","ResizeObserverConstructor","cAF","rAF","rnothtmlwhite","classListAction","className","action","clazz","classes","match","classList","addClass","add","removeClass","remove","diffClass","classNameA","classNameB","classNameASplit","split","classNameBSplit","tempObj","zeroObj","w","h","windowSize","innerWidth","innerHeight","offsetSize","offsetWidth","offsetHeight","clientSize","clientWidth","clientHeight","scrollSize","scrollWidth","scrollHeight","getBoundingClientRect","passiveEventsSupport","supportPassiveEvents","addEventListener","defineProperty","get","splitEventNames","eventNames","off","listener","capture","eventName","removeEventListener","on","doSupportPassiveEvents","passive","_passive","_capture","once","_once","offListeners","nativeOptions","finalListener","evt","bind","stopPropagation","preventDefault","stopAndPrevent","equal","a","b","props","propMutation","compareA","compareB","equalWH","equalTRBL","equalBCRWH","round","Math","setT","setTimeout","clearTimeouts","id","clearTimeout","noop","debounce","functionToDebounce","timeoutId","maxTimeoutId","prevArguments","latestArguments","_timeout","_maxDelay","_mergeParams","invokeFunctionToDebounce","args","mergeParms","flush","debouncedFn","arguments","finalTimeout","hasTimeout","finalMaxWait","hasMaxWait","setTimeoutFn","mergeParamsResult","invokedArgs","boundInvoke","_flush","cssNumber","opacity","zindex","parseToZeroOrNumber","toFloat","num","parseFloat","parseInt","Number","isNaN","adaptCSSVal","val","getCSSVal","computedStyle","getPropertyValue","setCSSVal","setProperty","styles","getSingleStyle","getStyles","getStylesResult","getComputedStyle","reduce","topRightBottomLeft","propertyPrefix","propertySuffix","finalPrefix","finalSuffix","top","right","bottom","left","t","r","l","x","y","absoluteCoordinates","rect","pageYOffset","pageXOffset","_extends","module","assign","stringify","JSON","templateTypePrefixSuffix","optionsTemplateTypes","validateRecursive","template","optionsDiff","doWriteErrors","propPath","validatedOptions","optionsCopy","filter","optionsDiffValue","optionsValue","templateValue","templateIsComplex","propPrefix","validatedResult","_validated","_foreign","isValid","errorEnumStrings","errorPossibleTypes","optionsValueType","templateValueArr","currTemplateType","typeString","isEnumString","enumStringSplit","possibility","string","doStringifyComparison","console","warn","join","validateOptions","transformOptions","optionsWithOptionsTemplate","_template","_options","tmpResult","classNameEnvironment","classNameEnvironmentFlexboxGlue","classNameEnvironmentFlexboxGlueMax","classNameHost","classNamePadding","classNameViewport","classNameViewportArrange","classNameContent","classNameViewportScrollbarStyling","classNameSizeObserver","classNameSizeObserverAppear","classNameSizeObserverListener","classNameSizeObserverListenerScroll","classNameSizeObserverListenerItem","classNameSizeObserverListenerItemFinal","classNameTrinsicObserver","numberAllowedValues","oTypes","number","arrayNullValues","null","stringArrayNullAllowedValues","booleanTrueTemplate","boolean","booleanFalseTemplate","resizeAllowedValues","overflowAllowedValues","scrollbarsVisibilityAllowedValues","scrollbarsAutoHideAllowedValues","defaultOptionsWithTemplate","resize","paddingAbsolute","updating","elementEvents","attributes","overflow","scrollbars","visibility","autoHide","autoHideDelay","dragScroll","clickScroll","touch","textarea","dynWidth","dynHeight","inheritedAttrs","nativeScrollbarsOverlaid","show","initialize","callbacks","onUpdated","function","optionsTemplate","defaultOptions","environmentInstance","abs","diffBiggerThanOne","valOne","valTwo","absValOne","absValTwo","getNativeScrollbarSize","body","measureElm","cSize","oSize","getNativeScrollbarStyling","testElm","ex","getRtlScrollBehavior","childElm","strHidden","overflowX","overflowY","direction","parentOffset","childOffset","childOffsetAfterScroll","n","getFlexboxGlue","minOffsetsizeParent","minOffsetsize","supportsMin","maxOffsetsizeParent","maxOffsetsize","supportsMax","getWindowDPR","dDPI","screen","deviceXDPI","sDPI","logicalXDPI","devicePixelRatio","getDefaultInitializationStrategy","nativeScrollbarStyling","_padding","_content","createEnvironment","envDOM","envElm","envChildElm","onChangedListener","nativeScrollbarSize","nativeScrollbarIsOverlaid","defaultInitializationStrategy","initializationStrategy","defaultDefaultOptions","env","_nativeScrollbarSize","_nativeScrollbarIsOverlaid","_nativeScrollbarStyling","_cssCustomProperties","_rtlScrollBehavior","_flexboxGlue","_addListener","_removeListener","delete","_getInitializationStrategy","_setInitializationStrategy","newInitializationStrategy","_getDefaultOptions","_setDefaultOptions","newDefaultOptions","_defaultInitializationStrategy","_defaultDefaultOptions","size","dpr","scrollbarSize","sizeNew","deltaSize","deltaAbsSize","deltaAbsRatio","dprNew","deltaIsBigger","difference","dprChanged","isZoom","newScrollbarSize","getEnvironment","unwrap","contentArrangeCounter","createUniqueViewportArrangeElement","evaluateCreationFromStrategy","initializationValue","strategy","isBooleanValue","createStructureSetup","paddingNeeded","contentNeeded","targetIsElm","osTargetObj","_host","host","_target","_viewport","viewport","padding","content","destroyFns","isTextarea","isBody","getTargetContents","contentSlot","isTextareaHostGenerated","contentContainingElm","createPadding","createViewport","createContent","targetContents","ownerDocument","bodyElm","wnd","defaultView","ctx","_windowElm","_documentElm","_htmlElm","_bodyElm","_isTextarea","_isBody","viewportArrangeElm","_viewportArrange","_targetObj","_targetCtx","_destroy","animationStartEventName","scrollEventName","scrollAmount","directionIsRTL","domRectHasDimensions","height","width","createSizeObserver","onSizeChangedCallback","_direction","observeDirectionChange","_appear","observeAppearChange","rtlScrollBehavior","baseElements","sizeObserver","listenerElement","updateResizeObserverContentRectCache","currVal","onSizeChangedCallbackProxy","sizeChangedContext","hasDirectionCache","skip","appear","doDirectionScroll","pop","contentRect","hasDimensions","hadDimensions","rtl","_sizeChanged","_directionIsRTLCache","appearCallback","directionIsRTLCache","resizeObserverInstance","observe","disconnect","observerElementChildren","observerElementChildrenRoot","shrinkElement","lastChild","expandElement","expandElementChild","cacheSize","currSize","isDirty","rAFId","reset","onResized","onScroll","scrollEvent","updateDirectionIsRTLCache","event","directionIsRTLCacheValues","_getCurrentCacheValues","_directionIsRTL","createTrinsicObserver","onTrinsicChangedCallback","trinsicObserver","updateHeightIntrinsicCache","getCurrentHeightIntrinsicCache","ioEntryOrSize","isIntersecting","intersectionRatio","intersectionObserverInstance","entries","last","heightIntrinsic","root","onSizeChanged","newSize","heightIntrinsicCache","_heightIntrinsic","createEventContentChange","eventContentChange","map","clear","_updateElements","getElements","eventElmList","elements","registredEventNames","newEntry","changingExistingEntry","finalEventNames","set","Map","createDOMObserver","isContentObserver","isConnected","_attributes","_styleChangingAttributes","_eventContentChange","_nestedTargetSelector","_ignoreTargetChange","_ignoreNestedTargetChange","_ignoreContentChange","destroyEventContentChange","updateEventContentChangeElements","finalAttributes","finalStyleChangingAttributes","observedAttributes","concat","observerCallback","mutations","ignoreTargetChange","ignoreContentChange","targetChangedAttrs","totalAddedNodes","targetStyleChanged","contentChanged","childListChanged","mutation","attributeName","mutationTarget","oldValue","addedNodes","isAttributesType","isChildListType","targetIsMutationTarget","attributeValue","attributeChanged","styleChangingAttrChanged","notOnlyAttrChanged","contentAttrChanged","isNestedTarget","baseAssertion","contentFinalChanged","mutationObserver","attributeOldValue","attributeFilter","subtree","childList","characterData","takeRecords","ignorePrefix","viewportAttrsFromTarget","baseStyleChangingAttrsTextarea","baseStyleChangingAttrs","newValue","diff","addedOrRemovedClass","lifecycleHubOservers","instance","updateLifecycles","debounceTimeout","debounceMaxDelay","contentMutationObserver","_structureSetup","contentMutationObserverAttr","updateLifecyclesWithDebouncedAdaptiveUpdateHints","prev","prevSizeChanged","_hostMutation","prevHostMutation","_contentMutation","prevContentMutation","currSizeChanged","currvHostMutation","currContentMutation","merged","updateViewportAttrsFromHost","attribute","hostAttr","onTrinsicChanged","updateFn","onContentMutation","contentChangedTroughEvent","onHostMutation","hostMutationObserver","updateOptions","checkOption","elementEventsChanged","attributesChanged","debounceChanged","updateContentMutationObserver","timeout","maxWait","_trinsicObserver","_sizeObserver","_updateObserverOptions","createTrinsicLifecycle","lifecycleHub","updateHints","heightIntrinsicChanged","display","createPaddingLifecycle","_setLifecycleCommunication","updatePaddingCache","currentPaddingCache","paddingChanged","directionChanged","paddingAbsoluteChanged","contentMutation","paddingStyleChanged","paddingRelative","paddingHorizontal","paddingVertical","paddingStyle","marginRight","marginBottom","marginLeft","viewportStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","_paddingInfo","_absolute","_viewportPaddingStyle","_paddingStyleChanged","max","overlaidScrollbarsHideOffset","whCacheOptions","sizeFraction","viewportOffsetSize","viewportRect","fractionalPixelRatioTollerance","setAxisOverflowStyle","horizontal","overflowAmount","behavior","styleObj","overflowKey","behaviorIsVisible","behaviorIsVisibleHidden","behaviorIsScroll","hasOverflow","_visible","_behavior","createOverflowLifecycle","_doViewportArrange","_getLifecycleCommunication","updateViewportSizeFraction","getCurrentViewportSizeFraction","updateViewportScrollSizeCache","getCurrentViewportScrollSizeCache","updateOverflowAmountCache","getCurrentOverflowAmountCache","_viewportScrollSize","_viewportClientSize","_viewportSizeFraction","fixFlexboxGlue","viewportOverflowState","_overflowScroll","_scrollbarsHideOffset","hostSizeFraction","hostClientSize","fractionalClientHeight","getViewportOverflowState","showNativeOverlaidScrollbars","viewportStyleObj","overlaidX","overlaidY","determineOverflow","arrangeHideOffset","scroll","scrollbarsHideOffset","_scrollbarsHideOffsetArrange","setViewportOverflowState","xVisible","xVisibleBehavior","yVisible","yVisibleBehavior","arrangeViewport","viewportScrollSize","viewportSizeFraction","arrangeX","arrangeY","hideOffsetX","hideOffsetY","viewportPaddingStyle","viewportArrangeHorizontalPaddingKey","viewportArrangeHorizontalPaddingValue","viewportArrangeVerticalPaddingValue","fractionalContentWidth","fractionalContenHeight","arrangeSize","sheet","cssRules","insertRule","ruleStyle","hideNativeScrollbars","viewportArrange","horizontalMarginKey","viewportHorizontalPaddingKey","horizontalMarginValue","verticalMarginValue","horizontalPaddingValue","verticalPaddingValue","undoViewportArrange","finalViewportOverflowState","finalPaddingStyle","assignProps","prevStyle","_redoViewportArrange","_viewportOverflowState","showNativeOverlaidScrollbarsOption","showNativeOverlaidScrollbarsChanged","adjustFlexboxGlue","viewportSizeFractionCache","viewportScrollSizeCache","overflowAmuntCache","preMeasureViewportOverflowState","undoViewportArrangeOverflowState","viewportSizeFractionCahnged","viewportScrollSizeChanged","viewportContentSize","arrangedViewportScrollSize","arrangedViewportClientSize","viewportSizeFractionChanged","overflowAmountChanged","overflowChanged","viewportArranged","_viewportOverflowScroll","_viewportOverflowAmount","getPropByPath","path","o","booleanCacheValuesFallback","lifecycleCommunicationFallback","createLifecycleHub","structureSetup","lifecycleCommunication","addEnvironmentListener","removeEnvironmentListener","doViewportArrange","newLifecycleCommunication","lifecycles","changedOptions","finalDirectionIsRTL","finalHeightIntrinsic","adjustScrollOffset","scrollOffsetX","scrollOffsetY","lifecycle","adaptiveSizeChanged","adaptiveHostMutation","adaptiveContentMutation","adaptivePaddingStyleChanged","destroyObservers","envUpdateListener","log","_state","_overflowAmount","OverlayScrollbars","extensions","currentOptions","newOptions","_changedOptions","state"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"overlayscrollbars.esm.js","sources":["../src/support/cache/cache.ts","../src/support/utils/types.ts","../src/support/utils/array.ts","../src/support/utils/object.ts","../src/support/dom/attribute.ts","../src/support/dom/traversal.ts","../src/support/dom/manipulation.ts","../src/support/dom/create.ts","../src/support/compatibility/vendors.ts","../src/support/compatibility/apis.ts","../src/support/dom/class.ts","../src/support/dom/dimensions.ts","../src/support/dom/events.ts","../src/support/utils/equal.ts","../src/support/utils/function.ts","../src/support/dom/style.ts","../src/support/dom/offset.ts","../../../node_modules/@babel/runtime/helpers/extends.js","../src/support/options/validation.ts","../src/support/options/transformation.ts","../src/classnames.ts","../src/options.ts","../src/environment.ts","../src/setups/structureSetup.ts","../src/setups/scrollbarsSetup.ts","../src/observers/sizeObserver.ts","../src/observers/trinsicObserver.ts","../src/observers/domObserver.ts","../src/lifecycles/lifecycleHubObservers.ts","../src/lifecycles/trinsicLifecycle.ts","../src/lifecycles/paddingLifecycle.ts","../src/lifecycles/overflowLifecycle.ts","../src/lifecycles/lifecycleHub.ts","../src/overlayscrollbars.ts"],"sourcesContent":["export type CacheValues = [\r\n T, // value\r\n boolean, // changed\r\n T | undefined // previous\r\n];\r\n\r\nexport type Cache = [\r\n CacheUpdate,\r\n (force?: boolean) => CacheValues // getCurrent\r\n];\r\n\r\nexport interface CacheOptions {\r\n // initial value of _value.\r\n _initialValue: T;\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 CacheUpdate = undefined extends C\r\n ? (force?: boolean | 0, context?: C) => CacheValues\r\n : (force: boolean | 0, context: C) => CacheValues;\r\n\r\nexport type UpdateCachePropFunction = undefined extends Ctx\r\n ? (context?: Ctx, current?: Value, previous?: Value) => Value\r\n : Ctx extends Value\r\n ? ((context: Ctx, current?: Value, previous?: Value) => Value) | 0\r\n : (context: Ctx, current?: Value, previous?: Value) => Value;\r\n\r\nexport type EqualCachePropFunction = (currentVal?: T, newVal?: T) => boolean;\r\n\r\nexport const createCache = (\r\n update: UpdateCachePropFunction,\r\n options: CacheOptions\r\n): 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 cacheUpdate = ((force?: boolean | 0, context?: Ctx) => {\r\n const curr = _value;\r\n // @ts-ignore\r\n // update can only not be a function if C extends T as described in \"UpdateCachePropFunction\" type definition\r\n // if C extends T the cast (context as T) is perfectly valid\r\n const newVal = update ? update(context, _value, _previous) : (context as T);\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 }) as CacheUpdate;\r\n\r\n return [\r\n cacheUpdate,\r\n (force?: boolean) => [\r\n _value,\r\n !!force, // changed\r\n _previous,\r\n ],\r\n ];\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 return 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\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) ? (length > 0 && isObject(obj) ? length - 1 in obj : true) : 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 ? (instanceofObj ? obj instanceof instanceofObj : obj.nodeType === ElementNodeType) : 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 ? (instanceofObj ? obj instanceof instanceofObj : obj.nodeType === ElementNodeType) : 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(obj: PlainObject, callback: (value: any, indexOrKey: string, source: PlainObject) => boolean | unknown): 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: Array, item: T, fromIndex?: number): number => 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: Array, items: T | ArrayLike, arrayIsSingleItem?: boolean): Array => {\r\n !arrayIsSingleItem && !isString(items) && isArrayLike(items) ? Array.prototype.push.apply(array, items as Array) : 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) => {\r\n if (Array.from) {\r\n return Array.from(arr);\r\n }\r\n const result: Array = [];\r\n\r\n each(arr, (elm) => {\r\n push(result, elm);\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: Array | null | undefined) => array && array.length === 0;\r\n\r\n/**\r\n * Calls all functions in the passed array/set of functions.\r\n * @param arr The array filled with function which shall be called.\r\n * @param p1 The first param.\r\n */\r\nexport const runEach = (arr: ArrayLike | Set, p1?: unknown): void => {\r\n const runFn = (fn: RunEachItem) => fn && fn(p1);\r\n if (arr instanceof Set) {\r\n arr.forEach(runFn);\r\n } else {\r\n each(arr, runFn);\r\n }\r\n};\r\n","import { isArray, isFunction, isPlainObject, isNull } from 'support/utils/types';\r\nimport { each } from 'support/utils/array';\r\n\r\n/**\r\n * Determines whether the passed object has a property with the passed name.\r\n * @param obj The object.\r\n * @param prop The name of the property.\r\n */\r\nexport const hasOwnProperty = (obj: any, prop: string | number | symbol): boolean => 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(target: T, object1: U, object2: V, object3: W): T & U & V & W;\r\nexport function assignDeep(target: T, object1: U, object2: V, object3: W, object4: X): T & U & V & W & X;\r\nexport function assignDeep(target: T, object1: U, object2: V, object3: W, object4: X, object5: Y): T & U & V & W & X & Y;\r\nexport function assignDeep(\r\n target: T,\r\n object1?: U,\r\n object2?: V,\r\n object3?: W,\r\n object4?: X,\r\n object5?: Y,\r\n object6?: Z\r\n): T & U & V & W & X & Y & Z {\r\n const sources: Array = [object1, object2, object3, object4, object5, object6];\r\n\r\n // Handle case when target is a string or something (possible in deep copy)\r\n if ((typeof target !== 'object' || isNull(target)) && !isFunction(target)) {\r\n target = {} as T;\r\n }\r\n\r\n each(sources, (source) => {\r\n // Extend the base object\r\n each(keys(source), (key) => {\r\n const copy: any = source[key];\r\n\r\n // Prevent Object.prototype pollution\r\n // Prevent never-ending loop\r\n if (target === copy) {\r\n return true;\r\n }\r\n\r\n const copyIsArray = isArray(copy);\r\n\r\n // Recurse if we're merging plain objects or arrays\r\n if (copy && (isPlainObject(copy) || copyIsArray)) {\r\n const src = target[key];\r\n let clone: any = src;\r\n\r\n // Ensure proper type for the source value\r\n if (copyIsArray && !isArray(src)) {\r\n clone = [];\r\n } else if (!copyIsArray && !isPlainObject(src)) {\r\n clone = {};\r\n }\r\n\r\n // Never move original objects, clone them\r\n target[key] = assignDeep(clone, copy) as any;\r\n } else {\r\n target[key] = copy;\r\n }\r\n });\r\n });\r\n\r\n // Return the modified object\r\n return target as any;\r\n}\r\n\r\n/**\r\n * Returns true if the given object is empty, false otherwise.\r\n * @param obj The Object.\r\n */\r\nexport function isEmptyObject(obj: any): boolean {\r\n /* eslint-disable no-restricted-syntax, guard-for-in */\r\n for (const name in obj) return false;\r\n return true;\r\n /* eslint-enable */\r\n}\r\n","import { isUndefined } from 'support/utils/types';\r\n\r\ntype GetSetPropName = 'scrollLeft' | 'scrollTop' | 'value';\r\n\r\nfunction getSetProp(\r\n topLeft: GetSetPropName,\r\n fallback: number | string,\r\n elm: HTMLElement | HTMLInputElement | null,\r\n value?: number | string\r\n): number | string | void {\r\n if (isUndefined(value)) {\r\n return elm ? elm[topLeft] : fallback;\r\n }\r\n elm && (elm[topLeft] = value);\r\n}\r\n\r\n/**\r\n * Gets or sets a attribute with the given attribute of the given element depending whether the value attribute is given.\r\n * Returns null if the element has no attribute with the given name.\r\n * @param elm The element of which the attribute shall be get or set.\r\n * @param attrName The attribute name which shall be get or set.\r\n * @param value The value of the attribute which shall be set.\r\n */\r\nexport function attr(elm: HTMLElement | null, attrName: string): string | null;\r\nexport function attr(elm: HTMLElement | null, attrName: string, value: string): void;\r\nexport function attr(elm: HTMLElement | null, attrName: string, value?: string): string | null | void {\r\n if (isUndefined(value)) {\r\n return elm ? elm.getAttribute(attrName) : null;\r\n }\r\n elm && elm.setAttribute(attrName, value);\r\n}\r\n\r\n/**\r\n * Removes the given attribute from the given element.\r\n * @param elm The element of which the attribute shall be removed.\r\n * @param attrName The attribute name.\r\n */\r\nexport const removeAttr = (elm: Element | null, attrName: string): void => {\r\n elm && elm.removeAttribute(attrName);\r\n};\r\n\r\n/**\r\n * Gets or sets the scrollLeft value of the given element depending whether the value attribute is given.\r\n * @param elm The element of which the scrollLeft value shall be get or set.\r\n * @param value The scrollLeft value which shall be set.\r\n */\r\nexport function scrollLeft(elm: HTMLElement | null): number;\r\nexport function scrollLeft(elm: HTMLElement | null, value: number): void;\r\nexport function scrollLeft(elm: HTMLElement | null, value?: number): number | void {\r\n return getSetProp('scrollLeft', 0, elm, value) as number;\r\n}\r\n\r\n/**\r\n * Gets or sets the scrollTop value of the given element depending whether the value attribute is given.\r\n * @param elm The element of which the scrollTop value shall be get or set.\r\n * @param value The scrollTop value which shall be set.\r\n */\r\nexport function scrollTop(elm: HTMLElement | null): number;\r\nexport function scrollTop(elm: HTMLElement | null, value: number): void;\r\nexport function scrollTop(elm: HTMLElement | null, value?: number): number | void {\r\n return getSetProp('scrollTop', 0, elm, value) as number;\r\n}\r\n\r\n/**\r\n * Gets or sets the value of the given input element depending whether the value attribute is given.\r\n * @param elm The input element of which the value shall be get or set.\r\n * @param value The value which shall be set.\r\n */\r\nexport function val(elm: HTMLInputElement | null): string;\r\nexport function val(elm: HTMLInputElement | null, value: string): void;\r\nexport function val(elm: HTMLInputElement | null, value?: string): string | void {\r\n return getSetProp('value', '', elm, value) as string;\r\n}\r\n","import { isElement } from 'support/utils/types';\r\nimport { push, from } from 'support/utils/array';\r\n\r\ntype InputElementType = Element | Node | false | null | undefined;\r\ntype OutputElementType = Element | null;\r\n\r\nconst elmPrototype = Element.prototype;\r\n\r\n/**\r\n * Find all elements with the passed selector, outgoing (and including) the passed element or the document if no element was provided.\r\n * @param selector The selector which has to be searched by.\r\n * @param elm The element from which the search shall be outgoing.\r\n */\r\nconst find = (selector: string, elm?: InputElementType): Element[] => {\r\n const arr: Array = [];\r\n const rootElm = elm ? (isElement(elm) ? elm : null) : document;\r\n\r\n return rootElm ? push(arr, rootElm.querySelectorAll(selector)) : arr;\r\n};\r\n\r\n/**\r\n * Find the first element with the passed selector, outgoing (and including) the passed element or the document if no element was provided.\r\n * @param selector The selector which has to be searched by.\r\n * @param elm The element from which the search shall be outgoing.\r\n */\r\nconst findFirst = (selector: string, elm?: InputElementType): OutputElementType => {\r\n const rootElm = elm ? (isElement(elm) ? elm : null) : document;\r\n\r\n return rootElm ? rootElm.querySelector(selector) : null;\r\n};\r\n\r\n/**\r\n * Determines whether the passed element is matching with the passed selector.\r\n * @param elm The element which has to be compared with the passed selector.\r\n * @param selector The selector which has to be compared with the passed element. Additional selectors: ':visible' and ':hidden'.\r\n */\r\nconst is = (elm: InputElementType, selector: string): boolean => {\r\n if (isElement(elm)) {\r\n /* istanbul ignore next */\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n const fn: (...args: any) => boolean = elmPrototype.matches || elmPrototype.msMatchesSelector;\r\n return fn.call(elm, selector);\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Returns the children (no text-nodes or comments) of the passed element which are matching the passed selector. An empty array is returned if the passed element is null.\r\n * @param elm The element of which the children shall be returned.\r\n * @param selector The selector which must match with the children elements.\r\n */\r\nconst children = (elm: InputElementType, selector?: string): ReadonlyArray => {\r\n const childs: Array = [];\r\n\r\n return isElement(elm)\r\n ? push(\r\n childs,\r\n from(elm.children).filter((child) => (selector ? is(child, selector) : child))\r\n )\r\n : childs;\r\n};\r\n\r\n/**\r\n * Returns the childNodes (incl. text-nodes or comments etc.) of the passed element. An empty array is returned if the passed element is null.\r\n * @param elm The element of which the childNodes shall be returned.\r\n */\r\nconst contents = (elm: InputElementType): ReadonlyArray => (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 = (elm: InputElementType, highBoundarySelector: string, deepBoundarySelector: string): 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 = (parentElm: Node | false | null | undefined, preferredAnchor: Node | null | undefined, insertedElms: NodeCollection): 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 = (node: Node | null | undefined, insertedNodes: NodeCollection): 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 = ['WebKit', 'Moz', 'O', 'MS', 'webkit', 'moz', 'o', 'ms'];\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 return !(result = resultPossibilities.find((resultPossibility: string) => elmStyle[resultPossibility] !== undefined));\r\n });\r\n\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 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('IntersectionObserver');\r\nexport const ResizeObserverConstructor = jsAPI('ResizeObserver');\r\nexport const cAF = jsAPI('cancelAnimationFrame');\r\nexport const rAF = jsAPI('requestAnimationFrame');\r\n","import { isString } from 'support/utils/types';\r\nimport { each } from 'support/utils/array';\r\nimport { keys } from 'support/utils/object';\r\n\r\nconst rnothtmlwhite = /[^\\x20\\t\\r\\n\\f]+/g;\r\nconst classListAction = (\r\n elm: Element | false | null | undefined,\r\n className: string,\r\n action: (elmClassList: DOMTokenList, clazz: string) => boolean | void\r\n): boolean => {\r\n let clazz: string;\r\n let i = 0;\r\n let result = false;\r\n\r\n if (elm && isString(className)) {\r\n const classes: Array = className.match(rnothtmlwhite) || [];\r\n result = classes.length > 0;\r\n while ((clazz = classes[i++])) {\r\n result = !!action(elm.classList, clazz) && result;\r\n }\r\n }\r\n return result;\r\n};\r\n\r\n/**\r\n * Check whether the given element has the given class name(s).\r\n * @param elm The element.\r\n * @param className The class name(s).\r\n */\r\nexport const hasClass = (elm: Element | false | null | undefined, className: string): boolean =>\r\n classListAction(elm, className, (classList, clazz) => classList.contains(clazz));\r\n\r\n/**\r\n * Adds the given class name(s) to the given element.\r\n * @param elm The element.\r\n * @param className The class name(s) which shall be added. (separated by spaces)\r\n */\r\nexport const addClass = (elm: Element | false | null | undefined, className: string): void => {\r\n classListAction(elm, className, (classList, clazz) => classList.add(clazz));\r\n};\r\n\r\n/**\r\n * Removes the given class name(s) from the given element.\r\n * @param elm The element.\r\n * @param className The class name(s) which shall be removed. (separated by spaces)\r\n */\r\nexport const removeClass = (elm: Element | false | null | undefined, className: string): void => {\r\n classListAction(elm, className, (classList, clazz) => classList.remove(clazz));\r\n};\r\n\r\n/**\r\n * Takes two className strings, compares them and returns the difference as array.\r\n * @param classNameA ClassName A.\r\n * @param classNameB ClassName B.\r\n */\r\nexport const diffClass = (classNameA: string | null | undefined, classNameB: string | null | undefined) => {\r\n const classNameASplit = classNameA && classNameA.split(' ');\r\n const classNameBSplit = classNameB && classNameB.split(' ');\r\n const tempObj = {};\r\n\r\n each(classNameASplit, (className) => {\r\n tempObj[className] = 1;\r\n });\r\n each(classNameBSplit, (className) => {\r\n if (tempObj[className]) {\r\n delete tempObj[className];\r\n } else {\r\n tempObj[className] = 1;\r\n }\r\n });\r\n\r\n return keys(tempObj);\r\n};\r\n","export interface WH {\r\n w: T;\r\n h: T;\r\n}\r\n\r\nconst elementHasDimensions = (elm: HTMLElement): boolean => !!(elm.offsetWidth || elm.offsetHeight || elm.getClientRects().length);\r\nconst zeroObj: WH = {\r\n w: 0,\r\n h: 0,\r\n};\r\n\r\n/**\r\n * Returns the window inner- width and height.\r\n */\r\nexport const windowSize = (): WH => ({\r\n w: window.innerWidth,\r\n h: window.innerHeight,\r\n});\r\n\r\n/**\r\n * Returns the scroll- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the scroll- width and height shall be returned.\r\n */\r\nexport const offsetSize = (elm: HTMLElement | null | undefined): WH =>\r\n elm\r\n ? {\r\n w: elm.offsetWidth,\r\n h: elm.offsetHeight,\r\n }\r\n : zeroObj;\r\n\r\n/**\r\n * Returns the client- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the client- width and height shall be returned.\r\n */\r\nexport const clientSize = (elm: HTMLElement | null | undefined): WH =>\r\n elm\r\n ? {\r\n w: elm.clientWidth,\r\n h: elm.clientHeight,\r\n }\r\n : zeroObj;\r\n\r\n/**\r\n * Returns the client- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the client- width and height shall be returned.\r\n */\r\nexport const scrollSize = (elm: HTMLElement | null | undefined): WH =>\r\n elm\r\n ? {\r\n w: elm.scrollWidth,\r\n h: elm.scrollHeight,\r\n }\r\n : zeroObj;\r\n\r\n/**\r\n * Returns the BoundingClientRect of the passed element.\r\n * @param elm The element of which the BoundingClientRect shall be returned.\r\n */\r\nexport const getBoundingClientRect = (elm: HTMLElement): DOMRect => elm.getBoundingClientRect();\r\n\r\n/**\r\n * Determines whether the passed element has any dimensions.\r\n * @param elm The element.\r\n */\r\nexport const hasDimensions = (elm: HTMLElement | null | undefined): boolean => (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 = (target: EventTarget, eventNames: string, listener: (event: T) => any, capture?: boolean): 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 => (stopPropagation(evt) as undefined) || (preventDefault(evt) as undefined);\r\n","import { each } from 'support/utils/array';\r\nimport { WH, XY, TRBL } from 'support/dom';\r\nimport { PlainObject } from 'typings';\r\n\r\n/**\r\n * Compares two objects and returns true if all values of the passed prop names are identical, false otherwise or if one of the two object is falsy.\r\n * @param a Object a.\r\n * @param b Object b.\r\n * @param props The props which shall be compared.\r\n */\r\nexport const equal = (\r\n a: T | undefined,\r\n b: T | undefined,\r\n props: Array,\r\n propMutation?: ((value: any) => any) | null | false\r\n): boolean => {\r\n if (a && b) {\r\n let result = true;\r\n each(props, (prop) => {\r\n const compareA = propMutation ? propMutation(a[prop]) : a[prop];\r\n const compareB = propMutation ? propMutation(b[prop]) : b[prop];\r\n if (compareA !== compareB) {\r\n result = false;\r\n }\r\n });\r\n return result;\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalWH = (a?: WH, b?: WH) => equal(a, b, ['w', 'h']);\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalXY = (a?: XY, b?: XY) => equal(a, b, ['x', 'y']);\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalTRBL = (a?: TRBL, b?: TRBL) => equal(a, b, ['t', 'r', 'b', 'l']);\r\n\r\n/**\r\n * Compares two DOM Rects for their equality of their width and height properties\r\n * Also returns false if one of the DOM Rects is undefined or null.\r\n * @param a DOM Rect a.\r\n * @param b DOM Rect b.\r\n * @param round Whether the values should be rounded.\r\n */\r\nexport const equalBCRWH = (a?: DOMRect, b?: DOMRect, round?: boolean) =>\r\n equal(a, b, ['width', 'height'], round && ((value) => Math.round(value)));\r\n","import { isNumber, isFunction } from 'support/utils/types';\r\nimport { rAF, cAF } from 'support/compatibility/apis';\r\n\r\nconst setT = window.setTimeout;\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\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 = (curr: Parameters): Parameters | false | null | undefined =>\r\n _mergeParams && prevArguments ? _mergeParams(prevArguments, curr) : curr;\r\n\r\n const flush = () => {\r\n if (timeoutId) {\r\n invokeFunctionToDebounce(mergeParms(latestArguments!) || latestArguments!);\r\n }\r\n };\r\n\r\n const debouncedFn = function () {\r\n const args: Parameters = arguments as Parameters;\r\n const finalTimeout = isFunction(_timeout) ? _timeout() : _timeout;\r\n const hasTimeout = isNumber(finalTimeout) && finalTimeout >= 0;\r\n\r\n if (hasTimeout) {\r\n const finalMaxWait = isFunction(_maxDelay) ? _maxDelay() : _maxDelay;\r\n const hasMaxWait = isNumber(finalMaxWait) && finalMaxWait >= 0;\r\n const setTimeoutFn = finalTimeout! > 0 ? setT : rAF!;\r\n const mergeParamsResult = mergeParms(args);\r\n const invokedArgs = mergeParamsResult || args;\r\n const boundInvoke = invokeFunctionToDebounce.bind(0, invokedArgs);\r\n\r\n if (!mergeParamsResult) {\r\n invokeFunctionToDebounce(prevArguments || args);\r\n }\r\n\r\n clearTimeouts(timeoutId);\r\n timeoutId = setTimeoutFn(boundInvoke, finalTimeout as number) as number;\r\n\r\n if (hasMaxWait && !maxTimeoutId) {\r\n maxTimeoutId = setT(flush, finalMaxWait as number);\r\n }\r\n\r\n prevArguments = latestArguments = invokedArgs;\r\n } else {\r\n invokeFunctionToDebounce(args);\r\n }\r\n };\r\n debouncedFn._flush = flush;\r\n\r\n return debouncedFn as Debounced;\r\n};\r\n","import { each, keys } from 'support/utils';\r\nimport { isString, isNumber, isArray, isUndefined } from 'support/utils/types';\r\nimport { PlainObject, StyleObject } from 'typings';\r\n\r\nexport interface TRBL {\r\n t: number;\r\n r: number;\r\n b: number;\r\n l: number;\r\n}\r\n\r\nconst cssNumber = {\r\n //animationiterationcount: 1,\r\n //columncount: 1,\r\n //fillopacity: 1,\r\n //flexgrow: 1,\r\n //flexshrink: 1,\r\n //fontweight: 1,\r\n //lineheight: 1,\r\n opacity: 1,\r\n //order: 1,\r\n //orphans: 1,\r\n //widows: 1,\r\n zindex: 1,\r\n //zoom: 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 => (!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 ? computedStyle[prop] || computedStyle.getPropertyValue(prop) : elm.style[prop];\r\nconst setCSSVal = (elm: HTMLElement | false | null | undefined, prop: string, val: string | number): void => {\r\n try {\r\n if (elm) {\r\n const { style } = elm;\r\n if (!isUndefined(style[prop])) {\r\n style[prop] = adaptCSSVal(prop, val);\r\n } else {\r\n style.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(elm: HTMLElement | false | null | undefined, styles: StyleObject): void;\r\nexport function style(elm: HTMLElement | false | null | undefined, styles: string): string;\r\nexport function style(elm: HTMLElement | false | null | undefined, styles: Array | string): { [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 = (elm?: HTMLElement | false | null | undefined, propertyPrefix?: string, propertySuffix?: string): TRBL => {\r\n const finalPrefix = propertyPrefix ? `${propertyPrefix}-` : '';\r\n const finalSuffix = propertySuffix ? `-${propertySuffix}` : '';\r\n const top = `${finalPrefix}top${finalSuffix}`;\r\n const right = `${finalPrefix}right${finalSuffix}`;\r\n const bottom = `${finalPrefix}bottom${finalSuffix}`;\r\n const left = `${finalPrefix}left${finalSuffix}`;\r\n const result = style(elm, [top, right, bottom, left]);\r\n return {\r\n t: parseToZeroOrNumber(result[top]),\r\n r: parseToZeroOrNumber(result[right]),\r\n b: parseToZeroOrNumber(result[bottom]),\r\n l: parseToZeroOrNumber(result[left]),\r\n };\r\n};\r\n","import { getBoundingClientRect } from 'support/dom/dimensions';\r\n\r\nexport interface XY {\r\n x: T;\r\n y: T;\r\n}\r\n\r\nconst zeroObj: XY = {\r\n x: 0,\r\n y: 0,\r\n};\r\n\r\n/**\r\n * Returns the offset- left and top coordinates of the passed element relative to the document. If the element is null the top and left values are 0.\r\n * @param elm The element of which the offset- top and left coordinates shall be returned.\r\n */\r\nexport const absoluteCoordinates = (elm: HTMLElement | null | undefined): XY => {\r\n const rect = elm ? getBoundingClientRect(elm) : 0;\r\n return rect\r\n ? {\r\n x: rect.left + window.pageYOffset,\r\n y: rect.top + window.pageXOffset,\r\n }\r\n : zeroObj;\r\n};\r\n\r\n/**\r\n * Returns the offset- left and top coordinates of the passed element. If the element is null the top and left values are 0.\r\n * @param elm The element of which the offset- top and left coordinates shall be returned.\r\n */\r\nexport const offsetCoordinates = (elm: HTMLElement | null | undefined): XY =>\r\n elm\r\n ? {\r\n x: elm.offsetLeft,\r\n y: elm.offsetTop,\r\n }\r\n : zeroObj;\r\n","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, isNumber, isBoolean } from 'support/utils/types';\r\nimport { PlainObject } from 'typings';\r\n\r\nexport type OptionsObjectType = Record;\r\nexport type OptionsFunctionType = (this: unknown, ...args: unknown[]) => unknown;\r\nexport type OptionsTemplateType = ExtractPropsKey;\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 readonly _foreign: Record;\r\n readonly _validated: PartialOptions;\r\n};\r\n\r\nexport type PartialOptions = {\r\n [P in keyof T]?: T[P] extends OptionsObjectType ? PartialOptions : T[P];\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 { stringify } = JSON;\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 = ['boolean', 'number', 'string', 'array', 'object', 'function', 'null'].reduce(\r\n (result, item) => {\r\n result[item] = templateTypePrefixSuffix[0] + item + templateTypePrefixSuffix[1];\r\n return result;\r\n },\r\n {} as OptionsTemplateTypesDictionary\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 options The options object which shall be validated.\r\n * @param template The template according to which the options object 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 options: PartialOptions,\r\n template: OptionsTemplate,\r\n optionsDiff: T,\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 optionsDiffValue: any = isUndefined(optionsDiff[prop]) ? {} : optionsDiff[prop];\r\n const optionsValue: any = options[prop];\r\n const templateValue: PlainObject | string | OptionsTemplateTypes | Array = 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 validatedResult = validateRecursive(optionsValue, templateValue as T, optionsDiffValue, doWriteErrors, propPrefix + prop);\r\n validatedOptions[prop] = validatedResult._validated as any;\r\n optionsCopy[prop] = validatedResult._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 const isPrimitiveArr = isArray(optionsValue) && !optionsValue.some((val) => !isNumber(val) && !isString(val) && !isBoolean(val));\r\n const doStringifyComparison = isPrimitiveArr || isPlainObject(optionsValue);\r\n if (doStringifyComparison ? stringify(optionsValue) !== stringify(optionsDiffValue) : optionsValue !== optionsDiffValue) {\r\n validatedOptions[prop] = optionsValue;\r\n }\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 }${errorEnumStrings.length > 0 ? `\\r\\nValid strings are: [ ${errorEnumStrings.join(', ')} ].` : ''}`\r\n );\r\n }\r\n\r\n delete optionsCopy[prop];\r\n }\r\n });\r\n\r\n return {\r\n _foreign: optionsCopy,\r\n _validated: validatedOptions,\r\n };\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 options The options object which shall be validated.\r\n * @param template The template according to which the options object 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 */\r\nconst validateOptions = (\r\n options: PartialOptions,\r\n template: OptionsTemplate,\r\n optionsDiff?: T | null,\r\n doWriteErrors?: boolean\r\n): OptionsValidationResult => {\r\n /*\r\n if (!isEmptyObject(foreign) && doWriteErrors)\r\n console.warn(`The following options are discarded due to invalidity:\\r\\n ${window.JSON.stringify(foreign, null, 2)}`);\r\n\r\n //add values, which aren't specified in the template, to the finished validated object to prevent them from being discarded\r\n if (keepForeignProps) {\r\n Object.assign(result.validated, foreign);\r\n }\r\n */\r\n return validateRecursive(options, template, optionsDiff || ({} as T), doWriteErrors || false);\r\n};\r\n\r\nexport { validateOptions, optionsTemplateTypes };\r\n","import {\r\n OptionsTemplate,\r\n OptionsObjectType,\r\n OptionsTemplateNativeTypes,\r\n OptionsTemplateTypes,\r\n OptionsTemplateValue,\r\n} from 'support/options/validation';\r\nimport { PlainObject } from 'typings';\r\nimport { isArray } from 'support/utils/types';\r\nimport { each, keys } from 'support/utils';\r\n\r\nexport interface OptionsWithOptionsTemplateTransformation {\r\n _template: OptionsTemplate;\r\n _options: T;\r\n}\r\n\r\nexport type OptionsWithOptionsTemplateValue = [T, OptionsTemplateValue];\r\n\r\nexport type OptionsWithOptionsTemplate = {\r\n [P in keyof T]: T[P] extends OptionsObjectType\r\n ? OptionsWithOptionsTemplate\r\n : T[P] extends OptionsTemplateNativeTypes\r\n ? OptionsWithOptionsTemplateValue\r\n : never;\r\n};\r\n\r\n/**\r\n * Transforms the given OptionsWithOptionsTemplate object to its corresponding generic (T) Object or its corresponding Template object.\r\n * @param optionsWithOptionsTemplate The OptionsWithOptionsTemplate object which shall be converted.\r\n * @param toTemplate True if the given OptionsWithOptionsTemplate shall be converted to its corresponding Template object.\r\n */\r\nexport const transformOptions = (optionsWithOptionsTemplate: OptionsWithOptionsTemplate): OptionsWithOptionsTemplateTransformation => {\r\n const result: any = {\r\n _template: {},\r\n _options: {},\r\n };\r\n\r\n each(keys(optionsWithOptionsTemplate), (key: Extract) => {\r\n const val: PlainObject | OptionsTemplateTypes | Array = optionsWithOptionsTemplate[key];\r\n\r\n if (isArray(val)) {\r\n result._template[key] = val[1];\r\n result._options[key] = val[0];\r\n } else {\r\n // if (isObject(val))\r\n const tmpResult = transformOptions(val as OptionsWithOptionsTemplate);\r\n result._template[key] = tmpResult._template;\r\n result._options[key] = tmpResult._options;\r\n }\r\n });\r\n\r\n return result;\r\n};\r\n","export const classNameEnvironment = 'os-environment';\r\nexport const classNameEnvironmentFlexboxGlue = `${classNameEnvironment}-flexbox-glue`;\r\nexport const classNameEnvironmentFlexboxGlueMax = `${classNameEnvironmentFlexboxGlue}-max`;\r\n\r\nexport const classNameHost = 'os-host';\r\nexport const classNamePadding = 'os-padding';\r\nexport const classNameViewport = 'os-viewport';\r\nexport const classNameViewportArrange = `${classNameViewport}-arrange`;\r\nexport const classNameContent = 'os-content';\r\nexport const classNameViewportScrollbarStyling = `${classNameViewport}-scrollbar-styled`;\r\n\r\nexport const classNameSizeObserver = 'os-size-observer';\r\nexport const classNameSizeObserverAppear = `${classNameSizeObserver}-appear`;\r\nexport const classNameSizeObserverListener = `${classNameSizeObserver}-listener`;\r\nexport const classNameSizeObserverListenerScroll = `${classNameSizeObserverListener}-scroll`;\r\nexport const classNameSizeObserverListenerItem = `${classNameSizeObserverListener}-item`;\r\nexport const classNameSizeObserverListenerItemFinal = `${classNameSizeObserverListenerItem}-final`;\r\n\r\nexport const classNameTrinsicObserver = 'os-trinsic-observer';\r\n\r\nexport const classNameScrollbar = 'os-scrollbar';\r\nexport const classNameScrollbarHorizontal = `${classNameScrollbar}-horizontal`;\r\nexport const classNameScrollbarVertical = `${classNameScrollbar}-vertical`;\r\nexport const classNameScrollbarTrack = 'os-scrollbar-track';\r\nexport const classNameScrollbarHandle = 'os-scrollbar-handle';\r\n","import {\r\n optionsTemplateTypes as oTypes,\r\n transformOptions,\r\n OptionsTemplateValue,\r\n OptionsWithOptionsTemplateValue,\r\n OptionsWithOptionsTemplate,\r\n} from 'support/options';\r\n\r\nexport type ResizeBehavior = 'none' | 'both' | 'horizontal' | 'vertical';\r\n\r\nexport type OverflowBehavior = 'hidden' | 'scroll' | 'visible' | 'visible-hidden';\r\n\r\nexport type VisibilityBehavior = 'visible' | 'hidden' | 'auto';\r\n\r\nexport type AutoHideBehavior = 'never' | 'scroll' | 'leave' | 'move';\r\n\r\nexport type ScrollBehavior = 'always' | 'ifneeded' | 'never';\r\n\r\nexport type BasicEventCallback = (this: any) => void;\r\n\r\nexport type ScrollEventCallback = (this: any, args?: UIEvent) => void;\r\n\r\nexport type OverflowChangedCallback = (this: any, args?: OverflowChangedArgs) => void;\r\n\r\nexport type OverflowAmountChangedCallback = (this: any, args?: OverflowAmountChangedArgs) => void;\r\n\r\nexport type DirectionChangedCallback = (this: any, args?: DirectionChangedArgs) => void;\r\n\r\nexport type SizeChangedCallback = (this: any, args?: SizeChangedArgs) => void;\r\n\r\nexport type UpdatedCallback = (this: any, args?: UpdatedArgs) => void;\r\n\r\nexport interface OSOptions {\r\n resize: ResizeBehavior;\r\n paddingAbsolute: boolean;\r\n updating: {\r\n elementEvents: Array<[string, string]> | null;\r\n attributes: string[] | null;\r\n debounce: number | [number, number] | null;\r\n };\r\n overflow: {\r\n x: OverflowBehavior;\r\n y: OverflowBehavior;\r\n };\r\n scrollbars: {\r\n visibility: VisibilityBehavior;\r\n autoHide: AutoHideBehavior;\r\n autoHideDelay: number;\r\n dragScroll: boolean;\r\n clickScroll: boolean;\r\n touch: boolean;\r\n };\r\n textarea: {\r\n dynWidth: boolean;\r\n dynHeight: boolean;\r\n inheritedAttrs: string | Array | null;\r\n };\r\n nativeScrollbarsOverlaid: {\r\n show: boolean;\r\n initialize: boolean;\r\n };\r\n callbacks: {\r\n onUpdated: (() => any) | null;\r\n };\r\n /*\r\n callbacks?: {\r\n onInitialized?: BasicEventCallback | null;\r\n onInitializationWithdrawn?: BasicEventCallback | null;\r\n onDestroyed?: BasicEventCallback | null;\r\n onScrollStart?: ScrollEventCallback | null;\r\n onScroll?: ScrollEventCallback | null;\r\n onScrollStop?: ScrollEventCallback | null;\r\n onOverflowChanged?: OverflowChangedCallback | null;\r\n onOverflowAmountChanged?: OverflowAmountChangedCallback | null;\r\n onDirectionChanged?: DirectionChangedCallback | null;\r\n onContentSizeChanged?: SizeChangedCallback | null;\r\n onHostSizeChanged?: SizeChangedCallback | null;\r\n onUpdated?: UpdatedCallback | null;\r\n };\r\n */\r\n}\r\n\r\nexport interface OverflowChangedArgs {\r\n x: boolean;\r\n y: boolean;\r\n xScrollable: boolean;\r\n yScrollable: boolean;\r\n clipped: boolean;\r\n}\r\n\r\nexport interface OverflowAmountChangedArgs {\r\n x: number;\r\n y: number;\r\n}\r\n\r\nexport interface DirectionChangedArgs {\r\n isRTL: number;\r\n dir: string;\r\n}\r\n\r\nexport interface SizeChangedArgs {\r\n width: number;\r\n height: number;\r\n}\r\n\r\nexport interface UpdatedArgs {\r\n forced: boolean;\r\n}\r\n\r\nconst numberAllowedValues: OptionsTemplateValue = oTypes.number;\r\nconst arrayNullValues: OptionsTemplateValue | null> = [oTypes.array, oTypes.null];\r\nconst stringArrayNullAllowedValues: OptionsTemplateValue | null> = [oTypes.string, oTypes.array, oTypes.null];\r\nconst booleanTrueTemplate: OptionsWithOptionsTemplateValue = [true, oTypes.boolean];\r\nconst booleanFalseTemplate: OptionsWithOptionsTemplateValue = [false, oTypes.boolean];\r\n// const callbackTemplate: OptionsWithOptionsTemplateValue = [null, [oTypes.function, oTypes.null]];\r\nconst resizeAllowedValues: OptionsTemplateValue = 'none both horizontal vertical';\r\nconst overflowAllowedValues: OptionsTemplateValue = 'hidden scroll visible visible-hidden';\r\nconst scrollbarsVisibilityAllowedValues: OptionsTemplateValue = 'visible hidden auto';\r\nconst scrollbarsAutoHideAllowedValues: OptionsTemplateValue = 'never scroll leavemove';\r\n\r\n/**\r\n * A object which serves as \"default options object\" and \"options template object\".\r\n * I combined these two into one object so that I don't have to define two separate big objects, instead I define one big object.\r\n *\r\n * The property value is a tuple:\r\n * the first value is the default value\r\n * the second value is the template value\r\n * Example:\r\n * {\r\n * a: ['default', [Type.string, Type.null]],\r\n * b: [250, Type.number]\r\n * }\r\n * Property \"a\" has a default value of 'default' and it can be a string or null\r\n * Property \"b\" has a default value of 250 and it can be number\r\n */\r\nconst defaultOptionsWithTemplate: OptionsWithOptionsTemplate = {\r\n resize: ['none', resizeAllowedValues], // none || both || horizontal || vertical || n || b || h || v\r\n paddingAbsolute: booleanFalseTemplate, // true || false\r\n updating: {\r\n elementEvents: [[['img', 'load']], arrayNullValues], // array of tuples || null\r\n attributes: [null, arrayNullValues],\r\n debounce: [\r\n [0, 33],\r\n [oTypes.number, oTypes.array, oTypes.null],\r\n ], // number || number array || null\r\n },\r\n overflow: {\r\n x: ['scroll', overflowAllowedValues], // visible-hidden || visible-scroll || hidden || scroll || v-h || v-s || h || s\r\n y: ['scroll', overflowAllowedValues], // visible-hidden || visible-scroll || hidden || scroll || v-h || v-s || h || s\r\n },\r\n scrollbars: {\r\n visibility: ['auto', scrollbarsVisibilityAllowedValues], // visible || hidden || auto || v || h || a\r\n autoHide: ['never', scrollbarsAutoHideAllowedValues], // never || scroll || leave || move || n || s || l || m\r\n autoHideDelay: [800, numberAllowedValues], // number\r\n dragScroll: booleanTrueTemplate, // true || false\r\n clickScroll: booleanFalseTemplate, // true || false\r\n touch: booleanTrueTemplate, // true || false\r\n },\r\n textarea: {\r\n dynWidth: booleanFalseTemplate, // true || false\r\n dynHeight: booleanFalseTemplate, // true || false\r\n inheritedAttrs: [['style', 'class'], stringArrayNullAllowedValues], // string || array || null\r\n },\r\n nativeScrollbarsOverlaid: {\r\n show: booleanFalseTemplate, // true || false\r\n initialize: booleanFalseTemplate, // true || false\r\n },\r\n callbacks: {\r\n onUpdated: [null, [oTypes.function, oTypes.null]],\r\n },\r\n /*\r\n callbacks: {\r\n onInitialized: callbackTemplate, // null || function\r\n onInitializationWithdrawn: callbackTemplate, // null || function\r\n onDestroyed: callbackTemplate, // null || function\r\n onScrollStart: callbackTemplate, // null || function\r\n onScroll: callbackTemplate, // null || function\r\n onScrollStop: callbackTemplate, // null || function\r\n onOverflowChanged: callbackTemplate, // null || function\r\n onOverflowAmountChanged: callbackTemplate, // null || function\r\n onDirectionChanged: callbackTemplate, // null || function\r\n onContentSizeChanged: callbackTemplate, // null || function\r\n onHostSizeChanged: callbackTemplate, // null || function\r\n onUpdated: callbackTemplate, // null || function\r\n },\r\n */\r\n};\r\n\r\nexport const { _template: optionsTemplate, _options: defaultOptions } = transformOptions(defaultOptionsWithTemplate);\r\n","import {\r\n createDOM,\r\n addClass,\r\n style,\r\n appendChildren,\r\n clientSize,\r\n absoluteCoordinates,\r\n offsetSize,\r\n scrollLeft,\r\n XY,\r\n removeAttr,\r\n removeElements,\r\n windowSize,\r\n runEach,\r\n equalBCRWH,\r\n getBoundingClientRect,\r\n assignDeep,\r\n cssProperty,\r\n PartialOptions,\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 } from 'typings';\r\n\r\ntype StructureInitializationElementFn = ((target: OSTargetElement) => HTMLElement | T) | T;\r\n\r\ntype ScrollbarsInitializationElementFn = ((target: OSTargetElement, host: HTMLElement, viewport: HTMLElement) => HTMLElement | T) | T;\r\n\r\n/**\r\n * A Static element is an element which MUST be generated.\r\n * If null (or the returned result is null), the initialization function is generatig the element, otherwise\r\n * the element returned by the function acts as the generated element.\r\n */\r\nexport type StructureInitializationStaticElement = StructureInitializationElementFn;\r\n\r\n/**\r\n * A Dynamic element is an element which CAN be generated.\r\n * If null (or the returned result is null), then the default behavior is used.\r\n * If boolean (or the returned result is boolean), the generation of the element is forced (or not).\r\n * If the function returns and element, the element returned by the function acts as the generated element.\r\n */\r\nexport type StructureInitializationDynamicElement = StructureInitializationElementFn;\r\n\r\nexport interface StructureInitializationStrategy {\r\n _host: StructureInitializationStaticElement;\r\n _viewport: StructureInitializationStaticElement;\r\n _padding: StructureInitializationDynamicElement;\r\n _content: StructureInitializationDynamicElement;\r\n}\r\n\r\nexport interface ScrollbarsInitializationStrategy {\r\n _scrollbarsSlot: ScrollbarsInitializationElementFn;\r\n}\r\n\r\nexport interface InitializationStrategy extends StructureInitializationStrategy, ScrollbarsInitializationStrategy {}\r\n\r\nexport type OnEnvironmentChanged = (env: Environment) => void;\r\nexport interface Environment {\r\n _nativeScrollbarSize: XY;\r\n _nativeScrollbarIsOverlaid: XY;\r\n _nativeScrollbarStyling: boolean;\r\n _rtlScrollBehavior: { n: boolean; i: boolean };\r\n _flexboxGlue: boolean;\r\n _cssCustomProperties: boolean;\r\n _addListener(listener: OnEnvironmentChanged): void;\r\n _removeListener(listener: OnEnvironmentChanged): void;\r\n _getInitializationStrategy(): InitializationStrategy;\r\n _setInitializationStrategy(newInitializationStrategy: Partial): void;\r\n _getDefaultOptions(): OSOptions;\r\n _setDefaultOptions(newDefaultOptions: PartialOptions): void;\r\n _defaultInitializationStrategy: InitializationStrategy;\r\n _defaultDefaultOptions: OSOptions;\r\n}\r\n\r\nlet environmentInstance: Environment;\r\nconst { abs, round } = Math;\r\n\r\nconst diffBiggerThanOne = (valOne: number, valTwo: number): boolean => {\r\n const absValOne = abs(valOne);\r\n const absValTwo = abs(valTwo);\r\n return !(absValOne === absValTwo || absValOne + 1 === absValTwo || absValOne - 1 === absValTwo);\r\n};\r\n\r\nconst getNativeScrollbarSize = (body: HTMLElement, measureElm: HTMLElement): XY => {\r\n appendChildren(body, measureElm);\r\n const cSize = clientSize(measureElm);\r\n const oSize = offsetSize(measureElm);\r\n\r\n return {\r\n x: oSize.h - cSize.h,\r\n y: oSize.w - cSize.w,\r\n };\r\n};\r\n\r\nconst getNativeScrollbarStyling = (testElm: HTMLElement): boolean => {\r\n let result = false;\r\n addClass(testElm, classNameViewportScrollbarStyling);\r\n try {\r\n result =\r\n style(testElm, cssProperty('scrollbar-width')) === 'none' ||\r\n window.getComputedStyle(testElm, '::-webkit-scrollbar').getPropertyValue('display') === 'none';\r\n } catch (ex) {}\r\n\r\n return result;\r\n};\r\n\r\nconst getRtlScrollBehavior = (parentElm: HTMLElement, childElm: HTMLElement): { i: boolean; n: boolean } => {\r\n const strHidden = 'hidden';\r\n style(parentElm, { overflowX: strHidden, overflowY: strHidden, direction: 'rtl' });\r\n scrollLeft(parentElm, 0);\r\n\r\n const parentOffset = absoluteCoordinates(parentElm);\r\n const childOffset = absoluteCoordinates(childElm);\r\n scrollLeft(parentElm, -999); // https://github.com/KingSora/OverlayScrollbars/issues/187\r\n const childOffsetAfterScroll = absoluteCoordinates(childElm);\r\n return {\r\n /**\r\n * origin direction = determines if the zero scroll position is on the left or right side\r\n * 'i' means 'invert' (i === true means that the axis must be inverted to be correct)\r\n * true = on the left side\r\n * false = on the right side\r\n */\r\n i: parentOffset.x === childOffset.x,\r\n /**\r\n * negative = determines if the maximum scroll is positive or negative\r\n * 'n' means 'negate' (n === true means that the axis must be negated to be correct)\r\n * true = negative\r\n * false = positive\r\n */\r\n n: childOffset.x !== childOffsetAfterScroll.x,\r\n };\r\n};\r\n\r\nconst getFlexboxGlue = (parentElm: HTMLElement, childElm: HTMLElement): boolean => {\r\n addClass(parentElm, classNameEnvironmentFlexboxGlue);\r\n const minOffsetsizeParent = getBoundingClientRect(parentElm);\r\n const minOffsetsize = getBoundingClientRect(childElm);\r\n const supportsMin = equalBCRWH(minOffsetsize, minOffsetsizeParent, true);\r\n\r\n addClass(parentElm, classNameEnvironmentFlexboxGlueMax);\r\n const maxOffsetsizeParent = getBoundingClientRect(parentElm);\r\n const maxOffsetsize = getBoundingClientRect(childElm);\r\n const supportsMax = equalBCRWH(maxOffsetsize, maxOffsetsizeParent, true);\r\n\r\n return supportsMin && supportsMax;\r\n};\r\n\r\nconst getWindowDPR = (): number => {\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n const dDPI = window.screen.deviceXDPI || 0;\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n const sDPI = window.screen.logicalXDPI || 1;\r\n return window.devicePixelRatio || dDPI / sDPI;\r\n};\r\n\r\n// init function decides for all values\r\nconst getDefaultInitializationStrategy = (nativeScrollbarStyling: boolean): InitializationStrategy => ({\r\n _host: null,\r\n _viewport: null,\r\n _padding: null,\r\n _content: null,\r\n _scrollbarsSlot: null,\r\n});\r\n\r\nconst createEnvironment = (): Environment => {\r\n const { body } = document;\r\n const envDOM = createDOM(`
`);\r\n const envElm = envDOM[0] as HTMLElement;\r\n const envChildElm = envElm.firstChild as HTMLElement;\r\n const onChangedListener: Set = new Set();\r\n const nativeScrollbarSize = getNativeScrollbarSize(body, envElm);\r\n const nativeScrollbarStyling = getNativeScrollbarStyling(envElm);\r\n const nativeScrollbarIsOverlaid = {\r\n x: nativeScrollbarSize.x === 0,\r\n y: nativeScrollbarSize.y === 0,\r\n };\r\n const defaultInitializationStrategy = getDefaultInitializationStrategy(nativeScrollbarStyling);\r\n let initializationStrategy = defaultInitializationStrategy;\r\n let defaultDefaultOptions = defaultOptions;\r\n\r\n const env: Environment = {\r\n _nativeScrollbarSize: nativeScrollbarSize,\r\n _nativeScrollbarIsOverlaid: nativeScrollbarIsOverlaid,\r\n _nativeScrollbarStyling: nativeScrollbarStyling,\r\n _cssCustomProperties: style(envElm, 'zIndex') === '-1',\r\n _rtlScrollBehavior: getRtlScrollBehavior(envElm, envChildElm),\r\n _flexboxGlue: getFlexboxGlue(envElm, envChildElm),\r\n _addListener(listener: OnEnvironmentChanged): void {\r\n onChangedListener.add(listener);\r\n },\r\n _removeListener(listener: OnEnvironmentChanged): void {\r\n onChangedListener.delete(listener);\r\n },\r\n _getInitializationStrategy: () => ({ ...initializationStrategy }),\r\n _setInitializationStrategy(newInitializationStrategy) {\r\n initializationStrategy = assignDeep({}, initializationStrategy, newInitializationStrategy);\r\n },\r\n _getDefaultOptions: () => ({ ...defaultDefaultOptions }),\r\n _setDefaultOptions(newDefaultOptions) {\r\n defaultDefaultOptions = assignDeep({}, defaultDefaultOptions, newDefaultOptions);\r\n },\r\n _defaultInitializationStrategy: defaultInitializationStrategy,\r\n _defaultDefaultOptions: defaultDefaultOptions,\r\n };\r\n\r\n removeAttr(envElm, 'style');\r\n removeElements(envElm);\r\n\r\n if (!nativeScrollbarStyling && (!nativeScrollbarIsOverlaid.x || !nativeScrollbarIsOverlaid.y)) {\r\n let size = windowSize();\r\n let dpr = getWindowDPR();\r\n let scrollbarSize = nativeScrollbarSize;\r\n\r\n window.addEventListener('resize', () => {\r\n if (onChangedListener.size) {\r\n const sizeNew = windowSize();\r\n const deltaSize = {\r\n w: sizeNew.w - size.w,\r\n h: sizeNew.h - size.h,\r\n };\r\n\r\n if (deltaSize.w === 0 && deltaSize.h === 0) return;\r\n\r\n const deltaAbsSize = {\r\n w: abs(deltaSize.w),\r\n h: abs(deltaSize.h),\r\n };\r\n const deltaAbsRatio = {\r\n w: abs(round(sizeNew.w / (size.w / 100.0))),\r\n h: abs(round(sizeNew.h / (size.h / 100.0))),\r\n };\r\n const dprNew = getWindowDPR();\r\n const deltaIsBigger = deltaAbsSize.w > 2 && deltaAbsSize.h > 2;\r\n const difference = !diffBiggerThanOne(deltaAbsRatio.w, deltaAbsRatio.h);\r\n const dprChanged = dprNew !== dpr && dpr > 0;\r\n const isZoom = deltaIsBigger && difference && dprChanged;\r\n\r\n if (isZoom) {\r\n const newScrollbarSize = (environmentInstance._nativeScrollbarSize = getNativeScrollbarSize(body, envElm));\r\n removeElements(envElm);\r\n\r\n if (scrollbarSize.x !== newScrollbarSize.x || scrollbarSize.y !== newScrollbarSize.y) {\r\n runEach(onChangedListener);\r\n }\r\n\r\n scrollbarSize = newScrollbarSize;\r\n }\r\n\r\n size = sizeNew;\r\n dpr = dprNew;\r\n }\r\n });\r\n }\r\n\r\n return env;\r\n};\r\n\r\nexport const getEnvironment = (): Environment => {\r\n if (!environmentInstance) {\r\n environmentInstance = createEnvironment();\r\n }\r\n return environmentInstance;\r\n};\r\n","import {\r\n isHTMLElement,\r\n appendChildren,\r\n is,\r\n createDiv,\r\n contents,\r\n insertAfter,\r\n addClass,\r\n parent,\r\n indexOf,\r\n removeElements,\r\n removeClass,\r\n push,\r\n runEach,\r\n insertBefore,\r\n attr,\r\n isBoolean,\r\n isFunction,\r\n keys,\r\n} from 'support';\r\nimport {\r\n classNameHost,\r\n classNamePadding,\r\n classNameViewport,\r\n classNameViewportArrange,\r\n classNameContent,\r\n classNameViewportScrollbarStyling,\r\n} from 'classnames';\r\nimport {\r\n getEnvironment,\r\n StructureInitializationStaticElement,\r\n StructureInitializationDynamicElement,\r\n StructureInitializationStrategy,\r\n} from 'environment';\r\nimport { OSTarget, OSTargetElement, StructureInitialization } from 'typings';\r\n\r\nexport interface OSTargetContext {\r\n _isTextarea: boolean;\r\n _isBody: boolean;\r\n _htmlElm: HTMLHtmlElement;\r\n _bodyElm: HTMLBodyElement;\r\n _windowElm: Window;\r\n _documentElm: HTMLDocument;\r\n _targetIsElm: boolean;\r\n}\r\n\r\nexport interface PreparedOSTargetObject {\r\n _target: OSTargetElement;\r\n _host: HTMLElement;\r\n _viewport: HTMLElement;\r\n _padding: HTMLElement | false;\r\n _content: HTMLElement | false;\r\n _viewportArrange: HTMLStyleElement | false;\r\n}\r\n\r\nexport interface StructureSetup {\r\n _targetObj: PreparedOSTargetObject;\r\n _targetCtx: OSTargetContext;\r\n _destroy: () => void;\r\n}\r\n\r\nlet contentArrangeCounter = 0;\r\n\r\nconst unwrap = (elm: HTMLElement | false | null | undefined) => {\r\n appendChildren(parent(elm), contents(elm));\r\n removeElements(elm);\r\n};\r\n\r\nconst createUniqueViewportArrangeElement = (): HTMLStyleElement | false => {\r\n const { _nativeScrollbarStyling, _nativeScrollbarIsOverlaid, _cssCustomProperties } = getEnvironment();\r\n /* istanbul ignore next */\r\n const create = !_cssCustomProperties && !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);\r\n const result = create ? document.createElement('style') : false;\r\n\r\n if (result) {\r\n attr(result, 'id', `${classNameViewportArrange}-${contentArrangeCounter}`);\r\n contentArrangeCounter++;\r\n }\r\n\r\n return result;\r\n};\r\n\r\nconst staticCreationFromStrategy = (\r\n target: OSTargetElement,\r\n initializationValue: HTMLElement | undefined,\r\n strategy: StructureInitializationStaticElement,\r\n elementClass: string\r\n): HTMLElement => {\r\n const result = initializationValue ? initializationValue : isFunction(strategy) ? strategy(target) : (strategy as null);\r\n return result ? result : createDiv(elementClass);\r\n};\r\n\r\nconst dynamicCreationFromStrategy = (\r\n target: OSTargetElement,\r\n initializationValue: HTMLElement | boolean | undefined,\r\n strategy: StructureInitializationDynamicElement,\r\n elementClass: string,\r\n defaultValue: boolean\r\n): HTMLElement | false => {\r\n const takeInitializationValue = isBoolean(initializationValue) || initializationValue;\r\n const result = takeInitializationValue ? (initializationValue as boolean | HTMLElement) : isFunction(strategy) ? strategy(target) : strategy;\r\n\r\n if (result === null) {\r\n return defaultValue ? createDiv(elementClass) : false;\r\n }\r\n\r\n return result === true ? createDiv(elementClass) : result;\r\n};\r\n\r\nexport const createStructureSetup = (target: OSTarget | StructureInitialization): StructureSetup => {\r\n const { _getInitializationStrategy, _nativeScrollbarStyling } = getEnvironment();\r\n const {\r\n _host: hostInitializationStrategy,\r\n _viewport: viewportInitializationStrategy,\r\n _padding: paddingInitializationStrategy,\r\n _content: contentInitializationStrategy,\r\n } = _getInitializationStrategy() as StructureInitializationStrategy;\r\n const targetIsElm = isHTMLElement(target);\r\n const targetStructureInitialization = target as StructureInitialization;\r\n const targetElement = targetIsElm ? (target as OSTargetElement) : targetStructureInitialization.target;\r\n const isTextarea = is(targetElement, 'textarea');\r\n const isBody = !isTextarea && is(targetElement, 'body');\r\n const ownerDocument: HTMLDocument = targetElement!.ownerDocument;\r\n const bodyElm = ownerDocument.body as HTMLBodyElement;\r\n const wnd = ownerDocument.defaultView as Window;\r\n const evaluatedTargetObj: PreparedOSTargetObject = {\r\n _target: targetElement,\r\n _host: isTextarea\r\n ? staticCreationFromStrategy(targetElement, targetStructureInitialization.host, hostInitializationStrategy, classNameHost)\r\n : (targetElement as HTMLElement),\r\n _viewport: staticCreationFromStrategy(targetElement, targetStructureInitialization.viewport, viewportInitializationStrategy, classNameViewport),\r\n _padding: dynamicCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.padding,\r\n paddingInitializationStrategy,\r\n classNamePadding,\r\n !_nativeScrollbarStyling // default value for padding\r\n ),\r\n _content: dynamicCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.content,\r\n contentInitializationStrategy,\r\n classNameContent,\r\n false // default value for content\r\n ),\r\n _viewportArrange: createUniqueViewportArrangeElement(),\r\n };\r\n const ctx: OSTargetContext = {\r\n _windowElm: wnd,\r\n _documentElm: ownerDocument,\r\n _htmlElm: parent(bodyElm) as HTMLHtmlElement,\r\n _bodyElm: bodyElm,\r\n _isTextarea: isTextarea,\r\n _isBody: isBody,\r\n _targetIsElm: targetIsElm,\r\n };\r\n const generatedElements = keys(evaluatedTargetObj).reduce((arr, key: string) => {\r\n const value = evaluatedTargetObj[key];\r\n return push(arr, value && !parent(value) ? value : false);\r\n }, [] as HTMLElement[]);\r\n const elementIsGenerated = (elm: HTMLElement | false) => (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([_content, _viewport, _padding, _host, _target].find((elm) => elementIsGenerated(elm) === false));\r\n const contentSlot = _content || _viewport;\r\n\r\n // only insert host for textarea after target if it was generated\r\n if (isTextareaHostGenerated) {\r\n insertAfter(_target, _host);\r\n\r\n push(destroyFns, () => {\r\n insertAfter(_host, _target);\r\n removeElements(_host);\r\n });\r\n }\r\n\r\n appendChildren(contentSlot, targetContents);\r\n appendChildren(_host, _padding);\r\n appendChildren(_padding || _host, _viewport);\r\n appendChildren(_viewport, _content);\r\n\r\n addClass(_host, classNameHost);\r\n addClass(_padding, classNamePadding);\r\n addClass(_viewport, classNameViewport);\r\n addClass(_content, classNameContent);\r\n\r\n push(destroyFns, () => {\r\n if (targetIsElm) {\r\n appendChildren(_host, contents(contentSlot));\r\n removeElements(_padding || _viewport);\r\n removeClass(_host, classNameHost);\r\n } else {\r\n if (elementIsGenerated(_content)) {\r\n unwrap(_content);\r\n }\r\n if (elementIsGenerated(_viewport)) {\r\n unwrap(_viewport);\r\n }\r\n if (elementIsGenerated(_padding)) {\r\n unwrap(_padding);\r\n }\r\n removeClass(_host, classNameHost);\r\n removeClass(_padding, classNamePadding);\r\n removeClass(_viewport, classNameViewport);\r\n removeClass(_content, classNameContent);\r\n }\r\n });\r\n\r\n if (_nativeScrollbarStyling) {\r\n push(destroyFns, removeClass.bind(0, _viewport, classNameViewportScrollbarStyling));\r\n }\r\n if (_viewportArrange) {\r\n insertBefore(_viewport, _viewportArrange);\r\n push(destroyFns, removeElements.bind(0, _viewportArrange));\r\n }\r\n\r\n return {\r\n _targetObj: evaluatedTargetObj,\r\n _targetCtx: ctx,\r\n _destroy: () => {\r\n runEach(destroyFns);\r\n },\r\n };\r\n};\r\n","import { appendChildren, createDiv, removeElements, isFunction } from 'support';\r\nimport {\r\n classNameScrollbar,\r\n classNameScrollbarHorizontal,\r\n classNameScrollbarVertical,\r\n classNameScrollbarTrack,\r\n classNameScrollbarHandle,\r\n} from 'classnames';\r\nimport { getEnvironment, ScrollbarsInitializationStrategy } from 'environment';\r\nimport { OSTarget, ScrollbarsInitialization } from 'typings';\r\nimport { StructureSetup } from 'setups/structureSetup';\r\n\r\nexport interface ScrollbarStructure {\r\n _scrollbar: HTMLElement;\r\n _track: HTMLElement;\r\n _handle: HTMLElement;\r\n}\r\n\r\nexport interface ScrollbarsSetup {\r\n _horizontalScrollbarStructure: ScrollbarStructure;\r\n _verticalScrollbarStructure: ScrollbarStructure;\r\n _destroy: () => void;\r\n}\r\n\r\nconst generateScrollbarDOM = (scrollbarClassName: string): ScrollbarStructure => {\r\n const scrollbar = createDiv(`${classNameScrollbar} ${scrollbarClassName}`);\r\n const track = createDiv(classNameScrollbarTrack);\r\n const handle = createDiv(classNameScrollbarHandle);\r\n\r\n appendChildren(scrollbar, track);\r\n appendChildren(track, handle);\r\n\r\n return {\r\n _scrollbar: scrollbar,\r\n _track: track,\r\n _handle: handle,\r\n };\r\n};\r\n\r\nexport const createScrollbarsSetup = (target: OSTarget | ScrollbarsInitialization, structureSetup: StructureSetup): ScrollbarsSetup => {\r\n const { _getInitializationStrategy } = getEnvironment();\r\n const { _scrollbarsSlot: environmentScrollbarSlot } = _getInitializationStrategy() as ScrollbarsInitializationStrategy;\r\n const { _targetObj, _targetCtx } = structureSetup;\r\n const { _target, _host, _viewport } = _targetObj;\r\n const initializationScrollbarSlot = !_targetCtx._targetIsElm && (target as ScrollbarsInitialization).scrollbarsSlot;\r\n const initializationScrollbarSlotResult = isFunction(initializationScrollbarSlot)\r\n ? initializationScrollbarSlot(_target, _host, _viewport)\r\n : initializationScrollbarSlot;\r\n const evaluatedScrollbarSlot =\r\n initializationScrollbarSlotResult ||\r\n (isFunction(environmentScrollbarSlot) ? environmentScrollbarSlot(_target, _host, _viewport) : environmentScrollbarSlot) ||\r\n _host;\r\n\r\n const horizontalScrollbarStructure = generateScrollbarDOM(classNameScrollbarHorizontal);\r\n const verticalScrollbarStructure = generateScrollbarDOM(classNameScrollbarVertical);\r\n\r\n const { _scrollbar: horizontalScrollbar } = horizontalScrollbarStructure;\r\n const { _scrollbar: verticalScrollbar } = verticalScrollbarStructure;\r\n\r\n appendChildren(evaluatedScrollbarSlot, horizontalScrollbar);\r\n appendChildren(evaluatedScrollbarSlot, verticalScrollbar);\r\n\r\n return {\r\n _horizontalScrollbarStructure: horizontalScrollbarStructure,\r\n _verticalScrollbarStructure: verticalScrollbarStructure,\r\n _destroy() {\r\n removeElements([horizontalScrollbar, verticalScrollbar]);\r\n },\r\n };\r\n};\r\n","import {\r\n Cache,\r\n CacheValues,\r\n createCache,\r\n createDOM,\r\n style,\r\n appendChildren,\r\n offsetSize,\r\n scrollLeft,\r\n scrollTop,\r\n runEach,\r\n prependChildren,\r\n removeElements,\r\n on,\r\n stopAndPrevent,\r\n addClass,\r\n equalWH,\r\n push,\r\n cAF,\r\n rAF,\r\n ResizeObserverConstructor,\r\n isArray,\r\n isBoolean,\r\n removeClass,\r\n isObject,\r\n} from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport {\r\n classNameSizeObserver,\r\n classNameSizeObserverAppear,\r\n classNameSizeObserverListener,\r\n classNameSizeObserverListenerScroll,\r\n classNameSizeObserverListenerItem,\r\n classNameSizeObserverListenerItemFinal,\r\n} from 'classnames';\r\n\r\nexport interface SizeObserverOptions {\r\n _direction?: boolean;\r\n _appear?: boolean;\r\n}\r\n\r\nexport interface SizeObserverCallbackParams {\r\n _sizeChanged: boolean;\r\n _directionIsRTLCache?: CacheValues;\r\n _appear?: boolean;\r\n}\r\n\r\nexport interface SizeObserver {\r\n _destroy(): void;\r\n _getCurrentCacheValues(\r\n force?: boolean\r\n ): {\r\n _directionIsRTL: CacheValues;\r\n };\r\n}\r\n\r\nconst animationStartEventName = 'animationstart';\r\nconst scrollEventName = 'scroll';\r\nconst scrollAmount = 3333333;\r\nconst getElmDirectionIsRTL = (elm: HTMLElement): boolean => style(elm, 'direction') === 'rtl';\r\nconst domRectHasDimensions = (rect?: DOMRectReadOnly) => rect && (rect.height || rect.width);\r\n\r\n/**\r\n * Creates a size observer which observes any size, padding, border, margin and box-sizing changes of the target element. Depending on the options also direction and appear can be observed.\r\n * @param target The target element which shall be observed.\r\n * @param onSizeChangedCallback The callback which gets called after a size change was detected.\r\n * @param options The options for size detection, whether to observe also direction and appear.\r\n * @returns A object which represents the instance of the size observer.\r\n */\r\nexport const createSizeObserver = (\r\n target: HTMLElement,\r\n onSizeChangedCallback: (params: SizeObserverCallbackParams) => any,\r\n options?: SizeObserverOptions\r\n): SizeObserver => {\r\n const { _direction: observeDirectionChange = false, _appear: observeAppearChange = false } =\r\n options || {};\r\n const { _rtlScrollBehavior: rtlScrollBehavior } = getEnvironment();\r\n const baseElements = createDOM(\r\n `
`\r\n );\r\n const sizeObserver = baseElements[0] as HTMLElement;\r\n const listenerElement = sizeObserver.firstChild as HTMLElement;\r\n const getIsDirectionRTL = getElmDirectionIsRTL.bind(0, sizeObserver);\r\n const [updateResizeObserverContentRectCache] = createCache<\r\n DOMRectReadOnly | undefined,\r\n DOMRectReadOnly\r\n >(0, {\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 0,\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(getIsDirectionRTL, {\r\n _initialValue: !getIsDirectionRTL(), // invert current value to trigger initial change\r\n });\r\n const [updateDirectionIsRTLCache] = directionIsRTLCache;\r\n\r\n push(\r\n offListeners,\r\n on(sizeObserver, scrollEventName, (event: Event) => {\r\n const directionIsRTLCacheValues = updateDirectionIsRTLCache();\r\n const [directionIsRTL, directionIsRTLChanged] = directionIsRTLCacheValues;\r\n\r\n if (directionIsRTLChanged) {\r\n removeClass(listenerElement, 'ltr rtl');\r\n if (directionIsRTL) {\r\n addClass(listenerElement, 'rtl');\r\n } else {\r\n addClass(listenerElement, 'ltr');\r\n }\r\n onSizeChangedCallbackProxy(directionIsRTLCacheValues);\r\n }\r\n\r\n stopAndPrevent(event);\r\n })\r\n );\r\n }\r\n\r\n // appearCallback is always needed on scroll-observer strategy to reset it\r\n if (appearCallback) {\r\n addClass(sizeObserver, classNameSizeObserverAppear);\r\n push(\r\n offListeners,\r\n on(sizeObserver, animationStartEventName, appearCallback, {\r\n // Fire only once for \"CSS is ready\" event if ResizeObserver strategy is used\r\n _once: !!ResizeObserverConstructor,\r\n })\r\n );\r\n }\r\n\r\n prependChildren(target, sizeObserver);\r\n\r\n return {\r\n _destroy() {\r\n runEach(offListeners);\r\n removeElements(sizeObserver);\r\n },\r\n _getCurrentCacheValues(force?: boolean) {\r\n return {\r\n _directionIsRTL: directionIsRTLCache\r\n ? directionIsRTLCache[1](force) // get current cache values\r\n : [false, false, false],\r\n };\r\n },\r\n };\r\n};\r\n","import {\r\n WH,\r\n CacheValues,\r\n createDiv,\r\n offsetSize,\r\n runEach,\r\n prependChildren,\r\n removeElements,\r\n createCache,\r\n push,\r\n IntersectionObserverConstructor,\r\n} from 'support';\r\nimport { createSizeObserver } from 'observers/sizeObserver';\r\nimport { classNameTrinsicObserver } from 'classnames';\r\n\r\nexport interface TrinsicObserver {\r\n _destroy(): void;\r\n _getCurrentCacheValues(\r\n force?: boolean\r\n ): {\r\n _heightIntrinsic: CacheValues;\r\n };\r\n}\r\n\r\n/**\r\n * Creates a trinsic observer which observes changes to intrinsic or extrinsic sizing for the height of the target element.\r\n * @param target The element which shall be observed.\r\n * @param onTrinsicChangedCallback The callback which gets called after a change was detected.\r\n * @returns A object which represents the instance of the trinsic observer.\r\n */\r\nexport const createTrinsicObserver = (\r\n target: HTMLElement,\r\n onTrinsicChangedCallback: (heightIntrinsic: CacheValues) => any\r\n): TrinsicObserver => {\r\n const trinsicObserver = createDiv(classNameTrinsicObserver);\r\n const offListeners: (() => void)[] = [];\r\n const [updateHeightIntrinsicCache, getCurrentHeightIntrinsicCache] = createCache<\r\n boolean,\r\n IntersectionObserverEntry | WH\r\n >(\r\n (ioEntryOrSize: IntersectionObserverEntry | WH) =>\r\n (ioEntryOrSize! as WH).h === 0 ||\r\n (ioEntryOrSize! as IntersectionObserverEntry).isIntersecting ||\r\n (ioEntryOrSize! as IntersectionObserverEntry).intersectionRatio > 0,\r\n {\r\n _initialValue: false,\r\n }\r\n );\r\n\r\n const triggerOnTrinsicChangedCallback = (\r\n updateValue?: IntersectionObserverEntry | WH\r\n ) => {\r\n if (updateValue) {\r\n const heightIntrinsic = updateHeightIntrinsicCache(0, updateValue);\r\n const [, heightIntrinsicChanged] = heightIntrinsic;\r\n\r\n if (heightIntrinsicChanged) {\r\n onTrinsicChangedCallback(heightIntrinsic);\r\n }\r\n }\r\n };\r\n\r\n if (IntersectionObserverConstructor) {\r\n const intersectionObserverInstance: IntersectionObserver = new IntersectionObserverConstructor(\r\n (entries: IntersectionObserverEntry[]) => {\r\n if (entries && entries.length > 0) {\r\n triggerOnTrinsicChangedCallback(entries.pop());\r\n }\r\n },\r\n { root: target }\r\n );\r\n intersectionObserverInstance.observe(trinsicObserver);\r\n push(offListeners, () => {\r\n intersectionObserverInstance.disconnect();\r\n });\r\n } else {\r\n const onSizeChanged = () => {\r\n const newSize = offsetSize(trinsicObserver);\r\n triggerOnTrinsicChangedCallback(newSize);\r\n };\r\n push(offListeners, createSizeObserver(trinsicObserver, onSizeChanged)._destroy);\r\n onSizeChanged();\r\n }\r\n\r\n prependChildren(target, trinsicObserver);\r\n\r\n return {\r\n _destroy() {\r\n runEach(offListeners);\r\n removeElements(trinsicObserver);\r\n },\r\n _getCurrentCacheValues(force?: boolean) {\r\n return {\r\n _heightIntrinsic: getCurrentHeightIntrinsicCache(force),\r\n };\r\n },\r\n };\r\n};\r\n","import { each, noop, debounce, indexOf, isString, MutationObserverConstructor, isEmptyArray, on, attr, is, find, push } from 'support';\r\n\r\ntype DOMContentObserverCallback = (contentChangedTroughEvent: boolean) => any;\r\n\r\ntype DOMTargetObserverCallback = (targetChangedAttrs: string[], targetStyleChanged: boolean) => any;\r\n\r\ninterface DOMObserverOptionsBase {\r\n _attributes?: string[];\r\n _styleChangingAttributes?: string[];\r\n}\r\n\r\ninterface DOMContentObserverOptions extends DOMObserverOptionsBase {\r\n _eventContentChange?: DOMObserverEventContentChange; // [selector, eventname(s) | function returning eventname(s)] -> eventnames divided by whitespaces\r\n _nestedTargetSelector?: string;\r\n _ignoreContentChange?: DOMObserverIgnoreContentChange; // function which will prevent marking certain dom changes as content change if it returns true\r\n _ignoreNestedTargetChange?: DOMObserverIgnoreTargetChange; // a function which will prevent marking certain attributes as changed on nested targets if it returns true\r\n}\r\n\r\ninterface DOMTargetObserverOptions extends DOMObserverOptionsBase {\r\n _ignoreTargetChange?: DOMObserverIgnoreTargetChange; // a function which will prevent marking certain attributes as changed if it returns true\r\n}\r\n\r\ntype ContentChangeArrayItem = [string?, string?] | null | undefined;\r\n\r\nexport type DOMObserverEventContentChange = Array | false | null | 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 ? DOMContentObserverOptions : DOMTargetObserverOptions;\r\n\r\nexport interface DOMObserver {\r\n _destroy: () => void;\r\n _update: () => void;\r\n}\r\n\r\n/**\r\n * Creates a set of helper functions to observe events of elements inside the target element.\r\n * @param target The target element of which the children elements shall be observed. (not only direct children but also nested ones)\r\n * @param eventContentChange The event content change array. (array of tuples: selector and eventname(s))\r\n * @param callback Callback which is called if one of the elements emits the corresponding event.\r\n * @returns A object which contains a set of helper functions to destroy and update the observation of elements.\r\n */\r\nconst createEventContentChange = (target: Element, callback: (...args: any) => any, eventContentChange?: DOMObserverEventContentChange) => {\r\n let map: WeakMap any]> | undefined; // weak map to prevent memory leak for detached elements\r\n let destroyed = false;\r\n const _destroy = () => {\r\n destroyed = true;\r\n };\r\n const _updateElements = (getElements?: (selector: string) => Node[]) => {\r\n if (eventContentChange) {\r\n const eventElmList = eventContentChange.reduce>((arr, item) => {\r\n if (item) {\r\n const selector = item[0];\r\n const eventNames = item[1];\r\n const elements = eventNames && selector && (getElements ? getElements(selector) : find(selector, target));\r\n\r\n if (elements && elements.length && eventNames && isString(eventNames)) {\r\n push(arr, [elements, eventNames.trim()], true);\r\n }\r\n }\r\n return arr;\r\n }, []);\r\n\r\n each(eventElmList, (item) =>\r\n each(item[0], (elm) => {\r\n const eventNames = item[1];\r\n const entry = map!.get(elm);\r\n\r\n if (entry) {\r\n const entryEventNames = entry[0];\r\n const entryOff = entry[1];\r\n\r\n // in case an already registered element is registered again, unregister the previous events\r\n if (entryEventNames === eventNames) {\r\n entryOff();\r\n }\r\n }\r\n\r\n const off = on(elm, eventNames, (event: Event) => {\r\n if (destroyed) {\r\n off();\r\n map!.delete(elm);\r\n } else {\r\n callback(event);\r\n }\r\n });\r\n map!.set(elm, [eventNames, off]);\r\n })\r\n );\r\n }\r\n };\r\n\r\n if (eventContentChange) {\r\n map = new WeakMap();\r\n _updateElements();\r\n }\r\n\r\n return {\r\n _destroy,\r\n _updateElements,\r\n };\r\n};\r\n\r\n/**\r\n * Creates a DOM observer which observes DOM changes to either the target element or its children.\r\n * @param target The element which shall be observed.\r\n * @param isContentObserver Whether this observer is just observing the target or just the targets children. (not only direct children but also nested ones)\r\n * @param callback The callback which gets called if a change was detected.\r\n * @param options The options for DOM change detection.\r\n * @returns A object which represents the instance of the DOM observer.\r\n */\r\nexport const createDOMObserver = (\r\n target: HTMLElement,\r\n isContentObserver: ContentObserver,\r\n callback: DOMObserverCallback,\r\n options?: DOMObserverOptions\r\n): DOMObserver => {\r\n let isConnected = false;\r\n const {\r\n _attributes,\r\n _styleChangingAttributes,\r\n _eventContentChange,\r\n _nestedTargetSelector,\r\n _ignoreTargetChange,\r\n _ignoreNestedTargetChange,\r\n _ignoreContentChange,\r\n } = (options as DOMContentObserverOptions & DOMTargetObserverOptions) || {};\r\n const { _destroy: destroyEventContentChange, _updateElements: 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 = (isContentObserver ? _ignoreNestedTargetChange : _ignoreTargetChange) || noop;\r\n const ignoreContentChange = _ignoreContentChange || noop;\r\n const targetChangedAttrs: string[] = [];\r\n const totalAddedNodes: Node[] = [];\r\n let targetStyleChanged = false;\r\n let contentChanged = false;\r\n let childListChanged = false;\r\n each(mutations, (mutation) => {\r\n const { attributeName, target: mutationTarget, type, oldValue, addedNodes } = mutation;\r\n const isAttributesType = type === 'attributes';\r\n const isChildListType = type === 'childList';\r\n const targetIsMutationTarget = target === mutationTarget;\r\n const attributeValue = isAttributesType && isString(attributeName) ? attr(mutationTarget as HTMLElement, attributeName!) : 0;\r\n const attributeChanged = attributeValue !== 0 && oldValue !== attributeValue;\r\n const styleChangingAttrChanged = 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 = contentAttrChanged && _nestedTargetSelector && is(mutationTarget, _nestedTargetSelector);\r\n const baseAssertion = isNestedTarget\r\n ? !ignoreTargetChange(mutationTarget, attributeName!, oldValue, attributeValue as string | null)\r\n : notOnlyAttrChanged || contentAttrChanged;\r\n const contentFinalChanged = 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 as string | null)\r\n ) {\r\n push(targetChangedAttrs, attributeName!);\r\n targetStyleChanged = targetStyleChanged || styleChangingAttrChanged;\r\n }\r\n });\r\n\r\n if (childListChanged && !isEmptyArray(totalAddedNodes)) {\r\n // adds / removes the new elements from the event content change\r\n updateEventContentChangeElements((selector) =>\r\n totalAddedNodes.reduce((arr, node) => {\r\n push(arr, find(selector, node));\r\n return is(node, selector) ? push(arr, node) : arr;\r\n }, [])\r\n );\r\n }\r\n\r\n if (isContentObserver) {\r\n contentChanged && (callback as DOMContentObserverCallback)(false);\r\n } else if (!isEmptyArray(targetChangedAttrs) || targetStyleChanged) {\r\n (callback as DOMTargetObserverCallback)(targetChangedAttrs, targetStyleChanged);\r\n }\r\n };\r\n const mutationObserver: MutationObserver = new MutationObserverConstructor!(observerCallback);\r\n\r\n // Connect\r\n mutationObserver.observe(target, {\r\n attributes: true,\r\n attributeOldValue: true,\r\n attributeFilter: observedAttributes,\r\n subtree: isContentObserver,\r\n childList: isContentObserver,\r\n characterData: isContentObserver,\r\n });\r\n isConnected = true;\r\n\r\n return {\r\n _destroy: () => {\r\n if (isConnected) {\r\n destroyEventContentChange();\r\n mutationObserver.disconnect();\r\n isConnected = false;\r\n }\r\n },\r\n _update: () => {\r\n if (isConnected) {\r\n observerCallback(mutationObserver.takeRecords());\r\n }\r\n },\r\n };\r\n};\r\n","import {\r\n CacheValues,\r\n diffClass,\r\n debounce,\r\n isArray,\r\n isNumber,\r\n each,\r\n indexOf,\r\n isString,\r\n attr,\r\n removeAttr,\r\n} from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport { createSizeObserver, SizeObserverCallbackParams } from 'observers/sizeObserver';\r\nimport { createTrinsicObserver } from 'observers/trinsicObserver';\r\nimport { createDOMObserver, DOMObserver } from 'observers/domObserver';\r\nimport { LifecycleHub, LifecycleCheckOption, LifecycleUpdateHints } from 'lifecycles/lifecycleHub';\r\n\r\n// const hostSelector = `.${classNameHost}`;\r\n\r\n// TODO: observer textarea attrs if textarea\r\n// TODO: test _ignoreContentChange & _ignoreNestedTargetChange for content dom observer\r\n// TODO: test _ignoreTargetChange for target dom observer\r\n\r\n// const viewportSelector = `.${classNameViewport}`;\r\n// const contentSelector = `.${classNameContent}`;\r\nconst ignorePrefix = 'os-';\r\nconst viewportAttrsFromTarget = ['tabindex'];\r\nconst baseStyleChangingAttrsTextarea = ['wrap', 'cols', 'rows'];\r\nconst baseStyleChangingAttrs = ['id', 'class', 'style', 'open'];\r\n\r\nconst ignoreTargetChange = (\r\n target: Node,\r\n attrName: string,\r\n oldValue: string | null,\r\n newValue: string | null\r\n) => {\r\n if (attrName === 'class' && oldValue && newValue) {\r\n const diff = diffClass(oldValue, newValue);\r\n return !!diff.find((addedOrRemovedClass) => addedOrRemovedClass.indexOf(ignorePrefix) !== 0);\r\n }\r\n return false;\r\n};\r\n\r\nexport const lifecycleHubOservers = (\r\n instance: LifecycleHub,\r\n updateLifecycles: (updateHints?: Partial | null) => unknown\r\n) => {\r\n let debounceTimeout: number | false | undefined;\r\n let debounceMaxDelay: number | false | undefined;\r\n let contentMutationObserver: DOMObserver | undefined;\r\n const { _structureSetup } = instance;\r\n const { _targetObj, _targetCtx } = _structureSetup;\r\n const { _host, _viewport, _content } = _targetObj;\r\n const { _isTextarea } = _targetCtx;\r\n const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment();\r\n const contentMutationObserverAttr = _isTextarea\r\n ? baseStyleChangingAttrsTextarea\r\n : baseStyleChangingAttrs.concat(baseStyleChangingAttrsTextarea);\r\n const updateLifecyclesWithDebouncedAdaptiveUpdateHints = debounce(\r\n updateLifecycles as (updateHints: Partial) => any,\r\n {\r\n _timeout: () => debounceTimeout,\r\n _maxDelay: () => debounceMaxDelay,\r\n _mergeParams(prev, curr) {\r\n const {\r\n _sizeChanged: prevSizeChanged,\r\n _hostMutation: prevHostMutation,\r\n _contentMutation: prevContentMutation,\r\n } = prev[0];\r\n const {\r\n _sizeChanged: currSizeChanged,\r\n _hostMutation: currvHostMutation,\r\n _contentMutation: currContentMutation,\r\n } = curr[0];\r\n const merged: [Partial] = [\r\n {\r\n _sizeChanged: prevSizeChanged || currSizeChanged,\r\n _hostMutation: prevHostMutation || currvHostMutation,\r\n _contentMutation: prevContentMutation || currContentMutation,\r\n },\r\n ];\r\n\r\n return merged;\r\n },\r\n }\r\n );\r\n\r\n const updateViewportAttrsFromHost = (attributes?: string[]) => {\r\n each(attributes || viewportAttrsFromTarget, (attribute) => {\r\n if (indexOf(viewportAttrsFromTarget, attribute) > -1) {\r\n const hostAttr = attr(_host, attribute);\r\n if (isString(hostAttr)) {\r\n attr(_viewport, attribute, hostAttr);\r\n } else {\r\n removeAttr(_viewport, attribute);\r\n }\r\n }\r\n });\r\n };\r\n const onTrinsicChanged = (heightIntrinsic: CacheValues) => {\r\n updateLifecycles({\r\n _heightIntrinsic: heightIntrinsic,\r\n });\r\n };\r\n const onSizeChanged = ({\r\n _sizeChanged,\r\n _directionIsRTLCache,\r\n _appear,\r\n }: SizeObserverCallbackParams) => {\r\n const updateFn =\r\n !_sizeChanged || _appear\r\n ? updateLifecycles\r\n : updateLifecyclesWithDebouncedAdaptiveUpdateHints;\r\n updateFn({\r\n _sizeChanged,\r\n _directionIsRTL: _directionIsRTLCache,\r\n });\r\n };\r\n const onContentMutation = (contentChangedTroughEvent: boolean) => {\r\n // if contentChangedTroughEvent is true its already debounced\r\n const updateFn = contentChangedTroughEvent\r\n ? updateLifecycles\r\n : updateLifecyclesWithDebouncedAdaptiveUpdateHints;\r\n updateFn({\r\n _contentMutation: true,\r\n });\r\n };\r\n const onHostMutation = (targetChangedAttrs: string[], targetStyleChanged: boolean) => {\r\n if (targetStyleChanged) {\r\n updateLifecyclesWithDebouncedAdaptiveUpdateHints({\r\n _hostMutation: true,\r\n });\r\n } else {\r\n updateViewportAttrsFromHost(targetChangedAttrs);\r\n }\r\n };\r\n\r\n const trinsicObserver =\r\n (_content || !_flexboxGlue) && createTrinsicObserver(_host, onTrinsicChanged);\r\n const sizeObserver = createSizeObserver(_host, onSizeChanged, {\r\n _appear: true,\r\n _direction: !_nativeScrollbarStyling,\r\n });\r\n const hostMutationObserver = createDOMObserver(_host, false, onHostMutation, {\r\n _styleChangingAttributes: baseStyleChangingAttrs,\r\n _attributes: baseStyleChangingAttrs.concat(viewportAttrsFromTarget),\r\n _ignoreTargetChange: ignoreTargetChange,\r\n });\r\n\r\n const updateOptions = (checkOption: LifecycleCheckOption) => {\r\n const [elementEvents, elementEventsChanged] = checkOption | null>(\r\n 'updating.elementEvents'\r\n );\r\n const [attributes, attributesChanged] = checkOption('updating.attributes');\r\n const [debounceValue, debounceChanged] = checkOption | number | null>(\r\n 'updating.debounce'\r\n );\r\n const updateContentMutationObserver = elementEventsChanged || attributesChanged;\r\n\r\n if (updateContentMutationObserver) {\r\n if (contentMutationObserver) {\r\n contentMutationObserver._update();\r\n contentMutationObserver._destroy();\r\n }\r\n contentMutationObserver = createDOMObserver(_content || _viewport, true, onContentMutation, {\r\n _styleChangingAttributes: contentMutationObserverAttr.concat(attributes || []),\r\n _attributes: contentMutationObserverAttr.concat(attributes || []),\r\n _eventContentChange: elementEvents,\r\n _ignoreNestedTargetChange: ignoreTargetChange,\r\n // _nestedTargetSelector: hostSelector,\r\n /*\r\n _ignoreContentChange: (mutation, isNestedTarget) => {\r\n const { target, attributeName } = mutation;\r\n return isNestedTarget\r\n ? false\r\n : attributeName\r\n ? liesBetween(target as Element, hostSelector, viewportSelector) || liesBetween(target as Element, hostSelector, contentSelector)\r\n : false;\r\n },\r\n */\r\n });\r\n }\r\n\r\n if (debounceChanged) {\r\n updateLifecyclesWithDebouncedAdaptiveUpdateHints._flush();\r\n if (isArray(debounceValue)) {\r\n const timeout = debounceValue[0];\r\n const maxWait = debounceValue[1];\r\n debounceTimeout = isNumber(timeout) ? timeout : false;\r\n debounceMaxDelay = isNumber(maxWait) ? maxWait : false;\r\n } else if (isNumber(debounceValue)) {\r\n debounceTimeout = debounceValue;\r\n debounceMaxDelay = false;\r\n } else {\r\n debounceTimeout = false;\r\n debounceMaxDelay = false;\r\n }\r\n }\r\n };\r\n\r\n updateViewportAttrsFromHost();\r\n\r\n return {\r\n _trinsicObserver: trinsicObserver,\r\n _sizeObserver: sizeObserver,\r\n _updateObserverOptions: updateOptions,\r\n _destroy() {\r\n contentMutationObserver && contentMutationObserver._destroy();\r\n trinsicObserver && trinsicObserver._destroy();\r\n sizeObserver._destroy();\r\n hostMutationObserver._destroy();\r\n },\r\n };\r\n};\r\n","import { style } from 'support';\r\nimport { LifecycleHub, Lifecycle } from 'lifecycles/lifecycleHub';\r\n\r\n/**\r\n * Lifecycle with the responsibility to adjust the trinsic behavior of the content element.\r\n * @param lifecycleHub\r\n * @returns\r\n */\r\nexport const createTrinsicLifecycle = (lifecycleHub: LifecycleHub): Lifecycle => {\r\n const { _structureSetup } = lifecycleHub;\r\n const { _content } = _structureSetup._targetObj;\r\n\r\n return (updateHints) => {\r\n const { _heightIntrinsic } = updateHints;\r\n const [heightIntrinsic, heightIntrinsicChanged] = _heightIntrinsic;\r\n\r\n if (heightIntrinsicChanged) {\r\n style(_content, {\r\n height: heightIntrinsic ? '' : '100%',\r\n display: heightIntrinsic ? '' : 'inline',\r\n });\r\n }\r\n\r\n return {\r\n _sizeChanged: heightIntrinsicChanged,\r\n _contentMutation: heightIntrinsicChanged,\r\n };\r\n };\r\n};\r\n","import { createCache, topRightBottomLeft, equalTRBL, style, TRBL } from 'support';\r\nimport { LifecycleHub, Lifecycle } from 'lifecycles/lifecycleHub';\r\nimport { StyleObject } from 'typings';\r\nimport { getEnvironment } from 'environment';\r\n\r\n/**\r\n * Lifecycle with the responsibility to adjust the padding styling of the padding and viewport element.\r\n * @param lifecycleHub\r\n * @returns\r\n */\r\nexport const createPaddingLifecycle = (lifecycleHub: LifecycleHub): Lifecycle => {\r\n const { _structureSetup, _setLifecycleCommunication } = lifecycleHub;\r\n const { _host, _padding, _viewport } = _structureSetup._targetObj;\r\n const [updatePaddingCache, currentPaddingCache] = createCache(\r\n topRightBottomLeft.bind(0, _host, 'padding'),\r\n {\r\n _equal: equalTRBL,\r\n _initialValue: topRightBottomLeft(),\r\n }\r\n );\r\n\r\n return (updateHints, checkOption, force) => {\r\n let [padding, paddingChanged] = currentPaddingCache(force);\r\n const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment();\r\n const { _sizeChanged, _directionIsRTL, _contentMutation } = updateHints;\r\n const [directionIsRTL, directionChanged] = _directionIsRTL;\r\n const [paddingAbsolute, paddingAbsoluteChanged] = checkOption('paddingAbsolute');\r\n const contentMutation = !_flexboxGlue && _contentMutation;\r\n\r\n if (_sizeChanged || paddingChanged || contentMutation) {\r\n [padding, paddingChanged] = updatePaddingCache(force);\r\n }\r\n\r\n const paddingStyleChanged = paddingAbsoluteChanged || directionChanged || paddingChanged;\r\n\r\n if (paddingStyleChanged) {\r\n // if there is no padding element and no scrollbar styling, paddingAbsolute isn't supported\r\n const paddingRelative = !paddingAbsolute || (!_padding && !_nativeScrollbarStyling);\r\n const paddingHorizontal = padding!.r + padding!.l;\r\n const paddingVertical = padding!.t + padding!.b;\r\n\r\n const paddingStyle: StyleObject = {\r\n marginRight: paddingRelative && !directionIsRTL ? -paddingHorizontal : 0,\r\n marginBottom: paddingRelative ? -paddingVertical : 0,\r\n marginLeft: paddingRelative && directionIsRTL ? -paddingHorizontal : 0,\r\n top: paddingRelative ? -padding!.t : 0,\r\n right: paddingRelative ? (directionIsRTL ? -padding!.r : 'auto') : 0,\r\n left: paddingRelative ? (directionIsRTL ? 'auto' : -padding!.l) : 0,\r\n width: paddingRelative ? `calc(100% + ${paddingHorizontal}px)` : '',\r\n };\r\n const viewportStyle: StyleObject = {\r\n paddingTop: paddingRelative ? padding!.t : 0,\r\n paddingRight: paddingRelative ? padding!.r : 0,\r\n paddingBottom: paddingRelative ? padding!.b : 0,\r\n paddingLeft: paddingRelative ? padding!.l : 0,\r\n };\r\n\r\n // if there is no padding element apply the style to the viewport element instead\r\n style(_padding || _viewport, paddingStyle);\r\n style(_viewport, viewportStyle);\r\n\r\n _setLifecycleCommunication({\r\n _paddingInfo: {\r\n _absolute: !paddingRelative,\r\n _padding: padding!,\r\n },\r\n _viewportPaddingStyle: _padding\r\n ? viewportStyle\r\n : {\r\n ...paddingStyle,\r\n ...viewportStyle,\r\n },\r\n });\r\n }\r\n\r\n return {\r\n _paddingStyleChanged: paddingStyleChanged,\r\n };\r\n };\r\n};\r\n","import {\r\n createCache,\r\n keys,\r\n attr,\r\n WH,\r\n XY,\r\n style,\r\n scrollSize,\r\n CacheValues,\r\n equalWH,\r\n addClass,\r\n removeClass,\r\n clientSize,\r\n offsetSize,\r\n getBoundingClientRect,\r\n noop,\r\n each,\r\n} from 'support';\r\nimport { LifecycleHub, Lifecycle } from 'lifecycles/lifecycleHub';\r\nimport { getEnvironment } from 'environment';\r\nimport { OverflowBehavior } from 'options';\r\nimport { StyleObject } from 'typings';\r\nimport { classNameViewportArrange, classNameViewportScrollbarStyling } from 'classnames';\r\n\r\ninterface OverflowAmountCacheContext {\r\n _viewportScrollSize: WH;\r\n _viewportClientSize: WH;\r\n _viewportSizeFraction: WH;\r\n}\r\n\r\ninterface ViewportOverflowState {\r\n _scrollbarsHideOffset: XY;\r\n _scrollbarsHideOffsetArrange: XY;\r\n _overflowScroll: XY;\r\n}\r\n\r\ninterface UndoViewportArrangeResult {\r\n _redoViewportArrange: () => void;\r\n _viewportOverflowState?: ViewportOverflowState;\r\n}\r\n\r\ninterface OverflowOption {\r\n x: OverflowBehavior;\r\n y: OverflowBehavior;\r\n}\r\n\r\nconst { max, abs, round } = Math;\r\nconst overlaidScrollbarsHideOffset = 42;\r\nconst whCacheOptions = {\r\n _equal: equalWH,\r\n _initialValue: { w: 0, h: 0 },\r\n};\r\nconst sizeFraction = (elm: HTMLElement): WH => {\r\n const viewportOffsetSize = offsetSize(elm);\r\n const viewportRect = getBoundingClientRect(elm);\r\n return {\r\n w: viewportRect.width - viewportOffsetSize.w,\r\n h: viewportRect.height - viewportOffsetSize.h,\r\n };\r\n};\r\nconst fractionalPixelRatioTollerance = () => (window.devicePixelRatio % 1 === 0 ? 0 : 1);\r\nconst setAxisOverflowStyle = (\r\n horizontal: boolean,\r\n overflowAmount: number,\r\n behavior: OverflowBehavior,\r\n styleObj: StyleObject\r\n) => {\r\n const overflowKey: keyof StyleObject = horizontal ? 'overflowX' : 'overflowY';\r\n const behaviorIsVisible = behavior.indexOf('visible') === 0;\r\n const behaviorIsVisibleHidden = behavior === 'visible-hidden';\r\n const behaviorIsScroll = behavior === 'scroll';\r\n const hasOverflow = overflowAmount > 0;\r\n\r\n if (behaviorIsVisible) {\r\n styleObj[overflowKey] = 'visible';\r\n }\r\n if (behaviorIsScroll && hasOverflow) {\r\n styleObj[overflowKey] = behavior;\r\n }\r\n\r\n return {\r\n _visible: behaviorIsVisible,\r\n _behavior: behaviorIsVisibleHidden ? 'hidden' : 'scroll',\r\n };\r\n};\r\n\r\n/**\r\n * Lifecycle with the responsibility to set the correct overflow and scrollbar hiding styles of the viewport element.\r\n * @param lifecycleHub\r\n * @returns\r\n */\r\nexport const createOverflowLifecycle = (lifecycleHub: LifecycleHub): Lifecycle => {\r\n const {\r\n _structureSetup,\r\n _doViewportArrange,\r\n _getLifecycleCommunication,\r\n _setLifecycleCommunication,\r\n } = lifecycleHub;\r\n\r\n const { _host, _viewport, _viewportArrange } = _structureSetup._targetObj;\r\n\r\n const [updateViewportSizeFraction, getCurrentViewportSizeFraction] = createCache>(\r\n sizeFraction.bind(0, _viewport),\r\n whCacheOptions\r\n );\r\n\r\n const [updateViewportScrollSizeCache, getCurrentViewportScrollSizeCache] = createCache<\r\n WH\r\n >(scrollSize.bind(0, _viewport), whCacheOptions);\r\n\r\n const [updateOverflowAmountCache, getCurrentOverflowAmountCache] = createCache<\r\n WH,\r\n OverflowAmountCacheContext\r\n >(\r\n ({ _viewportScrollSize, _viewportClientSize, _viewportSizeFraction }) => ({\r\n w: max(\r\n 0,\r\n round(\r\n max(0, _viewportScrollSize.w - _viewportClientSize.w) -\r\n (fractionalPixelRatioTollerance() || max(0, _viewportSizeFraction.w))\r\n )\r\n ),\r\n h: max(\r\n 0,\r\n round(\r\n max(0, _viewportScrollSize.h - _viewportClientSize.h) -\r\n (fractionalPixelRatioTollerance() || max(0, _viewportSizeFraction.h))\r\n )\r\n ),\r\n }),\r\n whCacheOptions\r\n );\r\n\r\n /**\r\n * Applies a fixed height to the viewport so it can't overflow or underflow the host element.\r\n * @param viewportOverflowState The current overflow state.\r\n * @param heightIntrinsic Whether the host height is intrinsic or not.\r\n */\r\n const fixFlexboxGlue = (\r\n viewportOverflowState: ViewportOverflowState,\r\n heightIntrinsic: boolean\r\n ) => {\r\n style(_viewport, {\r\n height: '',\r\n });\r\n\r\n if (heightIntrinsic) {\r\n const { _nativeScrollbarIsOverlaid } = getEnvironment();\r\n const {\r\n _absolute: paddingAbsolute,\r\n _padding: padding,\r\n } = _getLifecycleCommunication()._paddingInfo;\r\n const { _overflowScroll, _scrollbarsHideOffset } = viewportOverflowState;\r\n const hostSizeFraction = sizeFraction(_host);\r\n const hostClientSize = clientSize(_host);\r\n // padding subtraction is only needed if padding is absolute or if viewport is content-box\r\n const isContentBox = style(_viewport, 'boxSizing') === 'content-box';\r\n const paddingVertical = paddingAbsolute || isContentBox ? padding.b + padding.t : 0;\r\n const fractionalClientHeight =\r\n hostClientSize.h + (abs(hostSizeFraction.h) < 1 ? hostSizeFraction.h : 0);\r\n const subtractXScrollbar = !(_nativeScrollbarIsOverlaid.x && isContentBox);\r\n\r\n style(_viewport, {\r\n height:\r\n fractionalClientHeight +\r\n (_overflowScroll.x && subtractXScrollbar ? _scrollbarsHideOffset.x : 0) -\r\n paddingVertical,\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Gets the current overflow state of the viewport.\r\n * @param showNativeOverlaidScrollbars Whether native overlaid scrollbars are shown instead of hidden.\r\n * @param viewportStyleObj The viewport style object where the overflow scroll property can be read of, or undefined if shall be determined.\r\n * @returns A object which contains informations about the current overflow state.\r\n */\r\n const getViewportOverflowState = (\r\n showNativeOverlaidScrollbars: boolean,\r\n viewportStyleObj?: StyleObject\r\n ): ViewportOverflowState => {\r\n const {\r\n _nativeScrollbarSize,\r\n _nativeScrollbarIsOverlaid,\r\n _nativeScrollbarStyling,\r\n } = getEnvironment();\r\n const { x: overlaidX, y: overlaidY } = _nativeScrollbarIsOverlaid;\r\n const determineOverflow = !viewportStyleObj;\r\n const arrangeHideOffset =\r\n !_nativeScrollbarStyling && !showNativeOverlaidScrollbars ? overlaidScrollbarsHideOffset : 0;\r\n const styleObj = determineOverflow\r\n ? style(_viewport, ['overflowX', 'overflowY'])\r\n : viewportStyleObj;\r\n const scroll = {\r\n x: styleObj!.overflowX === 'scroll',\r\n y: styleObj!.overflowY === 'scroll',\r\n };\r\n const scrollbarsHideOffset = {\r\n x:\r\n scroll.x && !_nativeScrollbarStyling\r\n ? overlaidX\r\n ? arrangeHideOffset\r\n : _nativeScrollbarSize.x\r\n : 0,\r\n y:\r\n scroll.y && !_nativeScrollbarStyling\r\n ? overlaidY\r\n ? arrangeHideOffset\r\n : _nativeScrollbarSize.y\r\n : 0,\r\n };\r\n\r\n return {\r\n _overflowScroll: scroll,\r\n _scrollbarsHideOffsetArrange: {\r\n x: overlaidX && !!arrangeHideOffset,\r\n y: overlaidY && !!arrangeHideOffset,\r\n },\r\n _scrollbarsHideOffset: scrollbarsHideOffset,\r\n };\r\n };\r\n\r\n /**\r\n * Sets the overflow property of the viewport and calculates the a overflow state according to the new parameters.\r\n * @param showNativeOverlaidScrollbars Whether to show natively overlaid scrollbars.\r\n * @param overflowAmount The overflow amount.\r\n * @param overflow The overflow behavior according to the options.\r\n * @param viewportStyleObj The viewport style object to which the overflow style shall be applied.\r\n * @returns A object which represents the newly set overflow state.\r\n */\r\n const setViewportOverflowState = (\r\n showNativeOverlaidScrollbars: boolean,\r\n overflowAmount: WH,\r\n overflow: OverflowOption,\r\n viewportStyleObj: StyleObject\r\n ): ViewportOverflowState => {\r\n const { _visible: xVisible, _behavior: xVisibleBehavior } = setAxisOverflowStyle(\r\n true,\r\n overflowAmount!.w,\r\n overflow.x,\r\n viewportStyleObj\r\n );\r\n const { _visible: yVisible, _behavior: yVisibleBehavior } = setAxisOverflowStyle(\r\n false,\r\n overflowAmount!.h,\r\n overflow.y,\r\n viewportStyleObj\r\n );\r\n\r\n if (xVisible && !yVisible) {\r\n viewportStyleObj.overflowX = xVisibleBehavior;\r\n }\r\n if (yVisible && !xVisible) {\r\n viewportStyleObj.overflowY = yVisibleBehavior;\r\n }\r\n\r\n return getViewportOverflowState(showNativeOverlaidScrollbars, viewportStyleObj);\r\n };\r\n\r\n /**\r\n * Sets the styles of the viewport arrange element.\r\n * @param viewportOverflowState The viewport overflow state according to which the scrollbars shall be hidden.\r\n * @param viewportScrollSize The content scroll size.\r\n * @param directionIsRTL Whether the direction is RTL or not.\r\n * @returns A boolean which indicates whether the viewport arrange element was adjusted.\r\n */\r\n const arrangeViewport = (\r\n viewportOverflowState: ViewportOverflowState,\r\n viewportScrollSize: WH,\r\n viewportSizeFraction: WH,\r\n directionIsRTL: boolean\r\n ) => {\r\n if (_doViewportArrange) {\r\n const { _scrollbarsHideOffset, _scrollbarsHideOffsetArrange } = viewportOverflowState;\r\n const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange;\r\n const { x: hideOffsetX, y: hideOffsetY } = _scrollbarsHideOffset;\r\n const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication();\r\n const viewportArrangeHorizontalPaddingKey: keyof StyleObject = directionIsRTL\r\n ? 'paddingRight'\r\n : 'paddingLeft';\r\n const viewportArrangeHorizontalPaddingValue = viewportPaddingStyle[\r\n viewportArrangeHorizontalPaddingKey\r\n ] as number;\r\n const viewportArrangeVerticalPaddingValue = viewportPaddingStyle.paddingTop as number;\r\n const fractionalContentWidth =\r\n viewportScrollSize.w + (abs(viewportSizeFraction.w) < 1 ? viewportSizeFraction.w : 0);\r\n const fractionalContenHeight =\r\n viewportScrollSize.h + (abs(viewportSizeFraction.h) < 1 ? viewportSizeFraction.h : 0);\r\n const arrangeSize = {\r\n w:\r\n hideOffsetY && arrangeY\r\n ? `${hideOffsetY + fractionalContentWidth - viewportArrangeHorizontalPaddingValue}px`\r\n : '',\r\n h:\r\n hideOffsetX && arrangeX\r\n ? `${hideOffsetX + fractionalContenHeight - viewportArrangeVerticalPaddingValue}px`\r\n : '',\r\n };\r\n\r\n // adjust content arrange / before element\r\n if (_viewportArrange) {\r\n const { sheet } = _viewportArrange;\r\n if (sheet) {\r\n const { cssRules } = sheet;\r\n if (cssRules) {\r\n if (!cssRules.length) {\r\n sheet.insertRule(\r\n `#${attr(_viewportArrange, 'id')} + .${classNameViewportArrange}::before {}`,\r\n 0\r\n );\r\n }\r\n\r\n // @ts-ignore\r\n const ruleStyle = cssRules[0].style;\r\n\r\n ruleStyle.width = arrangeSize.w;\r\n ruleStyle.height = arrangeSize.h;\r\n }\r\n }\r\n } else {\r\n style<'--os-vaw' | '--os-vah'>(_viewport, {\r\n '--os-vaw': arrangeSize.w,\r\n '--os-vah': arrangeSize.h,\r\n });\r\n }\r\n }\r\n\r\n return _doViewportArrange;\r\n };\r\n\r\n /**\r\n * Hides the native scrollbars according to the passed parameters.\r\n * @param viewportOverflowState The viewport overflow state.\r\n * @param directionIsRTL Whether the direction is RTL or not.\r\n * @param viewportArrange Whether special styles related to the viewport arrange strategy shall be applied.\r\n * @param viewportStyleObj The viewport style object to which the needed styles shall be applied.\r\n */\r\n const hideNativeScrollbars = (\r\n viewportOverflowState: ViewportOverflowState,\r\n directionIsRTL: boolean,\r\n viewportArrange: boolean,\r\n viewportStyleObj: StyleObject\r\n ) => {\r\n const { _scrollbarsHideOffset, _scrollbarsHideOffsetArrange } = viewportOverflowState;\r\n const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange;\r\n const { x: hideOffsetX, y: hideOffsetY } = _scrollbarsHideOffset;\r\n const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication();\r\n const horizontalMarginKey: keyof StyleObject = directionIsRTL ? 'marginLeft' : 'marginRight';\r\n const viewportHorizontalPaddingKey: keyof StyleObject = directionIsRTL\r\n ? 'paddingLeft'\r\n : 'paddingRight';\r\n const horizontalMarginValue = viewportPaddingStyle[horizontalMarginKey] as number;\r\n const verticalMarginValue = viewportPaddingStyle.marginBottom as number;\r\n const horizontalPaddingValue = viewportPaddingStyle[viewportHorizontalPaddingKey] as number;\r\n const verticalPaddingValue = viewportPaddingStyle.paddingBottom as number;\r\n\r\n // horizontal\r\n viewportStyleObj.width = `calc(100% + ${hideOffsetY + horizontalMarginValue * -1}px)`;\r\n viewportStyleObj[horizontalMarginKey] = -hideOffsetY + horizontalMarginValue;\r\n\r\n // vertical\r\n viewportStyleObj.marginBottom = -hideOffsetX + verticalMarginValue;\r\n\r\n // viewport arrange additional styles\r\n if (viewportArrange) {\r\n viewportStyleObj[viewportHorizontalPaddingKey] =\r\n horizontalPaddingValue + (arrangeY ? hideOffsetY : 0);\r\n viewportStyleObj.paddingBottom = verticalPaddingValue + (arrangeX ? hideOffsetX : 0);\r\n }\r\n };\r\n\r\n /**\r\n * Removes all styles applied because of the viewport arrange strategy.\r\n * @param showNativeOverlaidScrollbars Whether native overlaid scrollbars are shown instead of hidden.\r\n * @param directionIsRTL Whether the direction is RTL or not.\r\n * @param viewportOverflowState The currentviewport overflow state or undefined if it has to be determined.\r\n * @returns A object with a function which applies all the removed styles and the determined viewport vverflow state.\r\n */\r\n const undoViewportArrange = (\r\n showNativeOverlaidScrollbars: boolean,\r\n directionIsRTL: boolean,\r\n viewportOverflowState?: ViewportOverflowState\r\n ): UndoViewportArrangeResult => {\r\n if (_doViewportArrange) {\r\n const finalViewportOverflowState =\r\n viewportOverflowState || getViewportOverflowState(showNativeOverlaidScrollbars);\r\n const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication();\r\n const { _flexboxGlue } = getEnvironment();\r\n const { _scrollbarsHideOffsetArrange } = finalViewportOverflowState;\r\n const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange;\r\n const finalPaddingStyle: StyleObject = {};\r\n const assignProps = (props: string) =>\r\n each(props.split(' '), (prop) => {\r\n finalPaddingStyle[prop] = viewportPaddingStyle[prop];\r\n });\r\n\r\n if (!_flexboxGlue) {\r\n finalPaddingStyle.height = '';\r\n }\r\n\r\n if (arrangeX) {\r\n assignProps('marginBottom paddingTop paddingBottom');\r\n }\r\n\r\n if (arrangeY) {\r\n assignProps('marginLeft marginRight paddingLeft paddingRight');\r\n }\r\n\r\n const prevStyle = style(_viewport, keys(finalPaddingStyle));\r\n removeClass(_viewport, classNameViewportArrange);\r\n style(_viewport, finalPaddingStyle);\r\n\r\n return {\r\n _redoViewportArrange: () => {\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 _viewportOverflowState: finalViewportOverflowState,\r\n };\r\n }\r\n return {\r\n _redoViewportArrange: noop,\r\n };\r\n };\r\n\r\n return (updateHints, checkOption, force) => {\r\n const {\r\n _directionIsRTL,\r\n _heightIntrinsic,\r\n _sizeChanged,\r\n _hostMutation,\r\n _contentMutation,\r\n _paddingStyleChanged,\r\n } = updateHints;\r\n const { _flexboxGlue, _nativeScrollbarStyling, _nativeScrollbarIsOverlaid } = getEnvironment();\r\n const [heightIntrinsic, heightIntrinsicChanged] = _heightIntrinsic;\r\n const [directionIsRTL, directionChanged] = _directionIsRTL;\r\n const [showNativeOverlaidScrollbarsOption, showNativeOverlaidScrollbarsChanged] = checkOption<\r\n boolean\r\n >('nativeScrollbarsOverlaid.show');\r\n const showNativeOverlaidScrollbars =\r\n showNativeOverlaidScrollbarsOption &&\r\n _nativeScrollbarIsOverlaid.x &&\r\n _nativeScrollbarIsOverlaid.y;\r\n const adjustFlexboxGlue =\r\n !_flexboxGlue &&\r\n (_sizeChanged ||\r\n _contentMutation ||\r\n _hostMutation ||\r\n showNativeOverlaidScrollbarsChanged ||\r\n heightIntrinsicChanged);\r\n\r\n let viewportSizeFractionCache: CacheValues> = getCurrentViewportSizeFraction(force);\r\n let viewportScrollSizeCache: CacheValues> = getCurrentViewportScrollSizeCache(force);\r\n let overflowAmuntCache: CacheValues> = getCurrentOverflowAmountCache(force);\r\n let preMeasureViewportOverflowState: ViewportOverflowState | undefined;\r\n\r\n if (showNativeOverlaidScrollbarsChanged && _nativeScrollbarStyling) {\r\n if (showNativeOverlaidScrollbars) {\r\n removeClass(_viewport, classNameViewportScrollbarStyling);\r\n } else {\r\n addClass(_viewport, classNameViewportScrollbarStyling);\r\n }\r\n }\r\n\r\n if (adjustFlexboxGlue) {\r\n preMeasureViewportOverflowState = getViewportOverflowState(showNativeOverlaidScrollbars);\r\n fixFlexboxGlue(preMeasureViewportOverflowState, !!heightIntrinsic);\r\n }\r\n\r\n if (\r\n _sizeChanged ||\r\n _paddingStyleChanged ||\r\n _contentMutation ||\r\n showNativeOverlaidScrollbarsChanged ||\r\n directionChanged\r\n ) {\r\n const {\r\n _redoViewportArrange,\r\n _viewportOverflowState: undoViewportArrangeOverflowState,\r\n } = undoViewportArrange(\r\n showNativeOverlaidScrollbars,\r\n directionIsRTL!,\r\n preMeasureViewportOverflowState\r\n );\r\n const [\r\n viewportSizeFraction,\r\n viewportSizeFractionCahnged,\r\n ] = (viewportSizeFractionCache = updateViewportSizeFraction(force));\r\n const [\r\n viewportScrollSize,\r\n viewportScrollSizeChanged,\r\n ] = (viewportScrollSizeCache = updateViewportScrollSizeCache(force));\r\n const viewportContentSize = clientSize(_viewport);\r\n let arrangedViewportScrollSize = viewportScrollSize!;\r\n let arrangedViewportClientSize = viewportContentSize;\r\n\r\n _redoViewportArrange();\r\n\r\n // if re measure is required (only required if content arrange strategy is used)\r\n if (\r\n (viewportScrollSizeChanged ||\r\n viewportSizeFractionCahnged ||\r\n showNativeOverlaidScrollbarsChanged) &&\r\n undoViewportArrangeOverflowState &&\r\n !showNativeOverlaidScrollbars &&\r\n arrangeViewport(\r\n undoViewportArrangeOverflowState,\r\n viewportScrollSize!,\r\n viewportSizeFraction!,\r\n directionIsRTL!\r\n )\r\n ) {\r\n arrangedViewportClientSize = clientSize(_viewport);\r\n arrangedViewportScrollSize = scrollSize(_viewport);\r\n }\r\n\r\n overflowAmuntCache = updateOverflowAmountCache(force, {\r\n _viewportSizeFraction: viewportSizeFraction!,\r\n _viewportScrollSize: {\r\n w: max(viewportScrollSize!.w, arrangedViewportScrollSize.w),\r\n h: max(viewportScrollSize!.h, arrangedViewportScrollSize.h),\r\n },\r\n _viewportClientSize: {\r\n w: arrangedViewportClientSize.w + max(0, viewportContentSize.w - viewportScrollSize!.w),\r\n h: arrangedViewportClientSize.h + max(0, viewportContentSize.h - viewportScrollSize!.h),\r\n },\r\n });\r\n }\r\n\r\n const [viewportSizeFraction, viewportSizeFractionChanged] = viewportSizeFractionCache;\r\n const [viewportScrollSize, viewportScrollSizeChanged] = viewportScrollSizeCache;\r\n const [overflowAmount, overflowAmountChanged] = overflowAmuntCache;\r\n const [overflow, overflowChanged] = checkOption('overflow');\r\n\r\n if (\r\n _paddingStyleChanged ||\r\n viewportSizeFractionChanged ||\r\n viewportScrollSizeChanged ||\r\n overflowAmountChanged ||\r\n overflowChanged ||\r\n showNativeOverlaidScrollbarsChanged ||\r\n directionChanged ||\r\n adjustFlexboxGlue\r\n ) {\r\n const viewportStyle: StyleObject = {\r\n marginRight: 0,\r\n marginBottom: 0,\r\n marginLeft: 0,\r\n width: '',\r\n overflowY: '',\r\n overflowX: '',\r\n };\r\n\r\n const viewportOverflowState = setViewportOverflowState(\r\n showNativeOverlaidScrollbars,\r\n overflowAmount!,\r\n overflow,\r\n viewportStyle\r\n );\r\n const viewportArranged = arrangeViewport(\r\n viewportOverflowState,\r\n viewportScrollSize!,\r\n viewportSizeFraction!,\r\n directionIsRTL!\r\n );\r\n hideNativeScrollbars(viewportOverflowState, directionIsRTL!, viewportArranged, viewportStyle);\r\n\r\n if (adjustFlexboxGlue) {\r\n fixFlexboxGlue(viewportOverflowState, !!heightIntrinsic);\r\n }\r\n\r\n // TODO: hide host overflow if scroll x or y and no padding element there\r\n // TODO: Test without content\r\n // TODO: Test without padding\r\n // TODO: overflow: visible on padding / host if overflow visible on both axis\r\n\r\n style(_viewport, viewportStyle);\r\n\r\n _setLifecycleCommunication({\r\n _viewportOverflowScroll: viewportOverflowState._overflowScroll,\r\n _viewportOverflowAmount: overflowAmount,\r\n });\r\n }\r\n };\r\n};\r\n","import {\r\n XY,\r\n WH,\r\n TRBL,\r\n CacheValues,\r\n PartialOptions,\r\n each,\r\n hasOwnProperty,\r\n isNumber,\r\n scrollLeft,\r\n scrollTop,\r\n assignDeep,\r\n} from 'support';\r\nimport { OSOptions } from 'options';\r\nimport { getEnvironment } from 'environment';\r\nimport { StructureSetup } from 'setups/structureSetup';\r\nimport { lifecycleHubOservers } from 'lifecycles/lifecycleHubObservers';\r\nimport { createTrinsicLifecycle } from 'lifecycles/trinsicLifecycle';\r\nimport { createPaddingLifecycle } from 'lifecycles/paddingLifecycle';\r\nimport { createOverflowLifecycle } from 'lifecycles/overflowLifecycle';\r\nimport { StyleObject } from 'typings';\r\nimport { ScrollbarsSetup } from 'setups/scrollbarsSetup';\r\n\r\nexport type LifecycleCheckOption = (path: string) => LifecycleOptionInfo;\r\n\r\nexport type Lifecycle = (\r\n updateHints: LifecycleUpdateHints,\r\n checkOption: LifecycleCheckOption,\r\n force: boolean\r\n) => Partial | void;\r\n\r\nexport type LifecycleOptionInfo = [T, boolean];\r\n\r\nexport interface LifecycleCommunication {\r\n _paddingInfo: {\r\n _absolute: boolean;\r\n _padding: TRBL;\r\n };\r\n _viewportPaddingStyle: StyleObject;\r\n _viewportOverflowScroll: XY;\r\n _viewportOverflowAmount: WH;\r\n}\r\n\r\nexport interface LifecycleAdaptiveUpdateHints {\r\n _sizeChanged: boolean;\r\n _hostMutation: boolean;\r\n _contentMutation: boolean;\r\n _paddingStyleChanged: boolean;\r\n}\r\n\r\nexport interface LifecycleUpdateHints extends LifecycleAdaptiveUpdateHints {\r\n _directionIsRTL: CacheValues;\r\n _heightIntrinsic: CacheValues;\r\n}\r\n\r\nexport interface LifecycleHubState {\r\n _overflowAmount: WH;\r\n}\r\n\r\nexport interface LifecycleHubInstance {\r\n _update(changedOptions?: PartialOptions | null, force?: boolean): void;\r\n _state(): LifecycleHubState;\r\n _destroy(): void;\r\n}\r\n\r\nexport interface LifecycleHub {\r\n _options: OSOptions;\r\n _structureSetup: StructureSetup;\r\n // whether the \"viewport arrange\" strategy must be used (true if no native scrollbar hiding and scrollbars are overlaid)\r\n _doViewportArrange: boolean;\r\n _getLifecycleCommunication(): LifecycleCommunication;\r\n _setLifecycleCommunication(newLifecycleCommunication?: Partial): void;\r\n}\r\n\r\nconst getPropByPath = (obj: any, path: string): T =>\r\n obj\r\n ? path.split('.').reduce((o, prop) => (o && hasOwnProperty(o, prop) ? o[prop] : undefined), obj)\r\n : undefined;\r\n\r\nconst booleanCacheValuesFallback: CacheValues = [false, false, false];\r\nconst lifecycleCommunicationFallback: LifecycleCommunication = {\r\n _paddingInfo: {\r\n _absolute: false,\r\n _padding: {\r\n t: 0,\r\n r: 0,\r\n b: 0,\r\n l: 0,\r\n },\r\n },\r\n _viewportOverflowScroll: {\r\n x: false,\r\n y: false,\r\n },\r\n _viewportOverflowAmount: {\r\n w: 0,\r\n h: 0,\r\n },\r\n _viewportPaddingStyle: {\r\n marginRight: 0,\r\n marginBottom: 0,\r\n marginLeft: 0,\r\n paddingTop: 0,\r\n paddingRight: 0,\r\n paddingBottom: 0,\r\n paddingLeft: 0,\r\n },\r\n};\r\n\r\nexport const createLifecycleHub = (\r\n options: OSOptions,\r\n structureSetup: StructureSetup,\r\n scrollbarsSetup: ScrollbarsSetup\r\n): LifecycleHubInstance => {\r\n let lifecycleCommunication = lifecycleCommunicationFallback;\r\n const { _viewport } = structureSetup._targetObj;\r\n const {\r\n _nativeScrollbarStyling,\r\n _nativeScrollbarIsOverlaid,\r\n _flexboxGlue,\r\n _addListener: addEnvironmentListener,\r\n _removeListener: removeEnvironmentListener,\r\n } = getEnvironment();\r\n const doViewportArrange =\r\n !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);\r\n const instance: LifecycleHub = {\r\n _options: options,\r\n _structureSetup: structureSetup,\r\n _doViewportArrange: doViewportArrange,\r\n _getLifecycleCommunication: () => lifecycleCommunication,\r\n _setLifecycleCommunication(newLifecycleCommunication) {\r\n lifecycleCommunication = assignDeep({}, lifecycleCommunication, newLifecycleCommunication);\r\n },\r\n };\r\n const lifecycles: Lifecycle[] = [\r\n createTrinsicLifecycle(instance),\r\n createPaddingLifecycle(instance),\r\n createOverflowLifecycle(instance),\r\n ];\r\n\r\n const updateLifecycles = (\r\n updateHints?: Partial | null,\r\n changedOptions?: Partial | null,\r\n force?: boolean\r\n ) => {\r\n let {\r\n // eslint-disable-next-line prefer-const\r\n _directionIsRTL,\r\n // eslint-disable-next-line prefer-const\r\n _heightIntrinsic,\r\n _sizeChanged = force || false,\r\n _hostMutation = force || false,\r\n _contentMutation = force || false,\r\n _paddingStyleChanged = force || false,\r\n } = updateHints || {};\r\n\r\n const finalDirectionIsRTL =\r\n _directionIsRTL ||\r\n (_sizeObserver\r\n ? _sizeObserver._getCurrentCacheValues(force)._directionIsRTL\r\n : booleanCacheValuesFallback);\r\n const finalHeightIntrinsic =\r\n _heightIntrinsic ||\r\n (_trinsicObserver\r\n ? _trinsicObserver._getCurrentCacheValues(force)._heightIntrinsic\r\n : booleanCacheValuesFallback);\r\n const checkOption: LifecycleCheckOption = (path) => [\r\n getPropByPath(options, path),\r\n force || getPropByPath(changedOptions, path) !== undefined,\r\n ];\r\n const adjustScrollOffset = doViewportArrange || !_flexboxGlue;\r\n const scrollOffsetX = adjustScrollOffset && scrollLeft(_viewport);\r\n const scrollOffsetY = adjustScrollOffset && scrollTop(_viewport);\r\n\r\n // place before updating lifecycles because of possible flushing of debounce\r\n if (_updateObserverOptions) {\r\n _updateObserverOptions(checkOption);\r\n }\r\n\r\n each(lifecycles, (lifecycle) => {\r\n const {\r\n _sizeChanged: adaptiveSizeChanged,\r\n _hostMutation: adaptiveHostMutation,\r\n _contentMutation: adaptiveContentMutation,\r\n _paddingStyleChanged: adaptivePaddingStyleChanged,\r\n } =\r\n lifecycle(\r\n {\r\n _directionIsRTL: finalDirectionIsRTL,\r\n _heightIntrinsic: finalHeightIntrinsic,\r\n _sizeChanged,\r\n _hostMutation,\r\n _contentMutation,\r\n _paddingStyleChanged,\r\n },\r\n checkOption,\r\n !!force\r\n ) || {};\r\n\r\n _sizeChanged = adaptiveSizeChanged || _sizeChanged;\r\n _hostMutation = adaptiveHostMutation || _hostMutation;\r\n _contentMutation = adaptiveContentMutation || _contentMutation;\r\n _paddingStyleChanged = adaptivePaddingStyleChanged || _paddingStyleChanged;\r\n });\r\n\r\n if (isNumber(scrollOffsetX)) {\r\n scrollLeft(_viewport, scrollOffsetX);\r\n }\r\n if (isNumber(scrollOffsetY)) {\r\n scrollTop(_viewport, scrollOffsetY);\r\n }\r\n\r\n if (options.callbacks.onUpdated) {\r\n options.callbacks.onUpdated();\r\n }\r\n };\r\n const {\r\n _sizeObserver,\r\n _trinsicObserver,\r\n _updateObserverOptions,\r\n _destroy: destroyObservers,\r\n } = lifecycleHubOservers(instance, updateLifecycles);\r\n\r\n const update = (changedOptions?: Partial | null, force?: boolean) =>\r\n updateLifecycles(null, changedOptions, force);\r\n const envUpdateListener = update.bind(null, null, true);\r\n addEnvironmentListener(envUpdateListener);\r\n\r\n console.log(getEnvironment());\r\n\r\n return {\r\n _update: update,\r\n _state: () => ({\r\n _overflowAmount: lifecycleCommunication._viewportOverflowAmount,\r\n }),\r\n _destroy() {\r\n destroyObservers();\r\n removeEnvironmentListener(envUpdateListener);\r\n\r\n structureSetup._destroy();\r\n scrollbarsSetup._destroy();\r\n },\r\n };\r\n};\r\n","import { OSTarget, OSInitializationObject } from 'typings';\r\nimport { PartialOptions, validateOptions, assignDeep, isEmptyObject } from 'support';\r\nimport { createStructureSetup, StructureSetup } from 'setups/structureSetup';\r\nimport { createScrollbarsSetup, ScrollbarsSetup } from 'setups/scrollbarsSetup';\r\nimport { createLifecycleHub } from 'lifecycles/lifecycleHub';\r\nimport { OSOptions, optionsTemplate } from 'options';\r\nimport { getEnvironment } from 'environment';\r\n\r\nexport interface OverlayScrollbarsStatic {\r\n (\r\n target: OSTarget | OSInitializationObject,\r\n options?: PartialOptions,\r\n extensions?: any\r\n ): OverlayScrollbars;\r\n}\r\n\r\nexport interface OverlayScrollbars {\r\n options(): OSOptions;\r\n options(newOptions?: PartialOptions): OSOptions;\r\n\r\n update(force?: boolean): void;\r\n destroy(): void;\r\n\r\n state(): any;\r\n}\r\n\r\nexport const OverlayScrollbars: OverlayScrollbarsStatic = (\r\n target: OSTarget | OSInitializationObject,\r\n options?: PartialOptions,\r\n extensions?: any\r\n): OverlayScrollbars => {\r\n const { _getDefaultOptions } = getEnvironment();\r\n const currentOptions: OSOptions = assignDeep(\r\n {},\r\n _getDefaultOptions(),\r\n validateOptions(options || ({} as PartialOptions), optionsTemplate, null, true)\r\n ._validated\r\n );\r\n const structureSetup: StructureSetup = createStructureSetup(target);\r\n const scrollbarsSetup: ScrollbarsSetup = createScrollbarsSetup(target, structureSetup);\r\n const lifecycleHub = createLifecycleHub(currentOptions, structureSetup, scrollbarsSetup);\r\n\r\n const instance: OverlayScrollbars = {\r\n options(newOptions?: PartialOptions) {\r\n if (newOptions) {\r\n const { _validated: _changedOptions } = validateOptions(\r\n newOptions,\r\n optionsTemplate,\r\n currentOptions,\r\n true\r\n );\r\n\r\n if (!isEmptyObject(_changedOptions)) {\r\n assignDeep(currentOptions, _changedOptions);\r\n lifecycleHub._update(_changedOptions);\r\n }\r\n }\r\n return currentOptions;\r\n },\r\n state: () => lifecycleHub._state(),\r\n update(force?: boolean) {\r\n lifecycleHub._update(null, force);\r\n },\r\n destroy: () => lifecycleHub._destroy(),\r\n };\r\n\r\n instance.update(true);\r\n\r\n return instance;\r\n};\r\n"],"names":["createCache","update","options","_initialValue","_equal","_alwaysUpdateValues","_value","_previous","cacheUpdate","force","context","curr","newVal","changed","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","elm","isEmptyArray","runEach","p1","runFn","fn","Set","forEach","prop","assignDeep","target","object1","object2","object3","object4","object5","object6","sources","copy","copyIsArray","src","clone","isEmptyObject","name","getSetProp","topLeft","fallback","value","attr","attrName","getAttribute","setAttribute","removeAttr","removeAttribute","scrollLeft","scrollTop","elmPrototype","find","selector","rootElm","document","querySelectorAll","is","matches","msMatchesSelector","contents","childNodes","parent","parentElement","before","parentElm","preferredAnchor","insertedElms","anchor","fragment","createDocumentFragment","insertedElm","previousSibling","appendChild","firstChild","nextSibling","insertBefore","appendChildren","node","children","prependChildren","insertedNodes","insertAfter","removeElements","nodes","e","removeChild","createDiv","classNames","div","createElement","createDOM","html","createdDiv","innerHTML","trim","firstLetterToUpper","str","charAt","toUpperCase","slice","getDummyStyle","style","cssPrefixes","jsPrefixes","jsCache","cssCache","cssProperty","uppercasedName","elmStyle","prefix","prefixWithoutDashes","resultPossibilities","resultPossibility","jsAPI","MutationObserverConstructor","IntersectionObserverConstructor","ResizeObserverConstructor","cAF","rAF","rnothtmlwhite","classListAction","className","action","clazz","classes","match","classList","addClass","add","removeClass","remove","diffClass","classNameA","classNameB","classNameASplit","split","classNameBSplit","tempObj","zeroObj","w","h","windowSize","innerWidth","innerHeight","offsetSize","offsetWidth","offsetHeight","clientSize","clientWidth","clientHeight","scrollSize","scrollWidth","scrollHeight","getBoundingClientRect","passiveEventsSupport","supportPassiveEvents","addEventListener","defineProperty","get","splitEventNames","eventNames","off","listener","capture","eventName","removeEventListener","on","doSupportPassiveEvents","passive","_passive","_capture","once","_once","offListeners","nativeOptions","finalListener","evt","bind","stopPropagation","preventDefault","stopAndPrevent","equal","a","b","props","propMutation","compareA","compareB","equalWH","equalTRBL","equalBCRWH","round","Math","setT","setTimeout","clearTimeouts","id","clearTimeout","noop","debounce","functionToDebounce","timeoutId","maxTimeoutId","prevArguments","latestArguments","_timeout","_maxDelay","_mergeParams","invokeFunctionToDebounce","args","mergeParms","flush","debouncedFn","arguments","finalTimeout","hasTimeout","finalMaxWait","hasMaxWait","setTimeoutFn","mergeParamsResult","invokedArgs","boundInvoke","_flush","cssNumber","opacity","zindex","parseToZeroOrNumber","toFloat","num","parseFloat","parseInt","Number","isNaN","adaptCSSVal","val","getCSSVal","computedStyle","getPropertyValue","setCSSVal","setProperty","styles","getSingleStyle","getStyles","getStylesResult","getComputedStyle","reduce","topRightBottomLeft","propertyPrefix","propertySuffix","finalPrefix","finalSuffix","top","right","bottom","left","t","r","l","x","y","absoluteCoordinates","rect","pageYOffset","pageXOffset","_extends","module","assign","exports","__esModule","stringify","JSON","templateTypePrefixSuffix","optionsTemplateTypes","validateRecursive","template","optionsDiff","doWriteErrors","propPath","validatedOptions","optionsCopy","filter","optionsDiffValue","optionsValue","templateValue","templateIsComplex","propPrefix","validatedResult","_validated","_foreign","isValid","errorEnumStrings","errorPossibleTypes","optionsValueType","templateValueArr","currTemplateType","typeString","isEnumString","enumStringSplit","possibility","string","isPrimitiveArr","some","doStringifyComparison","console","warn","join","validateOptions","transformOptions","optionsWithOptionsTemplate","_template","_options","tmpResult","classNameEnvironment","classNameEnvironmentFlexboxGlue","classNameEnvironmentFlexboxGlueMax","classNameHost","classNamePadding","classNameViewport","classNameViewportArrange","classNameContent","classNameViewportScrollbarStyling","classNameSizeObserver","classNameSizeObserverAppear","classNameSizeObserverListener","classNameSizeObserverListenerScroll","classNameSizeObserverListenerItem","classNameSizeObserverListenerItemFinal","classNameTrinsicObserver","classNameScrollbar","classNameScrollbarHorizontal","classNameScrollbarVertical","classNameScrollbarTrack","classNameScrollbarHandle","numberAllowedValues","oTypes","number","arrayNullValues","null","stringArrayNullAllowedValues","booleanTrueTemplate","boolean","booleanFalseTemplate","resizeAllowedValues","overflowAllowedValues","scrollbarsVisibilityAllowedValues","scrollbarsAutoHideAllowedValues","defaultOptionsWithTemplate","resize","paddingAbsolute","updating","elementEvents","attributes","overflow","scrollbars","visibility","autoHide","autoHideDelay","dragScroll","clickScroll","touch","textarea","dynWidth","dynHeight","inheritedAttrs","nativeScrollbarsOverlaid","show","initialize","callbacks","onUpdated","function","optionsTemplate","defaultOptions","environmentInstance","abs","diffBiggerThanOne","valOne","valTwo","absValOne","absValTwo","getNativeScrollbarSize","body","measureElm","cSize","oSize","getNativeScrollbarStyling","testElm","ex","getRtlScrollBehavior","childElm","strHidden","overflowX","overflowY","direction","parentOffset","childOffset","childOffsetAfterScroll","n","getFlexboxGlue","minOffsetsizeParent","minOffsetsize","supportsMin","maxOffsetsizeParent","maxOffsetsize","supportsMax","getWindowDPR","dDPI","screen","deviceXDPI","sDPI","logicalXDPI","devicePixelRatio","getDefaultInitializationStrategy","nativeScrollbarStyling","_host","_viewport","_padding","_content","_scrollbarsSlot","createEnvironment","envDOM","envElm","envChildElm","onChangedListener","nativeScrollbarSize","nativeScrollbarIsOverlaid","defaultInitializationStrategy","initializationStrategy","defaultDefaultOptions","env","_nativeScrollbarSize","_nativeScrollbarIsOverlaid","_nativeScrollbarStyling","_cssCustomProperties","_rtlScrollBehavior","_flexboxGlue","_addListener","_removeListener","delete","_getInitializationStrategy","_setInitializationStrategy","newInitializationStrategy","_getDefaultOptions","_setDefaultOptions","newDefaultOptions","_defaultInitializationStrategy","_defaultDefaultOptions","size","dpr","scrollbarSize","sizeNew","deltaSize","deltaAbsSize","deltaAbsRatio","dprNew","deltaIsBigger","difference","dprChanged","isZoom","newScrollbarSize","getEnvironment","contentArrangeCounter","unwrap","createUniqueViewportArrangeElement","create","staticCreationFromStrategy","initializationValue","strategy","elementClass","dynamicCreationFromStrategy","defaultValue","takeInitializationValue","createStructureSetup","hostInitializationStrategy","viewportInitializationStrategy","paddingInitializationStrategy","contentInitializationStrategy","targetIsElm","targetStructureInitialization","targetElement","isTextarea","isBody","ownerDocument","bodyElm","wnd","defaultView","evaluatedTargetObj","_target","host","viewport","padding","content","_viewportArrange","ctx","_windowElm","_documentElm","_htmlElm","_bodyElm","_isTextarea","_isBody","_targetIsElm","generatedElements","elementIsGenerated","destroyFns","isTextareaHostGenerated","targetContents","contentSlot","_targetObj","_targetCtx","_destroy","generateScrollbarDOM","scrollbarClassName","scrollbar","track","handle","_scrollbar","_track","_handle","createScrollbarsSetup","structureSetup","environmentScrollbarSlot","initializationScrollbarSlot","scrollbarsSlot","initializationScrollbarSlotResult","evaluatedScrollbarSlot","horizontalScrollbarStructure","verticalScrollbarStructure","horizontalScrollbar","verticalScrollbar","_horizontalScrollbarStructure","_verticalScrollbarStructure","animationStartEventName","scrollEventName","scrollAmount","getElmDirectionIsRTL","domRectHasDimensions","height","width","createSizeObserver","onSizeChangedCallback","_direction","observeDirectionChange","_appear","observeAppearChange","rtlScrollBehavior","baseElements","sizeObserver","listenerElement","getIsDirectionRTL","updateResizeObserverContentRectCache","currVal","onSizeChangedCallbackProxy","sizeChangedContext","isResizeObserverCall","hasDirectionCache","skip","appear","doDirectionScroll","currRContentRect","prevContentRect","pop","contentRect","hasDimensions","hadDimensions","rtl","_sizeChanged","_directionIsRTLCache","appearCallback","directionIsRTLCache","resizeObserverInstance","observe","disconnect","observerElementChildren","observerElementChildrenRoot","shrinkElement","lastChild","expandElement","expandElementChild","cacheSize","currSize","isDirty","rAFId","reset","onResized","onScroll","scrollEvent","updateDirectionIsRTLCache","event","directionIsRTLCacheValues","directionIsRTL","directionIsRTLChanged","_getCurrentCacheValues","_directionIsRTL","createTrinsicObserver","onTrinsicChangedCallback","trinsicObserver","updateHeightIntrinsicCache","getCurrentHeightIntrinsicCache","ioEntryOrSize","isIntersecting","intersectionRatio","triggerOnTrinsicChangedCallback","updateValue","heightIntrinsic","heightIntrinsicChanged","intersectionObserverInstance","entries","root","onSizeChanged","newSize","_heightIntrinsic","createEventContentChange","eventContentChange","map","destroyed","_updateElements","getElements","eventElmList","elements","entry","entryEventNames","entryOff","set","WeakMap","createDOMObserver","isContentObserver","isConnected","_attributes","_styleChangingAttributes","_eventContentChange","_nestedTargetSelector","_ignoreTargetChange","_ignoreNestedTargetChange","_ignoreContentChange","destroyEventContentChange","updateEventContentChangeElements","finalAttributes","finalStyleChangingAttributes","observedAttributes","concat","observerCallback","mutations","ignoreTargetChange","ignoreContentChange","targetChangedAttrs","totalAddedNodes","targetStyleChanged","contentChanged","childListChanged","mutation","attributeName","mutationTarget","oldValue","addedNodes","isAttributesType","isChildListType","targetIsMutationTarget","attributeValue","attributeChanged","styleChangingAttrChanged","notOnlyAttrChanged","contentAttrChanged","isNestedTarget","baseAssertion","contentFinalChanged","mutationObserver","attributeOldValue","attributeFilter","subtree","childList","characterData","_update","takeRecords","ignorePrefix","viewportAttrsFromTarget","baseStyleChangingAttrsTextarea","baseStyleChangingAttrs","newValue","diff","addedOrRemovedClass","lifecycleHubOservers","instance","updateLifecycles","debounceTimeout","debounceMaxDelay","contentMutationObserver","_structureSetup","contentMutationObserverAttr","updateLifecyclesWithDebouncedAdaptiveUpdateHints","prev","prevSizeChanged","_hostMutation","prevHostMutation","_contentMutation","prevContentMutation","currSizeChanged","currvHostMutation","currContentMutation","merged","updateViewportAttrsFromHost","attribute","hostAttr","onTrinsicChanged","updateFn","onContentMutation","contentChangedTroughEvent","onHostMutation","hostMutationObserver","updateOptions","checkOption","elementEventsChanged","attributesChanged","debounceValue","debounceChanged","updateContentMutationObserver","timeout","maxWait","_trinsicObserver","_sizeObserver","_updateObserverOptions","createTrinsicLifecycle","lifecycleHub","updateHints","display","createPaddingLifecycle","_setLifecycleCommunication","updatePaddingCache","currentPaddingCache","paddingChanged","directionChanged","paddingAbsoluteChanged","contentMutation","paddingStyleChanged","paddingRelative","paddingHorizontal","paddingVertical","paddingStyle","marginRight","marginBottom","marginLeft","viewportStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","_paddingInfo","_absolute","_viewportPaddingStyle","_paddingStyleChanged","max","overlaidScrollbarsHideOffset","whCacheOptions","sizeFraction","viewportOffsetSize","viewportRect","fractionalPixelRatioTollerance","setAxisOverflowStyle","horizontal","overflowAmount","behavior","styleObj","overflowKey","behaviorIsVisible","behaviorIsVisibleHidden","behaviorIsScroll","hasOverflow","_visible","_behavior","createOverflowLifecycle","_doViewportArrange","_getLifecycleCommunication","updateViewportSizeFraction","getCurrentViewportSizeFraction","updateViewportScrollSizeCache","getCurrentViewportScrollSizeCache","updateOverflowAmountCache","getCurrentOverflowAmountCache","_viewportScrollSize","_viewportClientSize","_viewportSizeFraction","fixFlexboxGlue","viewportOverflowState","_overflowScroll","_scrollbarsHideOffset","hostSizeFraction","hostClientSize","isContentBox","fractionalClientHeight","subtractXScrollbar","getViewportOverflowState","showNativeOverlaidScrollbars","viewportStyleObj","overlaidX","overlaidY","determineOverflow","arrangeHideOffset","scroll","scrollbarsHideOffset","_scrollbarsHideOffsetArrange","setViewportOverflowState","xVisible","xVisibleBehavior","yVisible","yVisibleBehavior","arrangeViewport","viewportScrollSize","viewportSizeFraction","arrangeX","arrangeY","hideOffsetX","hideOffsetY","viewportPaddingStyle","viewportArrangeHorizontalPaddingKey","viewportArrangeHorizontalPaddingValue","viewportArrangeVerticalPaddingValue","fractionalContentWidth","fractionalContenHeight","arrangeSize","sheet","cssRules","insertRule","ruleStyle","hideNativeScrollbars","viewportArrange","horizontalMarginKey","viewportHorizontalPaddingKey","horizontalMarginValue","verticalMarginValue","horizontalPaddingValue","verticalPaddingValue","undoViewportArrange","finalViewportOverflowState","finalPaddingStyle","assignProps","prevStyle","_redoViewportArrange","_viewportOverflowState","showNativeOverlaidScrollbarsOption","showNativeOverlaidScrollbarsChanged","adjustFlexboxGlue","viewportSizeFractionCache","viewportScrollSizeCache","overflowAmuntCache","preMeasureViewportOverflowState","undoViewportArrangeOverflowState","viewportSizeFractionCahnged","viewportScrollSizeChanged","viewportContentSize","arrangedViewportScrollSize","arrangedViewportClientSize","viewportSizeFractionChanged","overflowAmountChanged","overflowChanged","viewportArranged","_viewportOverflowScroll","_viewportOverflowAmount","getPropByPath","path","o","booleanCacheValuesFallback","lifecycleCommunicationFallback","createLifecycleHub","scrollbarsSetup","lifecycleCommunication","addEnvironmentListener","removeEnvironmentListener","doViewportArrange","newLifecycleCommunication","lifecycles","changedOptions","finalDirectionIsRTL","finalHeightIntrinsic","adjustScrollOffset","scrollOffsetX","scrollOffsetY","lifecycle","adaptiveSizeChanged","adaptiveHostMutation","adaptiveContentMutation","adaptivePaddingStyleChanged","destroyObservers","envUpdateListener","log","_state","_overflowAmount","OverlayScrollbars","extensions","currentOptions","newOptions","_changedOptions","state","destroy"],"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 812850f..2abe1d2 100644 --- a/packages/overlayscrollbars/dist/overlayscrollbars.esm.min.js +++ b/packages/overlayscrollbars/dist/overlayscrollbars.esm.min.js @@ -1 +1 @@ -const t=(t,e)=>{const{o:n,s:r,_:o}=e||{};let i,a=r;return{u:(e,r)=>{const s=a,l=t?t(r,a,i):r,c=e||(n?!n(s,l):s!==l);return(c||o)&&(a=l,i=s),{g:a,v:i,p:c}},m:t=>({g:a,v:i,p:!!t})}},e=Node.ELEMENT_NODE,{toString:n,hasOwnProperty:r}=Object.prototype;function o(t){return void 0===t}function i(t){return null===t}const a=t=>o(t)||i(t)?`${t}`:n.call(t).replace(/^\[object (.+)\]$/,"$1").toLowerCase();function s(t){return"number"==typeof t}function l(t){return"string"==typeof t}function c(t){return"boolean"==typeof t}function _(t){return"function"==typeof t}function u(t){return Array.isArray(t)}function d(t){return"object"==typeof t&&!u(t)&&!i(t)}function g(t){const e=!!t&&t.length,n=s(e)&&e>-1&&e%1==0;return!!(u(t)||!_(t)&&n)&&(!(e>0&&d(t))||e-1 in t)}function f(t){if(!t||!d(t)||"object"!==a(t))return!1;let e;const n="constructor",i=t[n],s=i&&i.prototype,l=r.call(t,n),c=s&&r.call(s,"isPrototypeOf");if(i&&!l&&!c)return!1;for(e in t);return o(e)||r.call(t,e)}function v(t){const n=window.Element;return!!t&&(n?t instanceof n:t.nodeType===e)}function h(t,e){if(g(t))for(let n=0;ne(t[n],n,t));return t}const p=(t,e,n)=>t.indexOf(e,n),w=(t,e,n)=>(n||l(e)||!g(e)?t.push(e):Array.prototype.push.apply(t,e),t),b=t=>{if(Array.from)return Array.from(t);const e=[];return h(t,t=>{w(e,t)}),e},y=t=>t&&0===t.length,m=(t,e)=>{const n=t=>t&&t(e);t instanceof Set?t.forEach(n):h(t,n)},S=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),x=t=>t?Object.keys(t):[];function O(t,e,n,r,o,a,s){const l=[e,n,r,o,a,s];return"object"==typeof t&&!i(t)||_(t)||(t={}),h(l,e=>{h(x(e),n=>{const r=e[n];if(t===r)return!0;const o=u(r);if(r&&(f(r)||o)){const e=t[n];let i=e;o&&!u(e)?i=[]:o||f(e)||(i={}),t[n]=O(i,r)}else t[n]=r})}),t}function $(t){for(const e in t)return!1;return!0}function C(t,e,n,r){if(o(r))return n?n[t]:e;n&&(n[t]=r)}function z(t,e,n){if(o(n))return t?t.getAttribute(e):null;t&&t.setAttribute(e,n)}const L=(t,e)=>{t&&t.removeAttribute(e)};function I(t,e){return C("scrollLeft",0,t,e)}function A(t,e){return C("scrollTop",0,t,e)}const M=Element.prototype,T=(t,e)=>{const n=[],r=e?v(e)?e:null:document;return r?w(n,r.querySelectorAll(t)):n},R=(t,e)=>{if(v(t)){return(M.matches||M.msMatchesSelector).call(t,e)}return!1},V=t=>t?b(t.childNodes):[],j=t=>t?t.parentElement:null,P=(t,e,n)=>{if(n){let r,o=e;t&&(g(n)?(r=document.createDocumentFragment(),h(n,t=>{t===o&&(o=t.previousSibling),r.appendChild(t)})):r=n,e&&(o?o!==e&&(o=o.nextSibling):o=t.firstChild),t.insertBefore(r,o||null))}},H=(t,e)=>{P(t,null,e)},B=(t,e)=>{P(t,t&&t.firstChild,e)},E=(t,e)=>{P(j(t),t&&t.nextSibling,e)},D=t=>{if(g(t))h(b(t),t=>D(t));else if(t){const e=j(t);e&&e.removeChild(t)}},N=t=>{const e=document.createElement("div");return t&&z(e,"class",t),e},F=t=>{const e=N();return e.innerHTML=t.trim(),h(V(e),t=>D(t))},G=t=>t.charAt(0).toUpperCase()+t.slice(1),k=["-webkit-","-moz-","-o-","-ms-"],q=["WebKit","Moz","O","MS","webkit","moz","o","ms"],Y={},X={},U=t=>{let e=X[t];if(S(X,t))return e;const n=G(t),r=N().style;return h(k,o=>{const i=o.replace(/-/g,""),a=[t,o+t,i+n,G(i)+n];return!(e=a.find(t=>void 0!==r[t]))}),X[t]=e||""},W=t=>{let e=Y[t]||window[t];return S(Y,t)||(h(q,n=>(e=e||window[n+G(t)],!e)),Y[t]=e),e},J=W("MutationObserver"),K=W("IntersectionObserver"),Q=W("ResizeObserver"),Z=W("cancelAnimationFrame"),tt=W("requestAnimationFrame"),et=/[^\x20\t\r\n\f]+/g,nt=(t,e,n)=>{let r,o=0,i=!1;if(t&&l(e)){const a=e.match(et)||[];for(i=a.length>0;r=a[o++];)i=!!n(t.classList,r)&&i}return i},rt=(t,e)=>{nt(t,e,(t,e)=>t.add(e))},ot=(t,e)=>{nt(t,e,(t,e)=>t.remove(e))},it={w:0,h:0},at=()=>({w:window.innerWidth,h:window.innerHeight}),st=t=>t?{w:t.offsetWidth,h:t.offsetHeight}:it,lt=t=>t?{w:t.clientWidth,h:t.clientHeight}:it,ct=t=>t?{w:t.scrollWidth,h:t.scrollHeight}:it,_t=t=>t.getBoundingClientRect();let ut;const dt=t=>t.split(" "),gt=(t,e,n,r)=>{h(dt(e),e=>{t.removeEventListener(e,n,r)})},ft=(t,e,n,r)=>{const i=(()=>{if(o(ut)){ut=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){ut=!0}}))}catch(t){}}return ut})(),a=i&&r&&r.S||!1,s=r&&r.O||!1,l=r&&r.$||!1,c=[],_=i?{passive:a,capture:s}:s;return h(dt(e),e=>{const r=l?o=>{t.removeEventListener(e,r,s),n&&n(o)}:n;w(c,gt.bind(null,t,e,r,s)),t.addEventListener(e,r,_)}),m.bind(0,c)},vt=t=>(t=>t.stopPropagation())(t)||(t=>t.preventDefault())(t),ht=(t,e,n,r)=>{if(t&&e){let o=!0;return h(n,n=>{(r?r(t[n]):t[n])!==(r?r(e[n]):e[n])&&(o=!1)}),o}return!1},pt=(t,e)=>ht(t,e,["w","h"]),wt=(t,e)=>ht(t,e,["t","r","b","l"]),bt=(t,e,n)=>ht(t,e,["width","height"],n&&(t=>Math.round(t))),yt=window.setTimeout,mt=t=>{t&&window.clearTimeout(t),t&&Z(t)},St=()=>{},xt=(t,e)=>{let n,r,o,i;const{C:a,L:l,I:c}=e,u=function(e){mt(n),mt(r),r=n=o=void 0,t.apply(this,e)},d=t=>c&&o?c(o,t):t,g=()=>{n&&u(d(i)||i)},f=function(){const t=arguments,e=_(a)?a():a,c=s(e)&&e>=0;if(c){const a=_(l)?l():l,c=s(a)&&a>=0,f=e>0?yt:tt,v=d(t),h=v||t,p=u.bind(0,h);v||u(o||t),mt(n),n=f(p,e),c&&!r&&(r=yt(g,a)),o=i=h}else u(t)};return f.A=g,f},Ot={opacity:1,zindex:1},$t=(t,e)=>{const n=e?parseFloat(t):parseInt(t,10);return Number.isNaN(n)?0:n},Ct=(t,e,n)=>null!=e?e[n]||e.getPropertyValue(n):t.style[n],zt=(t,e,n)=>{try{if(t){const{style:r}=t;o(r[e])?r.setProperty(e,n):r[e]=((t,e)=>!Ot[t.toLowerCase()]&&s(e)?`${e}px`:e)(e,n)}}catch(r){}};function Lt(t,e){const n=l(e);if(u(e)||n){let r=n?"":{};if(t){const o=window.getComputedStyle(t,null);r=n?Ct(t,o,e):e.reduce((e,n)=>(e[n]=Ct(t,o,n),e),r)}return r}h(x(e),n=>zt(t,n,e[n]))}const It=(t,e,n)=>{const r=e?`${e}-`:"",o=n?`-${n}`:"",i=`${r}top${o}`,a=`${r}right${o}`,s=`${r}bottom${o}`,l=`${r}left${o}`,c=Lt(t,[i,a,s,l]);return{t:$t(c[i]),r:$t(c[a]),b:$t(c[s]),l:$t(c[l])}},At={x:0,y:0},Mt=t=>{const e=t?_t(t):0;return e?{x:e.left+window.pageYOffset,y:e.top+window.pageXOffset}:At};var Tt=function(t){var e={exports:{}};return t(e,e.exports),e.exports}((function(t){function e(){return t.exports=e=Object.assign||function(t){for(var e=1;e(t[e]=Vt[0]+e+Vt[1],t),{}),Pt=(t,e,n,r,i)=>{const s={},c=Tt({},t);return h(x(e).filter(e=>S(t,e)),_=>{const d=o(n[_])?{}:n[_],g=t[_],v=e[_],p=f(v),b=i?`${i}.`:"";if(p&&f(g)){const t=Pt(g,v,d,r,b+_);s[_]=t.M,c[_]=t.T,h([c,s],t=>{$(t[_])&&delete t[_]})}else if(!p){let t=!1;const e=[],n=[],i=a(g);if(h(u(v)?v:[v],r=>{let a;h(jt,(t,e)=>{t===r&&(a=e)});const s=o(a);if(s&&l(g)){const n=r.split(" ");t=!!n.find(t=>t===g),w(e,n)}else t=jt[i]===r;return w(n,s?jt.string:a),!t}),t){(u(g)||f(g)?Rt(g)!==Rt(d):g!==d)&&(s[_]=g)}else r&&console.warn(`${`The option "${b}${_}" wasn't set, because it doesn't accept the type [ ${i.toUpperCase()} ] with the value of "${g}".\r\n`+`Accepted types are: [ ${n.join(", ").toUpperCase()} ].\r\n`}${e.length>0?`\r\nValid strings are: [ ${e.join(", ")} ].`:""}`);delete c[_]}}),{T:c,M:s}},Ht=(t,e,n,r)=>Pt(t,e,n||{},r||!1),Bt=t=>{const e={R:{},V:{}};return h(x(t),n=>{const r=t[n];if(u(r))e.R[n]=r[1],e.V[n]=r[0];else{const t=Bt(r);e.R[n]=t.R,e.V[n]=t.V}}),e},Et="os-environment",Dt=`${Et}-flexbox-glue`,Nt=`${Dt}-max`,Ft="os-host",Gt="os-padding",kt="os-viewport",qt=`${kt}-arrange`,Yt="os-content",Xt=`${kt}-scrollbar-styled`,Ut="os-size-observer",Wt=`${Ut}-appear`,Jt=`${Ut}-listener`,Kt=`${Jt}-scroll`,Qt=`${Jt}-item`,Zt=`${Qt}-final`,te="os-trinsic-observer",ee=jt.number,ne=[jt.array,jt.null],re=[jt.string,jt.array,jt.null],oe=[!0,jt.boolean],ie=[!1,jt.boolean],ae="hidden scroll visible visible-hidden",se={resize:["none","none both horizontal vertical"],paddingAbsolute:ie,updating:{elementEvents:[[["img","load"]],ne],attributes:[null,ne],debounce:[[0,33],[jt.number,jt.array,jt.null]]},overflow:{x:["scroll",ae],y:["scroll",ae]},scrollbars:{visibility:["auto","visible hidden auto"],autoHide:["never","never scroll leavemove"],autoHideDelay:[800,ee],dragScroll:oe,clickScroll:ie,touch:oe},textarea:{dynWidth:ie,dynHeight:ie,inheritedAttrs:[["style","class"],re]},nativeScrollbarsOverlaid:{show:ie,initialize:ie},callbacks:{onUpdated:[null,[jt.function,jt.null]]}},{R:le,V:ce}=Bt(se);let _e;const{abs:ue,round:de}=Math,ge=(t,e)=>{H(t,e);const n=lt(e),r=st(e);return{x:r.h-n.h,y:r.w-n.w}},fe=(t,e)=>{const n="hidden";Lt(t,{overflowX:n,overflowY:n,direction:"rtl"}),I(t,0);const r=Mt(t),o=Mt(e);I(t,-999);const i=Mt(e);return{i:r.x===o.x,n:o.x!==i.x}},ve=(t,e)=>{rt(t,Dt);const n=_t(t),r=_t(e),o=bt(r,n,!0);rt(t,Nt);const i=_t(t),a=_t(e),s=bt(a,i,!0);return o&&s},he=()=>{const t=window.screen.deviceXDPI||0,e=window.screen.logicalXDPI||1;return window.devicePixelRatio||t/e},pe=()=>{const{body:t}=document,e=F(`
`)[0],n=e.firstChild,r=new Set,o=ge(t,e),i=(t=>{let e=!1;rt(t,Xt);try{e="none"===Lt(t,U("scrollbar-width"))||"none"===window.getComputedStyle(t,"::-webkit-scrollbar").getPropertyValue("display")}catch(n){}return e})(e),a={x:0===o.x,y:0===o.y},s=(t=>({j:!t,P:!1}))(i);let l=s,c=ce;const _={H:o,B:a,D:i,N:"-1"===Lt(e,"zIndex"),F:fe(e,n),G:ve(e,n),k(t){r.add(t)},q(t){r.delete(t)},Y:()=>Tt({},l),X(t){l=O({},l,t)},U:()=>Tt({},c),W(t){c=O({},c,t)},J:s,K:c};if(L(e,"style"),D(e),!(i||a.x&&a.y)){let n=at(),i=he(),a=o;window.addEventListener("resize",()=>{if(r.size){const o=at(),s={w:o.w-n.w,h:o.h-n.h};if(0===s.w&&0===s.h)return;const l={w:ue(s.w),h:ue(s.h)},c={w:ue(de(o.w/(n.w/100))),h:ue(de(o.h/(n.h/100)))},_=he(),u=l.w>2&&l.h>2,d=!((t,e)=>{const n=ue(t),r=ue(e);return!(n===r||n+1===r||n-1===r)})(c.w,c.h),g=_!==i&&i>0;if(u&&d&&g){const n=_e.H=ge(t,e);D(e),a.x===n.x&&a.y===n.y||m(r),a=n}n=o,i=_}})}return _},we=()=>(_e||(_e=pe()),_e),be=t=>{H(j(t),V(t)),D(t)};let ye=0;const me=(t,e)=>{const n=c(t);return n||o(t)?(n?t:e)&&void 0:t},Se=t=>{const{Y:n,D:r,B:i,N:a}=we(),{j:s,P:l}=n(),c=function(t){const n=window.HTMLElement;return!!t&&(n?t instanceof n:t.nodeType===e)}(t),_=c?{}:{Z:t.host,tt:t.target,et:t.viewport,j:me(t.padding,s),P:me(t.content,l)};if(c){const e=N(kt),n=s&&N(Gt),r=l&&N(Yt);_.tt=t,_.j=n,_.et=e,_.P=r}let{tt:u,j:d,et:g,P:f}=_;const v=[],h=R(u,"textarea"),p=!h&&R(u,"body"),b=h?_.Z||N():u,y=t=>h?u:V(t);if(h&&b!==_.Z&&(E(u,b),w(v,()=>{E(b,u),D(b)})),c){const t=f||g;H(t,y(u)),H(b,d),H(d||b,g),H(g,f),w(v,()=>{H(b,V(t)),D(d||g),ot(b,Ft)})}else{const t=f||g||d||b,e=o(d),n=o(g),r=o(f),i=y(t);d=_.j=e?N():d,g=_.et=n?N():g,f=_.P=r?N():f,H(b,d),H(d||b,g),H(g,f);H(f||g,i),w(v,()=>{r&&be(f),n&&be(g),e&&be(d),ot(b,Ft),ot(d,Gt),ot(g,kt),ot(f,Yt)})}rt(b,Ft),rt(d,Gt),rt(g,kt),rt(f,Yt);const S=u.ownerDocument,x=S.body,O={nt:S.defaultView,rt:S,ot:j(x),it:x,at:h,st:p},$=Tt({},_,{Z:b});if(r)w(v,ot.bind(0,g,Xt));else if(!a&&(i.x||i.y)){const t=(()=>{const t=document.createElement("style");return z(t,"id",`${qt}-${ye}`),ye++,t})();L=t,P(j(C=g),C,L),w(v,D.bind(0,t)),$.lt=t}var C,L;return{ct:$,_t:O,ut:()=>{m(v)}}},xe="animationstart",Oe="scroll",$e=3333333,Ce=t=>"rtl"===Lt(t,"direction"),ze=t=>t&&(t.height||t.width),Le=(e,n,r)=>{const{dt:o=!1,gt:i=!1}=r||{},{F:a}=we(),s=F(`
`)[0],l=s.firstChild,{u:_}=t(0,{_:!0,o:(t,e)=>!(!t||!ze(t)&&ze(e))}),d=t=>{const e=t&&c(t.g);let r=!1,i=!1,l=!0;if(u(t)&&t.length>0){const{v:e,g:n}=_(0,t.pop().contentRect),o=ze(n),a=ze(e);r=!e||!o,i=!a&&o,l=!r}else e?l=t.p:i=!0===t;if(o&&l){const n=e?t.g:Ce(s);I(s,n?a.n?-$e:a.i?0:$e:$e),A(s,$e)}r||n({ft:!e,vt:e?t:void 0,gt:!!i})},g=[];let f,v=!!i&&d;if(Q){const t=new Q(d);t.observe(l),w(g,()=>{t.disconnect()})}else{const t=F(`
`);H(l,t),rt(l,Kt);const e=t[0],n=e.lastChild,r=e.firstChild,o=null==r?void 0:r.firstChild;let a,s=st(e),c=s,_=!1;const u=()=>{I(r,$e),A(r,$e),I(n,$e),A(n,$e)},f=t=>{a=0,_&&(s=c,d(!0===t))},h=t=>{c=st(e),_=!t||!pt(c,s),t?(vt(t),_&&!a&&(Z(a),a=tt(f))):f(!1===t),u()};w(g,[ft(r,Oe,h),ft(n,Oe,h)]),Lt(o,{width:$e,height:$e}),u(),v=i?h.bind(0,!1):u}if(o){f=t(Ce.bind(0,s));const{u:e}=f;w(g,ft(s,Oe,t=>{const n=e(),{g:r,p:o}=n;o&&(ot(l,"ltr rtl"),rt(l,r?"rtl":"ltr"),d(n)),vt(t)}))}return v&&(rt(s,Wt),w(g,ft(s,xe,v,{$:!!Q}))),B(e,s),{ut(){m(g),D(s)},ht:t=>({pt:f?f.m(t):{g:!1,v:!1,p:!1}})}},Ie=(t,e,n,r)=>{let i=!1;const{wt:a,bt:s,yt:c,St:_,xt:u,Ot:d,$t:g}=r||{},{ut:f,Ct:v}=((t,e,n)=>{let r;const i=()=>{r&&(r.forEach((t,e)=>{gt(e,t,n)}),r.clear())},a=i=>{if(r&&e){h(e.reduce((e,n)=>{if(n){const r=n[0],o=n[1],a=o&&r&&(i?i(r):T(r,t));a&&a.length&&o&&l(o)&&w(e,[a,o.trim()],!0)}return e},[]),t=>h(t[0],e=>{const i=t[1],a=r.get(e),s=!o(a)&&i!==a,l=s?`${a} ${i}`:i;s&>(e,a,n),r.set(e,l),ft(e,l,n)}))}};return e&&(r=r||new Map,i(),a()),{ut:i,Ct:a}})(t,e&&c,xt(()=>{i&&n(!0)},{C:33,L:99})),b=s||[],m=(a||[]).concat(b),S=o=>{const i=(e?d:u)||St,a=g||St,s=[],c=[];let f=!1,m=!1,S=!1;h(o,n=>{const{attributeName:o,target:u,type:d,oldValue:g,addedNodes:v}=n,h="attributes"===d,y="childList"===d,x=t===u,O=h&&l(o)?z(u,o):0,$=0!==O&&g!==O,C=p(b,o)>-1&&$;if(e&&!x){const e=!h,s=h&&C,l=s&&_&&R(u,_),d=(l?!i(u,o,g,O):e||s)&&!a(n,!!l,t,r);w(c,v),m=m||d,S=S||y}!e&&x&&$&&!i(u,o,g,O)&&(w(s,o),f=f||C)}),S&&!y(c)&&v(t=>c.reduce((e,n)=>(w(e,T(t,n)),R(n,t)?w(e,n):e),[])),e?m&&n(!1):y(s)&&!f||n(s,f)},x=new J(S);return x.observe(t,{attributes:!0,attributeOldValue:!0,attributeFilter:m,subtree:e,childList:e,characterData:e}),i=!0,{ut:()=>{i&&(f(),x.disconnect(),i=!1)},u:()=>{i&&S(x.takeRecords())}}},Ae="os-",Me=["tabindex"],Te=["wrap","cols","rows"],Re=["id","class","style","open"],Ve=(t,e,n,r)=>{if("class"===e&&n&&r){return!!((t,e)=>{const n=t&&t.split(" "),r=e&&e.split(" "),o={};return h(n,t=>{o[t]=1}),h(r,t=>{o[t]?delete o[t]:o[t]=1}),x(o)})(n,r).find(t=>0!==t.indexOf(Ae))}return!1},je=(e,n)=>{let r,o,i;const{zt:a}=e,{ct:c,_t:_}=a,{Z:d,et:g,P:f}=c,{at:v}=_,{D:b,G:y}=we(),S=v?Te:Re.concat(Te),x=xt(n,{C:()=>r,L:()=>o,I(t,e){const{ft:n,Lt:r,It:o}=t[0],{ft:i,Lt:a,It:s}=e[0];return[{ft:n||i,Lt:r||a,It:o||s}]}}),O=t=>{h(t||Me,t=>{if(p(Me,t)>-1){const e=z(d,t);l(e)?z(g,t,e):L(g,t)}})},$=t=>{(t?n:x)({It:!0})},C=(f||!y)&&((e,n)=>{const r=N(te),o=[],{u:i,m:a}=t(t=>0===t.h||t.isIntersecting||t.intersectionRatio>0,{s:!1});if(K){const t=new K(t=>{if(t&&t.length>0){const e=t.pop();if(e){const t=i(0,e);t.p&&n(t)}}},{root:e});t.observe(r),w(o,()=>{t.disconnect()})}else{const t=()=>{const t=st(r),e=i(0,t);e.p&&n(e)};w(o,Le(r,t).ut),t()}return B(e,r),{ut(){m(o),D(r)},ht:t=>({At:a(t)})}})(d,t=>{n({At:t})}),I=Le(d,({ft:t,vt:e,gt:r})=>{(!t||r?n:x)({ft:t,pt:e})},{gt:!0,dt:!b}),A=Ie(d,!1,(t,e)=>{e?x({Lt:!0}):O(t)},{bt:Re,wt:Re.concat(Me),xt:Ve});return O(),{Mt:C,Tt:I,Rt:t=>{const{g:e,p:n}=t("updating.elementEvents"),{g:a,p:l}=t("updating.attributes"),{g:c,p:_}=t("updating.debounce");if((n||l)&&(i&&(i.u(),i.ut()),i=Ie(f||g,!0,$,{bt:S.concat(a||[]),wt:S.concat(a||[]),yt:e,Ot:Ve})),_)if(x.A(),u(c)){const t=c[0],e=c[1];r=!!s(t)&&t,o=!!s(e)&&e}else s(c)?(r=c,o=!1):(r=!1,o=!1)},ut(){i&&i.ut(),C&&C.ut(),I.ut(),A.ut()}}},Pe=t=>{const{zt:e}=t,{P:n}=e.ct;return t=>{const{At:e}=t,{g:r,p:o}=e;return o&&Lt(n,{height:r?"":"100%",display:r?"":"inline"}),{ft:o,It:o}}},He=e=>{const{zt:n,Vt:r}=e,{Z:o,j:i,et:a}=n.ct,{u:s,m:l}=t(It.bind(0,o,"padding"),{o:wt,s:It()});return(t,e,n)=>{let{g:o,p:c}=l(n);const{D:_,G:u}=we(),{ft:d,pt:g,It:f}=t,{g:v,p:h}=g,{g:p,p:w}=e("paddingAbsolute");(d||c||!u&&f)&&({g:o,p:c}=s(n));const b=w||h||c;if(b){const t=!p||!i&&!_,e=o.r+o.l,n=o.t+o.b,s={marginRight:t&&!v?-e:0,marginBottom:t?-n:0,marginLeft:t&&v?-e:0,top:t?-o.t:0,right:t?v?-o.r:"auto":0,left:t?v?"auto":-o.l:0,width:t?`calc(100% + ${e}px)`:""},l={paddingTop:t?o.t:0,paddingRight:t?o.r:0,paddingBottom:t?o.b:0,paddingLeft:t?o.l:0};Lt(i||a,s),Lt(a,l),r({jt:{Pt:!t,j:o},Ht:i?l:Tt({},s,l)})}return{Bt:b}}},{max:Be,abs:Ee,round:De}=Math,Ne=42,Fe={o:pt,s:{w:0,h:0}},Ge=t=>{const e=st(t),n=_t(t);return{w:n.width-e.w,h:n.height-e.h}},ke=()=>window.devicePixelRatio%1==0?0:1,qe=(t,e,n,r)=>{const o=t?"overflowX":"overflowY",i=0===n.indexOf("visible"),a="visible-hidden"===n,s="scroll"===n,l=e>0;return i&&(r[o]="visible"),s&&l&&(r[o]=n),{Et:i,Dt:a?"hidden":"scroll"}},Ye=e=>{const{zt:n,Nt:r,Ft:o,Vt:i}=e,{Z:a,et:s,lt:l}=n.ct,{u:c,m:_}=t(Ge.bind(0,s),Fe),{u,m:d}=t(ct.bind(0,s),Fe),{u:g,m:f}=t(({Gt:t,kt:e,qt:n})=>({w:Be(0,De(Be(0,t.w-e.w)-(ke()||Be(0,n.w)))),h:Be(0,De(Be(0,t.h-e.h)-(ke()||Be(0,n.h))))}),Fe),v=(t,e)=>{if(Lt(s,{height:""}),e){const{Pt:e,j:n}=o().jt,{Yt:r,Xt:i}=t,l=Ge(a),c=lt(a),_=e||"content-box"===Lt(s,"boxSizing")?n.b+n.t:0,u=c.h+(Ee(l.h)<1?l.h:0);Lt(s,{height:u+(r.x?i.x:0)-_})}},p=(t,e)=>{const{H:n,B:r,D:o}=we(),{x:i,y:a}=r,l=o||t?0:Ne,c=!e?Lt(s,["overflowX","overflowY"]):e,_={x:"scroll"===c.overflowX,y:"scroll"===c.overflowY};return{Yt:_,Ut:{x:i&&!!l,y:a&&!!l},Xt:{x:_.x&&!o?i?l:n.x:0,y:_.y&&!o?a?l:n.y:0}}},w=(t,e,n,i)=>{if(r){const{Xt:r,Ut:a}=t,{x:c,y:_}=a,{x:u,y:d}=r,{Ht:g}=o(),f=g[i?"paddingRight":"paddingLeft"],v=g.paddingTop,h=e.w+(Ee(n.w)<1?n.w:0),p=e.h+(Ee(n.h)<1?n.h:0),w={w:d&&_?`${d+h-f}px`:"",h:u&&c?`${u+p-v}px`:""};if(l){const{sheet:t}=l;if(t){const{cssRules:e}=t;if(e){e.length||t.insertRule(`#${z(l,"id")} + .${qt}::before {}`,0);const n=e[0].style;n.width=w.w,n.height=w.h}}}else Lt(s,{"--os-vaw":w.w,"--os-vah":w.h})}return r},b=(t,e,n,r)=>{const{Xt:i,Ut:a}=t,{x:s,y:l}=a,{x:c,y:_}=i,{Ht:u}=o(),d=e?"marginLeft":"marginRight",g=e?"paddingLeft":"paddingRight",f=u[d],v=u.marginBottom,h=u[g],p=u.paddingBottom;r.width=`calc(100% + ${_+-1*f}px)`,r[d]=-_+f,r.marginBottom=-c+v,n&&(r[g]=h+(l?_:0),r.paddingBottom=p+(s?c:0))};return(t,e,n)=>{const{pt:a,At:l,ft:y,Lt:m,It:S,Bt:O}=t,{G:$,D:C,B:z}=we(),{g:L,p:I}=l,{g:A,p:M}=a,{g:T,p:R}=e("nativeScrollbarsOverlaid.show"),V=T&&z.x&&z.y,j=!$&&(y||S||m||R||I);let P,H=_(n),B=d(n),E=f(n);if(R&&C&&(V?ot(s,Xt):rt(s,Xt)),j&&(P=p(V),v(P,!!L)),y||O||S||R||M){const{Wt:t,Jt:e}=((t,e,n)=>{if(r){const i=n||p(t),{Ht:a}=o(),{G:l}=we(),{Ut:c}=i,{x:_,y:u}=c,d={},g=t=>h(t.split(" "),t=>{d[t]=a[t]});l||(d.height=""),_&&g("marginBottom paddingTop paddingBottom"),u&&g("marginLeft marginRight paddingLeft paddingRight");const f=Lt(s,x(d));return ot(s,qt),Lt(s,d),{Wt:()=>{b(i,e,r,f),Lt(s,f),rt(s,qt)},Jt:i}}return{Wt:St}})(V,A,P),{g:i,p:a}=H=c(n),{g:l,p:_}=B=u(n),d=lt(s);let f=l,v=d;t(),(_||a||R)&&e&&!V&&w(e,l,i,A)&&(v=lt(s),f=ct(s)),E=g(n,{qt:i,Gt:{w:Be(l.w,f.w),h:Be(l.h,f.h)},kt:{w:v.w+Be(0,d.w-l.w),h:v.h+Be(0,d.h-l.h)}})}const{g:D,p:N}=H,{g:F,p:G}=B,{g:k,p:q}=E,{g:Y,p:X}=e("overflow");if(O||N||G||q||X||R||M||j){const t={marginRight:0,marginBottom:0,marginLeft:0,width:"",overflowY:"",overflowX:""},e=((t,e,n,r)=>{const{Et:o,Dt:i}=qe(!0,e.w,n.x,r),{Et:a,Dt:s}=qe(!1,e.h,n.y,r);return o&&!a&&(r.overflowX=i),a&&!o&&(r.overflowY=s),p(t,r)})(V,k,Y,t),n=w(e,F,D,A);b(e,A,n,t),j&&v(e,!!L),Lt(s,t),i({Kt:e.Yt,Qt:k})}}},Xe=(t,e)=>t?e.split(".").reduce((t,e)=>t&&S(t,e)?t[e]:void 0,t):void 0,Ue={g:!1,v:!1,p:!1},We={jt:{Pt:!1,j:{t:0,r:0,b:0,l:0}},Kt:{x:!1,y:!1},Qt:{w:0,h:0},Ht:{marginRight:0,marginBottom:0,marginLeft:0,paddingTop:0,paddingRight:0,paddingBottom:0,paddingLeft:0}};export default(t,e,n)=>{const{U:r}=we(),o=O({},r(),Ht(e||{},le,null,!0).M),i=Se(t),a=((t,e)=>{let n=We;const{et:r}=e.ct,{D:o,B:i,G:a,k:l,q:c}=we(),_=!o&&(i.x||i.y),u={V:t,zt:e,Nt:_,Ft:()=>n,Vt(t){n=O({},n,t)}},d=[Pe(u),He(u),Ye(u)],g=(e,n,o)=>{let{pt:i,At:l,ft:c=o||!1,Lt:u=o||!1,It:g=o||!1,Bt:w=o||!1}=e||{};const b=i||(f?f.ht(o).pt:Ue),y=l||(v?v.ht(o).At:Ue),m=e=>({g:Xe(t,e),p:o||void 0!==Xe(n,e)}),S=_||!a,x=S&&I(r),O=S&&A(r);p&&p(m),h(d,t=>{const{ft:e,Lt:n,It:r,Bt:i}=t({pt:b,At:y,ft:c,Lt:u,It:g,Bt:w},m,!!o)||{};c=e||c,u=n||u,g=r||g,w=i||w}),s(x)&&I(r,x),s(O)&&A(r,O),t.callbacks.onUpdated&&t.callbacks.onUpdated()},{Tt:f,Mt:v,Rt:p,ut:w}=je(u,g),b=(t,e)=>g(null,t,e),y=b.bind(null,null,!0);return l(y),console.log(we()),{u:b,Zt:()=>({te:n.Qt}),ut(){w(),c(y)}}})(o,i),l={options(t){if(t){const{M:e}=Ht(t,le,o,!0);$(e)||(O(o,e),a.u(e))}return o},state:()=>a.Zt(),update(t){a.u(null,t)}};return l.update(!0),l}; \ No newline at end of file +const t=(t,e)=>{const{o:n,s:r,u:o}=e||{};let i,s=n;return[(e,n)=>{const l=s,a=t?t(n,s,i):n,c=e||(r?!r(l,a):l!==a);return(c||o)&&(s=a,i=l),[s,c,i]},t=>[s,!!t,i]]},e=Node.ELEMENT_NODE,{toString:n,hasOwnProperty:r}=Object.prototype;function o(t){return void 0===t}function i(t){return null===t}const s=t=>o(t)||i(t)?`${t}`:n.call(t).replace(/^\[object (.+)\]$/,"$1").toLowerCase();function l(t){return"number"==typeof t}function a(t){return"string"==typeof t}function c(t){return"boolean"==typeof t}function u(t){return"function"==typeof t}function d(t){return Array.isArray(t)}function _(t){return"object"==typeof t&&!d(t)&&!i(t)}function g(t){const e=!!t&&t.length,n=l(e)&&e>-1&&e%1==0;return!!(d(t)||!u(t)&&n)&&(!(e>0&&_(t))||e-1 in t)}function f(t){if(!t||!_(t)||"object"!==s(t))return!1;let e;const n="constructor",i=t[n],l=i&&i.prototype,a=r.call(t,n),c=l&&r.call(l,"isPrototypeOf");if(i&&!a&&!c)return!1;for(e in t);return o(e)||r.call(t,e)}function v(t){const n=window.Element;return!!t&&(n?t instanceof n:t.nodeType===e)}function p(t,e){if(g(t))for(let n=0;ne(t[n],n,t));return t}const h=(t,e,n)=>t.indexOf(e,n),b=(t,e,n)=>(n||a(e)||!g(e)?t.push(e):Array.prototype.push.apply(t,e),t),w=t=>{if(Array.from)return Array.from(t);const e=[];return p(t,t=>{b(e,t)}),e},y=t=>t&&0===t.length,m=(t,e)=>{const n=t=>t&&t(e);t instanceof Set?t.forEach(n):p(t,n)},S=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),x=t=>t?Object.keys(t):[];function O(t,e,n,r,o,s,l){const a=[e,n,r,o,s,l];return"object"==typeof t&&!i(t)||u(t)||(t={}),p(a,e=>{p(x(e),n=>{const r=e[n];if(t===r)return!0;const o=d(r);if(r&&(f(r)||o)){const e=t[n];let i=e;o&&!d(e)?i=[]:o||f(e)||(i={}),t[n]=O(i,r)}else t[n]=r})}),t}function $(t){for(const e in t)return!1;return!0}function C(t,e,n,r){if(o(r))return n?n[t]:e;n&&(n[t]=r)}function z(t,e,n){if(o(n))return t?t.getAttribute(e):null;t&&t.setAttribute(e,n)}const I=(t,e)=>{t&&t.removeAttribute(e)};function L(t,e){return C("scrollLeft",0,t,e)}function A(t,e){return C("scrollTop",0,t,e)}const M=Element.prototype,T=(t,e)=>{const n=[],r=e?v(e)?e:null:document;return r?b(n,r.querySelectorAll(t)):n},R=(t,e)=>{if(v(t)){return(M.matches||M.msMatchesSelector).call(t,e)}return!1},V=t=>t?w(t.childNodes):[],j=t=>t?t.parentElement:null,P=(t,e,n)=>{if(n){let r,o=e;t&&(g(n)?(r=document.createDocumentFragment(),p(n,t=>{t===o&&(o=t.previousSibling),r.appendChild(t)})):r=n,e&&(o?o!==e&&(o=o.nextSibling):o=t.firstChild),t.insertBefore(r,o||null))}},E=(t,e)=>{P(t,null,e)},H=(t,e)=>{P(t,t&&t.firstChild,e)},B=(t,e)=>{P(j(t),t&&t.nextSibling,e)},D=t=>{if(g(t))p(w(t),t=>D(t));else if(t){const e=j(t);e&&e.removeChild(t)}},k=t=>{const e=document.createElement("div");return t&&z(e,"class",t),e},N=t=>{const e=k();return e.innerHTML=t.trim(),p(V(e),t=>D(t))},F=t=>t.charAt(0).toUpperCase()+t.slice(1),G=["-webkit-","-moz-","-o-","-ms-"],q=["WebKit","Moz","O","MS","webkit","moz","o","ms"],Y={},X={},U=t=>{let e=X[t];if(S(X,t))return e;const n=F(t),r=k().style;return p(G,o=>{const i=o.replace(/-/g,""),s=[t,o+t,i+n,F(i)+n];return!(e=s.find(t=>void 0!==r[t]))}),X[t]=e||""},W=t=>{let e=Y[t]||window[t];return S(Y,t)||(p(q,n=>(e=e||window[n+F(t)],!e)),Y[t]=e),e},J=W("MutationObserver"),K=W("IntersectionObserver"),Q=W("ResizeObserver"),Z=W("cancelAnimationFrame"),tt=W("requestAnimationFrame"),et=/[^\x20\t\r\n\f]+/g,nt=(t,e,n)=>{let r,o=0,i=!1;if(t&&a(e)){const s=e.match(et)||[];for(i=s.length>0;r=s[o++];)i=!!n(t.classList,r)&&i}return i},rt=(t,e)=>{nt(t,e,(t,e)=>t.add(e))},ot=(t,e)=>{nt(t,e,(t,e)=>t.remove(e))},it={w:0,h:0},st=()=>({w:window.innerWidth,h:window.innerHeight}),lt=t=>t?{w:t.offsetWidth,h:t.offsetHeight}:it,at=t=>t?{w:t.clientWidth,h:t.clientHeight}:it,ct=t=>t?{w:t.scrollWidth,h:t.scrollHeight}:it,ut=t=>t.getBoundingClientRect();let dt;const _t=t=>t.split(" "),gt=(t,e,n,r)=>{p(_t(e),e=>{t.removeEventListener(e,n,r)})},ft=(t,e,n,r)=>{const i=(()=>{if(o(dt)){dt=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){dt=!0}}))}catch(t){}}return dt})(),s=i&&r&&r._||!1,l=r&&r.g||!1,a=r&&r.v||!1,c=[],u=i?{passive:s,capture:l}:l;return p(_t(e),e=>{const r=a?o=>{t.removeEventListener(e,r,l),n&&n(o)}:n;b(c,gt.bind(null,t,e,r,l)),t.addEventListener(e,r,u)}),m.bind(0,c)},vt=t=>(t=>t.stopPropagation())(t)||(t=>t.preventDefault())(t),pt=(t,e,n,r)=>{if(t&&e){let o=!0;return p(n,n=>{(r?r(t[n]):t[n])!==(r?r(e[n]):e[n])&&(o=!1)}),o}return!1},ht=(t,e)=>pt(t,e,["w","h"]),bt=(t,e)=>pt(t,e,["t","r","b","l"]),wt=(t,e,n)=>pt(t,e,["width","height"],n&&(t=>Math.round(t))),yt=window.setTimeout,mt=t=>{t&&window.clearTimeout(t),t&&Z(t)},St=()=>{},xt=(t,e)=>{let n,r,o,i;const{p:s,m:a,S:c}=e,d=function(e){mt(n),mt(r),r=n=o=void 0,t.apply(this,e)},_=t=>c&&o?c(o,t):t,g=()=>{n&&d(_(i)||i)},f=function(){const t=arguments,e=u(s)?s():s,c=l(e)&&e>=0;if(c){const s=u(a)?a():a,c=l(s)&&s>=0,f=e>0?yt:tt,v=_(t),p=v||t,h=d.bind(0,p);v||d(o||t),mt(n),n=f(h,e),c&&!r&&(r=yt(g,s)),o=i=p}else d(t)};return f.O=g,f},Ot={opacity:1,zindex:1},$t=(t,e)=>{const n=e?parseFloat(t):parseInt(t,10);return Number.isNaN(n)?0:n},Ct=(t,e,n)=>null!=e?e[n]||e.getPropertyValue(n):t.style[n],zt=(t,e,n)=>{try{if(t){const{style:r}=t;o(r[e])?r.setProperty(e,n):r[e]=((t,e)=>!Ot[t.toLowerCase()]&&l(e)?`${e}px`:e)(e,n)}}catch(r){}};function It(t,e){const n=a(e);if(d(e)||n){let r=n?"":{};if(t){const o=window.getComputedStyle(t,null);r=n?Ct(t,o,e):e.reduce((e,n)=>(e[n]=Ct(t,o,n),e),r)}return r}p(x(e),n=>zt(t,n,e[n]))}const Lt=(t,e,n)=>{const r=e?`${e}-`:"",o=n?`-${n}`:"",i=`${r}top${o}`,s=`${r}right${o}`,l=`${r}bottom${o}`,a=`${r}left${o}`,c=It(t,[i,s,l,a]);return{t:$t(c[i]),r:$t(c[s]),b:$t(c[l]),l:$t(c[a])}},At={x:0,y:0},Mt=t=>{const e=t?ut(t):0;return e?{x:e.left+window.pageYOffset,y:e.top+window.pageXOffset}:At};var Tt={exports:{}};!function(t){function e(){return t.exports=e=Object.assign?Object.assign.bind():function(t){for(var e=1;e(t[e]=Pt[0]+e+Pt[1],t),{}),Ht=(t,e,n,r,i)=>{const u={},_=Rt({},t);return p(x(e).filter(e=>S(t,e)),g=>{const v=o(n[g])?{}:n[g],h=t[g],w=e[g],y=f(w),m=i?`${i}.`:"";if(y&&f(h)){const t=Ht(h,w,v,r,m+g);u[g]=t.C,_[g]=t.I,p([_,u],t=>{$(t[g])&&delete t[g]})}else if(!y){let t=!1;const e=[],n=[],i=s(h);if(p(d(w)?w:[w],r=>{let s;p(Et,(t,e)=>{t===r&&(s=e)});const l=o(s);if(l&&a(h)){const n=r.split(" ");t=!!n.find(t=>t===h),b(e,n)}else t=Et[i]===r;return b(n,l?Et.string:s),!t}),t){(d(h)&&!h.some(t=>!l(t)&&!a(t)&&!c(t))||f(h)?jt(h)!==jt(v):h!==v)&&(u[g]=h)}else r&&console.warn(`${`The option "${m}${g}" wasn't set, because it doesn't accept the type [ ${i.toUpperCase()} ] with the value of "${h}".\r\n`+`Accepted types are: [ ${n.join(", ").toUpperCase()} ].\r\n`}${e.length>0?`\r\nValid strings are: [ ${e.join(", ")} ].`:""}`);delete _[g]}}),{I:_,C:u}},Bt=(t,e,n,r)=>Ht(t,e,n||{},r||!1),Dt=t=>{const e={L:{},A:{}};return p(x(t),n=>{const r=t[n];if(d(r))e.L[n]=r[1],e.A[n]=r[0];else{const t=Dt(r);e.L[n]=t.L,e.A[n]=t.A}}),e},kt="os-environment",Nt=`${kt}-flexbox-glue`,Ft=`${Nt}-max`,Gt="os-host",qt="os-padding",Yt="os-viewport",Xt=`${Yt}-arrange`,Ut="os-content",Wt=`${Yt}-scrollbar-styled`,Jt="os-size-observer",Kt=`${Jt}-appear`,Qt=`${Jt}-listener`,Zt=`${Qt}-scroll`,te=`${Qt}-item`,ee=`${te}-final`,ne="os-trinsic-observer",re="os-scrollbar",oe=`${re}-horizontal`,ie=`${re}-vertical`,se="os-scrollbar-track",le="os-scrollbar-handle",ae=Et.number,ce=[Et.array,Et.null],ue=[Et.string,Et.array,Et.null],de=[!0,Et.boolean],_e=[!1,Et.boolean],ge="hidden scroll visible visible-hidden",fe={resize:["none","none both horizontal vertical"],paddingAbsolute:_e,updating:{elementEvents:[[["img","load"]],ce],attributes:[null,ce],debounce:[[0,33],[Et.number,Et.array,Et.null]]},overflow:{x:["scroll",ge],y:["scroll",ge]},scrollbars:{visibility:["auto","visible hidden auto"],autoHide:["never","never scroll leavemove"],autoHideDelay:[800,ae],dragScroll:de,clickScroll:_e,touch:de},textarea:{dynWidth:_e,dynHeight:_e,inheritedAttrs:[["style","class"],ue]},nativeScrollbarsOverlaid:{show:_e,initialize:_e},callbacks:{onUpdated:[null,[Et.function,Et.null]]}},{L:ve,A:pe}=Dt(fe);let he;const{abs:be,round:we}=Math,ye=(t,e)=>{E(t,e);const n=at(e),r=lt(e);return{x:r.h-n.h,y:r.w-n.w}},me=(t,e)=>{const n="hidden";It(t,{overflowX:n,overflowY:n,direction:"rtl"}),L(t,0);const r=Mt(t),o=Mt(e);L(t,-999);const i=Mt(e);return{i:r.x===o.x,n:o.x!==i.x}},Se=(t,e)=>{rt(t,Nt);const n=ut(t),r=ut(e),o=wt(r,n,!0);rt(t,Ft);const i=ut(t),s=ut(e),l=wt(s,i,!0);return o&&l},xe=()=>{const t=window.screen.deviceXDPI||0,e=window.screen.logicalXDPI||1;return window.devicePixelRatio||t/e},Oe=()=>{const{body:t}=document,e=N(`
`)[0],n=e.firstChild,r=new Set,o=ye(t,e),i=(t=>{let e=!1;rt(t,Wt);try{e="none"===It(t,U("scrollbar-width"))||"none"===window.getComputedStyle(t,"::-webkit-scrollbar").getPropertyValue("display")}catch(n){}return e})(e),s={x:0===o.x,y:0===o.y},l={M:null,T:null,R:null,V:null,j:null};let a=l,c=pe;const u={P:o,H:s,B:i,D:"-1"===It(e,"zIndex"),k:me(e,n),N:Se(e,n),F(t){r.add(t)},G(t){r.delete(t)},q:()=>Rt({},a),Y(t){a=O({},a,t)},X:()=>Rt({},c),U(t){c=O({},c,t)},W:l,J:c};if(I(e,"style"),D(e),!(i||s.x&&s.y)){let n=st(),i=xe(),s=o;window.addEventListener("resize",()=>{if(r.size){const o=st(),l={w:o.w-n.w,h:o.h-n.h};if(0===l.w&&0===l.h)return;const a={w:be(l.w),h:be(l.h)},c={w:be(we(o.w/(n.w/100))),h:be(we(o.h/(n.h/100)))},u=xe(),d=a.w>2&&a.h>2,_=!((t,e)=>{const n=be(t),r=be(e);return!(n===r||n+1===r||n-1===r)})(c.w,c.h),g=u!==i&&i>0;if(d&&_&&g){const n=he.P=ye(t,e);D(e),s.x===n.x&&s.y===n.y||m(r),s=n}n=o,i=u}})}return u},$e=()=>(he||(he=Oe()),he);let Ce=0;const ze=t=>{E(j(t),V(t)),D(t)},Ie=()=>{const{B:t,H:e,D:n}=$e(),r=!!(!n&&!t&&(e.x||e.y))&&document.createElement("style");return r&&(z(r,"id",`${Xt}-${Ce}`),Ce++),r},Le=(t,e,n,r)=>{const o=e||(u(n)?n(t):n);return o||k(r)},Ae=(t,e,n,r,o)=>{const i=c(e)||e?e:u(n)?n(t):n;return null===i?!!o&&k(r):!0===i?k(r):i},Me=t=>{const{q:n,B:r}=$e(),{M:o,T:i,R:s,V:l}=n(),a=function(t){const n=window.HTMLElement;return!!t&&(n?t instanceof n:t.nodeType===e)}(t),c=t,u=a?t:c.target,d=R(u,"textarea"),_=!d&&R(u,"body"),g=u.ownerDocument,f=g.body,v=g.defaultView,p={K:u,M:d?Le(u,c.host,o,Gt):u,T:Le(u,c.viewport,i,Yt),R:Ae(u,c.padding,s,qt,!r),V:Ae(u,c.content,l,Ut,!1),Z:Ie()},w={tt:v,et:g,nt:j(f),rt:f,ot:d,it:_,st:a},y=x(p).reduce((t,e)=>{const n=p[e];return b(t,!(!n||j(n))&&n)},[]),S=t=>t?h(y,t)>-1:null,{K:O,M:$,R:C,T:z,V:I,Z:L}=p,A=[],M=d&&S($),T=d?O:V([I,z,C,$,O].find(t=>!1===S(t))),H=I||z;var k,N;return M&&(B(O,$),b(A,()=>{B($,O),D($)})),E(H,T),E($,C),E(C||$,z),E(z,I),rt($,Gt),rt(C,qt),rt(z,Yt),rt(I,Ut),b(A,()=>{a?(E($,V(H)),D(C||z),ot($,Gt)):(S(I)&&ze(I),S(z)&&ze(z),S(C)&&ze(C),ot($,Gt),ot(C,qt),ot(z,Yt),ot(I,Ut))}),r&&b(A,ot.bind(0,z,Wt)),L&&(N=L,P(j(k=z),k,N),b(A,D.bind(0,L))),{lt:p,ct:w,ut:()=>{m(A)}}},Te=t=>{const e=k(`${re} ${t}`),n=k(se),r=k(le);return E(e,n),E(n,r),{dt:e,_t:n,gt:r}},Re="animationstart",Ve="scroll",je=3333333,Pe=t=>"rtl"===It(t,"direction"),Ee=t=>t&&(t.height||t.width),He=(e,n,r)=>{const{ft:o=!1,vt:i=!1}=r||{},{k:s}=$e(),l=N(`
`)[0],a=l.firstChild,u=Pe.bind(0,l),[g]=t(0,{o:void 0,u:!0,s:(t,e)=>!(!t||!Ee(t)&&Ee(e))}),f=t=>{const e=d(t)&&t.length>0&&_(t[0]),r=!e&&c(t[0]);let i=!1,a=!1,u=!0;if(e){const[e,,n]=g(0,t.pop().contentRect),r=Ee(e),o=Ee(n);i=!n||!r,a=!o&&r,u=!i}else r?[,u]=t:a=!0===t;if(o&&u){const e=r?t[0]:Pe(l);L(l,e?s.n?-je:s.i?0:je:je),A(l,je)}i||n({pt:!r,ht:r?t:void 0,vt:!!a})},v=[];let p,h=!!i&&f;if(Q){const t=new Q(f);t.observe(a),b(v,()=>{t.disconnect()})}else{const t=N(`
`);E(a,t),rt(a,Zt);const e=t[0],n=e.lastChild,r=e.firstChild,o=null==r?void 0:r.firstChild;let s,l=lt(e),c=l,u=!1;const d=()=>{L(r,je),A(r,je),L(n,je),A(n,je)},_=t=>{s=0,u&&(l=c,f(!0===t))},g=t=>{c=lt(e),u=!t||!ht(c,l),t?(vt(t),u&&!s&&(Z(s),s=tt(_))):_(!1===t),d()};b(v,[ft(r,Ve,g),ft(n,Ve,g)]),It(o,{width:je,height:je}),d(),h=i?g.bind(0,!1):d}if(o){p=t(u,{o:!u()});const[e]=p;b(v,ft(l,Ve,t=>{const n=e(),[r,o]=n;o&&(ot(a,"ltr rtl"),rt(a,r?"rtl":"ltr"),f(n)),vt(t)}))}return h&&(rt(l,Kt),b(v,ft(l,Re,h,{v:!!Q}))),H(e,l),{ut(){m(v),D(l)},bt:t=>({wt:p?p[1](t):[!1,!1,!1]})}},Be=(t,e,n,r)=>{let o=!1;const{yt:i,St:s,xt:l,Ot:c,$t:u,Ct:d,zt:_}=r||{},{ut:g,It:f}=((t,e,n)=>{let r,o=!1;const i=i=>{if(n){p(n.reduce((e,n)=>{if(n){const r=n[0],o=n[1],s=o&&r&&(i?i(r):T(r,t));s&&s.length&&o&&a(o)&&b(e,[s,o.trim()],!0)}return e},[]),t=>p(t[0],n=>{const i=t[1],s=r.get(n);if(s){const t=s[0],e=s[1];t===i&&e()}const l=ft(n,i,t=>{o?(l(),r.delete(n)):e(t)});r.set(n,[i,l])}))}};return n&&(r=new WeakMap,i()),{ut:()=>{o=!0},It:i}})(t,xt(()=>{o&&n(!0)},{p:33,m:99}),l),v=s||[],w=(i||[]).concat(v),m=o=>{const i=(e?d:u)||St,s=_||St,l=[],g=[];let w=!1,m=!1,S=!1;p(o,n=>{const{attributeName:o,target:u,type:d,oldValue:_,addedNodes:f}=n,p="attributes"===d,y="childList"===d,x=t===u,O=p&&a(o)?z(u,o):0,$=0!==O&&_!==O,C=h(v,o)>-1&&$;if(e&&!x){const e=!p,l=p&&C,a=l&&c&&R(u,c),d=(a?!i(u,o,_,O):e||l)&&!s(n,!!a,t,r);b(g,f),m=m||d,S=S||y}!e&&x&&$&&!i(u,o,_,O)&&(b(l,o),w=w||C)}),S&&!y(g)&&f(t=>g.reduce((e,n)=>(b(e,T(t,n)),R(n,t)?b(e,n):e),[])),e?m&&n(!1):y(l)&&!w||n(l,w)},S=new J(m);return S.observe(t,{attributes:!0,attributeOldValue:!0,attributeFilter:w,subtree:e,childList:e,characterData:e}),o=!0,{ut:()=>{o&&(g(),S.disconnect(),o=!1)},Lt:()=>{o&&m(S.takeRecords())}}},De="os-",ke=["tabindex"],Ne=["wrap","cols","rows"],Fe=["id","class","style","open"],Ge=(t,e,n,r)=>{if("class"===e&&n&&r){return!!((t,e)=>{const n=t&&t.split(" "),r=e&&e.split(" "),o={};return p(n,t=>{o[t]=1}),p(r,t=>{o[t]?delete o[t]:o[t]=1}),x(o)})(n,r).find(t=>0!==t.indexOf(De))}return!1},qe=(e,n)=>{let r,o,i;const{At:s}=e,{lt:c,ct:u}=s,{M:_,T:g,V:f}=c,{ot:v}=u,{B:w,N:y}=$e(),S=v?Ne:Fe.concat(Ne),x=xt(n,{p:()=>r,m:()=>o,S(t,e){const{pt:n,Mt:r,Tt:o}=t[0],{pt:i,Mt:s,Tt:l}=e[0];return[{pt:n||i,Mt:r||s,Tt:o||l}]}}),O=t=>{p(t||ke,t=>{if(h(ke,t)>-1){const e=z(_,t);a(e)?z(g,t,e):I(g,t)}})},$=t=>{(t?n:x)({Tt:!0})},C=(f||!y)&&((e,n)=>{const r=k(ne),o=[],[i,s]=t(t=>0===t.h||t.isIntersecting||t.intersectionRatio>0,{o:!1}),l=t=>{if(t){const e=i(0,t),[,r]=e;r&&n(e)}};if(K){const t=new K(t=>{t&&t.length>0&&l(t.pop())},{root:e});t.observe(r),b(o,()=>{t.disconnect()})}else{const t=()=>{const t=lt(r);l(t)};b(o,He(r,t).ut),t()}return H(e,r),{ut(){m(o),D(r)},bt:t=>({Rt:s(t)})}})(_,t=>{n({Rt:t})}),L=He(_,({pt:t,ht:e,vt:r})=>{(!t||r?n:x)({pt:t,wt:e})},{vt:!0,ft:!w}),A=Be(_,!1,(t,e)=>{e?x({Mt:!0}):O(t)},{St:Fe,yt:Fe.concat(ke),$t:Ge});return O(),{Vt:C,jt:L,Pt:t=>{const[e,n]=t("updating.elementEvents"),[s,a]=t("updating.attributes"),[c,u]=t("updating.debounce");if((n||a)&&(i&&(i.Lt(),i.ut()),i=Be(f||g,!0,$,{St:S.concat(s||[]),yt:S.concat(s||[]),xt:e,Ct:Ge})),u)if(x.O(),d(c)){const t=c[0],e=c[1];r=!!l(t)&&t,o=!!l(e)&&e}else l(c)?(r=c,o=!1):(r=!1,o=!1)},ut(){i&&i.ut(),C&&C.ut(),L.ut(),A.ut()}}},Ye=t=>{const{At:e}=t,{V:n}=e.lt;return t=>{const{Rt:e}=t,[r,o]=e;return o&&It(n,{height:r?"":"100%",display:r?"":"inline"}),{pt:o,Tt:o}}},Xe=e=>{const{At:n,Et:r}=e,{M:o,R:i,T:s}=n.lt,[l,a]=t(Lt.bind(0,o,"padding"),{s:bt,o:Lt()});return(t,e,n)=>{let[o,c]=a(n);const{B:u,N:d}=$e(),{pt:_,wt:g,Tt:f}=t,[v,p]=g,[h,b]=e("paddingAbsolute");(_||c||!d&&f)&&([o,c]=l(n));const w=b||p||c;if(w){const t=!h||!i&&!u,e=o.r+o.l,n=o.t+o.b,l={marginRight:t&&!v?-e:0,marginBottom:t?-n:0,marginLeft:t&&v?-e:0,top:t?-o.t:0,right:t?v?-o.r:"auto":0,left:t?v?"auto":-o.l:0,width:t?`calc(100% + ${e}px)`:""},a={paddingTop:t?o.t:0,paddingRight:t?o.r:0,paddingBottom:t?o.b:0,paddingLeft:t?o.l:0};It(i||s,l),It(s,a),r({Ht:{Bt:!t,R:o},Dt:i?a:Rt({},l,a)})}return{kt:w}}},{max:Ue,abs:We,round:Je}=Math,Ke=42,Qe={s:ht,o:{w:0,h:0}},Ze=t=>{const e=lt(t),n=ut(t);return{w:n.width-e.w,h:n.height-e.h}},tn=()=>window.devicePixelRatio%1==0?0:1,en=(t,e,n,r)=>{const o=t?"overflowX":"overflowY",i=0===n.indexOf("visible"),s="visible-hidden"===n,l="scroll"===n,a=e>0;return i&&(r[o]="visible"),l&&a&&(r[o]=n),{Nt:i,Ft:s?"hidden":"scroll"}},nn=e=>{const{At:n,Gt:r,qt:o,Et:i}=e,{M:s,T:l,Z:a}=n.lt,[c,u]=t(Ze.bind(0,l),Qe),[d,_]=t(ct.bind(0,l),Qe),[g,f]=t(({Yt:t,Xt:e,Ut:n})=>({w:Ue(0,Je(Ue(0,t.w-e.w)-(tn()||Ue(0,n.w)))),h:Ue(0,Je(Ue(0,t.h-e.h)-(tn()||Ue(0,n.h))))}),Qe),v=(t,e)=>{if(It(l,{height:""}),e){const{H:e}=$e(),{Bt:n,R:r}=o().Ht,{Wt:i,Jt:a}=t,c=Ze(s),u=at(s),d="content-box"===It(l,"boxSizing"),_=n||d?r.b+r.t:0,g=u.h+(We(c.h)<1?c.h:0),f=!(e.x&&d);It(l,{height:g+(i.x&&f?a.x:0)-_})}},h=(t,e)=>{const{P:n,H:r,B:o}=$e(),{x:i,y:s}=r,a=o||t?0:Ke,c=!e?It(l,["overflowX","overflowY"]):e,u={x:"scroll"===c.overflowX,y:"scroll"===c.overflowY};return{Wt:u,Kt:{x:i&&!!a,y:s&&!!a},Jt:{x:u.x&&!o?i?a:n.x:0,y:u.y&&!o?s?a:n.y:0}}},b=(t,e,n,i)=>{if(r){const{Jt:r,Kt:s}=t,{x:c,y:u}=s,{x:d,y:_}=r,{Dt:g}=o(),f=g[i?"paddingRight":"paddingLeft"],v=g.paddingTop,p=e.w+(We(n.w)<1?n.w:0),h=e.h+(We(n.h)<1?n.h:0),b={w:_&&u?`${_+p-f}px`:"",h:d&&c?`${d+h-v}px`:""};if(a){const{sheet:t}=a;if(t){const{cssRules:e}=t;if(e){e.length||t.insertRule(`#${z(a,"id")} + .${Xt}::before {}`,0);const n=e[0].style;n.width=b.w,n.height=b.h}}}else It(l,{"--os-vaw":b.w,"--os-vah":b.h})}return r},w=(t,e,n,r)=>{const{Jt:i,Kt:s}=t,{x:l,y:a}=s,{x:c,y:u}=i,{Dt:d}=o(),_=e?"marginLeft":"marginRight",g=e?"paddingLeft":"paddingRight",f=d[_],v=d.marginBottom,p=d[g],h=d.paddingBottom;r.width=`calc(100% + ${u+-1*f}px)`,r[_]=-u+f,r.marginBottom=-c+v,n&&(r[g]=p+(a?u:0),r.paddingBottom=h+(l?c:0))};return(t,e,n)=>{const{wt:s,Rt:a,pt:y,Mt:m,Tt:S,kt:O}=t,{N:$,B:C,H:z}=$e(),[I,L]=a,[A,M]=s,[T,R]=e("nativeScrollbarsOverlaid.show"),V=T&&z.x&&z.y,j=!$&&(y||S||m||R||L);let P,E=u(n),H=_(n),B=f(n);if(R&&C&&(V?ot(l,Wt):rt(l,Wt)),j&&(P=h(V),v(P,!!I)),y||O||S||R||M){const{Qt:t,Zt:e}=((t,e,n)=>{if(r){const i=n||h(t),{Dt:s}=o(),{N:a}=$e(),{Kt:c}=i,{x:u,y:d}=c,_={},g=t=>p(t.split(" "),t=>{_[t]=s[t]});a||(_.height=""),u&&g("marginBottom paddingTop paddingBottom"),d&&g("marginLeft marginRight paddingLeft paddingRight");const f=It(l,x(_));return ot(l,Xt),It(l,_),{Qt:()=>{w(i,e,r,f),It(l,f),rt(l,Xt)},Zt:i}}return{Qt:St}})(V,A,P),[i,s]=E=c(n),[a,u]=H=d(n),_=at(l);let f=a,v=_;t(),(u||s||R)&&e&&!V&&b(e,a,i,A)&&(v=at(l),f=ct(l)),B=g(n,{Ut:i,Yt:{w:Ue(a.w,f.w),h:Ue(a.h,f.h)},Xt:{w:v.w+Ue(0,_.w-a.w),h:v.h+Ue(0,_.h-a.h)}})}const[D,k]=E,[N,F]=H,[G,q]=B,[Y,X]=e("overflow");if(O||k||F||q||X||R||M||j){const t={marginRight:0,marginBottom:0,marginLeft:0,width:"",overflowY:"",overflowX:""},e=((t,e,n,r)=>{const{Nt:o,Ft:i}=en(!0,e.w,n.x,r),{Nt:s,Ft:l}=en(!1,e.h,n.y,r);return o&&!s&&(r.overflowX=i),s&&!o&&(r.overflowY=l),h(t,r)})(V,G,Y,t),n=b(e,N,D,A);w(e,A,n,t),j&&v(e,!!I),It(l,t),i({te:e.Wt,ee:G})}}},rn=(t,e)=>t?e.split(".").reduce((t,e)=>t&&S(t,e)?t[e]:void 0,t):void 0,on=[!1,!1,!1],sn={Ht:{Bt:!1,R:{t:0,r:0,b:0,l:0}},te:{x:!1,y:!1},ee:{w:0,h:0},Dt:{marginRight:0,marginBottom:0,marginLeft:0,paddingTop:0,paddingRight:0,paddingBottom:0,paddingLeft:0}},ln=(t,e,n)=>{const{X:r}=$e(),o=O({},r(),Bt(e||{},ve,null,!0).C),i=Me(t),s=((t,e)=>{const{q:n}=$e(),{j:r}=n(),{lt:o,ct:i}=e,{K:s,M:l,T:a}=o,c=!i.st&&t.scrollbarsSlot,d=(u(c)?c(s,l,a):c)||(u(r)?r(s,l,a):r)||l,_=Te(oe),g=Te(ie),{dt:f}=_,{dt:v}=g;return E(d,f),E(d,v),{ne:_,re:g,ut(){D([f,v])}}})(t,i),a=((t,e,n)=>{let r=sn;const{T:o}=e.lt,{B:i,H:s,N:a,F:c,G:u}=$e(),d=!i&&(s.x||s.y),_={A:t,At:e,Gt:d,qt:()=>r,Et(t){r=O({},r,t)}},g=[Ye(_),Xe(_),nn(_)],f=(e,n,r)=>{let{wt:i,Rt:s,pt:c=r||!1,Mt:u=r||!1,Tt:_=r||!1,kt:f=r||!1}=e||{};const w=i||(v?v.bt(r).wt:on),y=s||(h?h.bt(r).Rt:on),m=e=>[rn(t,e),r||void 0!==rn(n,e)],S=d||!a,x=S&&L(o),O=S&&A(o);b&&b(m),p(g,t=>{const{pt:e,Mt:n,Tt:o,kt:i}=t({wt:w,Rt:y,pt:c,Mt:u,Tt:_,kt:f},m,!!r)||{};c=e||c,u=n||u,_=o||_,f=i||f}),l(x)&&L(o,x),l(O)&&A(o,O),t.callbacks.onUpdated&&t.callbacks.onUpdated()},{jt:v,Vt:h,Pt:b,ut:w}=qe(_,f),y=(t,e)=>f(null,t,e),m=y.bind(null,null,!0);return c(m),console.log($e()),{Lt:y,oe:()=>({ie:r.ee}),ut(){w(),u(m),e.ut(),n.ut()}}})(o,i,s),c={options(t){if(t){const{C:e}=Bt(t,ve,o,!0);$(e)||(O(o,e),a.Lt(e))}return o},state:()=>a.oe(),update(t){a.Lt(null,t)},destroy:()=>a.ut()};return c.update(!0),c};export{ln as default}; \ No newline at end of file diff --git a/packages/overlayscrollbars/dist/overlayscrollbars.js b/packages/overlayscrollbars/dist/overlayscrollbars.js index 423725b..8c41792 100644 --- a/packages/overlayscrollbars/dist/overlayscrollbars.js +++ b/packages/overlayscrollbars/dist/overlayscrollbars.js @@ -1,17 +1,14 @@ (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'; + 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'; var createCache = function createCache(update, options) { var _ref = options || {}, - _equal = _ref._equal, - _initialValue = _ref._initialValue, - _alwaysUpdateValues = _ref._alwaysUpdateValues; + _initialValue = _ref._initialValue, + _equal = _ref._equal, + _alwaysUpdateValues = _ref._alwaysUpdateValues; var _value = _initialValue; @@ -27,29 +24,18 @@ _previous = curr; } - return { - _value: _value, - _previous: _previous, - _changed: changed, - }; + return [_value, changed, _previous]; }; - return { - _update: cacheUpdate, - _current: function _current(force) { - return { - _value: _value, - _previous: _previous, - _changed: !!force, - }; - }, - }; + return [cacheUpdate, function (force) { + return [_value, !!force, _previous]; + }]; }; var ElementNodeType = Node.ELEMENT_NODE; var _Object$prototype = Object.prototype, - toString = _Object$prototype.toString, - hasOwnProperty = _Object$prototype.hasOwnProperty; + toString = _Object$prototype.toString, + hasOwnProperty$1 = _Object$prototype.hasOwnProperty; function isUndefined(obj) { return obj === undefined; } @@ -57,12 +43,7 @@ return obj === null; } var type = function type(obj) { - return isUndefined(obj) || isNull(obj) - ? '' + obj - : toString - .call(obj) - .replace(/^\[object (.+)\]$/, '$1') - .toLowerCase(); + return isUndefined(obj) || isNull(obj) ? "" + obj : toString.call(obj).replace(/^\[object (.+)\]$/, '$1').toLowerCase(); }; function isNumber(obj) { return typeof obj === 'number'; @@ -85,7 +66,7 @@ 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; + 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; @@ -93,25 +74,24 @@ var cstr = 'constructor'; var ctor = obj[cstr]; var ctorProto = ctor && ctor.prototype; - var hasOwnConstructor = hasOwnProperty.call(obj, cstr); - var hasIsPrototypeOf = ctorProto && hasOwnProperty.call(ctorProto, 'isPrototypeOf'); + var hasOwnConstructor = hasOwnProperty$1.call(obj, cstr); + var hasIsPrototypeOf = ctorProto && hasOwnProperty$1.call(ctorProto, 'isPrototypeOf'); if (ctor && !hasOwnConstructor && !hasIsPrototypeOf) { return false; } - for (key in obj) { - } + for (key in obj) {} - return isUndefined(key) || hasOwnProperty.call(obj, key); + 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; + 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; + return obj ? instanceofObj ? obj instanceof instanceofObj : obj.nodeType === ElementNodeType : false; } function each(source, callback) { @@ -162,7 +142,7 @@ } }; - var hasOwnProperty$1 = function hasOwnProperty(obj, prop) { + var hasOwnProperty = function hasOwnProperty(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }; var keys = function keys(obj) { @@ -240,7 +220,7 @@ var find = function find(selector, elm) { var arr = []; - var rootElm = elm ? (isElement(elm) ? elm : null) : document; + var rootElm = elm ? isElement(elm) ? elm : null : document; return rootElm ? push(arr, rootElm.querySelectorAll(selector)) : arr; }; @@ -351,7 +331,7 @@ var cssProperty = function cssProperty(name) { var result = cssCache[name]; - if (hasOwnProperty$1(cssCache, name)) { + if (hasOwnProperty(cssCache, name)) { return result; } @@ -364,12 +344,12 @@ return elmStyle[resultPossibility] !== undefined; })); }); - return (cssCache[name] = result || ''); + return cssCache[name] = result || ''; }; var jsAPI = function jsAPI(name) { var result = jsCache[name] || window[name]; - if (hasOwnProperty$1(jsCache, name)) { + if (hasOwnProperty(jsCache, name)) { return result; } @@ -398,7 +378,7 @@ var classes = className.match(rnothtmlwhite) || []; result = classes.length > 0; - while ((clazz = classes[i++])) { + while (clazz = classes[i++]) { result = !!action(elm.classList, clazz) && result; } } @@ -432,39 +412,33 @@ return keys(tempObj); }; - var zeroObj = { + var zeroObj$1 = { w: 0, - h: 0, + h: 0 }; var windowSize = function windowSize() { return { w: window.innerWidth, - h: window.innerHeight, + h: window.innerHeight }; }; var offsetSize = function offsetSize(elm) { - return elm - ? { - w: elm.offsetWidth, - h: elm.offsetHeight, - } - : zeroObj; + return elm ? { + w: elm.offsetWidth, + h: elm.offsetHeight + } : zeroObj$1; }; var clientSize = function clientSize(elm) { - return elm - ? { - w: elm.clientWidth, - h: elm.clientHeight, - } - : zeroObj; + return elm ? { + w: elm.clientWidth, + h: elm.clientHeight + } : zeroObj$1; }; var scrollSize = function scrollSize(elm) { - return elm - ? { - w: elm.scrollWidth, - h: elm.scrollHeight, - } - : zeroObj; + return elm ? { + w: elm.scrollWidth, + h: elm.scrollHeight + } : zeroObj$1; }; var getBoundingClientRect = function getBoundingClientRect(elm) { return elm.getBoundingClientRect(); @@ -477,15 +451,11 @@ passiveEventsSupport = false; try { - window.addEventListener( - 'test', - null, - Object.defineProperty({}, 'passive', { - get: function get() { - passiveEventsSupport = true; - }, - }) - ); + window.addEventListener('test', null, Object.defineProperty({}, 'passive', { + get: function get() { + passiveEventsSupport = true; + } + })); } catch (e) {} } @@ -503,23 +473,19 @@ }; 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 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; + 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; + 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); }); @@ -558,15 +524,9 @@ 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); - } - ); + return equal(a, b, ['width', 'height'], round && function (value) { + return Math.round(value); + }); }; var setT = window.setTimeout; @@ -583,8 +543,8 @@ var prevArguments; var latestArguments; var _timeout = options._timeout, - _maxDelay = options._maxDelay, - _mergeParams = options._mergeParams; + _maxDelay = options._maxDelay, + _mergeParams = options._mergeParams; var invokeFunctionToDebounce = function invokeFunctionToDebounce(args) { clearTimeouts(timeoutId); @@ -639,7 +599,7 @@ var cssNumber = { opacity: 1, - zindex: 1, + zindex: 1 }; var parseToZeroOrNumber = function parseToZeroOrNumber(value, toFloat) { @@ -648,7 +608,7 @@ }; var adaptCSSVal = function adaptCSSVal(prop, val) { - return !cssNumber[prop.toLowerCase()] && isNumber(val) ? val + 'px' : val; + return !cssNumber[prop.toLowerCase()] && isNumber(val) ? val + "px" : val; }; var getCSSVal = function getCSSVal(elm, computedStyle, prop) { @@ -678,12 +638,10 @@ 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); + getStylesResult = getSingleStyle ? getCSSVal(elm, computedStyle, styles) : styles.reduce(function (result, key) { + result[key] = getCSSVal(elm, computedStyle, key); + return result; + }, getStylesResult); } return getStylesResult; @@ -694,63 +652,61 @@ }); } 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 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]), + l: parseToZeroOrNumber(result[left]) }; }; - var zeroObj$1 = { + var zeroObj = { x: 0, - y: 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$1; + return rect ? { + x: rect.left + window.pageYOffset, + y: rect.top + window.pageXOffset + } : zeroObj; }; - function createCommonjsModule(fn) { - var module = { exports: {} }; - return fn(module, module.exports), module.exports; + function getDefaultExportFromCjs (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } - var _extends_1 = createCommonjsModule(function (module) { - function _extends() { - module.exports = _extends = - Object.assign || - function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; + var _extends$1 = {exports: {}}; - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } + (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; - }; - + return target; + }, module.exports.__esModule = true, module.exports["default"] = module.exports; return _extends.apply(this, arguments); } - module.exports = _extends; - }); + module.exports = _extends, module.exports.__esModule = true, module.exports["default"] = module.exports; + })(_extends$1); + + var _extends = getDefaultExportFromCjs(_extends$1.exports); var stringify = JSON.stringify; var templateTypePrefixSuffix = ['__TPL_', '_TYPE__']; @@ -762,17 +718,17 @@ var validateRecursive = function validateRecursive(options, template, optionsDiff, doWriteErrors, propPath) { var validatedOptions = {}; - var optionsCopy = _extends_1({}, options); + var optionsCopy = _extends({}, options); var props = keys(template).filter(function (prop) { - return hasOwnProperty$1(options, prop); + return hasOwnProperty(options, prop); }); each(props, function (prop) { var optionsDiffValue = isUndefined(optionsDiff[prop]) ? {} : optionsDiff[prop]; var optionsValue = options[prop]; var templateValue = template[prop]; var templateIsComplex = isPlainObject(templateValue); - var propPrefix = propPath ? propPath + '.' : ''; + var propPrefix = propPath ? propPath + "." : ''; if (templateIsComplex && isPlainObject(optionsValue)) { var validatedResult = validateRecursive(optionsValue, templateValue, optionsDiffValue, doWriteErrors, propPrefix + prop); @@ -813,25 +769,16 @@ }); if (isValid) { - var doStringifyComparison = isArray(optionsValue) || isPlainObject(optionsValue); + var isPrimitiveArr = isArray(optionsValue) && !optionsValue.some(function (val) { + return !isNumber(val) && !isString(val) && !isBoolean(val); + }); + var doStringifyComparison = isPrimitiveArr || isPlainObject(optionsValue); if (doStringifyComparison ? stringify(optionsValue) !== stringify(optionsDiffValue) : optionsValue !== optionsDiffValue) { validatedOptions[prop] = optionsValue; } } else if (doWriteErrors) { - console.warn( - '' + - ('The option "' + - propPrefix + - prop + - "\" wasn't set, because it doesn't accept the type [ " + - optionsValueType.toUpperCase() + - ' ] with the value of "' + - optionsValue + - '".\r\n' + - ('Accepted types are: [ ' + errorPossibleTypes.join(', ').toUpperCase() + ' ].\r\n')) + - (errorEnumStrings.length > 0 ? '\r\nValid strings are: [ ' + errorEnumStrings.join(', ') + ' ].' : '') - ); + console.warn("" + ("The option \"" + propPrefix + prop + "\" wasn't set, because it doesn't accept the type [ " + optionsValueType.toUpperCase() + " ] with the value of \"" + optionsValue + "\".\r\n" + ("Accepted types are: [ " + errorPossibleTypes.join(', ').toUpperCase() + " ].\r\n")) + (errorEnumStrings.length > 0 ? "\r\nValid strings are: [ " + errorEnumStrings.join(', ') + " ]." : '')); } delete optionsCopy[prop]; @@ -839,7 +786,7 @@ }); return { _foreign: optionsCopy, - _validated: validatedOptions, + _validated: validatedOptions }; }; @@ -850,7 +797,7 @@ var transformOptions = function transformOptions(optionsWithOptionsTemplate) { var result = { _template: {}, - _options: {}, + _options: {} }; each(keys(optionsWithOptionsTemplate), function (key) { var val = optionsWithOptionsTemplate[key]; @@ -868,21 +815,26 @@ }; var classNameEnvironment = 'os-environment'; - var classNameEnvironmentFlexboxGlue = classNameEnvironment + '-flexbox-glue'; - var classNameEnvironmentFlexboxGlueMax = classNameEnvironmentFlexboxGlue + '-max'; + var classNameEnvironmentFlexboxGlue = classNameEnvironment + "-flexbox-glue"; + var classNameEnvironmentFlexboxGlueMax = classNameEnvironmentFlexboxGlue + "-max"; var classNameHost = 'os-host'; var classNamePadding = 'os-padding'; var classNameViewport = 'os-viewport'; - var classNameViewportArrange = classNameViewport + '-arrange'; + var classNameViewportArrange = classNameViewport + "-arrange"; var classNameContent = 'os-content'; - var classNameViewportScrollbarStyling = classNameViewport + '-scrollbar-styled'; + var classNameViewportScrollbarStyling = classNameViewport + "-scrollbar-styled"; 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 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 numberAllowedValues = optionsTemplateTypes.number; var arrayNullValues = [optionsTemplateTypes.array, optionsTemplateTypes.null]; @@ -899,14 +851,11 @@ updating: { elementEvents: [[['img', 'load']], arrayNullValues], attributes: [null, arrayNullValues], - debounce: [ - [0, 33], - [optionsTemplateTypes.number, optionsTemplateTypes.array, optionsTemplateTypes.null], - ], + debounce: [[0, 33], [optionsTemplateTypes.number, optionsTemplateTypes.array, optionsTemplateTypes.null]] }, overflow: { x: ['scroll', overflowAllowedValues], - y: ['scroll', overflowAllowedValues], + y: ['scroll', overflowAllowedValues] }, scrollbars: { visibility: ['auto', scrollbarsVisibilityAllowedValues], @@ -914,33 +863,33 @@ autoHideDelay: [800, numberAllowedValues], dragScroll: booleanTrueTemplate, clickScroll: booleanFalseTemplate, - touch: booleanTrueTemplate, + touch: booleanTrueTemplate }, textarea: { dynWidth: booleanFalseTemplate, dynHeight: booleanFalseTemplate, - inheritedAttrs: [['style', 'class'], stringArrayNullAllowedValues], + inheritedAttrs: [['style', 'class'], stringArrayNullAllowedValues] }, nativeScrollbarsOverlaid: { show: booleanFalseTemplate, - initialize: booleanFalseTemplate, + initialize: booleanFalseTemplate }, callbacks: { - onUpdated: [null, [optionsTemplateTypes.function, optionsTemplateTypes.null]], - }, + onUpdated: [null, [optionsTemplateTypes.function, optionsTemplateTypes.null]] + } }; var _transformOptions = transformOptions(defaultOptionsWithTemplate), - optionsTemplate = _transformOptions._template, - defaultOptions = _transformOptions._options; + optionsTemplate = _transformOptions._template, + defaultOptions = _transformOptions._options; var environmentInstance; - var abs = Math.abs, - round = Math.round; + var abs$1 = Math.abs, + round$1 = Math.round; var diffBiggerThanOne = function diffBiggerThanOne(valOne, valTwo) { - var absValOne = abs(valOne); - var absValTwo = abs(valTwo); + var absValOne = abs$1(valOne); + var absValTwo = abs$1(valTwo); return !(absValOne === absValTwo || absValOne + 1 === absValTwo || absValOne - 1 === absValTwo); }; @@ -950,7 +899,7 @@ var oSize = offsetSize(measureElm); return { x: oSize.h - cSize.h, - y: oSize.w - cSize.w, + y: oSize.w - cSize.w }; }; @@ -959,9 +908,7 @@ addClass(testElm, classNameViewportScrollbarStyling); try { - result = - style(testElm, cssProperty('scrollbar-width')) === 'none' || - window.getComputedStyle(testElm, '::-webkit-scrollbar').getPropertyValue('display') === 'none'; + result = style(testElm, cssProperty('scrollbar-width')) === 'none' || window.getComputedStyle(testElm, '::-webkit-scrollbar').getPropertyValue('display') === 'none'; } catch (ex) {} return result; @@ -972,7 +919,7 @@ style(parentElm, { overflowX: strHidden, overflowY: strHidden, - direction: 'rtl', + direction: 'rtl' }); scrollLeft(parentElm, 0); var parentOffset = absoluteCoordinates(parentElm); @@ -981,7 +928,7 @@ var childOffsetAfterScroll = absoluteCoordinates(childElm); return { i: parentOffset.x === childOffset.x, - n: childOffset.x !== childOffsetAfterScroll.x, + n: childOffset.x !== childOffsetAfterScroll.x }; }; @@ -1005,15 +952,18 @@ var getDefaultInitializationStrategy = function getDefaultInitializationStrategy(nativeScrollbarStyling) { return { - _padding: !nativeScrollbarStyling, - _content: false, + _host: null, + _viewport: null, + _padding: null, + _content: null, + _scrollbarsSlot: null }; }; var createEnvironment = function createEnvironment() { var _document = document, - body = _document.body; - var envDOM = createDOM('
'); + body = _document.body; + var envDOM = createDOM("
"); var envElm = envDOM[0]; var envChildElm = envElm.firstChild; var onChangedListener = new Set(); @@ -1021,9 +971,9 @@ var nativeScrollbarStyling = getNativeScrollbarStyling(envElm); var nativeScrollbarIsOverlaid = { x: nativeScrollbarSize.x === 0, - y: nativeScrollbarSize.y === 0, + y: nativeScrollbarSize.y === 0 }; - var defaultInitializationStrategy = getDefaultInitializationStrategy(nativeScrollbarStyling); + var defaultInitializationStrategy = getDefaultInitializationStrategy(); var initializationStrategy = defaultInitializationStrategy; var defaultDefaultOptions = defaultOptions; var env = { @@ -1040,19 +990,19 @@ onChangedListener.delete(listener); }, _getInitializationStrategy: function _getInitializationStrategy() { - return _extends_1({}, initializationStrategy); + return _extends({}, initializationStrategy); }, _setInitializationStrategy: function _setInitializationStrategy(newInitializationStrategy) { initializationStrategy = assignDeep({}, initializationStrategy, newInitializationStrategy); }, _getDefaultOptions: function _getDefaultOptions() { - return _extends_1({}, defaultDefaultOptions); + return _extends({}, defaultDefaultOptions); }, _setDefaultOptions: function _setDefaultOptions(newDefaultOptions) { defaultDefaultOptions = assignDeep({}, defaultDefaultOptions, newDefaultOptions); }, _defaultInitializationStrategy: defaultInitializationStrategy, - _defaultDefaultOptions: defaultDefaultOptions, + _defaultDefaultOptions: defaultDefaultOptions }; removeAttr(envElm, 'style'); removeElements(envElm); @@ -1066,16 +1016,16 @@ var sizeNew = windowSize(); var deltaSize = { w: sizeNew.w - size.w, - h: sizeNew.h - size.h, + h: sizeNew.h - size.h }; if (deltaSize.w === 0 && deltaSize.h === 0) return; var deltaAbsSize = { - w: abs(deltaSize.w), - h: abs(deltaSize.h), + w: abs$1(deltaSize.w), + h: abs$1(deltaSize.h) }; var deltaAbsRatio = { - w: abs(round(sizeNew.w / (size.w / 100.0))), - h: abs(round(sizeNew.h / (size.h / 100.0))), + w: abs$1(round$1(sizeNew.w / (size.w / 100.0))), + h: abs$1(round$1(sizeNew.h / (size.h / 100.0))) }; var dprNew = getWindowDPR(); var deltaIsBigger = deltaAbsSize.w > 2 && deltaAbsSize.h > 2; @@ -1084,7 +1034,7 @@ var isZoom = deltaIsBigger && difference && dprChanged; if (isZoom) { - var newScrollbarSize = (environmentInstance._nativeScrollbarSize = getNativeScrollbarSize(body, envElm)); + var newScrollbarSize = environmentInstance._nativeScrollbarSize = getNativeScrollbarSize(body, envElm); removeElements(envElm); if (scrollbarSize.x !== newScrollbarSize.x || scrollbarSize.y !== newScrollbarSize.y) { @@ -1111,77 +1061,103 @@ return environmentInstance; }; + var contentArrangeCounter = 0; + var unwrap = function unwrap(elm) { appendChildren(parent(elm), contents(elm)); removeElements(elm); }; - var contentArrangeCounter = 0; - var createUniqueViewportArrangeElement = function createUniqueViewportArrangeElement() { - var elm = document.createElement('style'); - attr(elm, 'id', classNameViewportArrange + '-' + contentArrangeCounter); - contentArrangeCounter++; - return elm; - }; + var _getEnvironment = getEnvironment(), + _nativeScrollbarStyling = _getEnvironment._nativeScrollbarStyling, + _nativeScrollbarIsOverlaid = _getEnvironment._nativeScrollbarIsOverlaid, + _cssCustomProperties = _getEnvironment._cssCustomProperties; - var evaluateCreationFromStrategy = function evaluateCreationFromStrategy(initializationValue, strategy) { - var isBooleanValue = isBoolean(initializationValue); + var create = !_cssCustomProperties && !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y); + var result = create ? document.createElement('style') : false; - if (isBooleanValue || isUndefined(initializationValue)) { - return (isBooleanValue ? initializationValue : strategy) && undefined; + if (result) { + attr(result, 'id', classNameViewportArrange + "-" + contentArrangeCounter); + contentArrangeCounter++; } - return initializationValue; + return result; + }; + + var staticCreationFromStrategy = function staticCreationFromStrategy(target, initializationValue, strategy, elementClass) { + var result = initializationValue ? initializationValue : isFunction(strategy) ? strategy(target) : strategy; + return result ? result : createDiv(elementClass); + }; + + var dynamicCreationFromStrategy = function dynamicCreationFromStrategy(target, initializationValue, strategy, elementClass, defaultValue) { + var takeInitializationValue = isBoolean(initializationValue) || initializationValue; + var result = takeInitializationValue ? initializationValue : isFunction(strategy) ? strategy(target) : strategy; + + if (result === null) { + return defaultValue ? createDiv(elementClass) : false; + } + + return result === true ? createDiv(elementClass) : result; }; var createStructureSetup = function createStructureSetup(target) { - var _getEnvironment = getEnvironment(), - _getInitializationStrategy = _getEnvironment._getInitializationStrategy, - _nativeScrollbarStyling = _getEnvironment._nativeScrollbarStyling, - _nativeScrollbarIsOverlaid = _getEnvironment._nativeScrollbarIsOverlaid, - _cssCustomProperties = _getEnvironment._cssCustomProperties; + var _getEnvironment2 = getEnvironment(), + _getInitializationStrategy = _getEnvironment2._getInitializationStrategy, + _nativeScrollbarStyling = _getEnvironment2._nativeScrollbarStyling; var _getInitializationStr = _getInitializationStrategy(), - paddingNeeded = _getInitializationStr._padding, - contentNeeded = _getInitializationStr._content; + hostInitializationStrategy = _getInitializationStr._host, + viewportInitializationStrategy = _getInitializationStr._viewport, + paddingInitializationStrategy = _getInitializationStr._padding, + contentInitializationStrategy = _getInitializationStr._content; var targetIsElm = isHTMLElement(target); - var osTargetObj = targetIsElm - ? {} - : { - _host: target.host, - _target: target.target, - _viewport: target.viewport, - _padding: evaluateCreationFromStrategy(target.padding, paddingNeeded), - _content: evaluateCreationFromStrategy(target.content, contentNeeded), - }; + 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 evaluatedTargetObj = { + _target: targetElement, + _host: isTextarea ? staticCreationFromStrategy(targetElement, targetStructureInitialization.host, hostInitializationStrategy, classNameHost) : targetElement, + _viewport: staticCreationFromStrategy(targetElement, targetStructureInitialization.viewport, viewportInitializationStrategy, classNameViewport), + _padding: dynamicCreationFromStrategy(targetElement, targetStructureInitialization.padding, paddingInitializationStrategy, classNamePadding, !_nativeScrollbarStyling), + _content: dynamicCreationFromStrategy(targetElement, targetStructureInitialization.content, contentInitializationStrategy, classNameContent, false), + _viewportArrange: createUniqueViewportArrangeElement() + }; + var ctx = { + _windowElm: wnd, + _documentElm: ownerDocument, + _htmlElm: parent(bodyElm), + _bodyElm: bodyElm, + _isTextarea: isTextarea, + _isBody: isBody, + _targetIsElm: targetIsElm + }; + var generatedElements = keys(evaluatedTargetObj).reduce(function (arr, key) { + var value = evaluatedTargetObj[key]; + return push(arr, value && !parent(value) ? value : false); + }, []); - if (targetIsElm) { - var viewport = createDiv(classNameViewport); - var padding = paddingNeeded && createDiv(classNamePadding); - var content = contentNeeded && createDiv(classNameContent); - osTargetObj._target = target; - osTargetObj._padding = padding; - osTargetObj._viewport = viewport; - osTargetObj._content = content; - } - - var _target = osTargetObj._target, - _padding = osTargetObj._padding, - _viewport = osTargetObj._viewport, - _content = osTargetObj._content; - var destroyFns = []; - var isTextarea = is(_target, 'textarea'); - var isBody = !isTextarea && is(_target, 'body'); - - var _host = isTextarea ? osTargetObj._host || createDiv() : _target; - - var getTargetContents = function getTargetContents(contentSlot) { - return isTextarea ? _target : contents(contentSlot); + var elementIsGenerated = function elementIsGenerated(elm) { + return elm ? indexOf(generatedElements, elm) > -1 : null; }; - var isTextareaHostGenerated = isTextarea && _host !== osTargetObj._host; + 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; if (isTextareaHostGenerated) { insertAfter(_target, _host); @@ -1191,43 +1167,29 @@ }); } - if (targetIsElm) { - var contentSlot = _content || _viewport; - appendChildren(contentSlot, getTargetContents(_target)); - appendChildren(_host, _padding); - appendChildren(_padding || _host, _viewport); - appendChildren(_viewport, _content); - push(destroyFns, function () { + appendChildren(contentSlot, targetContents); + appendChildren(_host, _padding); + appendChildren(_padding || _host, _viewport); + appendChildren(_viewport, _content); + addClass(_host, classNameHost); + addClass(_padding, classNamePadding); + addClass(_viewport, classNameViewport); + addClass(_content, classNameContent); + push(destroyFns, function () { + if (targetIsElm) { appendChildren(_host, contents(contentSlot)); removeElements(_padding || _viewport); removeClass(_host, classNameHost); - }); - } else { - var contentContainingElm = _content || _viewport || _padding || _host; - var createPadding = isUndefined(_padding); - var createViewport = isUndefined(_viewport); - var createContent = isUndefined(_content); - var targetContents = getTargetContents(contentContainingElm); - _padding = osTargetObj._padding = createPadding ? createDiv() : _padding; - _viewport = osTargetObj._viewport = createViewport ? createDiv() : _viewport; - _content = osTargetObj._content = createContent ? createDiv() : _content; - appendChildren(_host, _padding); - appendChildren(_padding || _host, _viewport); - appendChildren(_viewport, _content); - - var _contentSlot = _content || _viewport; - - appendChildren(_contentSlot, targetContents); - push(destroyFns, function () { - if (createContent) { + } else { + if (elementIsGenerated(_content)) { unwrap(_content); } - if (createViewport) { + if (elementIsGenerated(_viewport)) { unwrap(_viewport); } - if (createPadding) { + if (elementIsGenerated(_padding)) { unwrap(_padding); } @@ -1235,44 +1197,67 @@ removeClass(_padding, classNamePadding); removeClass(_viewport, classNameViewport); removeClass(_content, classNameContent); - }); - } - - addClass(_host, classNameHost); - addClass(_padding, classNamePadding); - addClass(_viewport, classNameViewport); - addClass(_content, classNameContent); - var ownerDocument = _target.ownerDocument; - var bodyElm = ownerDocument.body; - var wnd = ownerDocument.defaultView; - var ctx = { - _windowElm: wnd, - _documentElm: ownerDocument, - _htmlElm: parent(bodyElm), - _bodyElm: bodyElm, - _isTextarea: isTextarea, - _isBody: isBody, - }; - - var obj = _extends_1({}, osTargetObj, { - _host: _host, + } }); if (_nativeScrollbarStyling) { push(destroyFns, removeClass.bind(0, _viewport, classNameViewportScrollbarStyling)); - } else if (!_cssCustomProperties && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y)) { - var viewportArrangeElm = createUniqueViewportArrangeElement(); - insertBefore(_viewport, viewportArrangeElm); - push(destroyFns, removeElements.bind(0, viewportArrangeElm)); - obj._viewportArrange = viewportArrangeElm; + } + + if (_viewportArrange) { + insertBefore(_viewport, _viewportArrange); + push(destroyFns, removeElements.bind(0, _viewportArrange)); } return { - _targetObj: obj, + _targetObj: evaluatedTargetObj, _targetCtx: ctx, _destroy: function _destroy() { runEach(destroyFns); - }, + } + }; + }; + + 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 createScrollbarsSetup = function createScrollbarsSetup(target, structureSetup) { + var _getEnvironment = getEnvironment(), + _getInitializationStrategy = _getEnvironment._getInitializationStrategy; + + var _getInitializationStr = _getInitializationStrategy(), + environmentScrollbarSlot = _getInitializationStr._scrollbarsSlot; + + var _targetObj = structureSetup._targetObj, + _targetCtx = structureSetup._targetCtx; + var _target = _targetObj._target, + _host = _targetObj._host, + _viewport = _targetObj._viewport; + var initializationScrollbarSlot = !_targetCtx._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 { + _horizontalScrollbarStructure: horizontalScrollbarStructure, + _verticalScrollbarStructure: verticalScrollbarStructure, + _destroy: function _destroy() { + removeElements([horizontalScrollbar, verticalScrollbar]); + } }; }; @@ -1280,7 +1265,7 @@ var scrollEventName = 'scroll'; var scrollAmount = 3333333; - var directionIsRTL = function directionIsRTL(elm) { + var getElmDirectionIsRTL = function getElmDirectionIsRTL(elm) { return style(elm, 'direction') === 'rtl'; }; @@ -1290,51 +1275,54 @@ 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; + _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; + rtlScrollBehavior = _getEnvironment._rtlScrollBehavior; - var baseElements = createDOM('
'); + var baseElements = createDOM("
"); var sizeObserver = baseElements[0]; var listenerElement = sizeObserver.firstChild; + var getIsDirectionRTL = getElmDirectionIsRTL.bind(0, sizeObserver); var _createCache = createCache(0, { - _alwaysUpdateValues: true, - _equal: function _equal(currVal, newVal) { - return !(!currVal || (!domRectHasDimensions(currVal) && domRectHasDimensions(newVal))); - }, - }), - updateResizeObserverContentRectCache = _createCache._update; + _initialValue: undefined, + _alwaysUpdateValues: true, + _equal: function _equal(currVal, newVal) { + return !(!currVal || !domRectHasDimensions(currVal) && domRectHasDimensions(newVal)); + } + }), + updateResizeObserverContentRectCache = _createCache[0]; var onSizeChangedCallbackProxy = function onSizeChangedCallbackProxy(sizeChangedContext) { - var hasDirectionCache = sizeChangedContext && isBoolean(sizeChangedContext._value); + 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 (isArray(sizeChangedContext) && sizeChangedContext.length > 0) { + if (isResizeObserverCall) { var _updateResizeObserver = updateResizeObserverContentRectCache(0, sizeChangedContext.pop().contentRect), - _previous = _updateResizeObserver._previous, - _value = _updateResizeObserver._value; + currRContentRect = _updateResizeObserver[0], + prevContentRect = _updateResizeObserver[2]; - var hasDimensions = domRectHasDimensions(_value); - var hadDimensions = domRectHasDimensions(_previous); - skip = !_previous || !hasDimensions; + var hasDimensions = domRectHasDimensions(currRContentRect); + var hadDimensions = domRectHasDimensions(prevContentRect); + skip = !prevContentRect || !hasDimensions; appear = !hadDimensions && hasDimensions; doDirectionScroll = !skip; } else if (hasDirectionCache) { - doDirectionScroll = sizeChangedContext._changed; + doDirectionScroll = sizeChangedContext[1]; } else { appear = sizeChangedContext === true; } if (observeDirectionChange && doDirectionScroll) { - var rtl = hasDirectionCache ? sizeChangedContext._value : directionIsRTL(sizeObserver); - scrollLeft(sizeObserver, rtl ? (rtlScrollBehavior.n ? -scrollAmount : rtlScrollBehavior.i ? 0 : scrollAmount) : scrollAmount); + var rtl = hasDirectionCache ? sizeChangedContext[0] : getElmDirectionIsRTL(sizeObserver); + scrollLeft(sizeObserver, rtl ? rtlScrollBehavior.n ? -scrollAmount : rtlScrollBehavior.i ? 0 : scrollAmount : scrollAmount); scrollTop(sizeObserver, scrollAmount); } @@ -1342,7 +1330,7 @@ onSizeChangedCallback({ _sizeChanged: !hasDirectionCache, _directionIsRTLCache: hasDirectionCache ? sizeChangedContext : undefined, - _appear: !!appear, + _appear: !!appear }); } }; @@ -1358,19 +1346,7 @@ resizeObserverInstance.disconnect(); }); } else { - var observerElementChildren = createDOM( - '
' - ); + var observerElementChildren = createDOM("
"); appendChildren(listenerElement, observerElementChildren); addClass(listenerElement, classNameSizeObserverListenerScroll); var observerElementChildrenRoot = observerElementChildren[0]; @@ -1419,48 +1395,44 @@ push(offListeners, [on(expandElement, scrollEventName, onScroll), on(shrinkElement, scrollEventName, onScroll)]); style(expandElementChild, { width: scrollAmount, - height: scrollAmount, + height: scrollAmount }); reset(); appearCallback = observeAppearChange ? onScroll.bind(0, false) : reset; } if (observeDirectionChange) { - directionIsRTLCache = createCache(directionIsRTL.bind(0, sizeObserver)); + directionIsRTLCache = createCache(getIsDirectionRTL, { + _initialValue: !getIsDirectionRTL() + }); var _directionIsRTLCache = directionIsRTLCache, - updateDirectionIsRTLCache = _directionIsRTLCache._update; - push( - offListeners, - on(sizeObserver, scrollEventName, function (event) { - var directionIsRTLCacheValues = updateDirectionIsRTLCache(); - var _value = directionIsRTLCacheValues._value, - _changed = directionIsRTLCacheValues._changed; + updateDirectionIsRTLCache = _directionIsRTLCache[0]; + push(offListeners, on(sizeObserver, scrollEventName, function (event) { + var directionIsRTLCacheValues = updateDirectionIsRTLCache(); + var directionIsRTL = directionIsRTLCacheValues[0], + directionIsRTLChanged = directionIsRTLCacheValues[1]; - if (_changed) { - removeClass(listenerElement, 'ltr rtl'); + if (directionIsRTLChanged) { + removeClass(listenerElement, 'ltr rtl'); - if (_value) { - addClass(listenerElement, 'rtl'); - } else { - addClass(listenerElement, 'ltr'); - } - - onSizeChangedCallbackProxy(directionIsRTLCacheValues); + if (directionIsRTL) { + addClass(listenerElement, 'rtl'); + } else { + addClass(listenerElement, 'ltr'); } - stopAndPrevent(event); - }) - ); + onSizeChangedCallbackProxy(directionIsRTLCacheValues); + } + + stopAndPrevent(event); + })); } if (appearCallback) { addClass(sizeObserver, classNameSizeObserverAppear); - push( - offListeners, - on(sizeObserver, animationStartEventName, appearCallback, { - _once: !!ResizeObserverConstructor, - }) - ); + push(offListeners, on(sizeObserver, animationStartEventName, appearCallback, { + _once: !!ResizeObserverConstructor + })); } prependChildren(target, sizeObserver); @@ -1471,15 +1443,9 @@ }, _getCurrentCacheValues: function _getCurrentCacheValues(force) { return { - _directionIsRTL: directionIsRTLCache - ? directionIsRTLCache._current(force) - : { - _value: false, - _previous: false, - _changed: false, - }, + _directionIsRTL: directionIsRTLCache ? directionIsRTLCache[1](force) : [false, false, false] }; - }, + } }; }; @@ -1487,36 +1453,33 @@ var trinsicObserver = createDiv(classNameTrinsicObserver); var offListeners = []; - var _createCache = createCache( - function (ioEntryOrSize) { - return ioEntryOrSize.h === 0 || ioEntryOrSize.isIntersecting || ioEntryOrSize.intersectionRatio > 0; - }, - { - _initialValue: false, + var _createCache = createCache(function (ioEntryOrSize) { + return ioEntryOrSize.h === 0 || ioEntryOrSize.isIntersecting || ioEntryOrSize.intersectionRatio > 0; + }, { + _initialValue: false + }), + updateHeightIntrinsicCache = _createCache[0], + getCurrentHeightIntrinsicCache = _createCache[1]; + + var triggerOnTrinsicChangedCallback = function triggerOnTrinsicChangedCallback(updateValue) { + if (updateValue) { + var heightIntrinsic = updateHeightIntrinsicCache(0, updateValue); + var heightIntrinsicChanged = heightIntrinsic[1]; + + if (heightIntrinsicChanged) { + onTrinsicChangedCallback(heightIntrinsic); } - ), - updateHeightIntrinsicCache = _createCache._update, - getCurrentHeightIntrinsicCache = _createCache._current; + } + }; if (IntersectionObserverConstructor) { - var intersectionObserverInstance = new IntersectionObserverConstructor( - function (entries) { - if (entries && entries.length > 0) { - var last = entries.pop(); - - if (last) { - var heightIntrinsic = updateHeightIntrinsicCache(0, last); - - if (heightIntrinsic._changed) { - onTrinsicChangedCallback(heightIntrinsic); - } - } - } - }, - { - root: target, + var intersectionObserverInstance = new IntersectionObserverConstructor(function (entries) { + if (entries && entries.length > 0) { + triggerOnTrinsicChangedCallback(entries.pop()); } - ); + }, { + root: target + }); intersectionObserverInstance.observe(trinsicObserver); push(offListeners, function () { intersectionObserverInstance.disconnect(); @@ -1524,11 +1487,7 @@ } else { var onSizeChanged = function onSizeChanged() { var newSize = offsetSize(trinsicObserver); - var heightIntrinsicCache = updateHeightIntrinsicCache(0, newSize); - - if (heightIntrinsicCache._changed) { - onTrinsicChangedCallback(heightIntrinsicCache); - } + triggerOnTrinsicChangedCallback(newSize); }; push(offListeners, createSizeObserver(trinsicObserver, onSizeChanged)._destroy); @@ -1543,26 +1502,22 @@ }, _getCurrentCacheValues: function _getCurrentCacheValues(force) { return { - _heightIntrinsic: getCurrentHeightIntrinsicCache(force), + _heightIntrinsic: getCurrentHeightIntrinsicCache(force) }; - }, + } }; }; - var createEventContentChange = function createEventContentChange(target, eventContentChange, callback) { + var createEventContentChange = function createEventContentChange(target, callback, eventContentChange) { var map; + var destroyed = false; var _destroy = function _destroy() { - if (map) { - map.forEach(function (eventName, elm) { - off(elm, eventName, callback); - }); - map.clear(); - } + destroyed = true; }; var _updateElements = function _updateElements(getElements) { - if (map && eventContentChange) { + if (eventContentChange) { var eventElmList = eventContentChange.reduce(function (arr, item) { if (item) { var selector = item[0]; @@ -1579,33 +1534,40 @@ each(eventElmList, function (item) { return each(item[0], function (elm) { var eventNames = item[1]; - var registredEventNames = map.get(elm); - var newEntry = isUndefined(registredEventNames); - var changingExistingEntry = !newEntry && eventNames !== registredEventNames; - var finalEventNames = changingExistingEntry ? registredEventNames + ' ' + eventNames : eventNames; + var entry = map.get(elm); - if (changingExistingEntry) { - off(elm, registredEventNames, callback); + if (entry) { + var entryEventNames = entry[0]; + var entryOff = entry[1]; + + if (entryEventNames === eventNames) { + entryOff(); + } } - map.set(elm, finalEventNames); - on(elm, finalEventNames, callback); + var off = on(elm, eventNames, function (event) { + if (destroyed) { + off(); + map.delete(elm); + } else { + callback(event); + } + }); + map.set(elm, [eventNames, off]); }); }); } }; if (eventContentChange) { - map = map || new Map(); - - _destroy(); + map = new WeakMap(); _updateElements(); } return { _destroy: _destroy, - _updateElements: _updateElements, + _updateElements: _updateElements }; }; @@ -1613,31 +1575,24 @@ var isConnected = false; var _ref = options || {}, - _attributes = _ref._attributes, - _styleChangingAttributes = _ref._styleChangingAttributes, - _eventContentChange = _ref._eventContentChange, - _nestedTargetSelector = _ref._nestedTargetSelector, - _ignoreTargetChange = _ref._ignoreTargetChange, - _ignoreNestedTargetChange = _ref._ignoreNestedTargetChange, - _ignoreContentChange = _ref._ignoreContentChange; + _attributes = _ref._attributes, + _styleChangingAttributes = _ref._styleChangingAttributes, + _eventContentChange = _ref._eventContentChange, + _nestedTargetSelector = _ref._nestedTargetSelector, + _ignoreTargetChange = _ref._ignoreTargetChange, + _ignoreNestedTargetChange = _ref._ignoreNestedTargetChange, + _ignoreContentChange = _ref._ignoreContentChange; - var _createEventContentCh = createEventContentChange( - target, - isContentObserver && _eventContentChange, - debounce( - function () { - if (isConnected) { - callback(true); - } - }, - { - _timeout: 33, - _maxDelay: 99, - } - ) - ), - destroyEventContentChange = _createEventContentCh._destroy, - updateEventContentChangeElements = _createEventContentCh._updateElements; + var _createEventContentCh = createEventContentChange(target, debounce(function () { + if (isConnected) { + callback(true); + } + }, { + _timeout: 33, + _maxDelay: 99 + }), _eventContentChange), + destroyEventContentChange = _createEventContentCh._destroy, + updateEventContentChangeElements = _createEventContentCh._updateElements; var finalAttributes = _attributes || []; var finalStyleChangingAttributes = _styleChangingAttributes || []; @@ -1653,10 +1608,10 @@ var childListChanged = false; each(mutations, function (mutation) { var attributeName = mutation.attributeName, - mutationTarget = mutation.target, - type = mutation.type, - oldValue = mutation.oldValue, - addedNodes = mutation.addedNodes; + mutationTarget = mutation.target, + type = mutation.type, + oldValue = mutation.oldValue, + addedNodes = mutation.addedNodes; var isAttributesType = type === 'attributes'; var isChildListType = type === 'childList'; var targetIsMutationTarget = target === mutationTarget; @@ -1668,21 +1623,14 @@ 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 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) - ) { + if (!isContentObserver && targetIsMutationTarget && attributeChanged && !ignoreTargetChange(mutationTarget, attributeName, oldValue, attributeValue)) { push(targetChangedAttrs, attributeName); targetStyleChanged = targetStyleChanged || styleChangingAttrChanged; } @@ -1711,7 +1659,7 @@ attributeFilter: observedAttributes, subtree: isContentObserver, childList: isContentObserver, - characterData: isContentObserver, + characterData: isContentObserver }); isConnected = true; return { @@ -1726,7 +1674,7 @@ if (isConnected) { observerCallback(mutationObserver.takeRecords()); } - }, + } }; }; @@ -1752,15 +1700,15 @@ var contentMutationObserver; var _structureSetup = instance._structureSetup; var _targetObj = _structureSetup._targetObj, - _targetCtx = _structureSetup._targetCtx; + _targetCtx = _structureSetup._targetCtx; var _host = _targetObj._host, - _viewport = _targetObj._viewport, - _content = _targetObj._content; + _viewport = _targetObj._viewport, + _content = _targetObj._content; var _isTextarea = _targetCtx._isTextarea; var _getEnvironment = getEnvironment(), - _nativeScrollbarStyling = _getEnvironment._nativeScrollbarStyling, - _flexboxGlue = _getEnvironment._flexboxGlue; + _nativeScrollbarStyling = _getEnvironment._nativeScrollbarStyling, + _flexboxGlue = _getEnvironment._flexboxGlue; var contentMutationObserverAttr = _isTextarea ? baseStyleChangingAttrsTextarea : baseStyleChangingAttrs.concat(baseStyleChangingAttrsTextarea); var updateLifecyclesWithDebouncedAdaptiveUpdateHints = debounce(updateLifecycles, { @@ -1772,22 +1720,20 @@ }, _mergeParams: function _mergeParams(prev, curr) { var _prev$ = prev[0], - prevSizeChanged = _prev$._sizeChanged, - prevHostMutation = _prev$._hostMutation, - prevContentMutation = _prev$._contentMutation; + prevSizeChanged = _prev$._sizeChanged, + prevHostMutation = _prev$._hostMutation, + prevContentMutation = _prev$._contentMutation; var _curr$ = curr[0], - currSizeChanged = _curr$._sizeChanged, - currvHostMutation = _curr$._hostMutation, - currContentMutation = _curr$._contentMutation; - var merged = [ - { - _sizeChanged: prevSizeChanged || currSizeChanged, - _hostMutation: prevHostMutation || currvHostMutation, - _contentMutation: prevContentMutation || currContentMutation, - }, - ]; + currSizeChanged = _curr$._sizeChanged, + currvHostMutation = _curr$._hostMutation, + currContentMutation = _curr$._contentMutation; + var merged = [{ + _sizeChanged: prevSizeChanged || currSizeChanged, + _hostMutation: prevHostMutation || currvHostMutation, + _contentMutation: prevContentMutation || currContentMutation + }]; return merged; - }, + } }); var updateViewportAttrsFromHost = function updateViewportAttrsFromHost(attributes) { @@ -1806,32 +1752,32 @@ var onTrinsicChanged = function onTrinsicChanged(heightIntrinsic) { updateLifecycles({ - _heightIntrinsic: heightIntrinsic, + _heightIntrinsic: heightIntrinsic }); }; var onSizeChanged = function onSizeChanged(_ref) { var _sizeChanged = _ref._sizeChanged, - _directionIsRTLCache = _ref._directionIsRTLCache, - _appear = _ref._appear; + _directionIsRTLCache = _ref._directionIsRTLCache, + _appear = _ref._appear; var updateFn = !_sizeChanged || _appear ? updateLifecycles : updateLifecyclesWithDebouncedAdaptiveUpdateHints; updateFn({ _sizeChanged: _sizeChanged, - _directionIsRTL: _directionIsRTLCache, + _directionIsRTL: _directionIsRTLCache }); }; var onContentMutation = function onContentMutation(contentChangedTroughEvent) { var updateFn = contentChangedTroughEvent ? updateLifecycles : updateLifecyclesWithDebouncedAdaptiveUpdateHints; updateFn({ - _contentMutation: true, + _contentMutation: true }); }; var onHostMutation = function onHostMutation(targetChangedAttrs, targetStyleChanged) { if (targetStyleChanged) { updateLifecyclesWithDebouncedAdaptiveUpdateHints({ - _hostMutation: true, + _hostMutation: true }); } else { updateViewportAttrsFromHost(targetChangedAttrs); @@ -1841,26 +1787,26 @@ var trinsicObserver = (_content || !_flexboxGlue) && createTrinsicObserver(_host, onTrinsicChanged); var sizeObserver = createSizeObserver(_host, onSizeChanged, { _appear: true, - _direction: !_nativeScrollbarStyling, + _direction: !_nativeScrollbarStyling }); var hostMutationObserver = createDOMObserver(_host, false, onHostMutation, { _styleChangingAttributes: baseStyleChangingAttrs, _attributes: baseStyleChangingAttrs.concat(viewportAttrsFromTarget), - _ignoreTargetChange: ignoreTargetChange, + _ignoreTargetChange: ignoreTargetChange }); var updateOptions = function updateOptions(checkOption) { var _checkOption = checkOption('updating.elementEvents'), - elementEvents = _checkOption._value, - elementEventsChanged = _checkOption._changed; + elementEvents = _checkOption[0], + elementEventsChanged = _checkOption[1]; var _checkOption2 = checkOption('updating.attributes'), - attributes = _checkOption2._value, - attributesChanged = _checkOption2._changed; + attributes = _checkOption2[0], + attributesChanged = _checkOption2[1]; var _checkOption3 = checkOption('updating.debounce'), - debounce = _checkOption3._value, - debounceChanged = _checkOption3._changed; + debounceValue = _checkOption3[0], + debounceChanged = _checkOption3[1]; var updateContentMutationObserver = elementEventsChanged || attributesChanged; @@ -1875,20 +1821,20 @@ _styleChangingAttributes: contentMutationObserverAttr.concat(attributes || []), _attributes: contentMutationObserverAttr.concat(attributes || []), _eventContentChange: elementEvents, - _ignoreNestedTargetChange: ignoreTargetChange, + _ignoreNestedTargetChange: ignoreTargetChange }); } if (debounceChanged) { updateLifecyclesWithDebouncedAdaptiveUpdateHints._flush(); - if (isArray(debounce)) { - var timeout = debounce[0]; - var maxWait = debounce[1]; + if (isArray(debounceValue)) { + var timeout = debounceValue[0]; + var maxWait = debounceValue[1]; debounceTimeout = isNumber(timeout) ? timeout : false; debounceMaxDelay = isNumber(maxWait) ? maxWait : false; - } else if (isNumber(debounce)) { - debounceTimeout = debounce; + } else if (isNumber(debounceValue)) { + debounceTimeout = debounceValue; debounceMaxDelay = false; } else { debounceTimeout = false; @@ -1909,7 +1855,7 @@ sizeObserver._destroy(); hostMutationObserver._destroy(); - }, + } }; }; @@ -1918,70 +1864,70 @@ var _content = _structureSetup._targetObj._content; return function (updateHints) { var _heightIntrinsic = updateHints._heightIntrinsic; - var heightIntrinsic = _heightIntrinsic._value, - heightIntrinsicChanged = _heightIntrinsic._changed; + var heightIntrinsic = _heightIntrinsic[0], + heightIntrinsicChanged = _heightIntrinsic[1]; if (heightIntrinsicChanged) { style(_content, { height: heightIntrinsic ? '' : '100%', - display: heightIntrinsic ? '' : 'inline', + display: heightIntrinsic ? '' : 'inline' }); } return { _sizeChanged: heightIntrinsicChanged, - _contentMutation: heightIntrinsicChanged, + _contentMutation: heightIntrinsicChanged }; }; }; var createPaddingLifecycle = function createPaddingLifecycle(lifecycleHub) { var _structureSetup = lifecycleHub._structureSetup, - _setLifecycleCommunication = lifecycleHub._setLifecycleCommunication; + _setLifecycleCommunication = lifecycleHub._setLifecycleCommunication; var _structureSetup$_targ = _structureSetup._targetObj, - _host = _structureSetup$_targ._host, - _padding = _structureSetup$_targ._padding, - _viewport = _structureSetup$_targ._viewport; + _host = _structureSetup$_targ._host, + _padding = _structureSetup$_targ._padding, + _viewport = _structureSetup$_targ._viewport; var _createCache = createCache(topRightBottomLeft.bind(0, _host, 'padding'), { - _equal: equalTRBL, - _initialValue: topRightBottomLeft(), - }), - updatePaddingCache = _createCache._update, - currentPaddingCache = _createCache._current; + _equal: equalTRBL, + _initialValue: topRightBottomLeft() + }), + updatePaddingCache = _createCache[0], + currentPaddingCache = _createCache[1]; return function (updateHints, checkOption, force) { var _currentPaddingCache = currentPaddingCache(force), - padding = _currentPaddingCache._value, - paddingChanged = _currentPaddingCache._changed; + padding = _currentPaddingCache[0], + paddingChanged = _currentPaddingCache[1]; var _getEnvironment = getEnvironment(), - _nativeScrollbarStyling = _getEnvironment._nativeScrollbarStyling, - _flexboxGlue = _getEnvironment._flexboxGlue; + _nativeScrollbarStyling = _getEnvironment._nativeScrollbarStyling, + _flexboxGlue = _getEnvironment._flexboxGlue; var _sizeChanged = updateHints._sizeChanged, - _directionIsRTL = updateHints._directionIsRTL, - _contentMutation = updateHints._contentMutation; - var directionIsRTL = _directionIsRTL._value, - directionChanged = _directionIsRTL._changed; + _directionIsRTL = updateHints._directionIsRTL, + _contentMutation = updateHints._contentMutation; + var directionIsRTL = _directionIsRTL[0], + directionChanged = _directionIsRTL[1]; var _checkOption = checkOption('paddingAbsolute'), - paddingAbsolute = _checkOption._value, - paddingAbsoluteChanged = _checkOption._changed; + paddingAbsolute = _checkOption[0], + paddingAbsoluteChanged = _checkOption[1]; var contentMutation = !_flexboxGlue && _contentMutation; if (_sizeChanged || paddingChanged || contentMutation) { var _updatePaddingCache = updatePaddingCache(force); - padding = _updatePaddingCache._value; - paddingChanged = _updatePaddingCache._changed; + padding = _updatePaddingCache[0]; + paddingChanged = _updatePaddingCache[1]; } var paddingStyleChanged = paddingAbsoluteChanged || directionChanged || paddingChanged; if (paddingStyleChanged) { - var paddingRelative = !paddingAbsolute || (!_padding && !_nativeScrollbarStyling); + var paddingRelative = !paddingAbsolute || !_padding && !_nativeScrollbarStyling; var paddingHorizontal = padding.r + padding.l; var paddingVertical = padding.t + padding.b; var paddingStyle = { @@ -1989,15 +1935,15 @@ 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)' : '', + 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, + paddingLeft: paddingRelative ? padding.l : 0 }; style(_padding || _viewport, paddingStyle); style(_viewport, viewportStyle); @@ -2005,28 +1951,28 @@ _setLifecycleCommunication({ _paddingInfo: { _absolute: !paddingRelative, - _padding: padding, + _padding: padding }, - _viewportPaddingStyle: _padding ? viewportStyle : _extends_1({}, paddingStyle, viewportStyle), + _viewportPaddingStyle: _padding ? viewportStyle : _extends({}, paddingStyle, viewportStyle) }); } return { - _paddingStyleChanged: paddingStyleChanged, + _paddingStyleChanged: paddingStyleChanged }; }; }; var max = Math.max, - abs$1 = Math.abs, - round$1 = Math.round; + abs = Math.abs, + round = Math.round; var overlaidScrollbarsHideOffset = 42; var whCacheOptions = { _equal: equalWH, _initialValue: { w: 0, - h: 0, - }, + h: 0 + } }; var sizeFraction = function sizeFraction(elm) { @@ -2034,7 +1980,7 @@ var viewportRect = getBoundingClientRect(elm); return { w: viewportRect.width - viewportOffsetSize.w, - h: viewportRect.height - viewportOffsetSize.h, + h: viewportRect.height - viewportOffsetSize.h }; }; @@ -2059,105 +2005,104 @@ return { _visible: behaviorIsVisible, - _behavior: behaviorIsVisibleHidden ? 'hidden' : 'scroll', + _behavior: behaviorIsVisibleHidden ? 'hidden' : 'scroll' }; }; var createOverflowLifecycle = function createOverflowLifecycle(lifecycleHub) { var _structureSetup = lifecycleHub._structureSetup, - _doViewportArrange = lifecycleHub._doViewportArrange, - _getLifecycleCommunication = lifecycleHub._getLifecycleCommunication, - _setLifecycleCommunication = lifecycleHub._setLifecycleCommunication; + _doViewportArrange = lifecycleHub._doViewportArrange, + _getLifecycleCommunication = lifecycleHub._getLifecycleCommunication, + _setLifecycleCommunication = lifecycleHub._setLifecycleCommunication; var _structureSetup$_targ = _structureSetup._targetObj, - _host = _structureSetup$_targ._host, - _viewport = _structureSetup$_targ._viewport, - _viewportArrange = _structureSetup$_targ._viewportArrange; + _host = _structureSetup$_targ._host, + _viewport = _structureSetup$_targ._viewport, + _viewportArrange = _structureSetup$_targ._viewportArrange; var _createCache = createCache(sizeFraction.bind(0, _viewport), whCacheOptions), - updateViewportSizeFraction = _createCache._update, - getCurrentViewportSizeFraction = _createCache._current; + updateViewportSizeFraction = _createCache[0], + getCurrentViewportSizeFraction = _createCache[1]; var _createCache2 = createCache(scrollSize.bind(0, _viewport), whCacheOptions), - updateViewportScrollSizeCache = _createCache2._update, - getCurrentViewportScrollSizeCache = _createCache2._current; + updateViewportScrollSizeCache = _createCache2[0], + getCurrentViewportScrollSizeCache = _createCache2[1]; var _createCache3 = createCache(function (_ref) { - var _viewportScrollSize = _ref._viewportScrollSize, + var _viewportScrollSize = _ref._viewportScrollSize, _viewportClientSize = _ref._viewportClientSize, _viewportSizeFraction = _ref._viewportSizeFraction; - return { - w: max( - 0, - round$1(max(0, _viewportScrollSize.w - _viewportClientSize.w) - (fractionalPixelRatioTollerance() || max(0, _viewportSizeFraction.w))) - ), - h: max( - 0, - round$1(max(0, _viewportScrollSize.h - _viewportClientSize.h) - (fractionalPixelRatioTollerance() || max(0, _viewportSizeFraction.h))) - ), - }; - }, whCacheOptions), - updateOverflowAmountCache = _createCache3._update, - getCurrentOverflowAmountCache = _createCache3._current; + return { + w: max(0, round(max(0, _viewportScrollSize.w - _viewportClientSize.w) - (fractionalPixelRatioTollerance() || max(0, _viewportSizeFraction.w)))), + h: max(0, round(max(0, _viewportScrollSize.h - _viewportClientSize.h) - (fractionalPixelRatioTollerance() || max(0, _viewportSizeFraction.h)))) + }; + }, whCacheOptions), + updateOverflowAmountCache = _createCache3[0], + getCurrentOverflowAmountCache = _createCache3[1]; var fixFlexboxGlue = function fixFlexboxGlue(viewportOverflowState, heightIntrinsic) { style(_viewport, { - height: '', + height: '' }); if (heightIntrinsic) { + var _getEnvironment = getEnvironment(), + _nativeScrollbarIsOverlaid = _getEnvironment._nativeScrollbarIsOverlaid; + var _getLifecycleCommunic = _getLifecycleCommunication()._paddingInfo, - paddingAbsolute = _getLifecycleCommunic._absolute, - padding = _getLifecycleCommunic._padding; + paddingAbsolute = _getLifecycleCommunic._absolute, + padding = _getLifecycleCommunic._padding; var _overflowScroll = viewportOverflowState._overflowScroll, - _scrollbarsHideOffset = viewportOverflowState._scrollbarsHideOffset; + _scrollbarsHideOffset = viewportOverflowState._scrollbarsHideOffset; var hostSizeFraction = sizeFraction(_host); var hostClientSize = clientSize(_host); - var paddingVertical = paddingAbsolute || style(_viewport, 'boxSizing') === 'content-box' ? padding.b + padding.t : 0; - var fractionalClientHeight = hostClientSize.h + (abs$1(hostSizeFraction.h) < 1 ? hostSizeFraction.h : 0); + var isContentBox = style(_viewport, 'boxSizing') === 'content-box'; + var paddingVertical = paddingAbsolute || isContentBox ? padding.b + padding.t : 0; + var fractionalClientHeight = hostClientSize.h + (abs(hostSizeFraction.h) < 1 ? hostSizeFraction.h : 0); + var subtractXScrollbar = !(_nativeScrollbarIsOverlaid.x && isContentBox); style(_viewport, { - height: fractionalClientHeight + (_overflowScroll.x ? _scrollbarsHideOffset.x : 0) - paddingVertical, + height: fractionalClientHeight + (_overflowScroll.x && subtractXScrollbar ? _scrollbarsHideOffset.x : 0) - paddingVertical }); } }; var getViewportOverflowState = function getViewportOverflowState(showNativeOverlaidScrollbars, viewportStyleObj) { - var _getEnvironment = getEnvironment(), - _nativeScrollbarSize = _getEnvironment._nativeScrollbarSize, - _nativeScrollbarIsOverlaid = _getEnvironment._nativeScrollbarIsOverlaid, - _nativeScrollbarStyling = _getEnvironment._nativeScrollbarStyling; + var _getEnvironment2 = getEnvironment(), + _nativeScrollbarSize = _getEnvironment2._nativeScrollbarSize, + _nativeScrollbarIsOverlaid = _getEnvironment2._nativeScrollbarIsOverlaid, + _nativeScrollbarStyling = _getEnvironment2._nativeScrollbarStyling; var overlaidX = _nativeScrollbarIsOverlaid.x, - overlaidY = _nativeScrollbarIsOverlaid.y; + overlaidY = _nativeScrollbarIsOverlaid.y; var determineOverflow = !viewportStyleObj; var arrangeHideOffset = !_nativeScrollbarStyling && !showNativeOverlaidScrollbars ? overlaidScrollbarsHideOffset : 0; var styleObj = determineOverflow ? style(_viewport, ['overflowX', 'overflowY']) : viewportStyleObj; var scroll = { x: styleObj.overflowX === 'scroll', - y: styleObj.overflowY === 'scroll', + y: styleObj.overflowY === 'scroll' }; var scrollbarsHideOffset = { - x: scroll.x && !_nativeScrollbarStyling ? (overlaidX ? arrangeHideOffset : _nativeScrollbarSize.x) : 0, - y: scroll.y && !_nativeScrollbarStyling ? (overlaidY ? arrangeHideOffset : _nativeScrollbarSize.y) : 0, + x: scroll.x && !_nativeScrollbarStyling ? overlaidX ? arrangeHideOffset : _nativeScrollbarSize.x : 0, + y: scroll.y && !_nativeScrollbarStyling ? overlaidY ? arrangeHideOffset : _nativeScrollbarSize.y : 0 }; return { _overflowScroll: scroll, _scrollbarsHideOffsetArrange: { x: overlaidX && !!arrangeHideOffset, - y: overlaidY && !!arrangeHideOffset, + y: overlaidY && !!arrangeHideOffset }, - _scrollbarsHideOffset: scrollbarsHideOffset, + _scrollbarsHideOffset: scrollbarsHideOffset }; }; var setViewportOverflowState = function setViewportOverflowState(showNativeOverlaidScrollbars, overflowAmount, overflow, viewportStyleObj) { var _setAxisOverflowStyle = setAxisOverflowStyle(true, overflowAmount.w, overflow.x, viewportStyleObj), - xVisible = _setAxisOverflowStyle._visible, - xVisibleBehavior = _setAxisOverflowStyle._behavior; + xVisible = _setAxisOverflowStyle._visible, + xVisibleBehavior = _setAxisOverflowStyle._behavior; var _setAxisOverflowStyle2 = setAxisOverflowStyle(false, overflowAmount.h, overflow.y, viewportStyleObj), - yVisible = _setAxisOverflowStyle2._visible, - yVisibleBehavior = _setAxisOverflowStyle2._behavior; + yVisible = _setAxisOverflowStyle2._visible, + yVisibleBehavior = _setAxisOverflowStyle2._behavior; if (xVisible && !yVisible) { viewportStyleObj.overflowX = xVisibleBehavior; @@ -2173,23 +2118,23 @@ var arrangeViewport = function arrangeViewport(viewportOverflowState, viewportScrollSize, viewportSizeFraction, directionIsRTL) { if (_doViewportArrange) { var _scrollbarsHideOffset = viewportOverflowState._scrollbarsHideOffset, - _scrollbarsHideOffsetArrange = viewportOverflowState._scrollbarsHideOffsetArrange; + _scrollbarsHideOffsetArrange = viewportOverflowState._scrollbarsHideOffsetArrange; var arrangeX = _scrollbarsHideOffsetArrange.x, - arrangeY = _scrollbarsHideOffsetArrange.y; + arrangeY = _scrollbarsHideOffsetArrange.y; var hideOffsetX = _scrollbarsHideOffset.x, - hideOffsetY = _scrollbarsHideOffset.y; + hideOffsetY = _scrollbarsHideOffset.y; var _getLifecycleCommunic2 = _getLifecycleCommunication(), - viewportPaddingStyle = _getLifecycleCommunic2._viewportPaddingStyle; + viewportPaddingStyle = _getLifecycleCommunic2._viewportPaddingStyle; var viewportArrangeHorizontalPaddingKey = directionIsRTL ? 'paddingRight' : 'paddingLeft'; var viewportArrangeHorizontalPaddingValue = viewportPaddingStyle[viewportArrangeHorizontalPaddingKey]; var viewportArrangeVerticalPaddingValue = viewportPaddingStyle.paddingTop; - var fractionalContentWidth = viewportScrollSize.w + (abs$1(viewportSizeFraction.w) < 1 ? viewportSizeFraction.w : 0); - var fractionalContenHeight = viewportScrollSize.h + (abs$1(viewportSizeFraction.h) < 1 ? viewportSizeFraction.h : 0); + var fractionalContentWidth = viewportScrollSize.w + (abs(viewportSizeFraction.w) < 1 ? viewportSizeFraction.w : 0); + var fractionalContenHeight = viewportScrollSize.h + (abs(viewportSizeFraction.h) < 1 ? viewportSizeFraction.h : 0); var arrangeSize = { - w: hideOffsetY && arrangeY ? hideOffsetY + fractionalContentWidth - viewportArrangeHorizontalPaddingValue + 'px' : '', - h: hideOffsetX && arrangeX ? hideOffsetX + fractionalContenHeight - viewportArrangeVerticalPaddingValue + 'px' : '', + w: hideOffsetY && arrangeY ? hideOffsetY + fractionalContentWidth - viewportArrangeHorizontalPaddingValue + "px" : '', + h: hideOffsetX && arrangeX ? hideOffsetX + fractionalContenHeight - viewportArrangeVerticalPaddingValue + "px" : '' }; if (_viewportArrange) { @@ -2200,7 +2145,7 @@ if (cssRules) { if (!cssRules.length) { - sheet.insertRule('#' + attr(_viewportArrange, 'id') + ' + .' + classNameViewportArrange + '::before {}', 0); + sheet.insertRule("#" + attr(_viewportArrange, 'id') + " + ." + classNameViewportArrange + "::before {}", 0); } var ruleStyle = cssRules[0].style; @@ -2211,7 +2156,7 @@ } else { style(_viewport, { '--os-vaw': arrangeSize.w, - '--os-vah': arrangeSize.h, + '--os-vah': arrangeSize.h }); } } @@ -2221,14 +2166,14 @@ var hideNativeScrollbars = function hideNativeScrollbars(viewportOverflowState, directionIsRTL, viewportArrange, viewportStyleObj) { var _scrollbarsHideOffset = viewportOverflowState._scrollbarsHideOffset, - _scrollbarsHideOffsetArrange = viewportOverflowState._scrollbarsHideOffsetArrange; + _scrollbarsHideOffsetArrange = viewportOverflowState._scrollbarsHideOffsetArrange; var arrangeX = _scrollbarsHideOffsetArrange.x, - arrangeY = _scrollbarsHideOffsetArrange.y; + arrangeY = _scrollbarsHideOffsetArrange.y; var hideOffsetX = _scrollbarsHideOffset.x, - hideOffsetY = _scrollbarsHideOffset.y; + hideOffsetY = _scrollbarsHideOffset.y; var _getLifecycleCommunic3 = _getLifecycleCommunication(), - viewportPaddingStyle = _getLifecycleCommunic3._viewportPaddingStyle; + viewportPaddingStyle = _getLifecycleCommunic3._viewportPaddingStyle; var horizontalMarginKey = directionIsRTL ? 'marginLeft' : 'marginRight'; var viewportHorizontalPaddingKey = directionIsRTL ? 'paddingLeft' : 'paddingRight'; @@ -2236,7 +2181,7 @@ var verticalMarginValue = viewportPaddingStyle.marginBottom; var horizontalPaddingValue = viewportPaddingStyle[viewportHorizontalPaddingKey]; var verticalPaddingValue = viewportPaddingStyle.paddingBottom; - viewportStyleObj.width = 'calc(100% + ' + (hideOffsetY + horizontalMarginValue * -1) + 'px)'; + viewportStyleObj.width = "calc(100% + " + (hideOffsetY + horizontalMarginValue * -1) + "px)"; viewportStyleObj[horizontalMarginKey] = -hideOffsetY + horizontalMarginValue; viewportStyleObj.marginBottom = -hideOffsetX + verticalMarginValue; @@ -2251,14 +2196,14 @@ var finalViewportOverflowState = viewportOverflowState || getViewportOverflowState(showNativeOverlaidScrollbars); var _getLifecycleCommunic4 = _getLifecycleCommunication(), - viewportPaddingStyle = _getLifecycleCommunic4._viewportPaddingStyle; + viewportPaddingStyle = _getLifecycleCommunic4._viewportPaddingStyle; - var _getEnvironment2 = getEnvironment(), - _flexboxGlue = _getEnvironment2._flexboxGlue; + var _getEnvironment3 = getEnvironment(), + _flexboxGlue = _getEnvironment3._flexboxGlue; var _scrollbarsHideOffsetArrange = finalViewportOverflowState._scrollbarsHideOffsetArrange; var arrangeX = _scrollbarsHideOffsetArrange.x, - arrangeY = _scrollbarsHideOffsetArrange.y; + arrangeY = _scrollbarsHideOffsetArrange.y; var finalPaddingStyle = {}; var assignProps = function assignProps(props) { @@ -2288,40 +2233,39 @@ style(_viewport, prevStyle); addClass(_viewport, classNameViewportArrange); }, - _viewportOverflowState: finalViewportOverflowState, + _viewportOverflowState: finalViewportOverflowState }; } return { - _redoViewportArrange: noop, + _redoViewportArrange: noop }; }; return function (updateHints, checkOption, force) { var _directionIsRTL = updateHints._directionIsRTL, - _heightIntrinsic = updateHints._heightIntrinsic, - _sizeChanged = updateHints._sizeChanged, - _hostMutation = updateHints._hostMutation, - _contentMutation = updateHints._contentMutation, - _paddingStyleChanged = updateHints._paddingStyleChanged; + _heightIntrinsic = updateHints._heightIntrinsic, + _sizeChanged = updateHints._sizeChanged, + _hostMutation = updateHints._hostMutation, + _contentMutation = updateHints._contentMutation, + _paddingStyleChanged = updateHints._paddingStyleChanged; - var _getEnvironment3 = getEnvironment(), - _flexboxGlue = _getEnvironment3._flexboxGlue, - _nativeScrollbarStyling = _getEnvironment3._nativeScrollbarStyling, - _nativeScrollbarIsOverlaid = _getEnvironment3._nativeScrollbarIsOverlaid; + var _getEnvironment4 = getEnvironment(), + _flexboxGlue = _getEnvironment4._flexboxGlue, + _nativeScrollbarStyling = _getEnvironment4._nativeScrollbarStyling, + _nativeScrollbarIsOverlaid = _getEnvironment4._nativeScrollbarIsOverlaid; - var heightIntrinsic = _heightIntrinsic._value, - heightIntrinsicChanged = _heightIntrinsic._changed; - var directionIsRTL = _directionIsRTL._value, - directionChanged = _directionIsRTL._changed; + var heightIntrinsic = _heightIntrinsic[0], + heightIntrinsicChanged = _heightIntrinsic[1]; + var directionIsRTL = _directionIsRTL[0], + directionChanged = _directionIsRTL[1]; var _checkOption = checkOption('nativeScrollbarsOverlaid.show'), - showNativeOverlaidScrollbarsOption = _checkOption._value, - showNativeOverlaidScrollbarsChanged = _checkOption._changed; + showNativeOverlaidScrollbarsOption = _checkOption[0], + showNativeOverlaidScrollbarsChanged = _checkOption[1]; var showNativeOverlaidScrollbars = showNativeOverlaidScrollbarsOption && _nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.y; - var adjustFlexboxGlue = - !_flexboxGlue && (_sizeChanged || _contentMutation || _hostMutation || showNativeOverlaidScrollbarsChanged || heightIntrinsicChanged); + var adjustFlexboxGlue = !_flexboxGlue && (_sizeChanged || _contentMutation || _hostMutation || showNativeOverlaidScrollbarsChanged || heightIntrinsicChanged); var viewportSizeFractionCache = getCurrentViewportSizeFraction(force); var viewportScrollSizeCache = getCurrentViewportScrollSizeCache(force); var overflowAmuntCache = getCurrentOverflowAmountCache(force); @@ -2342,16 +2286,16 @@ if (_sizeChanged || _paddingStyleChanged || _contentMutation || showNativeOverlaidScrollbarsChanged || directionChanged) { var _undoViewportArrange = undoViewportArrange(showNativeOverlaidScrollbars, directionIsRTL, preMeasureViewportOverflowState), - _redoViewportArrange = _undoViewportArrange._redoViewportArrange, - undoViewportArrangeOverflowState = _undoViewportArrange._viewportOverflowState; + _redoViewportArrange = _undoViewportArrange._redoViewportArrange, + undoViewportArrangeOverflowState = _undoViewportArrange._viewportOverflowState; - var _viewportSizeFraction3 = (viewportSizeFractionCache = updateViewportSizeFraction(force)), - _viewportSizeFraction2 = _viewportSizeFraction3._value, - viewportSizeFractionCahnged = _viewportSizeFraction3._changed; + var _viewportSizeFraction3 = viewportSizeFractionCache = updateViewportSizeFraction(force), + _viewportSizeFraction2 = _viewportSizeFraction3[0], + viewportSizeFractionCahnged = _viewportSizeFraction3[1]; - var _viewportScrollSizeCa = (viewportScrollSizeCache = updateViewportScrollSizeCache(force)), - _viewportScrollSize2 = _viewportScrollSizeCa._value, - _viewportScrollSizeChanged = _viewportScrollSizeCa._changed; + var _viewportScrollSizeCa = viewportScrollSizeCache = updateViewportScrollSizeCache(force), + _viewportScrollSize2 = _viewportScrollSizeCa[0], + _viewportScrollSizeChanged = _viewportScrollSizeCa[1]; var viewportContentSize = clientSize(_viewport); var arrangedViewportScrollSize = _viewportScrollSize2; @@ -2359,12 +2303,7 @@ _redoViewportArrange(); - if ( - (_viewportScrollSizeChanged || viewportSizeFractionCahnged || showNativeOverlaidScrollbarsChanged) && - undoViewportArrangeOverflowState && - !showNativeOverlaidScrollbars && - arrangeViewport(undoViewportArrangeOverflowState, _viewportScrollSize2, _viewportSizeFraction2, directionIsRTL) - ) { + if ((_viewportScrollSizeChanged || viewportSizeFractionCahnged || showNativeOverlaidScrollbarsChanged) && undoViewportArrangeOverflowState && !showNativeOverlaidScrollbars && arrangeViewport(undoViewportArrangeOverflowState, _viewportScrollSize2, _viewportSizeFraction2, directionIsRTL)) { arrangedViewportClientSize = clientSize(_viewport); arrangedViewportScrollSize = scrollSize(_viewport); } @@ -2373,46 +2312,37 @@ _viewportSizeFraction: _viewportSizeFraction2, _viewportScrollSize: { w: max(_viewportScrollSize2.w, arrangedViewportScrollSize.w), - h: max(_viewportScrollSize2.h, arrangedViewportScrollSize.h), + h: max(_viewportScrollSize2.h, arrangedViewportScrollSize.h) }, _viewportClientSize: { w: arrangedViewportClientSize.w + max(0, viewportContentSize.w - _viewportScrollSize2.w), - h: arrangedViewportClientSize.h + max(0, viewportContentSize.h - _viewportScrollSize2.h), - }, + h: arrangedViewportClientSize.h + max(0, viewportContentSize.h - _viewportScrollSize2.h) + } }); } var _viewportSizeFraction4 = viewportSizeFractionCache, - viewportSizeFraction = _viewportSizeFraction4._value, - viewportSizeFractionChanged = _viewportSizeFraction4._changed; + viewportSizeFraction = _viewportSizeFraction4[0], + viewportSizeFractionChanged = _viewportSizeFraction4[1]; var _viewportScrollSizeCa2 = viewportScrollSizeCache, - viewportScrollSize = _viewportScrollSizeCa2._value, - viewportScrollSizeChanged = _viewportScrollSizeCa2._changed; + viewportScrollSize = _viewportScrollSizeCa2[0], + viewportScrollSizeChanged = _viewportScrollSizeCa2[1]; var _overflowAmuntCache = overflowAmuntCache, - overflowAmount = _overflowAmuntCache._value, - overflowAmountChanged = _overflowAmuntCache._changed; + overflowAmount = _overflowAmuntCache[0], + overflowAmountChanged = _overflowAmuntCache[1]; var _checkOption2 = checkOption('overflow'), - overflow = _checkOption2._value, - overflowChanged = _checkOption2._changed; + overflow = _checkOption2[0], + overflowChanged = _checkOption2[1]; - if ( - _paddingStyleChanged || - viewportSizeFractionChanged || - viewportScrollSizeChanged || - overflowAmountChanged || - overflowChanged || - showNativeOverlaidScrollbarsChanged || - directionChanged || - adjustFlexboxGlue - ) { + if (_paddingStyleChanged || viewportSizeFractionChanged || viewportScrollSizeChanged || overflowAmountChanged || overflowChanged || showNativeOverlaidScrollbarsChanged || directionChanged || adjustFlexboxGlue) { var viewportStyle = { marginRight: 0, marginBottom: 0, marginLeft: 0, width: '', overflowY: '', - overflowX: '', + overflowX: '' }; var viewportOverflowState = setViewportOverflowState(showNativeOverlaidScrollbars, overflowAmount, overflow, viewportStyle); var viewportArranged = arrangeViewport(viewportOverflowState, viewportScrollSize, viewportSizeFraction, directionIsRTL); @@ -2426,25 +2356,19 @@ _setLifecycleCommunication({ _viewportOverflowScroll: viewportOverflowState._overflowScroll, - _viewportOverflowAmount: overflowAmount, + _viewportOverflowAmount: overflowAmount }); } }; }; var getPropByPath = function getPropByPath(obj, path) { - return obj - ? path.split('.').reduce(function (o, prop) { - return o && hasOwnProperty$1(o, prop) ? o[prop] : undefined; - }, obj) - : undefined; + return obj ? path.split('.').reduce(function (o, prop) { + return o && hasOwnProperty(o, prop) ? o[prop] : undefined; + }, obj) : undefined; }; - var booleanCacheValuesFallback = { - _value: false, - _previous: false, - _changed: false, - }; + var booleanCacheValuesFallback = [false, false, false]; var lifecycleCommunicationFallback = { _paddingInfo: { _absolute: false, @@ -2452,16 +2376,16 @@ t: 0, r: 0, b: 0, - l: 0, - }, + l: 0 + } }, _viewportOverflowScroll: { x: false, - y: false, + y: false }, _viewportOverflowAmount: { w: 0, - h: 0, + h: 0 }, _viewportPaddingStyle: { marginRight: 0, @@ -2470,19 +2394,19 @@ paddingTop: 0, paddingRight: 0, paddingBottom: 0, - paddingLeft: 0, - }, + paddingLeft: 0 + } }; - var createLifecycleHub = function createLifecycleHub(options, structureSetup) { + var createLifecycleHub = function createLifecycleHub(options, structureSetup, scrollbarsSetup) { var lifecycleCommunication = lifecycleCommunicationFallback; var _viewport = structureSetup._targetObj._viewport; var _getEnvironment = getEnvironment(), - _nativeScrollbarStyling = _getEnvironment._nativeScrollbarStyling, - _nativeScrollbarIsOverlaid = _getEnvironment._nativeScrollbarIsOverlaid, - _flexboxGlue = _getEnvironment._flexboxGlue, - addEnvironmentListener = _getEnvironment._addListener, - removeEnvironmentListener = _getEnvironment._removeListener; + _nativeScrollbarStyling = _getEnvironment._nativeScrollbarStyling, + _nativeScrollbarIsOverlaid = _getEnvironment._nativeScrollbarIsOverlaid, + _flexboxGlue = _getEnvironment._flexboxGlue, + addEnvironmentListener = _getEnvironment._addListener, + removeEnvironmentListener = _getEnvironment._removeListener; var doViewportArrange = !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y); var instance = { @@ -2494,33 +2418,28 @@ }, _setLifecycleCommunication: function _setLifecycleCommunication(newLifecycleCommunication) { lifecycleCommunication = assignDeep({}, lifecycleCommunication, newLifecycleCommunication); - }, + } }; var lifecycles = [createTrinsicLifecycle(instance), createPaddingLifecycle(instance), createOverflowLifecycle(instance)]; var updateLifecycles = function updateLifecycles(updateHints, changedOptions, force) { var _ref = updateHints || {}, - _directionIsRTL = _ref._directionIsRTL, - _heightIntrinsic = _ref._heightIntrinsic, - _ref$_sizeChanged = _ref._sizeChanged, - _sizeChanged = _ref$_sizeChanged === void 0 ? force || false : _ref$_sizeChanged, - _ref$_hostMutation = _ref._hostMutation, - _hostMutation = _ref$_hostMutation === void 0 ? force || false : _ref$_hostMutation, - _ref$_contentMutation = _ref._contentMutation, - _contentMutation = _ref$_contentMutation === void 0 ? force || false : _ref$_contentMutation, - _ref$_paddingStyleCha = _ref._paddingStyleChanged, - _paddingStyleChanged = _ref$_paddingStyleCha === void 0 ? force || false : _ref$_paddingStyleCha; + _directionIsRTL = _ref._directionIsRTL, + _heightIntrinsic = _ref._heightIntrinsic, + _ref$_sizeChanged = _ref._sizeChanged, + _sizeChanged = _ref$_sizeChanged === void 0 ? force || false : _ref$_sizeChanged, + _ref$_hostMutation = _ref._hostMutation, + _hostMutation = _ref$_hostMutation === void 0 ? force || false : _ref$_hostMutation, + _ref$_contentMutation = _ref._contentMutation, + _contentMutation = _ref$_contentMutation === void 0 ? force || false : _ref$_contentMutation, + _ref$_paddingStyleCha = _ref._paddingStyleChanged, + _paddingStyleChanged = _ref$_paddingStyleCha === void 0 ? force || false : _ref$_paddingStyleCha; - var finalDirectionIsRTL = - _directionIsRTL || (_sizeObserver ? _sizeObserver._getCurrentCacheValues(force)._directionIsRTL : booleanCacheValuesFallback); - var finalHeightIntrinsic = - _heightIntrinsic || (_trinsicObserver ? _trinsicObserver._getCurrentCacheValues(force)._heightIntrinsic : booleanCacheValuesFallback); + var finalDirectionIsRTL = _directionIsRTL || (_sizeObserver ? _sizeObserver._getCurrentCacheValues(force)._directionIsRTL : booleanCacheValuesFallback); + var finalHeightIntrinsic = _heightIntrinsic || (_trinsicObserver ? _trinsicObserver._getCurrentCacheValues(force)._heightIntrinsic : booleanCacheValuesFallback); var checkOption = function checkOption(path) { - return { - _value: getPropByPath(options, path), - _changed: force || getPropByPath(changedOptions, path) !== undefined, - }; + return [getPropByPath(options, path), force || getPropByPath(changedOptions, path) !== undefined]; }; var adjustScrollOffset = doViewportArrange || !_flexboxGlue; @@ -2532,23 +2451,18 @@ } each(lifecycles, function (lifecycle) { - var _ref2 = - lifecycle( - { - _directionIsRTL: finalDirectionIsRTL, - _heightIntrinsic: finalHeightIntrinsic, - _sizeChanged: _sizeChanged, - _hostMutation: _hostMutation, - _contentMutation: _contentMutation, - _paddingStyleChanged: _paddingStyleChanged, - }, - checkOption, - !!force - ) || {}, - adaptiveSizeChanged = _ref2._sizeChanged, - adaptiveHostMutation = _ref2._hostMutation, - adaptiveContentMutation = _ref2._contentMutation, - adaptivePaddingStyleChanged = _ref2._paddingStyleChanged; + var _ref2 = lifecycle({ + _directionIsRTL: finalDirectionIsRTL, + _heightIntrinsic: finalHeightIntrinsic, + _sizeChanged: _sizeChanged, + _hostMutation: _hostMutation, + _contentMutation: _contentMutation, + _paddingStyleChanged: _paddingStyleChanged + }, checkOption, !!force) || {}, + adaptiveSizeChanged = _ref2._sizeChanged, + adaptiveHostMutation = _ref2._hostMutation, + adaptiveContentMutation = _ref2._contentMutation, + adaptivePaddingStyleChanged = _ref2._paddingStyleChanged; _sizeChanged = adaptiveSizeChanged || _sizeChanged; _hostMutation = adaptiveHostMutation || _hostMutation; @@ -2570,10 +2484,10 @@ }; var _lifecycleHubOservers = lifecycleHubOservers(instance, updateLifecycles), - _sizeObserver = _lifecycleHubOservers._sizeObserver, - _trinsicObserver = _lifecycleHubOservers._trinsicObserver, - _updateObserverOptions = _lifecycleHubOservers._updateObserverOptions, - destroyObservers = _lifecycleHubOservers._destroy; + _sizeObserver = _lifecycleHubOservers._sizeObserver, + _trinsicObserver = _lifecycleHubOservers._trinsicObserver, + _updateObserverOptions = _lifecycleHubOservers._updateObserverOptions, + destroyObservers = _lifecycleHubOservers._destroy; var update = function update(changedOptions, force) { return updateLifecycles(null, changedOptions, force); @@ -2586,28 +2500,33 @@ _update: update, _state: function _state() { return { - _overflowAmount: lifecycleCommunication._viewportOverflowAmount, + _overflowAmount: lifecycleCommunication._viewportOverflowAmount }; }, _destroy: function _destroy() { destroyObservers(); removeEnvironmentListener(envUpdateListener); - }, + + structureSetup._destroy(); + + scrollbarsSetup._destroy(); + } }; }; var OverlayScrollbars = function OverlayScrollbars(target, options, extensions) { var _getEnvironment = getEnvironment(), - _getDefaultOptions = _getEnvironment._getDefaultOptions; + _getDefaultOptions = _getEnvironment._getDefaultOptions; var currentOptions = assignDeep({}, _getDefaultOptions(), validateOptions(options || {}, optionsTemplate, null, true)._validated); var structureSetup = createStructureSetup(target); - var lifecycleHub = createLifecycleHub(currentOptions, structureSetup); + var scrollbarsSetup = createScrollbarsSetup(target, structureSetup); + var lifecycleHub = createLifecycleHub(currentOptions, structureSetup, scrollbarsSetup); var instance = { options: function options(newOptions) { if (newOptions) { var _validateOptions = validateOptions(newOptions, optionsTemplate, currentOptions, true), - _changedOptions = _validateOptions._validated; + _changedOptions = _validateOptions._validated; if (!isEmptyObject(_changedOptions)) { assignDeep(currentOptions, _changedOptions); @@ -2624,11 +2543,15 @@ update: function update(force) { lifecycleHub._update(null, force); }, + destroy: function destroy() { + return lifecycleHub._destroy(); + } }; instance.update(true); return instance; }; return OverlayScrollbars; -}); + +})); //# sourceMappingURL=overlayscrollbars.js.map diff --git a/packages/overlayscrollbars/dist/overlayscrollbars.js.map b/packages/overlayscrollbars/dist/overlayscrollbars.js.map index a8d4793..c44a1c7 100644 --- a/packages/overlayscrollbars/dist/overlayscrollbars.js.map +++ b/packages/overlayscrollbars/dist/overlayscrollbars.js.map @@ -1 +1 @@ -{"version":3,"file":"overlayscrollbars.js","sources":["../src/support/cache/cache.ts","../src/support/utils/types.ts","../src/support/utils/array.ts","../src/support/utils/object.ts","../src/support/dom/attribute.ts","../src/support/dom/traversal.ts","../src/support/dom/manipulation.ts","../src/support/dom/create.ts","../src/support/compatibility/vendors.ts","../src/support/compatibility/apis.ts","../src/support/dom/class.ts","../src/support/dom/dimensions.ts","../src/support/dom/events.ts","../src/support/utils/equal.ts","../src/support/utils/function.ts","../src/support/dom/style.ts","../src/support/dom/offset.ts","../../../node_modules/@babel/runtime/helpers/extends.js","../src/support/options/validation.ts","../src/support/options/transformation.ts","../src/classnames.ts","../src/options.ts","../src/environment.ts","../src/setups/structureSetup.ts","../src/observers/sizeObserver.ts","../src/observers/trinsicObserver.ts","../src/observers/domObserver.ts","../src/lifecycles/lifecycleHubObservers.ts","../src/lifecycles/trinsicLifecycle.ts","../src/lifecycles/paddingLifecycle.ts","../src/lifecycles/overflowLifecycle.ts","../src/lifecycles/lifecycleHub.ts","../src/overlayscrollbars.ts"],"sourcesContent":["export interface CacheValues {\r\n readonly _value?: T;\r\n readonly _previous?: T;\r\n _changed: boolean;\r\n}\r\n\r\nexport interface CacheOptions {\r\n // Custom comparison function if shallow compare isn't enough. Returns true if nothing changed.\r\n _equal?: EqualCachePropFunction;\r\n // Initial value for _value\r\n _initialValue?: T;\r\n // If true updates always _value and _previous, otherwise they update only when changed\r\n _alwaysUpdateValues?: boolean;\r\n}\r\n\r\nexport interface Cache {\r\n _current: (force?: boolean) => CacheValues;\r\n _update: CacheUpdate;\r\n}\r\n\r\nexport type CacheUpdate = undefined extends C\r\n ? (force?: boolean | 0, context?: C) => CacheValues\r\n : (force: boolean | 0, context: C) => CacheValues;\r\n\r\nexport type UpdateCachePropFunction = undefined extends C\r\n ? (context?: C, current?: T, previous?: T) => T\r\n : C extends T\r\n ? ((context: C, current?: T, previous?: T) => T) | 0\r\n : (context: C, current?: T, previous?: T) => T;\r\n\r\nexport type EqualCachePropFunction = (currentVal?: T, newVal?: T) => boolean;\r\n\r\nexport const createCache = (update: UpdateCachePropFunction, options?: CacheOptions): Cache => {\r\n const { _equal, _initialValue, _alwaysUpdateValues } = options || {};\r\n let _value: T | undefined = _initialValue;\r\n let _previous: T | undefined;\r\n\r\n const cacheUpdate = ((force?: boolean | 0, context?: C) => {\r\n const curr = _value;\r\n // @ts-ignore\r\n // update can only not be a function if C extends T as described in \"UpdateCachePropFunction\" type definition\r\n // if C extends T the cast (context as T) is perfectly valid\r\n const newVal = update ? update(context, _value, _previous) : (context as T);\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 {\r\n _value,\r\n _previous,\r\n _changed: changed,\r\n };\r\n }) as CacheUpdate;\r\n\r\n return {\r\n _update: cacheUpdate,\r\n _current: (force?: boolean) => ({\r\n _value,\r\n _previous,\r\n _changed: !!force,\r\n }),\r\n };\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 return 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\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: Array) => unknown {\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) ? (length > 0 && isObject(obj) ? length - 1 in obj : true) : 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 ? (instanceofObj ? obj instanceof instanceofObj : obj.nodeType === ElementNodeType) : 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 ? (instanceofObj ? obj instanceof instanceofObj : obj.nodeType === ElementNodeType) : 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(obj: PlainObject, callback: (value: any, indexOrKey: string, source: PlainObject) => boolean | unknown): 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: Array, item: T, fromIndex?: number): number => 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: Array, items: T | ArrayLike, arrayIsSingleItem?: boolean): Array => {\r\n !arrayIsSingleItem && !isString(items) && isArrayLike(items) ? Array.prototype.push.apply(array, items as Array) : 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) => {\r\n if (Array.from) {\r\n return Array.from(arr);\r\n }\r\n const result: Array = [];\r\n\r\n each(arr, (elm) => {\r\n push(result, elm);\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: Array | null | undefined) => array && array.length === 0;\r\n\r\n/**\r\n * Calls all functions in the passed array/set of functions.\r\n * @param arr The array filled with function which shall be called.\r\n * @param p1 The first param.\r\n */\r\nexport const runEach = (arr: ArrayLike | Set, p1?: unknown): void => {\r\n const runFn = (fn: RunEachItem) => fn && fn(p1);\r\n if (arr instanceof Set) {\r\n arr.forEach(runFn);\r\n } else {\r\n each(arr, runFn);\r\n }\r\n};\r\n","import { isArray, isFunction, isPlainObject, isNull } from 'support/utils/types';\r\nimport { each } from 'support/utils/array';\r\n\r\n/**\r\n * Determines whether the passed object has a property with the passed name.\r\n * @param obj The object.\r\n * @param prop The name of the property.\r\n */\r\nexport const hasOwnProperty = (obj: any, prop: string | number | symbol): boolean => 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(target: T, object1: U, object2: V, object3: W): T & U & V & W;\r\nexport function assignDeep(target: T, object1: U, object2: V, object3: W, object4: X): T & U & V & W & X;\r\nexport function assignDeep(target: T, object1: U, object2: V, object3: W, object4: X, object5: Y): T & U & V & W & X & Y;\r\nexport function assignDeep(\r\n target: T,\r\n object1?: U,\r\n object2?: V,\r\n object3?: W,\r\n object4?: X,\r\n object5?: Y,\r\n object6?: Z\r\n): T & U & V & W & X & Y & Z {\r\n const sources: Array = [object1, object2, object3, object4, object5, object6];\r\n\r\n // Handle case when target is a string or something (possible in deep copy)\r\n if ((typeof target !== 'object' || isNull(target)) && !isFunction(target)) {\r\n target = {} as T;\r\n }\r\n\r\n each(sources, (source) => {\r\n // Extend the base object\r\n each(keys(source), (key) => {\r\n const copy: any = source[key];\r\n\r\n // Prevent Object.prototype pollution\r\n // Prevent never-ending loop\r\n if (target === copy) {\r\n return true;\r\n }\r\n\r\n const copyIsArray = isArray(copy);\r\n\r\n // Recurse if we're merging plain objects or arrays\r\n if (copy && (isPlainObject(copy) || copyIsArray)) {\r\n const src = target[key];\r\n let clone: any = src;\r\n\r\n // Ensure proper type for the source value\r\n if (copyIsArray && !isArray(src)) {\r\n clone = [];\r\n } else if (!copyIsArray && !isPlainObject(src)) {\r\n clone = {};\r\n }\r\n\r\n // Never move original objects, clone them\r\n target[key] = assignDeep(clone, copy) as any;\r\n } else {\r\n target[key] = copy;\r\n }\r\n });\r\n });\r\n\r\n // Return the modified object\r\n return target as any;\r\n}\r\n\r\n/**\r\n * Returns true if the given object is empty, false otherwise.\r\n * @param obj The Object.\r\n */\r\nexport function isEmptyObject(obj: any): boolean {\r\n /* eslint-disable no-restricted-syntax, guard-for-in */\r\n for (const name in obj) return false;\r\n return true;\r\n /* eslint-enable */\r\n}\r\n","import { isUndefined } from 'support/utils/types';\r\n\r\ntype GetSetPropName = 'scrollLeft' | 'scrollTop' | 'value';\r\n\r\nfunction getSetProp(\r\n topLeft: GetSetPropName,\r\n fallback: number | string,\r\n elm: HTMLElement | HTMLInputElement | null,\r\n value?: number | string\r\n): number | string | void {\r\n if (isUndefined(value)) {\r\n return elm ? elm[topLeft] : fallback;\r\n }\r\n elm && (elm[topLeft] = value);\r\n}\r\n\r\n/**\r\n * Gets or sets a attribute with the given attribute of the given element depending whether the value attribute is given.\r\n * Returns null if the element has no attribute with the given name.\r\n * @param elm The element of which the attribute shall be get or set.\r\n * @param attrName The attribute name which shall be get or set.\r\n * @param value The value of the attribute which shall be set.\r\n */\r\nexport function attr(elm: HTMLElement | null, attrName: string): string | null;\r\nexport function attr(elm: HTMLElement | null, attrName: string, value: string): void;\r\nexport function attr(elm: HTMLElement | null, attrName: string, value?: string): string | null | void {\r\n if (isUndefined(value)) {\r\n return elm ? elm.getAttribute(attrName) : null;\r\n }\r\n elm && elm.setAttribute(attrName, value);\r\n}\r\n\r\n/**\r\n * Removes the given attribute from the given element.\r\n * @param elm The element of which the attribute shall be removed.\r\n * @param attrName The attribute name.\r\n */\r\nexport const removeAttr = (elm: Element | null, attrName: string): void => {\r\n elm && elm.removeAttribute(attrName);\r\n};\r\n\r\n/**\r\n * Gets or sets the scrollLeft value of the given element depending whether the value attribute is given.\r\n * @param elm The element of which the scrollLeft value shall be get or set.\r\n * @param value The scrollLeft value which shall be set.\r\n */\r\nexport function scrollLeft(elm: HTMLElement | null): number;\r\nexport function scrollLeft(elm: HTMLElement | null, value: number): void;\r\nexport function scrollLeft(elm: HTMLElement | null, value?: number): number | void {\r\n return getSetProp('scrollLeft', 0, elm, value) as number;\r\n}\r\n\r\n/**\r\n * Gets or sets the scrollTop value of the given element depending whether the value attribute is given.\r\n * @param elm The element of which the scrollTop value shall be get or set.\r\n * @param value The scrollTop value which shall be set.\r\n */\r\nexport function scrollTop(elm: HTMLElement | null): number;\r\nexport function scrollTop(elm: HTMLElement | null, value: number): void;\r\nexport function scrollTop(elm: HTMLElement | null, value?: number): number | void {\r\n return getSetProp('scrollTop', 0, elm, value) as number;\r\n}\r\n\r\n/**\r\n * Gets or sets the value of the given input element depending whether the value attribute is given.\r\n * @param elm The input element of which the value shall be get or set.\r\n * @param value The value which shall be set.\r\n */\r\nexport function val(elm: HTMLInputElement | null): string;\r\nexport function val(elm: HTMLInputElement | null, value: string): void;\r\nexport function val(elm: HTMLInputElement | null, value?: string): string | void {\r\n return getSetProp('value', '', elm, value) as string;\r\n}\r\n","import { isElement } from 'support/utils/types';\r\nimport { push, from } from 'support/utils/array';\r\n\r\ntype InputElementType = Element | Node | false | null | undefined;\r\ntype OutputElementType = Element | null;\r\n\r\nconst elmPrototype = Element.prototype;\r\n\r\n/**\r\n * Find all elements with the passed selector, outgoing (and including) the passed element or the document if no element was provided.\r\n * @param selector The selector which has to be searched by.\r\n * @param elm The element from which the search shall be outgoing.\r\n */\r\nconst find = (selector: string, elm?: InputElementType): Element[] => {\r\n const arr: Array = [];\r\n const rootElm = elm ? (isElement(elm) ? elm : null) : document;\r\n\r\n return rootElm ? push(arr, rootElm.querySelectorAll(selector)) : arr;\r\n};\r\n\r\n/**\r\n * Find the first element with the passed selector, outgoing (and including) the passed element or the document if no element was provided.\r\n * @param selector The selector which has to be searched by.\r\n * @param elm The element from which the search shall be outgoing.\r\n */\r\nconst findFirst = (selector: string, elm?: InputElementType): OutputElementType => {\r\n const rootElm = elm ? (isElement(elm) ? elm : null) : document;\r\n\r\n return rootElm ? rootElm.querySelector(selector) : null;\r\n};\r\n\r\n/**\r\n * Determines whether the passed element is matching with the passed selector.\r\n * @param elm The element which has to be compared with the passed selector.\r\n * @param selector The selector which has to be compared with the passed element. Additional selectors: ':visible' and ':hidden'.\r\n */\r\nconst is = (elm: InputElementType, selector: string): boolean => {\r\n if (isElement(elm)) {\r\n /* istanbul ignore next */\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n const fn: (...args: any) => boolean = elmPrototype.matches || elmPrototype.msMatchesSelector;\r\n return fn.call(elm, selector);\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Returns the children (no text-nodes or comments) of the passed element which are matching the passed selector. An empty array is returned if the passed element is null.\r\n * @param elm The element of which the children shall be returned.\r\n * @param selector The selector which must match with the children elements.\r\n */\r\nconst children = (elm: InputElementType, selector?: string): ReadonlyArray => {\r\n const childs: Array = [];\r\n\r\n return isElement(elm)\r\n ? push(\r\n childs,\r\n from(elm.children).filter((child) => (selector ? is(child, selector) : child))\r\n )\r\n : childs;\r\n};\r\n\r\n/**\r\n * Returns the childNodes (incl. text-nodes or comments etc.) of the passed element. An empty array is returned if the passed element is null.\r\n * @param elm The element of which the childNodes shall be returned.\r\n */\r\nconst contents = (elm: InputElementType): ReadonlyArray => (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 = (elm: InputElementType, highBoundarySelector: string, deepBoundarySelector: string): 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 = (parentElm: Node | false | null | undefined, preferredAnchor: Node | null | undefined, insertedElms: NodeCollection): 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 = (node: Node | null | undefined, insertedNodes: NodeCollection): 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 = ['WebKit', 'Moz', 'O', 'MS', 'webkit', 'moz', 'o', 'ms'];\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 return !(result = resultPossibilities.find((resultPossibility: string) => elmStyle[resultPossibility] !== undefined));\r\n });\r\n\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 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('IntersectionObserver');\r\nexport const ResizeObserverConstructor = jsAPI('ResizeObserver');\r\nexport const cAF = jsAPI('cancelAnimationFrame');\r\nexport const rAF = jsAPI('requestAnimationFrame');\r\n","import { isString } from 'support/utils/types';\r\nimport { each } from 'support/utils/array';\r\nimport { keys } from 'support/utils/object';\r\n\r\nconst rnothtmlwhite = /[^\\x20\\t\\r\\n\\f]+/g;\r\nconst classListAction = (\r\n elm: Element | false | null | undefined,\r\n className: string,\r\n action: (elmClassList: DOMTokenList, clazz: string) => boolean | void\r\n): boolean => {\r\n let clazz: string;\r\n let i = 0;\r\n let result = false;\r\n\r\n if (elm && isString(className)) {\r\n const classes: Array = className.match(rnothtmlwhite) || [];\r\n result = classes.length > 0;\r\n while ((clazz = classes[i++])) {\r\n result = !!action(elm.classList, clazz) && result;\r\n }\r\n }\r\n return result;\r\n};\r\n\r\n/**\r\n * Check whether the given element has the given class name(s).\r\n * @param elm The element.\r\n * @param className The class name(s).\r\n */\r\nexport const hasClass = (elm: Element | false | null | undefined, className: string): boolean =>\r\n classListAction(elm, className, (classList, clazz) => classList.contains(clazz));\r\n\r\n/**\r\n * Adds the given class name(s) to the given element.\r\n * @param elm The element.\r\n * @param className The class name(s) which shall be added. (separated by spaces)\r\n */\r\nexport const addClass = (elm: Element | false | null | undefined, className: string): void => {\r\n classListAction(elm, className, (classList, clazz) => classList.add(clazz));\r\n};\r\n\r\n/**\r\n * Removes the given class name(s) from the given element.\r\n * @param elm The element.\r\n * @param className The class name(s) which shall be removed. (separated by spaces)\r\n */\r\nexport const removeClass = (elm: Element | false | null | undefined, className: string): void => {\r\n classListAction(elm, className, (classList, clazz) => classList.remove(clazz));\r\n};\r\n\r\n/**\r\n * Takes two className strings, compares them and returns the difference as array.\r\n * @param classNameA ClassName A.\r\n * @param classNameB ClassName B.\r\n */\r\nexport const diffClass = (classNameA: string | null | undefined, classNameB: string | null | undefined) => {\r\n const classNameASplit = classNameA && classNameA.split(' ');\r\n const classNameBSplit = classNameB && classNameB.split(' ');\r\n const tempObj = {};\r\n\r\n each(classNameASplit, (className) => {\r\n tempObj[className] = 1;\r\n });\r\n each(classNameBSplit, (className) => {\r\n if (tempObj[className]) {\r\n delete tempObj[className];\r\n } else {\r\n tempObj[className] = 1;\r\n }\r\n });\r\n\r\n return keys(tempObj);\r\n};\r\n","export interface WH {\r\n w: T;\r\n h: T;\r\n}\r\n\r\nconst elementHasDimensions = (elm: HTMLElement): boolean => !!(elm.offsetWidth || elm.offsetHeight || elm.getClientRects().length);\r\nconst zeroObj: WH = {\r\n w: 0,\r\n h: 0,\r\n};\r\n\r\n/**\r\n * Returns the window inner- width and height.\r\n */\r\nexport const windowSize = (): WH => ({\r\n w: window.innerWidth,\r\n h: window.innerHeight,\r\n});\r\n\r\n/**\r\n * Returns the scroll- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the scroll- width and height shall be returned.\r\n */\r\nexport const offsetSize = (elm: HTMLElement | null | undefined): WH =>\r\n elm\r\n ? {\r\n w: elm.offsetWidth,\r\n h: elm.offsetHeight,\r\n }\r\n : zeroObj;\r\n\r\n/**\r\n * Returns the client- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the client- width and height shall be returned.\r\n */\r\nexport const clientSize = (elm: HTMLElement | null | undefined): WH =>\r\n elm\r\n ? {\r\n w: elm.clientWidth,\r\n h: elm.clientHeight,\r\n }\r\n : zeroObj;\r\n\r\n/**\r\n * Returns the client- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the client- width and height shall be returned.\r\n */\r\nexport const scrollSize = (elm: HTMLElement | null | undefined): WH =>\r\n elm\r\n ? {\r\n w: elm.scrollWidth,\r\n h: elm.scrollHeight,\r\n }\r\n : zeroObj;\r\n\r\n/**\r\n * Returns the BoundingClientRect of the passed element.\r\n * @param elm The element of which the BoundingClientRect shall be returned.\r\n */\r\nexport const getBoundingClientRect = (elm: HTMLElement): DOMRect => elm.getBoundingClientRect();\r\n\r\n/**\r\n * Determines whether the passed element has any dimensions.\r\n * @param elm The element.\r\n */\r\nexport const hasDimensions = (elm: HTMLElement | null | undefined): boolean => (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 = (target: EventTarget, eventNames: string, listener: (event: T) => any, capture?: boolean): 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 => (stopPropagation(evt) as undefined) || (preventDefault(evt) as undefined);\r\n","import { each } from 'support/utils/array';\r\nimport { WH, XY, TRBL } from 'support/dom';\r\nimport { PlainObject } from 'typings';\r\n\r\n/**\r\n * Compares two objects and returns true if all values of the passed prop names are identical, false otherwise or if one of the two object is falsy.\r\n * @param a Object a.\r\n * @param b Object b.\r\n * @param props The props which shall be compared.\r\n */\r\nexport const equal = (\r\n a: T | undefined,\r\n b: T | undefined,\r\n props: Array,\r\n propMutation?: ((value: any) => any) | null | false\r\n): boolean => {\r\n if (a && b) {\r\n let result = true;\r\n each(props, (prop) => {\r\n const compareA = propMutation ? propMutation(a[prop]) : a[prop];\r\n const compareB = propMutation ? propMutation(b[prop]) : b[prop];\r\n if (compareA !== compareB) {\r\n result = false;\r\n }\r\n });\r\n return result;\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalWH = (a?: WH, b?: WH) => equal(a, b, ['w', 'h']);\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalXY = (a?: XY, b?: XY) => equal(a, b, ['x', 'y']);\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalTRBL = (a?: TRBL, b?: TRBL) => equal(a, b, ['t', 'r', 'b', 'l']);\r\n\r\n/**\r\n * Compares two DOM Rects for their equality of their width and height properties\r\n * Also returns false if one of the DOM Rects is undefined or null.\r\n * @param a DOM Rect a.\r\n * @param b DOM Rect b.\r\n * @param round Whether the values should be rounded.\r\n */\r\nexport const equalBCRWH = (a?: DOMRect, b?: DOMRect, round?: boolean) =>\r\n equal(a, b, ['width', 'height'], round && ((value) => Math.round(value)));\r\n","import { isNumber, isFunction } from 'support/utils/types';\r\nimport { rAF, cAF } from 'support/compatibility/apis';\r\n\r\nconst setT = window.setTimeout;\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\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 = (curr: Parameters): Parameters | false | null | undefined =>\r\n _mergeParams && prevArguments ? _mergeParams(prevArguments, curr) : curr;\r\n\r\n const flush = () => {\r\n if (timeoutId) {\r\n invokeFunctionToDebounce(mergeParms(latestArguments!) || latestArguments!);\r\n }\r\n };\r\n\r\n const debouncedFn = function () {\r\n const args: Parameters = arguments as Parameters;\r\n const finalTimeout = isFunction(_timeout) ? _timeout() : _timeout;\r\n const hasTimeout = isNumber(finalTimeout) && finalTimeout >= 0;\r\n\r\n if (hasTimeout) {\r\n const finalMaxWait = isFunction(_maxDelay) ? _maxDelay() : _maxDelay;\r\n const hasMaxWait = isNumber(finalMaxWait) && finalMaxWait >= 0;\r\n const setTimeoutFn = finalTimeout! > 0 ? setT : rAF!;\r\n const mergeParamsResult = mergeParms(args);\r\n const invokedArgs = mergeParamsResult || args;\r\n const boundInvoke = invokeFunctionToDebounce.bind(0, invokedArgs);\r\n\r\n if (!mergeParamsResult) {\r\n invokeFunctionToDebounce(prevArguments || args);\r\n }\r\n\r\n clearTimeouts(timeoutId);\r\n timeoutId = setTimeoutFn(boundInvoke, finalTimeout as number) as number;\r\n\r\n if (hasMaxWait && !maxTimeoutId) {\r\n maxTimeoutId = setT(flush, finalMaxWait as number);\r\n }\r\n\r\n prevArguments = latestArguments = invokedArgs;\r\n } else {\r\n invokeFunctionToDebounce(args);\r\n }\r\n };\r\n debouncedFn._flush = flush;\r\n\r\n return debouncedFn as Debounced;\r\n};\r\n","import { each, keys } from 'support/utils';\r\nimport { isString, isNumber, isArray, isUndefined } from 'support/utils/types';\r\nimport { PlainObject, StyleObject } from 'typings';\r\n\r\nexport interface TRBL {\r\n t: number;\r\n r: number;\r\n b: number;\r\n l: number;\r\n}\r\n\r\nconst cssNumber = {\r\n //animationiterationcount: 1,\r\n //columncount: 1,\r\n //fillopacity: 1,\r\n //flexgrow: 1,\r\n //flexshrink: 1,\r\n //fontweight: 1,\r\n //lineheight: 1,\r\n opacity: 1,\r\n //order: 1,\r\n //orphans: 1,\r\n //widows: 1,\r\n zindex: 1,\r\n //zoom: 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 => (!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 ? computedStyle[prop] || computedStyle.getPropertyValue(prop) : elm.style[prop];\r\nconst setCSSVal = (elm: HTMLElement | false | null | undefined, prop: string, val: string | number): void => {\r\n try {\r\n if (elm) {\r\n const { style } = elm;\r\n if (!isUndefined(style[prop])) {\r\n style[prop] = adaptCSSVal(prop, val);\r\n } else {\r\n style.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(elm: HTMLElement | false | null | undefined, styles: StyleObject): void;\r\nexport function style(elm: HTMLElement | false | null | undefined, styles: string): string;\r\nexport function style(elm: HTMLElement | false | null | undefined, styles: Array | string): { [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 = (elm?: HTMLElement | false | null | undefined, propertyPrefix?: string, propertySuffix?: string): TRBL => {\r\n const finalPrefix = propertyPrefix ? `${propertyPrefix}-` : '';\r\n const finalSuffix = propertySuffix ? `-${propertySuffix}` : '';\r\n const top = `${finalPrefix}top${finalSuffix}`;\r\n const right = `${finalPrefix}right${finalSuffix}`;\r\n const bottom = `${finalPrefix}bottom${finalSuffix}`;\r\n const left = `${finalPrefix}left${finalSuffix}`;\r\n const result = style(elm, [top, right, bottom, left]);\r\n return {\r\n t: parseToZeroOrNumber(result[top]),\r\n r: parseToZeroOrNumber(result[right]),\r\n b: parseToZeroOrNumber(result[bottom]),\r\n l: parseToZeroOrNumber(result[left]),\r\n };\r\n};\r\n","import { getBoundingClientRect } from 'support/dom/dimensions';\r\n\r\nexport interface XY {\r\n x: T;\r\n y: T;\r\n}\r\n\r\nconst zeroObj: XY = {\r\n x: 0,\r\n y: 0,\r\n};\r\n\r\n/**\r\n * Returns the offset- left and top coordinates of the passed element relative to the document. If the element is null the top and left values are 0.\r\n * @param elm The element of which the offset- top and left coordinates shall be returned.\r\n */\r\nexport const absoluteCoordinates = (elm: HTMLElement | null | undefined): XY => {\r\n const rect = elm ? getBoundingClientRect(elm) : 0;\r\n return rect\r\n ? {\r\n x: rect.left + window.pageYOffset,\r\n y: rect.top + window.pageXOffset,\r\n }\r\n : zeroObj;\r\n};\r\n\r\n/**\r\n * Returns the offset- left and top coordinates of the passed element. If the element is null the top and left values are 0.\r\n * @param elm The element of which the offset- top and left coordinates shall be returned.\r\n */\r\nexport const offsetCoordinates = (elm: HTMLElement | null | undefined): XY =>\r\n elm\r\n ? {\r\n x: elm.offsetLeft,\r\n y: elm.offsetTop,\r\n }\r\n : zeroObj;\r\n","function _extends() {\n module.exports = _extends = Object.assign || 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 };\n\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","import { each, hasOwnProperty, keys, push, isEmptyObject } from 'support/utils';\r\nimport { type, isArray, isUndefined, isPlainObject, isString } from 'support/utils/types';\r\nimport { PlainObject } from 'typings';\r\n\r\nexport type OptionsObjectType = Record;\r\nexport type OptionsFunctionType = (this: unknown, ...args: unknown[]) => unknown;\r\nexport type OptionsTemplateType = ExtractPropsKey;\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 readonly _foreign: Record;\r\n readonly _validated: PartialOptions;\r\n};\r\n\r\nexport type PartialOptions = {\r\n [P in keyof T]?: T[P] extends OptionsObjectType ? PartialOptions : T[P];\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 { stringify } = JSON;\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 = ['boolean', 'number', 'string', 'array', 'object', 'function', 'null'].reduce(\r\n (result, item) => {\r\n result[item] = templateTypePrefixSuffix[0] + item + templateTypePrefixSuffix[1];\r\n return result;\r\n },\r\n {} as OptionsTemplateTypesDictionary\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 options The options object which shall be validated.\r\n * @param template The template according to which the options object 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 options: PartialOptions,\r\n template: OptionsTemplate,\r\n optionsDiff: T,\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 optionsDiffValue: any = isUndefined(optionsDiff[prop]) ? {} : optionsDiff[prop];\r\n const optionsValue: any = options[prop];\r\n const templateValue: PlainObject | string | OptionsTemplateTypes | Array = 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 validatedResult = validateRecursive(optionsValue, templateValue as T, optionsDiffValue, doWriteErrors, propPrefix + prop);\r\n validatedOptions[prop] = validatedResult._validated as any;\r\n optionsCopy[prop] = validatedResult._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 const doStringifyComparison = isArray(optionsValue) || isPlainObject(optionsValue);\r\n if (doStringifyComparison ? stringify(optionsValue) !== stringify(optionsDiffValue) : optionsValue !== optionsDiffValue) {\r\n validatedOptions[prop] = optionsValue;\r\n }\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 }${errorEnumStrings.length > 0 ? `\\r\\nValid strings are: [ ${errorEnumStrings.join(', ')} ].` : ''}`\r\n );\r\n }\r\n\r\n delete optionsCopy[prop];\r\n }\r\n });\r\n\r\n return {\r\n _foreign: optionsCopy,\r\n _validated: validatedOptions,\r\n };\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 options The options object which shall be validated.\r\n * @param template The template according to which the options object 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 */\r\nconst validateOptions = (\r\n options: PartialOptions,\r\n template: OptionsTemplate,\r\n optionsDiff?: T | null,\r\n doWriteErrors?: boolean\r\n): OptionsValidationResult => {\r\n /*\r\n if (!isEmptyObject(foreign) && doWriteErrors)\r\n console.warn(`The following options are discarded due to invalidity:\\r\\n ${window.JSON.stringify(foreign, null, 2)}`);\r\n\r\n //add values, which aren't specified in the template, to the finished validated object to prevent them from being discarded\r\n if (keepForeignProps) {\r\n Object.assign(result.validated, foreign);\r\n }\r\n */\r\n return validateRecursive(options, template, optionsDiff || ({} as T), doWriteErrors || false);\r\n};\r\n\r\nexport { validateOptions, optionsTemplateTypes };\r\n","import {\r\n OptionsTemplate,\r\n OptionsObjectType,\r\n OptionsTemplateNativeTypes,\r\n OptionsTemplateTypes,\r\n OptionsTemplateValue,\r\n} from 'support/options/validation';\r\nimport { PlainObject } from 'typings';\r\nimport { isArray } from 'support/utils/types';\r\nimport { each, keys } from 'support/utils';\r\n\r\nexport interface OptionsWithOptionsTemplateTransformation {\r\n _template: OptionsTemplate;\r\n _options: T;\r\n}\r\n\r\nexport type OptionsWithOptionsTemplateValue = [T, OptionsTemplateValue];\r\n\r\nexport type OptionsWithOptionsTemplate = {\r\n [P in keyof T]: T[P] extends OptionsObjectType\r\n ? OptionsWithOptionsTemplate\r\n : T[P] extends OptionsTemplateNativeTypes\r\n ? OptionsWithOptionsTemplateValue\r\n : never;\r\n};\r\n\r\n/**\r\n * Transforms the given OptionsWithOptionsTemplate object to its corresponding generic (T) Object or its corresponding Template object.\r\n * @param optionsWithOptionsTemplate The OptionsWithOptionsTemplate object which shall be converted.\r\n * @param toTemplate True if the given OptionsWithOptionsTemplate shall be converted to its corresponding Template object.\r\n */\r\nexport const transformOptions = (optionsWithOptionsTemplate: OptionsWithOptionsTemplate): OptionsWithOptionsTemplateTransformation => {\r\n const result: any = {\r\n _template: {},\r\n _options: {},\r\n };\r\n\r\n each(keys(optionsWithOptionsTemplate), (key: Extract) => {\r\n const val: PlainObject | OptionsTemplateTypes | Array = optionsWithOptionsTemplate[key];\r\n\r\n if (isArray(val)) {\r\n result._template[key] = val[1];\r\n result._options[key] = val[0];\r\n } else {\r\n // if (isObject(val))\r\n const tmpResult = transformOptions(val as OptionsWithOptionsTemplate);\r\n result._template[key] = tmpResult._template;\r\n result._options[key] = tmpResult._options;\r\n }\r\n });\r\n\r\n return result;\r\n};\r\n","export const classNameEnvironment = 'os-environment';\r\nexport const classNameEnvironmentFlexboxGlue = `${classNameEnvironment}-flexbox-glue`;\r\nexport const classNameEnvironmentFlexboxGlueMax = `${classNameEnvironmentFlexboxGlue}-max`;\r\n\r\nexport const classNameHost = 'os-host';\r\nexport const classNamePadding = 'os-padding';\r\nexport const classNameViewport = 'os-viewport';\r\nexport const classNameViewportArrange = `${classNameViewport}-arrange`;\r\nexport const classNameContent = 'os-content';\r\nexport const classNameViewportScrollbarStyling = `${classNameViewport}-scrollbar-styled`;\r\n\r\nexport const classNameSizeObserver = 'os-size-observer';\r\nexport const classNameSizeObserverAppear = `${classNameSizeObserver}-appear`;\r\nexport const classNameSizeObserverListener = `${classNameSizeObserver}-listener`;\r\nexport const classNameSizeObserverListenerScroll = `${classNameSizeObserverListener}-scroll`;\r\nexport const classNameSizeObserverListenerItem = `${classNameSizeObserverListener}-item`;\r\nexport const classNameSizeObserverListenerItemFinal = `${classNameSizeObserverListenerItem}-final`;\r\n\r\nexport const classNameTrinsicObserver = 'os-trinsic-observer';\r\n","import {\r\n optionsTemplateTypes as oTypes,\r\n transformOptions,\r\n OptionsTemplateValue,\r\n OptionsWithOptionsTemplateValue,\r\n OptionsWithOptionsTemplate,\r\n} from 'support/options';\r\n\r\nexport type ResizeBehavior = 'none' | 'both' | 'horizontal' | 'vertical';\r\n\r\nexport type OverflowBehavior = 'hidden' | 'scroll' | 'visible' | 'visible-hidden';\r\n\r\nexport type VisibilityBehavior = 'visible' | 'hidden' | 'auto';\r\n\r\nexport type AutoHideBehavior = 'never' | 'scroll' | 'leave' | 'move';\r\n\r\nexport type ScrollBehavior = 'always' | 'ifneeded' | 'never';\r\n\r\nexport type BasicEventCallback = (this: any) => void;\r\n\r\nexport type ScrollEventCallback = (this: any, args?: UIEvent) => void;\r\n\r\nexport type OverflowChangedCallback = (this: any, args?: OverflowChangedArgs) => void;\r\n\r\nexport type OverflowAmountChangedCallback = (this: any, args?: OverflowAmountChangedArgs) => void;\r\n\r\nexport type DirectionChangedCallback = (this: any, args?: DirectionChangedArgs) => void;\r\n\r\nexport type SizeChangedCallback = (this: any, args?: SizeChangedArgs) => void;\r\n\r\nexport type UpdatedCallback = (this: any, args?: UpdatedArgs) => void;\r\n\r\nexport interface OSOptions {\r\n resize: ResizeBehavior;\r\n paddingAbsolute: boolean;\r\n updating: {\r\n elementEvents: Array<[string, string]> | null;\r\n attributes: string[] | null;\r\n debounce: number | [number, number] | null;\r\n };\r\n overflow: {\r\n x: OverflowBehavior;\r\n y: OverflowBehavior;\r\n };\r\n scrollbars: {\r\n visibility: VisibilityBehavior;\r\n autoHide: AutoHideBehavior;\r\n autoHideDelay: number;\r\n dragScroll: boolean;\r\n clickScroll: boolean;\r\n touch: boolean;\r\n };\r\n textarea: {\r\n dynWidth: boolean;\r\n dynHeight: boolean;\r\n inheritedAttrs: string | Array | null;\r\n };\r\n nativeScrollbarsOverlaid: {\r\n show: boolean;\r\n initialize: boolean;\r\n };\r\n callbacks: {\r\n onUpdated: (() => any) | null;\r\n };\r\n /*\r\n callbacks?: {\r\n onInitialized?: BasicEventCallback | null;\r\n onInitializationWithdrawn?: BasicEventCallback | null;\r\n onDestroyed?: BasicEventCallback | null;\r\n onScrollStart?: ScrollEventCallback | null;\r\n onScroll?: ScrollEventCallback | null;\r\n onScrollStop?: ScrollEventCallback | null;\r\n onOverflowChanged?: OverflowChangedCallback | null;\r\n onOverflowAmountChanged?: OverflowAmountChangedCallback | null;\r\n onDirectionChanged?: DirectionChangedCallback | null;\r\n onContentSizeChanged?: SizeChangedCallback | null;\r\n onHostSizeChanged?: SizeChangedCallback | null;\r\n onUpdated?: UpdatedCallback | null;\r\n };\r\n */\r\n}\r\n\r\nexport interface OverflowChangedArgs {\r\n x: boolean;\r\n y: boolean;\r\n xScrollable: boolean;\r\n yScrollable: boolean;\r\n clipped: boolean;\r\n}\r\n\r\nexport interface OverflowAmountChangedArgs {\r\n x: number;\r\n y: number;\r\n}\r\n\r\nexport interface DirectionChangedArgs {\r\n isRTL: number;\r\n dir: string;\r\n}\r\n\r\nexport interface SizeChangedArgs {\r\n width: number;\r\n height: number;\r\n}\r\n\r\nexport interface UpdatedArgs {\r\n forced: boolean;\r\n}\r\n\r\nconst numberAllowedValues: OptionsTemplateValue = oTypes.number;\r\nconst arrayNullValues: OptionsTemplateValue | null> = [oTypes.array, oTypes.null];\r\nconst stringArrayNullAllowedValues: OptionsTemplateValue | null> = [oTypes.string, oTypes.array, oTypes.null];\r\nconst booleanTrueTemplate: OptionsWithOptionsTemplateValue = [true, oTypes.boolean];\r\nconst booleanFalseTemplate: OptionsWithOptionsTemplateValue = [false, oTypes.boolean];\r\n// const callbackTemplate: OptionsWithOptionsTemplateValue = [null, [oTypes.function, oTypes.null]];\r\nconst resizeAllowedValues: OptionsTemplateValue = 'none both horizontal vertical';\r\nconst overflowAllowedValues: OptionsTemplateValue = 'hidden scroll visible visible-hidden';\r\nconst scrollbarsVisibilityAllowedValues: OptionsTemplateValue = 'visible hidden auto';\r\nconst scrollbarsAutoHideAllowedValues: OptionsTemplateValue = 'never scroll leavemove';\r\n\r\n/**\r\n * A object which serves as \"default options object\" and \"options template object\".\r\n * I combined these two into one object so that I don't have to define two separate big objects, instead I define one big object.\r\n *\r\n * The property value is a tuple:\r\n * the first value is the default value\r\n * the second value is the template value\r\n * Example:\r\n * {\r\n * a: ['default', [Type.string, Type.null]],\r\n * b: [250, Type.number]\r\n * }\r\n * Property \"a\" has a default value of 'default' and it can be a string or null\r\n * Property \"b\" has a default value of 250 and it can be number\r\n */\r\nconst defaultOptionsWithTemplate: OptionsWithOptionsTemplate = {\r\n resize: ['none', resizeAllowedValues], // none || both || horizontal || vertical || n || b || h || v\r\n paddingAbsolute: booleanFalseTemplate, // true || false\r\n updating: {\r\n elementEvents: [[['img', 'load']], arrayNullValues], // array of tuples || null\r\n attributes: [null, arrayNullValues],\r\n debounce: [\r\n [0, 33],\r\n [oTypes.number, oTypes.array, oTypes.null],\r\n ], // number || number array || null\r\n },\r\n overflow: {\r\n x: ['scroll', overflowAllowedValues], // visible-hidden || visible-scroll || hidden || scroll || v-h || v-s || h || s\r\n y: ['scroll', overflowAllowedValues], // visible-hidden || visible-scroll || hidden || scroll || v-h || v-s || h || s\r\n },\r\n scrollbars: {\r\n visibility: ['auto', scrollbarsVisibilityAllowedValues], // visible || hidden || auto || v || h || a\r\n autoHide: ['never', scrollbarsAutoHideAllowedValues], // never || scroll || leave || move || n || s || l || m\r\n autoHideDelay: [800, numberAllowedValues], // number\r\n dragScroll: booleanTrueTemplate, // true || false\r\n clickScroll: booleanFalseTemplate, // true || false\r\n touch: booleanTrueTemplate, // true || false\r\n },\r\n textarea: {\r\n dynWidth: booleanFalseTemplate, // true || false\r\n dynHeight: booleanFalseTemplate, // true || false\r\n inheritedAttrs: [['style', 'class'], stringArrayNullAllowedValues], // string || array || null\r\n },\r\n nativeScrollbarsOverlaid: {\r\n show: booleanFalseTemplate, // true || false\r\n initialize: booleanFalseTemplate, // true || false\r\n },\r\n callbacks: {\r\n onUpdated: [null, [oTypes.function, oTypes.null]],\r\n },\r\n /*\r\n callbacks: {\r\n onInitialized: callbackTemplate, // null || function\r\n onInitializationWithdrawn: callbackTemplate, // null || function\r\n onDestroyed: callbackTemplate, // null || function\r\n onScrollStart: callbackTemplate, // null || function\r\n onScroll: callbackTemplate, // null || function\r\n onScrollStop: callbackTemplate, // null || function\r\n onOverflowChanged: callbackTemplate, // null || function\r\n onOverflowAmountChanged: callbackTemplate, // null || function\r\n onDirectionChanged: callbackTemplate, // null || function\r\n onContentSizeChanged: callbackTemplate, // null || function\r\n onHostSizeChanged: callbackTemplate, // null || function\r\n onUpdated: callbackTemplate, // null || function\r\n },\r\n */\r\n};\r\n\r\nexport const { _template: optionsTemplate, _options: defaultOptions } = transformOptions(defaultOptionsWithTemplate);\r\n","import {\r\n createDOM,\r\n addClass,\r\n style,\r\n appendChildren,\r\n clientSize,\r\n absoluteCoordinates,\r\n offsetSize,\r\n scrollLeft,\r\n XY,\r\n removeAttr,\r\n removeElements,\r\n windowSize,\r\n runEach,\r\n equalBCRWH,\r\n getBoundingClientRect,\r\n assignDeep,\r\n cssProperty,\r\n PartialOptions,\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\n\r\nexport interface InitializationStrategy {\r\n _padding: boolean;\r\n _content: boolean;\r\n}\r\n\r\nexport type OnEnvironmentChanged = (env: Environment) => void;\r\nexport interface Environment {\r\n _nativeScrollbarSize: XY;\r\n _nativeScrollbarIsOverlaid: XY;\r\n _nativeScrollbarStyling: boolean;\r\n _rtlScrollBehavior: { n: boolean; i: boolean };\r\n _flexboxGlue: boolean;\r\n _cssCustomProperties: boolean;\r\n _addListener(listener: OnEnvironmentChanged): void;\r\n _removeListener(listener: OnEnvironmentChanged): void;\r\n _getInitializationStrategy(): InitializationStrategy;\r\n _setInitializationStrategy(newInitializationStrategy: Partial): void;\r\n _getDefaultOptions(): OSOptions;\r\n _setDefaultOptions(newDefaultOptions: PartialOptions): void;\r\n _defaultInitializationStrategy: InitializationStrategy;\r\n _defaultDefaultOptions: OSOptions;\r\n}\r\n\r\nlet environmentInstance: Environment;\r\nconst { abs, round } = Math;\r\n\r\nconst diffBiggerThanOne = (valOne: number, valTwo: number): boolean => {\r\n const absValOne = abs(valOne);\r\n const absValTwo = abs(valTwo);\r\n return !(absValOne === absValTwo || absValOne + 1 === absValTwo || absValOne - 1 === absValTwo);\r\n};\r\n\r\nconst getNativeScrollbarSize = (body: HTMLElement, measureElm: HTMLElement): XY => {\r\n appendChildren(body, measureElm);\r\n const cSize = clientSize(measureElm);\r\n const oSize = offsetSize(measureElm);\r\n\r\n return {\r\n x: oSize.h - cSize.h,\r\n y: oSize.w - cSize.w,\r\n };\r\n};\r\n\r\nconst getNativeScrollbarStyling = (testElm: HTMLElement): boolean => {\r\n let result = false;\r\n addClass(testElm, classNameViewportScrollbarStyling);\r\n try {\r\n result =\r\n style(testElm, cssProperty('scrollbar-width')) === 'none' ||\r\n window.getComputedStyle(testElm, '::-webkit-scrollbar').getPropertyValue('display') === 'none';\r\n } catch (ex) {}\r\n\r\n return result;\r\n};\r\n\r\nconst getRtlScrollBehavior = (parentElm: HTMLElement, childElm: HTMLElement): { i: boolean; n: boolean } => {\r\n const strHidden = 'hidden';\r\n style(parentElm, { overflowX: strHidden, overflowY: strHidden, direction: 'rtl' });\r\n scrollLeft(parentElm, 0);\r\n\r\n const parentOffset = absoluteCoordinates(parentElm);\r\n const childOffset = absoluteCoordinates(childElm);\r\n scrollLeft(parentElm, -999); // https://github.com/KingSora/OverlayScrollbars/issues/187\r\n const childOffsetAfterScroll = absoluteCoordinates(childElm);\r\n return {\r\n /**\r\n * origin direction = determines if the zero scroll position is on the left or right side\r\n * 'i' means 'invert' (i === true means that the axis must be inverted to be correct)\r\n * true = on the left side\r\n * false = on the right side\r\n */\r\n i: parentOffset.x === childOffset.x,\r\n /**\r\n * negative = determines if the maximum scroll is positive or negative\r\n * 'n' means 'negate' (n === true means that the axis must be negated to be correct)\r\n * true = negative\r\n * false = positive\r\n */\r\n n: childOffset.x !== childOffsetAfterScroll.x,\r\n };\r\n};\r\n\r\nconst getFlexboxGlue = (parentElm: HTMLElement, childElm: HTMLElement): boolean => {\r\n addClass(parentElm, classNameEnvironmentFlexboxGlue);\r\n const minOffsetsizeParent = getBoundingClientRect(parentElm);\r\n const minOffsetsize = getBoundingClientRect(childElm);\r\n const supportsMin = equalBCRWH(minOffsetsize, minOffsetsizeParent, true);\r\n\r\n addClass(parentElm, classNameEnvironmentFlexboxGlueMax);\r\n const maxOffsetsizeParent = getBoundingClientRect(parentElm);\r\n const maxOffsetsize = getBoundingClientRect(childElm);\r\n const supportsMax = equalBCRWH(maxOffsetsize, maxOffsetsizeParent, true);\r\n\r\n return supportsMin && supportsMax;\r\n};\r\n\r\nconst getWindowDPR = (): number => {\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n const dDPI = window.screen.deviceXDPI || 0;\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n const sDPI = window.screen.logicalXDPI || 1;\r\n return window.devicePixelRatio || dDPI / sDPI;\r\n};\r\n\r\nconst getDefaultInitializationStrategy = (nativeScrollbarStyling: boolean): InitializationStrategy => ({\r\n _padding: !nativeScrollbarStyling,\r\n _content: false,\r\n});\r\n\r\nconst createEnvironment = (): Environment => {\r\n const { body } = document;\r\n const envDOM = createDOM(`
`);\r\n const envElm = envDOM[0] as HTMLElement;\r\n const envChildElm = envElm.firstChild as HTMLElement;\r\n const onChangedListener: Set = new Set();\r\n const nativeScrollbarSize = getNativeScrollbarSize(body, envElm);\r\n const nativeScrollbarStyling = getNativeScrollbarStyling(envElm);\r\n const nativeScrollbarIsOverlaid = {\r\n x: nativeScrollbarSize.x === 0,\r\n y: nativeScrollbarSize.y === 0,\r\n };\r\n const defaultInitializationStrategy = getDefaultInitializationStrategy(nativeScrollbarStyling);\r\n let initializationStrategy = defaultInitializationStrategy;\r\n let defaultDefaultOptions = defaultOptions;\r\n\r\n const env: Environment = {\r\n _nativeScrollbarSize: nativeScrollbarSize,\r\n _nativeScrollbarIsOverlaid: nativeScrollbarIsOverlaid,\r\n _nativeScrollbarStyling: nativeScrollbarStyling,\r\n _cssCustomProperties: style(envElm, 'zIndex') === '-1',\r\n _rtlScrollBehavior: getRtlScrollBehavior(envElm, envChildElm),\r\n _flexboxGlue: getFlexboxGlue(envElm, envChildElm),\r\n _addListener(listener: OnEnvironmentChanged): void {\r\n onChangedListener.add(listener);\r\n },\r\n _removeListener(listener: OnEnvironmentChanged): void {\r\n onChangedListener.delete(listener);\r\n },\r\n _getInitializationStrategy: () => ({ ...initializationStrategy }),\r\n _setInitializationStrategy(newInitializationStrategy) {\r\n initializationStrategy = assignDeep({}, initializationStrategy, newInitializationStrategy);\r\n },\r\n _getDefaultOptions: () => ({ ...defaultDefaultOptions }),\r\n _setDefaultOptions(newDefaultOptions) {\r\n defaultDefaultOptions = assignDeep({}, defaultDefaultOptions, newDefaultOptions);\r\n },\r\n _defaultInitializationStrategy: defaultInitializationStrategy,\r\n _defaultDefaultOptions: defaultDefaultOptions,\r\n };\r\n\r\n removeAttr(envElm, 'style');\r\n removeElements(envElm);\r\n\r\n if (!nativeScrollbarStyling && (!nativeScrollbarIsOverlaid.x || !nativeScrollbarIsOverlaid.y)) {\r\n let size = windowSize();\r\n let dpr = getWindowDPR();\r\n let scrollbarSize = nativeScrollbarSize;\r\n\r\n window.addEventListener('resize', () => {\r\n if (onChangedListener.size) {\r\n const sizeNew = windowSize();\r\n const deltaSize = {\r\n w: sizeNew.w - size.w,\r\n h: sizeNew.h - size.h,\r\n };\r\n\r\n if (deltaSize.w === 0 && deltaSize.h === 0) return;\r\n\r\n const deltaAbsSize = {\r\n w: abs(deltaSize.w),\r\n h: abs(deltaSize.h),\r\n };\r\n const deltaAbsRatio = {\r\n w: abs(round(sizeNew.w / (size.w / 100.0))),\r\n h: abs(round(sizeNew.h / (size.h / 100.0))),\r\n };\r\n const dprNew = getWindowDPR();\r\n const deltaIsBigger = deltaAbsSize.w > 2 && deltaAbsSize.h > 2;\r\n const difference = !diffBiggerThanOne(deltaAbsRatio.w, deltaAbsRatio.h);\r\n const dprChanged = dprNew !== dpr && dpr > 0;\r\n const isZoom = deltaIsBigger && difference && dprChanged;\r\n\r\n if (isZoom) {\r\n const newScrollbarSize = (environmentInstance._nativeScrollbarSize = getNativeScrollbarSize(body, envElm));\r\n removeElements(envElm);\r\n\r\n if (scrollbarSize.x !== newScrollbarSize.x || scrollbarSize.y !== newScrollbarSize.y) {\r\n runEach(onChangedListener);\r\n }\r\n\r\n scrollbarSize = newScrollbarSize;\r\n }\r\n\r\n size = sizeNew;\r\n dpr = dprNew;\r\n }\r\n });\r\n }\r\n\r\n return env;\r\n};\r\n\r\nexport const getEnvironment = (): Environment => {\r\n if (!environmentInstance) {\r\n environmentInstance = createEnvironment();\r\n }\r\n return environmentInstance;\r\n};\r\n","import {\r\n isHTMLElement,\r\n appendChildren,\r\n is,\r\n createDiv,\r\n contents,\r\n insertAfter,\r\n addClass,\r\n parent,\r\n isUndefined,\r\n removeElements,\r\n removeClass,\r\n push,\r\n runEach,\r\n insertBefore,\r\n attr,\r\n isBoolean,\r\n} from 'support';\r\nimport {\r\n classNameHost,\r\n classNamePadding,\r\n classNameViewport,\r\n classNameViewportArrange,\r\n classNameContent,\r\n classNameViewportScrollbarStyling,\r\n} from 'classnames';\r\nimport { getEnvironment } from 'environment';\r\nimport { OSTarget, OSTargetObject, OSTargetElement } from 'typings';\r\n\r\nexport interface OSTargetContext {\r\n _isTextarea: boolean;\r\n _isBody: boolean;\r\n _htmlElm: HTMLHtmlElement;\r\n _bodyElm: HTMLBodyElement;\r\n _windowElm: Window;\r\n _documentElm: HTMLDocument;\r\n}\r\n\r\nexport interface PreparedOSTargetObject {\r\n _target: OSTargetElement;\r\n _host: HTMLElement;\r\n _viewport: HTMLElement;\r\n _padding: HTMLElement | false | null;\r\n _content: HTMLElement | false | null;\r\n _viewportArrange: HTMLStyleElement | false | null;\r\n}\r\n\r\nexport interface StructureSetup {\r\n _targetObj: PreparedOSTargetObject;\r\n _targetCtx: OSTargetContext;\r\n _destroy: () => void;\r\n}\r\n\r\nconst unwrap = (elm: HTMLElement | false | null | undefined) => {\r\n appendChildren(parent(elm), contents(elm));\r\n removeElements(elm);\r\n};\r\n\r\nlet contentArrangeCounter = 0;\r\nconst createUniqueViewportArrangeElement = (): HTMLStyleElement => {\r\n const elm = document.createElement('style');\r\n\r\n attr(elm, 'id', `${classNameViewportArrange}-${contentArrangeCounter}`);\r\n contentArrangeCounter++;\r\n\r\n return elm;\r\n};\r\nconst evaluateCreationFromStrategy = (initializationValue: HTMLElement | boolean | undefined, strategy: boolean): HTMLElement | false | undefined => {\r\n const isBooleanValue = isBoolean(initializationValue);\r\n if (isBooleanValue || isUndefined(initializationValue)) {\r\n return (isBooleanValue ? initializationValue : strategy) && undefined;\r\n }\r\n return initializationValue as HTMLElement;\r\n};\r\n\r\nexport const createStructureSetup = (target: OSTarget | OSTargetObject): StructureSetup => {\r\n const { _getInitializationStrategy, _nativeScrollbarStyling, _nativeScrollbarIsOverlaid, _cssCustomProperties } = getEnvironment();\r\n const { _padding: paddingNeeded, _content: contentNeeded } = _getInitializationStrategy();\r\n const targetIsElm = isHTMLElement(target);\r\n const osTargetObj: Partial = targetIsElm\r\n ? ({} as Partial)\r\n : {\r\n _host: (target as OSTargetObject).host,\r\n _target: (target as OSTargetObject).target,\r\n _viewport: (target as OSTargetObject).viewport,\r\n _padding: evaluateCreationFromStrategy((target as OSTargetObject).padding, paddingNeeded),\r\n _content: evaluateCreationFromStrategy((target as OSTargetObject).content, contentNeeded),\r\n };\r\n\r\n if (targetIsElm) {\r\n const viewport = createDiv(classNameViewport);\r\n const padding = paddingNeeded && createDiv(classNamePadding);\r\n const content = contentNeeded && createDiv(classNameContent);\r\n\r\n osTargetObj._target = target as OSTargetElement;\r\n osTargetObj._padding = padding;\r\n osTargetObj._viewport = viewport;\r\n osTargetObj._content = content;\r\n }\r\n\r\n let { _target, _padding, _viewport, _content } = osTargetObj;\r\n const destroyFns: (() => any)[] = [];\r\n const isTextarea = is(_target, 'textarea');\r\n const isBody = !isTextarea && is(_target, 'body');\r\n const _host = (isTextarea ? osTargetObj._host || createDiv() : _target) as HTMLElement;\r\n const getTargetContents = (contentSlot: HTMLElement) => (isTextarea ? (_target as HTMLTextAreaElement) : contents(contentSlot as HTMLElement));\r\n const isTextareaHostGenerated = isTextarea && _host !== osTargetObj._host;\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 if (targetIsElm) {\r\n const contentSlot = _content || _viewport;\r\n appendChildren(contentSlot, getTargetContents(_target!));\r\n appendChildren(_host, _padding);\r\n appendChildren(_padding || _host, _viewport);\r\n appendChildren(_viewport, _content);\r\n\r\n push(destroyFns, () => {\r\n appendChildren(_host, contents(contentSlot));\r\n removeElements(_padding || _viewport);\r\n removeClass(_host, classNameHost);\r\n });\r\n } else {\r\n const contentContainingElm = _content || _viewport || _padding || _host;\r\n const createPadding = isUndefined(_padding);\r\n const createViewport = isUndefined(_viewport);\r\n const createContent = isUndefined(_content);\r\n const targetContents = getTargetContents(contentContainingElm);\r\n\r\n _padding = osTargetObj._padding = createPadding ? createDiv() : _padding;\r\n _viewport = osTargetObj._viewport = createViewport ? createDiv() : _viewport;\r\n _content = osTargetObj._content = createContent ? createDiv() : _content;\r\n\r\n appendChildren(_host, _padding);\r\n appendChildren(_padding || _host, _viewport);\r\n appendChildren(_viewport, _content);\r\n\r\n const contentSlot = _content || _viewport;\r\n appendChildren(contentSlot, targetContents);\r\n\r\n push(destroyFns, () => {\r\n if (createContent) {\r\n unwrap(_content);\r\n }\r\n if (createViewport) {\r\n unwrap(_viewport);\r\n }\r\n if (createPadding) {\r\n unwrap(_padding);\r\n }\r\n removeClass(_host, classNameHost);\r\n removeClass(_padding, classNamePadding);\r\n removeClass(_viewport, classNameViewport);\r\n removeClass(_content, classNameContent);\r\n });\r\n }\r\n\r\n addClass(_host, classNameHost);\r\n addClass(_padding, classNamePadding);\r\n addClass(_viewport, classNameViewport);\r\n addClass(_content, classNameContent);\r\n\r\n const ownerDocument: HTMLDocument = _target!.ownerDocument;\r\n const bodyElm = ownerDocument.body as HTMLBodyElement;\r\n const wnd = ownerDocument.defaultView as Window;\r\n const ctx: OSTargetContext = {\r\n _windowElm: wnd,\r\n _documentElm: ownerDocument,\r\n _htmlElm: parent(bodyElm) as HTMLHtmlElement,\r\n _bodyElm: bodyElm,\r\n _isTextarea: isTextarea,\r\n _isBody: isBody,\r\n };\r\n // @ts-ignore\r\n const obj: PreparedOSTargetObject = {\r\n ...osTargetObj,\r\n _host,\r\n };\r\n\r\n if (_nativeScrollbarStyling) {\r\n push(destroyFns, removeClass.bind(0, _viewport, classNameViewportScrollbarStyling));\r\n } else if (!_cssCustomProperties && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y)) {\r\n const viewportArrangeElm = createUniqueViewportArrangeElement();\r\n\r\n insertBefore(_viewport, viewportArrangeElm);\r\n push(destroyFns, removeElements.bind(0, viewportArrangeElm));\r\n\r\n obj._viewportArrange = viewportArrangeElm;\r\n }\r\n\r\n return {\r\n _targetObj: obj,\r\n _targetCtx: ctx,\r\n _destroy: () => {\r\n runEach(destroyFns);\r\n },\r\n };\r\n};\r\n","import {\r\n Cache,\r\n CacheValues,\r\n createCache,\r\n createDOM,\r\n style,\r\n appendChildren,\r\n offsetSize,\r\n scrollLeft,\r\n scrollTop,\r\n runEach,\r\n prependChildren,\r\n removeElements,\r\n on,\r\n stopAndPrevent,\r\n addClass,\r\n equalWH,\r\n push,\r\n cAF,\r\n rAF,\r\n ResizeObserverConstructor,\r\n isArray,\r\n isBoolean,\r\n removeClass,\r\n} from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport {\r\n classNameSizeObserver,\r\n classNameSizeObserverAppear,\r\n classNameSizeObserverListener,\r\n classNameSizeObserverListenerScroll,\r\n classNameSizeObserverListenerItem,\r\n classNameSizeObserverListenerItemFinal,\r\n} from 'classnames';\r\n\r\nexport interface SizeObserverOptions {\r\n _direction?: boolean;\r\n _appear?: boolean;\r\n}\r\n\r\nexport interface SizeObserverCallbackParams {\r\n _sizeChanged: boolean;\r\n _directionIsRTLCache?: CacheValues;\r\n _appear?: boolean;\r\n}\r\n\r\nexport interface SizeObserver {\r\n _destroy(): void;\r\n _getCurrentCacheValues(\r\n force?: boolean\r\n ): {\r\n _directionIsRTL: CacheValues;\r\n };\r\n}\r\n\r\n/*\r\nconst directionIsRTLMap = {\r\n direction: ['rtl'],\r\n 'writing-mode': ['sideways-rl', 'tb', 'tb-rl', 'vertical-rl'],\r\n};\r\nconst directionIsRTL = (elm: HTMLElement): boolean => {\r\n let isRTL = false;\r\n const styles = style(elm, ['direction', 'writing-mode']);\r\n each(styles, (value, key) => {\r\n isRTL = isRTL || indexOf(directionIsRTLMap[key], value) > -1;\r\n });\r\n return isRTL;\r\n};\r\n*/\r\nconst animationStartEventName = 'animationstart';\r\nconst scrollEventName = 'scroll';\r\nconst scrollAmount = 3333333;\r\nconst directionIsRTL = (elm: HTMLElement): boolean => style(elm, 'direction') === 'rtl';\r\nconst domRectHasDimensions = (rect?: DOMRectReadOnly) => rect && (rect.height || rect.width);\r\n\r\n/**\r\n * Creates a size observer which observes any size, padding, border, margin and box-sizing changes of the target element. Depending on the options also direction and appear can be observed.\r\n * @param target The target element which shall be observed.\r\n * @param onSizeChangedCallback The callback which gets called after a size change was detected.\r\n * @param options The options for size detection, whether to observe also direction and appear.\r\n * @returns A object which represents the instance of the size observer.\r\n */\r\nexport const createSizeObserver = (\r\n target: HTMLElement,\r\n onSizeChangedCallback: (params: SizeObserverCallbackParams) => any,\r\n options?: SizeObserverOptions\r\n): SizeObserver => {\r\n const { _direction: observeDirectionChange = false, _appear: observeAppearChange = false } = options || {};\r\n const { _rtlScrollBehavior: rtlScrollBehavior } = getEnvironment();\r\n const baseElements = createDOM(`
`);\r\n const sizeObserver = baseElements[0] as HTMLElement;\r\n const listenerElement = sizeObserver.firstChild as HTMLElement;\r\n const { _update: updateResizeObserverContentRectCache } = createCache(0, {\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 = (sizeChangedContext?: CacheValues | ResizeObserverEntry[] | Event | boolean) => {\r\n const hasDirectionCache = sizeChangedContext && isBoolean((sizeChangedContext as CacheValues)._value);\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 (isArray(sizeChangedContext) && sizeChangedContext.length > 0) {\r\n const { _previous, _value } = updateResizeObserverContentRectCache(0, sizeChangedContext.pop()!.contentRect);\r\n const hasDimensions = domRectHasDimensions(_value);\r\n const hadDimensions = domRectHasDimensions(_previous);\r\n skip = !_previous || !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)._changed; // 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 ? (sizeChangedContext as CacheValues)._value : directionIsRTL(sizeObserver);\r\n scrollLeft(sizeObserver, rtl ? (rtlScrollBehavior.n ? -scrollAmount : rtlScrollBehavior.i ? 0 : scrollAmount) : scrollAmount);\r\n scrollTop(sizeObserver, scrollAmount);\r\n }\r\n\r\n if (!skip) {\r\n onSizeChangedCallback({\r\n _sizeChanged: !hasDirectionCache,\r\n _directionIsRTLCache: hasDirectionCache ? (sizeChangedContext as CacheValues) : 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 ? onSizeChangedCallbackProxy : 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, [on(expandElement, scrollEventName, onScroll), on(shrinkElement, scrollEventName, onScroll)]);\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(directionIsRTL.bind(0, sizeObserver));\r\n const { _update: updateDirectionIsRTLCache } = directionIsRTLCache;\r\n push(\r\n offListeners,\r\n on(sizeObserver, scrollEventName, (event: Event) => {\r\n const directionIsRTLCacheValues = updateDirectionIsRTLCache();\r\n console.log;\r\n const { _value, _changed } = directionIsRTLCacheValues;\r\n if (_changed) {\r\n removeClass(listenerElement, 'ltr rtl');\r\n if (_value) {\r\n addClass(listenerElement, 'rtl');\r\n } else {\r\n addClass(listenerElement, 'ltr');\r\n }\r\n onSizeChangedCallbackProxy(directionIsRTLCacheValues);\r\n }\r\n\r\n stopAndPrevent(event);\r\n })\r\n );\r\n }\r\n\r\n // appearCallback is always needed on scroll-observer strategy to reset it\r\n if (appearCallback) {\r\n addClass(sizeObserver, classNameSizeObserverAppear);\r\n push(\r\n offListeners,\r\n on(sizeObserver, animationStartEventName, appearCallback, {\r\n // Fire only once for \"CSS is ready\" event if ResizeObserver strategy is used\r\n _once: !!ResizeObserverConstructor,\r\n })\r\n );\r\n }\r\n\r\n prependChildren(target, sizeObserver);\r\n\r\n return {\r\n _destroy() {\r\n runEach(offListeners);\r\n removeElements(sizeObserver);\r\n },\r\n _getCurrentCacheValues(force?: boolean) {\r\n return {\r\n _directionIsRTL: directionIsRTLCache\r\n ? directionIsRTLCache._current(force)\r\n : {\r\n _value: false,\r\n _previous: false,\r\n _changed: false,\r\n },\r\n };\r\n },\r\n };\r\n};\r\n","import {\r\n WH,\r\n CacheValues,\r\n createDiv,\r\n offsetSize,\r\n runEach,\r\n prependChildren,\r\n removeElements,\r\n createCache,\r\n push,\r\n IntersectionObserverConstructor,\r\n} from 'support';\r\nimport { createSizeObserver } from 'observers/sizeObserver';\r\nimport { classNameTrinsicObserver } from 'classnames';\r\n\r\nexport interface TrinsicObserver {\r\n _destroy(): void;\r\n _getCurrentCacheValues(\r\n force?: boolean\r\n ): {\r\n _heightIntrinsic: CacheValues;\r\n };\r\n}\r\n\r\n/**\r\n * Creates a trinsic observer which observes changes to intrinsic or extrinsic sizing for the height of the target element.\r\n * @param target The element which shall be observed.\r\n * @param onTrinsicChangedCallback The callback which gets called after a change was detected.\r\n * @returns A object which represents the instance of the trinsic observer.\r\n */\r\nexport const createTrinsicObserver = (\r\n target: HTMLElement,\r\n onTrinsicChangedCallback: (heightIntrinsic: CacheValues) => any\r\n): TrinsicObserver => {\r\n const trinsicObserver = createDiv(classNameTrinsicObserver);\r\n const offListeners: (() => void)[] = [];\r\n const { _update: updateHeightIntrinsicCache, _current: getCurrentHeightIntrinsicCache } = createCache<\r\n boolean,\r\n IntersectionObserverEntry | WH\r\n >(\r\n (ioEntryOrSize: IntersectionObserverEntry | WH) =>\r\n (ioEntryOrSize! as WH).h === 0 ||\r\n (ioEntryOrSize! as IntersectionObserverEntry).isIntersecting ||\r\n (ioEntryOrSize! as IntersectionObserverEntry).intersectionRatio > 0,\r\n {\r\n _initialValue: false,\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 const last = entries.pop();\r\n if (last) {\r\n const heightIntrinsic = updateHeightIntrinsicCache(0, last);\r\n\r\n if (heightIntrinsic._changed) {\r\n onTrinsicChangedCallback(heightIntrinsic);\r\n }\r\n }\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 const heightIntrinsicCache = updateHeightIntrinsicCache(0, newSize);\r\n if (heightIntrinsicCache._changed) {\r\n onTrinsicChangedCallback(heightIntrinsicCache);\r\n }\r\n };\r\n push(offListeners, createSizeObserver(trinsicObserver, onSizeChanged)._destroy);\r\n onSizeChanged();\r\n }\r\n\r\n prependChildren(target, trinsicObserver);\r\n\r\n return {\r\n _destroy() {\r\n runEach(offListeners);\r\n removeElements(trinsicObserver);\r\n },\r\n _getCurrentCacheValues(force?: boolean) {\r\n return {\r\n _heightIntrinsic: getCurrentHeightIntrinsicCache(force),\r\n };\r\n },\r\n };\r\n};\r\n","import {\r\n each,\r\n noop,\r\n debounce,\r\n indexOf,\r\n isString,\r\n MutationObserverConstructor,\r\n isEmptyArray,\r\n on,\r\n off,\r\n attr,\r\n is,\r\n find,\r\n push,\r\n isUndefined,\r\n} from 'support';\r\n\r\ntype StringNullUndefined = string | null | undefined;\r\n\r\ntype DOMContentObserverCallback = (contentChangedTroughEvent: boolean) => any;\r\n\r\ntype DOMTargetObserverCallback = (targetChangedAttrs: string[], targetStyleChanged: boolean) => any;\r\n\r\ninterface DOMObserverOptionsBase {\r\n _attributes?: string[];\r\n _styleChangingAttributes?: string[];\r\n}\r\n\r\ninterface DOMContentObserverOptions extends DOMObserverOptionsBase {\r\n _eventContentChange?: DOMObserverEventContentChange; // [selector, eventname(s) | function returning eventname(s)] -> eventnames divided by whitespaces\r\n _nestedTargetSelector?: string;\r\n _ignoreContentChange?: DOMObserverIgnoreContentChange; // function which will prevent marking certain dom changes as content change if it returns true\r\n _ignoreNestedTargetChange?: DOMObserverIgnoreTargetChange; // a function which will prevent marking certain attributes as changed on nested targets if it returns true\r\n}\r\n\r\ninterface DOMTargetObserverOptions extends DOMObserverOptionsBase {\r\n _ignoreTargetChange?: DOMObserverIgnoreTargetChange; // a function which will prevent marking certain attributes as changed if it returns true\r\n}\r\n\r\ntype ContentChangeArrayItem = [StringNullUndefined, StringNullUndefined] | null | undefined;\r\n\r\nexport type DOMObserverEventContentChange = Array | false | null | 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 ? DOMContentObserverOptions : DOMTargetObserverOptions;\r\n\r\nexport interface DOMObserver {\r\n _destroy: () => void;\r\n _update: () => void;\r\n}\r\n\r\n/**\r\n * Creates a set of helper functions to observe events of elements inside the target element.\r\n * @param target The target element of which the children elements shall be observed. (not only direct children but also nested ones)\r\n * @param eventContentChange The event content change array. (array of tuples: selector and eventname(s))\r\n * @param callback Callback which is called if one of the elements emits the corresponding event.\r\n * @returns A object which contains a set of helper functions to destroy and update the observation of elements.\r\n */\r\nconst createEventContentChange = (target: Element, eventContentChange: DOMObserverEventContentChange, callback: (...args: any) => any) => {\r\n let map: Map | undefined;\r\n const _destroy = () => {\r\n if (map) {\r\n map.forEach((eventName: string, elm: Node) => {\r\n off(elm, eventName, callback);\r\n });\r\n map.clear();\r\n }\r\n };\r\n const _updateElements = (getElements?: (selector: string) => Node[]) => {\r\n if (map && 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 = eventNames && selector && (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 registredEventNames = map!.get(elm);\r\n const newEntry = isUndefined(registredEventNames);\r\n const changingExistingEntry = !newEntry && eventNames !== registredEventNames;\r\n const finalEventNames = changingExistingEntry ? `${registredEventNames} ${eventNames}` : eventNames;\r\n\r\n if (changingExistingEntry) {\r\n off(elm, registredEventNames!, callback);\r\n }\r\n\r\n map!.set(elm, finalEventNames);\r\n on(elm, finalEventNames, callback);\r\n })\r\n );\r\n }\r\n };\r\n\r\n if (eventContentChange) {\r\n map = map || new Map();\r\n _destroy();\r\n _updateElements();\r\n }\r\n\r\n return {\r\n _destroy,\r\n _updateElements,\r\n };\r\n};\r\n\r\n/**\r\n * Creates a DOM observer which observes DOM changes to either the target element or its children.\r\n * @param target The element which shall be observed.\r\n * @param isContentObserver Whether this observer is just observing the target or just the targets children. (not only direct children but also nested ones)\r\n * @param callback The callback which gets called if a change was detected.\r\n * @param options The options for DOM change detection.\r\n * @returns A object which represents the instance of the DOM observer.\r\n */\r\nexport const createDOMObserver = (\r\n target: HTMLElement,\r\n isContentObserver: ContentObserver,\r\n callback: DOMObserverCallback,\r\n options?: DOMObserverOptions\r\n): DOMObserver => {\r\n let isConnected = false;\r\n const {\r\n _attributes,\r\n _styleChangingAttributes,\r\n _eventContentChange,\r\n _nestedTargetSelector,\r\n _ignoreTargetChange,\r\n _ignoreNestedTargetChange,\r\n _ignoreContentChange,\r\n } = (options as DOMContentObserverOptions & DOMTargetObserverOptions) || {};\r\n const { _destroy: destroyEventContentChange, _updateElements: updateEventContentChangeElements } = createEventContentChange(\r\n target,\r\n isContentObserver && _eventContentChange,\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 );\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 = (isContentObserver ? _ignoreNestedTargetChange : _ignoreTargetChange) || noop;\r\n const ignoreContentChange = _ignoreContentChange || noop;\r\n const targetChangedAttrs: string[] = [];\r\n const totalAddedNodes: Node[] = [];\r\n let targetStyleChanged = false;\r\n let contentChanged = false;\r\n let childListChanged = false;\r\n each(mutations, (mutation) => {\r\n const { attributeName, target: mutationTarget, type, oldValue, addedNodes } = mutation;\r\n const isAttributesType = type === 'attributes';\r\n const isChildListType = type === 'childList';\r\n const targetIsMutationTarget = target === mutationTarget;\r\n const attributeValue = isAttributesType && isString(attributeName) ? attr(mutationTarget as HTMLElement, attributeName!) : 0;\r\n const attributeChanged = attributeValue !== 0 && oldValue !== attributeValue;\r\n const styleChangingAttrChanged = 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 = contentAttrChanged && _nestedTargetSelector && is(mutationTarget, _nestedTargetSelector);\r\n const baseAssertion = isNestedTarget\r\n ? !ignoreTargetChange(mutationTarget, attributeName!, oldValue, attributeValue as string | null)\r\n : notOnlyAttrChanged || contentAttrChanged;\r\n const contentFinalChanged = 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 as string | null)\r\n ) {\r\n push(targetChangedAttrs, attributeName!);\r\n targetStyleChanged = targetStyleChanged || styleChangingAttrChanged;\r\n }\r\n });\r\n\r\n if (childListChanged && !isEmptyArray(totalAddedNodes)) {\r\n // adds / removes the new elements from the event content change\r\n updateEventContentChangeElements((selector) =>\r\n totalAddedNodes.reduce((arr, node) => {\r\n push(arr, find(selector, node));\r\n return is(node, selector) ? push(arr, node) : arr;\r\n }, [])\r\n );\r\n }\r\n\r\n if (isContentObserver) {\r\n contentChanged && (callback as DOMContentObserverCallback)(false);\r\n } else if (!isEmptyArray(targetChangedAttrs) || targetStyleChanged) {\r\n (callback as DOMTargetObserverCallback)(targetChangedAttrs, targetStyleChanged);\r\n }\r\n };\r\n const mutationObserver: MutationObserver = new MutationObserverConstructor!(observerCallback);\r\n\r\n // Connect\r\n mutationObserver.observe(target, {\r\n attributes: true,\r\n attributeOldValue: true,\r\n attributeFilter: observedAttributes,\r\n subtree: isContentObserver,\r\n childList: isContentObserver,\r\n characterData: isContentObserver,\r\n });\r\n isConnected = true;\r\n\r\n return {\r\n _destroy: () => {\r\n if (isConnected) {\r\n destroyEventContentChange();\r\n mutationObserver.disconnect();\r\n isConnected = false;\r\n }\r\n },\r\n _update: () => {\r\n if (isConnected) {\r\n observerCallback(mutationObserver.takeRecords());\r\n }\r\n },\r\n };\r\n};\r\n","import { CacheValues, diffClass, debounce, isArray, isNumber, each, indexOf, isString, attr, removeAttr } from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport { createSizeObserver, SizeObserverCallbackParams } from 'observers/sizeObserver';\r\nimport { createTrinsicObserver } from 'observers/trinsicObserver';\r\nimport { createDOMObserver, DOMObserver } from 'observers/domObserver';\r\nimport { LifecycleHub, LifecycleCheckOption, LifecycleUpdateHints } from 'lifecycles/lifecycleHub';\r\n\r\n//const hostSelector = `.${classNameHost}`;\r\n\r\n// TODO: observer textarea attrs if textarea\r\n// TODO: test _ignoreContentChange & _ignoreNestedTargetChange for content dom observer\r\n// TODO: test _ignoreTargetChange for target dom observer\r\n\r\n//const viewportSelector = `.${classNameViewport}`;\r\n//const contentSelector = `.${classNameContent}`;\r\nconst ignorePrefix = 'os-';\r\nconst viewportAttrsFromTarget = ['tabindex'];\r\nconst baseStyleChangingAttrsTextarea = ['wrap', 'cols', 'rows'];\r\nconst baseStyleChangingAttrs = ['id', 'class', 'style', 'open'];\r\n\r\nconst ignoreTargetChange = (target: Node, attrName: string, oldValue: string | null, newValue: string | null) => {\r\n if (attrName === 'class' && oldValue && newValue) {\r\n const diff = diffClass(oldValue, newValue);\r\n return !!diff.find((addedOrRemovedClass) => addedOrRemovedClass.indexOf(ignorePrefix) !== 0);\r\n }\r\n return false;\r\n};\r\n\r\nexport const lifecycleHubOservers = (instance: LifecycleHub, updateLifecycles: (updateHints?: Partial | null) => unknown) => {\r\n let debounceTimeout: number | false | undefined;\r\n let debounceMaxDelay: number | false | undefined;\r\n let contentMutationObserver: DOMObserver | undefined;\r\n const { _structureSetup } = instance;\r\n const { _targetObj, _targetCtx } = _structureSetup;\r\n const { _host, _viewport, _content } = _targetObj;\r\n const { _isTextarea } = _targetCtx;\r\n const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment();\r\n const contentMutationObserverAttr = _isTextarea ? baseStyleChangingAttrsTextarea : baseStyleChangingAttrs.concat(baseStyleChangingAttrsTextarea);\r\n const updateLifecyclesWithDebouncedAdaptiveUpdateHints = debounce(updateLifecycles as (updateHints: Partial) => any, {\r\n _timeout: () => debounceTimeout,\r\n _maxDelay: () => debounceMaxDelay,\r\n _mergeParams(prev, curr) {\r\n const { _sizeChanged: prevSizeChanged, _hostMutation: prevHostMutation, _contentMutation: prevContentMutation } = prev[0];\r\n const { _sizeChanged: currSizeChanged, _hostMutation: currvHostMutation, _contentMutation: currContentMutation } = curr[0];\r\n const merged: [Partial] = [\r\n {\r\n _sizeChanged: prevSizeChanged || currSizeChanged,\r\n _hostMutation: prevHostMutation || currvHostMutation,\r\n _contentMutation: prevContentMutation || currContentMutation,\r\n },\r\n ];\r\n\r\n return merged;\r\n },\r\n });\r\n\r\n const updateViewportAttrsFromHost = (attributes?: string[]) => {\r\n each(attributes || viewportAttrsFromTarget, (attribute) => {\r\n if (indexOf(viewportAttrsFromTarget, attribute) > -1) {\r\n const hostAttr = attr(_host, attribute);\r\n if (isString(hostAttr)) {\r\n attr(_viewport, attribute, hostAttr);\r\n } else {\r\n removeAttr(_viewport, attribute);\r\n }\r\n }\r\n });\r\n };\r\n const onTrinsicChanged = (heightIntrinsic: CacheValues) => {\r\n updateLifecycles({\r\n _heightIntrinsic: heightIntrinsic,\r\n });\r\n };\r\n const onSizeChanged = ({ _sizeChanged, _directionIsRTLCache, _appear }: SizeObserverCallbackParams) => {\r\n const updateFn = !_sizeChanged || _appear ? updateLifecycles : updateLifecyclesWithDebouncedAdaptiveUpdateHints;\r\n updateFn({\r\n _sizeChanged,\r\n _directionIsRTL: _directionIsRTLCache,\r\n });\r\n };\r\n const onContentMutation = (contentChangedTroughEvent: boolean) => {\r\n // if contentChangedTroughEvent is true its already debounced\r\n const updateFn = contentChangedTroughEvent ? updateLifecycles : updateLifecyclesWithDebouncedAdaptiveUpdateHints;\r\n updateFn({\r\n _contentMutation: true,\r\n });\r\n };\r\n const onHostMutation = (targetChangedAttrs: string[], targetStyleChanged: boolean) => {\r\n if (targetStyleChanged) {\r\n updateLifecyclesWithDebouncedAdaptiveUpdateHints({\r\n _hostMutation: true,\r\n });\r\n } else {\r\n updateViewportAttrsFromHost(targetChangedAttrs);\r\n }\r\n };\r\n\r\n const trinsicObserver = (_content || !_flexboxGlue) && createTrinsicObserver(_host, onTrinsicChanged);\r\n const sizeObserver = createSizeObserver(_host, onSizeChanged, { _appear: true, _direction: !_nativeScrollbarStyling });\r\n const hostMutationObserver = createDOMObserver(_host, false, onHostMutation, {\r\n _styleChangingAttributes: baseStyleChangingAttrs,\r\n _attributes: baseStyleChangingAttrs.concat(viewportAttrsFromTarget),\r\n _ignoreTargetChange: ignoreTargetChange,\r\n });\r\n\r\n const updateOptions = (checkOption: LifecycleCheckOption) => {\r\n const { _value: elementEvents, _changed: elementEventsChanged } = checkOption | null>('updating.elementEvents');\r\n const { _value: attributes, _changed: attributesChanged } = checkOption('updating.attributes');\r\n const { _value: debounce, _changed: debounceChanged } = checkOption | number | null>('updating.debounce');\r\n const updateContentMutationObserver = elementEventsChanged || attributesChanged;\r\n\r\n if (updateContentMutationObserver) {\r\n if (contentMutationObserver) {\r\n contentMutationObserver._update();\r\n contentMutationObserver._destroy();\r\n }\r\n contentMutationObserver = createDOMObserver(_content || _viewport, true, onContentMutation, {\r\n _styleChangingAttributes: contentMutationObserverAttr.concat(attributes || []),\r\n _attributes: contentMutationObserverAttr.concat(attributes || []),\r\n _eventContentChange: elementEvents,\r\n _ignoreNestedTargetChange: ignoreTargetChange,\r\n //_nestedTargetSelector: hostSelector,\r\n /*\r\n _ignoreContentChange: (mutation, isNestedTarget) => {\r\n const { target, attributeName } = mutation;\r\n return isNestedTarget\r\n ? false\r\n : attributeName\r\n ? liesBetween(target as Element, hostSelector, viewportSelector) || liesBetween(target as Element, hostSelector, contentSelector)\r\n : false;\r\n },\r\n */\r\n });\r\n }\r\n\r\n if (debounceChanged) {\r\n updateLifecyclesWithDebouncedAdaptiveUpdateHints._flush();\r\n if (isArray(debounce)) {\r\n const timeout = debounce[0];\r\n const maxWait = debounce[1];\r\n debounceTimeout = isNumber(timeout) ? timeout : false;\r\n debounceMaxDelay = isNumber(maxWait) ? maxWait : false;\r\n } else if (isNumber(debounce)) {\r\n debounceTimeout = debounce;\r\n debounceMaxDelay = false;\r\n } else {\r\n debounceTimeout = false;\r\n debounceMaxDelay = false;\r\n }\r\n }\r\n };\r\n\r\n updateViewportAttrsFromHost();\r\n\r\n return {\r\n _trinsicObserver: trinsicObserver,\r\n _sizeObserver: sizeObserver,\r\n _updateObserverOptions: updateOptions,\r\n _destroy() {\r\n contentMutationObserver && contentMutationObserver._destroy();\r\n trinsicObserver && trinsicObserver._destroy();\r\n sizeObserver._destroy();\r\n hostMutationObserver._destroy();\r\n },\r\n };\r\n};\r\n","import { style } from 'support';\r\nimport { LifecycleHub, Lifecycle } from 'lifecycles/lifecycleHub';\r\n\r\n/**\r\n * Lifecycle with the responsibility to adjust the trinsic behavior of the content element.\r\n * @param lifecycleHub\r\n * @returns\r\n */\r\nexport const createTrinsicLifecycle = (lifecycleHub: LifecycleHub): Lifecycle => {\r\n const { _structureSetup } = lifecycleHub;\r\n const { _content } = _structureSetup._targetObj;\r\n\r\n return (updateHints) => {\r\n const { _heightIntrinsic } = updateHints;\r\n const { _value: heightIntrinsic, _changed: heightIntrinsicChanged } = _heightIntrinsic;\r\n\r\n if (heightIntrinsicChanged) {\r\n style(_content, {\r\n height: heightIntrinsic ? '' : '100%',\r\n display: heightIntrinsic ? '' : 'inline',\r\n });\r\n }\r\n\r\n return {\r\n _sizeChanged: heightIntrinsicChanged,\r\n _contentMutation: heightIntrinsicChanged,\r\n };\r\n };\r\n};\r\n","import { createCache, topRightBottomLeft, equalTRBL, style, TRBL } from 'support';\r\nimport { LifecycleHub, Lifecycle } from 'lifecycles/lifecycleHub';\r\nimport { StyleObject } from 'typings';\r\nimport { getEnvironment } from 'environment';\r\n\r\n/**\r\n * Lifecycle with the responsibility to adjust the padding styling of the padding and viewport element.\r\n * @param lifecycleHub\r\n * @returns\r\n */\r\nexport const createPaddingLifecycle = (lifecycleHub: LifecycleHub): Lifecycle => {\r\n const { _structureSetup, _setLifecycleCommunication } = lifecycleHub;\r\n const { _host, _padding, _viewport } = _structureSetup._targetObj;\r\n const { _update: updatePaddingCache, _current: currentPaddingCache } = createCache(topRightBottomLeft.bind(0, _host, 'padding'), {\r\n _equal: equalTRBL,\r\n _initialValue: topRightBottomLeft(),\r\n });\r\n\r\n return (updateHints, checkOption, force) => {\r\n let { _value: padding, _changed: paddingChanged } = currentPaddingCache(force);\r\n const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment();\r\n const { _sizeChanged, _directionIsRTL, _contentMutation } = updateHints;\r\n const { _value: directionIsRTL, _changed: directionChanged } = _directionIsRTL;\r\n const { _value: paddingAbsolute, _changed: paddingAbsoluteChanged } = checkOption('paddingAbsolute');\r\n const contentMutation = !_flexboxGlue && _contentMutation;\r\n\r\n if (_sizeChanged || paddingChanged || contentMutation) {\r\n ({ _value: padding, _changed: paddingChanged } = updatePaddingCache(force));\r\n }\r\n\r\n const paddingStyleChanged = paddingAbsoluteChanged || directionChanged || paddingChanged;\r\n\r\n if (paddingStyleChanged) {\r\n // if there is no padding element and no scrollbar styling, paddingAbsolute isn't supported\r\n const paddingRelative = !paddingAbsolute || (!_padding && !_nativeScrollbarStyling);\r\n const paddingHorizontal = padding!.r + padding!.l;\r\n const paddingVertical = padding!.t + padding!.b;\r\n\r\n const paddingStyle: StyleObject = {\r\n marginRight: paddingRelative && !directionIsRTL ? -paddingHorizontal : 0,\r\n marginBottom: paddingRelative ? -paddingVertical : 0,\r\n marginLeft: paddingRelative && directionIsRTL ? -paddingHorizontal : 0,\r\n top: paddingRelative ? -padding!.t : 0,\r\n right: paddingRelative ? (directionIsRTL ? -padding!.r : 'auto') : 0,\r\n left: paddingRelative ? (directionIsRTL ? 'auto' : -padding!.l) : 0,\r\n width: paddingRelative ? `calc(100% + ${paddingHorizontal}px)` : '',\r\n };\r\n const viewportStyle: StyleObject = {\r\n paddingTop: paddingRelative ? padding!.t : 0,\r\n paddingRight: paddingRelative ? padding!.r : 0,\r\n paddingBottom: paddingRelative ? padding!.b : 0,\r\n paddingLeft: paddingRelative ? padding!.l : 0,\r\n };\r\n\r\n // if there is no padding element apply the style to the viewport element instead\r\n style(_padding || _viewport, paddingStyle);\r\n style(_viewport, viewportStyle);\r\n\r\n _setLifecycleCommunication({\r\n _paddingInfo: {\r\n _absolute: !paddingRelative,\r\n _padding: padding!,\r\n },\r\n _viewportPaddingStyle: _padding\r\n ? viewportStyle\r\n : {\r\n ...paddingStyle,\r\n ...viewportStyle,\r\n },\r\n });\r\n }\r\n\r\n return {\r\n _paddingStyleChanged: paddingStyleChanged,\r\n };\r\n };\r\n};\r\n","import {\r\n createCache,\r\n keys,\r\n attr,\r\n WH,\r\n XY,\r\n style,\r\n scrollSize,\r\n CacheValues,\r\n equalWH,\r\n addClass,\r\n removeClass,\r\n clientSize,\r\n offsetSize,\r\n getBoundingClientRect,\r\n noop,\r\n each,\r\n} from 'support';\r\nimport { LifecycleHub, Lifecycle } from 'lifecycles/lifecycleHub';\r\nimport { getEnvironment } from 'environment';\r\nimport { OverflowBehavior } from 'options';\r\nimport { StyleObject } from 'typings';\r\nimport { classNameViewportArrange, classNameViewportScrollbarStyling } from 'classnames';\r\n\r\ninterface OverflowAmountCacheContext {\r\n _viewportScrollSize: WH;\r\n _viewportClientSize: WH;\r\n _viewportSizeFraction: WH;\r\n}\r\n\r\ninterface ViewportOverflowState {\r\n _scrollbarsHideOffset: XY;\r\n _scrollbarsHideOffsetArrange: XY;\r\n _overflowScroll: XY;\r\n}\r\n\r\ninterface UndoViewportArrangeResult {\r\n _redoViewportArrange: () => void;\r\n _viewportOverflowState?: ViewportOverflowState;\r\n}\r\n\r\ninterface OverflowOption {\r\n x: OverflowBehavior;\r\n y: OverflowBehavior;\r\n}\r\n\r\nconst { max, abs, round } = Math;\r\nconst overlaidScrollbarsHideOffset = 42;\r\nconst whCacheOptions = {\r\n _equal: equalWH,\r\n _initialValue: { w: 0, h: 0 },\r\n};\r\nconst sizeFraction = (elm: HTMLElement): WH => {\r\n const viewportOffsetSize = offsetSize(elm);\r\n const viewportRect = getBoundingClientRect(elm);\r\n return {\r\n w: viewportRect.width - viewportOffsetSize.w,\r\n h: viewportRect.height - viewportOffsetSize.h,\r\n };\r\n};\r\nconst fractionalPixelRatioTollerance = () => (window.devicePixelRatio % 1 === 0 ? 0 : 1);\r\nconst setAxisOverflowStyle = (horizontal: boolean, overflowAmount: number, behavior: OverflowBehavior, styleObj: StyleObject) => {\r\n const overflowKey: keyof StyleObject = horizontal ? 'overflowX' : 'overflowY';\r\n const behaviorIsVisible = behavior.indexOf('visible') === 0;\r\n const behaviorIsVisibleHidden = behavior === 'visible-hidden';\r\n const behaviorIsScroll = behavior === 'scroll';\r\n const hasOverflow = overflowAmount > 0;\r\n\r\n if (behaviorIsVisible) {\r\n styleObj[overflowKey] = 'visible';\r\n }\r\n if (behaviorIsScroll && hasOverflow) {\r\n styleObj[overflowKey] = behavior;\r\n }\r\n\r\n return {\r\n _visible: behaviorIsVisible,\r\n _behavior: behaviorIsVisibleHidden ? 'hidden' : 'scroll',\r\n };\r\n};\r\n\r\n/**\r\n * Lifecycle with the responsibility to set the correct overflow and scrollbar hiding styles of the viewport element.\r\n * @param lifecycleHub\r\n * @returns\r\n */\r\nexport const createOverflowLifecycle = (lifecycleHub: LifecycleHub): Lifecycle => {\r\n const { _structureSetup, _doViewportArrange, _getLifecycleCommunication, _setLifecycleCommunication } = lifecycleHub;\r\n const { _host, _viewport, _viewportArrange } = _structureSetup._targetObj;\r\n const { _update: updateViewportSizeFraction, _current: getCurrentViewportSizeFraction } = createCache>(\r\n sizeFraction.bind(0, _viewport),\r\n whCacheOptions\r\n );\r\n const { _update: updateViewportScrollSizeCache, _current: getCurrentViewportScrollSizeCache } = createCache>(\r\n scrollSize.bind(0, _viewport),\r\n whCacheOptions\r\n );\r\n const { _update: updateOverflowAmountCache, _current: getCurrentOverflowAmountCache } = createCache, OverflowAmountCacheContext>(\r\n ({ _viewportScrollSize, _viewportClientSize, _viewportSizeFraction }) => ({\r\n w: max(0, round(max(0, _viewportScrollSize.w - _viewportClientSize.w) - (fractionalPixelRatioTollerance() || max(0, _viewportSizeFraction.w)))),\r\n h: max(0, round(max(0, _viewportScrollSize.h - _viewportClientSize.h) - (fractionalPixelRatioTollerance() || max(0, _viewportSizeFraction.h)))),\r\n }),\r\n whCacheOptions\r\n );\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 = (viewportOverflowState: ViewportOverflowState, heightIntrinsic: boolean) => {\r\n style(_viewport, {\r\n height: '',\r\n });\r\n\r\n if (heightIntrinsic) {\r\n const { _absolute: paddingAbsolute, _padding: padding } = _getLifecycleCommunication()._paddingInfo;\r\n const { _overflowScroll, _scrollbarsHideOffset } = viewportOverflowState;\r\n const hostSizeFraction = sizeFraction(_host);\r\n const hostClientSize = clientSize(_host);\r\n // padding subtraction is only needed if padding is absolute or if viewport is content-box\r\n const paddingVertical = paddingAbsolute || style(_viewport, 'boxSizing') === 'content-box' ? padding.b + padding.t : 0;\r\n const fractionalClientHeight = hostClientSize.h + (abs(hostSizeFraction.h) < 1 ? hostSizeFraction.h : 0);\r\n\r\n style(_viewport, {\r\n height: fractionalClientHeight + (_overflowScroll.x ? _scrollbarsHideOffset.x : 0) - 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 = (showNativeOverlaidScrollbars: boolean, viewportStyleObj?: StyleObject): ViewportOverflowState => {\r\n const { _nativeScrollbarSize, _nativeScrollbarIsOverlaid, _nativeScrollbarStyling } = getEnvironment();\r\n const { x: overlaidX, y: overlaidY } = _nativeScrollbarIsOverlaid;\r\n const determineOverflow = !viewportStyleObj;\r\n const arrangeHideOffset = !_nativeScrollbarStyling && !showNativeOverlaidScrollbars ? overlaidScrollbarsHideOffset : 0;\r\n const styleObj = determineOverflow ? style(_viewport, ['overflowX', 'overflowY']) : viewportStyleObj;\r\n const scroll = {\r\n x: styleObj!.overflowX === 'scroll',\r\n y: styleObj!.overflowY === 'scroll',\r\n };\r\n const scrollbarsHideOffset = {\r\n x: scroll.x && !_nativeScrollbarStyling ? (overlaidX ? arrangeHideOffset : _nativeScrollbarSize.x) : 0,\r\n y: scroll.y && !_nativeScrollbarStyling ? (overlaidY ? arrangeHideOffset : _nativeScrollbarSize.y) : 0,\r\n };\r\n\r\n return {\r\n _overflowScroll: scroll,\r\n _scrollbarsHideOffsetArrange: {\r\n x: overlaidX && !!arrangeHideOffset,\r\n y: overlaidY && !!arrangeHideOffset,\r\n },\r\n _scrollbarsHideOffset: scrollbarsHideOffset,\r\n };\r\n };\r\n\r\n /**\r\n * Sets the overflow property of the viewport and calculates the a overflow state according to the new parameters.\r\n * @param showNativeOverlaidScrollbars Whether to show natively overlaid scrollbars.\r\n * @param overflowAmount The overflow amount.\r\n * @param overflow The overflow behavior according to the options.\r\n * @param viewportStyleObj The viewport style object to which the overflow style shall be applied.\r\n * @returns A object which represents the newly set overflow state.\r\n */\r\n const setViewportOverflowState = (\r\n showNativeOverlaidScrollbars: boolean,\r\n overflowAmount: WH,\r\n overflow: OverflowOption,\r\n viewportStyleObj: StyleObject\r\n ): ViewportOverflowState => {\r\n const { _visible: xVisible, _behavior: xVisibleBehavior } = setAxisOverflowStyle(true, overflowAmount!.w, overflow.x, viewportStyleObj);\r\n const { _visible: yVisible, _behavior: yVisibleBehavior } = setAxisOverflowStyle(false, overflowAmount!.h, overflow.y, viewportStyleObj);\r\n\r\n if (xVisible && !yVisible) {\r\n viewportStyleObj.overflowX = xVisibleBehavior;\r\n }\r\n if (yVisible && !xVisible) {\r\n viewportStyleObj.overflowY = yVisibleBehavior;\r\n }\r\n\r\n return getViewportOverflowState(showNativeOverlaidScrollbars, viewportStyleObj);\r\n };\r\n\r\n /**\r\n * Sets the styles of the viewport arrange element.\r\n * @param viewportOverflowState The viewport overflow state according to which the scrollbars shall be hidden.\r\n * @param viewportScrollSize The content scroll size.\r\n * @param directionIsRTL Whether the direction is RTL or not.\r\n * @returns A boolean which indicates whether the viewport arrange element was adjusted.\r\n */\r\n const arrangeViewport = (\r\n viewportOverflowState: ViewportOverflowState,\r\n viewportScrollSize: WH,\r\n viewportSizeFraction: WH,\r\n directionIsRTL: boolean\r\n ) => {\r\n if (_doViewportArrange) {\r\n const { _scrollbarsHideOffset, _scrollbarsHideOffsetArrange } = viewportOverflowState;\r\n const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange;\r\n const { x: hideOffsetX, y: hideOffsetY } = _scrollbarsHideOffset;\r\n const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication();\r\n const viewportArrangeHorizontalPaddingKey: keyof StyleObject = directionIsRTL ? 'paddingRight' : 'paddingLeft';\r\n const viewportArrangeHorizontalPaddingValue = viewportPaddingStyle[viewportArrangeHorizontalPaddingKey] as number;\r\n const viewportArrangeVerticalPaddingValue = viewportPaddingStyle.paddingTop as number;\r\n const fractionalContentWidth = viewportScrollSize.w + (abs(viewportSizeFraction.w) < 1 ? viewportSizeFraction.w : 0);\r\n const fractionalContenHeight = viewportScrollSize.h + (abs(viewportSizeFraction.h) < 1 ? viewportSizeFraction.h : 0);\r\n const arrangeSize = {\r\n w: hideOffsetY && arrangeY ? `${hideOffsetY + fractionalContentWidth - viewportArrangeHorizontalPaddingValue}px` : '',\r\n h: hideOffsetX && arrangeX ? `${hideOffsetX + fractionalContenHeight - viewportArrangeVerticalPaddingValue}px` : '',\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(`#${attr(_viewportArrange, 'id')} + .${classNameViewportArrange}::before {}`, 0);\r\n }\r\n\r\n // @ts-ignore\r\n const ruleStyle = cssRules[0].style;\r\n\r\n ruleStyle.width = arrangeSize.w;\r\n ruleStyle.height = arrangeSize.h;\r\n }\r\n }\r\n } else {\r\n style<'--os-vaw' | '--os-vah'>(_viewport, {\r\n '--os-vaw': arrangeSize.w,\r\n '--os-vah': arrangeSize.h,\r\n });\r\n }\r\n }\r\n\r\n return _doViewportArrange;\r\n };\r\n\r\n /**\r\n * Hides the native scrollbars according to the passed parameters.\r\n * @param viewportOverflowState The viewport overflow state.\r\n * @param directionIsRTL Whether the direction is RTL or not.\r\n * @param viewportArrange Whether special styles related to the viewport arrange strategy shall be applied.\r\n * @param viewportStyleObj The viewport style object to which the needed styles shall be applied.\r\n */\r\n const hideNativeScrollbars = (\r\n viewportOverflowState: ViewportOverflowState,\r\n directionIsRTL: boolean,\r\n viewportArrange: boolean,\r\n viewportStyleObj: StyleObject\r\n ) => {\r\n const { _scrollbarsHideOffset, _scrollbarsHideOffsetArrange } = viewportOverflowState;\r\n const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange;\r\n const { x: hideOffsetX, y: hideOffsetY } = _scrollbarsHideOffset;\r\n const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication();\r\n const horizontalMarginKey: keyof StyleObject = directionIsRTL ? 'marginLeft' : 'marginRight';\r\n const viewportHorizontalPaddingKey: keyof StyleObject = directionIsRTL ? 'paddingLeft' : '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] = 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 = viewportOverflowState || getViewportOverflowState(showNativeOverlaidScrollbars);\r\n const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication();\r\n const { _flexboxGlue } = getEnvironment();\r\n const { _scrollbarsHideOffsetArrange } = finalViewportOverflowState;\r\n const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange;\r\n const finalPaddingStyle: StyleObject = {};\r\n const assignProps = (props: string) =>\r\n each(props.split(' '), (prop) => {\r\n finalPaddingStyle[prop] = viewportPaddingStyle[prop];\r\n });\r\n\r\n if (!_flexboxGlue) {\r\n finalPaddingStyle.height = '';\r\n }\r\n\r\n if (arrangeX) {\r\n assignProps('marginBottom paddingTop paddingBottom');\r\n }\r\n\r\n if (arrangeY) {\r\n assignProps('marginLeft marginRight paddingLeft paddingRight');\r\n }\r\n\r\n const prevStyle = style(_viewport, keys(finalPaddingStyle));\r\n removeClass(_viewport, classNameViewportArrange);\r\n style(_viewport, finalPaddingStyle);\r\n\r\n return {\r\n _redoViewportArrange: () => {\r\n hideNativeScrollbars(finalViewportOverflowState, directionIsRTL, _doViewportArrange, prevStyle);\r\n style(_viewport, prevStyle);\r\n addClass(_viewport, classNameViewportArrange);\r\n },\r\n _viewportOverflowState: finalViewportOverflowState,\r\n };\r\n }\r\n return {\r\n _redoViewportArrange: noop,\r\n };\r\n };\r\n\r\n return (updateHints, checkOption, force) => {\r\n const { _directionIsRTL, _heightIntrinsic, _sizeChanged, _hostMutation, _contentMutation, _paddingStyleChanged } = updateHints;\r\n const { _flexboxGlue, _nativeScrollbarStyling, _nativeScrollbarIsOverlaid } = getEnvironment();\r\n const { _value: heightIntrinsic, _changed: heightIntrinsicChanged } = _heightIntrinsic;\r\n const { _value: directionIsRTL, _changed: directionChanged } = _directionIsRTL;\r\n const { _value: showNativeOverlaidScrollbarsOption, _changed: showNativeOverlaidScrollbarsChanged } = checkOption(\r\n 'nativeScrollbarsOverlaid.show'\r\n );\r\n const showNativeOverlaidScrollbars = showNativeOverlaidScrollbarsOption && _nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.y;\r\n const adjustFlexboxGlue =\r\n !_flexboxGlue && (_sizeChanged || _contentMutation || _hostMutation || showNativeOverlaidScrollbarsChanged || heightIntrinsicChanged);\r\n let viewportSizeFractionCache: CacheValues> = getCurrentViewportSizeFraction(force);\r\n let viewportScrollSizeCache: CacheValues> = getCurrentViewportScrollSizeCache(force);\r\n let overflowAmuntCache: CacheValues> = getCurrentOverflowAmountCache(force);\r\n let preMeasureViewportOverflowState: ViewportOverflowState | undefined;\r\n\r\n if (showNativeOverlaidScrollbarsChanged && _nativeScrollbarStyling) {\r\n if (showNativeOverlaidScrollbars) {\r\n removeClass(_viewport, classNameViewportScrollbarStyling);\r\n } else {\r\n addClass(_viewport, classNameViewportScrollbarStyling);\r\n }\r\n }\r\n\r\n if (adjustFlexboxGlue) {\r\n preMeasureViewportOverflowState = getViewportOverflowState(showNativeOverlaidScrollbars);\r\n fixFlexboxGlue(preMeasureViewportOverflowState, !!heightIntrinsic);\r\n }\r\n\r\n if (_sizeChanged || _paddingStyleChanged || _contentMutation || showNativeOverlaidScrollbarsChanged || directionChanged) {\r\n const { _redoViewportArrange, _viewportOverflowState: undoViewportArrangeOverflowState } = undoViewportArrange(\r\n showNativeOverlaidScrollbars,\r\n directionIsRTL!,\r\n preMeasureViewportOverflowState\r\n );\r\n const { _value: viewportSizeFraction, _changed: viewportSizeFractionCahnged } = (viewportSizeFractionCache = updateViewportSizeFraction(force));\r\n const { _value: viewportScrollSize, _changed: viewportScrollSizeChanged } = (viewportScrollSizeCache = updateViewportScrollSizeCache(force));\r\n const viewportContentSize = clientSize(_viewport);\r\n let arrangedViewportScrollSize = viewportScrollSize!;\r\n let arrangedViewportClientSize = viewportContentSize;\r\n\r\n _redoViewportArrange();\r\n\r\n // if re measure is required (only required if content arrange strategy is used)\r\n if (\r\n (viewportScrollSizeChanged || viewportSizeFractionCahnged || showNativeOverlaidScrollbarsChanged) &&\r\n undoViewportArrangeOverflowState &&\r\n !showNativeOverlaidScrollbars &&\r\n arrangeViewport(undoViewportArrangeOverflowState, viewportScrollSize!, viewportSizeFraction!, directionIsRTL!)\r\n ) {\r\n arrangedViewportClientSize = clientSize(_viewport);\r\n arrangedViewportScrollSize = scrollSize(_viewport);\r\n }\r\n\r\n overflowAmuntCache = updateOverflowAmountCache(force, {\r\n _viewportSizeFraction: viewportSizeFraction!,\r\n _viewportScrollSize: {\r\n w: max(viewportScrollSize!.w, arrangedViewportScrollSize.w),\r\n h: max(viewportScrollSize!.h, arrangedViewportScrollSize.h),\r\n },\r\n _viewportClientSize: {\r\n w: arrangedViewportClientSize.w + max(0, viewportContentSize.w - viewportScrollSize!.w),\r\n h: arrangedViewportClientSize.h + max(0, viewportContentSize.h - viewportScrollSize!.h),\r\n },\r\n });\r\n }\r\n\r\n const { _value: viewportSizeFraction, _changed: viewportSizeFractionChanged } = viewportSizeFractionCache;\r\n const { _value: viewportScrollSize, _changed: viewportScrollSizeChanged } = viewportScrollSizeCache;\r\n const { _value: overflowAmount, _changed: overflowAmountChanged } = overflowAmuntCache;\r\n const { _value: overflow, _changed: overflowChanged } = checkOption('overflow');\r\n\r\n if (\r\n _paddingStyleChanged ||\r\n viewportSizeFractionChanged ||\r\n viewportScrollSizeChanged ||\r\n overflowAmountChanged ||\r\n overflowChanged ||\r\n showNativeOverlaidScrollbarsChanged ||\r\n directionChanged ||\r\n adjustFlexboxGlue\r\n ) {\r\n const viewportStyle: StyleObject = {\r\n marginRight: 0,\r\n marginBottom: 0,\r\n marginLeft: 0,\r\n width: '',\r\n overflowY: '',\r\n overflowX: '',\r\n };\r\n\r\n const viewportOverflowState = setViewportOverflowState(showNativeOverlaidScrollbars, overflowAmount!, overflow, viewportStyle);\r\n const viewportArranged = arrangeViewport(viewportOverflowState, viewportScrollSize!, viewportSizeFraction!, directionIsRTL!);\r\n hideNativeScrollbars(viewportOverflowState, directionIsRTL!, viewportArranged, viewportStyle);\r\n\r\n if (adjustFlexboxGlue) {\r\n fixFlexboxGlue(viewportOverflowState, !!heightIntrinsic);\r\n }\r\n\r\n // TODO: hide host overflow if scroll x or y and no padding element there\r\n // TODO: Test without content\r\n // TODO: Test without padding\r\n // TODO: overflow: visible on padding / host if overflow visible on both axis\r\n\r\n style(_viewport, viewportStyle);\r\n\r\n _setLifecycleCommunication({\r\n _viewportOverflowScroll: viewportOverflowState._overflowScroll,\r\n _viewportOverflowAmount: overflowAmount,\r\n });\r\n }\r\n };\r\n};\r\n","import { XY, WH, TRBL, CacheValues, PartialOptions, each, hasOwnProperty, isNumber, scrollLeft, scrollTop, assignDeep } from 'support';\r\nimport { OSOptions } from 'options';\r\nimport { getEnvironment } from 'environment';\r\nimport { StructureSetup } from 'setups/structureSetup';\r\nimport { lifecycleHubOservers } from 'lifecycles/lifecycleHubObservers';\r\nimport { createTrinsicLifecycle } from 'lifecycles/trinsicLifecycle';\r\nimport { createPaddingLifecycle } from 'lifecycles/paddingLifecycle';\r\nimport { createOverflowLifecycle } from 'lifecycles/overflowLifecycle';\r\nimport { StyleObject } from 'typings';\r\n\r\nexport type LifecycleCheckOption = (path: string) => LifecycleOptionInfo;\r\n\r\nexport type Lifecycle = (\r\n updateHints: LifecycleUpdateHints,\r\n checkOption: LifecycleCheckOption,\r\n force: boolean\r\n) => Partial | void;\r\n\r\nexport interface LifecycleOptionInfo {\r\n readonly _value: T;\r\n _changed: boolean;\r\n}\r\n\r\nexport interface LifecycleCommunication {\r\n _paddingInfo: {\r\n _absolute: boolean;\r\n _padding: TRBL;\r\n };\r\n _viewportPaddingStyle: StyleObject;\r\n _viewportOverflowScroll: XY;\r\n _viewportOverflowAmount: WH;\r\n}\r\n\r\nexport interface LifecycleAdaptiveUpdateHints {\r\n _sizeChanged: boolean;\r\n _hostMutation: boolean;\r\n _contentMutation: boolean;\r\n _paddingStyleChanged: boolean;\r\n}\r\n\r\nexport interface LifecycleUpdateHints extends LifecycleAdaptiveUpdateHints {\r\n _directionIsRTL: CacheValues;\r\n _heightIntrinsic: CacheValues;\r\n}\r\n\r\nexport interface LifecycleHubState {\r\n _overflowAmount: WH;\r\n}\r\n\r\nexport interface LifecycleHubInstance {\r\n _update(changedOptions?: PartialOptions | null, force?: boolean): void;\r\n _state(): LifecycleHubState;\r\n _destroy(): void;\r\n}\r\n\r\nexport interface LifecycleHub {\r\n _options: OSOptions;\r\n _structureSetup: StructureSetup;\r\n // whether the \"viewport arrange\" strategy must be used (true if no native scrollbar hiding and scrollbars are overlaid)\r\n _doViewportArrange: boolean;\r\n _getLifecycleCommunication(): LifecycleCommunication;\r\n _setLifecycleCommunication(newLifecycleCommunication?: Partial): void;\r\n}\r\n\r\nconst getPropByPath = (obj: any, path: string): T =>\r\n obj ? path.split('.').reduce((o, prop) => (o && hasOwnProperty(o, prop) ? o[prop] : undefined), obj) : undefined;\r\n\r\nconst booleanCacheValuesFallback: CacheValues = {\r\n _value: false,\r\n _previous: false,\r\n _changed: false,\r\n};\r\nconst lifecycleCommunicationFallback: LifecycleCommunication = {\r\n _paddingInfo: {\r\n _absolute: false,\r\n _padding: {\r\n t: 0,\r\n r: 0,\r\n b: 0,\r\n l: 0,\r\n },\r\n },\r\n _viewportOverflowScroll: {\r\n x: false,\r\n y: false,\r\n },\r\n _viewportOverflowAmount: {\r\n w: 0,\r\n h: 0,\r\n },\r\n _viewportPaddingStyle: {\r\n marginRight: 0,\r\n marginBottom: 0,\r\n marginLeft: 0,\r\n paddingTop: 0,\r\n paddingRight: 0,\r\n paddingBottom: 0,\r\n paddingLeft: 0,\r\n },\r\n};\r\n\r\nexport const createLifecycleHub = (options: OSOptions, structureSetup: StructureSetup): LifecycleHubInstance => {\r\n let lifecycleCommunication = lifecycleCommunicationFallback;\r\n const { _viewport } = structureSetup._targetObj;\r\n const {\r\n _nativeScrollbarStyling,\r\n _nativeScrollbarIsOverlaid,\r\n _flexboxGlue,\r\n _addListener: addEnvironmentListener,\r\n _removeListener: removeEnvironmentListener,\r\n } = getEnvironment();\r\n const doViewportArrange = !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);\r\n const instance: LifecycleHub = {\r\n _options: options,\r\n _structureSetup: structureSetup,\r\n _doViewportArrange: doViewportArrange,\r\n _getLifecycleCommunication: () => lifecycleCommunication,\r\n _setLifecycleCommunication(newLifecycleCommunication) {\r\n lifecycleCommunication = assignDeep({}, lifecycleCommunication, newLifecycleCommunication);\r\n },\r\n };\r\n const lifecycles: Lifecycle[] = [createTrinsicLifecycle(instance), createPaddingLifecycle(instance), createOverflowLifecycle(instance)];\r\n\r\n const updateLifecycles = (updateHints?: Partial | null, changedOptions?: Partial | null, force?: boolean) => {\r\n let {\r\n _directionIsRTL,\r\n _heightIntrinsic,\r\n _sizeChanged = force || false,\r\n _hostMutation = force || false,\r\n _contentMutation = force || false,\r\n _paddingStyleChanged = force || false,\r\n } = updateHints || {};\r\n\r\n const finalDirectionIsRTL =\r\n _directionIsRTL || (_sizeObserver ? _sizeObserver._getCurrentCacheValues(force)._directionIsRTL : booleanCacheValuesFallback);\r\n const finalHeightIntrinsic =\r\n _heightIntrinsic || (_trinsicObserver ? _trinsicObserver._getCurrentCacheValues(force)._heightIntrinsic : booleanCacheValuesFallback);\r\n const checkOption: LifecycleCheckOption = (path) => ({\r\n _value: getPropByPath(options, path),\r\n _changed: force || getPropByPath(changedOptions, path) !== undefined,\r\n });\r\n const adjustScrollOffset = doViewportArrange || !_flexboxGlue;\r\n const scrollOffsetX = adjustScrollOffset && scrollLeft(_viewport);\r\n const scrollOffsetY = adjustScrollOffset && scrollTop(_viewport);\r\n\r\n // place before updating lifecycles because of possible flushing of debounce\r\n if (_updateObserverOptions) {\r\n _updateObserverOptions(checkOption);\r\n }\r\n\r\n each(lifecycles, (lifecycle) => {\r\n const {\r\n _sizeChanged: adaptiveSizeChanged,\r\n _hostMutation: adaptiveHostMutation,\r\n _contentMutation: adaptiveContentMutation,\r\n _paddingStyleChanged: adaptivePaddingStyleChanged,\r\n } =\r\n lifecycle(\r\n {\r\n _directionIsRTL: finalDirectionIsRTL,\r\n _heightIntrinsic: finalHeightIntrinsic,\r\n _sizeChanged,\r\n _hostMutation,\r\n _contentMutation,\r\n _paddingStyleChanged,\r\n },\r\n checkOption,\r\n !!force\r\n ) || {};\r\n\r\n _sizeChanged = adaptiveSizeChanged || _sizeChanged;\r\n _hostMutation = adaptiveHostMutation || _hostMutation;\r\n _contentMutation = adaptiveContentMutation || _contentMutation;\r\n _paddingStyleChanged = adaptivePaddingStyleChanged || _paddingStyleChanged;\r\n });\r\n\r\n if (isNumber(scrollOffsetX)) {\r\n scrollLeft(_viewport, scrollOffsetX);\r\n }\r\n if (isNumber(scrollOffsetY)) {\r\n scrollTop(_viewport, scrollOffsetY);\r\n }\r\n\r\n if (options.callbacks.onUpdated) {\r\n options.callbacks.onUpdated();\r\n }\r\n };\r\n const { _sizeObserver, _trinsicObserver, _updateObserverOptions, _destroy: destroyObservers } = lifecycleHubOservers(instance, updateLifecycles);\r\n\r\n const update = (changedOptions?: Partial | null, force?: boolean) => updateLifecycles(null, changedOptions, force);\r\n const envUpdateListener = update.bind(null, null, true);\r\n addEnvironmentListener(envUpdateListener);\r\n\r\n console.log(getEnvironment());\r\n\r\n return {\r\n _update: update,\r\n _state: () => ({\r\n _overflowAmount: lifecycleCommunication._viewportOverflowAmount,\r\n }),\r\n _destroy() {\r\n destroyObservers();\r\n removeEnvironmentListener(envUpdateListener);\r\n },\r\n };\r\n};\r\n","import { OSTarget, OSTargetObject } from 'typings';\r\nimport { PartialOptions, validateOptions, assignDeep, isEmptyObject } from 'support';\r\nimport { createStructureSetup, StructureSetup } from 'setups/structureSetup';\r\nimport { createLifecycleHub } from 'lifecycles/lifecycleHub';\r\nimport { OSOptions, optionsTemplate } from 'options';\r\nimport { getEnvironment } from 'environment';\r\n\r\nexport interface OverlayScrollbarsStatic {\r\n (target: OSTarget | OSTargetObject, options?: PartialOptions, extensions?: any): OverlayScrollbars;\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\r\n state(): any;\r\n}\r\n\r\nexport const OverlayScrollbars: OverlayScrollbarsStatic = (\r\n target: OSTarget | OSTargetObject,\r\n options?: PartialOptions,\r\n extensions?: any\r\n): OverlayScrollbars => {\r\n const { _getDefaultOptions } = getEnvironment();\r\n const currentOptions: OSOptions = assignDeep(\r\n {},\r\n _getDefaultOptions(),\r\n validateOptions(options || ({} as PartialOptions), optionsTemplate, null, true)._validated\r\n );\r\n const structureSetup: StructureSetup = createStructureSetup(target);\r\n const lifecycleHub = createLifecycleHub(currentOptions, structureSetup);\r\n const instance: OverlayScrollbars = {\r\n options(newOptions?: PartialOptions) {\r\n if (newOptions) {\r\n const { _validated: _changedOptions } = validateOptions(newOptions, optionsTemplate, currentOptions, true);\r\n\r\n if (!isEmptyObject(_changedOptions)) {\r\n assignDeep(currentOptions, _changedOptions);\r\n lifecycleHub._update(_changedOptions);\r\n }\r\n }\r\n return currentOptions;\r\n },\r\n state: () => lifecycleHub._state(),\r\n update(force?: boolean) {\r\n lifecycleHub._update(null, force);\r\n },\r\n };\r\n\r\n instance.update(true);\r\n\r\n return instance;\r\n};\r\n"],"names":["createCache","update","options","_equal","_initialValue","_alwaysUpdateValues","_value","_previous","cacheUpdate","force","context","curr","newVal","changed","_changed","_update","_current","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","elm","isEmptyArray","runEach","p1","runFn","fn","Set","forEach","prop","assignDeep","target","object1","object2","object3","object4","object5","object6","sources","copy","copyIsArray","src","clone","isEmptyObject","name","getSetProp","topLeft","fallback","value","attr","attrName","getAttribute","setAttribute","removeAttr","removeAttribute","scrollLeft","scrollTop","elmPrototype","find","selector","rootElm","document","querySelectorAll","is","matches","msMatchesSelector","contents","childNodes","parent","parentElement","before","parentElm","preferredAnchor","insertedElms","anchor","fragment","createDocumentFragment","insertedElm","previousSibling","appendChild","firstChild","nextSibling","insertBefore","appendChildren","node","children","prependChildren","insertedNodes","insertAfter","removeElements","nodes","e","removeChild","createDiv","classNames","div","createElement","createDOM","html","createdDiv","innerHTML","trim","firstLetterToUpper","str","charAt","toUpperCase","slice","getDummyStyle","style","cssPrefixes","jsPrefixes","jsCache","cssCache","cssProperty","uppercasedName","elmStyle","prefix","prefixWithoutDashes","resultPossibilities","resultPossibility","jsAPI","MutationObserverConstructor","IntersectionObserverConstructor","ResizeObserverConstructor","cAF","rAF","rnothtmlwhite","classListAction","className","action","clazz","classes","match","classList","addClass","add","removeClass","remove","diffClass","classNameA","classNameB","classNameASplit","split","classNameBSplit","tempObj","zeroObj","w","h","windowSize","innerWidth","innerHeight","offsetSize","offsetWidth","offsetHeight","clientSize","clientWidth","clientHeight","scrollSize","scrollWidth","scrollHeight","getBoundingClientRect","passiveEventsSupport","supportPassiveEvents","addEventListener","defineProperty","get","splitEventNames","eventNames","off","listener","capture","eventName","removeEventListener","on","doSupportPassiveEvents","passive","_passive","_capture","once","_once","offListeners","nativeOptions","finalListener","evt","bind","stopPropagation","preventDefault","stopAndPrevent","equal","a","b","props","propMutation","compareA","compareB","equalWH","equalTRBL","equalBCRWH","round","Math","setT","setTimeout","clearTimeouts","id","clearTimeout","noop","debounce","functionToDebounce","timeoutId","maxTimeoutId","prevArguments","latestArguments","_timeout","_maxDelay","_mergeParams","invokeFunctionToDebounce","args","mergeParms","flush","debouncedFn","arguments","finalTimeout","hasTimeout","finalMaxWait","hasMaxWait","setTimeoutFn","mergeParamsResult","invokedArgs","boundInvoke","_flush","cssNumber","opacity","zindex","parseToZeroOrNumber","toFloat","num","parseFloat","parseInt","Number","isNaN","adaptCSSVal","val","getCSSVal","computedStyle","getPropertyValue","setCSSVal","setProperty","styles","getSingleStyle","getStyles","getStylesResult","getComputedStyle","reduce","topRightBottomLeft","propertyPrefix","propertySuffix","finalPrefix","finalSuffix","top","right","bottom","left","t","r","l","x","y","absoluteCoordinates","rect","pageYOffset","pageXOffset","_extends","module","assign","stringify","JSON","templateTypePrefixSuffix","optionsTemplateTypes","validateRecursive","template","optionsDiff","doWriteErrors","propPath","validatedOptions","optionsCopy","filter","optionsDiffValue","optionsValue","templateValue","templateIsComplex","propPrefix","validatedResult","_validated","_foreign","isValid","errorEnumStrings","errorPossibleTypes","optionsValueType","templateValueArr","currTemplateType","typeString","isEnumString","enumStringSplit","possibility","string","doStringifyComparison","console","warn","join","validateOptions","transformOptions","optionsWithOptionsTemplate","_template","_options","tmpResult","classNameEnvironment","classNameEnvironmentFlexboxGlue","classNameEnvironmentFlexboxGlueMax","classNameHost","classNamePadding","classNameViewport","classNameViewportArrange","classNameContent","classNameViewportScrollbarStyling","classNameSizeObserver","classNameSizeObserverAppear","classNameSizeObserverListener","classNameSizeObserverListenerScroll","classNameSizeObserverListenerItem","classNameSizeObserverListenerItemFinal","classNameTrinsicObserver","numberAllowedValues","oTypes","number","arrayNullValues","null","stringArrayNullAllowedValues","booleanTrueTemplate","boolean","booleanFalseTemplate","resizeAllowedValues","overflowAllowedValues","scrollbarsVisibilityAllowedValues","scrollbarsAutoHideAllowedValues","defaultOptionsWithTemplate","resize","paddingAbsolute","updating","elementEvents","attributes","overflow","scrollbars","visibility","autoHide","autoHideDelay","dragScroll","clickScroll","touch","textarea","dynWidth","dynHeight","inheritedAttrs","nativeScrollbarsOverlaid","show","initialize","callbacks","onUpdated","function","optionsTemplate","defaultOptions","environmentInstance","abs","diffBiggerThanOne","valOne","valTwo","absValOne","absValTwo","getNativeScrollbarSize","body","measureElm","cSize","oSize","getNativeScrollbarStyling","testElm","ex","getRtlScrollBehavior","childElm","strHidden","overflowX","overflowY","direction","parentOffset","childOffset","childOffsetAfterScroll","n","getFlexboxGlue","minOffsetsizeParent","minOffsetsize","supportsMin","maxOffsetsizeParent","maxOffsetsize","supportsMax","getWindowDPR","dDPI","screen","deviceXDPI","sDPI","logicalXDPI","devicePixelRatio","getDefaultInitializationStrategy","nativeScrollbarStyling","_padding","_content","createEnvironment","envDOM","envElm","envChildElm","onChangedListener","nativeScrollbarSize","nativeScrollbarIsOverlaid","defaultInitializationStrategy","initializationStrategy","defaultDefaultOptions","env","_nativeScrollbarSize","_nativeScrollbarIsOverlaid","_nativeScrollbarStyling","_cssCustomProperties","_rtlScrollBehavior","_flexboxGlue","_addListener","_removeListener","delete","_getInitializationStrategy","_setInitializationStrategy","newInitializationStrategy","_getDefaultOptions","_setDefaultOptions","newDefaultOptions","_defaultInitializationStrategy","_defaultDefaultOptions","size","dpr","scrollbarSize","sizeNew","deltaSize","deltaAbsSize","deltaAbsRatio","dprNew","deltaIsBigger","difference","dprChanged","isZoom","newScrollbarSize","getEnvironment","unwrap","contentArrangeCounter","createUniqueViewportArrangeElement","evaluateCreationFromStrategy","initializationValue","strategy","isBooleanValue","createStructureSetup","paddingNeeded","contentNeeded","targetIsElm","osTargetObj","_host","host","_target","_viewport","viewport","padding","content","destroyFns","isTextarea","isBody","getTargetContents","contentSlot","isTextareaHostGenerated","contentContainingElm","createPadding","createViewport","createContent","targetContents","ownerDocument","bodyElm","wnd","defaultView","ctx","_windowElm","_documentElm","_htmlElm","_bodyElm","_isTextarea","_isBody","viewportArrangeElm","_viewportArrange","_targetObj","_targetCtx","_destroy","animationStartEventName","scrollEventName","scrollAmount","directionIsRTL","domRectHasDimensions","height","width","createSizeObserver","onSizeChangedCallback","_direction","observeDirectionChange","_appear","observeAppearChange","rtlScrollBehavior","baseElements","sizeObserver","listenerElement","currVal","updateResizeObserverContentRectCache","onSizeChangedCallbackProxy","sizeChangedContext","hasDirectionCache","skip","appear","doDirectionScroll","pop","contentRect","hasDimensions","hadDimensions","rtl","_sizeChanged","_directionIsRTLCache","appearCallback","directionIsRTLCache","resizeObserverInstance","observe","disconnect","observerElementChildren","observerElementChildrenRoot","shrinkElement","lastChild","expandElement","expandElementChild","cacheSize","currSize","isDirty","rAFId","reset","onResized","onScroll","scrollEvent","updateDirectionIsRTLCache","event","directionIsRTLCacheValues","_getCurrentCacheValues","_directionIsRTL","createTrinsicObserver","onTrinsicChangedCallback","trinsicObserver","ioEntryOrSize","isIntersecting","intersectionRatio","updateHeightIntrinsicCache","getCurrentHeightIntrinsicCache","intersectionObserverInstance","entries","last","heightIntrinsic","root","onSizeChanged","newSize","heightIntrinsicCache","_heightIntrinsic","createEventContentChange","eventContentChange","map","clear","_updateElements","getElements","eventElmList","elements","registredEventNames","newEntry","changingExistingEntry","finalEventNames","set","Map","createDOMObserver","isContentObserver","isConnected","_attributes","_styleChangingAttributes","_eventContentChange","_nestedTargetSelector","_ignoreTargetChange","_ignoreNestedTargetChange","_ignoreContentChange","destroyEventContentChange","updateEventContentChangeElements","finalAttributes","finalStyleChangingAttributes","observedAttributes","concat","observerCallback","mutations","ignoreTargetChange","ignoreContentChange","targetChangedAttrs","totalAddedNodes","targetStyleChanged","contentChanged","childListChanged","mutation","attributeName","mutationTarget","oldValue","addedNodes","isAttributesType","isChildListType","targetIsMutationTarget","attributeValue","attributeChanged","styleChangingAttrChanged","notOnlyAttrChanged","contentAttrChanged","isNestedTarget","baseAssertion","contentFinalChanged","mutationObserver","attributeOldValue","attributeFilter","subtree","childList","characterData","takeRecords","ignorePrefix","viewportAttrsFromTarget","baseStyleChangingAttrsTextarea","baseStyleChangingAttrs","newValue","diff","addedOrRemovedClass","lifecycleHubOservers","instance","updateLifecycles","debounceTimeout","debounceMaxDelay","contentMutationObserver","_structureSetup","contentMutationObserverAttr","updateLifecyclesWithDebouncedAdaptiveUpdateHints","prev","prevSizeChanged","prevHostMutation","_hostMutation","prevContentMutation","_contentMutation","currSizeChanged","currvHostMutation","currContentMutation","merged","updateViewportAttrsFromHost","attribute","hostAttr","onTrinsicChanged","updateFn","onContentMutation","contentChangedTroughEvent","onHostMutation","hostMutationObserver","updateOptions","checkOption","elementEventsChanged","attributesChanged","debounceChanged","updateContentMutationObserver","timeout","maxWait","_trinsicObserver","_sizeObserver","_updateObserverOptions","createTrinsicLifecycle","lifecycleHub","updateHints","heightIntrinsicChanged","display","createPaddingLifecycle","_setLifecycleCommunication","updatePaddingCache","currentPaddingCache","paddingChanged","directionChanged","paddingAbsoluteChanged","contentMutation","paddingStyleChanged","paddingRelative","paddingHorizontal","paddingVertical","paddingStyle","marginRight","marginBottom","marginLeft","viewportStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","_paddingInfo","_absolute","_viewportPaddingStyle","_paddingStyleChanged","max","overlaidScrollbarsHideOffset","whCacheOptions","sizeFraction","viewportOffsetSize","viewportRect","fractionalPixelRatioTollerance","setAxisOverflowStyle","horizontal","overflowAmount","behavior","styleObj","overflowKey","behaviorIsVisible","behaviorIsVisibleHidden","behaviorIsScroll","hasOverflow","_visible","_behavior","createOverflowLifecycle","_doViewportArrange","_getLifecycleCommunication","updateViewportSizeFraction","getCurrentViewportSizeFraction","updateViewportScrollSizeCache","getCurrentViewportScrollSizeCache","_viewportScrollSize","_viewportClientSize","_viewportSizeFraction","updateOverflowAmountCache","getCurrentOverflowAmountCache","fixFlexboxGlue","viewportOverflowState","_overflowScroll","_scrollbarsHideOffset","hostSizeFraction","hostClientSize","fractionalClientHeight","getViewportOverflowState","showNativeOverlaidScrollbars","viewportStyleObj","overlaidX","overlaidY","determineOverflow","arrangeHideOffset","scroll","scrollbarsHideOffset","_scrollbarsHideOffsetArrange","setViewportOverflowState","xVisible","xVisibleBehavior","yVisible","yVisibleBehavior","arrangeViewport","viewportScrollSize","viewportSizeFraction","arrangeX","arrangeY","hideOffsetX","hideOffsetY","viewportPaddingStyle","viewportArrangeHorizontalPaddingKey","viewportArrangeHorizontalPaddingValue","viewportArrangeVerticalPaddingValue","fractionalContentWidth","fractionalContenHeight","arrangeSize","sheet","cssRules","insertRule","ruleStyle","hideNativeScrollbars","viewportArrange","horizontalMarginKey","viewportHorizontalPaddingKey","horizontalMarginValue","verticalMarginValue","horizontalPaddingValue","verticalPaddingValue","undoViewportArrange","finalViewportOverflowState","finalPaddingStyle","assignProps","prevStyle","_redoViewportArrange","_viewportOverflowState","showNativeOverlaidScrollbarsOption","showNativeOverlaidScrollbarsChanged","adjustFlexboxGlue","viewportSizeFractionCache","viewportScrollSizeCache","overflowAmuntCache","preMeasureViewportOverflowState","undoViewportArrangeOverflowState","viewportSizeFractionCahnged","viewportScrollSizeChanged","viewportContentSize","arrangedViewportScrollSize","arrangedViewportClientSize","viewportSizeFractionChanged","overflowAmountChanged","overflowChanged","viewportArranged","_viewportOverflowScroll","_viewportOverflowAmount","getPropByPath","path","o","booleanCacheValuesFallback","lifecycleCommunicationFallback","createLifecycleHub","structureSetup","lifecycleCommunication","addEnvironmentListener","removeEnvironmentListener","doViewportArrange","newLifecycleCommunication","lifecycles","changedOptions","finalDirectionIsRTL","finalHeightIntrinsic","adjustScrollOffset","scrollOffsetX","scrollOffsetY","lifecycle","adaptiveSizeChanged","adaptiveHostMutation","adaptiveContentMutation","adaptivePaddingStyleChanged","destroyObservers","envUpdateListener","log","_state","_overflowAmount","OverlayScrollbars","extensions","currentOptions","newOptions","_changedOptions","state"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"overlayscrollbars.js","sources":["../src/support/cache/cache.ts","../src/support/utils/types.ts","../src/support/utils/array.ts","../src/support/utils/object.ts","../src/support/dom/attribute.ts","../src/support/dom/traversal.ts","../src/support/dom/manipulation.ts","../src/support/dom/create.ts","../src/support/compatibility/vendors.ts","../src/support/compatibility/apis.ts","../src/support/dom/class.ts","../src/support/dom/dimensions.ts","../src/support/dom/events.ts","../src/support/utils/equal.ts","../src/support/utils/function.ts","../src/support/dom/style.ts","../src/support/dom/offset.ts","../../../node_modules/@babel/runtime/helpers/extends.js","../src/support/options/validation.ts","../src/support/options/transformation.ts","../src/classnames.ts","../src/options.ts","../src/environment.ts","../src/setups/structureSetup.ts","../src/setups/scrollbarsSetup.ts","../src/observers/sizeObserver.ts","../src/observers/trinsicObserver.ts","../src/observers/domObserver.ts","../src/lifecycles/lifecycleHubObservers.ts","../src/lifecycles/trinsicLifecycle.ts","../src/lifecycles/paddingLifecycle.ts","../src/lifecycles/overflowLifecycle.ts","../src/lifecycles/lifecycleHub.ts","../src/overlayscrollbars.ts"],"sourcesContent":["export type CacheValues = [\r\n T, // value\r\n boolean, // changed\r\n T | undefined // previous\r\n];\r\n\r\nexport type Cache = [\r\n CacheUpdate,\r\n (force?: boolean) => CacheValues // getCurrent\r\n];\r\n\r\nexport interface CacheOptions {\r\n // initial value of _value.\r\n _initialValue: T;\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 CacheUpdate = undefined extends C\r\n ? (force?: boolean | 0, context?: C) => CacheValues\r\n : (force: boolean | 0, context: C) => CacheValues;\r\n\r\nexport type UpdateCachePropFunction = undefined extends Ctx\r\n ? (context?: Ctx, current?: Value, previous?: Value) => Value\r\n : Ctx extends Value\r\n ? ((context: Ctx, current?: Value, previous?: Value) => Value) | 0\r\n : (context: Ctx, current?: Value, previous?: Value) => Value;\r\n\r\nexport type EqualCachePropFunction = (currentVal?: T, newVal?: T) => boolean;\r\n\r\nexport const createCache = (\r\n update: UpdateCachePropFunction,\r\n options: CacheOptions\r\n): 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 cacheUpdate = ((force?: boolean | 0, context?: Ctx) => {\r\n const curr = _value;\r\n // @ts-ignore\r\n // update can only not be a function if C extends T as described in \"UpdateCachePropFunction\" type definition\r\n // if C extends T the cast (context as T) is perfectly valid\r\n const newVal = update ? update(context, _value, _previous) : (context as T);\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 }) as CacheUpdate;\r\n\r\n return [\r\n cacheUpdate,\r\n (force?: boolean) => [\r\n _value,\r\n !!force, // changed\r\n _previous,\r\n ],\r\n ];\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 return 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\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) ? (length > 0 && isObject(obj) ? length - 1 in obj : true) : 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 ? (instanceofObj ? obj instanceof instanceofObj : obj.nodeType === ElementNodeType) : 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 ? (instanceofObj ? obj instanceof instanceofObj : obj.nodeType === ElementNodeType) : 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(obj: PlainObject, callback: (value: any, indexOrKey: string, source: PlainObject) => boolean | unknown): 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: Array, item: T, fromIndex?: number): number => 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: Array, items: T | ArrayLike, arrayIsSingleItem?: boolean): Array => {\r\n !arrayIsSingleItem && !isString(items) && isArrayLike(items) ? Array.prototype.push.apply(array, items as Array) : 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) => {\r\n if (Array.from) {\r\n return Array.from(arr);\r\n }\r\n const result: Array = [];\r\n\r\n each(arr, (elm) => {\r\n push(result, elm);\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: Array | null | undefined) => array && array.length === 0;\r\n\r\n/**\r\n * Calls all functions in the passed array/set of functions.\r\n * @param arr The array filled with function which shall be called.\r\n * @param p1 The first param.\r\n */\r\nexport const runEach = (arr: ArrayLike | Set, p1?: unknown): void => {\r\n const runFn = (fn: RunEachItem) => fn && fn(p1);\r\n if (arr instanceof Set) {\r\n arr.forEach(runFn);\r\n } else {\r\n each(arr, runFn);\r\n }\r\n};\r\n","import { isArray, isFunction, isPlainObject, isNull } from 'support/utils/types';\r\nimport { each } from 'support/utils/array';\r\n\r\n/**\r\n * Determines whether the passed object has a property with the passed name.\r\n * @param obj The object.\r\n * @param prop The name of the property.\r\n */\r\nexport const hasOwnProperty = (obj: any, prop: string | number | symbol): boolean => 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(target: T, object1: U, object2: V, object3: W): T & U & V & W;\r\nexport function assignDeep(target: T, object1: U, object2: V, object3: W, object4: X): T & U & V & W & X;\r\nexport function assignDeep(target: T, object1: U, object2: V, object3: W, object4: X, object5: Y): T & U & V & W & X & Y;\r\nexport function assignDeep(\r\n target: T,\r\n object1?: U,\r\n object2?: V,\r\n object3?: W,\r\n object4?: X,\r\n object5?: Y,\r\n object6?: Z\r\n): T & U & V & W & X & Y & Z {\r\n const sources: Array = [object1, object2, object3, object4, object5, object6];\r\n\r\n // Handle case when target is a string or something (possible in deep copy)\r\n if ((typeof target !== 'object' || isNull(target)) && !isFunction(target)) {\r\n target = {} as T;\r\n }\r\n\r\n each(sources, (source) => {\r\n // Extend the base object\r\n each(keys(source), (key) => {\r\n const copy: any = source[key];\r\n\r\n // Prevent Object.prototype pollution\r\n // Prevent never-ending loop\r\n if (target === copy) {\r\n return true;\r\n }\r\n\r\n const copyIsArray = isArray(copy);\r\n\r\n // Recurse if we're merging plain objects or arrays\r\n if (copy && (isPlainObject(copy) || copyIsArray)) {\r\n const src = target[key];\r\n let clone: any = src;\r\n\r\n // Ensure proper type for the source value\r\n if (copyIsArray && !isArray(src)) {\r\n clone = [];\r\n } else if (!copyIsArray && !isPlainObject(src)) {\r\n clone = {};\r\n }\r\n\r\n // Never move original objects, clone them\r\n target[key] = assignDeep(clone, copy) as any;\r\n } else {\r\n target[key] = copy;\r\n }\r\n });\r\n });\r\n\r\n // Return the modified object\r\n return target as any;\r\n}\r\n\r\n/**\r\n * Returns true if the given object is empty, false otherwise.\r\n * @param obj The Object.\r\n */\r\nexport function isEmptyObject(obj: any): boolean {\r\n /* eslint-disable no-restricted-syntax, guard-for-in */\r\n for (const name in obj) return false;\r\n return true;\r\n /* eslint-enable */\r\n}\r\n","import { isUndefined } from 'support/utils/types';\r\n\r\ntype GetSetPropName = 'scrollLeft' | 'scrollTop' | 'value';\r\n\r\nfunction getSetProp(\r\n topLeft: GetSetPropName,\r\n fallback: number | string,\r\n elm: HTMLElement | HTMLInputElement | null,\r\n value?: number | string\r\n): number | string | void {\r\n if (isUndefined(value)) {\r\n return elm ? elm[topLeft] : fallback;\r\n }\r\n elm && (elm[topLeft] = value);\r\n}\r\n\r\n/**\r\n * Gets or sets a attribute with the given attribute of the given element depending whether the value attribute is given.\r\n * Returns null if the element has no attribute with the given name.\r\n * @param elm The element of which the attribute shall be get or set.\r\n * @param attrName The attribute name which shall be get or set.\r\n * @param value The value of the attribute which shall be set.\r\n */\r\nexport function attr(elm: HTMLElement | null, attrName: string): string | null;\r\nexport function attr(elm: HTMLElement | null, attrName: string, value: string): void;\r\nexport function attr(elm: HTMLElement | null, attrName: string, value?: string): string | null | void {\r\n if (isUndefined(value)) {\r\n return elm ? elm.getAttribute(attrName) : null;\r\n }\r\n elm && elm.setAttribute(attrName, value);\r\n}\r\n\r\n/**\r\n * Removes the given attribute from the given element.\r\n * @param elm The element of which the attribute shall be removed.\r\n * @param attrName The attribute name.\r\n */\r\nexport const removeAttr = (elm: Element | null, attrName: string): void => {\r\n elm && elm.removeAttribute(attrName);\r\n};\r\n\r\n/**\r\n * Gets or sets the scrollLeft value of the given element depending whether the value attribute is given.\r\n * @param elm The element of which the scrollLeft value shall be get or set.\r\n * @param value The scrollLeft value which shall be set.\r\n */\r\nexport function scrollLeft(elm: HTMLElement | null): number;\r\nexport function scrollLeft(elm: HTMLElement | null, value: number): void;\r\nexport function scrollLeft(elm: HTMLElement | null, value?: number): number | void {\r\n return getSetProp('scrollLeft', 0, elm, value) as number;\r\n}\r\n\r\n/**\r\n * Gets or sets the scrollTop value of the given element depending whether the value attribute is given.\r\n * @param elm The element of which the scrollTop value shall be get or set.\r\n * @param value The scrollTop value which shall be set.\r\n */\r\nexport function scrollTop(elm: HTMLElement | null): number;\r\nexport function scrollTop(elm: HTMLElement | null, value: number): void;\r\nexport function scrollTop(elm: HTMLElement | null, value?: number): number | void {\r\n return getSetProp('scrollTop', 0, elm, value) as number;\r\n}\r\n\r\n/**\r\n * Gets or sets the value of the given input element depending whether the value attribute is given.\r\n * @param elm The input element of which the value shall be get or set.\r\n * @param value The value which shall be set.\r\n */\r\nexport function val(elm: HTMLInputElement | null): string;\r\nexport function val(elm: HTMLInputElement | null, value: string): void;\r\nexport function val(elm: HTMLInputElement | null, value?: string): string | void {\r\n return getSetProp('value', '', elm, value) as string;\r\n}\r\n","import { isElement } from 'support/utils/types';\r\nimport { push, from } from 'support/utils/array';\r\n\r\ntype InputElementType = Element | Node | false | null | undefined;\r\ntype OutputElementType = Element | null;\r\n\r\nconst elmPrototype = Element.prototype;\r\n\r\n/**\r\n * Find all elements with the passed selector, outgoing (and including) the passed element or the document if no element was provided.\r\n * @param selector The selector which has to be searched by.\r\n * @param elm The element from which the search shall be outgoing.\r\n */\r\nconst find = (selector: string, elm?: InputElementType): Element[] => {\r\n const arr: Array = [];\r\n const rootElm = elm ? (isElement(elm) ? elm : null) : document;\r\n\r\n return rootElm ? push(arr, rootElm.querySelectorAll(selector)) : arr;\r\n};\r\n\r\n/**\r\n * Find the first element with the passed selector, outgoing (and including) the passed element or the document if no element was provided.\r\n * @param selector The selector which has to be searched by.\r\n * @param elm The element from which the search shall be outgoing.\r\n */\r\nconst findFirst = (selector: string, elm?: InputElementType): OutputElementType => {\r\n const rootElm = elm ? (isElement(elm) ? elm : null) : document;\r\n\r\n return rootElm ? rootElm.querySelector(selector) : null;\r\n};\r\n\r\n/**\r\n * Determines whether the passed element is matching with the passed selector.\r\n * @param elm The element which has to be compared with the passed selector.\r\n * @param selector The selector which has to be compared with the passed element. Additional selectors: ':visible' and ':hidden'.\r\n */\r\nconst is = (elm: InputElementType, selector: string): boolean => {\r\n if (isElement(elm)) {\r\n /* istanbul ignore next */\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n const fn: (...args: any) => boolean = elmPrototype.matches || elmPrototype.msMatchesSelector;\r\n return fn.call(elm, selector);\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Returns the children (no text-nodes or comments) of the passed element which are matching the passed selector. An empty array is returned if the passed element is null.\r\n * @param elm The element of which the children shall be returned.\r\n * @param selector The selector which must match with the children elements.\r\n */\r\nconst children = (elm: InputElementType, selector?: string): ReadonlyArray => {\r\n const childs: Array = [];\r\n\r\n return isElement(elm)\r\n ? push(\r\n childs,\r\n from(elm.children).filter((child) => (selector ? is(child, selector) : child))\r\n )\r\n : childs;\r\n};\r\n\r\n/**\r\n * Returns the childNodes (incl. text-nodes or comments etc.) of the passed element. An empty array is returned if the passed element is null.\r\n * @param elm The element of which the childNodes shall be returned.\r\n */\r\nconst contents = (elm: InputElementType): ReadonlyArray => (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 = (elm: InputElementType, highBoundarySelector: string, deepBoundarySelector: string): 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 = (parentElm: Node | false | null | undefined, preferredAnchor: Node | null | undefined, insertedElms: NodeCollection): 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 = (node: Node | null | undefined, insertedNodes: NodeCollection): 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 = ['WebKit', 'Moz', 'O', 'MS', 'webkit', 'moz', 'o', 'ms'];\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 return !(result = resultPossibilities.find((resultPossibility: string) => elmStyle[resultPossibility] !== undefined));\r\n });\r\n\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 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('IntersectionObserver');\r\nexport const ResizeObserverConstructor = jsAPI('ResizeObserver');\r\nexport const cAF = jsAPI('cancelAnimationFrame');\r\nexport const rAF = jsAPI('requestAnimationFrame');\r\n","import { isString } from 'support/utils/types';\r\nimport { each } from 'support/utils/array';\r\nimport { keys } from 'support/utils/object';\r\n\r\nconst rnothtmlwhite = /[^\\x20\\t\\r\\n\\f]+/g;\r\nconst classListAction = (\r\n elm: Element | false | null | undefined,\r\n className: string,\r\n action: (elmClassList: DOMTokenList, clazz: string) => boolean | void\r\n): boolean => {\r\n let clazz: string;\r\n let i = 0;\r\n let result = false;\r\n\r\n if (elm && isString(className)) {\r\n const classes: Array = className.match(rnothtmlwhite) || [];\r\n result = classes.length > 0;\r\n while ((clazz = classes[i++])) {\r\n result = !!action(elm.classList, clazz) && result;\r\n }\r\n }\r\n return result;\r\n};\r\n\r\n/**\r\n * Check whether the given element has the given class name(s).\r\n * @param elm The element.\r\n * @param className The class name(s).\r\n */\r\nexport const hasClass = (elm: Element | false | null | undefined, className: string): boolean =>\r\n classListAction(elm, className, (classList, clazz) => classList.contains(clazz));\r\n\r\n/**\r\n * Adds the given class name(s) to the given element.\r\n * @param elm The element.\r\n * @param className The class name(s) which shall be added. (separated by spaces)\r\n */\r\nexport const addClass = (elm: Element | false | null | undefined, className: string): void => {\r\n classListAction(elm, className, (classList, clazz) => classList.add(clazz));\r\n};\r\n\r\n/**\r\n * Removes the given class name(s) from the given element.\r\n * @param elm The element.\r\n * @param className The class name(s) which shall be removed. (separated by spaces)\r\n */\r\nexport const removeClass = (elm: Element | false | null | undefined, className: string): void => {\r\n classListAction(elm, className, (classList, clazz) => classList.remove(clazz));\r\n};\r\n\r\n/**\r\n * Takes two className strings, compares them and returns the difference as array.\r\n * @param classNameA ClassName A.\r\n * @param classNameB ClassName B.\r\n */\r\nexport const diffClass = (classNameA: string | null | undefined, classNameB: string | null | undefined) => {\r\n const classNameASplit = classNameA && classNameA.split(' ');\r\n const classNameBSplit = classNameB && classNameB.split(' ');\r\n const tempObj = {};\r\n\r\n each(classNameASplit, (className) => {\r\n tempObj[className] = 1;\r\n });\r\n each(classNameBSplit, (className) => {\r\n if (tempObj[className]) {\r\n delete tempObj[className];\r\n } else {\r\n tempObj[className] = 1;\r\n }\r\n });\r\n\r\n return keys(tempObj);\r\n};\r\n","export interface WH {\r\n w: T;\r\n h: T;\r\n}\r\n\r\nconst elementHasDimensions = (elm: HTMLElement): boolean => !!(elm.offsetWidth || elm.offsetHeight || elm.getClientRects().length);\r\nconst zeroObj: WH = {\r\n w: 0,\r\n h: 0,\r\n};\r\n\r\n/**\r\n * Returns the window inner- width and height.\r\n */\r\nexport const windowSize = (): WH => ({\r\n w: window.innerWidth,\r\n h: window.innerHeight,\r\n});\r\n\r\n/**\r\n * Returns the scroll- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the scroll- width and height shall be returned.\r\n */\r\nexport const offsetSize = (elm: HTMLElement | null | undefined): WH =>\r\n elm\r\n ? {\r\n w: elm.offsetWidth,\r\n h: elm.offsetHeight,\r\n }\r\n : zeroObj;\r\n\r\n/**\r\n * Returns the client- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the client- width and height shall be returned.\r\n */\r\nexport const clientSize = (elm: HTMLElement | null | undefined): WH =>\r\n elm\r\n ? {\r\n w: elm.clientWidth,\r\n h: elm.clientHeight,\r\n }\r\n : zeroObj;\r\n\r\n/**\r\n * Returns the client- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the client- width and height shall be returned.\r\n */\r\nexport const scrollSize = (elm: HTMLElement | null | undefined): WH =>\r\n elm\r\n ? {\r\n w: elm.scrollWidth,\r\n h: elm.scrollHeight,\r\n }\r\n : zeroObj;\r\n\r\n/**\r\n * Returns the BoundingClientRect of the passed element.\r\n * @param elm The element of which the BoundingClientRect shall be returned.\r\n */\r\nexport const getBoundingClientRect = (elm: HTMLElement): DOMRect => elm.getBoundingClientRect();\r\n\r\n/**\r\n * Determines whether the passed element has any dimensions.\r\n * @param elm The element.\r\n */\r\nexport const hasDimensions = (elm: HTMLElement | null | undefined): boolean => (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 = (target: EventTarget, eventNames: string, listener: (event: T) => any, capture?: boolean): 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 => (stopPropagation(evt) as undefined) || (preventDefault(evt) as undefined);\r\n","import { each } from 'support/utils/array';\r\nimport { WH, XY, TRBL } from 'support/dom';\r\nimport { PlainObject } from 'typings';\r\n\r\n/**\r\n * Compares two objects and returns true if all values of the passed prop names are identical, false otherwise or if one of the two object is falsy.\r\n * @param a Object a.\r\n * @param b Object b.\r\n * @param props The props which shall be compared.\r\n */\r\nexport const equal = (\r\n a: T | undefined,\r\n b: T | undefined,\r\n props: Array,\r\n propMutation?: ((value: any) => any) | null | false\r\n): boolean => {\r\n if (a && b) {\r\n let result = true;\r\n each(props, (prop) => {\r\n const compareA = propMutation ? propMutation(a[prop]) : a[prop];\r\n const compareB = propMutation ? propMutation(b[prop]) : b[prop];\r\n if (compareA !== compareB) {\r\n result = false;\r\n }\r\n });\r\n return result;\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalWH = (a?: WH, b?: WH) => equal(a, b, ['w', 'h']);\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalXY = (a?: XY, b?: XY) => equal(a, b, ['x', 'y']);\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalTRBL = (a?: TRBL, b?: TRBL) => equal(a, b, ['t', 'r', 'b', 'l']);\r\n\r\n/**\r\n * Compares two DOM Rects for their equality of their width and height properties\r\n * Also returns false if one of the DOM Rects is undefined or null.\r\n * @param a DOM Rect a.\r\n * @param b DOM Rect b.\r\n * @param round Whether the values should be rounded.\r\n */\r\nexport const equalBCRWH = (a?: DOMRect, b?: DOMRect, round?: boolean) =>\r\n equal(a, b, ['width', 'height'], round && ((value) => Math.round(value)));\r\n","import { isNumber, isFunction } from 'support/utils/types';\r\nimport { rAF, cAF } from 'support/compatibility/apis';\r\n\r\nconst setT = window.setTimeout;\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\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 = (curr: Parameters): Parameters | false | null | undefined =>\r\n _mergeParams && prevArguments ? _mergeParams(prevArguments, curr) : curr;\r\n\r\n const flush = () => {\r\n if (timeoutId) {\r\n invokeFunctionToDebounce(mergeParms(latestArguments!) || latestArguments!);\r\n }\r\n };\r\n\r\n const debouncedFn = function () {\r\n const args: Parameters = arguments as Parameters;\r\n const finalTimeout = isFunction(_timeout) ? _timeout() : _timeout;\r\n const hasTimeout = isNumber(finalTimeout) && finalTimeout >= 0;\r\n\r\n if (hasTimeout) {\r\n const finalMaxWait = isFunction(_maxDelay) ? _maxDelay() : _maxDelay;\r\n const hasMaxWait = isNumber(finalMaxWait) && finalMaxWait >= 0;\r\n const setTimeoutFn = finalTimeout! > 0 ? setT : rAF!;\r\n const mergeParamsResult = mergeParms(args);\r\n const invokedArgs = mergeParamsResult || args;\r\n const boundInvoke = invokeFunctionToDebounce.bind(0, invokedArgs);\r\n\r\n if (!mergeParamsResult) {\r\n invokeFunctionToDebounce(prevArguments || args);\r\n }\r\n\r\n clearTimeouts(timeoutId);\r\n timeoutId = setTimeoutFn(boundInvoke, finalTimeout as number) as number;\r\n\r\n if (hasMaxWait && !maxTimeoutId) {\r\n maxTimeoutId = setT(flush, finalMaxWait as number);\r\n }\r\n\r\n prevArguments = latestArguments = invokedArgs;\r\n } else {\r\n invokeFunctionToDebounce(args);\r\n }\r\n };\r\n debouncedFn._flush = flush;\r\n\r\n return debouncedFn as Debounced;\r\n};\r\n","import { each, keys } from 'support/utils';\r\nimport { isString, isNumber, isArray, isUndefined } from 'support/utils/types';\r\nimport { PlainObject, StyleObject } from 'typings';\r\n\r\nexport interface TRBL {\r\n t: number;\r\n r: number;\r\n b: number;\r\n l: number;\r\n}\r\n\r\nconst cssNumber = {\r\n //animationiterationcount: 1,\r\n //columncount: 1,\r\n //fillopacity: 1,\r\n //flexgrow: 1,\r\n //flexshrink: 1,\r\n //fontweight: 1,\r\n //lineheight: 1,\r\n opacity: 1,\r\n //order: 1,\r\n //orphans: 1,\r\n //widows: 1,\r\n zindex: 1,\r\n //zoom: 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 => (!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 ? computedStyle[prop] || computedStyle.getPropertyValue(prop) : elm.style[prop];\r\nconst setCSSVal = (elm: HTMLElement | false | null | undefined, prop: string, val: string | number): void => {\r\n try {\r\n if (elm) {\r\n const { style } = elm;\r\n if (!isUndefined(style[prop])) {\r\n style[prop] = adaptCSSVal(prop, val);\r\n } else {\r\n style.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(elm: HTMLElement | false | null | undefined, styles: StyleObject): void;\r\nexport function style(elm: HTMLElement | false | null | undefined, styles: string): string;\r\nexport function style(elm: HTMLElement | false | null | undefined, styles: Array | string): { [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 = (elm?: HTMLElement | false | null | undefined, propertyPrefix?: string, propertySuffix?: string): TRBL => {\r\n const finalPrefix = propertyPrefix ? `${propertyPrefix}-` : '';\r\n const finalSuffix = propertySuffix ? `-${propertySuffix}` : '';\r\n const top = `${finalPrefix}top${finalSuffix}`;\r\n const right = `${finalPrefix}right${finalSuffix}`;\r\n const bottom = `${finalPrefix}bottom${finalSuffix}`;\r\n const left = `${finalPrefix}left${finalSuffix}`;\r\n const result = style(elm, [top, right, bottom, left]);\r\n return {\r\n t: parseToZeroOrNumber(result[top]),\r\n r: parseToZeroOrNumber(result[right]),\r\n b: parseToZeroOrNumber(result[bottom]),\r\n l: parseToZeroOrNumber(result[left]),\r\n };\r\n};\r\n","import { getBoundingClientRect } from 'support/dom/dimensions';\r\n\r\nexport interface XY {\r\n x: T;\r\n y: T;\r\n}\r\n\r\nconst zeroObj: XY = {\r\n x: 0,\r\n y: 0,\r\n};\r\n\r\n/**\r\n * Returns the offset- left and top coordinates of the passed element relative to the document. If the element is null the top and left values are 0.\r\n * @param elm The element of which the offset- top and left coordinates shall be returned.\r\n */\r\nexport const absoluteCoordinates = (elm: HTMLElement | null | undefined): XY => {\r\n const rect = elm ? getBoundingClientRect(elm) : 0;\r\n return rect\r\n ? {\r\n x: rect.left + window.pageYOffset,\r\n y: rect.top + window.pageXOffset,\r\n }\r\n : zeroObj;\r\n};\r\n\r\n/**\r\n * Returns the offset- left and top coordinates of the passed element. If the element is null the top and left values are 0.\r\n * @param elm The element of which the offset- top and left coordinates shall be returned.\r\n */\r\nexport const offsetCoordinates = (elm: HTMLElement | null | undefined): XY =>\r\n elm\r\n ? {\r\n x: elm.offsetLeft,\r\n y: elm.offsetTop,\r\n }\r\n : zeroObj;\r\n","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, isNumber, isBoolean } from 'support/utils/types';\r\nimport { PlainObject } from 'typings';\r\n\r\nexport type OptionsObjectType = Record;\r\nexport type OptionsFunctionType = (this: unknown, ...args: unknown[]) => unknown;\r\nexport type OptionsTemplateType = ExtractPropsKey;\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 readonly _foreign: Record;\r\n readonly _validated: PartialOptions;\r\n};\r\n\r\nexport type PartialOptions = {\r\n [P in keyof T]?: T[P] extends OptionsObjectType ? PartialOptions : T[P];\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 { stringify } = JSON;\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 = ['boolean', 'number', 'string', 'array', 'object', 'function', 'null'].reduce(\r\n (result, item) => {\r\n result[item] = templateTypePrefixSuffix[0] + item + templateTypePrefixSuffix[1];\r\n return result;\r\n },\r\n {} as OptionsTemplateTypesDictionary\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 options The options object which shall be validated.\r\n * @param template The template according to which the options object 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 options: PartialOptions,\r\n template: OptionsTemplate,\r\n optionsDiff: T,\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 optionsDiffValue: any = isUndefined(optionsDiff[prop]) ? {} : optionsDiff[prop];\r\n const optionsValue: any = options[prop];\r\n const templateValue: PlainObject | string | OptionsTemplateTypes | Array = 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 validatedResult = validateRecursive(optionsValue, templateValue as T, optionsDiffValue, doWriteErrors, propPrefix + prop);\r\n validatedOptions[prop] = validatedResult._validated as any;\r\n optionsCopy[prop] = validatedResult._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 const isPrimitiveArr = isArray(optionsValue) && !optionsValue.some((val) => !isNumber(val) && !isString(val) && !isBoolean(val));\r\n const doStringifyComparison = isPrimitiveArr || isPlainObject(optionsValue);\r\n if (doStringifyComparison ? stringify(optionsValue) !== stringify(optionsDiffValue) : optionsValue !== optionsDiffValue) {\r\n validatedOptions[prop] = optionsValue;\r\n }\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 }${errorEnumStrings.length > 0 ? `\\r\\nValid strings are: [ ${errorEnumStrings.join(', ')} ].` : ''}`\r\n );\r\n }\r\n\r\n delete optionsCopy[prop];\r\n }\r\n });\r\n\r\n return {\r\n _foreign: optionsCopy,\r\n _validated: validatedOptions,\r\n };\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 options The options object which shall be validated.\r\n * @param template The template according to which the options object 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 */\r\nconst validateOptions = (\r\n options: PartialOptions,\r\n template: OptionsTemplate,\r\n optionsDiff?: T | null,\r\n doWriteErrors?: boolean\r\n): OptionsValidationResult => {\r\n /*\r\n if (!isEmptyObject(foreign) && doWriteErrors)\r\n console.warn(`The following options are discarded due to invalidity:\\r\\n ${window.JSON.stringify(foreign, null, 2)}`);\r\n\r\n //add values, which aren't specified in the template, to the finished validated object to prevent them from being discarded\r\n if (keepForeignProps) {\r\n Object.assign(result.validated, foreign);\r\n }\r\n */\r\n return validateRecursive(options, template, optionsDiff || ({} as T), doWriteErrors || false);\r\n};\r\n\r\nexport { validateOptions, optionsTemplateTypes };\r\n","import {\r\n OptionsTemplate,\r\n OptionsObjectType,\r\n OptionsTemplateNativeTypes,\r\n OptionsTemplateTypes,\r\n OptionsTemplateValue,\r\n} from 'support/options/validation';\r\nimport { PlainObject } from 'typings';\r\nimport { isArray } from 'support/utils/types';\r\nimport { each, keys } from 'support/utils';\r\n\r\nexport interface OptionsWithOptionsTemplateTransformation {\r\n _template: OptionsTemplate;\r\n _options: T;\r\n}\r\n\r\nexport type OptionsWithOptionsTemplateValue = [T, OptionsTemplateValue];\r\n\r\nexport type OptionsWithOptionsTemplate = {\r\n [P in keyof T]: T[P] extends OptionsObjectType\r\n ? OptionsWithOptionsTemplate\r\n : T[P] extends OptionsTemplateNativeTypes\r\n ? OptionsWithOptionsTemplateValue\r\n : never;\r\n};\r\n\r\n/**\r\n * Transforms the given OptionsWithOptionsTemplate object to its corresponding generic (T) Object or its corresponding Template object.\r\n * @param optionsWithOptionsTemplate The OptionsWithOptionsTemplate object which shall be converted.\r\n * @param toTemplate True if the given OptionsWithOptionsTemplate shall be converted to its corresponding Template object.\r\n */\r\nexport const transformOptions = (optionsWithOptionsTemplate: OptionsWithOptionsTemplate): OptionsWithOptionsTemplateTransformation => {\r\n const result: any = {\r\n _template: {},\r\n _options: {},\r\n };\r\n\r\n each(keys(optionsWithOptionsTemplate), (key: Extract) => {\r\n const val: PlainObject | OptionsTemplateTypes | Array = optionsWithOptionsTemplate[key];\r\n\r\n if (isArray(val)) {\r\n result._template[key] = val[1];\r\n result._options[key] = val[0];\r\n } else {\r\n // if (isObject(val))\r\n const tmpResult = transformOptions(val as OptionsWithOptionsTemplate);\r\n result._template[key] = tmpResult._template;\r\n result._options[key] = tmpResult._options;\r\n }\r\n });\r\n\r\n return result;\r\n};\r\n","export const classNameEnvironment = 'os-environment';\r\nexport const classNameEnvironmentFlexboxGlue = `${classNameEnvironment}-flexbox-glue`;\r\nexport const classNameEnvironmentFlexboxGlueMax = `${classNameEnvironmentFlexboxGlue}-max`;\r\n\r\nexport const classNameHost = 'os-host';\r\nexport const classNamePadding = 'os-padding';\r\nexport const classNameViewport = 'os-viewport';\r\nexport const classNameViewportArrange = `${classNameViewport}-arrange`;\r\nexport const classNameContent = 'os-content';\r\nexport const classNameViewportScrollbarStyling = `${classNameViewport}-scrollbar-styled`;\r\n\r\nexport const classNameSizeObserver = 'os-size-observer';\r\nexport const classNameSizeObserverAppear = `${classNameSizeObserver}-appear`;\r\nexport const classNameSizeObserverListener = `${classNameSizeObserver}-listener`;\r\nexport const classNameSizeObserverListenerScroll = `${classNameSizeObserverListener}-scroll`;\r\nexport const classNameSizeObserverListenerItem = `${classNameSizeObserverListener}-item`;\r\nexport const classNameSizeObserverListenerItemFinal = `${classNameSizeObserverListenerItem}-final`;\r\n\r\nexport const classNameTrinsicObserver = 'os-trinsic-observer';\r\n\r\nexport const classNameScrollbar = 'os-scrollbar';\r\nexport const classNameScrollbarHorizontal = `${classNameScrollbar}-horizontal`;\r\nexport const classNameScrollbarVertical = `${classNameScrollbar}-vertical`;\r\nexport const classNameScrollbarTrack = 'os-scrollbar-track';\r\nexport const classNameScrollbarHandle = 'os-scrollbar-handle';\r\n","import {\r\n optionsTemplateTypes as oTypes,\r\n transformOptions,\r\n OptionsTemplateValue,\r\n OptionsWithOptionsTemplateValue,\r\n OptionsWithOptionsTemplate,\r\n} from 'support/options';\r\n\r\nexport type ResizeBehavior = 'none' | 'both' | 'horizontal' | 'vertical';\r\n\r\nexport type OverflowBehavior = 'hidden' | 'scroll' | 'visible' | 'visible-hidden';\r\n\r\nexport type VisibilityBehavior = 'visible' | 'hidden' | 'auto';\r\n\r\nexport type AutoHideBehavior = 'never' | 'scroll' | 'leave' | 'move';\r\n\r\nexport type ScrollBehavior = 'always' | 'ifneeded' | 'never';\r\n\r\nexport type BasicEventCallback = (this: any) => void;\r\n\r\nexport type ScrollEventCallback = (this: any, args?: UIEvent) => void;\r\n\r\nexport type OverflowChangedCallback = (this: any, args?: OverflowChangedArgs) => void;\r\n\r\nexport type OverflowAmountChangedCallback = (this: any, args?: OverflowAmountChangedArgs) => void;\r\n\r\nexport type DirectionChangedCallback = (this: any, args?: DirectionChangedArgs) => void;\r\n\r\nexport type SizeChangedCallback = (this: any, args?: SizeChangedArgs) => void;\r\n\r\nexport type UpdatedCallback = (this: any, args?: UpdatedArgs) => void;\r\n\r\nexport interface OSOptions {\r\n resize: ResizeBehavior;\r\n paddingAbsolute: boolean;\r\n updating: {\r\n elementEvents: Array<[string, string]> | null;\r\n attributes: string[] | null;\r\n debounce: number | [number, number] | null;\r\n };\r\n overflow: {\r\n x: OverflowBehavior;\r\n y: OverflowBehavior;\r\n };\r\n scrollbars: {\r\n visibility: VisibilityBehavior;\r\n autoHide: AutoHideBehavior;\r\n autoHideDelay: number;\r\n dragScroll: boolean;\r\n clickScroll: boolean;\r\n touch: boolean;\r\n };\r\n textarea: {\r\n dynWidth: boolean;\r\n dynHeight: boolean;\r\n inheritedAttrs: string | Array | null;\r\n };\r\n nativeScrollbarsOverlaid: {\r\n show: boolean;\r\n initialize: boolean;\r\n };\r\n callbacks: {\r\n onUpdated: (() => any) | null;\r\n };\r\n /*\r\n callbacks?: {\r\n onInitialized?: BasicEventCallback | null;\r\n onInitializationWithdrawn?: BasicEventCallback | null;\r\n onDestroyed?: BasicEventCallback | null;\r\n onScrollStart?: ScrollEventCallback | null;\r\n onScroll?: ScrollEventCallback | null;\r\n onScrollStop?: ScrollEventCallback | null;\r\n onOverflowChanged?: OverflowChangedCallback | null;\r\n onOverflowAmountChanged?: OverflowAmountChangedCallback | null;\r\n onDirectionChanged?: DirectionChangedCallback | null;\r\n onContentSizeChanged?: SizeChangedCallback | null;\r\n onHostSizeChanged?: SizeChangedCallback | null;\r\n onUpdated?: UpdatedCallback | null;\r\n };\r\n */\r\n}\r\n\r\nexport interface OverflowChangedArgs {\r\n x: boolean;\r\n y: boolean;\r\n xScrollable: boolean;\r\n yScrollable: boolean;\r\n clipped: boolean;\r\n}\r\n\r\nexport interface OverflowAmountChangedArgs {\r\n x: number;\r\n y: number;\r\n}\r\n\r\nexport interface DirectionChangedArgs {\r\n isRTL: number;\r\n dir: string;\r\n}\r\n\r\nexport interface SizeChangedArgs {\r\n width: number;\r\n height: number;\r\n}\r\n\r\nexport interface UpdatedArgs {\r\n forced: boolean;\r\n}\r\n\r\nconst numberAllowedValues: OptionsTemplateValue = oTypes.number;\r\nconst arrayNullValues: OptionsTemplateValue | null> = [oTypes.array, oTypes.null];\r\nconst stringArrayNullAllowedValues: OptionsTemplateValue | null> = [oTypes.string, oTypes.array, oTypes.null];\r\nconst booleanTrueTemplate: OptionsWithOptionsTemplateValue = [true, oTypes.boolean];\r\nconst booleanFalseTemplate: OptionsWithOptionsTemplateValue = [false, oTypes.boolean];\r\n// const callbackTemplate: OptionsWithOptionsTemplateValue = [null, [oTypes.function, oTypes.null]];\r\nconst resizeAllowedValues: OptionsTemplateValue = 'none both horizontal vertical';\r\nconst overflowAllowedValues: OptionsTemplateValue = 'hidden scroll visible visible-hidden';\r\nconst scrollbarsVisibilityAllowedValues: OptionsTemplateValue = 'visible hidden auto';\r\nconst scrollbarsAutoHideAllowedValues: OptionsTemplateValue = 'never scroll leavemove';\r\n\r\n/**\r\n * A object which serves as \"default options object\" and \"options template object\".\r\n * I combined these two into one object so that I don't have to define two separate big objects, instead I define one big object.\r\n *\r\n * The property value is a tuple:\r\n * the first value is the default value\r\n * the second value is the template value\r\n * Example:\r\n * {\r\n * a: ['default', [Type.string, Type.null]],\r\n * b: [250, Type.number]\r\n * }\r\n * Property \"a\" has a default value of 'default' and it can be a string or null\r\n * Property \"b\" has a default value of 250 and it can be number\r\n */\r\nconst defaultOptionsWithTemplate: OptionsWithOptionsTemplate = {\r\n resize: ['none', resizeAllowedValues], // none || both || horizontal || vertical || n || b || h || v\r\n paddingAbsolute: booleanFalseTemplate, // true || false\r\n updating: {\r\n elementEvents: [[['img', 'load']], arrayNullValues], // array of tuples || null\r\n attributes: [null, arrayNullValues],\r\n debounce: [\r\n [0, 33],\r\n [oTypes.number, oTypes.array, oTypes.null],\r\n ], // number || number array || null\r\n },\r\n overflow: {\r\n x: ['scroll', overflowAllowedValues], // visible-hidden || visible-scroll || hidden || scroll || v-h || v-s || h || s\r\n y: ['scroll', overflowAllowedValues], // visible-hidden || visible-scroll || hidden || scroll || v-h || v-s || h || s\r\n },\r\n scrollbars: {\r\n visibility: ['auto', scrollbarsVisibilityAllowedValues], // visible || hidden || auto || v || h || a\r\n autoHide: ['never', scrollbarsAutoHideAllowedValues], // never || scroll || leave || move || n || s || l || m\r\n autoHideDelay: [800, numberAllowedValues], // number\r\n dragScroll: booleanTrueTemplate, // true || false\r\n clickScroll: booleanFalseTemplate, // true || false\r\n touch: booleanTrueTemplate, // true || false\r\n },\r\n textarea: {\r\n dynWidth: booleanFalseTemplate, // true || false\r\n dynHeight: booleanFalseTemplate, // true || false\r\n inheritedAttrs: [['style', 'class'], stringArrayNullAllowedValues], // string || array || null\r\n },\r\n nativeScrollbarsOverlaid: {\r\n show: booleanFalseTemplate, // true || false\r\n initialize: booleanFalseTemplate, // true || false\r\n },\r\n callbacks: {\r\n onUpdated: [null, [oTypes.function, oTypes.null]],\r\n },\r\n /*\r\n callbacks: {\r\n onInitialized: callbackTemplate, // null || function\r\n onInitializationWithdrawn: callbackTemplate, // null || function\r\n onDestroyed: callbackTemplate, // null || function\r\n onScrollStart: callbackTemplate, // null || function\r\n onScroll: callbackTemplate, // null || function\r\n onScrollStop: callbackTemplate, // null || function\r\n onOverflowChanged: callbackTemplate, // null || function\r\n onOverflowAmountChanged: callbackTemplate, // null || function\r\n onDirectionChanged: callbackTemplate, // null || function\r\n onContentSizeChanged: callbackTemplate, // null || function\r\n onHostSizeChanged: callbackTemplate, // null || function\r\n onUpdated: callbackTemplate, // null || function\r\n },\r\n */\r\n};\r\n\r\nexport const { _template: optionsTemplate, _options: defaultOptions } = transformOptions(defaultOptionsWithTemplate);\r\n","import {\r\n createDOM,\r\n addClass,\r\n style,\r\n appendChildren,\r\n clientSize,\r\n absoluteCoordinates,\r\n offsetSize,\r\n scrollLeft,\r\n XY,\r\n removeAttr,\r\n removeElements,\r\n windowSize,\r\n runEach,\r\n equalBCRWH,\r\n getBoundingClientRect,\r\n assignDeep,\r\n cssProperty,\r\n PartialOptions,\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 } from 'typings';\r\n\r\ntype StructureInitializationElementFn = ((target: OSTargetElement) => HTMLElement | T) | T;\r\n\r\ntype ScrollbarsInitializationElementFn = ((target: OSTargetElement, host: HTMLElement, viewport: HTMLElement) => HTMLElement | T) | T;\r\n\r\n/**\r\n * A Static element is an element which MUST be generated.\r\n * If null (or the returned result is null), the initialization function is generatig the element, otherwise\r\n * the element returned by the function acts as the generated element.\r\n */\r\nexport type StructureInitializationStaticElement = StructureInitializationElementFn;\r\n\r\n/**\r\n * A Dynamic element is an element which CAN be generated.\r\n * If null (or the returned result is null), then the default behavior is used.\r\n * If boolean (or the returned result is boolean), the generation of the element is forced (or not).\r\n * If the function returns and element, the element returned by the function acts as the generated element.\r\n */\r\nexport type StructureInitializationDynamicElement = StructureInitializationElementFn;\r\n\r\nexport interface StructureInitializationStrategy {\r\n _host: StructureInitializationStaticElement;\r\n _viewport: StructureInitializationStaticElement;\r\n _padding: StructureInitializationDynamicElement;\r\n _content: StructureInitializationDynamicElement;\r\n}\r\n\r\nexport interface ScrollbarsInitializationStrategy {\r\n _scrollbarsSlot: ScrollbarsInitializationElementFn;\r\n}\r\n\r\nexport interface InitializationStrategy extends StructureInitializationStrategy, ScrollbarsInitializationStrategy {}\r\n\r\nexport type OnEnvironmentChanged = (env: Environment) => void;\r\nexport interface Environment {\r\n _nativeScrollbarSize: XY;\r\n _nativeScrollbarIsOverlaid: XY;\r\n _nativeScrollbarStyling: boolean;\r\n _rtlScrollBehavior: { n: boolean; i: boolean };\r\n _flexboxGlue: boolean;\r\n _cssCustomProperties: boolean;\r\n _addListener(listener: OnEnvironmentChanged): void;\r\n _removeListener(listener: OnEnvironmentChanged): void;\r\n _getInitializationStrategy(): InitializationStrategy;\r\n _setInitializationStrategy(newInitializationStrategy: Partial): void;\r\n _getDefaultOptions(): OSOptions;\r\n _setDefaultOptions(newDefaultOptions: PartialOptions): void;\r\n _defaultInitializationStrategy: InitializationStrategy;\r\n _defaultDefaultOptions: OSOptions;\r\n}\r\n\r\nlet environmentInstance: Environment;\r\nconst { abs, round } = Math;\r\n\r\nconst diffBiggerThanOne = (valOne: number, valTwo: number): boolean => {\r\n const absValOne = abs(valOne);\r\n const absValTwo = abs(valTwo);\r\n return !(absValOne === absValTwo || absValOne + 1 === absValTwo || absValOne - 1 === absValTwo);\r\n};\r\n\r\nconst getNativeScrollbarSize = (body: HTMLElement, measureElm: HTMLElement): XY => {\r\n appendChildren(body, measureElm);\r\n const cSize = clientSize(measureElm);\r\n const oSize = offsetSize(measureElm);\r\n\r\n return {\r\n x: oSize.h - cSize.h,\r\n y: oSize.w - cSize.w,\r\n };\r\n};\r\n\r\nconst getNativeScrollbarStyling = (testElm: HTMLElement): boolean => {\r\n let result = false;\r\n addClass(testElm, classNameViewportScrollbarStyling);\r\n try {\r\n result =\r\n style(testElm, cssProperty('scrollbar-width')) === 'none' ||\r\n window.getComputedStyle(testElm, '::-webkit-scrollbar').getPropertyValue('display') === 'none';\r\n } catch (ex) {}\r\n\r\n return result;\r\n};\r\n\r\nconst getRtlScrollBehavior = (parentElm: HTMLElement, childElm: HTMLElement): { i: boolean; n: boolean } => {\r\n const strHidden = 'hidden';\r\n style(parentElm, { overflowX: strHidden, overflowY: strHidden, direction: 'rtl' });\r\n scrollLeft(parentElm, 0);\r\n\r\n const parentOffset = absoluteCoordinates(parentElm);\r\n const childOffset = absoluteCoordinates(childElm);\r\n scrollLeft(parentElm, -999); // https://github.com/KingSora/OverlayScrollbars/issues/187\r\n const childOffsetAfterScroll = absoluteCoordinates(childElm);\r\n return {\r\n /**\r\n * origin direction = determines if the zero scroll position is on the left or right side\r\n * 'i' means 'invert' (i === true means that the axis must be inverted to be correct)\r\n * true = on the left side\r\n * false = on the right side\r\n */\r\n i: parentOffset.x === childOffset.x,\r\n /**\r\n * negative = determines if the maximum scroll is positive or negative\r\n * 'n' means 'negate' (n === true means that the axis must be negated to be correct)\r\n * true = negative\r\n * false = positive\r\n */\r\n n: childOffset.x !== childOffsetAfterScroll.x,\r\n };\r\n};\r\n\r\nconst getFlexboxGlue = (parentElm: HTMLElement, childElm: HTMLElement): boolean => {\r\n addClass(parentElm, classNameEnvironmentFlexboxGlue);\r\n const minOffsetsizeParent = getBoundingClientRect(parentElm);\r\n const minOffsetsize = getBoundingClientRect(childElm);\r\n const supportsMin = equalBCRWH(minOffsetsize, minOffsetsizeParent, true);\r\n\r\n addClass(parentElm, classNameEnvironmentFlexboxGlueMax);\r\n const maxOffsetsizeParent = getBoundingClientRect(parentElm);\r\n const maxOffsetsize = getBoundingClientRect(childElm);\r\n const supportsMax = equalBCRWH(maxOffsetsize, maxOffsetsizeParent, true);\r\n\r\n return supportsMin && supportsMax;\r\n};\r\n\r\nconst getWindowDPR = (): number => {\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n const dDPI = window.screen.deviceXDPI || 0;\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n const sDPI = window.screen.logicalXDPI || 1;\r\n return window.devicePixelRatio || dDPI / sDPI;\r\n};\r\n\r\n// init function decides for all values\r\nconst getDefaultInitializationStrategy = (nativeScrollbarStyling: boolean): InitializationStrategy => ({\r\n _host: null,\r\n _viewport: null,\r\n _padding: null,\r\n _content: null,\r\n _scrollbarsSlot: null,\r\n});\r\n\r\nconst createEnvironment = (): Environment => {\r\n const { body } = document;\r\n const envDOM = createDOM(`
`);\r\n const envElm = envDOM[0] as HTMLElement;\r\n const envChildElm = envElm.firstChild as HTMLElement;\r\n const onChangedListener: Set = new Set();\r\n const nativeScrollbarSize = getNativeScrollbarSize(body, envElm);\r\n const nativeScrollbarStyling = getNativeScrollbarStyling(envElm);\r\n const nativeScrollbarIsOverlaid = {\r\n x: nativeScrollbarSize.x === 0,\r\n y: nativeScrollbarSize.y === 0,\r\n };\r\n const defaultInitializationStrategy = getDefaultInitializationStrategy(nativeScrollbarStyling);\r\n let initializationStrategy = defaultInitializationStrategy;\r\n let defaultDefaultOptions = defaultOptions;\r\n\r\n const env: Environment = {\r\n _nativeScrollbarSize: nativeScrollbarSize,\r\n _nativeScrollbarIsOverlaid: nativeScrollbarIsOverlaid,\r\n _nativeScrollbarStyling: nativeScrollbarStyling,\r\n _cssCustomProperties: style(envElm, 'zIndex') === '-1',\r\n _rtlScrollBehavior: getRtlScrollBehavior(envElm, envChildElm),\r\n _flexboxGlue: getFlexboxGlue(envElm, envChildElm),\r\n _addListener(listener: OnEnvironmentChanged): void {\r\n onChangedListener.add(listener);\r\n },\r\n _removeListener(listener: OnEnvironmentChanged): void {\r\n onChangedListener.delete(listener);\r\n },\r\n _getInitializationStrategy: () => ({ ...initializationStrategy }),\r\n _setInitializationStrategy(newInitializationStrategy) {\r\n initializationStrategy = assignDeep({}, initializationStrategy, newInitializationStrategy);\r\n },\r\n _getDefaultOptions: () => ({ ...defaultDefaultOptions }),\r\n _setDefaultOptions(newDefaultOptions) {\r\n defaultDefaultOptions = assignDeep({}, defaultDefaultOptions, newDefaultOptions);\r\n },\r\n _defaultInitializationStrategy: defaultInitializationStrategy,\r\n _defaultDefaultOptions: defaultDefaultOptions,\r\n };\r\n\r\n removeAttr(envElm, 'style');\r\n removeElements(envElm);\r\n\r\n if (!nativeScrollbarStyling && (!nativeScrollbarIsOverlaid.x || !nativeScrollbarIsOverlaid.y)) {\r\n let size = windowSize();\r\n let dpr = getWindowDPR();\r\n let scrollbarSize = nativeScrollbarSize;\r\n\r\n window.addEventListener('resize', () => {\r\n if (onChangedListener.size) {\r\n const sizeNew = windowSize();\r\n const deltaSize = {\r\n w: sizeNew.w - size.w,\r\n h: sizeNew.h - size.h,\r\n };\r\n\r\n if (deltaSize.w === 0 && deltaSize.h === 0) return;\r\n\r\n const deltaAbsSize = {\r\n w: abs(deltaSize.w),\r\n h: abs(deltaSize.h),\r\n };\r\n const deltaAbsRatio = {\r\n w: abs(round(sizeNew.w / (size.w / 100.0))),\r\n h: abs(round(sizeNew.h / (size.h / 100.0))),\r\n };\r\n const dprNew = getWindowDPR();\r\n const deltaIsBigger = deltaAbsSize.w > 2 && deltaAbsSize.h > 2;\r\n const difference = !diffBiggerThanOne(deltaAbsRatio.w, deltaAbsRatio.h);\r\n const dprChanged = dprNew !== dpr && dpr > 0;\r\n const isZoom = deltaIsBigger && difference && dprChanged;\r\n\r\n if (isZoom) {\r\n const newScrollbarSize = (environmentInstance._nativeScrollbarSize = getNativeScrollbarSize(body, envElm));\r\n removeElements(envElm);\r\n\r\n if (scrollbarSize.x !== newScrollbarSize.x || scrollbarSize.y !== newScrollbarSize.y) {\r\n runEach(onChangedListener);\r\n }\r\n\r\n scrollbarSize = newScrollbarSize;\r\n }\r\n\r\n size = sizeNew;\r\n dpr = dprNew;\r\n }\r\n });\r\n }\r\n\r\n return env;\r\n};\r\n\r\nexport const getEnvironment = (): Environment => {\r\n if (!environmentInstance) {\r\n environmentInstance = createEnvironment();\r\n }\r\n return environmentInstance;\r\n};\r\n","import {\r\n isHTMLElement,\r\n appendChildren,\r\n is,\r\n createDiv,\r\n contents,\r\n insertAfter,\r\n addClass,\r\n parent,\r\n indexOf,\r\n removeElements,\r\n removeClass,\r\n push,\r\n runEach,\r\n insertBefore,\r\n attr,\r\n isBoolean,\r\n isFunction,\r\n keys,\r\n} from 'support';\r\nimport {\r\n classNameHost,\r\n classNamePadding,\r\n classNameViewport,\r\n classNameViewportArrange,\r\n classNameContent,\r\n classNameViewportScrollbarStyling,\r\n} from 'classnames';\r\nimport {\r\n getEnvironment,\r\n StructureInitializationStaticElement,\r\n StructureInitializationDynamicElement,\r\n StructureInitializationStrategy,\r\n} from 'environment';\r\nimport { OSTarget, OSTargetElement, StructureInitialization } from 'typings';\r\n\r\nexport interface OSTargetContext {\r\n _isTextarea: boolean;\r\n _isBody: boolean;\r\n _htmlElm: HTMLHtmlElement;\r\n _bodyElm: HTMLBodyElement;\r\n _windowElm: Window;\r\n _documentElm: HTMLDocument;\r\n _targetIsElm: boolean;\r\n}\r\n\r\nexport interface PreparedOSTargetObject {\r\n _target: OSTargetElement;\r\n _host: HTMLElement;\r\n _viewport: HTMLElement;\r\n _padding: HTMLElement | false;\r\n _content: HTMLElement | false;\r\n _viewportArrange: HTMLStyleElement | false;\r\n}\r\n\r\nexport interface StructureSetup {\r\n _targetObj: PreparedOSTargetObject;\r\n _targetCtx: OSTargetContext;\r\n _destroy: () => void;\r\n}\r\n\r\nlet contentArrangeCounter = 0;\r\n\r\nconst unwrap = (elm: HTMLElement | false | null | undefined) => {\r\n appendChildren(parent(elm), contents(elm));\r\n removeElements(elm);\r\n};\r\n\r\nconst createUniqueViewportArrangeElement = (): HTMLStyleElement | false => {\r\n const { _nativeScrollbarStyling, _nativeScrollbarIsOverlaid, _cssCustomProperties } = getEnvironment();\r\n /* istanbul ignore next */\r\n const create = !_cssCustomProperties && !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);\r\n const result = create ? document.createElement('style') : false;\r\n\r\n if (result) {\r\n attr(result, 'id', `${classNameViewportArrange}-${contentArrangeCounter}`);\r\n contentArrangeCounter++;\r\n }\r\n\r\n return result;\r\n};\r\n\r\nconst staticCreationFromStrategy = (\r\n target: OSTargetElement,\r\n initializationValue: HTMLElement | undefined,\r\n strategy: StructureInitializationStaticElement,\r\n elementClass: string\r\n): HTMLElement => {\r\n const result = initializationValue ? initializationValue : isFunction(strategy) ? strategy(target) : (strategy as null);\r\n return result ? result : createDiv(elementClass);\r\n};\r\n\r\nconst dynamicCreationFromStrategy = (\r\n target: OSTargetElement,\r\n initializationValue: HTMLElement | boolean | undefined,\r\n strategy: StructureInitializationDynamicElement,\r\n elementClass: string,\r\n defaultValue: boolean\r\n): HTMLElement | false => {\r\n const takeInitializationValue = isBoolean(initializationValue) || initializationValue;\r\n const result = takeInitializationValue ? (initializationValue as boolean | HTMLElement) : isFunction(strategy) ? strategy(target) : strategy;\r\n\r\n if (result === null) {\r\n return defaultValue ? createDiv(elementClass) : false;\r\n }\r\n\r\n return result === true ? createDiv(elementClass) : result;\r\n};\r\n\r\nexport const createStructureSetup = (target: OSTarget | StructureInitialization): StructureSetup => {\r\n const { _getInitializationStrategy, _nativeScrollbarStyling } = getEnvironment();\r\n const {\r\n _host: hostInitializationStrategy,\r\n _viewport: viewportInitializationStrategy,\r\n _padding: paddingInitializationStrategy,\r\n _content: contentInitializationStrategy,\r\n } = _getInitializationStrategy() as StructureInitializationStrategy;\r\n const targetIsElm = isHTMLElement(target);\r\n const targetStructureInitialization = target as StructureInitialization;\r\n const targetElement = targetIsElm ? (target as OSTargetElement) : targetStructureInitialization.target;\r\n const isTextarea = is(targetElement, 'textarea');\r\n const isBody = !isTextarea && is(targetElement, 'body');\r\n const ownerDocument: HTMLDocument = targetElement!.ownerDocument;\r\n const bodyElm = ownerDocument.body as HTMLBodyElement;\r\n const wnd = ownerDocument.defaultView as Window;\r\n const evaluatedTargetObj: PreparedOSTargetObject = {\r\n _target: targetElement,\r\n _host: isTextarea\r\n ? staticCreationFromStrategy(targetElement, targetStructureInitialization.host, hostInitializationStrategy, classNameHost)\r\n : (targetElement as HTMLElement),\r\n _viewport: staticCreationFromStrategy(targetElement, targetStructureInitialization.viewport, viewportInitializationStrategy, classNameViewport),\r\n _padding: dynamicCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.padding,\r\n paddingInitializationStrategy,\r\n classNamePadding,\r\n !_nativeScrollbarStyling // default value for padding\r\n ),\r\n _content: dynamicCreationFromStrategy(\r\n targetElement,\r\n targetStructureInitialization.content,\r\n contentInitializationStrategy,\r\n classNameContent,\r\n false // default value for content\r\n ),\r\n _viewportArrange: createUniqueViewportArrangeElement(),\r\n };\r\n const ctx: OSTargetContext = {\r\n _windowElm: wnd,\r\n _documentElm: ownerDocument,\r\n _htmlElm: parent(bodyElm) as HTMLHtmlElement,\r\n _bodyElm: bodyElm,\r\n _isTextarea: isTextarea,\r\n _isBody: isBody,\r\n _targetIsElm: targetIsElm,\r\n };\r\n const generatedElements = keys(evaluatedTargetObj).reduce((arr, key: string) => {\r\n const value = evaluatedTargetObj[key];\r\n return push(arr, value && !parent(value) ? value : false);\r\n }, [] as HTMLElement[]);\r\n const elementIsGenerated = (elm: HTMLElement | false) => (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([_content, _viewport, _padding, _host, _target].find((elm) => elementIsGenerated(elm) === false));\r\n const contentSlot = _content || _viewport;\r\n\r\n // only insert host for textarea after target if it was generated\r\n if (isTextareaHostGenerated) {\r\n insertAfter(_target, _host);\r\n\r\n push(destroyFns, () => {\r\n insertAfter(_host, _target);\r\n removeElements(_host);\r\n });\r\n }\r\n\r\n appendChildren(contentSlot, targetContents);\r\n appendChildren(_host, _padding);\r\n appendChildren(_padding || _host, _viewport);\r\n appendChildren(_viewport, _content);\r\n\r\n addClass(_host, classNameHost);\r\n addClass(_padding, classNamePadding);\r\n addClass(_viewport, classNameViewport);\r\n addClass(_content, classNameContent);\r\n\r\n push(destroyFns, () => {\r\n if (targetIsElm) {\r\n appendChildren(_host, contents(contentSlot));\r\n removeElements(_padding || _viewport);\r\n removeClass(_host, classNameHost);\r\n } else {\r\n if (elementIsGenerated(_content)) {\r\n unwrap(_content);\r\n }\r\n if (elementIsGenerated(_viewport)) {\r\n unwrap(_viewport);\r\n }\r\n if (elementIsGenerated(_padding)) {\r\n unwrap(_padding);\r\n }\r\n removeClass(_host, classNameHost);\r\n removeClass(_padding, classNamePadding);\r\n removeClass(_viewport, classNameViewport);\r\n removeClass(_content, classNameContent);\r\n }\r\n });\r\n\r\n if (_nativeScrollbarStyling) {\r\n push(destroyFns, removeClass.bind(0, _viewport, classNameViewportScrollbarStyling));\r\n }\r\n if (_viewportArrange) {\r\n insertBefore(_viewport, _viewportArrange);\r\n push(destroyFns, removeElements.bind(0, _viewportArrange));\r\n }\r\n\r\n return {\r\n _targetObj: evaluatedTargetObj,\r\n _targetCtx: ctx,\r\n _destroy: () => {\r\n runEach(destroyFns);\r\n },\r\n };\r\n};\r\n","import { appendChildren, createDiv, removeElements, isFunction } from 'support';\r\nimport {\r\n classNameScrollbar,\r\n classNameScrollbarHorizontal,\r\n classNameScrollbarVertical,\r\n classNameScrollbarTrack,\r\n classNameScrollbarHandle,\r\n} from 'classnames';\r\nimport { getEnvironment, ScrollbarsInitializationStrategy } from 'environment';\r\nimport { OSTarget, ScrollbarsInitialization } from 'typings';\r\nimport { StructureSetup } from 'setups/structureSetup';\r\n\r\nexport interface ScrollbarStructure {\r\n _scrollbar: HTMLElement;\r\n _track: HTMLElement;\r\n _handle: HTMLElement;\r\n}\r\n\r\nexport interface ScrollbarsSetup {\r\n _horizontalScrollbarStructure: ScrollbarStructure;\r\n _verticalScrollbarStructure: ScrollbarStructure;\r\n _destroy: () => void;\r\n}\r\n\r\nconst generateScrollbarDOM = (scrollbarClassName: string): ScrollbarStructure => {\r\n const scrollbar = createDiv(`${classNameScrollbar} ${scrollbarClassName}`);\r\n const track = createDiv(classNameScrollbarTrack);\r\n const handle = createDiv(classNameScrollbarHandle);\r\n\r\n appendChildren(scrollbar, track);\r\n appendChildren(track, handle);\r\n\r\n return {\r\n _scrollbar: scrollbar,\r\n _track: track,\r\n _handle: handle,\r\n };\r\n};\r\n\r\nexport const createScrollbarsSetup = (target: OSTarget | ScrollbarsInitialization, structureSetup: StructureSetup): ScrollbarsSetup => {\r\n const { _getInitializationStrategy } = getEnvironment();\r\n const { _scrollbarsSlot: environmentScrollbarSlot } = _getInitializationStrategy() as ScrollbarsInitializationStrategy;\r\n const { _targetObj, _targetCtx } = structureSetup;\r\n const { _target, _host, _viewport } = _targetObj;\r\n const initializationScrollbarSlot = !_targetCtx._targetIsElm && (target as ScrollbarsInitialization).scrollbarsSlot;\r\n const initializationScrollbarSlotResult = isFunction(initializationScrollbarSlot)\r\n ? initializationScrollbarSlot(_target, _host, _viewport)\r\n : initializationScrollbarSlot;\r\n const evaluatedScrollbarSlot =\r\n initializationScrollbarSlotResult ||\r\n (isFunction(environmentScrollbarSlot) ? environmentScrollbarSlot(_target, _host, _viewport) : environmentScrollbarSlot) ||\r\n _host;\r\n\r\n const horizontalScrollbarStructure = generateScrollbarDOM(classNameScrollbarHorizontal);\r\n const verticalScrollbarStructure = generateScrollbarDOM(classNameScrollbarVertical);\r\n\r\n const { _scrollbar: horizontalScrollbar } = horizontalScrollbarStructure;\r\n const { _scrollbar: verticalScrollbar } = verticalScrollbarStructure;\r\n\r\n appendChildren(evaluatedScrollbarSlot, horizontalScrollbar);\r\n appendChildren(evaluatedScrollbarSlot, verticalScrollbar);\r\n\r\n return {\r\n _horizontalScrollbarStructure: horizontalScrollbarStructure,\r\n _verticalScrollbarStructure: verticalScrollbarStructure,\r\n _destroy() {\r\n removeElements([horizontalScrollbar, verticalScrollbar]);\r\n },\r\n };\r\n};\r\n","import {\r\n Cache,\r\n CacheValues,\r\n createCache,\r\n createDOM,\r\n style,\r\n appendChildren,\r\n offsetSize,\r\n scrollLeft,\r\n scrollTop,\r\n runEach,\r\n prependChildren,\r\n removeElements,\r\n on,\r\n stopAndPrevent,\r\n addClass,\r\n equalWH,\r\n push,\r\n cAF,\r\n rAF,\r\n ResizeObserverConstructor,\r\n isArray,\r\n isBoolean,\r\n removeClass,\r\n isObject,\r\n} from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport {\r\n classNameSizeObserver,\r\n classNameSizeObserverAppear,\r\n classNameSizeObserverListener,\r\n classNameSizeObserverListenerScroll,\r\n classNameSizeObserverListenerItem,\r\n classNameSizeObserverListenerItemFinal,\r\n} from 'classnames';\r\n\r\nexport interface SizeObserverOptions {\r\n _direction?: boolean;\r\n _appear?: boolean;\r\n}\r\n\r\nexport interface SizeObserverCallbackParams {\r\n _sizeChanged: boolean;\r\n _directionIsRTLCache?: CacheValues;\r\n _appear?: boolean;\r\n}\r\n\r\nexport interface SizeObserver {\r\n _destroy(): void;\r\n _getCurrentCacheValues(\r\n force?: boolean\r\n ): {\r\n _directionIsRTL: CacheValues;\r\n };\r\n}\r\n\r\nconst animationStartEventName = 'animationstart';\r\nconst scrollEventName = 'scroll';\r\nconst scrollAmount = 3333333;\r\nconst getElmDirectionIsRTL = (elm: HTMLElement): boolean => style(elm, 'direction') === 'rtl';\r\nconst domRectHasDimensions = (rect?: DOMRectReadOnly) => rect && (rect.height || rect.width);\r\n\r\n/**\r\n * Creates a size observer which observes any size, padding, border, margin and box-sizing changes of the target element. Depending on the options also direction and appear can be observed.\r\n * @param target The target element which shall be observed.\r\n * @param onSizeChangedCallback The callback which gets called after a size change was detected.\r\n * @param options The options for size detection, whether to observe also direction and appear.\r\n * @returns A object which represents the instance of the size observer.\r\n */\r\nexport const createSizeObserver = (\r\n target: HTMLElement,\r\n onSizeChangedCallback: (params: SizeObserverCallbackParams) => any,\r\n options?: SizeObserverOptions\r\n): SizeObserver => {\r\n const { _direction: observeDirectionChange = false, _appear: observeAppearChange = false } =\r\n options || {};\r\n const { _rtlScrollBehavior: rtlScrollBehavior } = getEnvironment();\r\n const baseElements = createDOM(\r\n `
`\r\n );\r\n const sizeObserver = baseElements[0] as HTMLElement;\r\n const listenerElement = sizeObserver.firstChild as HTMLElement;\r\n const getIsDirectionRTL = getElmDirectionIsRTL.bind(0, sizeObserver);\r\n const [updateResizeObserverContentRectCache] = createCache<\r\n DOMRectReadOnly | undefined,\r\n DOMRectReadOnly\r\n >(0, {\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 0,\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(getIsDirectionRTL, {\r\n _initialValue: !getIsDirectionRTL(), // invert current value to trigger initial change\r\n });\r\n const [updateDirectionIsRTLCache] = directionIsRTLCache;\r\n\r\n push(\r\n offListeners,\r\n on(sizeObserver, scrollEventName, (event: Event) => {\r\n const directionIsRTLCacheValues = updateDirectionIsRTLCache();\r\n const [directionIsRTL, directionIsRTLChanged] = directionIsRTLCacheValues;\r\n\r\n if (directionIsRTLChanged) {\r\n removeClass(listenerElement, 'ltr rtl');\r\n if (directionIsRTL) {\r\n addClass(listenerElement, 'rtl');\r\n } else {\r\n addClass(listenerElement, 'ltr');\r\n }\r\n onSizeChangedCallbackProxy(directionIsRTLCacheValues);\r\n }\r\n\r\n stopAndPrevent(event);\r\n })\r\n );\r\n }\r\n\r\n // appearCallback is always needed on scroll-observer strategy to reset it\r\n if (appearCallback) {\r\n addClass(sizeObserver, classNameSizeObserverAppear);\r\n push(\r\n offListeners,\r\n on(sizeObserver, animationStartEventName, appearCallback, {\r\n // Fire only once for \"CSS is ready\" event if ResizeObserver strategy is used\r\n _once: !!ResizeObserverConstructor,\r\n })\r\n );\r\n }\r\n\r\n prependChildren(target, sizeObserver);\r\n\r\n return {\r\n _destroy() {\r\n runEach(offListeners);\r\n removeElements(sizeObserver);\r\n },\r\n _getCurrentCacheValues(force?: boolean) {\r\n return {\r\n _directionIsRTL: directionIsRTLCache\r\n ? directionIsRTLCache[1](force) // get current cache values\r\n : [false, false, false],\r\n };\r\n },\r\n };\r\n};\r\n","import {\r\n WH,\r\n CacheValues,\r\n createDiv,\r\n offsetSize,\r\n runEach,\r\n prependChildren,\r\n removeElements,\r\n createCache,\r\n push,\r\n IntersectionObserverConstructor,\r\n} from 'support';\r\nimport { createSizeObserver } from 'observers/sizeObserver';\r\nimport { classNameTrinsicObserver } from 'classnames';\r\n\r\nexport interface TrinsicObserver {\r\n _destroy(): void;\r\n _getCurrentCacheValues(\r\n force?: boolean\r\n ): {\r\n _heightIntrinsic: CacheValues;\r\n };\r\n}\r\n\r\n/**\r\n * Creates a trinsic observer which observes changes to intrinsic or extrinsic sizing for the height of the target element.\r\n * @param target The element which shall be observed.\r\n * @param onTrinsicChangedCallback The callback which gets called after a change was detected.\r\n * @returns A object which represents the instance of the trinsic observer.\r\n */\r\nexport const createTrinsicObserver = (\r\n target: HTMLElement,\r\n onTrinsicChangedCallback: (heightIntrinsic: CacheValues) => any\r\n): TrinsicObserver => {\r\n const trinsicObserver = createDiv(classNameTrinsicObserver);\r\n const offListeners: (() => void)[] = [];\r\n const [updateHeightIntrinsicCache, getCurrentHeightIntrinsicCache] = createCache<\r\n boolean,\r\n IntersectionObserverEntry | WH\r\n >(\r\n (ioEntryOrSize: IntersectionObserverEntry | WH) =>\r\n (ioEntryOrSize! as WH).h === 0 ||\r\n (ioEntryOrSize! as IntersectionObserverEntry).isIntersecting ||\r\n (ioEntryOrSize! as IntersectionObserverEntry).intersectionRatio > 0,\r\n {\r\n _initialValue: false,\r\n }\r\n );\r\n\r\n const triggerOnTrinsicChangedCallback = (\r\n updateValue?: IntersectionObserverEntry | WH\r\n ) => {\r\n if (updateValue) {\r\n const heightIntrinsic = updateHeightIntrinsicCache(0, updateValue);\r\n const [, heightIntrinsicChanged] = heightIntrinsic;\r\n\r\n if (heightIntrinsicChanged) {\r\n onTrinsicChangedCallback(heightIntrinsic);\r\n }\r\n }\r\n };\r\n\r\n if (IntersectionObserverConstructor) {\r\n const intersectionObserverInstance: IntersectionObserver = new IntersectionObserverConstructor(\r\n (entries: IntersectionObserverEntry[]) => {\r\n if (entries && entries.length > 0) {\r\n triggerOnTrinsicChangedCallback(entries.pop());\r\n }\r\n },\r\n { root: target }\r\n );\r\n intersectionObserverInstance.observe(trinsicObserver);\r\n push(offListeners, () => {\r\n intersectionObserverInstance.disconnect();\r\n });\r\n } else {\r\n const onSizeChanged = () => {\r\n const newSize = offsetSize(trinsicObserver);\r\n triggerOnTrinsicChangedCallback(newSize);\r\n };\r\n push(offListeners, createSizeObserver(trinsicObserver, onSizeChanged)._destroy);\r\n onSizeChanged();\r\n }\r\n\r\n prependChildren(target, trinsicObserver);\r\n\r\n return {\r\n _destroy() {\r\n runEach(offListeners);\r\n removeElements(trinsicObserver);\r\n },\r\n _getCurrentCacheValues(force?: boolean) {\r\n return {\r\n _heightIntrinsic: getCurrentHeightIntrinsicCache(force),\r\n };\r\n },\r\n };\r\n};\r\n","import { each, noop, debounce, indexOf, isString, MutationObserverConstructor, isEmptyArray, on, attr, is, find, push } from 'support';\r\n\r\ntype DOMContentObserverCallback = (contentChangedTroughEvent: boolean) => any;\r\n\r\ntype DOMTargetObserverCallback = (targetChangedAttrs: string[], targetStyleChanged: boolean) => any;\r\n\r\ninterface DOMObserverOptionsBase {\r\n _attributes?: string[];\r\n _styleChangingAttributes?: string[];\r\n}\r\n\r\ninterface DOMContentObserverOptions extends DOMObserverOptionsBase {\r\n _eventContentChange?: DOMObserverEventContentChange; // [selector, eventname(s) | function returning eventname(s)] -> eventnames divided by whitespaces\r\n _nestedTargetSelector?: string;\r\n _ignoreContentChange?: DOMObserverIgnoreContentChange; // function which will prevent marking certain dom changes as content change if it returns true\r\n _ignoreNestedTargetChange?: DOMObserverIgnoreTargetChange; // a function which will prevent marking certain attributes as changed on nested targets if it returns true\r\n}\r\n\r\ninterface DOMTargetObserverOptions extends DOMObserverOptionsBase {\r\n _ignoreTargetChange?: DOMObserverIgnoreTargetChange; // a function which will prevent marking certain attributes as changed if it returns true\r\n}\r\n\r\ntype ContentChangeArrayItem = [string?, string?] | null | undefined;\r\n\r\nexport type DOMObserverEventContentChange = Array | false | null | 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 ? DOMContentObserverOptions : DOMTargetObserverOptions;\r\n\r\nexport interface DOMObserver {\r\n _destroy: () => void;\r\n _update: () => void;\r\n}\r\n\r\n/**\r\n * Creates a set of helper functions to observe events of elements inside the target element.\r\n * @param target The target element of which the children elements shall be observed. (not only direct children but also nested ones)\r\n * @param eventContentChange The event content change array. (array of tuples: selector and eventname(s))\r\n * @param callback Callback which is called if one of the elements emits the corresponding event.\r\n * @returns A object which contains a set of helper functions to destroy and update the observation of elements.\r\n */\r\nconst createEventContentChange = (target: Element, callback: (...args: any) => any, eventContentChange?: DOMObserverEventContentChange) => {\r\n let map: WeakMap any]> | undefined; // weak map to prevent memory leak for detached elements\r\n let destroyed = false;\r\n const _destroy = () => {\r\n destroyed = true;\r\n };\r\n const _updateElements = (getElements?: (selector: string) => Node[]) => {\r\n if (eventContentChange) {\r\n const eventElmList = eventContentChange.reduce>((arr, item) => {\r\n if (item) {\r\n const selector = item[0];\r\n const eventNames = item[1];\r\n const elements = eventNames && selector && (getElements ? getElements(selector) : find(selector, target));\r\n\r\n if (elements && elements.length && eventNames && isString(eventNames)) {\r\n push(arr, [elements, eventNames.trim()], true);\r\n }\r\n }\r\n return arr;\r\n }, []);\r\n\r\n each(eventElmList, (item) =>\r\n each(item[0], (elm) => {\r\n const eventNames = item[1];\r\n const entry = map!.get(elm);\r\n\r\n if (entry) {\r\n const entryEventNames = entry[0];\r\n const entryOff = entry[1];\r\n\r\n // in case an already registered element is registered again, unregister the previous events\r\n if (entryEventNames === eventNames) {\r\n entryOff();\r\n }\r\n }\r\n\r\n const off = on(elm, eventNames, (event: Event) => {\r\n if (destroyed) {\r\n off();\r\n map!.delete(elm);\r\n } else {\r\n callback(event);\r\n }\r\n });\r\n map!.set(elm, [eventNames, off]);\r\n })\r\n );\r\n }\r\n };\r\n\r\n if (eventContentChange) {\r\n map = new WeakMap();\r\n _updateElements();\r\n }\r\n\r\n return {\r\n _destroy,\r\n _updateElements,\r\n };\r\n};\r\n\r\n/**\r\n * Creates a DOM observer which observes DOM changes to either the target element or its children.\r\n * @param target The element which shall be observed.\r\n * @param isContentObserver Whether this observer is just observing the target or just the targets children. (not only direct children but also nested ones)\r\n * @param callback The callback which gets called if a change was detected.\r\n * @param options The options for DOM change detection.\r\n * @returns A object which represents the instance of the DOM observer.\r\n */\r\nexport const createDOMObserver = (\r\n target: HTMLElement,\r\n isContentObserver: ContentObserver,\r\n callback: DOMObserverCallback,\r\n options?: DOMObserverOptions\r\n): DOMObserver => {\r\n let isConnected = false;\r\n const {\r\n _attributes,\r\n _styleChangingAttributes,\r\n _eventContentChange,\r\n _nestedTargetSelector,\r\n _ignoreTargetChange,\r\n _ignoreNestedTargetChange,\r\n _ignoreContentChange,\r\n } = (options as DOMContentObserverOptions & DOMTargetObserverOptions) || {};\r\n const { _destroy: destroyEventContentChange, _updateElements: 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 = (isContentObserver ? _ignoreNestedTargetChange : _ignoreTargetChange) || noop;\r\n const ignoreContentChange = _ignoreContentChange || noop;\r\n const targetChangedAttrs: string[] = [];\r\n const totalAddedNodes: Node[] = [];\r\n let targetStyleChanged = false;\r\n let contentChanged = false;\r\n let childListChanged = false;\r\n each(mutations, (mutation) => {\r\n const { attributeName, target: mutationTarget, type, oldValue, addedNodes } = mutation;\r\n const isAttributesType = type === 'attributes';\r\n const isChildListType = type === 'childList';\r\n const targetIsMutationTarget = target === mutationTarget;\r\n const attributeValue = isAttributesType && isString(attributeName) ? attr(mutationTarget as HTMLElement, attributeName!) : 0;\r\n const attributeChanged = attributeValue !== 0 && oldValue !== attributeValue;\r\n const styleChangingAttrChanged = 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 = contentAttrChanged && _nestedTargetSelector && is(mutationTarget, _nestedTargetSelector);\r\n const baseAssertion = isNestedTarget\r\n ? !ignoreTargetChange(mutationTarget, attributeName!, oldValue, attributeValue as string | null)\r\n : notOnlyAttrChanged || contentAttrChanged;\r\n const contentFinalChanged = 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 as string | null)\r\n ) {\r\n push(targetChangedAttrs, attributeName!);\r\n targetStyleChanged = targetStyleChanged || styleChangingAttrChanged;\r\n }\r\n });\r\n\r\n if (childListChanged && !isEmptyArray(totalAddedNodes)) {\r\n // adds / removes the new elements from the event content change\r\n updateEventContentChangeElements((selector) =>\r\n totalAddedNodes.reduce((arr, node) => {\r\n push(arr, find(selector, node));\r\n return is(node, selector) ? push(arr, node) : arr;\r\n }, [])\r\n );\r\n }\r\n\r\n if (isContentObserver) {\r\n contentChanged && (callback as DOMContentObserverCallback)(false);\r\n } else if (!isEmptyArray(targetChangedAttrs) || targetStyleChanged) {\r\n (callback as DOMTargetObserverCallback)(targetChangedAttrs, targetStyleChanged);\r\n }\r\n };\r\n const mutationObserver: MutationObserver = new MutationObserverConstructor!(observerCallback);\r\n\r\n // Connect\r\n mutationObserver.observe(target, {\r\n attributes: true,\r\n attributeOldValue: true,\r\n attributeFilter: observedAttributes,\r\n subtree: isContentObserver,\r\n childList: isContentObserver,\r\n characterData: isContentObserver,\r\n });\r\n isConnected = true;\r\n\r\n return {\r\n _destroy: () => {\r\n if (isConnected) {\r\n destroyEventContentChange();\r\n mutationObserver.disconnect();\r\n isConnected = false;\r\n }\r\n },\r\n _update: () => {\r\n if (isConnected) {\r\n observerCallback(mutationObserver.takeRecords());\r\n }\r\n },\r\n };\r\n};\r\n","import {\r\n CacheValues,\r\n diffClass,\r\n debounce,\r\n isArray,\r\n isNumber,\r\n each,\r\n indexOf,\r\n isString,\r\n attr,\r\n removeAttr,\r\n} from 'support';\r\nimport { getEnvironment } from 'environment';\r\nimport { createSizeObserver, SizeObserverCallbackParams } from 'observers/sizeObserver';\r\nimport { createTrinsicObserver } from 'observers/trinsicObserver';\r\nimport { createDOMObserver, DOMObserver } from 'observers/domObserver';\r\nimport { LifecycleHub, LifecycleCheckOption, LifecycleUpdateHints } from 'lifecycles/lifecycleHub';\r\n\r\n// const hostSelector = `.${classNameHost}`;\r\n\r\n// TODO: observer textarea attrs if textarea\r\n// TODO: test _ignoreContentChange & _ignoreNestedTargetChange for content dom observer\r\n// TODO: test _ignoreTargetChange for target dom observer\r\n\r\n// const viewportSelector = `.${classNameViewport}`;\r\n// const contentSelector = `.${classNameContent}`;\r\nconst ignorePrefix = 'os-';\r\nconst viewportAttrsFromTarget = ['tabindex'];\r\nconst baseStyleChangingAttrsTextarea = ['wrap', 'cols', 'rows'];\r\nconst baseStyleChangingAttrs = ['id', 'class', 'style', 'open'];\r\n\r\nconst ignoreTargetChange = (\r\n target: Node,\r\n attrName: string,\r\n oldValue: string | null,\r\n newValue: string | null\r\n) => {\r\n if (attrName === 'class' && oldValue && newValue) {\r\n const diff = diffClass(oldValue, newValue);\r\n return !!diff.find((addedOrRemovedClass) => addedOrRemovedClass.indexOf(ignorePrefix) !== 0);\r\n }\r\n return false;\r\n};\r\n\r\nexport const lifecycleHubOservers = (\r\n instance: LifecycleHub,\r\n updateLifecycles: (updateHints?: Partial | null) => unknown\r\n) => {\r\n let debounceTimeout: number | false | undefined;\r\n let debounceMaxDelay: number | false | undefined;\r\n let contentMutationObserver: DOMObserver | undefined;\r\n const { _structureSetup } = instance;\r\n const { _targetObj, _targetCtx } = _structureSetup;\r\n const { _host, _viewport, _content } = _targetObj;\r\n const { _isTextarea } = _targetCtx;\r\n const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment();\r\n const contentMutationObserverAttr = _isTextarea\r\n ? baseStyleChangingAttrsTextarea\r\n : baseStyleChangingAttrs.concat(baseStyleChangingAttrsTextarea);\r\n const updateLifecyclesWithDebouncedAdaptiveUpdateHints = debounce(\r\n updateLifecycles as (updateHints: Partial) => any,\r\n {\r\n _timeout: () => debounceTimeout,\r\n _maxDelay: () => debounceMaxDelay,\r\n _mergeParams(prev, curr) {\r\n const {\r\n _sizeChanged: prevSizeChanged,\r\n _hostMutation: prevHostMutation,\r\n _contentMutation: prevContentMutation,\r\n } = prev[0];\r\n const {\r\n _sizeChanged: currSizeChanged,\r\n _hostMutation: currvHostMutation,\r\n _contentMutation: currContentMutation,\r\n } = curr[0];\r\n const merged: [Partial] = [\r\n {\r\n _sizeChanged: prevSizeChanged || currSizeChanged,\r\n _hostMutation: prevHostMutation || currvHostMutation,\r\n _contentMutation: prevContentMutation || currContentMutation,\r\n },\r\n ];\r\n\r\n return merged;\r\n },\r\n }\r\n );\r\n\r\n const updateViewportAttrsFromHost = (attributes?: string[]) => {\r\n each(attributes || viewportAttrsFromTarget, (attribute) => {\r\n if (indexOf(viewportAttrsFromTarget, attribute) > -1) {\r\n const hostAttr = attr(_host, attribute);\r\n if (isString(hostAttr)) {\r\n attr(_viewport, attribute, hostAttr);\r\n } else {\r\n removeAttr(_viewport, attribute);\r\n }\r\n }\r\n });\r\n };\r\n const onTrinsicChanged = (heightIntrinsic: CacheValues) => {\r\n updateLifecycles({\r\n _heightIntrinsic: heightIntrinsic,\r\n });\r\n };\r\n const onSizeChanged = ({\r\n _sizeChanged,\r\n _directionIsRTLCache,\r\n _appear,\r\n }: SizeObserverCallbackParams) => {\r\n const updateFn =\r\n !_sizeChanged || _appear\r\n ? updateLifecycles\r\n : updateLifecyclesWithDebouncedAdaptiveUpdateHints;\r\n updateFn({\r\n _sizeChanged,\r\n _directionIsRTL: _directionIsRTLCache,\r\n });\r\n };\r\n const onContentMutation = (contentChangedTroughEvent: boolean) => {\r\n // if contentChangedTroughEvent is true its already debounced\r\n const updateFn = contentChangedTroughEvent\r\n ? updateLifecycles\r\n : updateLifecyclesWithDebouncedAdaptiveUpdateHints;\r\n updateFn({\r\n _contentMutation: true,\r\n });\r\n };\r\n const onHostMutation = (targetChangedAttrs: string[], targetStyleChanged: boolean) => {\r\n if (targetStyleChanged) {\r\n updateLifecyclesWithDebouncedAdaptiveUpdateHints({\r\n _hostMutation: true,\r\n });\r\n } else {\r\n updateViewportAttrsFromHost(targetChangedAttrs);\r\n }\r\n };\r\n\r\n const trinsicObserver =\r\n (_content || !_flexboxGlue) && createTrinsicObserver(_host, onTrinsicChanged);\r\n const sizeObserver = createSizeObserver(_host, onSizeChanged, {\r\n _appear: true,\r\n _direction: !_nativeScrollbarStyling,\r\n });\r\n const hostMutationObserver = createDOMObserver(_host, false, onHostMutation, {\r\n _styleChangingAttributes: baseStyleChangingAttrs,\r\n _attributes: baseStyleChangingAttrs.concat(viewportAttrsFromTarget),\r\n _ignoreTargetChange: ignoreTargetChange,\r\n });\r\n\r\n const updateOptions = (checkOption: LifecycleCheckOption) => {\r\n const [elementEvents, elementEventsChanged] = checkOption | null>(\r\n 'updating.elementEvents'\r\n );\r\n const [attributes, attributesChanged] = checkOption('updating.attributes');\r\n const [debounceValue, debounceChanged] = checkOption | number | null>(\r\n 'updating.debounce'\r\n );\r\n const updateContentMutationObserver = elementEventsChanged || attributesChanged;\r\n\r\n if (updateContentMutationObserver) {\r\n if (contentMutationObserver) {\r\n contentMutationObserver._update();\r\n contentMutationObserver._destroy();\r\n }\r\n contentMutationObserver = createDOMObserver(_content || _viewport, true, onContentMutation, {\r\n _styleChangingAttributes: contentMutationObserverAttr.concat(attributes || []),\r\n _attributes: contentMutationObserverAttr.concat(attributes || []),\r\n _eventContentChange: elementEvents,\r\n _ignoreNestedTargetChange: ignoreTargetChange,\r\n // _nestedTargetSelector: hostSelector,\r\n /*\r\n _ignoreContentChange: (mutation, isNestedTarget) => {\r\n const { target, attributeName } = mutation;\r\n return isNestedTarget\r\n ? false\r\n : attributeName\r\n ? liesBetween(target as Element, hostSelector, viewportSelector) || liesBetween(target as Element, hostSelector, contentSelector)\r\n : false;\r\n },\r\n */\r\n });\r\n }\r\n\r\n if (debounceChanged) {\r\n updateLifecyclesWithDebouncedAdaptiveUpdateHints._flush();\r\n if (isArray(debounceValue)) {\r\n const timeout = debounceValue[0];\r\n const maxWait = debounceValue[1];\r\n debounceTimeout = isNumber(timeout) ? timeout : false;\r\n debounceMaxDelay = isNumber(maxWait) ? maxWait : false;\r\n } else if (isNumber(debounceValue)) {\r\n debounceTimeout = debounceValue;\r\n debounceMaxDelay = false;\r\n } else {\r\n debounceTimeout = false;\r\n debounceMaxDelay = false;\r\n }\r\n }\r\n };\r\n\r\n updateViewportAttrsFromHost();\r\n\r\n return {\r\n _trinsicObserver: trinsicObserver,\r\n _sizeObserver: sizeObserver,\r\n _updateObserverOptions: updateOptions,\r\n _destroy() {\r\n contentMutationObserver && contentMutationObserver._destroy();\r\n trinsicObserver && trinsicObserver._destroy();\r\n sizeObserver._destroy();\r\n hostMutationObserver._destroy();\r\n },\r\n };\r\n};\r\n","import { style } from 'support';\r\nimport { LifecycleHub, Lifecycle } from 'lifecycles/lifecycleHub';\r\n\r\n/**\r\n * Lifecycle with the responsibility to adjust the trinsic behavior of the content element.\r\n * @param lifecycleHub\r\n * @returns\r\n */\r\nexport const createTrinsicLifecycle = (lifecycleHub: LifecycleHub): Lifecycle => {\r\n const { _structureSetup } = lifecycleHub;\r\n const { _content } = _structureSetup._targetObj;\r\n\r\n return (updateHints) => {\r\n const { _heightIntrinsic } = updateHints;\r\n const [heightIntrinsic, heightIntrinsicChanged] = _heightIntrinsic;\r\n\r\n if (heightIntrinsicChanged) {\r\n style(_content, {\r\n height: heightIntrinsic ? '' : '100%',\r\n display: heightIntrinsic ? '' : 'inline',\r\n });\r\n }\r\n\r\n return {\r\n _sizeChanged: heightIntrinsicChanged,\r\n _contentMutation: heightIntrinsicChanged,\r\n };\r\n };\r\n};\r\n","import { createCache, topRightBottomLeft, equalTRBL, style, TRBL } from 'support';\r\nimport { LifecycleHub, Lifecycle } from 'lifecycles/lifecycleHub';\r\nimport { StyleObject } from 'typings';\r\nimport { getEnvironment } from 'environment';\r\n\r\n/**\r\n * Lifecycle with the responsibility to adjust the padding styling of the padding and viewport element.\r\n * @param lifecycleHub\r\n * @returns\r\n */\r\nexport const createPaddingLifecycle = (lifecycleHub: LifecycleHub): Lifecycle => {\r\n const { _structureSetup, _setLifecycleCommunication } = lifecycleHub;\r\n const { _host, _padding, _viewport } = _structureSetup._targetObj;\r\n const [updatePaddingCache, currentPaddingCache] = createCache(\r\n topRightBottomLeft.bind(0, _host, 'padding'),\r\n {\r\n _equal: equalTRBL,\r\n _initialValue: topRightBottomLeft(),\r\n }\r\n );\r\n\r\n return (updateHints, checkOption, force) => {\r\n let [padding, paddingChanged] = currentPaddingCache(force);\r\n const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment();\r\n const { _sizeChanged, _directionIsRTL, _contentMutation } = updateHints;\r\n const [directionIsRTL, directionChanged] = _directionIsRTL;\r\n const [paddingAbsolute, paddingAbsoluteChanged] = checkOption('paddingAbsolute');\r\n const contentMutation = !_flexboxGlue && _contentMutation;\r\n\r\n if (_sizeChanged || paddingChanged || contentMutation) {\r\n [padding, paddingChanged] = updatePaddingCache(force);\r\n }\r\n\r\n const paddingStyleChanged = paddingAbsoluteChanged || directionChanged || paddingChanged;\r\n\r\n if (paddingStyleChanged) {\r\n // if there is no padding element and no scrollbar styling, paddingAbsolute isn't supported\r\n const paddingRelative = !paddingAbsolute || (!_padding && !_nativeScrollbarStyling);\r\n const paddingHorizontal = padding!.r + padding!.l;\r\n const paddingVertical = padding!.t + padding!.b;\r\n\r\n const paddingStyle: StyleObject = {\r\n marginRight: paddingRelative && !directionIsRTL ? -paddingHorizontal : 0,\r\n marginBottom: paddingRelative ? -paddingVertical : 0,\r\n marginLeft: paddingRelative && directionIsRTL ? -paddingHorizontal : 0,\r\n top: paddingRelative ? -padding!.t : 0,\r\n right: paddingRelative ? (directionIsRTL ? -padding!.r : 'auto') : 0,\r\n left: paddingRelative ? (directionIsRTL ? 'auto' : -padding!.l) : 0,\r\n width: paddingRelative ? `calc(100% + ${paddingHorizontal}px)` : '',\r\n };\r\n const viewportStyle: StyleObject = {\r\n paddingTop: paddingRelative ? padding!.t : 0,\r\n paddingRight: paddingRelative ? padding!.r : 0,\r\n paddingBottom: paddingRelative ? padding!.b : 0,\r\n paddingLeft: paddingRelative ? padding!.l : 0,\r\n };\r\n\r\n // if there is no padding element apply the style to the viewport element instead\r\n style(_padding || _viewport, paddingStyle);\r\n style(_viewport, viewportStyle);\r\n\r\n _setLifecycleCommunication({\r\n _paddingInfo: {\r\n _absolute: !paddingRelative,\r\n _padding: padding!,\r\n },\r\n _viewportPaddingStyle: _padding\r\n ? viewportStyle\r\n : {\r\n ...paddingStyle,\r\n ...viewportStyle,\r\n },\r\n });\r\n }\r\n\r\n return {\r\n _paddingStyleChanged: paddingStyleChanged,\r\n };\r\n };\r\n};\r\n","import {\r\n createCache,\r\n keys,\r\n attr,\r\n WH,\r\n XY,\r\n style,\r\n scrollSize,\r\n CacheValues,\r\n equalWH,\r\n addClass,\r\n removeClass,\r\n clientSize,\r\n offsetSize,\r\n getBoundingClientRect,\r\n noop,\r\n each,\r\n} from 'support';\r\nimport { LifecycleHub, Lifecycle } from 'lifecycles/lifecycleHub';\r\nimport { getEnvironment } from 'environment';\r\nimport { OverflowBehavior } from 'options';\r\nimport { StyleObject } from 'typings';\r\nimport { classNameViewportArrange, classNameViewportScrollbarStyling } from 'classnames';\r\n\r\ninterface OverflowAmountCacheContext {\r\n _viewportScrollSize: WH;\r\n _viewportClientSize: WH;\r\n _viewportSizeFraction: WH;\r\n}\r\n\r\ninterface ViewportOverflowState {\r\n _scrollbarsHideOffset: XY;\r\n _scrollbarsHideOffsetArrange: XY;\r\n _overflowScroll: XY;\r\n}\r\n\r\ninterface UndoViewportArrangeResult {\r\n _redoViewportArrange: () => void;\r\n _viewportOverflowState?: ViewportOverflowState;\r\n}\r\n\r\ninterface OverflowOption {\r\n x: OverflowBehavior;\r\n y: OverflowBehavior;\r\n}\r\n\r\nconst { max, abs, round } = Math;\r\nconst overlaidScrollbarsHideOffset = 42;\r\nconst whCacheOptions = {\r\n _equal: equalWH,\r\n _initialValue: { w: 0, h: 0 },\r\n};\r\nconst sizeFraction = (elm: HTMLElement): WH => {\r\n const viewportOffsetSize = offsetSize(elm);\r\n const viewportRect = getBoundingClientRect(elm);\r\n return {\r\n w: viewportRect.width - viewportOffsetSize.w,\r\n h: viewportRect.height - viewportOffsetSize.h,\r\n };\r\n};\r\nconst fractionalPixelRatioTollerance = () => (window.devicePixelRatio % 1 === 0 ? 0 : 1);\r\nconst setAxisOverflowStyle = (\r\n horizontal: boolean,\r\n overflowAmount: number,\r\n behavior: OverflowBehavior,\r\n styleObj: StyleObject\r\n) => {\r\n const overflowKey: keyof StyleObject = horizontal ? 'overflowX' : 'overflowY';\r\n const behaviorIsVisible = behavior.indexOf('visible') === 0;\r\n const behaviorIsVisibleHidden = behavior === 'visible-hidden';\r\n const behaviorIsScroll = behavior === 'scroll';\r\n const hasOverflow = overflowAmount > 0;\r\n\r\n if (behaviorIsVisible) {\r\n styleObj[overflowKey] = 'visible';\r\n }\r\n if (behaviorIsScroll && hasOverflow) {\r\n styleObj[overflowKey] = behavior;\r\n }\r\n\r\n return {\r\n _visible: behaviorIsVisible,\r\n _behavior: behaviorIsVisibleHidden ? 'hidden' : 'scroll',\r\n };\r\n};\r\n\r\n/**\r\n * Lifecycle with the responsibility to set the correct overflow and scrollbar hiding styles of the viewport element.\r\n * @param lifecycleHub\r\n * @returns\r\n */\r\nexport const createOverflowLifecycle = (lifecycleHub: LifecycleHub): Lifecycle => {\r\n const {\r\n _structureSetup,\r\n _doViewportArrange,\r\n _getLifecycleCommunication,\r\n _setLifecycleCommunication,\r\n } = lifecycleHub;\r\n\r\n const { _host, _viewport, _viewportArrange } = _structureSetup._targetObj;\r\n\r\n const [updateViewportSizeFraction, getCurrentViewportSizeFraction] = createCache>(\r\n sizeFraction.bind(0, _viewport),\r\n whCacheOptions\r\n );\r\n\r\n const [updateViewportScrollSizeCache, getCurrentViewportScrollSizeCache] = createCache<\r\n WH\r\n >(scrollSize.bind(0, _viewport), whCacheOptions);\r\n\r\n const [updateOverflowAmountCache, getCurrentOverflowAmountCache] = createCache<\r\n WH,\r\n OverflowAmountCacheContext\r\n >(\r\n ({ _viewportScrollSize, _viewportClientSize, _viewportSizeFraction }) => ({\r\n w: max(\r\n 0,\r\n round(\r\n max(0, _viewportScrollSize.w - _viewportClientSize.w) -\r\n (fractionalPixelRatioTollerance() || max(0, _viewportSizeFraction.w))\r\n )\r\n ),\r\n h: max(\r\n 0,\r\n round(\r\n max(0, _viewportScrollSize.h - _viewportClientSize.h) -\r\n (fractionalPixelRatioTollerance() || max(0, _viewportSizeFraction.h))\r\n )\r\n ),\r\n }),\r\n whCacheOptions\r\n );\r\n\r\n /**\r\n * Applies a fixed height to the viewport so it can't overflow or underflow the host element.\r\n * @param viewportOverflowState The current overflow state.\r\n * @param heightIntrinsic Whether the host height is intrinsic or not.\r\n */\r\n const fixFlexboxGlue = (\r\n viewportOverflowState: ViewportOverflowState,\r\n heightIntrinsic: boolean\r\n ) => {\r\n style(_viewport, {\r\n height: '',\r\n });\r\n\r\n if (heightIntrinsic) {\r\n const { _nativeScrollbarIsOverlaid } = getEnvironment();\r\n const {\r\n _absolute: paddingAbsolute,\r\n _padding: padding,\r\n } = _getLifecycleCommunication()._paddingInfo;\r\n const { _overflowScroll, _scrollbarsHideOffset } = viewportOverflowState;\r\n const hostSizeFraction = sizeFraction(_host);\r\n const hostClientSize = clientSize(_host);\r\n // padding subtraction is only needed if padding is absolute or if viewport is content-box\r\n const isContentBox = style(_viewport, 'boxSizing') === 'content-box';\r\n const paddingVertical = paddingAbsolute || isContentBox ? padding.b + padding.t : 0;\r\n const fractionalClientHeight =\r\n hostClientSize.h + (abs(hostSizeFraction.h) < 1 ? hostSizeFraction.h : 0);\r\n const subtractXScrollbar = !(_nativeScrollbarIsOverlaid.x && isContentBox);\r\n\r\n style(_viewport, {\r\n height:\r\n fractionalClientHeight +\r\n (_overflowScroll.x && subtractXScrollbar ? _scrollbarsHideOffset.x : 0) -\r\n paddingVertical,\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Gets the current overflow state of the viewport.\r\n * @param showNativeOverlaidScrollbars Whether native overlaid scrollbars are shown instead of hidden.\r\n * @param viewportStyleObj The viewport style object where the overflow scroll property can be read of, or undefined if shall be determined.\r\n * @returns A object which contains informations about the current overflow state.\r\n */\r\n const getViewportOverflowState = (\r\n showNativeOverlaidScrollbars: boolean,\r\n viewportStyleObj?: StyleObject\r\n ): ViewportOverflowState => {\r\n const {\r\n _nativeScrollbarSize,\r\n _nativeScrollbarIsOverlaid,\r\n _nativeScrollbarStyling,\r\n } = getEnvironment();\r\n const { x: overlaidX, y: overlaidY } = _nativeScrollbarIsOverlaid;\r\n const determineOverflow = !viewportStyleObj;\r\n const arrangeHideOffset =\r\n !_nativeScrollbarStyling && !showNativeOverlaidScrollbars ? overlaidScrollbarsHideOffset : 0;\r\n const styleObj = determineOverflow\r\n ? style(_viewport, ['overflowX', 'overflowY'])\r\n : viewportStyleObj;\r\n const scroll = {\r\n x: styleObj!.overflowX === 'scroll',\r\n y: styleObj!.overflowY === 'scroll',\r\n };\r\n const scrollbarsHideOffset = {\r\n x:\r\n scroll.x && !_nativeScrollbarStyling\r\n ? overlaidX\r\n ? arrangeHideOffset\r\n : _nativeScrollbarSize.x\r\n : 0,\r\n y:\r\n scroll.y && !_nativeScrollbarStyling\r\n ? overlaidY\r\n ? arrangeHideOffset\r\n : _nativeScrollbarSize.y\r\n : 0,\r\n };\r\n\r\n return {\r\n _overflowScroll: scroll,\r\n _scrollbarsHideOffsetArrange: {\r\n x: overlaidX && !!arrangeHideOffset,\r\n y: overlaidY && !!arrangeHideOffset,\r\n },\r\n _scrollbarsHideOffset: scrollbarsHideOffset,\r\n };\r\n };\r\n\r\n /**\r\n * Sets the overflow property of the viewport and calculates the a overflow state according to the new parameters.\r\n * @param showNativeOverlaidScrollbars Whether to show natively overlaid scrollbars.\r\n * @param overflowAmount The overflow amount.\r\n * @param overflow The overflow behavior according to the options.\r\n * @param viewportStyleObj The viewport style object to which the overflow style shall be applied.\r\n * @returns A object which represents the newly set overflow state.\r\n */\r\n const setViewportOverflowState = (\r\n showNativeOverlaidScrollbars: boolean,\r\n overflowAmount: WH,\r\n overflow: OverflowOption,\r\n viewportStyleObj: StyleObject\r\n ): ViewportOverflowState => {\r\n const { _visible: xVisible, _behavior: xVisibleBehavior } = setAxisOverflowStyle(\r\n true,\r\n overflowAmount!.w,\r\n overflow.x,\r\n viewportStyleObj\r\n );\r\n const { _visible: yVisible, _behavior: yVisibleBehavior } = setAxisOverflowStyle(\r\n false,\r\n overflowAmount!.h,\r\n overflow.y,\r\n viewportStyleObj\r\n );\r\n\r\n if (xVisible && !yVisible) {\r\n viewportStyleObj.overflowX = xVisibleBehavior;\r\n }\r\n if (yVisible && !xVisible) {\r\n viewportStyleObj.overflowY = yVisibleBehavior;\r\n }\r\n\r\n return getViewportOverflowState(showNativeOverlaidScrollbars, viewportStyleObj);\r\n };\r\n\r\n /**\r\n * Sets the styles of the viewport arrange element.\r\n * @param viewportOverflowState The viewport overflow state according to which the scrollbars shall be hidden.\r\n * @param viewportScrollSize The content scroll size.\r\n * @param directionIsRTL Whether the direction is RTL or not.\r\n * @returns A boolean which indicates whether the viewport arrange element was adjusted.\r\n */\r\n const arrangeViewport = (\r\n viewportOverflowState: ViewportOverflowState,\r\n viewportScrollSize: WH,\r\n viewportSizeFraction: WH,\r\n directionIsRTL: boolean\r\n ) => {\r\n if (_doViewportArrange) {\r\n const { _scrollbarsHideOffset, _scrollbarsHideOffsetArrange } = viewportOverflowState;\r\n const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange;\r\n const { x: hideOffsetX, y: hideOffsetY } = _scrollbarsHideOffset;\r\n const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication();\r\n const viewportArrangeHorizontalPaddingKey: keyof StyleObject = directionIsRTL\r\n ? 'paddingRight'\r\n : 'paddingLeft';\r\n const viewportArrangeHorizontalPaddingValue = viewportPaddingStyle[\r\n viewportArrangeHorizontalPaddingKey\r\n ] as number;\r\n const viewportArrangeVerticalPaddingValue = viewportPaddingStyle.paddingTop as number;\r\n const fractionalContentWidth =\r\n viewportScrollSize.w + (abs(viewportSizeFraction.w) < 1 ? viewportSizeFraction.w : 0);\r\n const fractionalContenHeight =\r\n viewportScrollSize.h + (abs(viewportSizeFraction.h) < 1 ? viewportSizeFraction.h : 0);\r\n const arrangeSize = {\r\n w:\r\n hideOffsetY && arrangeY\r\n ? `${hideOffsetY + fractionalContentWidth - viewportArrangeHorizontalPaddingValue}px`\r\n : '',\r\n h:\r\n hideOffsetX && arrangeX\r\n ? `${hideOffsetX + fractionalContenHeight - viewportArrangeVerticalPaddingValue}px`\r\n : '',\r\n };\r\n\r\n // adjust content arrange / before element\r\n if (_viewportArrange) {\r\n const { sheet } = _viewportArrange;\r\n if (sheet) {\r\n const { cssRules } = sheet;\r\n if (cssRules) {\r\n if (!cssRules.length) {\r\n sheet.insertRule(\r\n `#${attr(_viewportArrange, 'id')} + .${classNameViewportArrange}::before {}`,\r\n 0\r\n );\r\n }\r\n\r\n // @ts-ignore\r\n const ruleStyle = cssRules[0].style;\r\n\r\n ruleStyle.width = arrangeSize.w;\r\n ruleStyle.height = arrangeSize.h;\r\n }\r\n }\r\n } else {\r\n style<'--os-vaw' | '--os-vah'>(_viewport, {\r\n '--os-vaw': arrangeSize.w,\r\n '--os-vah': arrangeSize.h,\r\n });\r\n }\r\n }\r\n\r\n return _doViewportArrange;\r\n };\r\n\r\n /**\r\n * Hides the native scrollbars according to the passed parameters.\r\n * @param viewportOverflowState The viewport overflow state.\r\n * @param directionIsRTL Whether the direction is RTL or not.\r\n * @param viewportArrange Whether special styles related to the viewport arrange strategy shall be applied.\r\n * @param viewportStyleObj The viewport style object to which the needed styles shall be applied.\r\n */\r\n const hideNativeScrollbars = (\r\n viewportOverflowState: ViewportOverflowState,\r\n directionIsRTL: boolean,\r\n viewportArrange: boolean,\r\n viewportStyleObj: StyleObject\r\n ) => {\r\n const { _scrollbarsHideOffset, _scrollbarsHideOffsetArrange } = viewportOverflowState;\r\n const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange;\r\n const { x: hideOffsetX, y: hideOffsetY } = _scrollbarsHideOffset;\r\n const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication();\r\n const horizontalMarginKey: keyof StyleObject = directionIsRTL ? 'marginLeft' : 'marginRight';\r\n const viewportHorizontalPaddingKey: keyof StyleObject = directionIsRTL\r\n ? 'paddingLeft'\r\n : 'paddingRight';\r\n const horizontalMarginValue = viewportPaddingStyle[horizontalMarginKey] as number;\r\n const verticalMarginValue = viewportPaddingStyle.marginBottom as number;\r\n const horizontalPaddingValue = viewportPaddingStyle[viewportHorizontalPaddingKey] as number;\r\n const verticalPaddingValue = viewportPaddingStyle.paddingBottom as number;\r\n\r\n // horizontal\r\n viewportStyleObj.width = `calc(100% + ${hideOffsetY + horizontalMarginValue * -1}px)`;\r\n viewportStyleObj[horizontalMarginKey] = -hideOffsetY + horizontalMarginValue;\r\n\r\n // vertical\r\n viewportStyleObj.marginBottom = -hideOffsetX + verticalMarginValue;\r\n\r\n // viewport arrange additional styles\r\n if (viewportArrange) {\r\n viewportStyleObj[viewportHorizontalPaddingKey] =\r\n horizontalPaddingValue + (arrangeY ? hideOffsetY : 0);\r\n viewportStyleObj.paddingBottom = verticalPaddingValue + (arrangeX ? hideOffsetX : 0);\r\n }\r\n };\r\n\r\n /**\r\n * Removes all styles applied because of the viewport arrange strategy.\r\n * @param showNativeOverlaidScrollbars Whether native overlaid scrollbars are shown instead of hidden.\r\n * @param directionIsRTL Whether the direction is RTL or not.\r\n * @param viewportOverflowState The currentviewport overflow state or undefined if it has to be determined.\r\n * @returns A object with a function which applies all the removed styles and the determined viewport vverflow state.\r\n */\r\n const undoViewportArrange = (\r\n showNativeOverlaidScrollbars: boolean,\r\n directionIsRTL: boolean,\r\n viewportOverflowState?: ViewportOverflowState\r\n ): UndoViewportArrangeResult => {\r\n if (_doViewportArrange) {\r\n const finalViewportOverflowState =\r\n viewportOverflowState || getViewportOverflowState(showNativeOverlaidScrollbars);\r\n const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication();\r\n const { _flexboxGlue } = getEnvironment();\r\n const { _scrollbarsHideOffsetArrange } = finalViewportOverflowState;\r\n const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange;\r\n const finalPaddingStyle: StyleObject = {};\r\n const assignProps = (props: string) =>\r\n each(props.split(' '), (prop) => {\r\n finalPaddingStyle[prop] = viewportPaddingStyle[prop];\r\n });\r\n\r\n if (!_flexboxGlue) {\r\n finalPaddingStyle.height = '';\r\n }\r\n\r\n if (arrangeX) {\r\n assignProps('marginBottom paddingTop paddingBottom');\r\n }\r\n\r\n if (arrangeY) {\r\n assignProps('marginLeft marginRight paddingLeft paddingRight');\r\n }\r\n\r\n const prevStyle = style(_viewport, keys(finalPaddingStyle));\r\n removeClass(_viewport, classNameViewportArrange);\r\n style(_viewport, finalPaddingStyle);\r\n\r\n return {\r\n _redoViewportArrange: () => {\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 _viewportOverflowState: finalViewportOverflowState,\r\n };\r\n }\r\n return {\r\n _redoViewportArrange: noop,\r\n };\r\n };\r\n\r\n return (updateHints, checkOption, force) => {\r\n const {\r\n _directionIsRTL,\r\n _heightIntrinsic,\r\n _sizeChanged,\r\n _hostMutation,\r\n _contentMutation,\r\n _paddingStyleChanged,\r\n } = updateHints;\r\n const { _flexboxGlue, _nativeScrollbarStyling, _nativeScrollbarIsOverlaid } = getEnvironment();\r\n const [heightIntrinsic, heightIntrinsicChanged] = _heightIntrinsic;\r\n const [directionIsRTL, directionChanged] = _directionIsRTL;\r\n const [showNativeOverlaidScrollbarsOption, showNativeOverlaidScrollbarsChanged] = checkOption<\r\n boolean\r\n >('nativeScrollbarsOverlaid.show');\r\n const showNativeOverlaidScrollbars =\r\n showNativeOverlaidScrollbarsOption &&\r\n _nativeScrollbarIsOverlaid.x &&\r\n _nativeScrollbarIsOverlaid.y;\r\n const adjustFlexboxGlue =\r\n !_flexboxGlue &&\r\n (_sizeChanged ||\r\n _contentMutation ||\r\n _hostMutation ||\r\n showNativeOverlaidScrollbarsChanged ||\r\n heightIntrinsicChanged);\r\n\r\n let viewportSizeFractionCache: CacheValues> = getCurrentViewportSizeFraction(force);\r\n let viewportScrollSizeCache: CacheValues> = getCurrentViewportScrollSizeCache(force);\r\n let overflowAmuntCache: CacheValues> = getCurrentOverflowAmountCache(force);\r\n let preMeasureViewportOverflowState: ViewportOverflowState | undefined;\r\n\r\n if (showNativeOverlaidScrollbarsChanged && _nativeScrollbarStyling) {\r\n if (showNativeOverlaidScrollbars) {\r\n removeClass(_viewport, classNameViewportScrollbarStyling);\r\n } else {\r\n addClass(_viewport, classNameViewportScrollbarStyling);\r\n }\r\n }\r\n\r\n if (adjustFlexboxGlue) {\r\n preMeasureViewportOverflowState = getViewportOverflowState(showNativeOverlaidScrollbars);\r\n fixFlexboxGlue(preMeasureViewportOverflowState, !!heightIntrinsic);\r\n }\r\n\r\n if (\r\n _sizeChanged ||\r\n _paddingStyleChanged ||\r\n _contentMutation ||\r\n showNativeOverlaidScrollbarsChanged ||\r\n directionChanged\r\n ) {\r\n const {\r\n _redoViewportArrange,\r\n _viewportOverflowState: undoViewportArrangeOverflowState,\r\n } = undoViewportArrange(\r\n showNativeOverlaidScrollbars,\r\n directionIsRTL!,\r\n preMeasureViewportOverflowState\r\n );\r\n const [\r\n viewportSizeFraction,\r\n viewportSizeFractionCahnged,\r\n ] = (viewportSizeFractionCache = updateViewportSizeFraction(force));\r\n const [\r\n viewportScrollSize,\r\n viewportScrollSizeChanged,\r\n ] = (viewportScrollSizeCache = updateViewportScrollSizeCache(force));\r\n const viewportContentSize = clientSize(_viewport);\r\n let arrangedViewportScrollSize = viewportScrollSize!;\r\n let arrangedViewportClientSize = viewportContentSize;\r\n\r\n _redoViewportArrange();\r\n\r\n // if re measure is required (only required if content arrange strategy is used)\r\n if (\r\n (viewportScrollSizeChanged ||\r\n viewportSizeFractionCahnged ||\r\n showNativeOverlaidScrollbarsChanged) &&\r\n undoViewportArrangeOverflowState &&\r\n !showNativeOverlaidScrollbars &&\r\n arrangeViewport(\r\n undoViewportArrangeOverflowState,\r\n viewportScrollSize!,\r\n viewportSizeFraction!,\r\n directionIsRTL!\r\n )\r\n ) {\r\n arrangedViewportClientSize = clientSize(_viewport);\r\n arrangedViewportScrollSize = scrollSize(_viewport);\r\n }\r\n\r\n overflowAmuntCache = updateOverflowAmountCache(force, {\r\n _viewportSizeFraction: viewportSizeFraction!,\r\n _viewportScrollSize: {\r\n w: max(viewportScrollSize!.w, arrangedViewportScrollSize.w),\r\n h: max(viewportScrollSize!.h, arrangedViewportScrollSize.h),\r\n },\r\n _viewportClientSize: {\r\n w: arrangedViewportClientSize.w + max(0, viewportContentSize.w - viewportScrollSize!.w),\r\n h: arrangedViewportClientSize.h + max(0, viewportContentSize.h - viewportScrollSize!.h),\r\n },\r\n });\r\n }\r\n\r\n const [viewportSizeFraction, viewportSizeFractionChanged] = viewportSizeFractionCache;\r\n const [viewportScrollSize, viewportScrollSizeChanged] = viewportScrollSizeCache;\r\n const [overflowAmount, overflowAmountChanged] = overflowAmuntCache;\r\n const [overflow, overflowChanged] = checkOption('overflow');\r\n\r\n if (\r\n _paddingStyleChanged ||\r\n viewportSizeFractionChanged ||\r\n viewportScrollSizeChanged ||\r\n overflowAmountChanged ||\r\n overflowChanged ||\r\n showNativeOverlaidScrollbarsChanged ||\r\n directionChanged ||\r\n adjustFlexboxGlue\r\n ) {\r\n const viewportStyle: StyleObject = {\r\n marginRight: 0,\r\n marginBottom: 0,\r\n marginLeft: 0,\r\n width: '',\r\n overflowY: '',\r\n overflowX: '',\r\n };\r\n\r\n const viewportOverflowState = setViewportOverflowState(\r\n showNativeOverlaidScrollbars,\r\n overflowAmount!,\r\n overflow,\r\n viewportStyle\r\n );\r\n const viewportArranged = arrangeViewport(\r\n viewportOverflowState,\r\n viewportScrollSize!,\r\n viewportSizeFraction!,\r\n directionIsRTL!\r\n );\r\n hideNativeScrollbars(viewportOverflowState, directionIsRTL!, viewportArranged, viewportStyle);\r\n\r\n if (adjustFlexboxGlue) {\r\n fixFlexboxGlue(viewportOverflowState, !!heightIntrinsic);\r\n }\r\n\r\n // TODO: hide host overflow if scroll x or y and no padding element there\r\n // TODO: Test without content\r\n // TODO: Test without padding\r\n // TODO: overflow: visible on padding / host if overflow visible on both axis\r\n\r\n style(_viewport, viewportStyle);\r\n\r\n _setLifecycleCommunication({\r\n _viewportOverflowScroll: viewportOverflowState._overflowScroll,\r\n _viewportOverflowAmount: overflowAmount,\r\n });\r\n }\r\n };\r\n};\r\n","import {\r\n XY,\r\n WH,\r\n TRBL,\r\n CacheValues,\r\n PartialOptions,\r\n each,\r\n hasOwnProperty,\r\n isNumber,\r\n scrollLeft,\r\n scrollTop,\r\n assignDeep,\r\n} from 'support';\r\nimport { OSOptions } from 'options';\r\nimport { getEnvironment } from 'environment';\r\nimport { StructureSetup } from 'setups/structureSetup';\r\nimport { lifecycleHubOservers } from 'lifecycles/lifecycleHubObservers';\r\nimport { createTrinsicLifecycle } from 'lifecycles/trinsicLifecycle';\r\nimport { createPaddingLifecycle } from 'lifecycles/paddingLifecycle';\r\nimport { createOverflowLifecycle } from 'lifecycles/overflowLifecycle';\r\nimport { StyleObject } from 'typings';\r\nimport { ScrollbarsSetup } from 'setups/scrollbarsSetup';\r\n\r\nexport type LifecycleCheckOption = (path: string) => LifecycleOptionInfo;\r\n\r\nexport type Lifecycle = (\r\n updateHints: LifecycleUpdateHints,\r\n checkOption: LifecycleCheckOption,\r\n force: boolean\r\n) => Partial | void;\r\n\r\nexport type LifecycleOptionInfo = [T, boolean];\r\n\r\nexport interface LifecycleCommunication {\r\n _paddingInfo: {\r\n _absolute: boolean;\r\n _padding: TRBL;\r\n };\r\n _viewportPaddingStyle: StyleObject;\r\n _viewportOverflowScroll: XY;\r\n _viewportOverflowAmount: WH;\r\n}\r\n\r\nexport interface LifecycleAdaptiveUpdateHints {\r\n _sizeChanged: boolean;\r\n _hostMutation: boolean;\r\n _contentMutation: boolean;\r\n _paddingStyleChanged: boolean;\r\n}\r\n\r\nexport interface LifecycleUpdateHints extends LifecycleAdaptiveUpdateHints {\r\n _directionIsRTL: CacheValues;\r\n _heightIntrinsic: CacheValues;\r\n}\r\n\r\nexport interface LifecycleHubState {\r\n _overflowAmount: WH;\r\n}\r\n\r\nexport interface LifecycleHubInstance {\r\n _update(changedOptions?: PartialOptions | null, force?: boolean): void;\r\n _state(): LifecycleHubState;\r\n _destroy(): void;\r\n}\r\n\r\nexport interface LifecycleHub {\r\n _options: OSOptions;\r\n _structureSetup: StructureSetup;\r\n // whether the \"viewport arrange\" strategy must be used (true if no native scrollbar hiding and scrollbars are overlaid)\r\n _doViewportArrange: boolean;\r\n _getLifecycleCommunication(): LifecycleCommunication;\r\n _setLifecycleCommunication(newLifecycleCommunication?: Partial): void;\r\n}\r\n\r\nconst getPropByPath = (obj: any, path: string): T =>\r\n obj\r\n ? path.split('.').reduce((o, prop) => (o && hasOwnProperty(o, prop) ? o[prop] : undefined), obj)\r\n : undefined;\r\n\r\nconst booleanCacheValuesFallback: CacheValues = [false, false, false];\r\nconst lifecycleCommunicationFallback: LifecycleCommunication = {\r\n _paddingInfo: {\r\n _absolute: false,\r\n _padding: {\r\n t: 0,\r\n r: 0,\r\n b: 0,\r\n l: 0,\r\n },\r\n },\r\n _viewportOverflowScroll: {\r\n x: false,\r\n y: false,\r\n },\r\n _viewportOverflowAmount: {\r\n w: 0,\r\n h: 0,\r\n },\r\n _viewportPaddingStyle: {\r\n marginRight: 0,\r\n marginBottom: 0,\r\n marginLeft: 0,\r\n paddingTop: 0,\r\n paddingRight: 0,\r\n paddingBottom: 0,\r\n paddingLeft: 0,\r\n },\r\n};\r\n\r\nexport const createLifecycleHub = (\r\n options: OSOptions,\r\n structureSetup: StructureSetup,\r\n scrollbarsSetup: ScrollbarsSetup\r\n): LifecycleHubInstance => {\r\n let lifecycleCommunication = lifecycleCommunicationFallback;\r\n const { _viewport } = structureSetup._targetObj;\r\n const {\r\n _nativeScrollbarStyling,\r\n _nativeScrollbarIsOverlaid,\r\n _flexboxGlue,\r\n _addListener: addEnvironmentListener,\r\n _removeListener: removeEnvironmentListener,\r\n } = getEnvironment();\r\n const doViewportArrange =\r\n !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);\r\n const instance: LifecycleHub = {\r\n _options: options,\r\n _structureSetup: structureSetup,\r\n _doViewportArrange: doViewportArrange,\r\n _getLifecycleCommunication: () => lifecycleCommunication,\r\n _setLifecycleCommunication(newLifecycleCommunication) {\r\n lifecycleCommunication = assignDeep({}, lifecycleCommunication, newLifecycleCommunication);\r\n },\r\n };\r\n const lifecycles: Lifecycle[] = [\r\n createTrinsicLifecycle(instance),\r\n createPaddingLifecycle(instance),\r\n createOverflowLifecycle(instance),\r\n ];\r\n\r\n const updateLifecycles = (\r\n updateHints?: Partial | null,\r\n changedOptions?: Partial | null,\r\n force?: boolean\r\n ) => {\r\n let {\r\n // eslint-disable-next-line prefer-const\r\n _directionIsRTL,\r\n // eslint-disable-next-line prefer-const\r\n _heightIntrinsic,\r\n _sizeChanged = force || false,\r\n _hostMutation = force || false,\r\n _contentMutation = force || false,\r\n _paddingStyleChanged = force || false,\r\n } = updateHints || {};\r\n\r\n const finalDirectionIsRTL =\r\n _directionIsRTL ||\r\n (_sizeObserver\r\n ? _sizeObserver._getCurrentCacheValues(force)._directionIsRTL\r\n : booleanCacheValuesFallback);\r\n const finalHeightIntrinsic =\r\n _heightIntrinsic ||\r\n (_trinsicObserver\r\n ? _trinsicObserver._getCurrentCacheValues(force)._heightIntrinsic\r\n : booleanCacheValuesFallback);\r\n const checkOption: LifecycleCheckOption = (path) => [\r\n getPropByPath(options, path),\r\n force || getPropByPath(changedOptions, path) !== undefined,\r\n ];\r\n const adjustScrollOffset = doViewportArrange || !_flexboxGlue;\r\n const scrollOffsetX = adjustScrollOffset && scrollLeft(_viewport);\r\n const scrollOffsetY = adjustScrollOffset && scrollTop(_viewport);\r\n\r\n // place before updating lifecycles because of possible flushing of debounce\r\n if (_updateObserverOptions) {\r\n _updateObserverOptions(checkOption);\r\n }\r\n\r\n each(lifecycles, (lifecycle) => {\r\n const {\r\n _sizeChanged: adaptiveSizeChanged,\r\n _hostMutation: adaptiveHostMutation,\r\n _contentMutation: adaptiveContentMutation,\r\n _paddingStyleChanged: adaptivePaddingStyleChanged,\r\n } =\r\n lifecycle(\r\n {\r\n _directionIsRTL: finalDirectionIsRTL,\r\n _heightIntrinsic: finalHeightIntrinsic,\r\n _sizeChanged,\r\n _hostMutation,\r\n _contentMutation,\r\n _paddingStyleChanged,\r\n },\r\n checkOption,\r\n !!force\r\n ) || {};\r\n\r\n _sizeChanged = adaptiveSizeChanged || _sizeChanged;\r\n _hostMutation = adaptiveHostMutation || _hostMutation;\r\n _contentMutation = adaptiveContentMutation || _contentMutation;\r\n _paddingStyleChanged = adaptivePaddingStyleChanged || _paddingStyleChanged;\r\n });\r\n\r\n if (isNumber(scrollOffsetX)) {\r\n scrollLeft(_viewport, scrollOffsetX);\r\n }\r\n if (isNumber(scrollOffsetY)) {\r\n scrollTop(_viewport, scrollOffsetY);\r\n }\r\n\r\n if (options.callbacks.onUpdated) {\r\n options.callbacks.onUpdated();\r\n }\r\n };\r\n const {\r\n _sizeObserver,\r\n _trinsicObserver,\r\n _updateObserverOptions,\r\n _destroy: destroyObservers,\r\n } = lifecycleHubOservers(instance, updateLifecycles);\r\n\r\n const update = (changedOptions?: Partial | null, force?: boolean) =>\r\n updateLifecycles(null, changedOptions, force);\r\n const envUpdateListener = update.bind(null, null, true);\r\n addEnvironmentListener(envUpdateListener);\r\n\r\n console.log(getEnvironment());\r\n\r\n return {\r\n _update: update,\r\n _state: () => ({\r\n _overflowAmount: lifecycleCommunication._viewportOverflowAmount,\r\n }),\r\n _destroy() {\r\n destroyObservers();\r\n removeEnvironmentListener(envUpdateListener);\r\n\r\n structureSetup._destroy();\r\n scrollbarsSetup._destroy();\r\n },\r\n };\r\n};\r\n","import { OSTarget, OSInitializationObject } from 'typings';\r\nimport { PartialOptions, validateOptions, assignDeep, isEmptyObject } from 'support';\r\nimport { createStructureSetup, StructureSetup } from 'setups/structureSetup';\r\nimport { createScrollbarsSetup, ScrollbarsSetup } from 'setups/scrollbarsSetup';\r\nimport { createLifecycleHub } from 'lifecycles/lifecycleHub';\r\nimport { OSOptions, optionsTemplate } from 'options';\r\nimport { getEnvironment } from 'environment';\r\n\r\nexport interface OverlayScrollbarsStatic {\r\n (\r\n target: OSTarget | OSInitializationObject,\r\n options?: PartialOptions,\r\n extensions?: any\r\n ): OverlayScrollbars;\r\n}\r\n\r\nexport interface OverlayScrollbars {\r\n options(): OSOptions;\r\n options(newOptions?: PartialOptions): OSOptions;\r\n\r\n update(force?: boolean): void;\r\n destroy(): void;\r\n\r\n state(): any;\r\n}\r\n\r\nexport const OverlayScrollbars: OverlayScrollbarsStatic = (\r\n target: OSTarget | OSInitializationObject,\r\n options?: PartialOptions,\r\n extensions?: any\r\n): OverlayScrollbars => {\r\n const { _getDefaultOptions } = getEnvironment();\r\n const currentOptions: OSOptions = assignDeep(\r\n {},\r\n _getDefaultOptions(),\r\n validateOptions(options || ({} as PartialOptions), optionsTemplate, null, true)\r\n ._validated\r\n );\r\n const structureSetup: StructureSetup = createStructureSetup(target);\r\n const scrollbarsSetup: ScrollbarsSetup = createScrollbarsSetup(target, structureSetup);\r\n const lifecycleHub = createLifecycleHub(currentOptions, structureSetup, scrollbarsSetup);\r\n\r\n const instance: OverlayScrollbars = {\r\n options(newOptions?: PartialOptions) {\r\n if (newOptions) {\r\n const { _validated: _changedOptions } = validateOptions(\r\n newOptions,\r\n optionsTemplate,\r\n currentOptions,\r\n true\r\n );\r\n\r\n if (!isEmptyObject(_changedOptions)) {\r\n assignDeep(currentOptions, _changedOptions);\r\n lifecycleHub._update(_changedOptions);\r\n }\r\n }\r\n return currentOptions;\r\n },\r\n state: () => lifecycleHub._state(),\r\n update(force?: boolean) {\r\n lifecycleHub._update(null, force);\r\n },\r\n destroy: () => lifecycleHub._destroy(),\r\n };\r\n\r\n instance.update(true);\r\n\r\n return instance;\r\n};\r\n"],"names":["createCache","update","options","_initialValue","_equal","_alwaysUpdateValues","_value","_previous","cacheUpdate","force","context","curr","newVal","changed","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","elm","isEmptyArray","runEach","p1","runFn","fn","Set","forEach","prop","assignDeep","target","object1","object2","object3","object4","object5","object6","sources","copy","copyIsArray","src","clone","isEmptyObject","name","getSetProp","topLeft","fallback","value","attr","attrName","getAttribute","setAttribute","removeAttr","removeAttribute","scrollLeft","scrollTop","elmPrototype","find","selector","rootElm","document","querySelectorAll","is","matches","msMatchesSelector","contents","childNodes","parent","parentElement","before","parentElm","preferredAnchor","insertedElms","anchor","fragment","createDocumentFragment","insertedElm","previousSibling","appendChild","firstChild","nextSibling","insertBefore","appendChildren","node","children","prependChildren","insertedNodes","insertAfter","removeElements","nodes","e","removeChild","createDiv","classNames","div","createElement","createDOM","html","createdDiv","innerHTML","trim","firstLetterToUpper","str","charAt","toUpperCase","slice","getDummyStyle","style","cssPrefixes","jsPrefixes","jsCache","cssCache","cssProperty","uppercasedName","elmStyle","prefix","prefixWithoutDashes","resultPossibilities","resultPossibility","jsAPI","MutationObserverConstructor","IntersectionObserverConstructor","ResizeObserverConstructor","cAF","rAF","rnothtmlwhite","classListAction","className","action","clazz","classes","match","classList","addClass","add","removeClass","remove","diffClass","classNameA","classNameB","classNameASplit","split","classNameBSplit","tempObj","zeroObj","w","h","windowSize","innerWidth","innerHeight","offsetSize","offsetWidth","offsetHeight","clientSize","clientWidth","clientHeight","scrollSize","scrollWidth","scrollHeight","getBoundingClientRect","passiveEventsSupport","supportPassiveEvents","addEventListener","defineProperty","get","splitEventNames","eventNames","off","listener","capture","eventName","removeEventListener","on","doSupportPassiveEvents","passive","_passive","_capture","once","_once","offListeners","nativeOptions","finalListener","evt","bind","stopPropagation","preventDefault","stopAndPrevent","equal","a","b","props","propMutation","compareA","compareB","equalWH","equalTRBL","equalBCRWH","round","Math","setT","setTimeout","clearTimeouts","id","clearTimeout","noop","debounce","functionToDebounce","timeoutId","maxTimeoutId","prevArguments","latestArguments","_timeout","_maxDelay","_mergeParams","invokeFunctionToDebounce","args","mergeParms","flush","debouncedFn","arguments","finalTimeout","hasTimeout","finalMaxWait","hasMaxWait","setTimeoutFn","mergeParamsResult","invokedArgs","boundInvoke","_flush","cssNumber","opacity","zindex","parseToZeroOrNumber","toFloat","num","parseFloat","parseInt","Number","isNaN","adaptCSSVal","val","getCSSVal","computedStyle","getPropertyValue","setCSSVal","setProperty","styles","getSingleStyle","getStyles","getStylesResult","getComputedStyle","reduce","topRightBottomLeft","propertyPrefix","propertySuffix","finalPrefix","finalSuffix","top","right","bottom","left","t","r","l","x","y","absoluteCoordinates","rect","pageYOffset","pageXOffset","_extends","module","assign","exports","__esModule","stringify","JSON","templateTypePrefixSuffix","optionsTemplateTypes","validateRecursive","template","optionsDiff","doWriteErrors","propPath","validatedOptions","optionsCopy","filter","optionsDiffValue","optionsValue","templateValue","templateIsComplex","propPrefix","validatedResult","_validated","_foreign","isValid","errorEnumStrings","errorPossibleTypes","optionsValueType","templateValueArr","currTemplateType","typeString","isEnumString","enumStringSplit","possibility","string","isPrimitiveArr","some","doStringifyComparison","console","warn","join","validateOptions","transformOptions","optionsWithOptionsTemplate","_template","_options","tmpResult","classNameEnvironment","classNameEnvironmentFlexboxGlue","classNameEnvironmentFlexboxGlueMax","classNameHost","classNamePadding","classNameViewport","classNameViewportArrange","classNameContent","classNameViewportScrollbarStyling","classNameSizeObserver","classNameSizeObserverAppear","classNameSizeObserverListener","classNameSizeObserverListenerScroll","classNameSizeObserverListenerItem","classNameSizeObserverListenerItemFinal","classNameTrinsicObserver","classNameScrollbar","classNameScrollbarHorizontal","classNameScrollbarVertical","classNameScrollbarTrack","classNameScrollbarHandle","numberAllowedValues","oTypes","number","arrayNullValues","null","stringArrayNullAllowedValues","booleanTrueTemplate","boolean","booleanFalseTemplate","resizeAllowedValues","overflowAllowedValues","scrollbarsVisibilityAllowedValues","scrollbarsAutoHideAllowedValues","defaultOptionsWithTemplate","resize","paddingAbsolute","updating","elementEvents","attributes","overflow","scrollbars","visibility","autoHide","autoHideDelay","dragScroll","clickScroll","touch","textarea","dynWidth","dynHeight","inheritedAttrs","nativeScrollbarsOverlaid","show","initialize","callbacks","onUpdated","function","optionsTemplate","defaultOptions","environmentInstance","abs","diffBiggerThanOne","valOne","valTwo","absValOne","absValTwo","getNativeScrollbarSize","body","measureElm","cSize","oSize","getNativeScrollbarStyling","testElm","ex","getRtlScrollBehavior","childElm","strHidden","overflowX","overflowY","direction","parentOffset","childOffset","childOffsetAfterScroll","n","getFlexboxGlue","minOffsetsizeParent","minOffsetsize","supportsMin","maxOffsetsizeParent","maxOffsetsize","supportsMax","getWindowDPR","dDPI","screen","deviceXDPI","sDPI","logicalXDPI","devicePixelRatio","getDefaultInitializationStrategy","nativeScrollbarStyling","_host","_viewport","_padding","_content","_scrollbarsSlot","createEnvironment","envDOM","envElm","envChildElm","onChangedListener","nativeScrollbarSize","nativeScrollbarIsOverlaid","defaultInitializationStrategy","initializationStrategy","defaultDefaultOptions","env","_nativeScrollbarSize","_nativeScrollbarIsOverlaid","_nativeScrollbarStyling","_cssCustomProperties","_rtlScrollBehavior","_flexboxGlue","_addListener","_removeListener","delete","_getInitializationStrategy","_setInitializationStrategy","newInitializationStrategy","_getDefaultOptions","_setDefaultOptions","newDefaultOptions","_defaultInitializationStrategy","_defaultDefaultOptions","size","dpr","scrollbarSize","sizeNew","deltaSize","deltaAbsSize","deltaAbsRatio","dprNew","deltaIsBigger","difference","dprChanged","isZoom","newScrollbarSize","getEnvironment","contentArrangeCounter","unwrap","createUniqueViewportArrangeElement","create","staticCreationFromStrategy","initializationValue","strategy","elementClass","dynamicCreationFromStrategy","defaultValue","takeInitializationValue","createStructureSetup","hostInitializationStrategy","viewportInitializationStrategy","paddingInitializationStrategy","contentInitializationStrategy","targetIsElm","targetStructureInitialization","targetElement","isTextarea","isBody","ownerDocument","bodyElm","wnd","defaultView","evaluatedTargetObj","_target","host","viewport","padding","content","_viewportArrange","ctx","_windowElm","_documentElm","_htmlElm","_bodyElm","_isTextarea","_isBody","_targetIsElm","generatedElements","elementIsGenerated","destroyFns","isTextareaHostGenerated","targetContents","contentSlot","_targetObj","_targetCtx","_destroy","generateScrollbarDOM","scrollbarClassName","scrollbar","track","handle","_scrollbar","_track","_handle","createScrollbarsSetup","structureSetup","environmentScrollbarSlot","initializationScrollbarSlot","scrollbarsSlot","initializationScrollbarSlotResult","evaluatedScrollbarSlot","horizontalScrollbarStructure","verticalScrollbarStructure","horizontalScrollbar","verticalScrollbar","_horizontalScrollbarStructure","_verticalScrollbarStructure","animationStartEventName","scrollEventName","scrollAmount","getElmDirectionIsRTL","domRectHasDimensions","height","width","createSizeObserver","onSizeChangedCallback","_direction","observeDirectionChange","_appear","observeAppearChange","rtlScrollBehavior","baseElements","sizeObserver","listenerElement","getIsDirectionRTL","currVal","updateResizeObserverContentRectCache","onSizeChangedCallbackProxy","sizeChangedContext","isResizeObserverCall","hasDirectionCache","skip","appear","doDirectionScroll","pop","contentRect","currRContentRect","prevContentRect","hasDimensions","hadDimensions","rtl","_sizeChanged","_directionIsRTLCache","appearCallback","directionIsRTLCache","resizeObserverInstance","observe","disconnect","observerElementChildren","observerElementChildrenRoot","shrinkElement","lastChild","expandElement","expandElementChild","cacheSize","currSize","isDirty","rAFId","reset","onResized","onScroll","scrollEvent","updateDirectionIsRTLCache","event","directionIsRTLCacheValues","directionIsRTL","directionIsRTLChanged","_getCurrentCacheValues","_directionIsRTL","createTrinsicObserver","onTrinsicChangedCallback","trinsicObserver","ioEntryOrSize","isIntersecting","intersectionRatio","updateHeightIntrinsicCache","getCurrentHeightIntrinsicCache","triggerOnTrinsicChangedCallback","updateValue","heightIntrinsic","heightIntrinsicChanged","intersectionObserverInstance","entries","root","onSizeChanged","newSize","_heightIntrinsic","createEventContentChange","eventContentChange","map","destroyed","_updateElements","getElements","eventElmList","elements","entry","entryEventNames","entryOff","set","WeakMap","createDOMObserver","isContentObserver","isConnected","_attributes","_styleChangingAttributes","_eventContentChange","_nestedTargetSelector","_ignoreTargetChange","_ignoreNestedTargetChange","_ignoreContentChange","destroyEventContentChange","updateEventContentChangeElements","finalAttributes","finalStyleChangingAttributes","observedAttributes","concat","observerCallback","mutations","ignoreTargetChange","ignoreContentChange","targetChangedAttrs","totalAddedNodes","targetStyleChanged","contentChanged","childListChanged","mutation","attributeName","mutationTarget","oldValue","addedNodes","isAttributesType","isChildListType","targetIsMutationTarget","attributeValue","attributeChanged","styleChangingAttrChanged","notOnlyAttrChanged","contentAttrChanged","isNestedTarget","baseAssertion","contentFinalChanged","mutationObserver","attributeOldValue","attributeFilter","subtree","childList","characterData","_update","takeRecords","ignorePrefix","viewportAttrsFromTarget","baseStyleChangingAttrsTextarea","baseStyleChangingAttrs","newValue","diff","addedOrRemovedClass","lifecycleHubOservers","instance","updateLifecycles","debounceTimeout","debounceMaxDelay","contentMutationObserver","_structureSetup","contentMutationObserverAttr","updateLifecyclesWithDebouncedAdaptiveUpdateHints","prev","prevSizeChanged","prevHostMutation","_hostMutation","prevContentMutation","_contentMutation","currSizeChanged","currvHostMutation","currContentMutation","merged","updateViewportAttrsFromHost","attribute","hostAttr","onTrinsicChanged","updateFn","onContentMutation","contentChangedTroughEvent","onHostMutation","hostMutationObserver","updateOptions","checkOption","elementEventsChanged","attributesChanged","debounceValue","debounceChanged","updateContentMutationObserver","timeout","maxWait","_trinsicObserver","_sizeObserver","_updateObserverOptions","createTrinsicLifecycle","lifecycleHub","updateHints","display","createPaddingLifecycle","_setLifecycleCommunication","updatePaddingCache","currentPaddingCache","paddingChanged","directionChanged","paddingAbsoluteChanged","contentMutation","paddingStyleChanged","paddingRelative","paddingHorizontal","paddingVertical","paddingStyle","marginRight","marginBottom","marginLeft","viewportStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","_paddingInfo","_absolute","_viewportPaddingStyle","_paddingStyleChanged","max","overlaidScrollbarsHideOffset","whCacheOptions","sizeFraction","viewportOffsetSize","viewportRect","fractionalPixelRatioTollerance","setAxisOverflowStyle","horizontal","overflowAmount","behavior","styleObj","overflowKey","behaviorIsVisible","behaviorIsVisibleHidden","behaviorIsScroll","hasOverflow","_visible","_behavior","createOverflowLifecycle","_doViewportArrange","_getLifecycleCommunication","updateViewportSizeFraction","getCurrentViewportSizeFraction","updateViewportScrollSizeCache","getCurrentViewportScrollSizeCache","_viewportScrollSize","_viewportClientSize","_viewportSizeFraction","updateOverflowAmountCache","getCurrentOverflowAmountCache","fixFlexboxGlue","viewportOverflowState","_overflowScroll","_scrollbarsHideOffset","hostSizeFraction","hostClientSize","isContentBox","fractionalClientHeight","subtractXScrollbar","getViewportOverflowState","showNativeOverlaidScrollbars","viewportStyleObj","overlaidX","overlaidY","determineOverflow","arrangeHideOffset","scroll","scrollbarsHideOffset","_scrollbarsHideOffsetArrange","setViewportOverflowState","xVisible","xVisibleBehavior","yVisible","yVisibleBehavior","arrangeViewport","viewportScrollSize","viewportSizeFraction","arrangeX","arrangeY","hideOffsetX","hideOffsetY","viewportPaddingStyle","viewportArrangeHorizontalPaddingKey","viewportArrangeHorizontalPaddingValue","viewportArrangeVerticalPaddingValue","fractionalContentWidth","fractionalContenHeight","arrangeSize","sheet","cssRules","insertRule","ruleStyle","hideNativeScrollbars","viewportArrange","horizontalMarginKey","viewportHorizontalPaddingKey","horizontalMarginValue","verticalMarginValue","horizontalPaddingValue","verticalPaddingValue","undoViewportArrange","finalViewportOverflowState","finalPaddingStyle","assignProps","prevStyle","_redoViewportArrange","_viewportOverflowState","showNativeOverlaidScrollbarsOption","showNativeOverlaidScrollbarsChanged","adjustFlexboxGlue","viewportSizeFractionCache","viewportScrollSizeCache","overflowAmuntCache","preMeasureViewportOverflowState","undoViewportArrangeOverflowState","viewportSizeFractionCahnged","viewportScrollSizeChanged","viewportContentSize","arrangedViewportScrollSize","arrangedViewportClientSize","viewportSizeFractionChanged","overflowAmountChanged","overflowChanged","viewportArranged","_viewportOverflowScroll","_viewportOverflowAmount","getPropByPath","path","o","booleanCacheValuesFallback","lifecycleCommunicationFallback","createLifecycleHub","scrollbarsSetup","lifecycleCommunication","addEnvironmentListener","removeEnvironmentListener","doViewportArrange","newLifecycleCommunication","lifecycles","changedOptions","finalDirectionIsRTL","finalHeightIntrinsic","adjustScrollOffset","scrollOffsetX","scrollOffsetY","lifecycle","adaptiveSizeChanged","adaptiveHostMutation","adaptiveContentMutation","adaptivePaddingStyleChanged","destroyObservers","envUpdateListener","log","_state","_overflowAmount","OverlayScrollbars","extensions","currentOptions","newOptions","_changedOptions","state","destroy"],"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 25037d7..1061a7b 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";var n=function(n,t){var r,i=t||{},e=i.o,o=i.u,u=i.v,a=o;return{s:function(t,i){var o=a,c=n?n(i,a,r):i,f=t||(e?!e(o,c):o!==c);return(f||u)&&(a=c,r=o),{_:a,g:r,p:f}},m:function(n){return{_:a,g:r,p:!!n}}}},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}var a=function(n){return o(n)||u(n)?""+n:i.call(n).replace(/^\[object (.+)\]$/,"$1").toLowerCase()};function c(n){return"number"==typeof n}function f(n){return"string"==typeof n}function l(n){return"boolean"==typeof n}function v(n){return"function"==typeof n}function d(n){return Array.isArray(n)}function s(n){return"object"==typeof n&&!d(n)&&!u(n)}function _(n){var t=!!n&&n.length,r=c(t)&&t>-1&&t%1==0;return!!(d(n)||!v(n)&&r)&&(!(t>0&&s(n))||t-1 in n)}function g(n){if(!n||!s(n)||"object"!==a(n))return!1;var t,r="constructor",i=n[r],u=i&&i.prototype,c=e.call(n,r),f=u&&e.call(u,"isPrototypeOf");if(i&&!c&&!f)return!1;for(t in n);return o(t)||e.call(n,t)}function h(n){var r=window.Element;return!!n&&(r?n instanceof r:n.nodeType===t)}function p(n,t){if(_(n))for(var r=0;r0;i=u[e++];)o=!!r(n.classList,i)&&o}return o},un=function(n,t){on(n,t,(function(n,t){return n.add(t)}))},an=function(n,t){on(n,t,(function(n,t){return n.remove(t)}))},cn={w:0,h:0},fn=function(){return{w:window.innerWidth,h:window.innerHeight}},ln=function(n){return n?{w:n.offsetWidth,h:n.offsetHeight}:cn},vn=function(n){return n?{w:n.clientWidth,h:n.clientHeight}:cn},dn=function(n){return n?{w:n.scrollWidth,h:n.scrollHeight}:cn},sn=function(n){return n.getBoundingClientRect()},_n=function(n){return n.split(" ")},gn=function(n,t,r,i){p(_n(t),(function(t){n.removeEventListener(t,r,i)}))},hn=function(n,t,r,i){var e=function(){if(o(j)){j=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){j=!0}}))}catch(n){}}return j}(),u=e&&i&&i.O||!1,a=i&&i.S||!1,c=i&&i.C||!1,f=[],l=e?{passive:u,capture:a}:a;return p(_n(t),(function(t){var i=c?function(e){n.removeEventListener(t,i,a),r&&r(e)}:r;b(f,gn.bind(null,n,t,i,a)),n.addEventListener(t,i,l)})),x.bind(0,f)},pn=function(n){return function(n){return n.stopPropagation()}(n)||function(n){return n.preventDefault()}(n)},wn=function(n,t,r,i){if(n&&t){var e=!0;return p(r,(function(r){(i?i(n[r]):n[r])!==(i?i(t[r]):t[r])&&(e=!1)})),e}return!1},bn=function(n,t){return wn(n,t,["w","h"])},mn=function(n,t){return wn(n,t,["t","r","b","l"])},yn=function(n,t,r){return wn(n,t,["width","height"],r&&function(n){return Math.round(n)})},xn=window.setTimeout,On=function(n){n&&window.clearTimeout(n),n&&tn(n)},Sn=function(){},zn=function(n,t){var r,i,e,o,u=t.L,a=t.A,f=t.M,l=function(t){On(r),On(i),i=r=e=void 0,n.apply(this,t)},d=function(n){return f&&e?f(e,n):n},s=function(){r&&l(d(o)||o)},_=function(){var n=arguments,t=v(u)?u():u,f=c(t)&&t>=0;if(f){var _=v(a)?a():a,g=c(_)&&_>=0,h=t>0?xn:rn,p=d(n),w=p||n,b=l.bind(0,w);p||l(e||n),On(r),r=h(b,t),g&&!i&&(i=xn(s,_)),e=o=w}else l(n)};return _.I=s,_},Cn={opacity:1,zindex:1},Ln=function(n,t){var r=t?parseFloat(n):parseInt(n,10);return Number.isNaN(r)?0:r},An=function(n,t,r){return null!=t?t[r]||t.getPropertyValue(r):n.style[r]},Mn=function(n,t,r){try{if(n){var i=n.style;o(i[t])?i.setProperty(t,r):i[t]=function(n,t){return!Cn[n.toLowerCase()]&&c(t)?t+"px":t}(t,r)}}catch(e){}};function In(n,t){var r=f(t);if(d(t)||r){var i=r?"":{};if(n){var e=window.getComputedStyle(n,null);i=r?An(n,e,t):t.reduce((function(t,r){return t[r]=An(n,e,r),t}),i)}return i}p(S(t),(function(r){return Mn(n,r,t[r])}))}var Tn=function(n,t,r){var i=t?t+"-":"",e=r?"-"+r:"",o=i+"top"+e,u=i+"right"+e,a=i+"bottom"+e,c=i+"left"+e,f=In(n,[o,u,a,c]);return{t:Ln(f[o]),r:Ln(f[u]),b:Ln(f[a]),l:Ln(f[c])}},jn={x:0,y:0},Rn=function(n){var t=n?sn(n):0;return t?{x:t.left+window.pageYOffset,y:t.top+window.pageXOffset}:jn};var Vn,Bn=function(n){var t={exports:{}};return n(t,t.exports),t.exports}((function(n){function t(){return n.exports=t=Object.assign||function(n){for(var t=1;t0?"\r\nValid strings are: [ "+O.join(", ")+" ].":""));delete l[v]}})),{j:l,T:c}}(n,t,r||{},i||!1)},Fn="os-environment",Hn=Fn+"-flexbox-glue",Yn=Hn+"-max",qn="os-host",Nn="os-padding",Xn="os-viewport",Un=Xn+"-arrange",Wn="os-content",$n=Xn+"-scrollbar-styled",Gn="os-size-observer",Jn=Gn+"-appear",Kn=Gn+"-listener",Qn=Kn+"-scroll",Zn=Kn+"-item",nt=Zn+"-final",tt="os-trinsic-observer",rt=Pn.number,it=[Pn.array,Pn.null],et=[Pn.string,Pn.array,Pn.null],ot=[!0,Pn.boolean],ut=[!1,Pn.boolean],at="hidden scroll visible visible-hidden",ct=function n(t){var r={R:{},V:{}};return p(S(t),(function(i){var e=t[i];if(d(e))r.R[i]=e[1],r.V[i]=e[0];else{var o=n(e);r.R[i]=o.R,r.V[i]=o.V}})),r}({resize:["none","none both horizontal vertical"],paddingAbsolute:ut,updating:{elementEvents:[[["img","load"]],it],attributes:[null,it],debounce:[[0,33],[Pn.number,Pn.array,Pn.null]]},overflow:{x:["scroll",at],y:["scroll",at]},scrollbars:{visibility:["auto","visible hidden auto"],autoHide:["never","never scroll leavemove"],autoHideDelay:[800,rt],dragScroll:ot,clickScroll:ut,touch:ot},textarea:{dynWidth:ut,dynHeight:ut,inheritedAttrs:[["style","class"],et]},nativeScrollbarsOverlaid:{show:ut,initialize:ut},callbacks:{onUpdated:[null,[Pn.function,Pn.null]]}}),ft=ct.R,lt=ct.V,vt=Math.abs,dt=Math.round,st=function(n,t){k(n,t);var r=vn(t),i=ln(t);return{x:i.h-r.h,y:i.w-r.w}},_t=function(n,t){var r="hidden";In(n,{overflowX:r,overflowY:r,direction:"rtl"}),I(n,0);var i=Rn(n),e=Rn(t);I(n,-999);var o=Rn(t);return{i:i.x===e.x,n:e.x!==o.x}},gt=function(n,t){un(n,Hn);var r=sn(n),i=sn(t),e=yn(i,r,!0);un(n,Yn);var o=sn(n),u=sn(t),a=yn(u,o,!0);return e&&a},ht=function(){var n=window.screen.deviceXDPI||0,t=window.screen.logicalXDPI||1;return window.devicePixelRatio||n/t},pt=function(){var n=document.body,t=N('
')[0],r=t.firstChild,i=new Set,e=st(n,t),o=function(n){var t=!1;un(n,$n);try{t="none"===In(n,J("scrollbar-width"))||"none"===window.getComputedStyle(n,"::-webkit-scrollbar").getPropertyValue("display")}catch(r){}return t}(t),u={x:0===e.x,y:0===e.y},a=function(n){return{B:!n,D:!1}}(o),c=a,f=lt,l={P:e,k:u,F:o,H:"-1"===In(t,"zIndex"),Y:_t(t,r),q:gt(t,r),N:function(n){i.add(n)},X:function(n){i.delete(n)},U:function(){return Bn({},c)},W:function(n){c=z({},c,n)},$:function(){return Bn({},f)},G:function(n){f=z({},f,n)},J:a,K:f};if(M(t,"style"),Y(t),!(o||u.x&&u.y)){var v=fn(),d=ht(),s=e;window.addEventListener("resize",(function(){if(i.size){var r=fn(),e={w:r.w-v.w,h:r.h-v.h};if(0===e.w&&0===e.h)return;var o={w:vt(e.w),h:vt(e.h)},u={w:vt(dt(r.w/(v.w/100))),h:vt(dt(r.h/(v.h/100)))},a=ht(),c=o.w>2&&o.h>2,f=(_=u.h,g=vt(u.w),h=vt(_),!(g!==h&&g+1!==h&&g-1!==h));if(c&&f&&(a!==d&&d>0)){var l=Vn.P=st(n,t);Y(t),s.x===l.x&&s.y===l.y||x(i),s=l}v=r,d=a}var _,g,h}))}return l},wt=function(){return Vn||(Vn=pt()),Vn},bt=function(n){k(D(n),E(n)),Y(n)},mt=0,yt=function(n,t){var r=l(n);return r||o(n)?(r?n:t)&&void 0:n},xt=function(n){var r=wt(),i=r.U,e=r.F,u=r.k,a=r.H,c=i(),f=c.B,l=c.D,v=function(n){var r=window.HTMLElement;return!!n&&(r?n instanceof r:n.nodeType===t)}(n),d=v?{}:{Z:n.host,nn:n.target,tn:n.viewport,B:yt(n.padding,f),D:yt(n.content,l)};if(v){var s=q(Xn),_=f&&q(Nn),g=l&&q(Wn);d.nn=n,d.B=_,d.tn=s,d.D=g}var h=d.nn,p=d.B,w=d.tn,m=d.D,y=[],O=B(h,"textarea"),S=!O&&B(h,"body"),z=O?d.Z||q():h,C=function(n){return O?h:E(n)};if(O&&z!==d.Z&&(H(h,z),b(y,(function(){H(z,h),Y(z)}))),v){var L=m||w;k(L,C(h)),k(z,p),k(p||z,w),k(w,m),b(y,(function(){k(z,E(L)),Y(p||w),an(z,qn)}))}else{var M=m||w||p||z,I=o(p),T=o(w),j=o(m),R=C(M);p=d.B=I?q():p,w=d.tn=T?q():w,m=d.D=j?q():m,k(z,p),k(p||z,w),k(w,m),k(m||w,R),b(y,(function(){j&&bt(m),T&&bt(w),I&&bt(p),an(z,qn),an(p,Nn),an(w,Xn),an(m,Wn)}))}un(z,qn),un(p,Nn),un(w,Xn),un(m,Wn);var V,F,N,X=h.ownerDocument,U=X.body,W={rn:X.defaultView,in:X,en:D(U),on:U,un:O,an:S},$=Bn({},d,{Z:z});if(e)b(y,an.bind(0,w,$n));else if(!a&&(u.x||u.y)){var G=(A(N=document.createElement("style"),"id",Un+"-"+mt),mt++,N);F=G,P(D(V=w),V,F),b(y,Y.bind(0,G)),$.cn=G}return{fn:$,ln:W,vn:function(){x(y)}}},Ot="animationstart",St="scroll",zt=3333333,Ct=function(n){return"rtl"===In(n,"direction")},Lt=function(n){return n&&(n.height||n.width)},At=function(t,r,i){var e,o=i||{},u=o.dn,a=void 0!==u&&u,c=o.sn,f=void 0!==c&&c,v=wt().Y,s=N('
')[0],_=s.firstChild,g=n(0,{v:!0,o:function(n,t){return!(!n||!Lt(n)&&Lt(t))}}).s,h=function(n){var t=n&&l(n._),i=!1,e=!1,o=!0;if(d(n)&&n.length>0){var u=g(0,n.pop().contentRect),c=u.g,f=u._,_=Lt(f);e=!Lt(c)&&_,o=!(i=!c||!_)}else t?o=n.p:e=!0===n;if(a&&o){var h=t?n._:Ct(s);I(s,h?v.n?-zt:v.i?0:zt:zt),T(s,zt)}i||r({_n:!t,gn:t?n:void 0,sn:!!e})},p=[],w=!!f&&h;if(nn){var m=new nn(h);m.observe(_),b(p,(function(){m.disconnect()}))}else{var y=N('
');k(_,y),un(_,Qn);var O,S=y[0],z=S.lastChild,C=S.firstChild,L=null==C?void 0:C.firstChild,A=ln(S),M=A,j=!1,R=function(){I(C,zt),T(C,zt),I(z,zt),T(z,zt)},V=function(n){O=0,j&&(A=M,h(!0===n))},B=function(n){M=ln(S),j=!n||!bn(M,A),n?(pn(n),j&&!O&&(tn(O),O=rn(V))):V(!1===n),R()};b(p,[hn(C,St,B),hn(z,St,B)]),In(L,{width:zt,height:zt}),R(),w=f?B.bind(0,!1):R}if(a){var E=(e=n(Ct.bind(0,s))).s;b(p,hn(s,St,(function(n){var t=E(),r=t._;t.p&&(an(_,"ltr rtl"),un(_,r?"rtl":"ltr"),h(t)),pn(n)})))}return w&&(un(s,Jn),b(p,hn(s,Ot,w,{C:!!nn}))),F(t,s),{vn:function(){x(p),Y(s)},hn:function(n){return{pn:e?e.m(n):{_:!1,g:!1,p:!1}}}}},Mt=function(n,t,r,i){var e=!1,u=i||{},a=u.wn,c=u.bn,l=u.mn,v=u.yn,d=u.xn,s=u.On,_=u.Sn,g=function(n,t,r){var i,e=function(){i&&(i.forEach((function(n,t){gn(t,n,r)})),i.clear())},u=function(e){i&&t&&p(t.reduce((function(t,r){if(r){var i=r[0],o=r[1],u=o&&i&&(e?e(i):V(i,n));u&&u.length&&o&&f(o)&&b(t,[u,o.trim()],!0)}return t}),[]),(function(n){return p(n[0],(function(t){var e=n[1],u=i.get(t),a=!o(u)&&e!==u,c=a?u+" "+e:e;a&&gn(t,u,r),i.set(t,c),hn(t,c,r)}))}))};return t&&(i=i||new Map,e(),u()),{vn:e,zn:u}}(n,t&&l,zn((function(){e&&r(!0)}),{L:33,A:99})),h=g.vn,m=g.zn,x=c||[],O=(a||[]).concat(x),S=function(e){var o=(t?s:d)||Sn,u=_||Sn,a=[],c=[],l=!1,g=!1,h=!1;p(e,(function(r){var e=r.attributeName,d=r.target,s=r.type,_=r.oldValue,p=r.addedNodes,m="attributes"===s,y="childList"===s,O=n===d,S=m&&f(e)?A(d,e):0,z=0!==S&&_!==S,C=w(x,e)>-1&&z;if(t&&!O){var L=!m,M=m&&C,I=M&&v&&B(d,v),T=(I?!o(d,e,_,S):L||M)&&!u(r,!!I,n,i);b(c,p),g=g||T,h=h||y}!t&&O&&z&&!o(d,e,_,S)&&(b(a,e),l=l||C)})),h&&!y(c)&&m((function(n){return c.reduce((function(t,r){return b(t,V(n,r)),B(r,n)?b(t,r):t}),[])})),t?g&&r(!1):y(a)&&!l||r(a,l)},z=new Q(S);return z.observe(n,{attributes:!0,attributeOldValue:!0,attributeFilter:O,subtree:t,childList:t,characterData:t}),e=!0,{vn:function(){e&&(h(),z.disconnect(),e=!1)},s:function(){e&&S(z.takeRecords())}}},It="os-",Tt=["tabindex"],jt=["wrap","cols","rows"],Rt=["id","class","style","open"],Vt=function(n,t,r,i){var e,o,u,a,c;return!("class"!==t||!r||!i)&&!!(o=i,u=(e=r)&&e.split(" "),a=o&&o.split(" "),c={},p(u,(function(n){c[n]=1})),p(a,(function(n){c[n]?delete c[n]:c[n]=1})),S(c)).find((function(n){return 0!==n.indexOf(It)}))},Bt=function(t,r){var i,e,o,u=t.Cn,a=u.fn,l=u.ln,v=a.Z,s=a.tn,_=a.D,g=l.un,h=wt(),m=h.F,y=h.q,O=g?jt:Rt.concat(jt),S=zn(r,{L:function(){return i},A:function(){return e},M:function(n,t){var r=n[0],i=r._n,e=r.Ln,o=r.An,u=t[0],a=u._n,c=u.Ln,f=u.An;return[{_n:i||a,Ln:e||c,An:o||f}]}}),z=function(n){p(n||Tt,(function(n){if(w(Tt,n)>-1){var t=A(v,n);f(t)?A(s,n,t):M(s,n)}}))},C=function(n){(n?r:S)({An:!0})},L=(_||!y)&&function(t,r){var i=q(tt),e=[],o=n((function(n){return 0===n.h||n.isIntersecting||n.intersectionRatio>0}),{u:!1}),u=o.s,a=o.m;if(Z){var c=new Z((function(n){if(n&&n.length>0){var t=n.pop();if(t){var i=u(0,t);i.p&&r(i)}}}),{root:t});c.observe(i),b(e,(function(){c.disconnect()}))}else{var f=function(){var n=ln(i),t=u(0,n);t.p&&r(t)};b(e,At(i,f).vn),f()}return F(t,i),{vn:function(){x(e),Y(i)},hn:function(n){return{Mn:a(n)}}}}(v,(function(n){r({Mn:n})})),I=At(v,(function(n){var t=n._n,i=n.gn,e=n.sn;(!t||e?r:S)({_n:t,pn:i})}),{sn:!0,dn:!m}),T=Mt(v,!1,(function(n,t){t?S({Ln:!0}):z(n)}),{bn:Rt,wn:Rt.concat(Tt),xn:Vt});return z(),{In:L,Tn:I,jn:function(n){var t=n("updating.elementEvents"),r=t._,u=t.p,a=n("updating.attributes"),f=a._,l=a.p,v=n("updating.debounce"),g=v._,h=v.p;if((u||l)&&(o&&(o.s(),o.vn()),o=Mt(_||s,!0,C,{bn:O.concat(f||[]),wn:O.concat(f||[]),mn:r,On:Vt})),h)if(S.I(),d(g)){var p=g[0],w=g[1];i=!!c(p)&&p,e=!!c(w)&&w}else c(g)?(i=g,e=!1):(i=!1,e=!1)},vn:function(){o&&o.vn(),L&&L.vn(),I.vn(),T.vn()}}},Et=function(t){var r=t.Cn,i=t.Rn,e=r.fn,o=e.Z,u=e.B,a=e.tn,c=n(Tn.bind(0,o,"padding"),{o:mn,u:Tn()}),f=c.s,l=c.m;return function(n,t,r){var e=l(r),o=e._,c=e.p,v=wt(),d=v.F,s=v.q,_=n._n,g=n.pn,h=n.An,p=g._,w=g.p,b=t("paddingAbsolute"),m=b._,y=b.p;if(_||c||!s&&h){var x=f(r);o=x._,c=x.p}var O=y||w||c;if(O){var S=!m||!u&&!d,z=o.r+o.l,C=o.t+o.b,L={marginRight:S&&!p?-z:0,marginBottom:S?-C:0,marginLeft:S&&p?-z:0,top:S?-o.t:0,right:S?p?-o.r:"auto":0,left:S?p?"auto":-o.l:0,width:S?"calc(100% + "+z+"px)":""},A={paddingTop:S?o.t:0,paddingRight:S?o.r:0,paddingBottom:S?o.b:0,paddingLeft:S?o.l:0};In(u||a,L),In(a,A),i({Vn:{Bn:!S,B:o},En:u?A:Bn({},L,A)})}return{Dn:O}}},Dt=Math.max,Pt=Math.abs,kt=Math.round,Ft=42,Ht={o:bn,u:{w:0,h:0}},Yt=function(n){var t=ln(n),r=sn(n);return{w:r.width-t.w,h:r.height-t.h}},qt=function(){return window.devicePixelRatio%1==0?0:1},Nt=function(n,t,r,i){var e=n?"overflowX":"overflowY",o=0===r.indexOf("visible"),u="visible-hidden"===r,a="scroll"===r,c=t>0;return o&&(i[e]="visible"),a&&c&&(i[e]=r),{Pn:o,kn:u?"hidden":"scroll"}},Xt=function(t){var r=t.Cn,i=t.Fn,e=t.Hn,o=t.Rn,u=r.fn,a=u.Z,c=u.tn,f=u.cn,l=n(Yt.bind(0,c),Ht),v=l.s,d=l.m,s=n(dn.bind(0,c),Ht),_=s.s,g=s.m,h=n((function(n){var t=n.Yn,r=n.qn,i=n.Nn;return{w:Dt(0,kt(Dt(0,t.w-r.w)-(qt()||Dt(0,i.w)))),h:Dt(0,kt(Dt(0,t.h-r.h)-(qt()||Dt(0,i.h))))}}),Ht),w=h.s,b=h.m,m=function(n,t){if(In(c,{height:""}),t){var r=e().Vn,i=r.Bn,o=r.B,u=n.Xn,f=n.Un,l=Yt(a),v=vn(a),d=i||"content-box"===In(c,"boxSizing")?o.b+o.t:0,s=v.h+(Pt(l.h)<1?l.h:0);In(c,{height:s+(u.x?f.x:0)-d})}},y=function(n,t){var r=wt(),i=r.P,e=r.k,o=r.F,u=e.x,a=e.y,f=o||n?0:Ft,l=!t?In(c,["overflowX","overflowY"]):t,v={x:"scroll"===l.overflowX,y:"scroll"===l.overflowY};return{Xn:v,Wn:{x:u&&!!f,y:a&&!!f},Un:{x:v.x&&!o?u?f:i.x:0,y:v.y&&!o?a?f:i.y:0}}},x=function(n,t,r,o){if(i){var u=n.Un,a=n.Wn,l=a.x,v=a.y,d=u.x,s=u.y,_=e().En,g=_[o?"paddingRight":"paddingLeft"],h=_.paddingTop,p=t.w+(Pt(r.w)<1?r.w:0),w=t.h+(Pt(r.h)<1?r.h:0),b={w:s&&v?s+p-g+"px":"",h:d&&l?d+w-h+"px":""};if(f){var m=f.sheet;if(m){var y=m.cssRules;if(y){y.length||m.insertRule("#"+A(f,"id")+" + ."+Un+"::before {}",0);var x=y[0].style;x.width=b.w,x.height=b.h}}}else In(c,{"--os-vaw":b.w,"--os-vah":b.h})}return i},O=function(n,t,r,i){var o=n.Un,u=n.Wn,a=u.x,c=u.y,f=o.x,l=o.y,v=e().En,d=t?"marginLeft":"marginRight",s=t?"paddingLeft":"paddingRight",_=v[d],g=v.marginBottom,h=v[s],p=v.paddingBottom;i.width="calc(100% + "+(l+-1*_)+"px)",i[d]=-l+_,i.marginBottom=-f+g,r&&(i[s]=h+(c?l:0),i.paddingBottom=p+(a?f:0))};return function(n,t,r){var u,a=n.pn,f=n.Mn,l=n._n,s=n.Ln,h=n.An,z=n.Dn,C=wt(),L=C.q,A=C.F,M=C.k,I=f._,T=f.p,j=a._,R=a.p,V=t("nativeScrollbarsOverlaid.show"),B=V._,E=V.p,D=B&&M.x&&M.y,P=!L&&(l||h||s||E||T),k=d(r),F=g(r),H=b(r);if(E&&A&&(D?an(c,$n):un(c,$n)),P&&(u=y(D),m(u,!!I)),l||z||h||E||R){var Y=function(n,t,r){if(i){var o=r||y(n),u=e().En,a=wt().q,f=o.Wn,l=f.x,v=f.y,d={},s=function(n){return p(n.split(" "),(function(n){d[n]=u[n]}))};a||(d.height=""),l&&s("marginBottom paddingTop paddingBottom"),v&&s("marginLeft marginRight paddingLeft paddingRight");var _=In(c,S(d));return an(c,Un),In(c,d),{$n:function(){O(o,t,i,_),In(c,_),un(c,Un)},Gn:o}}return{$n:Sn}}(D,j,u),q=Y.$n,N=Y.Gn,X=k=v(r),U=X._,W=X.p,$=F=_(r),G=$._,J=$.p,K=vn(c),Q=G,Z=K;q(),(J||W||E)&&N&&!D&&x(N,G,U,j)&&(Z=vn(c),Q=dn(c)),H=w(r,{Nn:U,Yn:{w:Dt(G.w,Q.w),h:Dt(G.h,Q.h)},qn:{w:Z.w+Dt(0,K.w-G.w),h:Z.h+Dt(0,K.h-G.h)}})}var nn=k,tn=nn._,rn=nn.p,en=F,on=en._,cn=en.p,fn=H,ln=fn._,sn=fn.p,_n=t("overflow"),gn=_n._,hn=_n.p;if(z||rn||cn||sn||hn||E||R||P){var pn={marginRight:0,marginBottom:0,marginLeft:0,width:"",overflowY:"",overflowX:""},wn=function(n,t,r,i){var e=Nt(!0,t.w,r.x,i),o=e.Pn,u=e.kn,a=Nt(!1,t.h,r.y,i),c=a.Pn,f=a.kn;return o&&!c&&(i.overflowX=u),c&&!o&&(i.overflowY=f),y(n,i)}(D,ln,gn,pn),bn=x(wn,on,tn,j);O(wn,j,bn,pn),P&&m(wn,!!I),In(c,pn),o({Jn:wn.Xn,Kn:ln})}}},Ut=function(n,t){return n?t.split(".").reduce((function(n,t){return n&&O(n,t)?n[t]:void 0}),n):void 0},Wt={_:!1,g:!1,p:!1},$t={Vn:{Bn:!1,B:{t:0,r:0,b:0,l:0}},Jn:{x:!1,y:!1},Kn:{w:0,h:0},En:{marginRight:0,marginBottom:0,marginLeft:0,paddingTop:0,paddingRight:0,paddingBottom:0,paddingLeft:0}};return function(n,t,r){var i=z({},(0,wt().$)(),kn(t||{},ft,null,!0).T),e=xt(n),o=function(n,t){var r,i,e=$t,o=t.fn.tn,u=wt(),a=u.F,f=u.k,l=u.q,v=u.N,d=u.X,s=!a&&(f.x||f.y),_={V:n,Cn:t,Fn:s,Hn:function(){return e},Rn:function(n){e=z({},e,n)}},g=[(r=_,i=r.Cn.fn.D,function(n){var t=n.Mn,r=t._,e=t.p;return e&&In(i,{height:r?"":"100%",display:r?"":"inline"}),{_n:e,An:e}}),Et(_),Xt(_)],h=function(t,r,i){var e=t||{},u=e.pn,a=e.Mn,f=e._n,v=void 0===f?i||!1:f,d=e.Ln,_=void 0===d?i||!1:d,h=e.An,w=void 0===h?i||!1:h,x=e.Dn,O=void 0===x?i||!1:x,S=u||(b?b.hn(i).pn:Wt),z=a||(m?m.hn(i).Mn:Wt),C=function(t){return{_:Ut(n,t),p:i||void 0!==Ut(r,t)}},L=s||!l,A=L&&I(o),M=L&&T(o);y&&y(C),p(g,(function(n){var t=n({pn:S,Mn:z,_n:v,Ln:_,An:w,Dn:O},C,!!i)||{},r=t._n,e=t.Ln,o=t.An,u=t.Dn;v=r||v,_=e||_,w=o||w,O=u||O})),c(A)&&I(o,A),c(M)&&T(o,M),n.callbacks.onUpdated&&n.callbacks.onUpdated()},w=Bt(_,h),b=w.Tn,m=w.In,y=w.jn,x=w.vn,O=function(n,t){return h(null,n,t)},S=O.bind(null,null,!0);return v(S),console.log(wt()),{s:O,Qn:function(){return{Zn:e.Kn}},vn:function(){x(),d(S)}}}(i,e),u={options:function(n){if(n){var t=kn(n,ft,i,!0).T;C(t)||(z(i,t),o.s(t))}return i},state:function(){return o.Qn()},update:function(n){o.s(null,n)}};return u.update(!0),u}})); \ No newline at end of file +!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(n="undefined"!=typeof globalThis?globalThis:n||self).OverlayScrollbars=t()}(this,(function(){"use strict";var n=function(n,t){var r,i=t||{},e=i.o,o=i.u,u=i.v,a=e;return[function(t,i){var e=a,c=n?n(i,a,r):i,f=t||(o?!o(e,c):e!==c);return(f||u)&&(a=c,r=e),[a,f,r]},function(n){return[a,!!n,r]}]},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}var a=function(n){return o(n)||u(n)?""+n:i.call(n).replace(/^\[object (.+)\]$/,"$1").toLowerCase()};function c(n){return"number"==typeof n}function f(n){return"string"==typeof n}function l(n){return"boolean"==typeof n}function v(n){return"function"==typeof n}function s(n){return Array.isArray(n)}function d(n){return"object"==typeof n&&!s(n)&&!u(n)}function _(n){var t=!!n&&n.length,r=c(t)&&t>-1&&t%1==0;return!!(s(n)||!v(n)&&r)&&(!(t>0&&d(n))||t-1 in n)}function g(n){if(!n||!d(n)||"object"!==a(n))return!1;var t,r="constructor",i=n[r],u=i&&i.prototype,c=e.call(n,r),f=u&&e.call(u,"isPrototypeOf");if(i&&!c&&!f)return!1;for(t in n);return o(t)||e.call(n,t)}function h(n){var r=window.Element;return!!n&&(r?n instanceof r:n.nodeType===t)}function p(n,t){if(_(n))for(var r=0;r0;i=u[e++];)o=!!r(n.classList,i)&&o}return o},un=function(n,t){on(n,t,(function(n,t){return n.add(t)}))},an=function(n,t){on(n,t,(function(n,t){return n.remove(t)}))},cn={w:0,h:0},fn=function(){return{w:window.innerWidth,h:window.innerHeight}},ln=function(n){return n?{w:n.offsetWidth,h:n.offsetHeight}:cn},vn=function(n){return n?{w:n.clientWidth,h:n.clientHeight}:cn},sn=function(n){return n?{w:n.scrollWidth,h:n.scrollHeight}:cn},dn=function(n){return n.getBoundingClientRect()},_n=function(n){return n.split(" ")},gn=function(n,t,r,i){p(_n(t),(function(t){n.removeEventListener(t,r,i)}))},hn=function(n,t,r,i){var e=function(){if(o(T)){T=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){T=!0}}))}catch(n){}}return T}(),u=e&&i&&i.s||!1,a=i&&i._||!1,c=i&&i.g||!1,f=[],l=e?{passive:u,capture:a}:a;return p(_n(t),(function(t){var i=c?function(e){n.removeEventListener(t,i,a),r&&r(e)}:r;b(f,gn.bind(null,n,t,i,a)),n.addEventListener(t,i,l)})),S.bind(0,f)},pn=function(n){return function(n){return n.stopPropagation()}(n)||function(n){return n.preventDefault()}(n)},wn=function(n,t,r,i){if(n&&t){var e=!0;return p(r,(function(r){(i?i(n[r]):n[r])!==(i?i(t[r]):t[r])&&(e=!1)})),e}return!1},bn=function(n,t){return wn(n,t,["w","h"])},mn=function(n,t){return wn(n,t,["t","r","b","l"])},yn=function(n,t,r){return wn(n,t,["width","height"],r&&function(n){return Math.round(n)})},Sn=window.setTimeout,On=function(n){n&&window.clearTimeout(n),n&&tn(n)},xn=function(){},zn=function(n,t){var r,i,e,o,u=t.p,a=t.m,f=t.S,l=function(t){On(r),On(i),i=r=e=void 0,n.apply(this,t)},s=function(n){return f&&e?f(e,n):n},d=function(){r&&l(s(o)||o)},_=function(){var n=arguments,t=v(u)?u():u,f=c(t)&&t>=0;if(f){var _=v(a)?a():a,g=c(_)&&_>=0,h=t>0?Sn:rn,p=s(n),w=p||n,b=l.bind(0,w);p||l(e||n),On(r),r=h(b,t),g&&!i&&(i=Sn(d,_)),e=o=w}else l(n)};return _.O=d,_},Cn={opacity:1,zindex:1},Ln=function(n,t){var r=t?parseFloat(n):parseInt(n,10);return Number.isNaN(r)?0:r},An=function(n,t,r){return null!=t?t[r]||t.getPropertyValue(r):n.style[r]},In=function(n,t,r){try{if(n){var i=n.style;o(i[t])?i.setProperty(t,r):i[t]=function(n,t){return!Cn[n.toLowerCase()]&&c(t)?t+"px":t}(t,r)}}catch(e){}};function Mn(n,t){var r=f(t);if(s(t)||r){var i=r?"":{};if(n){var e=window.getComputedStyle(n,null);i=r?An(n,e,t):t.reduce((function(t,r){return t[r]=An(n,e,r),t}),i)}return i}p(x(t),(function(r){return In(n,r,t[r])}))}var jn=function(n,t,r){var i=t?t+"-":"",e=r?"-"+r:"",o=i+"top"+e,u=i+"right"+e,a=i+"bottom"+e,c=i+"left"+e,f=Mn(n,[o,u,a,c]);return{t:Ln(f[o]),r:Ln(f[u]),b:Ln(f[a]),l:Ln(f[c])}},Tn={x:0,y:0},Rn=function(n){var t=n?dn(n):0;return t?{x:t.left+window.pageYOffset,y:t.top+window.pageXOffset}:Tn};var Vn={exports:{}};!function(n){function t(){return n.exports=t=Object.assign?Object.assign.bind():function(n){for(var t=1;t0?"\r\nValid strings are: [ "+z.join(", ")+" ].":""));delete d[_]}})),{A:d,L:v}}(n,t,r||{},i||!1)},Yn="os-environment",qn=Yn+"-flexbox-glue",Nn=qn+"-max",Xn="os-host",Wn="os-padding",Un="os-viewport",$n=Un+"-arrange",Gn="os-content",Jn=Un+"-scrollbar-styled",Kn="os-size-observer",Qn=Kn+"-appear",Zn=Kn+"-listener",nt=Zn+"-scroll",tt=Zn+"-item",rt=tt+"-final",it="os-trinsic-observer",et="os-scrollbar",ot=et+"-horizontal",ut=et+"-vertical",at="os-scrollbar-track",ct="os-scrollbar-handle",ft=Fn.number,lt=[Fn.array,Fn.null],vt=[Fn.string,Fn.array,Fn.null],st=[!0,Fn.boolean],dt=[!1,Fn.boolean],_t="hidden scroll visible visible-hidden",gt=function n(t){var r={I:{},M:{}};return p(x(t),(function(i){var e=t[i];if(s(e))r.I[i]=e[1],r.M[i]=e[0];else{var o=n(e);r.I[i]=o.I,r.M[i]=o.M}})),r}({resize:["none","none both horizontal vertical"],paddingAbsolute:dt,updating:{elementEvents:[[["img","load"]],lt],attributes:[null,lt],debounce:[[0,33],[Fn.number,Fn.array,Fn.null]]},overflow:{x:["scroll",_t],y:["scroll",_t]},scrollbars:{visibility:["auto","visible hidden auto"],autoHide:["never","never scroll leavemove"],autoHideDelay:[800,ft],dragScroll:st,clickScroll:dt,touch:st},textarea:{dynWidth:dt,dynHeight:dt,inheritedAttrs:[["style","class"],vt]},nativeScrollbarsOverlaid:{show:dt,initialize:dt},callbacks:{onUpdated:[null,[Fn.function,Fn.null]]}}),ht=gt.I,pt=gt.M,wt=Math.abs,bt=Math.round,mt=function(n,t){P(n,t);var r=vn(t),i=ln(t);return{x:i.h-r.h,y:i.w-r.w}},yt=function(n,t){var r="hidden";Mn(n,{overflowX:r,overflowY:r,direction:"rtl"}),M(n,0);var i=Rn(n),e=Rn(t);M(n,-999);var o=Rn(t);return{i:i.x===e.x,n:e.x!==o.x}},St=function(n,t){un(n,qn);var r=dn(n),i=dn(t),e=yn(i,r,!0);un(n,Nn);var o=dn(n),u=dn(t),a=yn(u,o,!0);return e&&a},Ot=function(){var n=window.screen.deviceXDPI||0,t=window.screen.logicalXDPI||1;return window.devicePixelRatio||n/t},xt=function(){var n=document.body,t=N('
')[0],r=t.firstChild,i=new Set,e=mt(n,t),o=function(n){var t=!1;un(n,Jn);try{t="none"===Mn(n,J("scrollbar-width"))||"none"===window.getComputedStyle(n,"::-webkit-scrollbar").getPropertyValue("display")}catch(r){}return t}(t),u={x:0===e.x,y:0===e.y},a={j:null,T:null,R:null,V:null,B:null},c=a,f=pt,l={k:e,D:u,P:o,F:"-1"===Mn(t,"zIndex"),H:yt(t,r),Y:St(t,r),q:function(n){i.add(n)},N:function(n){i.delete(n)},X:function(){return kn({},c)},W:function(n){c=z({},c,n)},U:function(){return kn({},f)},$:function(n){f=z({},f,n)},G:a,J:f};if(I(t,"style"),Y(t),!(o||u.x&&u.y)){var v=fn(),s=Ot(),d=e;window.addEventListener("resize",(function(){if(i.size){var r=fn(),e={w:r.w-v.w,h:r.h-v.h};if(0===e.w&&0===e.h)return;var o={w:wt(e.w),h:wt(e.h)},u={w:wt(bt(r.w/(v.w/100))),h:wt(bt(r.h/(v.h/100)))},a=Ot(),c=o.w>2&&o.h>2,f=(_=u.h,g=wt(u.w),h=wt(_),!(g!==h&&g+1!==h&&g-1!==h));if(c&&f&&(a!==s&&s>0)){var l=Bn.k=mt(n,t);Y(t),d.x===l.x&&d.y===l.y||S(i),d=l}v=r,s=a}var _,g,h}))}return l},zt=function(){return Bn||(Bn=xt()),Bn},Ct=0,Lt=function(n){P(k(n),B(n)),Y(n)},At=function(){var n=zt(),t=n.P,r=n.D,i=!!(!n.F&&!t&&(r.x||r.y))&&document.createElement("style");return i&&(A(i,"id",$n+"-"+Ct),Ct++),i},It=function(n,t,r,i){var e=t||(v(r)?r(n):r);return e||q(i)},Mt=function(n,t,r,i,e){var o=l(t)||t?t:v(r)?r(n):r;return null===o?!!e&&q(i):!0===o?q(i):o},jt=function(n){var r,i,e,o,u=zt(),a=u.X,c=u.P,f=a(),l=f.j,v=f.T,s=f.R,d=f.V,_=(r=n,i=window.HTMLElement,!!r&&(i?r instanceof i:r.nodeType===t)),g=n,h=_?n:g.target,p=E(h,"textarea"),m=!p&&E(h,"body"),y=h.ownerDocument,O=y.body,z=y.defaultView,C={K:h,j:p?It(h,g.host,l,Xn):h,T:It(h,g.viewport,v,Un),R:Mt(h,g.padding,s,Wn,!c),V:Mt(h,g.content,d,Gn,!1),Z:At()},L={nn:z,tn:y,rn:k(O),in:O,en:p,on:m,un:_},A=x(C).reduce((function(n,t){var r=C[t];return b(n,!(!r||k(r))&&r)}),[]),I=function(n){return n?w(A,n)>-1:null},M=C.K,j=C.j,T=C.R,R=C.T,V=C.V,F=C.Z,q=[],N=p&&I(j),X=p?M:B([V,R,T,j,M].find((function(n){return!1===I(n)}))),W=V||R;return N&&(H(M,j),b(q,(function(){H(j,M),Y(j)}))),P(W,X),P(j,T),P(T||j,R),P(R,V),un(j,Xn),un(T,Wn),un(R,Un),un(V,Gn),b(q,(function(){_?(P(j,B(W)),Y(T||R),an(j,Xn)):(I(V)&&Lt(V),I(R)&&Lt(R),I(T)&&Lt(T),an(j,Xn),an(T,Wn),an(R,Un),an(V,Gn))})),c&&b(q,an.bind(0,R,Jn)),F&&(o=F,D(k(e=R),e,o),b(q,Y.bind(0,F))),{an:C,cn:L,fn:function(){S(q)}}},Tt=function(n){var t=q(et+" "+n),r=q(at),i=q(ct);return P(t,r),P(r,i),{ln:t,vn:r,sn:i}},Rt="animationstart",Vt="scroll",Et=3333333,Bt=function(n){return"rtl"===Mn(n,"direction")},kt=function(n){return n&&(n.height||n.width)},Dt=function(t,r,i){var e,o=i||{},u=o.dn,a=void 0!==u&&u,c=o._n,f=void 0!==c&&c,v=zt().H,_=N('
')[0],g=_.firstChild,h=Bt.bind(0,_),p=n(0,{o:void 0,v:!0,u:function(n,t){return!(!n||!kt(n)&&kt(t))}})[0],w=function(n){var t=s(n)&&n.length>0&&d(n[0]),i=!t&&l(n[0]),e=!1,o=!1,u=!0;if(t){var c=p(0,n.pop().contentRect),f=c[0],g=c[2],h=kt(f);o=!kt(g)&&h,u=!(e=!g||!h)}else i?u=n[1]:o=!0===n;if(a&&u){var w=i?n[0]:Bt(_);M(_,w?v.n?-Et:v.i?0:Et:Et),j(_,Et)}e||r({gn:!i,hn:i?n:void 0,_n:!!o})},m=[],y=!!f&&w;if(nn){var O=new nn(w);O.observe(g),b(m,(function(){O.disconnect()}))}else{var x=N('
');P(g,x),un(g,nt);var z,C=x[0],L=C.lastChild,A=C.firstChild,I=null==A?void 0:A.firstChild,T=ln(C),R=T,V=!1,E=function(){M(A,Et),j(A,Et),M(L,Et),j(L,Et)},B=function(n){z=0,V&&(T=R,w(!0===n))},k=function(n){R=ln(C),V=!n||!bn(R,T),n?(pn(n),V&&!z&&(tn(z),z=rn(B))):B(!1===n),E()};b(m,[hn(A,Vt,k),hn(L,Vt,k)]),Mn(I,{width:Et,height:Et}),E(),y=f?k.bind(0,!1):E}if(a){var D=(e=n(h,{o:!h()}))[0];b(m,hn(_,Vt,(function(n){var t=D(),r=t[0];t[1]&&(an(g,"ltr rtl"),un(g,r?"rtl":"ltr"),w(t)),pn(n)})))}return y&&(un(_,Qn),b(m,hn(_,Rt,y,{g:!!nn}))),F(t,_),{fn:function(){S(m),Y(_)},pn:function(n){return{wn:e?e[1](n):[!1,!1,!1]}}}},Pt=function(n,t,r,i){var e=!1,o=i||{},u=o.bn,a=o.mn,c=o.yn,l=o.Sn,v=o.On,s=o.xn,d=o.zn,_=function(n,t,r){var i,e=!1,o=function(o){r&&p(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 p(n[0],(function(r){var o=n[1],u=i.get(r);if(u){var a=u[0],c=u[1];a===o&&c()}var f=hn(r,o,(function(n){e?(f(),i.delete(r)):t(n)}));i.set(r,[o,f])}))}))};return r&&(i=new WeakMap,o()),{fn:function(){e=!0},Cn:o}}(n,zn((function(){e&&r(!0)}),{p:33,m:99}),c),g=_.fn,h=_.Cn,m=a||[],S=(u||[]).concat(m),O=function(e){var o=(t?s:v)||xn,u=d||xn,a=[],c=[],_=!1,g=!1,S=!1;p(e,(function(r){var e=r.attributeName,v=r.target,s=r.type,d=r.oldValue,h=r.addedNodes,p="attributes"===s,y="childList"===s,O=n===v,x=p&&f(e)?A(v,e):0,z=0!==x&&d!==x,C=w(m,e)>-1&&z;if(t&&!O){var L=!p,I=p&&C,M=I&&l&&E(v,l),j=(M?!o(v,e,d,x):L||I)&&!u(r,!!M,n,i);b(c,h),g=g||j,S=S||y}!t&&O&&z&&!o(v,e,d,x)&&(b(a,e),_=_||C)})),S&&!y(c)&&h((function(n){return c.reduce((function(t,r){return b(t,V(n,r)),E(r,n)?b(t,r):t}),[])})),t?g&&r(!1):y(a)&&!_||r(a,_)},x=new Q(O);return x.observe(n,{attributes:!0,attributeOldValue:!0,attributeFilter:S,subtree:t,childList:t,characterData:t}),e=!0,{fn:function(){e&&(g(),x.disconnect(),e=!1)},Ln:function(){e&&O(x.takeRecords())}}},Ft="os-",Ht=["tabindex"],Yt=["wrap","cols","rows"],qt=["id","class","style","open"],Nt=function(n,t,r,i){var e,o,u,a,c;return!("class"!==t||!r||!i)&&!!(o=i,u=(e=r)&&e.split(" "),a=o&&o.split(" "),c={},p(u,(function(n){c[n]=1})),p(a,(function(n){c[n]?delete c[n]:c[n]=1})),x(c)).find((function(n){return 0!==n.indexOf(Ft)}))},Xt=function(t,r){var i,e,o,u=t.An,a=u.an,l=u.cn,v=a.j,d=a.T,_=a.V,g=l.en,h=zt(),m=h.P,y=h.Y,O=g?Yt:qt.concat(Yt),x=zn(r,{p:function(){return i},m:function(){return e},S:function(n,t){var r=n[0],i=r.gn,e=r.In,o=r.Mn,u=t[0],a=u.gn,c=u.In,f=u.Mn;return[{gn:i||a,In:e||c,Mn:o||f}]}}),z=function(n){p(n||Ht,(function(n){if(w(Ht,n)>-1){var t=A(v,n);f(t)?A(d,n,t):I(d,n)}}))},C=function(n){(n?r:x)({Mn:!0})},L=(_||!y)&&function(t,r){var i=q(it),e=[],o=n((function(n){return 0===n.h||n.isIntersecting||n.intersectionRatio>0}),{o:!1}),u=o[0],a=o[1],c=function(n){if(n){var t=u(0,n);t[1]&&r(t)}};if(Z){var f=new Z((function(n){n&&n.length>0&&c(n.pop())}),{root:t});f.observe(i),b(e,(function(){f.disconnect()}))}else{var l=function(){var n=ln(i);c(n)};b(e,Dt(i,l).fn),l()}return F(t,i),{fn:function(){S(e),Y(i)},pn:function(n){return{jn:a(n)}}}}(v,(function(n){r({jn:n})})),M=Dt(v,(function(n){var t=n.gn,i=n.hn,e=n._n;(!t||e?r:x)({gn:t,wn:i})}),{_n:!0,dn:!m}),j=Pt(v,!1,(function(n,t){t?x({In:!0}):z(n)}),{mn:qt,bn:qt.concat(Ht),On:Nt});return z(),{Tn:L,Rn:M,Vn:function(n){var t=n("updating.elementEvents"),r=t[0],u=t[1],a=n("updating.attributes"),f=a[0],l=a[1],v=n("updating.debounce"),g=v[0],h=v[1];if((u||l)&&(o&&(o.Ln(),o.fn()),o=Pt(_||d,!0,C,{mn:O.concat(f||[]),bn:O.concat(f||[]),yn:r,xn:Nt})),h)if(x.O(),s(g)){var p=g[0],w=g[1];i=!!c(p)&&p,e=!!c(w)&&w}else c(g)?(i=g,e=!1):(i=!1,e=!1)},fn:function(){o&&o.fn(),L&&L.fn(),M.fn(),j.fn()}}},Wt=function(t){var r=t.An,i=t.En,e=r.an,o=e.j,u=e.R,a=e.T,c=n(jn.bind(0,o,"padding"),{u:mn,o:jn()}),f=c[0],l=c[1];return function(n,t,r){var e=l(r),o=e[0],c=e[1],v=zt(),s=v.P,d=v.Y,_=n.gn,g=n.wn,h=n.Mn,p=g[0],w=g[1],b=t("paddingAbsolute"),m=b[0],y=b[1];if(_||c||!d&&h){var S=f(r);o=S[0],c=S[1]}var O=y||w||c;if(O){var x=!m||!u&&!s,z=o.r+o.l,C=o.t+o.b,L={marginRight:x&&!p?-z:0,marginBottom:x?-C:0,marginLeft:x&&p?-z:0,top:x?-o.t:0,right:x?p?-o.r:"auto":0,left:x?p?"auto":-o.l:0,width:x?"calc(100% + "+z+"px)":""},A={paddingTop:x?o.t:0,paddingRight:x?o.r:0,paddingBottom:x?o.b:0,paddingLeft:x?o.l:0};Mn(u||a,L),Mn(a,A),i({Bn:{kn:!x,R:o},Dn:u?A:kn({},L,A)})}return{Pn:O}}},Ut=Math.max,$t=Math.abs,Gt=Math.round,Jt=42,Kt={u:bn,o:{w:0,h:0}},Qt=function(n){var t=ln(n),r=dn(n);return{w:r.width-t.w,h:r.height-t.h}},Zt=function(){return window.devicePixelRatio%1==0?0:1},nr=function(n,t,r,i){var e=n?"overflowX":"overflowY",o=0===r.indexOf("visible"),u="visible-hidden"===r,a="scroll"===r,c=t>0;return o&&(i[e]="visible"),a&&c&&(i[e]=r),{Fn:o,Hn:u?"hidden":"scroll"}},tr=function(t){var r=t.An,i=t.Yn,e=t.qn,o=t.En,u=r.an,a=u.j,c=u.T,f=u.Z,l=n(Qt.bind(0,c),Kt),v=l[0],s=l[1],d=n(sn.bind(0,c),Kt),_=d[0],g=d[1],h=n((function(n){var t=n.Nn,r=n.Xn,i=n.Wn;return{w:Ut(0,Gt(Ut(0,t.w-r.w)-(Zt()||Ut(0,i.w)))),h:Ut(0,Gt(Ut(0,t.h-r.h)-(Zt()||Ut(0,i.h))))}}),Kt),w=h[0],b=h[1],m=function(n,t){if(Mn(c,{height:""}),t){var r=zt().D,i=e().Bn,o=i.kn,u=i.R,f=n.Un,l=n.$n,v=Qt(a),s=vn(a),d="content-box"===Mn(c,"boxSizing"),_=o||d?u.b+u.t:0,g=s.h+($t(v.h)<1?v.h:0),h=!(r.x&&d);Mn(c,{height:g+(f.x&&h?l.x:0)-_})}},y=function(n,t){var r=zt(),i=r.k,e=r.D,o=r.P,u=e.x,a=e.y,f=o||n?0:Jt,l=!t?Mn(c,["overflowX","overflowY"]):t,v={x:"scroll"===l.overflowX,y:"scroll"===l.overflowY};return{Un:v,Gn:{x:u&&!!f,y:a&&!!f},$n:{x:v.x&&!o?u?f:i.x:0,y:v.y&&!o?a?f:i.y:0}}},S=function(n,t,r,o){if(i){var u=n.$n,a=n.Gn,l=a.x,v=a.y,s=u.x,d=u.y,_=e().Dn,g=_[o?"paddingRight":"paddingLeft"],h=_.paddingTop,p=t.w+($t(r.w)<1?r.w:0),w=t.h+($t(r.h)<1?r.h:0),b={w:d&&v?d+p-g+"px":"",h:s&&l?s+w-h+"px":""};if(f){var m=f.sheet;if(m){var y=m.cssRules;if(y){y.length||m.insertRule("#"+A(f,"id")+" + ."+$n+"::before {}",0);var S=y[0].style;S.width=b.w,S.height=b.h}}}else Mn(c,{"--os-vaw":b.w,"--os-vah":b.h})}return i},O=function(n,t,r,i){var o=n.$n,u=n.Gn,a=u.x,c=u.y,f=o.x,l=o.y,v=e().Dn,s=t?"marginLeft":"marginRight",d=t?"paddingLeft":"paddingRight",_=v[s],g=v.marginBottom,h=v[d],p=v.paddingBottom;i.width="calc(100% + "+(l+-1*_)+"px)",i[s]=-l+_,i.marginBottom=-f+g,r&&(i[d]=h+(c?l:0),i.paddingBottom=p+(a?f:0))};return function(n,t,r){var u,a=n.wn,f=n.jn,l=n.gn,d=n.In,h=n.Mn,z=n.Pn,C=zt(),L=C.Y,A=C.P,I=C.D,M=f[0],j=f[1],T=a[0],R=a[1],V=t("nativeScrollbarsOverlaid.show"),E=V[0],B=V[1],k=E&&I.x&&I.y,D=!L&&(l||h||d||B||j),P=s(r),F=g(r),H=b(r);if(B&&A&&(k?an(c,Jn):un(c,Jn)),D&&(u=y(k),m(u,!!M)),l||z||h||B||R){var Y=function(n,t,r){if(i){var o=r||y(n),u=e().Dn,a=zt().Y,f=o.Gn,l=f.x,v=f.y,s={},d=function(n){return p(n.split(" "),(function(n){s[n]=u[n]}))};a||(s.height=""),l&&d("marginBottom paddingTop paddingBottom"),v&&d("marginLeft marginRight paddingLeft paddingRight");var _=Mn(c,x(s));return an(c,$n),Mn(c,s),{Jn:function(){O(o,t,i,_),Mn(c,_),un(c,$n)},Kn:o}}return{Jn:xn}}(k,T,u),q=Y.Jn,N=Y.Kn,X=P=v(r),W=X[0],U=X[1],$=F=_(r),G=$[0],J=$[1],K=vn(c),Q=G,Z=K;q(),(J||U||B)&&N&&!k&&S(N,G,W,T)&&(Z=vn(c),Q=sn(c)),H=w(r,{Wn:W,Nn:{w:Ut(G.w,Q.w),h:Ut(G.h,Q.h)},Xn:{w:Z.w+Ut(0,K.w-G.w),h:Z.h+Ut(0,K.h-G.h)}})}var nn=P,tn=nn[0],rn=nn[1],en=F,on=en[0],cn=en[1],fn=H,ln=fn[0],dn=fn[1],_n=t("overflow"),gn=_n[0],hn=_n[1];if(z||rn||cn||dn||hn||B||R||D){var pn={marginRight:0,marginBottom:0,marginLeft:0,width:"",overflowY:"",overflowX:""},wn=function(n,t,r,i){var e=nr(!0,t.w,r.x,i),o=e.Fn,u=e.Hn,a=nr(!1,t.h,r.y,i),c=a.Fn,f=a.Hn;return o&&!c&&(i.overflowX=u),c&&!o&&(i.overflowY=f),y(n,i)}(k,ln,gn,pn),bn=S(wn,on,tn,T);O(wn,T,bn,pn),D&&m(wn,!!M),Mn(c,pn),o({Qn:wn.Un,Zn:ln})}}},rr=function(n,t){return n?t.split(".").reduce((function(n,t){return n&&O(n,t)?n[t]:void 0}),n):void 0},ir=[!1,!1,!1],er={Bn:{kn:!1,R:{t:0,r:0,b:0,l:0}},Qn:{x:!1,y:!1},Zn:{w:0,h:0},Dn:{marginRight:0,marginBottom:0,marginLeft:0,paddingTop:0,paddingRight:0,paddingBottom:0,paddingLeft:0}};return function(n,t,r){var i=z({},(0,zt().U)(),Hn(t||{},ht,null,!0).L),e=jt(n),o=function(n,t){var r=(0,zt().X)().B,i=t.an,e=t.cn,o=i.K,u=i.j,a=i.T,c=!e.un&&n.scrollbarsSlot,f=(v(c)?c(o,u,a):c)||(v(r)?r(o,u,a):r)||u,l=Tt(ot),s=Tt(ut),d=l.ln,_=s.ln;return P(f,d),P(f,_),{nt:l,tt:s,fn:function(){Y([d,_])}}}(n,e),u=function(n,t,r){var i,e,o=er,u=t.an.T,a=zt(),f=a.P,l=a.D,v=a.Y,s=a.q,d=a.N,_=!f&&(l.x||l.y),g={M:n,An:t,Yn:_,qn:function(){return o},En:function(n){o=z({},o,n)}},h=[(i=g,e=i.An.an.V,function(n){var t=n.jn,r=t[0],i=t[1];return i&&Mn(e,{height:r?"":"100%",display:r?"":"inline"}),{gn:i,Mn:i}}),Wt(g),tr(g)],w=function(t,r,i){var e=t||{},o=e.wn,a=e.jn,f=e.gn,l=void 0===f?i||!1:f,s=e.In,d=void 0===s?i||!1:s,g=e.Mn,w=void 0===g?i||!1:g,b=e.Pn,O=void 0===b?i||!1:b,x=o||(m?m.pn(i).wn:ir),z=a||(y?y.pn(i).jn:ir),C=function(t){return[rr(n,t),i||void 0!==rr(r,t)]},L=_||!v,A=L&&M(u),I=L&&j(u);S&&S(C),p(h,(function(n){var t=n({wn:x,jn:z,gn:l,In:d,Mn:w,Pn:O},C,!!i)||{},r=t.gn,e=t.In,o=t.Mn,u=t.Pn;l=r||l,d=e||d,w=o||w,O=u||O})),c(A)&&M(u,A),c(I)&&j(u,I),n.callbacks.onUpdated&&n.callbacks.onUpdated()},b=Xt(g,w),m=b.Rn,y=b.Tn,S=b.Vn,O=b.fn,x=function(n,t){return w(null,n,t)},C=x.bind(null,null,!0);return s(C),console.log(zt()),{Ln:x,rt:function(){return{it:o.Zn}},fn:function(){O(),d(C),t.fn(),r.fn()}}}(i,e,o),a={options:function(n){if(n){var t=Hn(n,ht,i,!0).L;C(t)||(z(i,t),u.Ln(t))}return i},state:function(){return u.rt()},update:function(n){u.Ln(null,n)},destroy:function(){return u.fn()}};return a.update(!0),a}})); \ No newline at end of file diff --git a/packages/overlayscrollbars/package.json b/packages/overlayscrollbars/package.json index 36dea9c..4513d20 100644 --- a/packages/overlayscrollbars/package.json +++ b/packages/overlayscrollbars/package.json @@ -3,12 +3,18 @@ "private": true, "description": "OverlayScrollbars version 2", "version": "0.0.1", + "files": [ + "src", + "dist" + ], + "types": "types/index.d.ts", "scripts": { "test": "jest --coverage --runInBand --detectOpenHandles", - "test:jsdom": "jest --coverage --runInBand --detectOpenHandles --selectProjects jsdom --testPathPattern", + "test:jsdom": "jest --coverage --runInBand --detectOpenHandles --testPathPattern", "test:browser": "jest --runInBand --detectOpenHandles --selectProjects browser --testPathPattern", "test:browser:quick": "jest --runInBand --detectOpenHandles --selectProjects browser --testPathIgnorePatterns=\"/node_modules/|/structureLifecycle/\"", "test:browser-dev": "jest --runInBand --detectOpenHandles --selectProjects browser-dev --testPathPattern", - "build": "rollup -c" + "build": "rollup -c", + "test:playwright": "playwright test" } } diff --git a/packages/overlayscrollbars/playwright.config.js b/packages/overlayscrollbars/playwright.config.js new file mode 100644 index 0000000..b6e8960 --- /dev/null +++ b/packages/overlayscrollbars/playwright.config.js @@ -0,0 +1 @@ +module.exports = require('../../playwright.config.base'); diff --git a/packages/overlayscrollbars/playwright.rollup.js b/packages/overlayscrollbars/playwright.rollup.js new file mode 100644 index 0000000..4cf77d8 --- /dev/null +++ b/packages/overlayscrollbars/playwright.rollup.js @@ -0,0 +1 @@ +module.exports = require('../../playwright.rollup.base'); diff --git a/packages/overlayscrollbars/rollup.config.js b/packages/overlayscrollbars/rollup.config.js index 6784969..f67c144 100644 --- a/packages/overlayscrollbars/rollup.config.js +++ b/packages/overlayscrollbars/rollup.config.js @@ -1,11 +1,12 @@ -const base = require('../../rollup.config.base'); +const createRollupConfig = require('../../rollup.config.base'); +const { devDependencies, peerDependencies } = require('./package.json'); -const config = { - name: 'OverlayScrollbars', - exports: 'auto', - globals: { - jquery: 'jQuery', +module.exports = createRollupConfig({ + project: 'OverlayScrollbars', + rollup: { + external: Object.keys(devDependencies || {}).concat(Object.keys(peerDependencies || {})), + output: { + exports: 'auto', + }, }, -}; - -module.exports = (_, ...args) => base(config, ...args); +}); diff --git a/packages/overlayscrollbars/src/lifecycles/lifecycleHub.ts b/packages/overlayscrollbars/src/lifecycles/lifecycleHub.ts index 11e2cf0..5ff6561 100644 --- a/packages/overlayscrollbars/src/lifecycles/lifecycleHub.ts +++ b/packages/overlayscrollbars/src/lifecycles/lifecycleHub.ts @@ -1,4 +1,16 @@ -import { XY, WH, TRBL, CacheValues, PartialOptions, each, hasOwnProperty, isNumber, scrollLeft, scrollTop, assignDeep } from 'support'; +import { + XY, + WH, + TRBL, + CacheValues, + PartialOptions, + each, + hasOwnProperty, + isNumber, + scrollLeft, + scrollTop, + assignDeep, +} from 'support'; import { OSOptions } from 'options'; import { getEnvironment } from 'environment'; import { StructureSetup } from 'setups/structureSetup'; @@ -17,10 +29,7 @@ export type Lifecycle = ( force: boolean ) => Partial | void; -export interface LifecycleOptionInfo { - readonly _value: T; - _changed: boolean; -} +export type LifecycleOptionInfo = [T, boolean]; export interface LifecycleCommunication { _paddingInfo: { @@ -64,13 +73,11 @@ export interface LifecycleHub { } const getPropByPath = (obj: any, path: string): T => - obj ? path.split('.').reduce((o, prop) => (o && hasOwnProperty(o, prop) ? o[prop] : undefined), obj) : undefined; + obj + ? path.split('.').reduce((o, prop) => (o && hasOwnProperty(o, prop) ? o[prop] : undefined), obj) + : undefined; -const booleanCacheValuesFallback: CacheValues = { - _value: false, - _previous: false, - _changed: false, -}; +const booleanCacheValuesFallback: CacheValues = [false, false, false]; const lifecycleCommunicationFallback: LifecycleCommunication = { _paddingInfo: { _absolute: false, @@ -100,7 +107,11 @@ const lifecycleCommunicationFallback: LifecycleCommunication = { }, }; -export const createLifecycleHub = (options: OSOptions, structureSetup: StructureSetup, scrollbarsSetup: ScrollbarsSetup): LifecycleHubInstance => { +export const createLifecycleHub = ( + options: OSOptions, + structureSetup: StructureSetup, + scrollbarsSetup: ScrollbarsSetup +): LifecycleHubInstance => { let lifecycleCommunication = lifecycleCommunicationFallback; const { _viewport } = structureSetup._targetObj; const { @@ -110,7 +121,8 @@ export const createLifecycleHub = (options: OSOptions, structureSetup: Structure _addListener: addEnvironmentListener, _removeListener: removeEnvironmentListener, } = getEnvironment(); - const doViewportArrange = !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y); + const doViewportArrange = + !_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y); const instance: LifecycleHub = { _options: options, _structureSetup: structureSetup, @@ -120,11 +132,21 @@ export const createLifecycleHub = (options: OSOptions, structureSetup: Structure lifecycleCommunication = assignDeep({}, lifecycleCommunication, newLifecycleCommunication); }, }; - const lifecycles: Lifecycle[] = [createTrinsicLifecycle(instance), createPaddingLifecycle(instance), createOverflowLifecycle(instance)]; + const lifecycles: Lifecycle[] = [ + createTrinsicLifecycle(instance), + createPaddingLifecycle(instance), + createOverflowLifecycle(instance), + ]; - const updateLifecycles = (updateHints?: Partial | null, changedOptions?: Partial | null, force?: boolean) => { + const updateLifecycles = ( + updateHints?: Partial | null, + changedOptions?: Partial | null, + force?: boolean + ) => { let { + // eslint-disable-next-line prefer-const _directionIsRTL, + // eslint-disable-next-line prefer-const _heightIntrinsic, _sizeChanged = force || false, _hostMutation = force || false, @@ -133,13 +155,19 @@ export const createLifecycleHub = (options: OSOptions, structureSetup: Structure } = updateHints || {}; const finalDirectionIsRTL = - _directionIsRTL || (_sizeObserver ? _sizeObserver._getCurrentCacheValues(force)._directionIsRTL : booleanCacheValuesFallback); + _directionIsRTL || + (_sizeObserver + ? _sizeObserver._getCurrentCacheValues(force)._directionIsRTL + : booleanCacheValuesFallback); const finalHeightIntrinsic = - _heightIntrinsic || (_trinsicObserver ? _trinsicObserver._getCurrentCacheValues(force)._heightIntrinsic : booleanCacheValuesFallback); - const checkOption: LifecycleCheckOption = (path) => ({ - _value: getPropByPath(options, path), - _changed: force || getPropByPath(changedOptions, path) !== undefined, - }); + _heightIntrinsic || + (_trinsicObserver + ? _trinsicObserver._getCurrentCacheValues(force)._heightIntrinsic + : booleanCacheValuesFallback); + const checkOption: LifecycleCheckOption = (path) => [ + getPropByPath(options, path), + force || getPropByPath(changedOptions, path) !== undefined, + ]; const adjustScrollOffset = doViewportArrange || !_flexboxGlue; const scrollOffsetX = adjustScrollOffset && scrollLeft(_viewport); const scrollOffsetY = adjustScrollOffset && scrollTop(_viewport); @@ -186,9 +214,15 @@ export const createLifecycleHub = (options: OSOptions, structureSetup: Structure options.callbacks.onUpdated(); } }; - const { _sizeObserver, _trinsicObserver, _updateObserverOptions, _destroy: destroyObservers } = lifecycleHubOservers(instance, updateLifecycles); + const { + _sizeObserver, + _trinsicObserver, + _updateObserverOptions, + _destroy: destroyObservers, + } = lifecycleHubOservers(instance, updateLifecycles); - const update = (changedOptions?: Partial | null, force?: boolean) => updateLifecycles(null, changedOptions, force); + const update = (changedOptions?: Partial | null, force?: boolean) => + updateLifecycles(null, changedOptions, force); const envUpdateListener = update.bind(null, null, true); addEnvironmentListener(envUpdateListener); diff --git a/packages/overlayscrollbars/src/lifecycles/lifecycleHubObservers.ts b/packages/overlayscrollbars/src/lifecycles/lifecycleHubObservers.ts index a7b4788..7ca9934 100644 --- a/packages/overlayscrollbars/src/lifecycles/lifecycleHubObservers.ts +++ b/packages/overlayscrollbars/src/lifecycles/lifecycleHubObservers.ts @@ -1,24 +1,40 @@ -import { CacheValues, diffClass, debounce, isArray, isNumber, each, indexOf, isString, attr, removeAttr } from 'support'; +import { + CacheValues, + diffClass, + debounce, + isArray, + isNumber, + each, + indexOf, + isString, + attr, + removeAttr, +} from 'support'; import { getEnvironment } from 'environment'; import { createSizeObserver, SizeObserverCallbackParams } from 'observers/sizeObserver'; import { createTrinsicObserver } from 'observers/trinsicObserver'; import { createDOMObserver, DOMObserver } from 'observers/domObserver'; import { LifecycleHub, LifecycleCheckOption, LifecycleUpdateHints } from 'lifecycles/lifecycleHub'; -//const hostSelector = `.${classNameHost}`; +// const hostSelector = `.${classNameHost}`; // TODO: observer textarea attrs if textarea // TODO: test _ignoreContentChange & _ignoreNestedTargetChange for content dom observer // TODO: test _ignoreTargetChange for target dom observer -//const viewportSelector = `.${classNameViewport}`; -//const contentSelector = `.${classNameContent}`; +// const viewportSelector = `.${classNameViewport}`; +// const contentSelector = `.${classNameContent}`; const ignorePrefix = 'os-'; const viewportAttrsFromTarget = ['tabindex']; const baseStyleChangingAttrsTextarea = ['wrap', 'cols', 'rows']; const baseStyleChangingAttrs = ['id', 'class', 'style', 'open']; -const ignoreTargetChange = (target: Node, attrName: string, oldValue: string | null, newValue: string | null) => { +const ignoreTargetChange = ( + target: Node, + attrName: string, + oldValue: string | null, + newValue: string | null +) => { if (attrName === 'class' && oldValue && newValue) { const diff = diffClass(oldValue, newValue); return !!diff.find((addedOrRemovedClass) => addedOrRemovedClass.indexOf(ignorePrefix) !== 0); @@ -26,7 +42,10 @@ const ignoreTargetChange = (target: Node, attrName: string, oldValue: string | n return false; }; -export const lifecycleHubOservers = (instance: LifecycleHub, updateLifecycles: (updateHints?: Partial | null) => unknown) => { +export const lifecycleHubOservers = ( + instance: LifecycleHub, + updateLifecycles: (updateHints?: Partial | null) => unknown +) => { let debounceTimeout: number | false | undefined; let debounceMaxDelay: number | false | undefined; let contentMutationObserver: DOMObserver | undefined; @@ -35,24 +54,37 @@ export const lifecycleHubOservers = (instance: LifecycleHub, updateLifecycles: ( const { _host, _viewport, _content } = _targetObj; const { _isTextarea } = _targetCtx; const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment(); - const contentMutationObserverAttr = _isTextarea ? baseStyleChangingAttrsTextarea : baseStyleChangingAttrs.concat(baseStyleChangingAttrsTextarea); - const updateLifecyclesWithDebouncedAdaptiveUpdateHints = debounce(updateLifecycles as (updateHints: Partial) => any, { - _timeout: () => debounceTimeout, - _maxDelay: () => debounceMaxDelay, - _mergeParams(prev, curr) { - const { _sizeChanged: prevSizeChanged, _hostMutation: prevHostMutation, _contentMutation: prevContentMutation } = prev[0]; - const { _sizeChanged: currSizeChanged, _hostMutation: currvHostMutation, _contentMutation: currContentMutation } = curr[0]; - const merged: [Partial] = [ - { - _sizeChanged: prevSizeChanged || currSizeChanged, - _hostMutation: prevHostMutation || currvHostMutation, - _contentMutation: prevContentMutation || currContentMutation, - }, - ]; + const contentMutationObserverAttr = _isTextarea + ? baseStyleChangingAttrsTextarea + : baseStyleChangingAttrs.concat(baseStyleChangingAttrsTextarea); + const updateLifecyclesWithDebouncedAdaptiveUpdateHints = debounce( + updateLifecycles as (updateHints: Partial) => any, + { + _timeout: () => debounceTimeout, + _maxDelay: () => debounceMaxDelay, + _mergeParams(prev, curr) { + const { + _sizeChanged: prevSizeChanged, + _hostMutation: prevHostMutation, + _contentMutation: prevContentMutation, + } = prev[0]; + const { + _sizeChanged: currSizeChanged, + _hostMutation: currvHostMutation, + _contentMutation: currContentMutation, + } = curr[0]; + const merged: [Partial] = [ + { + _sizeChanged: prevSizeChanged || currSizeChanged, + _hostMutation: prevHostMutation || currvHostMutation, + _contentMutation: prevContentMutation || currContentMutation, + }, + ]; - return merged; - }, - }); + return merged; + }, + } + ); const updateViewportAttrsFromHost = (attributes?: string[]) => { each(attributes || viewportAttrsFromTarget, (attribute) => { @@ -71,8 +103,15 @@ export const lifecycleHubOservers = (instance: LifecycleHub, updateLifecycles: ( _heightIntrinsic: heightIntrinsic, }); }; - const onSizeChanged = ({ _sizeChanged, _directionIsRTLCache, _appear }: SizeObserverCallbackParams) => { - const updateFn = !_sizeChanged || _appear ? updateLifecycles : updateLifecyclesWithDebouncedAdaptiveUpdateHints; + const onSizeChanged = ({ + _sizeChanged, + _directionIsRTLCache, + _appear, + }: SizeObserverCallbackParams) => { + const updateFn = + !_sizeChanged || _appear + ? updateLifecycles + : updateLifecyclesWithDebouncedAdaptiveUpdateHints; updateFn({ _sizeChanged, _directionIsRTL: _directionIsRTLCache, @@ -80,7 +119,9 @@ export const lifecycleHubOservers = (instance: LifecycleHub, updateLifecycles: ( }; const onContentMutation = (contentChangedTroughEvent: boolean) => { // if contentChangedTroughEvent is true its already debounced - const updateFn = contentChangedTroughEvent ? updateLifecycles : updateLifecyclesWithDebouncedAdaptiveUpdateHints; + const updateFn = contentChangedTroughEvent + ? updateLifecycles + : updateLifecyclesWithDebouncedAdaptiveUpdateHints; updateFn({ _contentMutation: true, }); @@ -95,8 +136,12 @@ export const lifecycleHubOservers = (instance: LifecycleHub, updateLifecycles: ( } }; - const trinsicObserver = (_content || !_flexboxGlue) && createTrinsicObserver(_host, onTrinsicChanged); - const sizeObserver = createSizeObserver(_host, onSizeChanged, { _appear: true, _direction: !_nativeScrollbarStyling }); + const trinsicObserver = + (_content || !_flexboxGlue) && createTrinsicObserver(_host, onTrinsicChanged); + const sizeObserver = createSizeObserver(_host, onSizeChanged, { + _appear: true, + _direction: !_nativeScrollbarStyling, + }); const hostMutationObserver = createDOMObserver(_host, false, onHostMutation, { _styleChangingAttributes: baseStyleChangingAttrs, _attributes: baseStyleChangingAttrs.concat(viewportAttrsFromTarget), @@ -104,9 +149,13 @@ export const lifecycleHubOservers = (instance: LifecycleHub, updateLifecycles: ( }); const updateOptions = (checkOption: LifecycleCheckOption) => { - const { _value: elementEvents, _changed: elementEventsChanged } = checkOption | null>('updating.elementEvents'); - const { _value: attributes, _changed: attributesChanged } = checkOption('updating.attributes'); - const { _value: debounce, _changed: debounceChanged } = checkOption | number | null>('updating.debounce'); + const [elementEvents, elementEventsChanged] = checkOption | null>( + 'updating.elementEvents' + ); + const [attributes, attributesChanged] = checkOption('updating.attributes'); + const [debounceValue, debounceChanged] = checkOption | number | null>( + 'updating.debounce' + ); const updateContentMutationObserver = elementEventsChanged || attributesChanged; if (updateContentMutationObserver) { @@ -119,7 +168,7 @@ export const lifecycleHubOservers = (instance: LifecycleHub, updateLifecycles: ( _attributes: contentMutationObserverAttr.concat(attributes || []), _eventContentChange: elementEvents, _ignoreNestedTargetChange: ignoreTargetChange, - //_nestedTargetSelector: hostSelector, + // _nestedTargetSelector: hostSelector, /* _ignoreContentChange: (mutation, isNestedTarget) => { const { target, attributeName } = mutation; @@ -135,13 +184,13 @@ export const lifecycleHubOservers = (instance: LifecycleHub, updateLifecycles: ( if (debounceChanged) { updateLifecyclesWithDebouncedAdaptiveUpdateHints._flush(); - if (isArray(debounce)) { - const timeout = debounce[0]; - const maxWait = debounce[1]; + if (isArray(debounceValue)) { + const timeout = debounceValue[0]; + const maxWait = debounceValue[1]; debounceTimeout = isNumber(timeout) ? timeout : false; debounceMaxDelay = isNumber(maxWait) ? maxWait : false; - } else if (isNumber(debounce)) { - debounceTimeout = debounce; + } else if (isNumber(debounceValue)) { + debounceTimeout = debounceValue; debounceMaxDelay = false; } else { debounceTimeout = false; diff --git a/packages/overlayscrollbars/src/lifecycles/overflowLifecycle.ts b/packages/overlayscrollbars/src/lifecycles/overflowLifecycle.ts index ec608f9..04cec63 100644 --- a/packages/overlayscrollbars/src/lifecycles/overflowLifecycle.ts +++ b/packages/overlayscrollbars/src/lifecycles/overflowLifecycle.ts @@ -59,7 +59,12 @@ const sizeFraction = (elm: HTMLElement): WH => { }; }; const fractionalPixelRatioTollerance = () => (window.devicePixelRatio % 1 === 0 ? 0 : 1); -const setAxisOverflowStyle = (horizontal: boolean, overflowAmount: number, behavior: OverflowBehavior, styleObj: StyleObject) => { +const setAxisOverflowStyle = ( + horizontal: boolean, + overflowAmount: number, + behavior: OverflowBehavior, + styleObj: StyleObject +) => { const overflowKey: keyof StyleObject = horizontal ? 'overflowX' : 'overflowY'; const behaviorIsVisible = behavior.indexOf('visible') === 0; const behaviorIsVisibleHidden = behavior === 'visible-hidden'; @@ -85,20 +90,43 @@ const setAxisOverflowStyle = (horizontal: boolean, overflowAmount: number, behav * @returns */ export const createOverflowLifecycle = (lifecycleHub: LifecycleHub): Lifecycle => { - const { _structureSetup, _doViewportArrange, _getLifecycleCommunication, _setLifecycleCommunication } = lifecycleHub; + const { + _structureSetup, + _doViewportArrange, + _getLifecycleCommunication, + _setLifecycleCommunication, + } = lifecycleHub; + const { _host, _viewport, _viewportArrange } = _structureSetup._targetObj; - const { _update: updateViewportSizeFraction, _current: getCurrentViewportSizeFraction } = createCache>( + + const [updateViewportSizeFraction, getCurrentViewportSizeFraction] = createCache>( sizeFraction.bind(0, _viewport), whCacheOptions ); - const { _update: updateViewportScrollSizeCache, _current: getCurrentViewportScrollSizeCache } = createCache>( - scrollSize.bind(0, _viewport), - whCacheOptions - ); - const { _update: updateOverflowAmountCache, _current: getCurrentOverflowAmountCache } = createCache, OverflowAmountCacheContext>( + + const [updateViewportScrollSizeCache, getCurrentViewportScrollSizeCache] = createCache< + WH + >(scrollSize.bind(0, _viewport), whCacheOptions); + + const [updateOverflowAmountCache, getCurrentOverflowAmountCache] = createCache< + WH, + OverflowAmountCacheContext + >( ({ _viewportScrollSize, _viewportClientSize, _viewportSizeFraction }) => ({ - w: max(0, round(max(0, _viewportScrollSize.w - _viewportClientSize.w) - (fractionalPixelRatioTollerance() || max(0, _viewportSizeFraction.w)))), - h: max(0, round(max(0, _viewportScrollSize.h - _viewportClientSize.h) - (fractionalPixelRatioTollerance() || max(0, _viewportSizeFraction.h)))), + w: max( + 0, + round( + max(0, _viewportScrollSize.w - _viewportClientSize.w) - + (fractionalPixelRatioTollerance() || max(0, _viewportSizeFraction.w)) + ) + ), + h: max( + 0, + round( + max(0, _viewportScrollSize.h - _viewportClientSize.h) - + (fractionalPixelRatioTollerance() || max(0, _viewportSizeFraction.h)) + ) + ), }), whCacheOptions ); @@ -108,22 +136,35 @@ export const createOverflowLifecycle = (lifecycleHub: LifecycleHub): Lifecycle = * @param viewportOverflowState The current overflow state. * @param heightIntrinsic Whether the host height is intrinsic or not. */ - const fixFlexboxGlue = (viewportOverflowState: ViewportOverflowState, heightIntrinsic: boolean) => { + const fixFlexboxGlue = ( + viewportOverflowState: ViewportOverflowState, + heightIntrinsic: boolean + ) => { style(_viewport, { height: '', }); if (heightIntrinsic) { - const { _absolute: paddingAbsolute, _padding: padding } = _getLifecycleCommunication()._paddingInfo; + const { _nativeScrollbarIsOverlaid } = getEnvironment(); + const { + _absolute: paddingAbsolute, + _padding: padding, + } = _getLifecycleCommunication()._paddingInfo; const { _overflowScroll, _scrollbarsHideOffset } = viewportOverflowState; const hostSizeFraction = sizeFraction(_host); const hostClientSize = clientSize(_host); // padding subtraction is only needed if padding is absolute or if viewport is content-box - const paddingVertical = paddingAbsolute || style(_viewport, 'boxSizing') === 'content-box' ? padding.b + padding.t : 0; - const fractionalClientHeight = hostClientSize.h + (abs(hostSizeFraction.h) < 1 ? hostSizeFraction.h : 0); + const isContentBox = style(_viewport, 'boxSizing') === 'content-box'; + const paddingVertical = paddingAbsolute || isContentBox ? padding.b + padding.t : 0; + const fractionalClientHeight = + hostClientSize.h + (abs(hostSizeFraction.h) < 1 ? hostSizeFraction.h : 0); + const subtractXScrollbar = !(_nativeScrollbarIsOverlaid.x && isContentBox); style(_viewport, { - height: fractionalClientHeight + (_overflowScroll.x ? _scrollbarsHideOffset.x : 0) - paddingVertical, + height: + fractionalClientHeight + + (_overflowScroll.x && subtractXScrollbar ? _scrollbarsHideOffset.x : 0) - + paddingVertical, }); } }; @@ -134,19 +175,39 @@ export const createOverflowLifecycle = (lifecycleHub: LifecycleHub): Lifecycle = * @param viewportStyleObj The viewport style object where the overflow scroll property can be read of, or undefined if shall be determined. * @returns A object which contains informations about the current overflow state. */ - const getViewportOverflowState = (showNativeOverlaidScrollbars: boolean, viewportStyleObj?: StyleObject): ViewportOverflowState => { - const { _nativeScrollbarSize, _nativeScrollbarIsOverlaid, _nativeScrollbarStyling } = getEnvironment(); + const getViewportOverflowState = ( + showNativeOverlaidScrollbars: boolean, + viewportStyleObj?: StyleObject + ): ViewportOverflowState => { + const { + _nativeScrollbarSize, + _nativeScrollbarIsOverlaid, + _nativeScrollbarStyling, + } = getEnvironment(); const { x: overlaidX, y: overlaidY } = _nativeScrollbarIsOverlaid; const determineOverflow = !viewportStyleObj; - const arrangeHideOffset = !_nativeScrollbarStyling && !showNativeOverlaidScrollbars ? overlaidScrollbarsHideOffset : 0; - const styleObj = determineOverflow ? style(_viewport, ['overflowX', 'overflowY']) : viewportStyleObj; + const arrangeHideOffset = + !_nativeScrollbarStyling && !showNativeOverlaidScrollbars ? overlaidScrollbarsHideOffset : 0; + const styleObj = determineOverflow + ? style(_viewport, ['overflowX', 'overflowY']) + : viewportStyleObj; const scroll = { x: styleObj!.overflowX === 'scroll', y: styleObj!.overflowY === 'scroll', }; const scrollbarsHideOffset = { - x: scroll.x && !_nativeScrollbarStyling ? (overlaidX ? arrangeHideOffset : _nativeScrollbarSize.x) : 0, - y: scroll.y && !_nativeScrollbarStyling ? (overlaidY ? arrangeHideOffset : _nativeScrollbarSize.y) : 0, + x: + scroll.x && !_nativeScrollbarStyling + ? overlaidX + ? arrangeHideOffset + : _nativeScrollbarSize.x + : 0, + y: + scroll.y && !_nativeScrollbarStyling + ? overlaidY + ? arrangeHideOffset + : _nativeScrollbarSize.y + : 0, }; return { @@ -173,8 +234,18 @@ export const createOverflowLifecycle = (lifecycleHub: LifecycleHub): Lifecycle = overflow: OverflowOption, viewportStyleObj: StyleObject ): ViewportOverflowState => { - const { _visible: xVisible, _behavior: xVisibleBehavior } = setAxisOverflowStyle(true, overflowAmount!.w, overflow.x, viewportStyleObj); - const { _visible: yVisible, _behavior: yVisibleBehavior } = setAxisOverflowStyle(false, overflowAmount!.h, overflow.y, viewportStyleObj); + const { _visible: xVisible, _behavior: xVisibleBehavior } = setAxisOverflowStyle( + true, + overflowAmount!.w, + overflow.x, + viewportStyleObj + ); + const { _visible: yVisible, _behavior: yVisibleBehavior } = setAxisOverflowStyle( + false, + overflowAmount!.h, + overflow.y, + viewportStyleObj + ); if (xVisible && !yVisible) { viewportStyleObj.overflowX = xVisibleBehavior; @@ -204,14 +275,26 @@ export const createOverflowLifecycle = (lifecycleHub: LifecycleHub): Lifecycle = const { x: arrangeX, y: arrangeY } = _scrollbarsHideOffsetArrange; const { x: hideOffsetX, y: hideOffsetY } = _scrollbarsHideOffset; const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication(); - const viewportArrangeHorizontalPaddingKey: keyof StyleObject = directionIsRTL ? 'paddingRight' : 'paddingLeft'; - const viewportArrangeHorizontalPaddingValue = viewportPaddingStyle[viewportArrangeHorizontalPaddingKey] as number; + const viewportArrangeHorizontalPaddingKey: keyof StyleObject = directionIsRTL + ? 'paddingRight' + : 'paddingLeft'; + const viewportArrangeHorizontalPaddingValue = viewportPaddingStyle[ + viewportArrangeHorizontalPaddingKey + ] as number; const viewportArrangeVerticalPaddingValue = viewportPaddingStyle.paddingTop as number; - const fractionalContentWidth = viewportScrollSize.w + (abs(viewportSizeFraction.w) < 1 ? viewportSizeFraction.w : 0); - const fractionalContenHeight = viewportScrollSize.h + (abs(viewportSizeFraction.h) < 1 ? viewportSizeFraction.h : 0); + const fractionalContentWidth = + viewportScrollSize.w + (abs(viewportSizeFraction.w) < 1 ? viewportSizeFraction.w : 0); + const fractionalContenHeight = + viewportScrollSize.h + (abs(viewportSizeFraction.h) < 1 ? viewportSizeFraction.h : 0); const arrangeSize = { - w: hideOffsetY && arrangeY ? `${hideOffsetY + fractionalContentWidth - viewportArrangeHorizontalPaddingValue}px` : '', - h: hideOffsetX && arrangeX ? `${hideOffsetX + fractionalContenHeight - viewportArrangeVerticalPaddingValue}px` : '', + w: + hideOffsetY && arrangeY + ? `${hideOffsetY + fractionalContentWidth - viewportArrangeHorizontalPaddingValue}px` + : '', + h: + hideOffsetX && arrangeX + ? `${hideOffsetX + fractionalContenHeight - viewportArrangeVerticalPaddingValue}px` + : '', }; // adjust content arrange / before element @@ -221,7 +304,10 @@ export const createOverflowLifecycle = (lifecycleHub: LifecycleHub): Lifecycle = const { cssRules } = sheet; if (cssRules) { if (!cssRules.length) { - sheet.insertRule(`#${attr(_viewportArrange, 'id')} + .${classNameViewportArrange}::before {}`, 0); + sheet.insertRule( + `#${attr(_viewportArrange, 'id')} + .${classNameViewportArrange}::before {}`, + 0 + ); } // @ts-ignore @@ -260,7 +346,9 @@ export const createOverflowLifecycle = (lifecycleHub: LifecycleHub): Lifecycle = const { x: hideOffsetX, y: hideOffsetY } = _scrollbarsHideOffset; const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication(); const horizontalMarginKey: keyof StyleObject = directionIsRTL ? 'marginLeft' : 'marginRight'; - const viewportHorizontalPaddingKey: keyof StyleObject = directionIsRTL ? 'paddingLeft' : 'paddingRight'; + const viewportHorizontalPaddingKey: keyof StyleObject = directionIsRTL + ? 'paddingLeft' + : 'paddingRight'; const horizontalMarginValue = viewportPaddingStyle[horizontalMarginKey] as number; const verticalMarginValue = viewportPaddingStyle.marginBottom as number; const horizontalPaddingValue = viewportPaddingStyle[viewportHorizontalPaddingKey] as number; @@ -275,7 +363,8 @@ export const createOverflowLifecycle = (lifecycleHub: LifecycleHub): Lifecycle = // viewport arrange additional styles if (viewportArrange) { - viewportStyleObj[viewportHorizontalPaddingKey] = horizontalPaddingValue + (arrangeY ? hideOffsetY : 0); + viewportStyleObj[viewportHorizontalPaddingKey] = + horizontalPaddingValue + (arrangeY ? hideOffsetY : 0); viewportStyleObj.paddingBottom = verticalPaddingValue + (arrangeX ? hideOffsetX : 0); } }; @@ -293,7 +382,8 @@ export const createOverflowLifecycle = (lifecycleHub: LifecycleHub): Lifecycle = viewportOverflowState?: ViewportOverflowState ): UndoViewportArrangeResult => { if (_doViewportArrange) { - const finalViewportOverflowState = viewportOverflowState || getViewportOverflowState(showNativeOverlaidScrollbars); + const finalViewportOverflowState = + viewportOverflowState || getViewportOverflowState(showNativeOverlaidScrollbars); const { _viewportPaddingStyle: viewportPaddingStyle } = _getLifecycleCommunication(); const { _flexboxGlue } = getEnvironment(); const { _scrollbarsHideOffsetArrange } = finalViewportOverflowState; @@ -322,7 +412,12 @@ export const createOverflowLifecycle = (lifecycleHub: LifecycleHub): Lifecycle = return { _redoViewportArrange: () => { - hideNativeScrollbars(finalViewportOverflowState, directionIsRTL, _doViewportArrange, prevStyle); + hideNativeScrollbars( + finalViewportOverflowState, + directionIsRTL, + _doViewportArrange, + prevStyle + ); style(_viewport, prevStyle); addClass(_viewport, classNameViewportArrange); }, @@ -335,16 +430,32 @@ export const createOverflowLifecycle = (lifecycleHub: LifecycleHub): Lifecycle = }; return (updateHints, checkOption, force) => { - const { _directionIsRTL, _heightIntrinsic, _sizeChanged, _hostMutation, _contentMutation, _paddingStyleChanged } = updateHints; + const { + _directionIsRTL, + _heightIntrinsic, + _sizeChanged, + _hostMutation, + _contentMutation, + _paddingStyleChanged, + } = updateHints; const { _flexboxGlue, _nativeScrollbarStyling, _nativeScrollbarIsOverlaid } = getEnvironment(); - const { _value: heightIntrinsic, _changed: heightIntrinsicChanged } = _heightIntrinsic; - const { _value: directionIsRTL, _changed: directionChanged } = _directionIsRTL; - const { _value: showNativeOverlaidScrollbarsOption, _changed: showNativeOverlaidScrollbarsChanged } = checkOption( - 'nativeScrollbarsOverlaid.show' - ); - const showNativeOverlaidScrollbars = showNativeOverlaidScrollbarsOption && _nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.y; + const [heightIntrinsic, heightIntrinsicChanged] = _heightIntrinsic; + const [directionIsRTL, directionChanged] = _directionIsRTL; + const [showNativeOverlaidScrollbarsOption, showNativeOverlaidScrollbarsChanged] = checkOption< + boolean + >('nativeScrollbarsOverlaid.show'); + const showNativeOverlaidScrollbars = + showNativeOverlaidScrollbarsOption && + _nativeScrollbarIsOverlaid.x && + _nativeScrollbarIsOverlaid.y; const adjustFlexboxGlue = - !_flexboxGlue && (_sizeChanged || _contentMutation || _hostMutation || showNativeOverlaidScrollbarsChanged || heightIntrinsicChanged); + !_flexboxGlue && + (_sizeChanged || + _contentMutation || + _hostMutation || + showNativeOverlaidScrollbarsChanged || + heightIntrinsicChanged); + let viewportSizeFractionCache: CacheValues> = getCurrentViewportSizeFraction(force); let viewportScrollSizeCache: CacheValues> = getCurrentViewportScrollSizeCache(force); let overflowAmuntCache: CacheValues> = getCurrentOverflowAmountCache(force); @@ -363,14 +474,29 @@ export const createOverflowLifecycle = (lifecycleHub: LifecycleHub): Lifecycle = fixFlexboxGlue(preMeasureViewportOverflowState, !!heightIntrinsic); } - if (_sizeChanged || _paddingStyleChanged || _contentMutation || showNativeOverlaidScrollbarsChanged || directionChanged) { - const { _redoViewportArrange, _viewportOverflowState: undoViewportArrangeOverflowState } = undoViewportArrange( + if ( + _sizeChanged || + _paddingStyleChanged || + _contentMutation || + showNativeOverlaidScrollbarsChanged || + directionChanged + ) { + const { + _redoViewportArrange, + _viewportOverflowState: undoViewportArrangeOverflowState, + } = undoViewportArrange( showNativeOverlaidScrollbars, directionIsRTL!, preMeasureViewportOverflowState ); - const { _value: viewportSizeFraction, _changed: viewportSizeFractionCahnged } = (viewportSizeFractionCache = updateViewportSizeFraction(force)); - const { _value: viewportScrollSize, _changed: viewportScrollSizeChanged } = (viewportScrollSizeCache = updateViewportScrollSizeCache(force)); + const [ + viewportSizeFraction, + viewportSizeFractionCahnged, + ] = (viewportSizeFractionCache = updateViewportSizeFraction(force)); + const [ + viewportScrollSize, + viewportScrollSizeChanged, + ] = (viewportScrollSizeCache = updateViewportScrollSizeCache(force)); const viewportContentSize = clientSize(_viewport); let arrangedViewportScrollSize = viewportScrollSize!; let arrangedViewportClientSize = viewportContentSize; @@ -379,10 +505,17 @@ export const createOverflowLifecycle = (lifecycleHub: LifecycleHub): Lifecycle = // if re measure is required (only required if content arrange strategy is used) if ( - (viewportScrollSizeChanged || viewportSizeFractionCahnged || showNativeOverlaidScrollbarsChanged) && + (viewportScrollSizeChanged || + viewportSizeFractionCahnged || + showNativeOverlaidScrollbarsChanged) && undoViewportArrangeOverflowState && !showNativeOverlaidScrollbars && - arrangeViewport(undoViewportArrangeOverflowState, viewportScrollSize!, viewportSizeFraction!, directionIsRTL!) + arrangeViewport( + undoViewportArrangeOverflowState, + viewportScrollSize!, + viewportSizeFraction!, + directionIsRTL! + ) ) { arrangedViewportClientSize = clientSize(_viewport); arrangedViewportScrollSize = scrollSize(_viewport); @@ -401,10 +534,10 @@ export const createOverflowLifecycle = (lifecycleHub: LifecycleHub): Lifecycle = }); } - const { _value: viewportSizeFraction, _changed: viewportSizeFractionChanged } = viewportSizeFractionCache; - const { _value: viewportScrollSize, _changed: viewportScrollSizeChanged } = viewportScrollSizeCache; - const { _value: overflowAmount, _changed: overflowAmountChanged } = overflowAmuntCache; - const { _value: overflow, _changed: overflowChanged } = checkOption('overflow'); + const [viewportSizeFraction, viewportSizeFractionChanged] = viewportSizeFractionCache; + const [viewportScrollSize, viewportScrollSizeChanged] = viewportScrollSizeCache; + const [overflowAmount, overflowAmountChanged] = overflowAmuntCache; + const [overflow, overflowChanged] = checkOption('overflow'); if ( _paddingStyleChanged || @@ -425,8 +558,18 @@ export const createOverflowLifecycle = (lifecycleHub: LifecycleHub): Lifecycle = overflowX: '', }; - const viewportOverflowState = setViewportOverflowState(showNativeOverlaidScrollbars, overflowAmount!, overflow, viewportStyle); - const viewportArranged = arrangeViewport(viewportOverflowState, viewportScrollSize!, viewportSizeFraction!, directionIsRTL!); + const viewportOverflowState = setViewportOverflowState( + showNativeOverlaidScrollbars, + overflowAmount!, + overflow, + viewportStyle + ); + const viewportArranged = arrangeViewport( + viewportOverflowState, + viewportScrollSize!, + viewportSizeFraction!, + directionIsRTL! + ); hideNativeScrollbars(viewportOverflowState, directionIsRTL!, viewportArranged, viewportStyle); if (adjustFlexboxGlue) { diff --git a/packages/overlayscrollbars/src/lifecycles/paddingLifecycle.ts b/packages/overlayscrollbars/src/lifecycles/paddingLifecycle.ts index 231c1b5..c72afdf 100644 --- a/packages/overlayscrollbars/src/lifecycles/paddingLifecycle.ts +++ b/packages/overlayscrollbars/src/lifecycles/paddingLifecycle.ts @@ -11,21 +11,24 @@ import { getEnvironment } from 'environment'; export const createPaddingLifecycle = (lifecycleHub: LifecycleHub): Lifecycle => { const { _structureSetup, _setLifecycleCommunication } = lifecycleHub; const { _host, _padding, _viewport } = _structureSetup._targetObj; - const { _update: updatePaddingCache, _current: currentPaddingCache } = createCache(topRightBottomLeft.bind(0, _host, 'padding'), { - _equal: equalTRBL, - _initialValue: topRightBottomLeft(), - }); + const [updatePaddingCache, currentPaddingCache] = createCache( + topRightBottomLeft.bind(0, _host, 'padding'), + { + _equal: equalTRBL, + _initialValue: topRightBottomLeft(), + } + ); return (updateHints, checkOption, force) => { - let { _value: padding, _changed: paddingChanged } = currentPaddingCache(force); + let [padding, paddingChanged] = currentPaddingCache(force); const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment(); const { _sizeChanged, _directionIsRTL, _contentMutation } = updateHints; - const { _value: directionIsRTL, _changed: directionChanged } = _directionIsRTL; - const { _value: paddingAbsolute, _changed: paddingAbsoluteChanged } = checkOption('paddingAbsolute'); + const [directionIsRTL, directionChanged] = _directionIsRTL; + const [paddingAbsolute, paddingAbsoluteChanged] = checkOption('paddingAbsolute'); const contentMutation = !_flexboxGlue && _contentMutation; if (_sizeChanged || paddingChanged || contentMutation) { - ({ _value: padding, _changed: paddingChanged } = updatePaddingCache(force)); + [padding, paddingChanged] = updatePaddingCache(force); } const paddingStyleChanged = paddingAbsoluteChanged || directionChanged || paddingChanged; diff --git a/packages/overlayscrollbars/src/lifecycles/trinsicLifecycle.ts b/packages/overlayscrollbars/src/lifecycles/trinsicLifecycle.ts index b5a786a..64ff7c8 100644 --- a/packages/overlayscrollbars/src/lifecycles/trinsicLifecycle.ts +++ b/packages/overlayscrollbars/src/lifecycles/trinsicLifecycle.ts @@ -12,7 +12,7 @@ export const createTrinsicLifecycle = (lifecycleHub: LifecycleHub): Lifecycle => return (updateHints) => { const { _heightIntrinsic } = updateHints; - const { _value: heightIntrinsic, _changed: heightIntrinsicChanged } = _heightIntrinsic; + const [heightIntrinsic, heightIntrinsicChanged] = _heightIntrinsic; if (heightIntrinsicChanged) { style(_content, { diff --git a/packages/overlayscrollbars/src/observers/sizeObserver.ts b/packages/overlayscrollbars/src/observers/sizeObserver.ts index 663b9fc..fe0d14b 100644 --- a/packages/overlayscrollbars/src/observers/sizeObserver.ts +++ b/packages/overlayscrollbars/src/observers/sizeObserver.ts @@ -22,6 +22,7 @@ import { isArray, isBoolean, removeClass, + isObject, } from 'support'; import { getEnvironment } from 'environment'; import { @@ -53,24 +54,10 @@ export interface SizeObserver { }; } -/* -const directionIsRTLMap = { - direction: ['rtl'], - 'writing-mode': ['sideways-rl', 'tb', 'tb-rl', 'vertical-rl'], -}; -const directionIsRTL = (elm: HTMLElement): boolean => { - let isRTL = false; - const styles = style(elm, ['direction', 'writing-mode']); - each(styles, (value, key) => { - isRTL = isRTL || indexOf(directionIsRTLMap[key], value) > -1; - }); - return isRTL; -}; -*/ const animationStartEventName = 'animationstart'; const scrollEventName = 'scroll'; const scrollAmount = 3333333; -const directionIsRTL = (elm: HTMLElement): boolean => style(elm, 'direction') === 'rtl'; +const getElmDirectionIsRTL = (elm: HTMLElement): boolean => style(elm, 'direction') === 'rtl'; const domRectHasDimensions = (rect?: DOMRectReadOnly) => rect && (rect.height || rect.width); /** @@ -85,12 +72,20 @@ export const createSizeObserver = ( onSizeChangedCallback: (params: SizeObserverCallbackParams) => any, options?: SizeObserverOptions ): SizeObserver => { - const { _direction: observeDirectionChange = false, _appear: observeAppearChange = false } = options || {}; + const { _direction: observeDirectionChange = false, _appear: observeAppearChange = false } = + options || {}; const { _rtlScrollBehavior: rtlScrollBehavior } = getEnvironment(); - const baseElements = createDOM(`
`); + const baseElements = createDOM( + `
` + ); const sizeObserver = baseElements[0] as HTMLElement; const listenerElement = sizeObserver.firstChild as HTMLElement; - const { _update: updateResizeObserverContentRectCache } = createCache(0, { + const getIsDirectionRTL = getElmDirectionIsRTL.bind(0, sizeObserver); + const [updateResizeObserverContentRectCache] = createCache< + DOMRectReadOnly | undefined, + DOMRectReadOnly + >(0, { + _initialValue: undefined, _alwaysUpdateValues: true, _equal: (currVal, newVal) => !( @@ -99,26 +94,37 @@ export const createSizeObserver = ( (!domRectHasDimensions(currVal) && domRectHasDimensions(newVal)) ), }); - const onSizeChangedCallbackProxy = (sizeChangedContext?: CacheValues | ResizeObserverEntry[] | Event | boolean) => { - const hasDirectionCache = sizeChangedContext && isBoolean((sizeChangedContext as CacheValues)._value); + const onSizeChangedCallbackProxy = ( + sizeChangedContext?: CacheValues | ResizeObserverEntry[] | Event | boolean + ) => { + const isResizeObserverCall = + isArray(sizeChangedContext) && + sizeChangedContext.length > 0 && + isObject(sizeChangedContext[0]); + + const hasDirectionCache = + !isResizeObserverCall && isBoolean((sizeChangedContext as CacheValues)[0]); let skip = false; let appear: boolean | number | undefined = false; let doDirectionScroll = true; // always true if sizeChangedContext is Event (appear callback or RO. Polyfill) // if triggered from RO. - if (isArray(sizeChangedContext) && sizeChangedContext.length > 0) { - const { _previous, _value } = updateResizeObserverContentRectCache(0, sizeChangedContext.pop()!.contentRect); - const hasDimensions = domRectHasDimensions(_value); - const hadDimensions = domRectHasDimensions(_previous); - skip = !_previous || !hasDimensions; // skip on initial RO. call or if display is none + if (isResizeObserverCall) { + const [currRContentRect, , prevContentRect] = updateResizeObserverContentRectCache( + 0, + (sizeChangedContext as ResizeObserverEntry[]).pop()!.contentRect + ); + const hasDimensions = domRectHasDimensions(currRContentRect); + const hadDimensions = domRectHasDimensions(prevContentRect); + skip = !prevContentRect || !hasDimensions; // skip on initial RO. call or if display is none appear = !hadDimensions && hasDimensions; doDirectionScroll = !skip; // direction scroll when not skipping } // else if its triggered with DirectionCache else if (hasDirectionCache) { - doDirectionScroll = (sizeChangedContext as CacheValues)._changed; // direction scroll when DirectionCache changed, false otherwise + [, doDirectionScroll] = sizeChangedContext as CacheValues; // direction scroll when DirectionCache changed, false otherwise } // else if it triggered with appear from polyfill else { @@ -126,21 +132,36 @@ export const createSizeObserver = ( } if (observeDirectionChange && doDirectionScroll) { - const rtl = hasDirectionCache ? (sizeChangedContext as CacheValues)._value : directionIsRTL(sizeObserver); - scrollLeft(sizeObserver, rtl ? (rtlScrollBehavior.n ? -scrollAmount : rtlScrollBehavior.i ? 0 : scrollAmount) : scrollAmount); + const rtl = hasDirectionCache + ? (sizeChangedContext as CacheValues)[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 as CacheValues) : undefined, + _directionIsRTLCache: hasDirectionCache + ? (sizeChangedContext as CacheValues) + : undefined, _appear: !!appear, }); } }; const offListeners: (() => void)[] = []; - let appearCallback: ((...args: any) => any) | false = observeAppearChange ? onSizeChangedCallbackProxy : false; + let appearCallback: ((...args: any) => any) | false = observeAppearChange + ? onSizeChangedCallbackProxy + : false; let directionIsRTLCache: Cache | undefined; if (ResizeObserverConstructor) { @@ -196,7 +217,10 @@ export const createSizeObserver = ( reset(); }; - push(offListeners, [on(expandElement, scrollEventName, onScroll), on(shrinkElement, scrollEventName, onScroll)]); + push(offListeners, [ + on(expandElement, scrollEventName, onScroll), + on(shrinkElement, scrollEventName, onScroll), + ]); // lets assume that the divs will never be that large and a constant value is enough style(expandElementChild, { @@ -210,17 +234,20 @@ export const createSizeObserver = ( } if (observeDirectionChange) { - directionIsRTLCache = createCache(directionIsRTL.bind(0, sizeObserver)); - const { _update: updateDirectionIsRTLCache } = directionIsRTLCache; + directionIsRTLCache = createCache(getIsDirectionRTL, { + _initialValue: !getIsDirectionRTL(), // invert current value to trigger initial change + }); + const [updateDirectionIsRTLCache] = directionIsRTLCache; + push( offListeners, on(sizeObserver, scrollEventName, (event: Event) => { const directionIsRTLCacheValues = updateDirectionIsRTLCache(); - console.log; - const { _value, _changed } = directionIsRTLCacheValues; - if (_changed) { + const [directionIsRTL, directionIsRTLChanged] = directionIsRTLCacheValues; + + if (directionIsRTLChanged) { removeClass(listenerElement, 'ltr rtl'); - if (_value) { + if (directionIsRTL) { addClass(listenerElement, 'rtl'); } else { addClass(listenerElement, 'ltr'); @@ -255,12 +282,8 @@ export const createSizeObserver = ( _getCurrentCacheValues(force?: boolean) { return { _directionIsRTL: directionIsRTLCache - ? directionIsRTLCache._current(force) - : { - _value: false, - _previous: false, - _changed: false, - }, + ? directionIsRTLCache[1](force) // get current cache values + : [false, false, false], }; }, }; diff --git a/packages/overlayscrollbars/src/observers/trinsicObserver.ts b/packages/overlayscrollbars/src/observers/trinsicObserver.ts index 7861deb..6fdf21f 100644 --- a/packages/overlayscrollbars/src/observers/trinsicObserver.ts +++ b/packages/overlayscrollbars/src/observers/trinsicObserver.ts @@ -34,7 +34,7 @@ export const createTrinsicObserver = ( ): TrinsicObserver => { const trinsicObserver = createDiv(classNameTrinsicObserver); const offListeners: (() => void)[] = []; - const { _update: updateHeightIntrinsicCache, _current: getCurrentHeightIntrinsicCache } = createCache< + const [updateHeightIntrinsicCache, getCurrentHeightIntrinsicCache] = createCache< boolean, IntersectionObserverEntry | WH >( @@ -47,18 +47,24 @@ export const createTrinsicObserver = ( } ); + const triggerOnTrinsicChangedCallback = ( + updateValue?: IntersectionObserverEntry | WH + ) => { + if (updateValue) { + const heightIntrinsic = updateHeightIntrinsicCache(0, updateValue); + const [, heightIntrinsicChanged] = heightIntrinsic; + + if (heightIntrinsicChanged) { + onTrinsicChangedCallback(heightIntrinsic); + } + } + }; + if (IntersectionObserverConstructor) { const intersectionObserverInstance: IntersectionObserver = new IntersectionObserverConstructor( (entries: IntersectionObserverEntry[]) => { if (entries && entries.length > 0) { - const last = entries.pop(); - if (last) { - const heightIntrinsic = updateHeightIntrinsicCache(0, last); - - if (heightIntrinsic._changed) { - onTrinsicChangedCallback(heightIntrinsic); - } - } + triggerOnTrinsicChangedCallback(entries.pop()); } }, { root: target } @@ -70,10 +76,7 @@ export const createTrinsicObserver = ( } else { const onSizeChanged = () => { const newSize = offsetSize(trinsicObserver); - const heightIntrinsicCache = updateHeightIntrinsicCache(0, newSize); - if (heightIntrinsicCache._changed) { - onTrinsicChangedCallback(heightIntrinsicCache); - } + triggerOnTrinsicChangedCallback(newSize); }; push(offListeners, createSizeObserver(trinsicObserver, onSizeChanged)._destroy); onSizeChanged(); diff --git a/packages/overlayscrollbars/src/overlayscrollbars.ts b/packages/overlayscrollbars/src/overlayscrollbars.ts index 85a65ca..0503cc4 100644 --- a/packages/overlayscrollbars/src/overlayscrollbars.ts +++ b/packages/overlayscrollbars/src/overlayscrollbars.ts @@ -7,7 +7,11 @@ import { OSOptions, optionsTemplate } from 'options'; import { getEnvironment } from 'environment'; export interface OverlayScrollbarsStatic { - (target: OSTarget | OSInitializationObject, options?: PartialOptions, extensions?: any): OverlayScrollbars; + ( + target: OSTarget | OSInitializationObject, + options?: PartialOptions, + extensions?: any + ): OverlayScrollbars; } export interface OverlayScrollbars { @@ -29,7 +33,8 @@ export const OverlayScrollbars: OverlayScrollbarsStatic = ( const currentOptions: OSOptions = assignDeep( {}, _getDefaultOptions(), - validateOptions(options || ({} as PartialOptions), optionsTemplate, null, true)._validated + validateOptions(options || ({} as PartialOptions), optionsTemplate, null, true) + ._validated ); const structureSetup: StructureSetup = createStructureSetup(target); const scrollbarsSetup: ScrollbarsSetup = createScrollbarsSetup(target, structureSetup); @@ -38,7 +43,12 @@ export const OverlayScrollbars: OverlayScrollbarsStatic = ( const instance: OverlayScrollbars = { options(newOptions?: PartialOptions) { if (newOptions) { - const { _validated: _changedOptions } = validateOptions(newOptions, optionsTemplate, currentOptions, true); + const { _validated: _changedOptions } = validateOptions( + newOptions, + optionsTemplate, + currentOptions, + true + ); if (!isEmptyObject(_changedOptions)) { assignDeep(currentOptions, _changedOptions); diff --git a/packages/overlayscrollbars/src/support/cache/cache.ts b/packages/overlayscrollbars/src/support/cache/cache.ts index fe50b46..5f7d61b 100644 --- a/packages/overlayscrollbars/src/support/cache/cache.ts +++ b/packages/overlayscrollbars/src/support/cache/cache.ts @@ -1,41 +1,44 @@ -export interface CacheValues { - readonly _value?: T; - readonly _previous?: T; - _changed: boolean; -} +export type CacheValues = [ + T, // value + boolean, // changed + T | undefined // previous +]; + +export type Cache = [ + CacheUpdate, + (force?: boolean) => CacheValues // getCurrent +]; export interface CacheOptions { + // initial value of _value. + _initialValue: T; // Custom comparison function if shallow compare isn't enough. Returns true if nothing changed. _equal?: EqualCachePropFunction; - // Initial value for _value - _initialValue?: T; - // If true updates always _value and _previous, otherwise they update only when changed + // If true always updates _value and _previous, otherwise they update only when they changed. _alwaysUpdateValues?: boolean; } -export interface Cache { - _current: (force?: boolean) => CacheValues; - _update: CacheUpdate; -} - export type CacheUpdate = undefined extends C ? (force?: boolean | 0, context?: C) => CacheValues : (force: boolean | 0, context: C) => CacheValues; -export type UpdateCachePropFunction = undefined extends C - ? (context?: C, current?: T, previous?: T) => T - : C extends T - ? ((context: C, current?: T, previous?: T) => T) | 0 - : (context: C, current?: T, previous?: T) => T; +export type UpdateCachePropFunction = undefined extends Ctx + ? (context?: Ctx, current?: Value, previous?: Value) => Value + : Ctx extends Value + ? ((context: Ctx, current?: Value, previous?: Value) => Value) | 0 + : (context: Ctx, current?: Value, previous?: Value) => Value; export type EqualCachePropFunction = (currentVal?: T, newVal?: T) => boolean; -export const createCache = (update: UpdateCachePropFunction, options?: CacheOptions): Cache => { - const { _equal, _initialValue, _alwaysUpdateValues } = options || {}; - let _value: T | undefined = _initialValue; - let _previous: T | undefined; +export const createCache = ( + update: UpdateCachePropFunction, + options: CacheOptions +): Cache => { + const { _initialValue, _equal, _alwaysUpdateValues } = options || {}; + let _value: Value = _initialValue; + let _previous: Value | undefined; - const cacheUpdate = ((force?: boolean | 0, context?: C) => { + const cacheUpdate = ((force?: boolean | 0, context?: Ctx) => { const curr = _value; // @ts-ignore // update can only not be a function if C extends T as described in "UpdateCachePropFunction" type definition @@ -48,19 +51,15 @@ export const createCache = (update: UpdateCachePropFunction; + return [_value, changed, _previous]; + }) as CacheUpdate; - return { - _update: cacheUpdate, - _current: (force?: boolean) => ({ + return [ + cacheUpdate, + (force?: boolean) => [ _value, + !!force, // changed _previous, - _changed: !!force, - }), - }; + ], + ]; }; diff --git a/packages/overlayscrollbars/tests/browser/lifecycles/structureLifecycle/index.test.ts b/packages/overlayscrollbars/tests/browser/lifecycles/structureLifecycle/index.test.ts deleted file mode 100644 index 335b82a..0000000 --- a/packages/overlayscrollbars/tests/browser/lifecycles/structureLifecycle/index.test.ts +++ /dev/null @@ -1,55 +0,0 @@ -import 'jest-playwright-preset'; -import 'expect-playwright'; -import url from './.build/build.html'; - -describe('StructureLifecycle', () => { - beforeEach(async () => { - await jestPlaywright.resetPage(); - await page.goto(url); - }); - - [false, true].forEach(async (nativeScrollbarStyling) => { - const withText = nativeScrollbarStyling ? 'with' : 'without'; - const nss = async () => { - if (!nativeScrollbarStyling) { - await page.click('#nss'); - await page.waitForTimeout(500); - } - }; - - describe(`structureLifecycles ${withText} native scrollbar styling`, () => { - test('default', async () => { - await nss(); - await page.click('#start'); - await expect(page).toHaveSelector('#testResult.passed'); - }); - - test('without flexbox glue & css custom props', async () => { - await nss(); - await page.click('#fbg'); - await page.waitForTimeout(500); - await page.click('#ccp'); - await page.waitForTimeout(500); - await page.click('#start'); - await expect(page).toHaveSelector('#testResult.passed'); - }); - - // firefox can't simulate partially overlaid scrollbars, boost speed by omitting webkit - test.jestPlaywrightSkip({ browsers: ['firefox', 'webkit'] }, 'with partially overlaid scrollbars', async () => { - await nss(); - await page.click('#po'); - await page.waitForTimeout(500); - await page.click('#start'); - await expect(page).toHaveSelector('#testResult.passed'); - }); - - test('with fully overlaid scrollbars', async () => { - await nss(); - await page.click('#fo'); - await page.waitForTimeout(500); - await page.click('#start'); - await expect(page).toHaveSelector('#testResult.passed'); - }); - }); - }); -}); diff --git a/packages/overlayscrollbars/tests/browser/observers/domObserver/index.test.ts b/packages/overlayscrollbars/tests/browser/observers/domObserver/index.test.ts deleted file mode 100644 index 89ecc60..0000000 --- a/packages/overlayscrollbars/tests/browser/observers/domObserver/index.test.ts +++ /dev/null @@ -1,15 +0,0 @@ -import 'jest-playwright-preset'; -import 'expect-playwright'; -import url from './.build/build.html'; - -describe('DOMObserver', () => { - beforeEach(async () => { - await jestPlaywright.resetPage(); - await page.goto(url); - }); - - test('test', async () => { - await page.click('#start'); - await expect(page).toHaveSelector('#testResult.passed'); - }); -}); diff --git a/packages/overlayscrollbars/tests/browser/observers/sizeObserver/index.test.ts b/packages/overlayscrollbars/tests/browser/observers/sizeObserver/index.test.ts deleted file mode 100644 index c937411..0000000 --- a/packages/overlayscrollbars/tests/browser/observers/sizeObserver/index.test.ts +++ /dev/null @@ -1,22 +0,0 @@ -import 'jest-playwright-preset'; -import 'expect-playwright'; -import url from './.build/build.html'; - -describe('SizeObserver', () => { - beforeEach(async () => { - await jestPlaywright.resetPage(); - await page.goto(url); - }); - - test('with ResizeOserver', async () => { - await page.click('#start'); - await expect(page).toHaveSelector('#testResult.passed'); - }); - - test('with ResizeOserver polyfill', async () => { - await page.click('#roPolyfill'); - await page.waitForTimeout(500); - await page.click('#start'); - await expect(page).toHaveSelector('#testResult.passed'); - }); -}); diff --git a/packages/overlayscrollbars/tests/browser/observers/trinsicObserver/index.test.ts b/packages/overlayscrollbars/tests/browser/observers/trinsicObserver/index.test.ts deleted file mode 100644 index 5e488ac..0000000 --- a/packages/overlayscrollbars/tests/browser/observers/trinsicObserver/index.test.ts +++ /dev/null @@ -1,31 +0,0 @@ -import 'jest-playwright-preset'; -import 'expect-playwright'; -import url from './.build/build.html'; - -describe('TrinsicObserver', () => { - beforeEach(async () => { - await jestPlaywright.resetPage(); - await page.goto(url); - }); - - test('with IntersectionObserver', async () => { - await page.click('#start'); - await expect(page).toHaveSelector('#testResult.passed'); - }); - - test('with ResizeObserver', async () => { - await page.click('#ioPolyfill'); - await page.waitForTimeout(500); - await page.click('#start'); - await expect(page).toHaveSelector('#testResult.passed'); - }); - - test('with ResizeObserver polyfill', async () => { - await page.click('#ioPolyfill'); - await page.waitForTimeout(500); - await page.click('#roPolyfill'); - await page.waitForTimeout(500); - await page.click('#start'); - await expect(page).toHaveSelector('#testResult.passed'); - }); -}); diff --git a/packages/overlayscrollbars/tests/jsdom/autoUpdateLoop.test.ts b/packages/overlayscrollbars/tests/jest/autoUpdateLoop.test.ts similarity index 100% rename from packages/overlayscrollbars/tests/jsdom/autoUpdateLoop.test.ts rename to packages/overlayscrollbars/tests/jest/autoUpdateLoop.test.ts diff --git a/packages/overlayscrollbars/tests/jsdom/instances.test.ts b/packages/overlayscrollbars/tests/jest/instances.test.ts similarity index 100% rename from packages/overlayscrollbars/tests/jsdom/instances.test.ts rename to packages/overlayscrollbars/tests/jest/instances.test.ts diff --git a/packages/overlayscrollbars/tests/jsdom/options.test.ts b/packages/overlayscrollbars/tests/jest/options.test.ts similarity index 100% rename from packages/overlayscrollbars/tests/jsdom/options.test.ts rename to packages/overlayscrollbars/tests/jest/options.test.ts diff --git a/packages/overlayscrollbars/tests/jest/setups/structureSetup.test.ts b/packages/overlayscrollbars/tests/jest/setups/structureSetup.test.ts new file mode 100644 index 0000000..0aca90a --- /dev/null +++ b/packages/overlayscrollbars/tests/jest/setups/structureSetup.test.ts @@ -0,0 +1,902 @@ +import { + Environment, + StructureInitializationStaticElement, + StructureInitializationDynamicElement, +} from 'environment'; +import { OSTarget, StructureInitialization } from 'typings'; +import { createStructureSetup, StructureSetup } from 'setups/structureSetup'; +import { isHTMLElement } from 'support'; + +const mockGetEnvironment = jest.fn(); +jest.mock('environment', () => { + return { + getEnvironment: jest.fn().mockImplementation(() => mockGetEnvironment()), + }; +}); + +interface StructureSetupProxy { + input: OSTarget | StructureInitialization; + setup: StructureSetup; +} + +const textareaId = 'textarea'; +const textareaHostId = 'host'; +const elementId = 'target'; +const dynamicContent = 'text

paragraph

'; +const textareaContent = ``; +const getSnapshot = () => document.body.innerHTML; +const getTarget = (textarea?: boolean) => + document.getElementById(textarea ? textareaId : elementId)!; +const fillBody = (textarea?: boolean, customDOM?: (content: string, hostId: string) => string) => { + document.body.innerHTML = ` + + ${ + customDOM + ? customDOM( + textarea ? textareaContent : dynamicContent, + textarea ? textareaHostId : elementId + ) + : textarea + ? textareaContent + : `
${dynamicContent}
` + } +
+ `; + return getSnapshot(); +}; +const clearBody = () => { + document.body.innerHTML = ''; +}; + +const getElements = (textarea?: boolean) => { + const target = getTarget(textarea); + const host = document.querySelector('.os-host')!; + const padding = document.querySelector('.os-padding')!; + const viewport = document.querySelector('.os-viewport')!; + const content = document.querySelector('.os-content')!; + + return { + target, + host, + padding, + viewport, + content, + }; +}; + +const assertCorrectDOMStructure = (textarea?: boolean) => { + const { target, host, padding, viewport, content } = getElements(textarea); + + expect(host).toBeTruthy(); + expect(viewport).toBeTruthy(); + expect(viewport.parentElement).toBe(padding || host); + + if (content) { + expect(content.parentElement).toBe(viewport); + } + if (padding) { + expect(padding.parentElement).toBe(host); + } + + expect(host.parentElement).toBe(document.body); + expect(host.previousElementSibling).toBe(document.querySelector('nav')); + expect(host.nextElementSibling).toBe(document.querySelector('footer')); + + const contentElm = content || viewport; + if (textarea) { + expect(target.parentElement).toBe(contentElm); + expect(contentElm.innerHTML).toBe(textareaContent); + } else { + expect(target).toBe(host); + expect(contentElm.innerHTML).toBe(dynamicContent); + } +}; + +const createStructureSetupProxy = ( + target: OSTarget | StructureInitialization +): StructureSetupProxy => ({ + input: target, + setup: createStructureSetup(target), +}); + +const assertCorrectSetup = ( + textarea: boolean, + setupProxy: StructureSetupProxy, + environment: Environment +): StructureSetup => { + const { input, setup } = setupProxy; + const { _targetObj, _targetCtx, _destroy } = setup; + const { _target, _host, _padding, _viewport, _content } = _targetObj; + const { target, host, padding, viewport, content } = getElements(textarea); + const isTextarea = target.matches('textarea'); + const isBody = target.matches('body'); + + expect(textarea).toBe(isTextarea); + + expect(_target).toBe(target); + expect(_host).toBe(host); + + if (padding || _padding) { + expect(_padding).toBe(padding); + } else { + expect(padding).toBeFalsy(); + expect(_padding).toBeFalsy(); + } + + if (viewport || _viewport) { + expect(_viewport).toBe(viewport); + } else { + expect(viewport).toBeFalsy(); + expect(_viewport).toBeFalsy(); + } + + if (content || _content) { + expect(_content).toBe(content); + } else { + expect(content).toBeFalsy(); + expect(_content).toBeFalsy(); + } + + const { _isTextarea, _isBody, _bodyElm, _htmlElm, _documentElm, _windowElm } = _targetCtx; + + expect(_isTextarea).toBe(isTextarea); + expect(_isBody).toBe(isBody); + expect(_windowElm).toBe(document.defaultView); + expect(_documentElm).toBe(document); + expect(_htmlElm).toBe(document.body.parentElement); + expect(_bodyElm).toBe(document.body); + + expect(typeof _destroy).toBe('function'); + + const { _nativeScrollbarStyling, _cssCustomProperties, _getInitializationStrategy } = environment; + const { + _host: hostInitStrategy, + _viewport: viewportInitStrategy, + _padding: paddingInitStrategy, + _content: contentInitStrategy, + } = _getInitializationStrategy(); + const inputIsElement = isHTMLElement(input); + const inputAsObj = input as StructureInitialization; + const styleElm = document.querySelector('style'); + const checkStrategyDependendElements = ( + elm: Element | null, + input: HTMLElement | boolean | undefined, + isStaticStrategy: boolean, + strategy: StructureInitializationStaticElement | StructureInitializationDynamicElement, + id: string + ) => { + if (input) { + expect(elm).toBeTruthy(); + } else { + if (input === false) { + expect(elm).toBeFalsy(); + } + if (input === undefined) { + if (isStaticStrategy) { + strategy = strategy as StructureInitializationStaticElement; + if (typeof strategy === 'function') { + const result = strategy(target); + if (result) { + expect(result).toBe(elm); + } else { + expect(elm).toBeTruthy(); + } + } else { + expect(elm).toBeTruthy(); + } + } else { + strategy = strategy as StructureInitializationDynamicElement; + const expectDefaultValue = () => { + if (id === 'padding') { + if (_nativeScrollbarStyling) { + expect(elm).toBeFalsy(); + } else { + expect(elm).toBeTruthy(); + } + } else if (id === 'content') { + expect(elm).toBeFalsy(); + } + }; + if (typeof strategy === 'function') { + const result = strategy(target); + const resultIsBoolean = typeof result === 'boolean'; + if (resultIsBoolean) { + if (result) { + expect(elm).toBeTruthy(); + } else { + expect(elm).toBeFalsy(); + } + } else if (result) { + expect(elm).toBe(result); + } else { + expectDefaultValue(); + } + } else { + const strategyIsBoolean = typeof strategy === 'boolean'; + if (strategyIsBoolean) { + if (strategy) { + expect(elm).toBeTruthy(); + } else { + expect(elm).toBeFalsy(); + } + } else { + expectDefaultValue(); + } + } + } + } + } + }; + + if (_nativeScrollbarStyling || _cssCustomProperties) { + expect(styleElm).toBeFalsy(); + } else { + expect(styleElm).toBeTruthy(); + } + + if (inputIsElement) { + checkStrategyDependendElements(padding, undefined, false, paddingInitStrategy, 'padding'); + checkStrategyDependendElements(content, undefined, false, contentInitStrategy, 'content'); + checkStrategyDependendElements(viewport, undefined, true, viewportInitStrategy, 'viewport'); + checkStrategyDependendElements(host, undefined, true, hostInitStrategy, 'host'); + } else { + const { + padding: inputPadding, + content: inputContent, + viewport: inputViewport, + host: inputHost, + } = inputAsObj; + checkStrategyDependendElements(padding, inputPadding, false, paddingInitStrategy, 'padding'); + checkStrategyDependendElements(content, inputContent, false, contentInitStrategy, 'content'); + checkStrategyDependendElements(viewport, inputViewport, true, viewportInitStrategy, 'viewport'); + checkStrategyDependendElements(host, inputHost, true, hostInitStrategy, 'host'); + } + + return setup; +}; + +const assertCorrectDestroy = (snapshot: string, setup: StructureSetup) => { + const { _destroy } = setup; + + _destroy(); + + // remove empty class attr + const elms = document.querySelectorAll('*'); + Array.from(elms).forEach((elm) => { + const classAttr = elm.getAttribute('class'); + if (classAttr === '') { + elm.removeAttribute('class'); + } + }); + + expect(snapshot).toBe(getSnapshot()); +}; + +const env: Environment = jest.requireActual('environment').getEnvironment(); +const envDefault = { + name: 'default', + env, +}; +const envNativeScrollbarStyling = { + name: 'native scrollbar styling', + env: { + ...env, + _nativeScrollbarStyling: true, + }, +}; +const envCssCustomProperties = { + name: 'custom css properties', + env: { + ...env, + _cssCustomProperties: true, + }, +}; +const envInitStrategyMin = { + name: 'initialization strategy min', + env: { + ...env, + _getInitializationStrategy: () => ({ + _host: null, + _viewport: () => null, + _content: () => false, + _padding: false, + _scrollbarsSlot: null, + }), + }, +}; +const envInitStrategyMax = { + name: 'initialization strategy max', + env: { + ...env, + _getInitializationStrategy: () => ({ + _host: null, + _viewport: null, + _content: true, + _padding: () => true, + _scrollbarsSlot: null, + }), + }, +}; +const envInitStrategyAssigned = { + name: 'initialization strategy assigned', + env: { + ...env, + _getInitializationStrategy: () => ({ + _host: () => document.querySelector('#host1') as HTMLElement, + _viewport: (target: HTMLElement) => target.querySelector('#viewport') as HTMLElement, + _content: (target: HTMLElement) => target.querySelector('#content') as HTMLElement, + _padding: (target: HTMLElement) => target.querySelector('#padding') as HTMLElement, + _scrollbarsSlot: null, + }), + }, +}; + +describe('structureSetup', () => { + afterEach(() => clearBody()); + + [ + envDefault, + envNativeScrollbarStyling, + envCssCustomProperties, + envInitStrategyMin, + envInitStrategyMax, + envInitStrategyAssigned, + ].forEach((envWithName) => { + const { env: currEnv, name } = envWithName; + describe(`Environment: ${name}`, () => { + beforeAll(() => { + mockGetEnvironment.mockImplementation(() => currEnv); + }); + + [false, true].forEach((isTextarea) => { + describe(isTextarea ? 'textarea' : 'element', () => { + describe('basic', () => { + test('Element', () => { + const snapshot = fillBody(isTextarea); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy(getTarget(isTextarea)), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + + test('Object', () => { + const snapshot = fillBody(isTextarea); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ target: getTarget(isTextarea) }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + }); + + describe('complex', () => { + describe('single assigned', () => { + test('padding', () => { + const snapshot = fillBody(isTextarea, (content, hostId) => { + return `
${content}
`; + }); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + host: document.querySelector('#host')!, + target: getTarget(isTextarea), + padding: document.querySelector('#padding')!, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + + test('viewport', () => { + const snapshot = fillBody(isTextarea, (content, hostId) => { + return `
${content}
`; + }); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + host: document.querySelector('#host')!, + target: getTarget(isTextarea), + viewport: document.querySelector('#viewport')!, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + + test('content', () => { + const snapshot = fillBody(isTextarea, (content, hostId) => { + return `
${content}
`; + }); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + host: document.querySelector('#host')!, + target: getTarget(isTextarea), + content: document.querySelector('#content')!, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + }); + + describe('multiple assigned', () => { + test('padding viewport content', () => { + const snapshot = fillBody(isTextarea, (content, hostId) => { + return `
${content}
`; + }); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + host: document.querySelector('#host')!, + target: getTarget(isTextarea), + padding: document.querySelector('#padding')!, + viewport: document.querySelector('#viewport')!, + content: document.querySelector('#content')!, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + + test('padding viewport', () => { + const snapshot = fillBody(isTextarea, (content, hostId) => { + return `
${content}
`; + }); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + host: document.querySelector('#host')!, + target: getTarget(isTextarea), + padding: document.querySelector('#padding')!, + viewport: document.querySelector('#viewport')!, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + + test('padding content', () => { + const snapshot = fillBody(isTextarea, (content, hostId) => { + return `
${content}
`; + }); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + host: document.querySelector('#host')!, + target: getTarget(isTextarea), + padding: document.querySelector('#padding')!, + content: document.querySelector('#content')!, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + + test('viewport content', () => { + const snapshot = fillBody(isTextarea, (content, hostId) => { + return `
${content}
`; + }); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + host: document.querySelector('#host')!, + target: getTarget(isTextarea), + viewport: document.querySelector('#viewport')!, + content: document.querySelector('#content')!, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + }); + + describe('single false', () => { + test('padding', () => { + const snapshot = fillBody(isTextarea); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + target: getTarget(isTextarea), + padding: false, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + + test('content', () => { + const snapshot = fillBody(isTextarea); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + target: getTarget(isTextarea), + content: false, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + }); + + describe('single true', () => { + test('padding', () => { + const snapshot = fillBody(isTextarea); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + target: getTarget(isTextarea), + padding: true, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + + test('content', () => { + const snapshot = fillBody(isTextarea); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + target: getTarget(isTextarea), + content: true, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + }); + + describe('multiple false', () => { + test('padding & content', () => { + const snapshot = fillBody(isTextarea); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + target: getTarget(isTextarea), + padding: false, + content: false, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + }); + + describe('multiple true', () => { + test('padding & content', () => { + const snapshot = fillBody(isTextarea); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + target: getTarget(isTextarea), + padding: true, + content: true, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + }); + + describe('mixed', () => { + test('false: padding & content | assigned: viewport', () => { + const snapshot = fillBody(isTextarea, (content, hostId) => { + return `
${content}
`; + }); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + host: document.querySelector('#host')!, + target: getTarget(isTextarea), + padding: false, + viewport: document.querySelector('#viewport')!, + content: false, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + + test('true: padding & content | assigned: viewport', () => { + const snapshot = fillBody(isTextarea, (content, hostId) => { + return `
${content}
`; + }); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + host: document.querySelector('#host')!, + target: getTarget(isTextarea), + padding: true, + viewport: document.querySelector('#viewport')!, + content: true, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + + test('true: content | false: padding | assigned: viewport', () => { + const snapshot = fillBody(isTextarea, (content, hostId) => { + return `
${content}
`; + }); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + host: document.querySelector('#host')!, + target: getTarget(isTextarea), + padding: false, + viewport: document.querySelector('#viewport')!, + content: true, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + + test('true: padding | false: content | assigned: viewport', () => { + const snapshot = fillBody(isTextarea, (content, hostId) => { + return `
${content}
`; + }); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + host: document.querySelector('#host')!, + target: getTarget(isTextarea), + padding: true, + viewport: document.querySelector('#viewport')!, + content: false, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + + test('false: padding | assigned: content', () => { + const snapshot = fillBody(isTextarea, (content, hostId) => { + return `
${content}
`; + }); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + host: document.querySelector('#host')!, + target: getTarget(isTextarea), + padding: false, + content: document.querySelector('#content')!, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + + test('true: padding | assigned: content', () => { + const snapshot = fillBody(isTextarea, (content, hostId) => { + return `
${content}
`; + }); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + host: document.querySelector('#host')!, + target: getTarget(isTextarea), + padding: true, + content: document.querySelector('#content')!, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + + test('false: padding | assigned: viewport', () => { + const snapshot = fillBody(isTextarea, (content, hostId) => { + return `
${content}
`; + }); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + host: document.querySelector('#host')!, + target: getTarget(isTextarea), + padding: false, + viewport: document.querySelector('#viewport')!, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + + test('true: padding | assigned: viewport', () => { + const snapshot = fillBody(isTextarea, (content, hostId) => { + return `
${content}
`; + }); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + host: document.querySelector('#host')!, + target: getTarget(isTextarea), + padding: true, + viewport: document.querySelector('#viewport')!, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + + test('false: padding | assigned: viewport & content', () => { + const snapshot = fillBody(isTextarea, (content, hostId) => { + return `
${content}
`; + }); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + host: document.querySelector('#host')!, + target: getTarget(isTextarea), + viewport: document.querySelector('#viewport')!, + padding: false, + content: document.querySelector('#content')!, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + + test('true: padding | assigned: viewport & content', () => { + const snapshot = fillBody(isTextarea, (content, hostId) => { + return `
${content}
`; + }); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + host: document.querySelector('#host')!, + target: getTarget(isTextarea), + viewport: document.querySelector('#viewport')!, + padding: true, + content: document.querySelector('#content')!, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + + test('false: content | assigned: padding', () => { + const snapshot = fillBody(isTextarea, (content, hostId) => { + return `
${content}
`; + }); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + host: document.querySelector('#host')!, + target: getTarget(isTextarea), + padding: document.querySelector('#padding')!, + content: false, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + + test('true: content | assigned: padding', () => { + const snapshot = fillBody(isTextarea, (content, hostId) => { + return `
${content}
`; + }); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + host: document.querySelector('#host')!, + target: getTarget(isTextarea), + padding: document.querySelector('#padding')!, + content: true, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + + test('false: content | assigned: viewport', () => { + const snapshot = fillBody(isTextarea, (content, hostId) => { + return `
${content}
`; + }); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + host: document.querySelector('#host')!, + target: getTarget(isTextarea), + viewport: document.querySelector('#viewport')!, + content: false, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + + test('true: content | assigned: viewport', () => { + const snapshot = fillBody(isTextarea, (content, hostId) => { + return `
${content}
`; + }); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + host: document.querySelector('#host')!, + target: getTarget(isTextarea), + viewport: document.querySelector('#viewport')!, + content: true, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + + test('false: content | assigned: padding & viewport', () => { + const snapshot = fillBody(isTextarea, (content, hostId) => { + return `
${content}
`; + }); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + host: document.querySelector('#host')!, + target: getTarget(isTextarea), + padding: document.querySelector('#padding')!, + viewport: document.querySelector('#viewport')!, + content: false, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + + test('true: content | assigned: padding & viewport', () => { + const snapshot = fillBody(isTextarea, (content, hostId) => { + return `
${content}
`; + }); + const setup = assertCorrectSetup( + isTextarea, + createStructureSetupProxy({ + host: document.querySelector('#host')!, + target: getTarget(isTextarea), + padding: document.querySelector('#padding')!, + viewport: document.querySelector('#viewport')!, + content: true, + }), + currEnv + ); + assertCorrectDOMStructure(isTextarea); + assertCorrectDestroy(snapshot, setup); + }); + }); + }); + }); + }); + }); + }); +}); diff --git a/packages/overlayscrollbars/tests/jsdom/support/cache/cache.test.ts b/packages/overlayscrollbars/tests/jest/support/cache/cache.test.ts similarity index 100% rename from packages/overlayscrollbars/tests/jsdom/support/cache/cache.test.ts rename to packages/overlayscrollbars/tests/jest/support/cache/cache.test.ts diff --git a/packages/overlayscrollbars/tests/jsdom/support/compatibility/vendors.test.ts b/packages/overlayscrollbars/tests/jest/support/compatibility/vendors.test.ts similarity index 100% rename from packages/overlayscrollbars/tests/jsdom/support/compatibility/vendors.test.ts rename to packages/overlayscrollbars/tests/jest/support/compatibility/vendors.test.ts diff --git a/packages/overlayscrollbars/tests/jsdom/support/dom/attribute.test.ts b/packages/overlayscrollbars/tests/jest/support/dom/attribute.test.ts similarity index 100% rename from packages/overlayscrollbars/tests/jsdom/support/dom/attribute.test.ts rename to packages/overlayscrollbars/tests/jest/support/dom/attribute.test.ts diff --git a/packages/overlayscrollbars/tests/jsdom/support/dom/class.test.ts b/packages/overlayscrollbars/tests/jest/support/dom/class.test.ts similarity index 100% rename from packages/overlayscrollbars/tests/jsdom/support/dom/class.test.ts rename to packages/overlayscrollbars/tests/jest/support/dom/class.test.ts diff --git a/packages/overlayscrollbars/tests/jsdom/support/dom/create.test.ts b/packages/overlayscrollbars/tests/jest/support/dom/create.test.ts similarity index 100% rename from packages/overlayscrollbars/tests/jsdom/support/dom/create.test.ts rename to packages/overlayscrollbars/tests/jest/support/dom/create.test.ts diff --git a/packages/overlayscrollbars/tests/jsdom/support/dom/dimensions.test.ts b/packages/overlayscrollbars/tests/jest/support/dom/dimensions.test.ts similarity index 100% rename from packages/overlayscrollbars/tests/jsdom/support/dom/dimensions.test.ts rename to packages/overlayscrollbars/tests/jest/support/dom/dimensions.test.ts diff --git a/packages/overlayscrollbars/tests/jsdom/support/dom/events.test.ts b/packages/overlayscrollbars/tests/jest/support/dom/events.test.ts similarity index 100% rename from packages/overlayscrollbars/tests/jsdom/support/dom/events.test.ts rename to packages/overlayscrollbars/tests/jest/support/dom/events.test.ts diff --git a/packages/overlayscrollbars/tests/jsdom/support/dom/manipulation.test.ts b/packages/overlayscrollbars/tests/jest/support/dom/manipulation.test.ts similarity index 100% rename from packages/overlayscrollbars/tests/jsdom/support/dom/manipulation.test.ts rename to packages/overlayscrollbars/tests/jest/support/dom/manipulation.test.ts diff --git a/packages/overlayscrollbars/tests/jsdom/support/dom/offset.test.ts b/packages/overlayscrollbars/tests/jest/support/dom/offset.test.ts similarity index 100% rename from packages/overlayscrollbars/tests/jsdom/support/dom/offset.test.ts rename to packages/overlayscrollbars/tests/jest/support/dom/offset.test.ts diff --git a/packages/overlayscrollbars/tests/jsdom/support/dom/style.test.ts b/packages/overlayscrollbars/tests/jest/support/dom/style.test.ts similarity index 100% rename from packages/overlayscrollbars/tests/jsdom/support/dom/style.test.ts rename to packages/overlayscrollbars/tests/jest/support/dom/style.test.ts diff --git a/packages/overlayscrollbars/tests/jsdom/support/dom/traversal.test.ts b/packages/overlayscrollbars/tests/jest/support/dom/traversal.test.ts similarity index 100% rename from packages/overlayscrollbars/tests/jsdom/support/dom/traversal.test.ts rename to packages/overlayscrollbars/tests/jest/support/dom/traversal.test.ts diff --git a/packages/overlayscrollbars/tests/jsdom/support/options/transformation.test.ts b/packages/overlayscrollbars/tests/jest/support/options/transformation.test.ts similarity index 100% rename from packages/overlayscrollbars/tests/jsdom/support/options/transformation.test.ts rename to packages/overlayscrollbars/tests/jest/support/options/transformation.test.ts diff --git a/packages/overlayscrollbars/tests/jsdom/support/options/validation.test.ts b/packages/overlayscrollbars/tests/jest/support/options/validation.test.ts similarity index 100% rename from packages/overlayscrollbars/tests/jsdom/support/options/validation.test.ts rename to packages/overlayscrollbars/tests/jest/support/options/validation.test.ts diff --git a/packages/overlayscrollbars/tests/jsdom/support/utils/arrays.test.ts b/packages/overlayscrollbars/tests/jest/support/utils/arrays.test.ts similarity index 100% rename from packages/overlayscrollbars/tests/jsdom/support/utils/arrays.test.ts rename to packages/overlayscrollbars/tests/jest/support/utils/arrays.test.ts diff --git a/packages/overlayscrollbars/tests/jsdom/support/utils/equal.test.ts b/packages/overlayscrollbars/tests/jest/support/utils/equal.test.ts similarity index 100% rename from packages/overlayscrollbars/tests/jsdom/support/utils/equal.test.ts rename to packages/overlayscrollbars/tests/jest/support/utils/equal.test.ts diff --git a/packages/overlayscrollbars/tests/jsdom/support/utils/object.test.ts b/packages/overlayscrollbars/tests/jest/support/utils/object.test.ts similarity index 100% rename from packages/overlayscrollbars/tests/jsdom/support/utils/object.test.ts rename to packages/overlayscrollbars/tests/jest/support/utils/object.test.ts diff --git a/packages/overlayscrollbars/tests/jsdom/support/utils/types.test.ts b/packages/overlayscrollbars/tests/jest/support/utils/types.test.ts similarity index 100% rename from packages/overlayscrollbars/tests/jsdom/support/utils/types.test.ts rename to packages/overlayscrollbars/tests/jest/support/utils/types.test.ts diff --git a/packages/overlayscrollbars/tests/jsdom/setups/structureSetup.test.ts b/packages/overlayscrollbars/tests/jsdom/setups/structureSetup.test.ts deleted file mode 100644 index a4cd0ab..0000000 --- a/packages/overlayscrollbars/tests/jsdom/setups/structureSetup.test.ts +++ /dev/null @@ -1,870 +0,0 @@ -import { Environment, StructureInitializationStaticElement, StructureInitializationDynamicElement } from 'environment'; -import { OSTarget, StructureInitialization } from 'typings'; -import { createStructureSetup, StructureSetup } from 'setups/structureSetup'; -import { isHTMLElement } from 'support'; - -const mockGetEnvironment = jest.fn(); -jest.mock('environment', () => { - return { - getEnvironment: jest.fn().mockImplementation(() => mockGetEnvironment()), - }; -}); - -interface StructureSetupProxy { - input: OSTarget | StructureInitialization; - setup: StructureSetup; -} - -const textareaId = 'textarea'; -const textareaHostId = 'host'; -const elementId = 'target'; -const dynamicContent = 'text

paragraph

'; -const textareaContent = ``; -const getSnapshot = () => document.body.innerHTML; -const getTarget = (textarea?: boolean) => document.getElementById(textarea ? textareaId : elementId)!; -const fillBody = (textarea?: boolean, customDOM?: (content: string, hostId: string) => string) => { - document.body.innerHTML = ` - - ${ - customDOM - ? customDOM(textarea ? textareaContent : dynamicContent, textarea ? textareaHostId : elementId) - : textarea - ? textareaContent - : `
${dynamicContent}
` - } -
- `; - return getSnapshot(); -}; -const clearBody = () => { - document.body.innerHTML = ''; -}; - -const getElements = (textarea?: boolean) => { - const target = getTarget(textarea); - const host = document.querySelector('.os-host')!; - const padding = document.querySelector('.os-padding')!; - const viewport = document.querySelector('.os-viewport')!; - const content = document.querySelector('.os-content')!; - - return { - target, - host, - padding, - viewport, - content, - }; -}; - -const assertCorrectDOMStructure = (textarea?: boolean) => { - const { target, host, padding, viewport, content } = getElements(textarea); - - expect(host).toBeTruthy(); - expect(viewport).toBeTruthy(); - expect(viewport.parentElement).toBe(padding || host); - - if (content) { - expect(content.parentElement).toBe(viewport); - } - if (padding) { - expect(padding.parentElement).toBe(host); - } - - expect(host.parentElement).toBe(document.body); - expect(host.previousElementSibling).toBe(document.querySelector('nav')); - expect(host.nextElementSibling).toBe(document.querySelector('footer')); - - const contentElm = content || viewport; - if (textarea) { - expect(target.parentElement).toBe(contentElm); - expect(contentElm.innerHTML).toBe(textareaContent); - } else { - expect(target).toBe(host); - expect(contentElm.innerHTML).toBe(dynamicContent); - } -}; - -const createStructureSetupProxy = (target: OSTarget | StructureInitialization): StructureSetupProxy => ({ - input: target, - setup: createStructureSetup(target), -}); - -const assertCorrectSetup = (textarea: boolean, setupProxy: StructureSetupProxy, environment: Environment): StructureSetup => { - const { input, setup } = setupProxy; - const { _targetObj, _targetCtx, _destroy } = setup; - const { _target, _host, _padding, _viewport, _content } = _targetObj; - const { target, host, padding, viewport, content } = getElements(textarea); - const isTextarea = target.matches('textarea'); - const isBody = target.matches('body'); - - expect(textarea).toBe(isTextarea); - - expect(_target).toBe(target); - expect(_host).toBe(host); - - if (padding || _padding) { - expect(_padding).toBe(padding); - } else { - expect(padding).toBeFalsy(); - expect(_padding).toBeFalsy(); - } - - if (viewport || _viewport) { - expect(_viewport).toBe(viewport); - } else { - expect(viewport).toBeFalsy(); - expect(_viewport).toBeFalsy(); - } - - if (content || _content) { - expect(_content).toBe(content); - } else { - expect(content).toBeFalsy(); - expect(_content).toBeFalsy(); - } - - const { _isTextarea, _isBody, _bodyElm, _htmlElm, _documentElm, _windowElm } = _targetCtx; - - expect(_isTextarea).toBe(isTextarea); - expect(_isBody).toBe(isBody); - expect(_windowElm).toBe(document.defaultView); - expect(_documentElm).toBe(document); - expect(_htmlElm).toBe(document.body.parentElement); - expect(_bodyElm).toBe(document.body); - - expect(typeof _destroy).toBe('function'); - - const { _nativeScrollbarStyling, _cssCustomProperties, _getInitializationStrategy } = environment; - const { - _host: hostInitStrategy, - _viewport: viewportInitStrategy, - _padding: paddingInitStrategy, - _content: contentInitStrategy, - } = _getInitializationStrategy(); - const inputIsElement = isHTMLElement(input); - const inputAsObj = input as StructureInitialization; - const styleElm = document.querySelector('style'); - const checkStrategyDependendElements = ( - elm: Element | null, - input: HTMLElement | boolean | undefined, - isStaticStrategy: boolean, - strategy: StructureInitializationStaticElement | StructureInitializationDynamicElement, - id: string - ) => { - if (input) { - expect(elm).toBeTruthy(); - } else { - if (input === false) { - expect(elm).toBeFalsy(); - } - if (input === undefined) { - if (isStaticStrategy) { - strategy = strategy as StructureInitializationStaticElement; - if (typeof strategy === 'function') { - const result = strategy(target); - if (result) { - expect(result).toBe(elm); - } else { - expect(elm).toBeTruthy(); - } - } else { - expect(elm).toBeTruthy(); - } - } else { - strategy = strategy as StructureInitializationDynamicElement; - const expectDefaultValue = () => { - if (id === 'padding') { - if (_nativeScrollbarStyling) { - expect(elm).toBeFalsy(); - } else { - expect(elm).toBeTruthy(); - } - } else if (id === 'content') { - expect(elm).toBeFalsy(); - } - }; - if (typeof strategy === 'function') { - const result = strategy(target); - const resultIsBoolean = typeof result === 'boolean'; - if (resultIsBoolean) { - if (result) { - expect(elm).toBeTruthy(); - } else { - expect(elm).toBeFalsy(); - } - } else if (result) { - expect(elm).toBe(result); - } else { - expectDefaultValue(); - } - } else { - const strategyIsBoolean = typeof strategy === 'boolean'; - if (strategyIsBoolean) { - if (strategy) { - expect(elm).toBeTruthy(); - } else { - expect(elm).toBeFalsy(); - } - } else { - expectDefaultValue(); - } - } - } - } - } - }; - - if (_nativeScrollbarStyling || _cssCustomProperties) { - expect(styleElm).toBeFalsy(); - } else { - expect(styleElm).toBeTruthy(); - } - - if (inputIsElement) { - checkStrategyDependendElements(padding, undefined, false, paddingInitStrategy, 'padding'); - checkStrategyDependendElements(content, undefined, false, contentInitStrategy, 'content'); - checkStrategyDependendElements(viewport, undefined, true, viewportInitStrategy, 'viewport'); - checkStrategyDependendElements(host, undefined, true, hostInitStrategy, 'host'); - } else { - const { padding: inputPadding, content: inputContent, viewport: inputViewport, host: inputHost } = inputAsObj; - checkStrategyDependendElements(padding, inputPadding, false, paddingInitStrategy, 'padding'); - checkStrategyDependendElements(content, inputContent, false, contentInitStrategy, 'content'); - checkStrategyDependendElements(viewport, inputViewport, true, viewportInitStrategy, 'viewport'); - checkStrategyDependendElements(host, inputHost, true, hostInitStrategy, 'host'); - } - - return setup; -}; - -const assertCorrectDestroy = (snapshot: string, setup: StructureSetup) => { - const { _destroy } = setup; - - _destroy(); - - // remove empty class attr - const elms = document.querySelectorAll('*'); - Array.from(elms).forEach((elm) => { - const classAttr = elm.getAttribute('class'); - if (classAttr === '') { - elm.removeAttribute('class'); - } - }); - - expect(snapshot).toBe(getSnapshot()); -}; - -const env: Environment = jest.requireActual('environment').getEnvironment(); -const envDefault = { - name: 'default', - env: env, -}; -const envNativeScrollbarStyling = { - name: 'native scrollbar styling', - env: { - ...env, - _nativeScrollbarStyling: true, - }, -}; -const envCssCustomProperties = { - name: 'custom css properties', - env: { - ...env, - _cssCustomProperties: true, - }, -}; -const envInitStrategyMin = { - name: 'initialization strategy min', - env: { - ...env, - _getInitializationStrategy: () => ({ - _host: null, - _viewport: () => null, - _content: () => false, - _padding: false, - _scrollbarsSlot: null, - }), - }, -}; -const envInitStrategyMax = { - name: 'initialization strategy max', - env: { - ...env, - _getInitializationStrategy: () => ({ - _host: null, - _viewport: null, - _content: true, - _padding: () => true, - _scrollbarsSlot: null, - }), - }, -}; -const envInitStrategyAssigned = { - name: 'initialization strategy assigned', - env: { - ...env, - _getInitializationStrategy: () => ({ - _host: () => document.querySelector('#host1') as HTMLElement, - _viewport: (target: HTMLElement) => target.querySelector('#viewport') as HTMLElement, - _content: (target: HTMLElement) => target.querySelector('#content') as HTMLElement, - _padding: (target: HTMLElement) => target.querySelector('#padding') as HTMLElement, - _scrollbarsSlot: null, - }), - }, -}; - -describe('structureSetup', () => { - afterEach(() => clearBody()); - - [envDefault, envNativeScrollbarStyling, envCssCustomProperties, envInitStrategyMin, envInitStrategyMax, envInitStrategyAssigned].forEach( - (envWithName) => { - const { env: currEnv, name } = envWithName; - describe(`Environment: ${name}`, () => { - beforeAll(() => { - mockGetEnvironment.mockImplementation(() => currEnv); - }); - - [false, true].forEach((isTextarea) => { - describe(isTextarea ? 'textarea' : 'element', () => { - describe('basic', () => { - test('Element', () => { - const snapshot = fillBody(isTextarea); - const setup = assertCorrectSetup(isTextarea, createStructureSetupProxy(getTarget(isTextarea)), currEnv); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - - test('Object', () => { - const snapshot = fillBody(isTextarea); - const setup = assertCorrectSetup(isTextarea, createStructureSetupProxy({ target: getTarget(isTextarea) }), currEnv); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - }); - - describe('complex', () => { - describe('single assigned', () => { - test('padding', () => { - const snapshot = fillBody(isTextarea, (content, hostId) => { - return `
${content}
`; - }); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - host: document.querySelector('#host')!, - target: getTarget(isTextarea), - padding: document.querySelector('#padding')!, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - - test('viewport', () => { - const snapshot = fillBody(isTextarea, (content, hostId) => { - return `
${content}
`; - }); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - host: document.querySelector('#host')!, - target: getTarget(isTextarea), - viewport: document.querySelector('#viewport')!, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - - test('content', () => { - const snapshot = fillBody(isTextarea, (content, hostId) => { - return `
${content}
`; - }); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - host: document.querySelector('#host')!, - target: getTarget(isTextarea), - content: document.querySelector('#content')!, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - }); - - describe('multiple assigned', () => { - test('padding viewport content', () => { - const snapshot = fillBody(isTextarea, (content, hostId) => { - return `
${content}
`; - }); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - host: document.querySelector('#host')!, - target: getTarget(isTextarea), - padding: document.querySelector('#padding')!, - viewport: document.querySelector('#viewport')!, - content: document.querySelector('#content')!, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - - test('padding viewport', () => { - const snapshot = fillBody(isTextarea, (content, hostId) => { - return `
${content}
`; - }); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - host: document.querySelector('#host')!, - target: getTarget(isTextarea), - padding: document.querySelector('#padding')!, - viewport: document.querySelector('#viewport')!, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - - test('padding content', () => { - const snapshot = fillBody(isTextarea, (content, hostId) => { - return `
${content}
`; - }); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - host: document.querySelector('#host')!, - target: getTarget(isTextarea), - padding: document.querySelector('#padding')!, - content: document.querySelector('#content')!, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - - test('viewport content', () => { - const snapshot = fillBody(isTextarea, (content, hostId) => { - return `
${content}
`; - }); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - host: document.querySelector('#host')!, - target: getTarget(isTextarea), - viewport: document.querySelector('#viewport')!, - content: document.querySelector('#content')!, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - }); - - describe('single false', () => { - test('padding', () => { - const snapshot = fillBody(isTextarea); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - target: getTarget(isTextarea), - padding: false, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - - test('content', () => { - const snapshot = fillBody(isTextarea); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - target: getTarget(isTextarea), - content: false, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - }); - - describe('single true', () => { - test('padding', () => { - const snapshot = fillBody(isTextarea); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - target: getTarget(isTextarea), - padding: true, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - - test('content', () => { - const snapshot = fillBody(isTextarea); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - target: getTarget(isTextarea), - content: true, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - }); - - describe('multiple false', () => { - test('padding & content', () => { - const snapshot = fillBody(isTextarea); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - target: getTarget(isTextarea), - padding: false, - content: false, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - }); - - describe('multiple true', () => { - test('padding & content', () => { - const snapshot = fillBody(isTextarea); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - target: getTarget(isTextarea), - padding: true, - content: true, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - }); - - describe('mixed', () => { - test('false: padding & content | assigned: viewport', () => { - const snapshot = fillBody(isTextarea, (content, hostId) => { - return `
${content}
`; - }); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - host: document.querySelector('#host')!, - target: getTarget(isTextarea), - padding: false, - viewport: document.querySelector('#viewport')!, - content: false, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - - test('true: padding & content | assigned: viewport', () => { - const snapshot = fillBody(isTextarea, (content, hostId) => { - return `
${content}
`; - }); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - host: document.querySelector('#host')!, - target: getTarget(isTextarea), - padding: true, - viewport: document.querySelector('#viewport')!, - content: true, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - - test('true: content | false: padding | assigned: viewport', () => { - const snapshot = fillBody(isTextarea, (content, hostId) => { - return `
${content}
`; - }); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - host: document.querySelector('#host')!, - target: getTarget(isTextarea), - padding: false, - viewport: document.querySelector('#viewport')!, - content: true, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - - test('true: padding | false: content | assigned: viewport', () => { - const snapshot = fillBody(isTextarea, (content, hostId) => { - return `
${content}
`; - }); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - host: document.querySelector('#host')!, - target: getTarget(isTextarea), - padding: true, - viewport: document.querySelector('#viewport')!, - content: false, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - - test('false: padding | assigned: content', () => { - const snapshot = fillBody(isTextarea, (content, hostId) => { - return `
${content}
`; - }); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - host: document.querySelector('#host')!, - target: getTarget(isTextarea), - padding: false, - content: document.querySelector('#content')!, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - - test('true: padding | assigned: content', () => { - const snapshot = fillBody(isTextarea, (content, hostId) => { - return `
${content}
`; - }); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - host: document.querySelector('#host')!, - target: getTarget(isTextarea), - padding: true, - content: document.querySelector('#content')!, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - - test('false: padding | assigned: viewport', () => { - const snapshot = fillBody(isTextarea, (content, hostId) => { - return `
${content}
`; - }); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - host: document.querySelector('#host')!, - target: getTarget(isTextarea), - padding: false, - viewport: document.querySelector('#viewport')!, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - - test('true: padding | assigned: viewport', () => { - const snapshot = fillBody(isTextarea, (content, hostId) => { - return `
${content}
`; - }); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - host: document.querySelector('#host')!, - target: getTarget(isTextarea), - padding: true, - viewport: document.querySelector('#viewport')!, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - - test('false: padding | assigned: viewport & content', () => { - const snapshot = fillBody(isTextarea, (content, hostId) => { - return `
${content}
`; - }); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - host: document.querySelector('#host')!, - target: getTarget(isTextarea), - viewport: document.querySelector('#viewport')!, - padding: false, - content: document.querySelector('#content')!, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - - test('true: padding | assigned: viewport & content', () => { - const snapshot = fillBody(isTextarea, (content, hostId) => { - return `
${content}
`; - }); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - host: document.querySelector('#host')!, - target: getTarget(isTextarea), - viewport: document.querySelector('#viewport')!, - padding: true, - content: document.querySelector('#content')!, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - - test('false: content | assigned: padding', () => { - const snapshot = fillBody(isTextarea, (content, hostId) => { - return `
${content}
`; - }); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - host: document.querySelector('#host')!, - target: getTarget(isTextarea), - padding: document.querySelector('#padding')!, - content: false, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - - test('true: content | assigned: padding', () => { - const snapshot = fillBody(isTextarea, (content, hostId) => { - return `
${content}
`; - }); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - host: document.querySelector('#host')!, - target: getTarget(isTextarea), - padding: document.querySelector('#padding')!, - content: true, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - - test('false: content | assigned: viewport', () => { - const snapshot = fillBody(isTextarea, (content, hostId) => { - return `
${content}
`; - }); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - host: document.querySelector('#host')!, - target: getTarget(isTextarea), - viewport: document.querySelector('#viewport')!, - content: false, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - - test('true: content | assigned: viewport', () => { - const snapshot = fillBody(isTextarea, (content, hostId) => { - return `
${content}
`; - }); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - host: document.querySelector('#host')!, - target: getTarget(isTextarea), - viewport: document.querySelector('#viewport')!, - content: true, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - - test('false: content | assigned: padding & viewport', () => { - const snapshot = fillBody(isTextarea, (content, hostId) => { - return `
${content}
`; - }); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - host: document.querySelector('#host')!, - target: getTarget(isTextarea), - padding: document.querySelector('#padding')!, - viewport: document.querySelector('#viewport')!, - content: false, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - - test('true: content | assigned: padding & viewport', () => { - const snapshot = fillBody(isTextarea, (content, hostId) => { - return `
${content}
`; - }); - const setup = assertCorrectSetup( - isTextarea, - createStructureSetupProxy({ - host: document.querySelector('#host')!, - target: getTarget(isTextarea), - padding: document.querySelector('#padding')!, - viewport: document.querySelector('#viewport')!, - content: true, - }), - currEnv - ); - assertCorrectDOMStructure(isTextarea); - assertCorrectDestroy(snapshot, setup); - }); - }); - }); - }); - }); - }); - } - ); -}); diff --git a/packages/overlayscrollbars/tests/browser/environment/index.browser.ts b/packages/overlayscrollbars/tests/playwright/environment/index.browser.ts similarity index 100% rename from packages/overlayscrollbars/tests/browser/environment/index.browser.ts rename to packages/overlayscrollbars/tests/playwright/environment/index.browser.ts diff --git a/packages/overlayscrollbars/tests/browser/environment/index.html b/packages/overlayscrollbars/tests/playwright/environment/index.html similarity index 100% rename from packages/overlayscrollbars/tests/browser/environment/index.html rename to packages/overlayscrollbars/tests/playwright/environment/index.html diff --git a/packages/overlayscrollbars/tests/browser/environment/index.test.ts b/packages/overlayscrollbars/tests/playwright/environment/index.test.ts similarity index 100% rename from packages/overlayscrollbars/tests/browser/environment/index.test.ts rename to packages/overlayscrollbars/tests/playwright/environment/index.test.ts diff --git a/packages/overlayscrollbars/tests/browser/lifecycles/structureLifecycle/handleEnvironment.ts b/packages/overlayscrollbars/tests/playwright/lifecycles/structureLifecycle/handleEnvironment.ts similarity index 100% rename from packages/overlayscrollbars/tests/browser/lifecycles/structureLifecycle/handleEnvironment.ts rename to packages/overlayscrollbars/tests/playwright/lifecycles/structureLifecycle/handleEnvironment.ts diff --git a/packages/overlayscrollbars/tests/browser/lifecycles/structureLifecycle/index.browser.ts b/packages/overlayscrollbars/tests/playwright/lifecycles/structureLifecycle/index.browser.ts similarity index 79% rename from packages/overlayscrollbars/tests/browser/lifecycles/structureLifecycle/index.browser.ts rename to packages/overlayscrollbars/tests/playwright/lifecycles/structureLifecycle/index.browser.ts index 73cc829..567c82f 100644 --- a/packages/overlayscrollbars/tests/browser/lifecycles/structureLifecycle/index.browser.ts +++ b/packages/overlayscrollbars/tests/playwright/lifecycles/structureLifecycle/index.browser.ts @@ -7,7 +7,17 @@ import { setTestResult, waitForOrFailTest } from '@/testing-browser/TestResult'; import { generateClassChangeSelectCallback, iterateSelect } from '@/testing-browser/Select'; import { timeout } from '@/testing-browser/timeout'; import { OverlayScrollbars } from 'overlayscrollbars'; -import { assignDeep, clientSize, from, getBoundingClientRect, style, parent, addClass, WH, removeAttr } from 'support'; +import { + assignDeep, + clientSize, + from, + getBoundingClientRect, + style, + parent, + addClass, + WH, + removeAttr, +} from 'support'; interface Metrics { offset: { @@ -74,8 +84,12 @@ const getMetrics = (elm: HTMLElement): Metrics => { return { offset: { - left: rounding(comparisonBCR.left - comparisonEnvBCR.left).toFixed(Math.min(fixedDigitsOffset, fixedDigits)), - top: rounding(comparisonBCR.top - comparisonEnvBCR.top).toFixed(Math.min(fixedDigitsOffset, fixedDigits)), + left: rounding(comparisonBCR.left - comparisonEnvBCR.left).toFixed( + Math.min(fixedDigitsOffset, fixedDigits) + ), + top: rounding(comparisonBCR.top - comparisonEnvBCR.top).toFixed( + Math.min(fixedDigitsOffset, fixedDigits) + ), }, size: { width: rounding(comparisonBCR.width).toFixed(fixedDigits), @@ -166,11 +180,11 @@ target!.querySelector('.os-viewport')?.addEventListener('scroll', (e) => { resize(target!).addResizeListener((width, height) => { style(comparison, { width, height }); }); -//resize(comparison!).addResizeListener((width, height) => style(target, { width, height })); +// resize(comparison!).addResizeListener((width, height) => style(target, { width, height })); resize(targetResize!).addResizeListener((width, height) => { style(comparisonResize, { width, height }); }); -//resize(comparisonRes!).addResizeListener((width, height) => style(targetRes, { width, height })); +// resize(comparisonRes!).addResizeListener((width, height) => style(targetRes, { width, height })); const selectCallbackEnv = generateClassChangeSelectCallback(from(envElms)); const envWidthSelect = document.querySelector('#envWidth'); @@ -230,58 +244,136 @@ const checkMetrics = async (checkComparison: CheckComparisonObj) => { if (isFractionalPixelRatio()) { should.ok( - plusMinusArr(targetMetrics.scroll.width, fractionalPixelRatioTollerance).indexOf(comparisonMetrics.scroll.width) > -1, + plusMinusArr(targetMetrics.scroll.width, fractionalPixelRatioTollerance).indexOf( + comparisonMetrics.scroll.width + ) > -1, `Scroll width equality. (+-${fractionalPixelRatioTollerance}) | Target: ${targetMetrics.scroll.width} | Comparison: ${comparisonMetrics.scroll.width}` ); should.ok( - plusMinusArr(targetMetrics.scroll.height, fractionalPixelRatioTollerance).indexOf(comparisonMetrics.scroll.height) > -1, + plusMinusArr(targetMetrics.scroll.height, fractionalPixelRatioTollerance).indexOf( + comparisonMetrics.scroll.height + ) > -1, `Scroll height equality. (+-${fractionalPixelRatioTollerance}) | Target: ${targetMetrics.scroll.height} | Comparison: ${comparisonMetrics.scroll.height}` ); should.ok( - plusMinusArr(osInstance.state()._overflowAmount.w, fractionalPixelRatioTollerance).indexOf(comparisonMetrics.scroll.width) > -1, - `Overflow amount width equality. (+-${fractionalPixelRatioTollerance}) | Amount: ${osInstance.state()._overflowAmount.w} | Comparison: ${ + plusMinusArr(osInstance.state()._overflowAmount.w, fractionalPixelRatioTollerance).indexOf( comparisonMetrics.scroll.width - }` + ) > -1, + `Overflow amount width equality. (+-${fractionalPixelRatioTollerance}) | Amount: ${ + osInstance.state()._overflowAmount.w + } | Comparison: ${comparisonMetrics.scroll.width}` ); should.ok( - plusMinusArr(osInstance.state()._overflowAmount.h, fractionalPixelRatioTollerance).indexOf(comparisonMetrics.scroll.height) > -1, - `Overflow amount height equality. (+-${fractionalPixelRatioTollerance}) | Amount: ${osInstance.state()._overflowAmount.h} | Comparison: ${ + plusMinusArr(osInstance.state()._overflowAmount.h, fractionalPixelRatioTollerance).indexOf( comparisonMetrics.scroll.height - }` + ) > -1, + `Overflow amount height equality. (+-${fractionalPixelRatioTollerance}) | Amount: ${ + osInstance.state()._overflowAmount.h + } | Comparison: ${comparisonMetrics.scroll.height}` ); } else { - should.equal(targetMetrics.scroll.width, comparisonMetrics.scroll.width, 'Scroll width equality.'); - should.equal(targetMetrics.scroll.height, comparisonMetrics.scroll.height, 'Scroll height equality.'); + should.equal( + targetMetrics.scroll.width, + comparisonMetrics.scroll.width, + 'Scroll width equality.' + ); + should.equal( + targetMetrics.scroll.height, + comparisonMetrics.scroll.height, + 'Scroll height equality.' + ); - should.equal(osInstance.state()._overflowAmount.w, comparisonMetrics.scroll.width, 'Overflow amount width equality.'); - should.equal(osInstance.state()._overflowAmount.h, comparisonMetrics.scroll.height, 'Overflow amount height equality.'); + should.equal( + osInstance.state()._overflowAmount.w, + comparisonMetrics.scroll.width, + 'Overflow amount width equality.' + ); + should.equal( + osInstance.state()._overflowAmount.h, + comparisonMetrics.scroll.height, + 'Overflow amount height equality.' + ); - should.equal(targetMetrics.hasOverflow.x, comparisonMetrics.hasOverflow.x, 'Has overflow x equality.'); - should.equal(targetMetrics.hasOverflow.y, comparisonMetrics.hasOverflow.y, 'Has overflow y equality.'); + should.equal( + targetMetrics.hasOverflow.x, + comparisonMetrics.hasOverflow.x, + 'Has overflow x equality.' + ); + should.equal( + targetMetrics.hasOverflow.y, + comparisonMetrics.hasOverflow.y, + 'Has overflow y equality.' + ); } if (targetMetrics.hasOverflow.x) { - should.equal(style(targetViewport!, 'overflowX'), 'scroll', 'Overflow-X should result in scroll.'); - should.ok(osInstance.state()._overflowAmount.w > 0, 'Overflow amount width should be > 0 with overflow.'); + should.equal( + style(targetViewport!, 'overflowX'), + 'scroll', + 'Overflow-X should result in scroll.' + ); + should.ok( + osInstance.state()._overflowAmount.w > 0, + 'Overflow amount width should be > 0 with overflow.' + ); } else { - should.notEqual(style(targetViewport!, 'overflowX'), 'scroll', 'No Overflow-X shouldnt result in scroll.'); - should.equal(osInstance.state()._overflowAmount.w, 0, 'Overflow amount width should be 0 without overflow.'); + should.notEqual( + style(targetViewport!, 'overflowX'), + 'scroll', + 'No Overflow-X shouldnt result in scroll.' + ); + should.equal( + osInstance.state()._overflowAmount.w, + 0, + 'Overflow amount width should be 0 without overflow.' + ); } if (targetMetrics.hasOverflow.y) { - should.equal(style(targetViewport!, 'overflowY'), 'scroll', 'Overflow-Y should result in scroll.'); - should.ok(osInstance.state()._overflowAmount.h > 0, 'Overflow amount height should be > 0 with overflow.'); + should.equal( + style(targetViewport!, 'overflowY'), + 'scroll', + 'Overflow-Y should result in scroll.' + ); + should.ok( + osInstance.state()._overflowAmount.h > 0, + 'Overflow amount height should be > 0 with overflow.' + ); } else { - should.notEqual(style(targetViewport!, 'overflowY'), 'scroll', 'No Overflow-Y shouldnt result in scroll.'); - should.equal(osInstance.state()._overflowAmount.h, 0, 'Overflow amount height should be 0 without overflow.'); + should.notEqual( + style(targetViewport!, 'overflowY'), + 'scroll', + 'No Overflow-Y shouldnt result in scroll.' + ); + should.equal( + osInstance.state()._overflowAmount.h, + 0, + 'Overflow amount height should be 0 without overflow.' + ); } - should.equal(targetMetrics.percentElm.width, comparisonMetrics.percentElm.width, 'Percent Elements width equality.'); - should.equal(targetMetrics.percentElm.height, comparisonMetrics.percentElm.height, 'Percent Elements height equality.'); + should.equal( + targetMetrics.percentElm.width, + comparisonMetrics.percentElm.width, + 'Percent Elements width equality.' + ); + should.equal( + targetMetrics.percentElm.height, + comparisonMetrics.percentElm.height, + 'Percent Elements height equality.' + ); - should.equal(targetMetrics.endElm.width, comparisonMetrics.endElm.width, 'End Elements width equality.'); - should.equal(targetMetrics.endElm.height, comparisonMetrics.endElm.height, 'End Elements height equality.'); + should.equal( + targetMetrics.endElm.width, + comparisonMetrics.endElm.width, + 'End Elements width equality.' + ); + should.equal( + targetMetrics.endElm.height, + comparisonMetrics.endElm.height, + 'End Elements height equality.' + ); await timeout(1); @@ -307,31 +399,36 @@ const iterate = async (select: HTMLSelectElement | null, afterEach?: () => any) afterEach, }); }; - +/* const iterateEnvWidth = async (afterEach?: () => any) => { await iterate(envWidthSelect, afterEach); }; const iterateEnvHeight = async (afterEach?: () => any) => { await iterate(envHeightSelect, afterEach); }; +*/ const iterateHeight = async (afterEach?: () => any) => { await iterate(containerHeightSelect, afterEach); }; const iterateWidth = async (afterEach?: () => any) => { await iterate(containerWidthSelect, afterEach); }; +/* const iterateFloat = async (afterEach?: () => any) => { await iterate(containerFloatSelect, afterEach); }; +*/ const iteratePadding = async (afterEach?: () => any) => { await iterate(containerPaddingSelect, afterEach); }; const iterateBorder = async (afterEach?: () => any) => { await iterate(containerBorderSelect, afterEach); }; +/* const iterateMargin = async (afterEach?: () => any) => { await iterate(containerMarginSelect, afterEach); }; +*/ const iterateBoxSizing = async (afterEach?: () => any) => { await iterate(containerBoxSizingSelect, afterEach); }; @@ -354,8 +451,10 @@ const overflowTest = async () => { const computedStyle = window.getComputedStyle(elm); const size = clientSize(elm); return { - w: size.w - (parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight)), - h: size.h - (parseFloat(computedStyle.paddingTop) + parseFloat(computedStyle.paddingBottom)), + w: + size.w - (parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight)), + h: + size.h - (parseFloat(computedStyle.paddingTop) + parseFloat(computedStyle.paddingBottom)), }; } @@ -425,15 +524,29 @@ const overflowTest = async () => { await waitForOrFailTest(() => { if (width) { - should.ok(overflowAmountCheck.width >= addOverflow, 'Correct smallest possible overflow width. (?)'); + should.ok( + overflowAmountCheck.width >= addOverflow, + 'Correct smallest possible overflow width. (?)' + ); } else { - should.equal(overflowAmountCheck.width, 0, 'Correct smallest possible overflow width. (0)'); + should.equal( + overflowAmountCheck.width, + 0, + 'Correct smallest possible overflow width. (0)' + ); } if (height) { - should.ok(overflowAmountCheck.height >= addOverflow, 'Correct smallest possible overflow height. (?)'); + should.ok( + overflowAmountCheck.height >= addOverflow, + 'Correct smallest possible overflow height. (?)' + ); } else { - should.equal(overflowAmountCheck.height, 0, 'Correct smallest possible overflow height. (0)'); + should.equal( + overflowAmountCheck.height, + 0, + 'Correct smallest possible overflow height. (0)' + ); } }); diff --git a/packages/overlayscrollbars/tests/browser/lifecycles/structureLifecycle/index.html b/packages/overlayscrollbars/tests/playwright/lifecycles/structureLifecycle/index.html similarity index 100% rename from packages/overlayscrollbars/tests/browser/lifecycles/structureLifecycle/index.html rename to packages/overlayscrollbars/tests/playwright/lifecycles/structureLifecycle/index.html diff --git a/packages/overlayscrollbars/tests/browser/lifecycles/structureLifecycle/index.scss b/packages/overlayscrollbars/tests/playwright/lifecycles/structureLifecycle/index.scss similarity index 100% rename from packages/overlayscrollbars/tests/browser/lifecycles/structureLifecycle/index.scss rename to packages/overlayscrollbars/tests/playwright/lifecycles/structureLifecycle/index.scss diff --git a/packages/overlayscrollbars/tests/playwright/lifecycles/structureLifecycle/index.test.ts b/packages/overlayscrollbars/tests/playwright/lifecycles/structureLifecycle/index.test.ts new file mode 100644 index 0000000..159361a --- /dev/null +++ b/packages/overlayscrollbars/tests/playwright/lifecycles/structureLifecycle/index.test.ts @@ -0,0 +1,58 @@ +// @ts-ignore +import { playwrightRollup, expectSuccess } from '@/playwright/rollup'; +import { test, Page } from '@playwright/test'; + +playwrightRollup(); + +test.describe('StructureLifecycle', () => { + [false, true].forEach(async (nativeScrollbarStyling) => { + const withText = nativeScrollbarStyling ? 'with' : 'without'; + const nss = async (page: Page) => { + if (!nativeScrollbarStyling) { + await page.click('#nss'); + await page.waitForTimeout(500); + } + }; + + test.describe(`structureLifecycles ${withText} native scrollbar styling`, () => { + test.describe.configure({ mode: 'parallel' }); + + test('default', async ({ page }) => { + await nss(page); + await page.click('#start'); + await expectSuccess(page); + }); + + test('without flexbox glue & css custom props', async ({ page }) => { + await nss(page); + await page.click('#fbg'); + await page.waitForTimeout(500); + await page.click('#ccp'); + await page.waitForTimeout(500); + await page.click('#start'); + await expectSuccess(page); + }); + + test('with partially overlaid scrollbars', async ({ page, browserName }) => { + test.skip( + browserName === 'firefox' || browserName === 'webkit', + "firefox can't simulate partially overlaid scrollbars, boost speed by omitting webkit" + ); + + await nss(page); + await page.click('#po'); + await page.waitForTimeout(500); + await page.click('#start'); + await expectSuccess(page); + }); + + test('with fully overlaid scrollbars', async ({ page }) => { + await nss(page); + await page.click('#fo'); + await page.waitForTimeout(500); + await page.click('#start'); + await expectSuccess(page); + }); + }); + }); +}); diff --git a/packages/overlayscrollbars/tests/browser/observers/domObserver/index.browser.ts b/packages/overlayscrollbars/tests/playwright/observers/domObserver/index.browser.ts similarity index 84% rename from packages/overlayscrollbars/tests/browser/observers/domObserver/index.browser.ts rename to packages/overlayscrollbars/tests/playwright/observers/domObserver/index.browser.ts index f8164bf..91aeade 100644 --- a/packages/overlayscrollbars/tests/browser/observers/domObserver/index.browser.ts +++ b/packages/overlayscrollbars/tests/playwright/observers/domObserver/index.browser.ts @@ -4,7 +4,19 @@ import should from 'should'; import { generateSelectCallback, iterateSelect } from '@/testing-browser/Select'; import { timeout } from '@/testing-browser/timeout'; import { setTestResult, waitForOrFailTest } from '@/testing-browser/TestResult'; -import { appendChildren, createDiv, removeElements, children, isArray, isNumber, liesBetween, addClass, removeClass, diffClass, on } from 'support'; +import { + appendChildren, + createDiv, + removeElements, + children, + isArray, + isNumber, + liesBetween, + addClass, + removeClass, + diffClass, + on, +} from 'support'; import { createDOMObserver } from 'observers/domObserver'; @@ -27,8 +39,12 @@ const targetElm: HTMLElement | null = document.querySelector('#target'); const trargetContentElm: HTMLElement | null = document.querySelector('#target .content'); const targetElmContentElm: HTMLElement | null = document.querySelector('#content-host'); const contentElmAttrChange: HTMLElement | null = document.querySelector('#target .content-nest'); -const contentBetweenElmAttrChange: HTMLElement | null = document.querySelector('#content-host .padding-nest-item'); -const contentHostElmAttrChange: HTMLElement | null = document.querySelector('#content-nest-item-host'); +const contentBetweenElmAttrChange: HTMLElement | null = document.querySelector( + '#content-host .padding-nest-item' +); +const contentHostElmAttrChange: HTMLElement | null = document.querySelector( + '#content-nest-item-host' +); const targetElmsSlot = document.querySelector('#target .host-nest-item'); const targetContentElmsSlot = document.querySelector('#target .content .content-nest'); @@ -36,20 +52,40 @@ const targetContentBetweenElmsSlot = document.querySelector('#content-host'); const imgElmsSlot = document.querySelector('#target .content-nest'); const transitionElmsSlot = document.querySelector('#content-host .content'); -const addRemoveTargetElms: HTMLButtonElement | null = document.querySelector('#addRemoveTargetElms'); -const addRemoveTargetContentElms: HTMLButtonElement | null = document.querySelector('#addRemoveTargetContentElms'); -const addRemoveTargetContentBetweenElms: HTMLButtonElement | null = document.querySelector('#addRemoveTargetContentBetweenElms'); +const addRemoveTargetElms: HTMLButtonElement | null = document.querySelector( + '#addRemoveTargetElms' +); +const addRemoveTargetContentElms: HTMLButtonElement | null = document.querySelector( + '#addRemoveTargetContentElms' +); +const addRemoveTargetContentBetweenElms: HTMLButtonElement | null = document.querySelector( + '#addRemoveTargetContentBetweenElms' +); const addRemoveImgElms: HTMLButtonElement | null = document.querySelector('#addRemoveImgElms'); -const addRemoveTransitionElms: HTMLButtonElement | null = document.querySelector('#addRemoveTransitionElms'); +const addRemoveTransitionElms: HTMLButtonElement | null = document.querySelector( + '#addRemoveTransitionElms' +); const ignoreTargetChange: HTMLButtonElement | null = document.querySelector('#ignoreTargetChange'); const setTargetAttr: HTMLSelectElement | null = document.querySelector('#setTargetAttr'); -const setFilteredTargetAttr: HTMLSelectElement | null = document.querySelector('#setFilteredTargetAttr'); +const setFilteredTargetAttr: HTMLSelectElement | null = document.querySelector( + '#setFilteredTargetAttr' +); const setContentAttr: HTMLSelectElement | null = document.querySelector('#setContentAttr'); -const setFilteredContentAttr: HTMLSelectElement | null = document.querySelector('#setFilteredContentAttr'); -const setContentBetweenAttr: HTMLSelectElement | null = document.querySelector('#setContentBetweenAttr'); -const setFilteredContentBetweenAttr: HTMLSelectElement | null = document.querySelector('#setFilteredContentBetweenAttr'); -const setContentHostElmAttr: HTMLSelectElement | null = document.querySelector('#setContentHostElmAttr'); -const setFilteredContentHostElmAttr: HTMLSelectElement | null = document.querySelector('#setFilteredContentHostElmAttr'); +const setFilteredContentAttr: HTMLSelectElement | null = document.querySelector( + '#setFilteredContentAttr' +); +const setContentBetweenAttr: HTMLSelectElement | null = document.querySelector( + '#setContentBetweenAttr' +); +const setFilteredContentBetweenAttr: HTMLSelectElement | null = document.querySelector( + '#setFilteredContentBetweenAttr' +); +const setContentHostElmAttr: HTMLSelectElement | null = document.querySelector( + '#setContentHostElmAttr' +); +const setFilteredContentHostElmAttr: HTMLSelectElement | null = document.querySelector( + '#setFilteredContentHostElmAttr' +); const summaryContent: HTMLElement | null = document.querySelector('#summary-content'); const summaryBetween: HTMLElement | null = document.querySelector('#summary-between'); @@ -66,11 +102,21 @@ const targetDomObserver = createDOMObserver( document.querySelector('#target')!, false, (changedTargetAttrs: string[], styleChanged: boolean) => { - should.ok(Array.isArray(changedTargetAttrs), 'The changedTargetAttrs parameter in a target dom observer must be a array.'); - should.equal(typeof styleChanged, 'boolean', 'The styleChanged parameter in a target dom observer must be a boolean.'); + should.ok( + Array.isArray(changedTargetAttrs), + 'The changedTargetAttrs parameter in a target dom observer must be a array.' + ); + should.equal( + typeof styleChanged, + 'boolean', + 'The styleChanged parameter in a target dom observer must be a boolean.' + ); if (styleChanged && changedTargetAttrs.length === 0) { - should.ok(false, 'Style changing properties must always be inside the changedTargetAttrs array.'); + should.ok( + false, + 'Style changing properties must always be inside the changedTargetAttrs array.' + ); } domTargetObserverObservations.push({ changedTargetAttrs, styleChanged }); @@ -106,14 +152,23 @@ const targetDomObserver = createDOMObserver( } ); -const createContentDomOserver = (eventContentChange: Array<[string?, string?] | null | undefined>) => { +const createContentDomOserver = ( + eventContentChange: Array<[string?, string?] | null | undefined> +) => { return createDOMObserver( trargetContentElm!, true, (contentChangedTroughEvent: boolean) => { - should.equal(typeof contentChangedTroughEvent, 'boolean', 'The contentChanged parameter in a content dom observer must be a boolean.'); + should.equal( + typeof contentChangedTroughEvent, + 'boolean', + 'The contentChanged parameter in a content dom observer must be a boolean.' + ); - domContentObserverObservations.push({ contentChange: true, troughEvent: contentChangedTroughEvent }); + domContentObserverObservations.push({ + contentChange: true, + troughEvent: contentChangedTroughEvent, + }); requestAnimationFrame(() => { if (contentChangesCountSlot) { contentChangesCountSlot.textContent = `${domContentObserverObservations.length}`; @@ -127,7 +182,11 @@ const createContentDomOserver = (eventContentChange: Array<[string?, string?] | _nestedTargetSelector: hostSelector, _ignoreContentChange: (mutation, isNestedTarget) => { const { target, attributeName } = mutation; - return isNestedTarget ? false : attributeName ? liesBetween(target as Element, hostSelector, '.content') : false; + return isNestedTarget + ? false + : attributeName + ? liesBetween(target as Element, hostSelector, '.content') + : false; }, _ignoreNestedTargetChange: (target, attrName, oldValue, newValue) => { if (attrName === 'class' && oldValue && newValue) { @@ -149,8 +208,10 @@ const createContentDomOserver = (eventContentChange: Array<[string?, string?] | let contentDomObserver = createContentDomOserver(contentChange); -const getTotalObservations = () => domTargetObserverObservations.length + domContentObserverObservations.length; -const getLast = (arr: T[], indexFromLast = 0): T => arr[arr.length - 1 - indexFromLast] || ({} as T); +const getTotalObservations = () => + domTargetObserverObservations.length + domContentObserverObservations.length; +const getLast = (arr: T[], indexFromLast = 0): T => + arr[arr.length - 1 - indexFromLast] || ({} as T); const changedThrough = ( observationLists?: Array | ChangeThrough[] ) => { @@ -222,7 +283,9 @@ const attrChangeListener = (attrChangeTarget: HTMLElement | null) => isClass && target.classList.add('something'); !isClass && target.setAttribute(selectedValue, 'something'); }); -const iterateAttrChange = async ( +const iterateAttrChange = async < + ChangeThrough extends DOMContentObserverResult | DOMTargetObserverResult +>( select: HTMLSelectElement | null, changeThrough?: ChangeThrough[], checkChange?: (observation: ChangeThrough, selected: string) => any @@ -248,10 +311,17 @@ const iterateAttrChange = async { +const addRemoveElementsTest = async ( + slot: Element | null, + changeThrough?: DOMContentObserverResult[] | SeparateChangeThrough +) => { if (slot) { - let addChangeThrough: DOMContentObserverResult[] | undefined = changeThrough as DOMContentObserverResult[] | undefined; - let removeChangeThrough: DOMContentObserverResult[] | undefined = changeThrough as DOMContentObserverResult[] | undefined; + let addChangeThrough: DOMContentObserverResult[] | undefined = changeThrough as + | DOMContentObserverResult[] + | undefined; + let removeChangeThrough: DOMContentObserverResult[] | undefined = changeThrough as + | DOMContentObserverResult[] + | undefined; if (changeThrough && !isArray(changeThrough)) { addChangeThrough = (changeThrough as SeparateChangeThrough).added; removeChangeThrough = (changeThrough as SeparateChangeThrough).removed; @@ -272,7 +342,11 @@ const addRemoveElementsTest = async (slot: Element | null, changeThrough?: DOMCo if (addChangeThrough) { const contentChanged = getLast(addChangeThrough); await waitForOrFailTest(() => { - should.deepEqual(contentChanged, { contentChange: true, troughEvent: false }, 'Adding an content element must result in a content change.'); + should.deepEqual( + contentChanged, + { contentChange: true, troughEvent: false }, + 'Adding an content element must result in a content change.' + ); }); } }; @@ -311,7 +385,10 @@ const addRemoveElementsTest = async (slot: Element | null, changeThrough?: DOMCo await removeElm(); } }; -const triggerSummaryElemet = async (summaryElm: HTMLElement | null, changeThrough?: DOMContentObserverResult[]) => { +const triggerSummaryElemet = async ( + summaryElm: HTMLElement | null, + changeThrough?: DOMContentObserverResult[] +) => { // onyl do if summary is working (IE. exception) if (summaryElm && (summaryElm.nextElementSibling as HTMLElement)?.offsetHeight === 0) { const click = async () => { @@ -370,7 +447,11 @@ const addRemoveImgElmsFn = async () => { ); const lastContentChanged = getLast(domContentObserverObservations); - should.deepEqual(lastContentChanged, { contentChange: true, troughEvent: true }, 'The images load event must result in a content change.'); + should.deepEqual( + lastContentChanged, + { contentChange: true, troughEvent: true }, + 'The images load event must result in a content change.' + ); }); }; @@ -424,7 +505,9 @@ const addRemoveImgElmsFn = async () => { await addMultiple(); // remove load event from image test - const addChanged = async (newEventContentChange: Array<[string?, string?] | null | undefined>) => { + const addChanged = async ( + newEventContentChange: Array<[string?, string?] | null | undefined> + ) => { contentDomObserver._destroy(); contentDomObserver = createContentDomOserver(newEventContentChange); @@ -449,7 +532,16 @@ const addRemoveImgElmsFn = async () => { contentDomObserver = createContentDomOserver(contentChange); }; - await addChanged([['img', 'something'], ['img', 'something2'], ['img', ''], ['img', undefined], ['', ''], [undefined, undefined], null, undefined]); + await addChanged([ + ['img', 'something'], + ['img', 'something2'], + ['img', ''], + ['img', undefined], + ['', ''], + [undefined, undefined], + null, + undefined, + ]); await addChanged([]); removeElements(document.querySelectorAll('.img')); @@ -460,7 +552,11 @@ const addRemoveTransitionElmsFn = async () => { const startTransition = async (elm: Element, expectTransitionEndContentChange: boolean) => { await timeout(50); // time for css to apply class a bit later to trigger transition - const { before: beforeTransition, after: afterTransition, compare: compareTransition } = changedThrough(domContentObserverObservations); + const { + before: beforeTransition, + after: afterTransition, + compare: compareTransition, + } = changedThrough(domContentObserverObservations); beforeTransition(); removeClass(elm, 'resetTransition'); // IE... addClass(elm, 'active'); @@ -523,7 +619,9 @@ const addRemoveTransitionElmsFn = async () => { await add(false); contentDomObserver._destroy(); - contentDomObserver = createContentDomOserver(contentChange.concat([['.transition', 'transitionend']])); + contentDomObserver = createContentDomOserver( + contentChange.concat([['.transition', 'transitionend']]) + ); await add(true); }; @@ -557,7 +655,11 @@ const iterateTargetAttrChange = async () => { true, 'A attribute change on the target element for a DOMTargetObserver must be inside the changedTargetAttrs array.' ); - should.equal(styleChanged, true, 'A style changing attribute on the target element for a DOMTargetObserver must set styleChanged to true.'); + should.equal( + styleChanged, + true, + 'A style changing attribute on the target element for a DOMTargetObserver must set styleChanged to true.' + ); }); await iterateAttrChange(setFilteredTargetAttr); }; @@ -605,9 +707,15 @@ setFilteredTargetAttr?.addEventListener('change', attrChangeListener(targetElm)) setContentAttr?.addEventListener('change', attrChangeListener(contentElmAttrChange)); setFilteredContentAttr?.addEventListener('change', attrChangeListener(contentElmAttrChange)); setContentBetweenAttr?.addEventListener('change', attrChangeListener(contentBetweenElmAttrChange)); -setFilteredContentBetweenAttr?.addEventListener('change', attrChangeListener(contentBetweenElmAttrChange)); +setFilteredContentBetweenAttr?.addEventListener( + 'change', + attrChangeListener(contentBetweenElmAttrChange) +); setContentHostElmAttr?.addEventListener('change', attrChangeListener(contentHostElmAttrChange)); -setFilteredContentHostElmAttr?.addEventListener('change', attrChangeListener(contentHostElmAttrChange)); +setFilteredContentHostElmAttr?.addEventListener( + 'change', + attrChangeListener(contentHostElmAttrChange) +); const start = async () => { setTestResult(null); diff --git a/packages/overlayscrollbars/tests/browser/observers/domObserver/index.html b/packages/overlayscrollbars/tests/playwright/observers/domObserver/index.html similarity index 100% rename from packages/overlayscrollbars/tests/browser/observers/domObserver/index.html rename to packages/overlayscrollbars/tests/playwright/observers/domObserver/index.html diff --git a/packages/overlayscrollbars/tests/browser/observers/domObserver/index.scss b/packages/overlayscrollbars/tests/playwright/observers/domObserver/index.scss similarity index 100% rename from packages/overlayscrollbars/tests/browser/observers/domObserver/index.scss rename to packages/overlayscrollbars/tests/playwright/observers/domObserver/index.scss diff --git a/packages/overlayscrollbars/tests/playwright/observers/domObserver/index.test.ts b/packages/overlayscrollbars/tests/playwright/observers/domObserver/index.test.ts new file mode 100644 index 0000000..97dece0 --- /dev/null +++ b/packages/overlayscrollbars/tests/playwright/observers/domObserver/index.test.ts @@ -0,0 +1,12 @@ +// @ts-ignore +import { playwrightRollup, expectSuccess } from '@/playwright/rollup'; +import { test } from '@playwright/test'; + +playwrightRollup(); + +test.describe('DOMObserver', () => { + test('test', async ({ page }) => { + await page.click('#start'); + await expectSuccess(page); + }); +}); diff --git a/packages/overlayscrollbars/tests/browser/observers/sizeObserver/handleEnvironment.ts b/packages/overlayscrollbars/tests/playwright/observers/sizeObserver/handleEnvironment.ts similarity index 100% rename from packages/overlayscrollbars/tests/browser/observers/sizeObserver/handleEnvironment.ts rename to packages/overlayscrollbars/tests/playwright/observers/sizeObserver/handleEnvironment.ts diff --git a/packages/overlayscrollbars/tests/browser/observers/sizeObserver/index.browser.ts b/packages/overlayscrollbars/tests/playwright/observers/sizeObserver/index.browser.ts similarity index 82% rename from packages/overlayscrollbars/tests/browser/observers/sizeObserver/index.browser.ts rename to packages/overlayscrollbars/tests/playwright/observers/sizeObserver/index.browser.ts index 74b33c5..03820d7 100644 --- a/packages/overlayscrollbars/tests/browser/observers/sizeObserver/index.browser.ts +++ b/packages/overlayscrollbars/tests/playwright/observers/sizeObserver/index.browser.ts @@ -2,7 +2,11 @@ import 'styles/overlayscrollbars.scss'; import './index.scss'; import './handleEnvironment'; import should from 'should'; -import { generateClassChangeSelectCallback, iterateSelect, selectOption } from '@/testing-browser/Select'; +import { + generateClassChangeSelectCallback, + iterateSelect, + selectOption, +} from '@/testing-browser/Select'; import { setTestResult, waitForOrFailTest } from '@/testing-browser/TestResult'; import { timeout } from '@/testing-browser/timeout'; import { hasDimensions, offsetSize, WH, style } from 'support'; @@ -15,8 +19,12 @@ const contentBox = (elm: HTMLElement | null): WH => { if (elm) { const computedStyle = window.getComputedStyle(elm); return { - w: elm.clientWidth - (parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight)), - h: elm.clientHeight - (parseFloat(computedStyle.paddingTop) + parseFloat(computedStyle.paddingBottom)), + w: + elm.clientWidth - + (parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight)), + h: + elm.clientHeight - + (parseFloat(computedStyle.paddingTop) + parseFloat(computedStyle.paddingBottom)), }; } @@ -37,7 +45,7 @@ const preInitChildren = targetElm?.children.length; const sizeObserver = createSizeObserver( targetElm as HTMLElement, - ({ _directionIsRTLCache, _sizeChanged, _appear }) => { + ({ _directionIsRTLCache, _sizeChanged }) => { if (_sizeChanged) { sizeIterations += 1; } @@ -45,6 +53,7 @@ const sizeObserver = createSizeObserver( if (_directionIsRTLCache) { directionIterations += 1; } + requestAnimationFrame(() => { if (resizesSlot) { resizesSlot.textContent = (directionIterations + sizeIterations).toString(); @@ -83,13 +92,22 @@ const iterate = async (select: HTMLSelectElement | null, afterEach?: () => any) currBoxSizing, }; }, - async check({ currSizeIterations, currDirectionIterations, currOffsetSize, currContentSize, currDir, currBoxSizing }) { + async check({ + currSizeIterations, + currDirectionIterations, + currOffsetSize, + currContentSize, + currDir, + currBoxSizing, + }) { const newOffsetSize = offsetSize(targetElm as HTMLElement); const newContentSize = contentBox(targetElm as HTMLElement); const newDir = style(targetElm as HTMLElement, 'direction'); const newBoxSizing = style(targetElm as HTMLElement, 'box-sizing'); - const offsetSizeChanged = currOffsetSize.w !== newOffsetSize.w || currOffsetSize.h !== newOffsetSize.h; - const contentSizeChanged = currContentSize.w !== newContentSize.w || currContentSize.h !== newContentSize.h; + const offsetSizeChanged = + currOffsetSize.w !== newOffsetSize.w || currOffsetSize.h !== newOffsetSize.h; + const contentSizeChanged = + currContentSize.w !== newContentSize.w || currContentSize.h !== newContentSize.h; const dirChanged = currDir !== newDir; const boxSizingChanged = currBoxSizing !== newBoxSizing; const dimensions = hasDimensions(targetElm as HTMLElement); @@ -113,20 +131,36 @@ const iterate = async (select: HTMLSelectElement | null, afterEach?: () => any) if (dirChanged) { await waitForOrFailTest(() => { const expectedCacheValue = newDir === 'rtl'; - should.equal(directionIterations, currDirectionIterations + 1, 'Direction change was detected correctly.'); - should.equal(sizeObserver._getCurrentCacheValues()._directionIsRTL._value, expectedCacheValue, 'Direction cache value is correct.'); + should.equal( + directionIterations, + currDirectionIterations + 1, + 'Direction change was detected correctly.' + ); + should.equal( + sizeObserver._getCurrentCacheValues()._directionIsRTL[0], + expectedCacheValue, + 'Direction cache value is correct.' + ); }); } if (boxSizingChanged) { await waitForOrFailTest(() => { - should.equal(sizeIterations, currSizeIterations + 1, 'BoxSizing change was detected correctly.'); + should.equal( + sizeIterations, + currSizeIterations + 1, + 'BoxSizing change was detected correctly.' + ); }); } if (dimensions && (offsetSizeChanged || contentSizeChanged)) { await waitForOrFailTest(() => { - should.equal(sizeIterations, currSizeIterations + 1, 'Size change was detected correctly.'); + should.equal( + sizeIterations, + currSizeIterations + 1, + 'Size change was detected correctly.' + ); }); } @@ -229,7 +263,11 @@ const start = async () => { await cleanBoxSizingChange(); sizeObserver._destroy(); - should.equal(targetElm?.children.length, preInitChildren, 'Destruction removes all generated elements.'); + should.equal( + targetElm?.children.length, + preInitChildren, + 'Destruction removes all generated elements.' + ); setTestResult(true); }; diff --git a/packages/overlayscrollbars/tests/browser/observers/sizeObserver/index.html b/packages/overlayscrollbars/tests/playwright/observers/sizeObserver/index.html similarity index 100% rename from packages/overlayscrollbars/tests/browser/observers/sizeObserver/index.html rename to packages/overlayscrollbars/tests/playwright/observers/sizeObserver/index.html diff --git a/packages/overlayscrollbars/tests/browser/observers/sizeObserver/index.scss b/packages/overlayscrollbars/tests/playwright/observers/sizeObserver/index.scss similarity index 100% rename from packages/overlayscrollbars/tests/browser/observers/sizeObserver/index.scss rename to packages/overlayscrollbars/tests/playwright/observers/sizeObserver/index.scss diff --git a/packages/overlayscrollbars/tests/playwright/observers/sizeObserver/index.test.ts b/packages/overlayscrollbars/tests/playwright/observers/sizeObserver/index.test.ts new file mode 100644 index 0000000..4297ea5 --- /dev/null +++ b/packages/overlayscrollbars/tests/playwright/observers/sizeObserver/index.test.ts @@ -0,0 +1,19 @@ +// @ts-ignore +import { playwrightRollup, expectSuccess } from '@/playwright/rollup'; +import { test } from '@playwright/test'; + +playwrightRollup(); + +test.describe('SizeObserver', () => { + test('with ResizeOserver', async ({ page }) => { + await page.click('#start'); + await expectSuccess(page); + }); + + test('with ResizeOserver polyfill', async ({ page }) => { + await page.click('#roPolyfill'); + await page.waitForTimeout(500); + await page.click('#start'); + await expectSuccess(page); + }); +}); diff --git a/packages/overlayscrollbars/tests/browser/observers/trinsicObserver/handleEnvironment.ts b/packages/overlayscrollbars/tests/playwright/observers/trinsicObserver/handleEnvironment.ts similarity index 100% rename from packages/overlayscrollbars/tests/browser/observers/trinsicObserver/handleEnvironment.ts rename to packages/overlayscrollbars/tests/playwright/observers/trinsicObserver/handleEnvironment.ts diff --git a/packages/overlayscrollbars/tests/browser/observers/trinsicObserver/index.browser.ts b/packages/overlayscrollbars/tests/playwright/observers/trinsicObserver/index.browser.ts similarity index 83% rename from packages/overlayscrollbars/tests/browser/observers/trinsicObserver/index.browser.ts rename to packages/overlayscrollbars/tests/playwright/observers/trinsicObserver/index.browser.ts index 72790d2..839262b 100644 --- a/packages/overlayscrollbars/tests/browser/observers/trinsicObserver/index.browser.ts +++ b/packages/overlayscrollbars/tests/playwright/observers/trinsicObserver/index.browser.ts @@ -2,7 +2,11 @@ import 'styles/overlayscrollbars.scss'; import './index.scss'; import './handleEnvironment'; import should from 'should'; -import { generateClassChangeSelectCallback, iterateSelect, selectOption } from '@/testing-browser/Select'; +import { + generateClassChangeSelectCallback, + iterateSelect, + selectOption, +} from '@/testing-browser/Select'; import { timeout } from '@/testing-browser/timeout'; import { setTestResult, waitForOrFailTest } from '@/testing-browser/TestResult'; import { offsetSize } from 'support'; @@ -22,9 +26,10 @@ const changesSlot: HTMLButtonElement | null = document.querySelector('#changes') const preInitChildren = targetElm?.children.length; const trinsicObserver = createTrinsicObserver(targetElm as HTMLElement, (heightIntrinsicCache) => { - if (heightIntrinsicCache._changed) { + const [currentHeightIntrinsic, currentHeightIntrinsicChanged] = heightIntrinsicCache; + if (currentHeightIntrinsicChanged) { heightIterations += 1; - heightIntrinsic = heightIntrinsicCache._value; + heightIntrinsic = currentHeightIntrinsic; } requestAnimationFrame(() => { if (changesSlot) { @@ -65,10 +70,14 @@ const iterate = async (select: HTMLSelectElement | null, afterEach?: () => any) await waitForOrFailTest(() => { if (trinsicHeightChanged) { - should.equal(heightIterations, currHeightIterations + 1, 'Height intrinsic change has been detected correctly.'); + should.equal( + heightIterations, + currHeightIterations + 1, + 'Height intrinsic change has been detected correctly.' + ); } should.equal( - trinsicObserver._getCurrentCacheValues()._heightIntrinsic._value, + trinsicObserver._getCurrentCacheValues()._heightIntrinsic[0], newHeightIntrinsic, 'Height intrinsic cache value is correct.' ); @@ -97,7 +106,11 @@ const changeWhileHidden = async () => { selectOption(displaySelect as HTMLSelectElement, 'displayBlock'); await waitForOrFailTest(() => { - should.equal(heightIntrinsic, false, 'Trinsic sizing changes while hidden from intrinsic to extrinsic.'); + should.equal( + heightIntrinsic, + false, + 'Trinsic sizing changes while hidden from intrinsic to extrinsic.' + ); }); }; @@ -111,7 +124,11 @@ const changeWhileHidden = async () => { selectOption(displaySelect as HTMLSelectElement, 'displayBlock'); await waitForOrFailTest(() => { - should.equal(heightIntrinsic, true, 'Trinsic sizing changes while hidden from extrinsic to intrinsic.'); + should.equal( + heightIntrinsic, + true, + 'Trinsic sizing changes while hidden from extrinsic to intrinsic.' + ); }); }; @@ -133,7 +150,11 @@ const start = async () => { await changeWhileHidden(); trinsicObserver._destroy(); - should.equal(targetElm?.children.length, preInitChildren, 'After destruction all generated elements are removed.'); + should.equal( + targetElm?.children.length, + preInitChildren, + 'After destruction all generated elements are removed.' + ); setTestResult(true); }; diff --git a/packages/overlayscrollbars/tests/browser/observers/trinsicObserver/index.html b/packages/overlayscrollbars/tests/playwright/observers/trinsicObserver/index.html similarity index 100% rename from packages/overlayscrollbars/tests/browser/observers/trinsicObserver/index.html rename to packages/overlayscrollbars/tests/playwright/observers/trinsicObserver/index.html diff --git a/packages/overlayscrollbars/tests/browser/observers/trinsicObserver/index.scss b/packages/overlayscrollbars/tests/playwright/observers/trinsicObserver/index.scss similarity index 100% rename from packages/overlayscrollbars/tests/browser/observers/trinsicObserver/index.scss rename to packages/overlayscrollbars/tests/playwright/observers/trinsicObserver/index.scss diff --git a/packages/overlayscrollbars/tests/playwright/observers/trinsicObserver/index.test.ts b/packages/overlayscrollbars/tests/playwright/observers/trinsicObserver/index.test.ts new file mode 100644 index 0000000..199971b --- /dev/null +++ b/packages/overlayscrollbars/tests/playwright/observers/trinsicObserver/index.test.ts @@ -0,0 +1,28 @@ +// @ts-ignore +import { playwrightRollup, expectSuccess } from '@/playwright/rollup'; +import { test } from '@playwright/test'; + +playwrightRollup(); + +test.describe('TrinsicObserver', () => { + test('with IntersectionObserver', async ({ page }) => { + await page.click('#start'); + await expectSuccess(page); + }); + + test('with ResizeObserver', async ({ page }) => { + await page.click('#ioPolyfill'); + await page.waitForTimeout(500); + await page.click('#start'); + await expectSuccess(page); + }); + + test('with ResizeObserver polyfill', async ({ page }) => { + await page.click('#ioPolyfill'); + await page.waitForTimeout(500); + await page.click('#roPolyfill'); + await page.waitForTimeout(500); + await page.click('#start'); + await expectSuccess(page); + }); +}); diff --git a/packages/overlayscrollbars/tsconfig.json b/packages/overlayscrollbars/tsconfig.json index ec2583e..2a8cff6 100644 --- a/packages/overlayscrollbars/tsconfig.json +++ b/packages/overlayscrollbars/tsconfig.json @@ -1,9 +1,11 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "baseUrl": "./src/", + "baseUrl": "./src", "paths": { - "@/testing-browser*": ["../../testing-browser/src*"] + "@/playwright/rollup": ["../playwright.rollup"], + "@/testing-browser*": ["../../testing-browser/src*"], + "@/overlayscrollbars*": ["../../overlayscrollbars/src*"] } } } diff --git a/packages/overlayscrollbars/types/classnames.d.ts b/packages/overlayscrollbars/types/classnames.d.ts deleted file mode 100644 index b581c69..0000000 --- a/packages/overlayscrollbars/types/classnames.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -export declare const classNameEnvironment = "os-environment"; -export declare const classNameEnvironmentFlexboxGlue: string; -export declare const classNameEnvironmentFlexboxGlueMax: string; -export declare const classNameHost = "os-host"; -export declare const classNamePadding = "os-padding"; -export declare const classNameViewport = "os-viewport"; -export declare const classNameViewportArrange: string; -export declare const classNameContent = "os-content"; -export declare const classNameViewportScrollbarStyling: string; -export declare const classNameSizeObserver = "os-size-observer"; -export declare const classNameSizeObserverAppear: string; -export declare const classNameSizeObserverListener: string; -export declare const classNameSizeObserverListenerScroll: string; -export declare const classNameSizeObserverListenerItem: string; -export declare const classNameSizeObserverListenerItemFinal: string; -export declare const classNameTrinsicObserver = "os-trinsic-observer"; diff --git a/packages/overlayscrollbars/types/domobserver.d.ts b/packages/overlayscrollbars/types/domobserver.d.ts new file mode 100644 index 0000000..eaff36f --- /dev/null +++ b/packages/overlayscrollbars/types/domobserver.d.ts @@ -0,0 +1,2 @@ +declare const start: () => Promise; +export { start }; diff --git a/packages/overlayscrollbars/types/environment.d.ts b/packages/overlayscrollbars/types/environment.d.ts deleted file mode 100644 index 5d1a62f..0000000 --- a/packages/overlayscrollbars/types/environment.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { XY, PartialOptions } from 'support'; -import { OSOptions } from 'options'; -export interface InitializationStrategy { - _padding: boolean; - _content: boolean; -} -export declare type OnEnvironmentChanged = (env: Environment) => void; -export interface Environment { - _nativeScrollbarSize: XY; - _nativeScrollbarIsOverlaid: XY; - _nativeScrollbarStyling: boolean; - _rtlScrollBehavior: { - n: boolean; - i: boolean; - }; - _flexboxGlue: boolean; - _cssCustomProperties: boolean; - _addListener(listener: OnEnvironmentChanged): void; - _removeListener(listener: OnEnvironmentChanged): void; - _getInitializationStrategy(): InitializationStrategy; - _setInitializationStrategy(newInitializationStrategy: Partial): void; - _getDefaultOptions(): OSOptions; - _setDefaultOptions(newDefaultOptions: PartialOptions): void; - _defaultInitializationStrategy: InitializationStrategy; - _defaultDefaultOptions: OSOptions; -} -export declare const getEnvironment: () => Environment; diff --git a/packages/overlayscrollbars/types/index.d.ts b/packages/overlayscrollbars/types/index.d.ts deleted file mode 100644 index b62d83b..0000000 --- a/packages/overlayscrollbars/types/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { OverlayScrollbars as default } from 'overlayscrollbars'; diff --git a/packages/overlayscrollbars/types/instances.d.ts b/packages/overlayscrollbars/types/instances.d.ts deleted file mode 100644 index 48f48b3..0000000 --- a/packages/overlayscrollbars/types/instances.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { OverlayScrollbars } from 'overlayscrollbars'; -/** - * Adds the given OverlayScrollbars instance to the given element. - * @param target The element which is the target of the OverlayScrollbars instance. - * @param osInstance The OverlayScrollbars instance. - */ -export declare const addInstance: (target: Element, osInstance: OverlayScrollbars) => void; -/** - * Removes a OverlayScrollbars instance from the given element. - * @param target The element from which its OverlayScrollbars instance shall be removed. - */ -export declare const removeInstance: (target: Element) => void; -/** - * Gets the OverlayScrollbars from the given element or undefined if it doesn't have one. - * @param target The element of which its OverlayScrollbars instance shall be get. - */ -export declare const getInstance: (target: Element) => OverlayScrollbars | undefined; -/** - * Gets a Map which represents all active OverayScrollbars instances. - * The Key is the ekement and the value is the instance. - */ -export declare const allInstances: () => ReadonlyMap; diff --git a/packages/overlayscrollbars/types/lifecycles/lifecycleHub.d.ts b/packages/overlayscrollbars/types/lifecycles/lifecycleHub.d.ts deleted file mode 100644 index ac9e551..0000000 --- a/packages/overlayscrollbars/types/lifecycles/lifecycleHub.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { XY, WH, TRBL, CacheValues, PartialOptions } from 'support'; -import { OSOptions } from 'options'; -import { StructureSetup } from 'setups/structureSetup'; -import { StyleObject } from 'typings'; -export declare type LifecycleCheckOption = (path: string) => LifecycleOptionInfo; -export declare type Lifecycle = (updateHints: LifecycleUpdateHints, checkOption: LifecycleCheckOption, force: boolean) => Partial | void; -export interface LifecycleOptionInfo { - readonly _value: T; - _changed: boolean; -} -export interface LifecycleCommunication { - _paddingInfo: { - _absolute: boolean; - _padding: TRBL; - }; - _viewportPaddingStyle: StyleObject; - _viewportOverflowScroll: XY; - _viewportOverflowAmount: WH; -} -export interface LifecycleAdaptiveUpdateHints { - _sizeChanged: boolean; - _hostMutation: boolean; - _contentMutation: boolean; - _paddingStyleChanged: boolean; -} -export interface LifecycleUpdateHints extends LifecycleAdaptiveUpdateHints { - _directionIsRTL: CacheValues; - _heightIntrinsic: CacheValues; -} -export interface LifecycleHubState { - _overflowAmount: WH; -} -export interface LifecycleHubInstance { - _update(changedOptions?: PartialOptions | null, force?: boolean): void; - _state(): LifecycleHubState; - _destroy(): void; -} -export interface LifecycleHub { - _options: OSOptions; - _structureSetup: StructureSetup; - _doViewportArrange: boolean; - _getLifecycleCommunication(): LifecycleCommunication; - _setLifecycleCommunication(newLifecycleCommunication?: Partial): void; -} -export declare const createLifecycleHub: (options: OSOptions, structureSetup: StructureSetup) => LifecycleHubInstance; diff --git a/packages/overlayscrollbars/types/lifecycles/lifecycleHubObservers.d.ts b/packages/overlayscrollbars/types/lifecycles/lifecycleHubObservers.d.ts deleted file mode 100644 index 6211705..0000000 --- a/packages/overlayscrollbars/types/lifecycles/lifecycleHubObservers.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { LifecycleHub, LifecycleCheckOption, LifecycleUpdateHints } from 'lifecycles/lifecycleHub'; -export declare const lifecycleHubOservers: (instance: LifecycleHub, updateLifecycles: (updateHints?: Partial | null | undefined) => unknown) => { - _trinsicObserver: false | import("observers/trinsicObserver").TrinsicObserver; - _sizeObserver: import("observers/sizeObserver").SizeObserver; - _updateObserverOptions: (checkOption: LifecycleCheckOption) => void; - _destroy(): void; -}; diff --git a/packages/overlayscrollbars/types/lifecycles/overflowLifecycle.d.ts b/packages/overlayscrollbars/types/lifecycles/overflowLifecycle.d.ts deleted file mode 100644 index da11961..0000000 --- a/packages/overlayscrollbars/types/lifecycles/overflowLifecycle.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { LifecycleHub, Lifecycle } from 'lifecycles/lifecycleHub'; -/** - * Lifecycle with the responsibility to set the correct overflow and scrollbar hiding styles of the viewport element. - * @param lifecycleHub - * @returns - */ -export declare const createOverflowLifecycle: (lifecycleHub: LifecycleHub) => Lifecycle; diff --git a/packages/overlayscrollbars/types/lifecycles/paddingLifecycle.d.ts b/packages/overlayscrollbars/types/lifecycles/paddingLifecycle.d.ts deleted file mode 100644 index 93f6c25..0000000 --- a/packages/overlayscrollbars/types/lifecycles/paddingLifecycle.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { LifecycleHub, Lifecycle } from 'lifecycles/lifecycleHub'; -/** - * Lifecycle with the responsibility to adjust the padding styling of the padding and viewport element. - * @param lifecycleHub - * @returns - */ -export declare const createPaddingLifecycle: (lifecycleHub: LifecycleHub) => Lifecycle; diff --git a/packages/overlayscrollbars/types/lifecycles/trinsicLifecycle.d.ts b/packages/overlayscrollbars/types/lifecycles/trinsicLifecycle.d.ts deleted file mode 100644 index 082a40a..0000000 --- a/packages/overlayscrollbars/types/lifecycles/trinsicLifecycle.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { LifecycleHub, Lifecycle } from 'lifecycles/lifecycleHub'; -/** - * Lifecycle with the responsibility to adjust the trinsic behavior of the content element. - * @param lifecycleHub - * @returns - */ -export declare const createTrinsicLifecycle: (lifecycleHub: LifecycleHub) => Lifecycle; diff --git a/packages/overlayscrollbars/types/observers/domObserver.d.ts b/packages/overlayscrollbars/types/observers/domObserver.d.ts deleted file mode 100644 index bad6557..0000000 --- a/packages/overlayscrollbars/types/observers/domObserver.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -declare type StringNullUndefined = string | null | undefined; -declare type DOMContentObserverCallback = (contentChangedTroughEvent: boolean) => any; -declare type DOMTargetObserverCallback = (targetChangedAttrs: string[], targetStyleChanged: boolean) => any; -interface DOMObserverOptionsBase { - _attributes?: string[]; - _styleChangingAttributes?: string[]; -} -interface DOMContentObserverOptions extends DOMObserverOptionsBase { - _eventContentChange?: DOMObserverEventContentChange; - _nestedTargetSelector?: string; - _ignoreContentChange?: DOMObserverIgnoreContentChange; - _ignoreNestedTargetChange?: DOMObserverIgnoreTargetChange; -} -interface DOMTargetObserverOptions extends DOMObserverOptionsBase { - _ignoreTargetChange?: DOMObserverIgnoreTargetChange; -} -declare type ContentChangeArrayItem = [StringNullUndefined, StringNullUndefined] | null | undefined; -export declare type DOMObserverEventContentChange = Array | false | null | undefined; -export declare type DOMObserverIgnoreContentChange = (mutation: MutationRecord, isNestedTarget: boolean, domObserverTarget: HTMLElement, domObserverOptions?: DOMContentObserverOptions) => boolean; -export declare type DOMObserverIgnoreTargetChange = (target: Node, attributeName: string, oldAttributeValue: string | null, newAttributeValue: string | null) => boolean; -export declare type DOMObserverCallback = ContentObserver extends true ? DOMContentObserverCallback : DOMTargetObserverCallback; -export declare type DOMObserverOptions = ContentObserver extends true ? DOMContentObserverOptions : DOMTargetObserverOptions; -export interface DOMObserver { - _destroy: () => void; - _update: () => void; -} -/** - * Creates a DOM observer which observes DOM changes to either the target element or its children. - * @param target The element which shall be observed. - * @param isContentObserver Whether this observer is just observing the target or just the targets children. (not only direct children but also nested ones) - * @param callback The callback which gets called if a change was detected. - * @param options The options for DOM change detection. - * @returns A object which represents the instance of the DOM observer. - */ -export declare const createDOMObserver: (target: HTMLElement, isContentObserver: ContentObserver, callback: DOMObserverCallback, options?: DOMObserverOptions | undefined) => DOMObserver; -export {}; diff --git a/packages/overlayscrollbars/types/observers/sizeObserver.d.ts b/packages/overlayscrollbars/types/observers/sizeObserver.d.ts deleted file mode 100644 index 4ea3163..0000000 --- a/packages/overlayscrollbars/types/observers/sizeObserver.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { CacheValues } from 'support'; -export interface SizeObserverOptions { - _direction?: boolean; - _appear?: boolean; -} -export interface SizeObserverCallbackParams { - _sizeChanged: boolean; - _directionIsRTLCache?: CacheValues; - _appear?: boolean; -} -export interface SizeObserver { - _destroy(): void; - _getCurrentCacheValues(force?: boolean): { - _directionIsRTL: CacheValues; - }; -} -/** - * 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. - * @param target The target element which shall be observed. - * @param onSizeChangedCallback The callback which gets called after a size change was detected. - * @param options The options for size detection, whether to observe also direction and appear. - * @returns A object which represents the instance of the size observer. - */ -export declare const createSizeObserver: (target: HTMLElement, onSizeChangedCallback: (params: SizeObserverCallbackParams) => any, options?: SizeObserverOptions | undefined) => SizeObserver; diff --git a/packages/overlayscrollbars/types/observers/trinsicObserver.d.ts b/packages/overlayscrollbars/types/observers/trinsicObserver.d.ts deleted file mode 100644 index 5e6e4de..0000000 --- a/packages/overlayscrollbars/types/observers/trinsicObserver.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { CacheValues } from 'support'; -export interface TrinsicObserver { - _destroy(): void; - _getCurrentCacheValues(force?: boolean): { - _heightIntrinsic: CacheValues; - }; -} -/** - * Creates a trinsic observer which observes changes to intrinsic or extrinsic sizing for the height of the target element. - * @param target The element which shall be observed. - * @param onTrinsicChangedCallback The callback which gets called after a change was detected. - * @returns A object which represents the instance of the trinsic observer. - */ -export declare const createTrinsicObserver: (target: HTMLElement, onTrinsicChangedCallback: (heightIntrinsic: CacheValues) => any) => TrinsicObserver; diff --git a/packages/overlayscrollbars/types/options.d.ts b/packages/overlayscrollbars/types/options.d.ts deleted file mode 100644 index bd1aea9..0000000 --- a/packages/overlayscrollbars/types/options.d.ts +++ /dev/null @@ -1,68 +0,0 @@ -export declare type ResizeBehavior = 'none' | 'both' | 'horizontal' | 'vertical'; -export declare type OverflowBehavior = 'hidden' | 'scroll' | 'visible' | 'visible-hidden'; -export declare type VisibilityBehavior = 'visible' | 'hidden' | 'auto'; -export declare type AutoHideBehavior = 'never' | 'scroll' | 'leave' | 'move'; -export declare type ScrollBehavior = 'always' | 'ifneeded' | 'never'; -export declare type BasicEventCallback = (this: any) => void; -export declare type ScrollEventCallback = (this: any, args?: UIEvent) => void; -export declare type OverflowChangedCallback = (this: any, args?: OverflowChangedArgs) => void; -export declare type OverflowAmountChangedCallback = (this: any, args?: OverflowAmountChangedArgs) => void; -export declare type DirectionChangedCallback = (this: any, args?: DirectionChangedArgs) => void; -export declare type SizeChangedCallback = (this: any, args?: SizeChangedArgs) => void; -export declare type UpdatedCallback = (this: any, args?: UpdatedArgs) => void; -export interface OSOptions { - resize: ResizeBehavior; - paddingAbsolute: boolean; - updating: { - elementEvents: Array<[string, string]> | null; - attributes: string[] | null; - debounce: number | [number, number] | null; - }; - overflow: { - x: OverflowBehavior; - y: OverflowBehavior; - }; - scrollbars: { - visibility: VisibilityBehavior; - autoHide: AutoHideBehavior; - autoHideDelay: number; - dragScroll: boolean; - clickScroll: boolean; - touch: boolean; - }; - textarea: { - dynWidth: boolean; - dynHeight: boolean; - inheritedAttrs: string | Array | null; - }; - nativeScrollbarsOverlaid: { - show: boolean; - initialize: boolean; - }; - callbacks: { - onUpdated: (() => any) | null; - }; -} -export interface OverflowChangedArgs { - x: boolean; - y: boolean; - xScrollable: boolean; - yScrollable: boolean; - clipped: boolean; -} -export interface OverflowAmountChangedArgs { - x: number; - y: number; -} -export interface DirectionChangedArgs { - isRTL: number; - dir: string; -} -export interface SizeChangedArgs { - width: number; - height: number; -} -export interface UpdatedArgs { - forced: boolean; -} -export declare const optionsTemplate: import("support/options").OptionsTemplate, defaultOptions: OSOptions; diff --git a/packages/overlayscrollbars/types/overlayscrollbars.d.ts b/packages/overlayscrollbars/types/overlayscrollbars.d.ts index f841e0f..311b9f8 100644 --- a/packages/overlayscrollbars/types/overlayscrollbars.d.ts +++ b/packages/overlayscrollbars/types/overlayscrollbars.d.ts @@ -1,13 +1,99 @@ -import { OSTarget, OSTargetObject } from 'typings'; -import { PartialOptions } from 'support'; -import { OSOptions } from 'options'; -export interface OverlayScrollbarsStatic { - (target: OSTarget | OSTargetObject, options?: PartialOptions, extensions?: any): OverlayScrollbars; +type OSTargetElement = HTMLElement | HTMLTextAreaElement; +/** + * Static elements MUST be present. + */ +type StructureInitializationStaticElement = HTMLElement; +/** + * Dynamic element CAN be present. + * If its a element the element will be handled as the repsective element. + * True means that the respective dynamic element is forced to be generated. + * False means that the respective dynamic element is forced NOT to be generated. + */ +type StructureInitializationDynamicElement = HTMLElement | boolean; +/** + * Object for special initialization. + * + * Target is always required, if element is not provided or undefined it will be generated. + * + * If element is provided, the provided element takes all its responsibilities. + * DOM hierarchy isn't checked in this case, its assumed that hieararchy is correct in such a case. + * + * Undefined means that the environment initialization strategy for the respective element is used. + */ +interface StructureInitialization { + target: OSTargetElement; + host?: StructureInitializationStaticElement; // only relevant for textarea + viewport?: StructureInitializationStaticElement; + padding?: StructureInitializationDynamicElement; + content?: StructureInitializationDynamicElement; } -export interface OverlayScrollbars { +/** + * Object for special initialization. + * + * scrollbarsSlot is the element to which the scrollbars are applied to. If null or undefined the plugin decides by itself whats the scrollbars slot. + */ +interface ScrollbarsInitialization { + scrollbarsSlot?: null | HTMLElement | ((target: OSTargetElement, host: HTMLElement, viewport: HTMLElement) => null | HTMLElement); +} +interface OSInitializationObject extends StructureInitialization, ScrollbarsInitialization { +} +type OSTarget = OSTargetElement | OSInitializationObject; +type OptionsObjectType = Record; +type PartialOptions = { + [P in keyof T]?: T[P] extends OptionsObjectType ? PartialOptions : T[P]; +}; +type ResizeBehavior = "none" | "both" | "horizontal" | "vertical"; +type OverflowBehavior = "hidden" | "scroll" | "visible" | "visible-hidden"; +type VisibilityBehavior = "visible" | "hidden" | "auto"; +type AutoHideBehavior = "never" | "scroll" | "leave" | "move"; +interface OSOptions { + resize: ResizeBehavior; + paddingAbsolute: boolean; + updating: { + elementEvents: Array<[ + string, + string + ]> | null; + attributes: string[] | null; + debounce: number | [ + number, + number + ] | null; + }; + overflow: { + x: OverflowBehavior; + y: OverflowBehavior; + }; + scrollbars: { + visibility: VisibilityBehavior; + autoHide: AutoHideBehavior; + autoHideDelay: number; + dragScroll: boolean; + clickScroll: boolean; + touch: boolean; + }; + textarea: { + dynWidth: boolean; + dynHeight: boolean; + inheritedAttrs: string | Array | null; + }; + nativeScrollbarsOverlaid: { + show: boolean; + initialize: boolean; + }; + callbacks: { + onUpdated: (() => any) | null; + }; +} +interface OverlayScrollbarsStatic { + (target: OSTarget | OSInitializationObject, options?: PartialOptions, extensions?: any): OverlayScrollbars; +} +interface OverlayScrollbars { options(): OSOptions; options(newOptions?: PartialOptions): OSOptions; update(force?: boolean): void; + destroy(): void; state(): any; } -export declare const OverlayScrollbars: OverlayScrollbarsStatic; +declare const OverlayScrollbars: OverlayScrollbarsStatic; +export { OverlayScrollbars as default }; diff --git a/packages/overlayscrollbars/types/overlayscrollbars.min.d.ts b/packages/overlayscrollbars/types/overlayscrollbars.min.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/packages/overlayscrollbars/types/setups/structureSetup.d.ts b/packages/overlayscrollbars/types/setups/structureSetup.d.ts deleted file mode 100644 index 93b62a6..0000000 --- a/packages/overlayscrollbars/types/setups/structureSetup.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { OSTarget, OSTargetObject, OSTargetElement } from 'typings'; -export interface OSTargetContext { - _isTextarea: boolean; - _isBody: boolean; - _htmlElm: HTMLHtmlElement; - _bodyElm: HTMLBodyElement; - _windowElm: Window; - _documentElm: HTMLDocument; -} -export interface PreparedOSTargetObject { - _target: OSTargetElement; - _host: HTMLElement; - _viewport: HTMLElement; - _padding: HTMLElement | false | null; - _content: HTMLElement | false | null; - _viewportArrange: HTMLStyleElement | false | null; -} -export interface StructureSetup { - _targetObj: PreparedOSTargetObject; - _targetCtx: OSTargetContext; - _destroy: () => void; -} -export declare const createStructureSetup: (target: OSTarget | OSTargetObject) => StructureSetup; diff --git a/packages/overlayscrollbars/types/sizeobserver.d.ts b/packages/overlayscrollbars/types/sizeobserver.d.ts new file mode 100644 index 0000000..eaff36f --- /dev/null +++ b/packages/overlayscrollbars/types/sizeobserver.d.ts @@ -0,0 +1,2 @@ +declare const start: () => Promise; +export { start }; diff --git a/packages/overlayscrollbars/types/autoUpdateLoop.d.ts b/packages/overlayscrollbars/types/structurelifecycle.d.ts similarity index 100% rename from packages/overlayscrollbars/types/autoUpdateLoop.d.ts rename to packages/overlayscrollbars/types/structurelifecycle.d.ts diff --git a/packages/overlayscrollbars/types/support/cache/cache.d.ts b/packages/overlayscrollbars/types/support/cache/cache.d.ts deleted file mode 100644 index fce8fe8..0000000 --- a/packages/overlayscrollbars/types/support/cache/cache.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -export interface CacheValues { - readonly _value?: T; - readonly _previous?: T; - _changed: boolean; -} -export interface CacheOptions { - _equal?: EqualCachePropFunction; - _initialValue?: T; - _alwaysUpdateValues?: boolean; -} -export interface Cache { - _current: (force?: boolean) => CacheValues; - _update: CacheUpdate; -} -export declare type CacheUpdate = undefined extends C ? (force?: boolean | 0, context?: C) => CacheValues : (force: boolean | 0, context: C) => CacheValues; -export declare type UpdateCachePropFunction = undefined extends C ? (context?: C, current?: T, previous?: T) => T : C extends T ? ((context: C, current?: T, previous?: T) => T) | 0 : (context: C, current?: T, previous?: T) => T; -export declare type EqualCachePropFunction = (currentVal?: T, newVal?: T) => boolean; -export declare const createCache: (update: UpdateCachePropFunction, options?: CacheOptions | undefined) => Cache; diff --git a/packages/overlayscrollbars/types/support/cache/index.d.ts b/packages/overlayscrollbars/types/support/cache/index.d.ts deleted file mode 100644 index 3061f36..0000000 --- a/packages/overlayscrollbars/types/support/cache/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from 'support/cache/cache'; diff --git a/packages/overlayscrollbars/types/support/compatibility/apis.d.ts b/packages/overlayscrollbars/types/support/compatibility/apis.d.ts deleted file mode 100644 index 5889ead..0000000 --- a/packages/overlayscrollbars/types/support/compatibility/apis.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -export declare const MutationObserverConstructor: { - new (callback: MutationCallback): MutationObserver; - prototype: MutationObserver; -} | undefined; -export declare const IntersectionObserverConstructor: { - new (callback: IntersectionObserverCallback, options?: IntersectionObserverInit | undefined): IntersectionObserver; - prototype: IntersectionObserver; -} | undefined; -export declare const ResizeObserverConstructor: { - new (callback: ResizeObserverCallback): ResizeObserver; - prototype: ResizeObserver; -} | undefined; -export declare const cAF: typeof cancelAnimationFrame | undefined; -export declare const rAF: typeof requestAnimationFrame | undefined; diff --git a/packages/overlayscrollbars/types/support/compatibility/events.d.ts b/packages/overlayscrollbars/types/support/compatibility/events.d.ts deleted file mode 100644 index 830e5ce..0000000 --- a/packages/overlayscrollbars/types/support/compatibility/events.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const mouseButton: (event: MouseEvent) => number; diff --git a/packages/overlayscrollbars/types/support/compatibility/index.d.ts b/packages/overlayscrollbars/types/support/compatibility/index.d.ts deleted file mode 100644 index 1bdf704..0000000 --- a/packages/overlayscrollbars/types/support/compatibility/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from 'support/compatibility/vendors'; -export * from 'support/compatibility/apis'; -export * from 'support/compatibility/events'; diff --git a/packages/overlayscrollbars/types/support/compatibility/vendors.d.ts b/packages/overlayscrollbars/types/support/compatibility/vendors.d.ts deleted file mode 100644 index 9654f61..0000000 --- a/packages/overlayscrollbars/types/support/compatibility/vendors.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -export declare const cssPrefixes: ReadonlyArray; -export declare const jsPrefixes: ReadonlyArray; -export declare const jsCache: { - [key: string]: any; -}; -export declare const cssCache: { - [key: string]: string; -}; -/** - * Gets the name of the given CSS property with vendor prefix if it isn't supported without it, or and empty string if unsupported. - * @param name The name of the CSS property which shall be get. - */ -export declare const cssProperty: (name: string) => string; -/** - * 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. - * @param property The CSS property to which the CSS property value(s) belong. - * @param values The value(s) separated by spaces which shall be get. - * @param suffix A suffix which is added to each value in case the value is a function or something else more advanced. - */ -export declare const cssPropertyValue: (property: string, values: string, suffix?: string | undefined) => string; -/** - * Get the requested JS function, object or constructor with vendor prefix if it isn't supported without or undefined if unsupported. - * @param name The name of the JS function, object or constructor. - */ -export declare const jsAPI: (name: string) => T | undefined; diff --git a/packages/overlayscrollbars/types/support/dom/attribute.d.ts b/packages/overlayscrollbars/types/support/dom/attribute.d.ts deleted file mode 100644 index cc18a3e..0000000 --- a/packages/overlayscrollbars/types/support/dom/attribute.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Gets or sets a attribute with the given attribute of the given element depending whether the value attribute is given. - * Returns null if the element has no attribute with the given name. - * @param elm The element of which the attribute shall be get or set. - * @param attrName The attribute name which shall be get or set. - * @param value The value of the attribute which shall be set. - */ -export declare function attr(elm: HTMLElement | null, attrName: string): string | null; -export declare function attr(elm: HTMLElement | null, attrName: string, value: string): void; -/** - * Removes the given attribute from the given element. - * @param elm The element of which the attribute shall be removed. - * @param attrName The attribute name. - */ -export declare const removeAttr: (elm: Element | null, attrName: string) => void; -/** - * Gets or sets the scrollLeft value of the given element depending whether the value attribute is given. - * @param elm The element of which the scrollLeft value shall be get or set. - * @param value The scrollLeft value which shall be set. - */ -export declare function scrollLeft(elm: HTMLElement | null): number; -export declare function scrollLeft(elm: HTMLElement | null, value: number): void; -/** - * Gets or sets the scrollTop value of the given element depending whether the value attribute is given. - * @param elm The element of which the scrollTop value shall be get or set. - * @param value The scrollTop value which shall be set. - */ -export declare function scrollTop(elm: HTMLElement | null): number; -export declare function scrollTop(elm: HTMLElement | null, value: number): void; -/** - * Gets or sets the value of the given input element depending whether the value attribute is given. - * @param elm The input element of which the value shall be get or set. - * @param value The value which shall be set. - */ -export declare function val(elm: HTMLInputElement | null): string; -export declare function val(elm: HTMLInputElement | null, value: string): void; diff --git a/packages/overlayscrollbars/types/support/dom/class.d.ts b/packages/overlayscrollbars/types/support/dom/class.d.ts deleted file mode 100644 index 901a702..0000000 --- a/packages/overlayscrollbars/types/support/dom/class.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Check whether the given element has the given class name(s). - * @param elm The element. - * @param className The class name(s). - */ -export declare const hasClass: (elm: Element | false | null | undefined, className: string) => boolean; -/** - * Adds the given class name(s) to the given element. - * @param elm The element. - * @param className The class name(s) which shall be added. (separated by spaces) - */ -export declare const addClass: (elm: Element | false | null | undefined, className: string) => void; -/** - * Removes the given class name(s) from the given element. - * @param elm The element. - * @param className The class name(s) which shall be removed. (separated by spaces) - */ -export declare const removeClass: (elm: Element | false | null | undefined, className: string) => void; -/** - * Takes two className strings, compares them and returns the difference as array. - * @param classNameA ClassName A. - * @param classNameB ClassName B. - */ -export declare const diffClass: (classNameA: string | null | undefined, classNameB: string | null | undefined) => string[]; diff --git a/packages/overlayscrollbars/types/support/dom/create.d.ts b/packages/overlayscrollbars/types/support/dom/create.d.ts deleted file mode 100644 index 2725b51..0000000 --- a/packages/overlayscrollbars/types/support/dom/create.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Creates a div DOM node. - */ -export declare const createDiv: (classNames?: string | undefined) => HTMLDivElement; -/** - * Creates DOM nodes modeled after the passed html string and returns the root dom nodes as a array. - * @param html The html string after which the DOM nodes shall be created. - */ -export declare const createDOM: (html: string) => ReadonlyArray; diff --git a/packages/overlayscrollbars/types/support/dom/dimensions.d.ts b/packages/overlayscrollbars/types/support/dom/dimensions.d.ts deleted file mode 100644 index be70d2f..0000000 --- a/packages/overlayscrollbars/types/support/dom/dimensions.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -export interface WH { - w: T; - h: T; -} -/** - * Returns the window inner- width and height. - */ -export declare const windowSize: () => WH; -/** - * Returns the scroll- width and height of the passed element. If the element is null the width and height values are 0. - * @param elm The element of which the scroll- width and height shall be returned. - */ -export declare const offsetSize: (elm: HTMLElement | null | undefined) => WH; -/** - * Returns the client- width and height of the passed element. If the element is null the width and height values are 0. - * @param elm The element of which the client- width and height shall be returned. - */ -export declare const clientSize: (elm: HTMLElement | null | undefined) => WH; -/** - * Returns the client- width and height of the passed element. If the element is null the width and height values are 0. - * @param elm The element of which the client- width and height shall be returned. - */ -export declare const scrollSize: (elm: HTMLElement | null | undefined) => WH; -/** - * Returns the BoundingClientRect of the passed element. - * @param elm The element of which the BoundingClientRect shall be returned. - */ -export declare const getBoundingClientRect: (elm: HTMLElement) => DOMRect; -/** - * Determines whether the passed element has any dimensions. - * @param elm The element. - */ -export declare const hasDimensions: (elm: HTMLElement | null | undefined) => boolean; diff --git a/packages/overlayscrollbars/types/support/dom/events.d.ts b/packages/overlayscrollbars/types/support/dom/events.d.ts deleted file mode 100644 index 69aee2a..0000000 --- a/packages/overlayscrollbars/types/support/dom/events.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -export interface OnOptions { - _capture?: boolean; - _passive?: boolean; - _once?: boolean; -} -/** - * Removes the passed event listener for the passed events with the passed options. - * @param target The element from which the listener shall be removed. - * @param eventNames The eventsnames for which the listener shall be removed. - * @param listener The listener which shall be removed. - * @param capture The options of the removed listener. - */ -export declare const off: (target: EventTarget, eventNames: string, listener: (event: T) => any, capture?: boolean | undefined) => void; -/** - * Adds the passed event listener for the passed eventnames with the passed options. - * @param target The element to which the listener shall be added. - * @param eventNames The eventsnames for which the listener shall be called. - * @param listener The listener which is called on the eventnames. - * @param options The options of the added listener. - */ -export declare const on: (target: EventTarget, eventNames: string, listener: (event: T) => any, options?: OnOptions | undefined) => (() => void); -/** - * Shorthand for the stopPropagation event Method. - * @param evt The event of which the stopPropagation method shall be called. - */ -export declare const stopPropagation: (evt: Event) => void; -/** - * Shorthand for the preventDefault event Method. - * @param evt The event of which the preventDefault method shall be called. - */ -export declare const preventDefault: (evt: Event) => void; -/** - * Shorthand for the stopPropagation and preventDefault event Method. - * @param evt The event of which the stopPropagation and preventDefault methods shall be called. - */ -export declare const stopAndPrevent: (evt: Event) => void; diff --git a/packages/overlayscrollbars/types/support/dom/index.d.ts b/packages/overlayscrollbars/types/support/dom/index.d.ts deleted file mode 100644 index 1ca5c4b..0000000 --- a/packages/overlayscrollbars/types/support/dom/index.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -export * from 'support/dom/attribute'; -export * from 'support/dom/class'; -export * from 'support/dom/create'; -export * from 'support/dom/dimensions'; -export * from 'support/dom/events'; -export * from 'support/dom/style'; -export * from 'support/dom/manipulation'; -export * from 'support/dom/offset'; -export * from 'support/dom/traversal'; diff --git a/packages/overlayscrollbars/types/support/dom/manipulation.d.ts b/packages/overlayscrollbars/types/support/dom/manipulation.d.ts deleted file mode 100644 index 5db7e47..0000000 --- a/packages/overlayscrollbars/types/support/dom/manipulation.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -declare type NodeCollection = ArrayLike | Node | false | null | undefined; -/** - * Appends the given children at the end of the given Node. - * @param node The Node to which the children shall be appended. - * @param children The Nodes which shall be appended. - */ -export declare const appendChildren: (node: Node | null | undefined, children: NodeCollection) => void; -/** - * Prepends the given children at the start of the given Node. - * @param node The Node to which the children shall be prepended. - * @param children The Nodes which shall be prepended. - */ -export declare const prependChildren: (node: Node | null | undefined, children: NodeCollection) => void; -/** - * Inserts the given Nodes before the given Node. - * @param node The Node before which the given Nodes shall be inserted. - * @param insertedNodes The Nodes which shall be inserted. - */ -export declare const insertBefore: (node: Node | null | undefined, insertedNodes: NodeCollection) => void; -/** - * Inserts the given Nodes after the given Node. - * @param node The Node after which the given Nodes shall be inserted. - * @param insertedNodes The Nodes which shall be inserted. - */ -export declare const insertAfter: (node: Node | null | undefined, insertedNodes: NodeCollection) => void; -/** - * Removes the given Nodes from their parent. - * @param nodes The Nodes which shall be removed. - */ -export declare const removeElements: (nodes: NodeCollection) => void; -export {}; diff --git a/packages/overlayscrollbars/types/support/dom/offset.d.ts b/packages/overlayscrollbars/types/support/dom/offset.d.ts deleted file mode 100644 index d210359..0000000 --- a/packages/overlayscrollbars/types/support/dom/offset.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -export interface XY { - x: T; - y: T; -} -/** - * 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. - * @param elm The element of which the offset- top and left coordinates shall be returned. - */ -export declare const absoluteCoordinates: (elm: HTMLElement | null | undefined) => XY; -/** - * Returns the offset- left and top coordinates of the passed element. If the element is null the top and left values are 0. - * @param elm The element of which the offset- top and left coordinates shall be returned. - */ -export declare const offsetCoordinates: (elm: HTMLElement | null | undefined) => XY; diff --git a/packages/overlayscrollbars/types/support/dom/style.d.ts b/packages/overlayscrollbars/types/support/dom/style.d.ts deleted file mode 100644 index 25339e2..0000000 --- a/packages/overlayscrollbars/types/support/dom/style.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { StyleObject } from 'typings'; -export interface TRBL { - t: number; - r: number; - b: number; - l: number; -} -/** - * Gets or sets the passed styles to the passed element. - * @param elm The element to which the styles shall be applied to / be read from. - * @param styles The styles which shall be set or read. - */ -export declare function style(elm: HTMLElement | false | null | undefined, styles: StyleObject): void; -export declare function style(elm: HTMLElement | false | null | undefined, styles: string): string; -export declare function style(elm: HTMLElement | false | null | undefined, styles: Array | string): { - [key: string]: string; -}; -/** - * Hides the passed element (display: none). - * @param elm The element which shall be hidden. - */ -export declare const hide: (elm: HTMLElement | false | null | undefined) => void; -/** - * Shows the passed element (display: block). - * @param elm The element which shall be shown. - */ -export declare const show: (elm: HTMLElement | false | null | undefined) => void; -/** - * Returns the top right bottom left values of the passed css property. - * @param elm The element of which the values shall be returned. - * @param propertyPrefix The css property prefix. (e.g. "border") - * @param propertySuffix The css property suffix. (e.g. "width") - */ -export declare const topRightBottomLeft: (elm?: HTMLElement | false | null | undefined, propertyPrefix?: string | undefined, propertySuffix?: string | undefined) => TRBL; diff --git a/packages/overlayscrollbars/types/support/dom/traversal.d.ts b/packages/overlayscrollbars/types/support/dom/traversal.d.ts deleted file mode 100644 index 6349db7..0000000 --- a/packages/overlayscrollbars/types/support/dom/traversal.d.ts +++ /dev/null @@ -1,44 +0,0 @@ -declare type InputElementType = Element | Node | false | null | undefined; -declare type OutputElementType = Element | null; -/** - * Find all elements with the passed selector, outgoing (and including) the passed element or the document if no element was provided. - * @param selector The selector which has to be searched by. - * @param elm The element from which the search shall be outgoing. - */ -declare const find: (selector: string, elm?: InputElementType) => Element[]; -/** - * Find the first element with the passed selector, outgoing (and including) the passed element or the document if no element was provided. - * @param selector The selector which has to be searched by. - * @param elm The element from which the search shall be outgoing. - */ -declare const findFirst: (selector: string, elm?: InputElementType) => OutputElementType; -/** - * Determines whether the passed element is matching with the passed selector. - * @param elm The element which has to be compared with the passed selector. - * @param selector The selector which has to be compared with the passed element. Additional selectors: ':visible' and ':hidden'. - */ -declare const is: (elm: InputElementType, selector: string) => boolean; -/** - * 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. - * @param elm The element of which the children shall be returned. - * @param selector The selector which must match with the children elements. - */ -declare const children: (elm: InputElementType, selector?: string | undefined) => ReadonlyArray; -/** - * Returns the childNodes (incl. text-nodes or comments etc.) of the passed element. An empty array is returned if the passed element is null. - * @param elm The element of which the childNodes shall be returned. - */ -declare const contents: (elm: InputElementType) => ReadonlyArray; -/** - * Returns the parent element of the passed element, or null if the passed element is null. - * @param elm The element of which the parent element shall be returned. - */ -declare const parent: (elm: InputElementType) => OutputElementType; -/** - * Determines whether the given element lies between two selectors in the DOM. - * @param elm The element. - * @param highBoundarySelector The high boundary selector. - * @param deepBoundarySelector The deep boundary selector. - */ -declare const liesBetween: (elm: InputElementType, highBoundarySelector: string, deepBoundarySelector: string) => boolean; -export { find, findFirst, is, children, contents, parent, liesBetween }; diff --git a/packages/overlayscrollbars/types/support/index.d.ts b/packages/overlayscrollbars/types/support/index.d.ts deleted file mode 100644 index 34cac2c..0000000 --- a/packages/overlayscrollbars/types/support/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from 'support/cache'; -export * from 'support/compatibility'; -export * from 'support/dom'; -export * from 'support/options'; -export * from 'support/utils'; diff --git a/packages/overlayscrollbars/types/support/options/index.d.ts b/packages/overlayscrollbars/types/support/options/index.d.ts deleted file mode 100644 index e9eab74..0000000 --- a/packages/overlayscrollbars/types/support/options/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from 'support/options/validation'; -export * from 'support/options/transformation'; diff --git a/packages/overlayscrollbars/types/support/options/transformation.d.ts b/packages/overlayscrollbars/types/support/options/transformation.d.ts deleted file mode 100644 index c844db6..0000000 --- a/packages/overlayscrollbars/types/support/options/transformation.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { OptionsTemplate, OptionsObjectType, OptionsTemplateNativeTypes, OptionsTemplateValue } from 'support/options/validation'; -export interface OptionsWithOptionsTemplateTransformation { - _template: OptionsTemplate; - _options: T; -} -export declare type OptionsWithOptionsTemplateValue = [T, OptionsTemplateValue]; -export declare type OptionsWithOptionsTemplate = { - [P in keyof T]: T[P] extends OptionsObjectType ? OptionsWithOptionsTemplate : T[P] extends OptionsTemplateNativeTypes ? OptionsWithOptionsTemplateValue : never; -}; -/** - * Transforms the given OptionsWithOptionsTemplate object to its corresponding generic (T) Object or its corresponding Template object. - * @param optionsWithOptionsTemplate The OptionsWithOptionsTemplate object which shall be converted. - * @param toTemplate True if the given OptionsWithOptionsTemplate shall be converted to its corresponding Template object. - */ -export declare const transformOptions: (optionsWithOptionsTemplate: OptionsWithOptionsTemplate) => OptionsWithOptionsTemplateTransformation; diff --git a/packages/overlayscrollbars/types/support/options/validation.d.ts b/packages/overlayscrollbars/types/support/options/validation.d.ts deleted file mode 100644 index 1e330c6..0000000 --- a/packages/overlayscrollbars/types/support/options/validation.d.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { PlainObject } from 'typings'; -export declare type OptionsObjectType = Record; -export declare type OptionsFunctionType = (this: unknown, ...args: unknown[]) => unknown; -export declare type OptionsTemplateType = ExtractPropsKey; -export declare type OptionsTemplateTypes = keyof OptionsTemplateTypeMap; -export declare type OptionsTemplateNativeTypes = OptionsTemplateTypeMap[keyof OptionsTemplateTypeMap]; -export declare type OptionsTemplateValue = T extends string ? string extends T ? OptionsTemplateValueNonEnum : string : OptionsTemplateValueNonEnum; -export declare type OptionsTemplate = { - [P in keyof T]: T[P] extends OptionsObjectType ? OptionsTemplate : T[P] extends OptionsTemplateNativeTypes ? OptionsTemplateValue : never; -}; -export declare type OptionsValidationResult = { - readonly _foreign: Record; - readonly _validated: PartialOptions; -}; -export declare type PartialOptions = { - [P in keyof T]?: T[P] extends OptionsObjectType ? PartialOptions : T[P]; -}; -declare type OptionsTemplateTypeMap = { - __TPL_boolean_TYPE__: boolean; - __TPL_number_TYPE__: number; - __TPL_string_TYPE__: string; - __TPL_array_TYPE__: Array | ReadonlyArray; - __TPL_function_TYPE__: OptionsFunctionType; - __TPL_null_TYPE__: null; - __TPL_object_TYPE__: OptionsObjectType; -}; -declare type OptionsTemplateValueNonEnum = OptionsTemplateType | [OptionsTemplateType, ...Array]; -declare type ExtractPropsKey = { - [P in keyof T]: TProps extends T[P] ? P : never; -}[keyof T]; -declare type OptionsTemplateTypesDictionary = { - readonly boolean: OptionsTemplateType; - readonly number: OptionsTemplateType; - readonly string: OptionsTemplateType; - readonly array: OptionsTemplateType>; - readonly object: OptionsTemplateType; - readonly function: OptionsTemplateType; - readonly null: OptionsTemplateType; -}; -/** - * A object which serves as a mapping for "normal" types and template types. - * Key = normal type string - * value = template type string - */ -declare const optionsTemplateTypes: OptionsTemplateTypesDictionary; -/** - * Validates the given options object according to the given template object and returns a object which looks like: - * { - * foreign : a object which consists of properties which aren't defined inside the template. (foreign properties) - * validated : a object which consists only of valid properties. (property name is inside the template and value has a correct type) - * } - * @param options The options object which shall be validated. - * @param template The template according to which the options object shall be validated. - * @param optionsDiff When provided the returned validated object will only have properties which are different to this objects properties. - * Example (assume all properties are valid to the template): - * Options object : { a: 'a', b: 'b', c: 'c' } - * optionsDiff object : { a: 'a', b: 'b', c: undefined } - * Returned validated object : { c: 'c' } - * Because the value of the properties a and b didn't change, they aren't included in the returned object. - * Without the optionsDiff object the returned validated object would be: { a: 'a', b: 'b', c: 'c' } - * @param doWriteErrors True if errors shall be logged into the console, false otherwise. - */ -declare const validateOptions: >(options: PartialOptions, template: OptionsTemplate, optionsDiff?: T | null | undefined, doWriteErrors?: boolean | undefined) => OptionsValidationResult; -export { validateOptions, optionsTemplateTypes }; diff --git a/packages/overlayscrollbars/types/support/utils/array.d.ts b/packages/overlayscrollbars/types/support/utils/array.d.ts deleted file mode 100644 index 0e963ea..0000000 --- a/packages/overlayscrollbars/types/support/utils/array.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { PlainObject } from 'typings'; -declare type RunEachItem = ((...args: any) => any | any[]) | null | undefined; -/** - * Iterates through a array or object - * @param arrayLikeOrObject The array or object through which shall be iterated. - * @param callback The function which is responsible for the iteration. - * If the function returns true its treated like a "continue" statement. - * If the function returns false its treated like a "break" statement. - */ -export declare function each(array: Array | ReadonlyArray, callback: (value: T, indexOrKey: number, source: Array) => boolean | unknown): Array | ReadonlyArray; -export declare function each(array: Array | ReadonlyArray | null | undefined, callback: (value: T, indexOrKey: number, source: Array) => boolean | unknown): Array | ReadonlyArray | null | undefined; -export declare function each(arrayLikeObject: ArrayLike, callback: (value: T, indexOrKey: number, source: ArrayLike) => boolean | unknown): ArrayLike; -export declare function each(arrayLikeObject: ArrayLike | null | undefined, callback: (value: T, indexOrKey: number, source: ArrayLike) => boolean | unknown): ArrayLike | null | undefined; -export declare function each(obj: PlainObject, callback: (value: any, indexOrKey: string, source: PlainObject) => boolean | unknown): PlainObject; -export declare function each(obj: PlainObject | null | undefined, callback: (value: any, indexOrKey: string, source: PlainObject) => boolean | unknown): PlainObject | null | undefined; -/** - * Returns the index of the given inside the given array or -1 if the given item isn't part of the given array. - * @param arr The array. - * @param item The item. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0. - */ -export declare const indexOf: (arr: T[], item: T, fromIndex?: number | undefined) => number; -/** - * Pushesh all given items into the given array and returns it. - * @param array The array the items shall be pushed into. - * @param items The items which shall be pushed into the array. - */ -export declare const push: (array: T[], items: T | ArrayLike, arrayIsSingleItem?: boolean | undefined) => T[]; -/** - * Creates a shallow-copied Array instance from an array-like or iterable object. - * @param arr The object from which the array instance shall be created. - */ -export declare const from: (arr: ArrayLike) => T[]; -/** - * Check whether the passed array is empty. - * @param array The array which shall be checked. - */ -export declare const isEmptyArray: (array: Array | null | undefined) => boolean | null | undefined; -/** - * Calls all functions in the passed array/set of functions. - * @param arr The array filled with function which shall be called. - * @param p1 The first param. - */ -export declare const runEach: (arr: ArrayLike | Set, p1?: unknown) => void; -export {}; diff --git a/packages/overlayscrollbars/types/support/utils/equal.d.ts b/packages/overlayscrollbars/types/support/utils/equal.d.ts deleted file mode 100644 index c9e275a..0000000 --- a/packages/overlayscrollbars/types/support/utils/equal.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { WH, XY, TRBL } from 'support/dom'; -import { PlainObject } from 'typings'; -/** - * 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. - * @param a Object a. - * @param b Object b. - * @param props The props which shall be compared. - */ -export declare const equal: >(a: T | undefined, b: T | undefined, props: (keyof T)[], propMutation?: false | ((value: any) => any) | null | undefined) => boolean; -/** - * Compares object a with object b and returns true if both have the same property values, false otherwise. - * Also returns false if one of the objects is undefined or null. - * @param a Object a. - * @param b Object b. - */ -export declare const equalWH: (a?: WH | undefined, b?: WH | undefined) => boolean; -/** - * Compares object a with object b and returns true if both have the same property values, false otherwise. - * Also returns false if one of the objects is undefined or null. - * @param a Object a. - * @param b Object b. - */ -export declare const equalXY: (a?: XY | undefined, b?: XY | undefined) => boolean; -/** - * Compares object a with object b and returns true if both have the same property values, false otherwise. - * Also returns false if one of the objects is undefined or null. - * @param a Object a. - * @param b Object b. - */ -export declare const equalTRBL: (a?: TRBL | undefined, b?: TRBL | undefined) => boolean; -/** - * Compares two DOM Rects for their equality of their width and height properties - * Also returns false if one of the DOM Rects is undefined or null. - * @param a DOM Rect a. - * @param b DOM Rect b. - * @param round Whether the values should be rounded. - */ -export declare const equalBCRWH: (a?: DOMRect | undefined, b?: DOMRect | undefined, round?: boolean | undefined) => boolean; diff --git a/packages/overlayscrollbars/types/support/utils/function.d.ts b/packages/overlayscrollbars/types/support/utils/function.d.ts deleted file mode 100644 index 7881d1b..0000000 --- a/packages/overlayscrollbars/types/support/utils/function.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -declare type DebounceTiming = number | false | null | undefined; -export interface DebounceOptions any> { - /** - * The timeout for debouncing. If null, no debounce is applied. - */ - _timeout?: DebounceTiming | (() => DebounceTiming); - /** - * A maximum amount of ms. before the function will be called even with debounce. - */ - _maxDelay?: DebounceTiming | (() => DebounceTiming); - /** - * Function which merges parameters for each canceled debounce. - * If parameters can't be merged the function will return null, otherwise it returns the merged parameters. - */ - _mergeParams?: (prev: Parameters, curr: Parameters) => Parameters | false | null | undefined; -} -export interface Debounced any> { - (...args: Parameters): ReturnType; - _flush(): void; -} -export declare const noop: () => void; -/** - * Debounces the given function either with a timeout or a animation frame. - * @param functionToDebounce The function which shall be debounced. - * @param options Options for debouncing. - */ -export declare const debounce: any>(functionToDebounce: FunctionToDebounce, options: DebounceOptions) => Debounced; -export {}; diff --git a/packages/overlayscrollbars/types/support/utils/index.d.ts b/packages/overlayscrollbars/types/support/utils/index.d.ts deleted file mode 100644 index e593ce5..0000000 --- a/packages/overlayscrollbars/types/support/utils/index.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export * from 'support/utils/array'; -export * from 'support/utils/equal'; -export * from 'support/utils/function'; -export * from 'support/utils/lexicon'; -export * from 'support/utils/object'; -export * from 'support/utils/types'; diff --git a/packages/overlayscrollbars/types/support/utils/lexicon.d.ts b/packages/overlayscrollbars/types/support/utils/lexicon.d.ts deleted file mode 100644 index c02db5a..0000000 --- a/packages/overlayscrollbars/types/support/utils/lexicon.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -interface GenericLexicon { - _widthHeight: T extends true ? 'width' : 'height'; - _WidthHeight: T extends true ? 'Width' : 'Height'; - _leftTop: T extends true ? 'left' : 'top'; - _LeftTop: T extends true ? 'Left' : 'Top'; - _xy: T extends true ? 'x' : 'y'; - _XY: T extends true ? 'X' : 'Y'; - _wh: T extends true ? 'w' : 'h'; - _lt: T extends true ? 'l' : 't'; -} -export interface Lexicon extends GenericLexicon { - _inverted: Lexicon; -} -export declare const getLexicon: (horizontal?: T | undefined) => Lexicon; -export {}; diff --git a/packages/overlayscrollbars/types/support/utils/object.d.ts b/packages/overlayscrollbars/types/support/utils/object.d.ts deleted file mode 100644 index 6750fbd..0000000 --- a/packages/overlayscrollbars/types/support/utils/object.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Determines whether the passed object has a property with the passed name. - * @param obj The object. - * @param prop The name of the property. - */ -export declare const hasOwnProperty: (obj: any, prop: string | number | symbol) => boolean; -/** - * Returns the names of the enumerable string properties and methods of an object. - * @param obj The object of which the properties shall be returned. - */ -export declare const keys: (obj: any) => Array; -export declare function assignDeep(target: T, object1: U): T & U; -export declare function assignDeep(target: T, object1: U, object2: V): T & U & V; -export declare function assignDeep(target: T, object1: U, object2: V, object3: W): T & U & V & W; -export declare function assignDeep(target: T, object1: U, object2: V, object3: W, object4: X): T & U & V & W & X; -export declare function assignDeep(target: T, object1: U, object2: V, object3: W, object4: X, object5: Y): T & U & V & W & X & Y; -/** - * Returns true if the given object is empty, false otherwise. - * @param obj The Object. - */ -export declare function isEmptyObject(obj: any): boolean; diff --git a/packages/overlayscrollbars/types/support/utils/types.d.ts b/packages/overlayscrollbars/types/support/utils/types.d.ts deleted file mode 100644 index 4f222f0..0000000 --- a/packages/overlayscrollbars/types/support/utils/types.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { PlainObject } from 'typings'; -export declare function isUndefined(obj: any): obj is undefined; -export declare function isNull(obj: any): obj is null; -export declare const type: (obj: any) => string; -export declare function isNumber(obj: any): obj is number; -export declare function isString(obj: any): obj is string; -export declare function isBoolean(obj: any): obj is boolean; -export declare function isFunction(obj: any): obj is (...args: Array) => unknown; -export declare function isArray(obj: any): obj is Array; -export declare function isObject(obj: any): boolean; -/** - * Returns true if the given object is array like, false otherwise. - * @param obj The Object - */ -export declare function isArrayLike(obj: any): obj is ArrayLike; -/** - * Returns true if the given object is a "plain" (e.g. { key: value }) object, false otherwise. - * @param obj The Object. - */ -export declare function isPlainObject(obj: any): obj is PlainObject; -/** - * Checks whether the given object is a HTMLElement. - * @param obj The object which shall be checked. - */ -export declare function isHTMLElement(obj: any): obj is HTMLElement; -/** - * Checks whether the given object is a Element. - * @param obj The object which shall be checked. - */ -export declare function isElement(obj: any): obj is Element; diff --git a/packages/overlayscrollbars/types/trinsicobserver.d.ts b/packages/overlayscrollbars/types/trinsicobserver.d.ts new file mode 100644 index 0000000..eaff36f --- /dev/null +++ b/packages/overlayscrollbars/types/trinsicobserver.d.ts @@ -0,0 +1,2 @@ +declare const start: () => Promise; +export { start }; diff --git a/packages/overlayscrollbars/types/typings.d.ts b/packages/overlayscrollbars/types/typings.d.ts deleted file mode 100644 index d5708bd..0000000 --- a/packages/overlayscrollbars/types/typings.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -export declare type PlainObject = { - [name: string]: T; -}; -export declare type StyleObject = { - [Key in (keyof CSSStyleDeclaration | (CustomCssProps extends string ? CustomCssProps : ''))]?: string | number; -}; -export declare type InternalVersionOf = { - [K in keyof T as `_${Uncapitalize}`]: T[K]; -}; -export declare type OSTargetElement = HTMLElement | HTMLTextAreaElement; -/** - * Object for special initialization. - * - * Target is always required, if element is not provided or undefined it will be generated. - * - * If element is provided, the provided element takes all its responsibilities. - * DOM hierarchy isn't checked in this case, its assumed that hieararchy is correct in such a case. - * - * Undefined means that the plugin decides whether the respective element needs to be added or can be savely omitted. - * True means that even if the plugin would decide to not generate the element, the element is still generated. - * False means that event if the plugin would decide to generate the element, the element won't be generated. - */ -export interface OSTargetObject { - target: OSTargetElement; - host?: HTMLElement; - padding?: HTMLElement | boolean; - viewport?: HTMLElement; - content?: HTMLElement | boolean; -} -export declare type OSTarget = OSTargetElement | OSTargetObject; diff --git a/packages/testing-browser/src/Resize.ts b/packages/testing-browser/src/Resize.ts index fd47b04..1bbafb2 100644 --- a/packages/testing-browser/src/Resize.ts +++ b/packages/testing-browser/src/Resize.ts @@ -1,5 +1,17 @@ // @ts-ignore -import { createDiv, appendChildren, parent, style, on, off, addClass, WH, XY, clientSize, each } from '@/overlayscrollbars/support'; +import { + createDiv, + appendChildren, + parent, + style, + on, + off, + addClass, + WH, + XY, + clientSize, + each, +} from '@/overlayscrollbars/support'; type ResizeListener = (width: number, height: number) => void; @@ -25,7 +37,9 @@ export const resize = (element: HTMLElement) => { const resizerResize = (event: MouseEvent | TouchEvent) => { const isTouchEvent = (event as TouchEvent).touches !== undefined; - const mouseOffsetHolder = isTouchEvent ? (event as TouchEvent).touches[0] : (event as MouseEvent); + const mouseOffsetHolder = isTouchEvent + ? (event as TouchEvent).touches[0] + : (event as MouseEvent); const sizeStyle = { width: dragStartSize.w + mouseOffsetHolder.pageX - dragStartPosition.x, @@ -56,7 +70,9 @@ export const resize = (element: HTMLElement) => { const { currentTarget } = event; const correctButton = (event as MouseEvent).buttons === 1 || event.which === 1; const isTouchEvent = (event as TouchEvent).touches !== undefined; - const mouseOffsetHolder = isTouchEvent ? (event as TouchEvent).touches[0] : (event as MouseEvent); + const mouseOffsetHolder = isTouchEvent + ? (event as TouchEvent).touches[0] + : (event as MouseEvent); if (correctButton || isTouchEvent) { dragStartPosition.x = mouseOffsetHolder.pageX; diff --git a/packages/testing-browser/tsconfig.json b/packages/testing-browser/tsconfig.json index a524df7..27c2657 100644 --- a/packages/testing-browser/tsconfig.json +++ b/packages/testing-browser/tsconfig.json @@ -1,9 +1,6 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "baseUrl": "./src/", - "paths": { - "@/overlayscrollbars*": ["../../overlayscrollbars/src*"] - } + "baseUrl": "./src/" } } diff --git a/playwright.config.base.js b/playwright.config.base.js new file mode 100644 index 0000000..b68dfb2 --- /dev/null +++ b/playwright.config.base.js @@ -0,0 +1,34 @@ +const { devices } = require('@playwright/test'); + +module.exports = { + testMatch: /.*\/tests\/playwright\/.*\.test\.[jt]sx?/, + timeout: 5 * 60 * 1000, + actionTimeout: 300, + navigationTimeout: 1000, + retries: 0, + projects: [ + { + name: 'Chromium', + use: { + ...devices['Desktop Chrome'], + headless: false, + }, + }, + /* + { + name: 'Firefox', + use: { + ...devices['Desktop Firefox'], + headless: false, + }, + }, + { + name: 'Safari', + use: { + ...devices['Desktop Safari'], + headless: false, + }, + }, + */ + ], +}; diff --git a/playwright.rollup.base.js b/playwright.rollup.base.js new file mode 100644 index 0000000..00c7853 --- /dev/null +++ b/playwright.rollup.base.js @@ -0,0 +1,71 @@ +const { dirname } = require('path'); +const { rollup, watch: rollupWatch } = require('rollup'); +const { test, expect } = require('@playwright/test'); + +const playwrightRollup = async (testDir, watch = false) => { + let server; + const createPlaywrightRollupConfig = require(`${__dirname}/config/playwright/rollup.config.js`); + const onListening = (srv) => { + server = srv; + }; + const config = await createPlaywrightRollupConfig(testDir, onListening); + + if (watch) { + const watcher = rollupWatch(config); + + // eslint-disable-next-line no-await-in-loop + await new Promise((resolve) => { + watcher.on('event', ({ code, error, result }) => { + if (code === 'ERROR') { + console.log('Error:', error); // eslint-disable-line + } + if (code === 'BUNDLE_END') { + if (result && result.close) { + result.close(); + } + } + if (code === 'END') { + /* + console.log('Watching for changes, press ENTER to continue.'); // eslint-disable-line + console.log(''); // eslint-disable-line + */ + resolve(); + } + }); + }); + + const { address, port } = server.address(); + return { + url: `${address}:${port}`, + close: () => { + server.close(); + watcher.close(); + }, + }; + } + + const bundle = await rollup(config); + await bundle.write(config.output); +}; + +module.exports = { + playwrightRollup: () => { + let url; + let close; + + // eslint-disable-next-line no-empty-pattern + test.beforeAll(async ({}, { file }) => { + ({ close, url } = await playwrightRollup(dirname(file), true)); + }); + + test.beforeEach(async ({ page }) => { + await page.goto(url); + }); + + test.afterAll(() => close()); + }, + expectSuccess: async (page) => { + await page.locator('#testResult').waitFor({ state: 'visible', timeout: 10 * 60 * 1000 }); // 10mins + await expect(page.locator('#testResult')).toHaveClass('passed', { timeout: 500 }); + }, +}; diff --git a/rollup.config.base.js b/rollup.config.base.js index c8a8e44..0b9bba3 100644 --- a/rollup.config.base.js +++ b/rollup.config.base.js @@ -1,412 +1 @@ -const { nodeResolve: rollupResolve } = require('@rollup/plugin-node-resolve'); -const { babel: rollupBabelInputPlugin, createBabelInputPluginFactory } = require('@rollup/plugin-babel'); -const { terser: rollupTerser } = require('rollup-plugin-terser'); -const rollupInject = require('@rollup/plugin-inject'); -const rollupCommonjs = require('@rollup/plugin-commonjs'); -const rollupTypescript = require('rollup-plugin-typescript2'); -const rollupPrettier = require('rollup-plugin-prettier'); -const del = require('del'); -const fs = require('fs'); -const path = require('path'); -const chalk = require('chalk'); -const glob = require('glob'); -const resolve = require('./resolve.config.json'); - -const isTestEnv = process.env.NODE_ENV === 'test'; - -const rollupConfigDefaults = { - input: './src/index', - src: './src', - dist: './dist', - types: './types', - tests: './tests', - cache: [], - minVersions: true, - sourcemap: true, - esmBuild: true, - exports: 'auto', - pipeline: ['typescript', 'resolve', 'inject', 'commonjs', 'babel'], -}; -const legacyBabelConfig = { - exclude: isTestEnv ? [/\/core-js\//] : [], // /\/@testing-library\// - presets: [ - [ - '@babel/preset-env', - { - ...(isTestEnv ? { useBuiltIns: 'usage', corejs: { version: 3, proposals: true } } : {}), - loose: true, - targets: { - ie: '11', - }, - }, - ], - ], -}; -const esmBabelConfig = { - presets: [ - [ - '@babel/preset-env', - { - loose: true, - bugfixes: true, - targets: { - esmodules: true, - }, - }, - ], - ], -}; - -const rollupBabelPlugin = isTestEnv - ? createBabelInputPluginFactory(() => { - return { - config(cfg) { - const { options } = cfg; - const { plugins } = options; - - return this.meta.watchMode - ? options - : { - ...options, - plugins: [ - ...(plugins || []), - [ - 'babel-plugin-istanbul', - { - useInlineSourceMaps: false, - inputSourceMap: { ...this.getCombinedSourcemap() }, - }, - ], - ], - }; - }, - }; - }) - : rollupBabelInputPlugin; - -const readFilesStats = (dir, extensions = ['.js', '.css']) => { - const result = {}; - if (fs.existsSync(dir)) { - const distFiles = fs.readdirSync(dir); - distFiles.forEach((file) => { - if (extensions.includes(path.extname(file))) { - const stats = fs.lstatSync(path.resolve(dir, file)); - if (stats.isFile()) { - result[path.basename(file)] = stats.size; - } - } - }); - } - return result; -}; - -const normalizePath = (pathName) => (pathName ? pathName.split(path.sep).join(path.posix.sep) : pathName); - -const appendExtension = (file) => - path.extname(file) === '' ? file + resolve.extensions.find((ext) => fs.existsSync(path.resolve(`${file}${ext}`))) : file; - -const resolvePath = (basePath, pathToResolve, appendExt) => { - const result = pathToResolve ? (path.isAbsolute(pathToResolve) ? pathToResolve : path.resolve(basePath, pathToResolve)) : null; - return result && appendExt ? appendExtension(result) : result; -}; - -const resolveConfig = (config, userConfig) => { - if (typeof config === 'function') { - return ( - config({ - defaultConfig: rollupConfigDefaults, - legacyBabelConfig, - esmBabelConfig, - userConfig, - }) || {} - ); - } - return config; -}; - -const rollupConfig = (config = {}, { project = process.cwd(), overwrite = {}, silent, fast } = {}) => { - const repoPackageJson = require(path.resolve(__dirname, 'package.json')); - const projectPath = resolvePath(__dirname, project); - const relativeBackPath = path.relative(projectPath, __dirname); - const projectName = path.basename(project); - - const packageJSONPath = resolvePath(projectPath, 'package.json'); - const tsconfigJSONPath = resolvePath(projectPath, 'tsconfig.json'); - - const isTypeScriptProject = fs.existsSync(tsconfigJSONPath); - const userConfig = resolveConfig(config); - const overwriteConfig = resolveConfig(overwrite, userConfig); - const buildConfig = { - ...rollupConfigDefaults, - ...{ name: projectName, file: projectName }, - ...userConfig, - ...overwriteConfig, - }; - - const { - input, - src, - dist, - types, - tests, - file, - cache, - minVersions, - sourcemap, - esmBuild, - name, - exports, - globals, - external, - pipeline, - inject, - } = buildConfig; - const { devDependencies = {}, peerDependencies = {} } = require(packageJSONPath); - - const srcPath = resolvePath(projectPath, src); - const distPath = resolvePath(projectPath, dist); - const typesPath = resolvePath(projectPath, types); - const testsPath = resolvePath(projectPath, tests); - const inputPath = resolvePath(projectPath, input, true); - - const prependBackPath = (value) => normalizePath(`${relativeBackPath}${path.sep}`) + value; - const genOutputConfig = (esm) => ({ - format: esm ? 'esm' : 'umd', - file: path.resolve(distPath, `${file}${esm ? '.esm' : ''}.js`), - sourcemap, - ...(!esm && { - name, - globals, - exports, - }), - plugins: [ - ...(fast - ? [] - : [ - rollupPrettier({ - sourcemap: sourcemap && 'silent', - }), - ]), - ], - }); - - const genConfig = ({ esm, typeDeclaration }) => { - const { exclude, compilerOptions } = require(tsconfigJSONPath); - const { paths } = compilerOptions || {}; - const finalPaths = paths || {}; - const workspacesPaths = repoPackageJson.workspaces - .map((pattern) => glob.sync(pattern, { cwd: __dirname })) - .reduce((arr, paths) => { - arr.push(...paths); - return arr; - }, []) - .reduce((obj, resolvedPath) => { - const absolutePath = path.resolve(__dirname, resolvedPath); - obj[`@/${path.basename(absolutePath)}*`] = [`${normalizePath(path.resolve(absolutePath, rollupConfigDefaults.src))}*`]; - return obj; - }, {}); - - const pipelineMap = { - typescript: isTypeScriptProject - ? rollupTypescript({ - check: !fast, - clean: true, - useTsconfigDeclarationDir: true, - tsconfig: tsconfigJSONPath, - tsconfigOverride: { - compilerOptions: { - target: 'ESNext', - sourceMap: sourcemap, - declaration: typeDeclaration && types !== null, - declarationDir: typesPath, - paths: { - ...finalPaths, - ...workspacesPaths, - }, - }, - exclude: (exclude || []).concat(testsPath), - }, - include: ['*.ts+(|x)', '**/*.ts+(|x)'].map(prependBackPath), - exclude: ['*.d.ts', '**/*.d.ts'].map(prependBackPath), - }) - : {}, - resolve: rollupResolve({ - mainFields: ['browser', 'umd:main', 'module', 'main'], - extensions: resolve.extensions, - rootDir: srcPath, - moduleDirectories: resolve.directories, - }), - inject: rollupInject({ - ...(typeof inject === 'object' ? inject : {}), - }), - commonjs: rollupCommonjs({ - sourceMap: sourcemap, - extensions: resolve.extensions, - }), - babel: rollupBabelPlugin({ - ...(esm ? esmBabelConfig : legacyBabelConfig), - babelHelpers: 'runtime', - extensions: resolve.extensions, - shouldPrintComment: () => false, - caller: { - name: 'babel-rollup-build', - }, - }), - }; - - const output = genOutputConfig(esm); - return { - input: inputPath, - output: [output].concat( - minVersions - ? [ - { - ...output, - compact: true, - file: output.file.replace('.js', '.min.js'), - sourcemap: false, - plugins: [ - ...(output.plugins || []), - rollupTerser({ - ecma: esm ? 2015 : 5, - safari10: true, - mangle: { - safari10: true, - properties: { - regex: /^_/, - }, - }, - compress: { - evaluate: false, - }, - }), - ], - }, - ] - : [] - ), - external: [...Object.keys(devDependencies), ...Object.keys(peerDependencies), ...((Array.isArray(external) && external) || [])], - plugins: pipeline.reduce((arr, item) => { - const plugin = typeof item === 'string' ? pipelineMap[item] : item; - arr.push(...(Array.isArray(plugin) ? plugin : [plugin])); - return arr; - }, []), - }; - }; - - if (!silent) { - console.log(''); - console.log('PROJECT : ', project); - console.log('CONFIG : ', buildConfig); - } - - const legacy = genConfig({ esm: false, typeDeclaration: true }); - const esm = esmBuild ? genConfig({ esm: true, typeDeclaration: false }) : null; - - let outputs = 0; - let existingDistFilesStats; - const builds = [legacy, esm] - .filter((build) => build !== null) - .map((build, index, buildsArr) => { - if (index === 0) { - existingDistFilesStats = readFilesStats(distPath); - buildsArr.forEach((build) => { - const { output } = build; - outputs += Array.isArray(output) ? output.length : 1; - }); - } - return build; - }) - .map((build, index, buildsArr) => { - const isFirst = index === 0; - const isLast = index === buildsArr.length - 1; - const isLastFile = () => outputs === 0; - - if (isFirst) { - const deleteGeneratedDirs = () => { - const deletedDirs = del.sync([distPath, typesPath].filter((curr) => curr !== null)); - if (deletedDirs.length > 0 && !silent) { - console.log('Deleted directories:\n', deletedDirs.join('\n')); - } - }; - build.plugins.unshift({ - name: 'deleteGeneratedDirs', - options() { - if (!this.meta.watchMode) { - deleteGeneratedDirs(); - } - }, - }); - } - - if (isLast) { - const deleteCacheDirs = () => { - const cacheDirs = cache.map((dir) => path.resolve(projectPath, dir)); - const deletedDirs = del.sync(cacheDirs); - if (deletedDirs.length > 0 && !silent) { - console.log('Deleted cache:\n', deletedDirs.join('\n')); - } - }; - build.plugins.push({ - name: 'deleteCacheDirs', - writeBundle() { - if (!this.meta.watchMode && isLastFile()) { - deleteCacheDirs(); - } - }, - closeWatcher: deleteCacheDirs, - }); - - if (!isTestEnv && !silent) { - if (existingDistFilesStats) { - build.plugins.push({ - name: 'compareDistSizes', - writeBundle() { - if (isLastFile()) { - const newDistFilesStats = readFilesStats(distPath); - const { yellow, white, green, red, blackBright } = chalk; - const printColoredPercent = (value) => { - const fixed = `${value.toFixed(2)}%`; - if (value === 0) { - return white(fixed); - } - if (value > 0) { - return red(`+${fixed}`); - } - if (value < 0) { - return green(fixed); - } - }; - - Object.keys(existingDistFilesStats).forEach((key) => { - const newSize = newDistFilesStats[key]; - const oldSize = existingDistFilesStats[key] || 0; - const percent = printColoredPercent(oldSize === 0 ? 100 : ((newSize - oldSize) / oldSize) * 100); - - setTimeout(() => { - console.log(''); - console.log(yellow(key)); - console.log(`size change: ${percent}`, blackBright(`(previous: ${oldSize} | new: ${newSize})`)); - }, 1); - }); - } - }, - }); - } - } - } - - build.plugins.unshift({ - name: 'decreaseOutputs', - writeBundle() { - outputs -= 1; - }, - }); - - return build; - }); - - return builds; -}; - -module.exports = rollupConfig; +module.exports = require('./config/rollup/rollup.config'); diff --git a/tsconfig.base.json b/tsconfig.base.json index dee3903..9286729 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -12,6 +12,5 @@ "module": "ESNext", "moduleResolution": "node", "removeComments": false - }, - "exclude": ["node_modules", "**/node_modules/*"] + } } diff --git a/yarn.lock b/yarn.lock index b1406c3..db4d418 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,14 @@ # yarn lockfile v1 +"@ampproject/remapping@^2.1.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== + dependencies: + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" + "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" @@ -16,62 +24,43 @@ dependencies: "@babel/highlight" "^7.14.5" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.14.5", "@babel/compat-data@^7.14.7": +"@babel/code-frame@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== + dependencies: + "@babel/highlight" "^7.16.7" + +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.14.5": version "7.14.7" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.7.tgz#7b047d7a3a89a67d2258dc61f604f098f1bc7e08" integrity sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw== -"@babel/core@^7.1.0", "@babel/core@^7.7.5": - version "7.11.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.6.tgz#3a9455dc7387ff1bac45770650bc13ba04a15651" - integrity sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.6" - "@babel/helper-module-transforms" "^7.11.0" - "@babel/helpers" "^7.10.4" - "@babel/parser" "^7.11.5" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.11.5" - "@babel/types" "^7.11.5" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.19" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" +"@babel/compat-data@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" + integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw== -"@babel/core@^7.14.6", "@babel/core@^7.7.2": - version "7.14.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.6.tgz#e0814ec1a950032ff16c13a2721de39a8416fcab" - integrity sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA== +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.2.tgz#87b2fcd7cce9becaa7f5acebdc4f09f3dd19d876" + integrity sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ== dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.14.5" - "@babel/helper-compilation-targets" "^7.14.5" - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helpers" "^7.14.6" - "@babel/parser" "^7.14.6" - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.18.2" + "@babel/helper-compilation-targets" "^7.18.2" + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helpers" "^7.18.2" + "@babel/parser" "^7.18.0" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.18.2" + "@babel/types" "^7.18.2" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" - json5 "^2.1.2" + json5 "^2.2.1" semver "^6.3.0" - source-map "^0.5.0" - -"@babel/generator@^7.11.5", "@babel/generator@^7.11.6": - version "7.11.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.6.tgz#b868900f81b163b4d464ea24545c61cbac4dc620" - integrity sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA== - dependencies: - "@babel/types" "^7.11.5" - jsesc "^2.5.1" - source-map "^0.5.0" "@babel/generator@^7.14.5", "@babel/generator@^7.7.2": version "7.14.5" @@ -82,6 +71,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d" + integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw== + dependencies: + "@babel/types" "^7.18.2" + "@jridgewell/gen-mapping" "^0.3.0" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" @@ -89,22 +87,22 @@ dependencies: "@babel/types" "^7.10.4" -"@babel/helper-annotate-as-pure@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz#7bf478ec3b71726d56a8ca5775b046fc29879e61" - integrity sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA== +"@babel/helper-annotate-as-pure@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" + integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== dependencies: - "@babel/types" "^7.14.5" + "@babel/types" "^7.16.7" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.14.5.tgz#b939b43f8c37765443a19ae74ad8b15978e0a191" - integrity sha512-YTA/Twn0vBXDVGJuAX6PwW7x5zQei1luDDo2Pl6q1qZ7hVNl0RZrhHCQG/ArGpR29Vl7ETiB8eJyrvpuRp300w== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" + integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA== dependencies: - "@babel/helper-explode-assignable-expression" "^7.14.5" - "@babel/types" "^7.14.5" + "@babel/helper-explode-assignable-expression" "^7.16.7" + "@babel/types" "^7.16.7" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.14.5": +"@babel/helper-compilation-targets@^7.13.0": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz#7a99c5d0967911e972fe2c3411f7d5b498498ecf" integrity sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw== @@ -114,17 +112,28 @@ browserslist "^4.16.6" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.14.6": - version "7.14.6" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.6.tgz#f114469b6c06f8b5c59c6c4e74621f5085362542" - integrity sha512-Z6gsfGofTxH/+LQXqYEK45kxmcensbzmk/oi8DmaQytlQCgqNZt9XQF8iqlI/SeXWVjaMNxvYvzaYw+kh42mDg== +"@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10", "@babel/helper-compilation-targets@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz#67a85a10cbd5fc7f1457fec2e7f45441dc6c754b" + integrity sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-member-expression-to-functions" "^7.14.5" - "@babel/helper-optimise-call-expression" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" + "@babel/compat-data" "^7.17.10" + "@babel/helper-validator-option" "^7.16.7" + browserslist "^4.20.2" + semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.17.12", "@babel/helper-create-class-features-plugin@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz#fac430912606331cb075ea8d82f9a4c145a4da19" + integrity sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-member-expression-to-functions" "^7.17.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" "@babel/helper-create-regexp-features-plugin@^7.10.4": version "7.10.4" @@ -135,18 +144,18 @@ "@babel/helper-regex" "^7.10.4" regexpu-core "^4.7.0" -"@babel/helper-create-regexp-features-plugin@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz#c7d5ac5e9cf621c26057722fb7a8a4c5889358c4" - integrity sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A== +"@babel/helper-create-regexp-features-plugin@^7.16.7", "@babel/helper-create-regexp-features-plugin@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz#bb37ca467f9694bbe55b884ae7a5cc1e0084e4fd" + integrity sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw== dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - regexpu-core "^4.7.1" + "@babel/helper-annotate-as-pure" "^7.16.7" + regexpu-core "^5.0.1" -"@babel/helper-define-polyfill-provider@^0.2.2": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz#0525edec5094653a282688d34d846e4c75e9c0b6" - integrity sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew== +"@babel/helper-define-polyfill-provider@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" + integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA== dependencies: "@babel/helper-compilation-targets" "^7.13.0" "@babel/helper-module-imports" "^7.12.13" @@ -157,21 +166,17 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-explode-assignable-expression@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.14.5.tgz#8aa72e708205c7bb643e45c73b4386cdf2a1f645" - integrity sha512-Htb24gnGJdIGT4vnRKMdoXiOIlqOLmdiUYpAQ0mYfgVT/GDm8GOYhgi4GL+hMKrkiPRohO4ts34ELFsGAPQLDQ== - dependencies: - "@babel/types" "^7.14.5" +"@babel/helper-environment-visitor@^7.16.7", "@babel/helper-environment-visitor@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd" + integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ== -"@babel/helper-function-name@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" - integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== +"@babel/helper-explode-assignable-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" + integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ== dependencies: - "@babel/helper-get-function-arity" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/types" "^7.16.7" "@babel/helper-function-name@^7.14.5": version "7.14.5" @@ -182,12 +187,13 @@ "@babel/template" "^7.14.5" "@babel/types" "^7.14.5" -"@babel/helper-get-function-arity@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" - integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== +"@babel/helper-function-name@^7.16.7", "@babel/helper-function-name@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" + integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== dependencies: - "@babel/types" "^7.10.4" + "@babel/template" "^7.16.7" + "@babel/types" "^7.17.0" "@babel/helper-get-function-arity@^7.14.5": version "7.14.5" @@ -203,19 +209,19 @@ dependencies: "@babel/types" "^7.14.5" -"@babel/helper-member-expression-to-functions@^7.10.4": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz#ae69c83d84ee82f4b42f96e2a09410935a8f26df" - integrity sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q== +"@babel/helper-hoist-variables@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" + integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== dependencies: - "@babel/types" "^7.11.0" + "@babel/types" "^7.16.7" -"@babel/helper-member-expression-to-functions@^7.14.5": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz#97e56244beb94211fe277bd818e3a329c66f7970" - integrity sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA== +"@babel/helper-member-expression-to-functions@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" + integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== dependencies: - "@babel/types" "^7.14.5" + "@babel/types" "^7.17.0" "@babel/helper-module-imports@^7.10.4": version "7.10.4" @@ -224,53 +230,40 @@ dependencies: "@babel/types" "^7.10.4" -"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.14.5": +"@babel/helper-module-imports@^7.12.13": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" integrity sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ== dependencies: "@babel/types" "^7.14.5" -"@babel/helper-module-transforms@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz#b16f250229e47211abdd84b34b64737c2ab2d359" - integrity sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg== +"@babel/helper-module-imports@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/helper-simple-access" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/template" "^7.10.4" - "@babel/types" "^7.11.0" - lodash "^4.17.19" + "@babel/types" "^7.16.7" -"@babel/helper-module-transforms@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz#7de42f10d789b423eb902ebd24031ca77cb1e10e" - integrity sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA== +"@babel/helper-module-transforms@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz#baf05dec7a5875fb9235bd34ca18bad4e21221cd" + integrity sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA== dependencies: - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - "@babel/helper-simple-access" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" - "@babel/helper-validator-identifier" "^7.14.5" - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.18.0" + "@babel/types" "^7.18.0" -"@babel/helper-optimise-call-expression@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" - integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== +"@babel/helper-optimise-call-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" + integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-optimise-call-expression@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz#f27395a8619e0665b3f0364cddb41c25d71b499c" - integrity sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA== - dependencies: - "@babel/types" "^7.14.5" + "@babel/types" "^7.16.7" "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.10.4" @@ -282,6 +275,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== +"@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz#86c2347da5acbf5583ba0a10aed4c9bf9da9cf96" + integrity sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA== + "@babel/helper-regex@^7.10.4": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.5.tgz#32dfbb79899073c415557053a19bd055aae50ae0" @@ -289,63 +287,39 @@ dependencies: lodash "^4.17.19" -"@babel/helper-remap-async-to-generator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.14.5.tgz#51439c913612958f54a987a4ffc9ee587a2045d6" - integrity sha512-rLQKdQU+HYlxBwQIj8dk4/0ENOUEhA/Z0l4hN8BexpvmSMN9oA9EagjnhnDpNsRdWCfjwa4mn/HyBXO9yhQP6A== +"@babel/helper-remap-async-to-generator@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" + integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw== dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-wrap-function" "^7.14.5" - "@babel/types" "^7.14.5" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-wrap-function" "^7.16.8" + "@babel/types" "^7.16.8" -"@babel/helper-replace-supers@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" - integrity sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A== +"@babel/helper-replace-supers@^7.16.7", "@babel/helper-replace-supers@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz#41fdfcc9abaf900e18ba6e5931816d9062a7b2e0" + integrity sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q== dependencies: - "@babel/helper-member-expression-to-functions" "^7.10.4" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/helper-environment-visitor" "^7.18.2" + "@babel/helper-member-expression-to-functions" "^7.17.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/traverse" "^7.18.2" + "@babel/types" "^7.18.2" -"@babel/helper-replace-supers@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz#0ecc0b03c41cd567b4024ea016134c28414abb94" - integrity sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow== +"@babel/helper-simple-access@^7.17.7", "@babel/helper-simple-access@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz#4dc473c2169ac3a1c9f4a51cfcd091d1c36fcff9" + integrity sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ== dependencies: - "@babel/helper-member-expression-to-functions" "^7.14.5" - "@babel/helper-optimise-call-expression" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" + "@babel/types" "^7.18.2" -"@babel/helper-simple-access@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" - integrity sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw== +"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" + integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== dependencies: - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-simple-access@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz#66ea85cf53ba0b4e588ba77fc813f53abcaa41c4" - integrity sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-skip-transparent-expression-wrappers@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.14.5.tgz#96f486ac050ca9f44b009fbe5b7d394cab3a0ee4" - integrity sha512-dmqZB7mrb94PZSAOYtr+ZN5qt5owZIAgqtoTuqiFbHFtxgEcmQlRJVI+bO++fciBunXtB6MK7HrzrfcAzIz2NQ== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-split-export-declaration@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" - integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== - dependencies: - "@babel/types" "^7.11.0" + "@babel/types" "^7.16.0" "@babel/helper-split-export-declaration@^7.14.5": version "7.14.5" @@ -354,6 +328,13 @@ dependencies: "@babel/types" "^7.14.5" +"@babel/helper-split-export-declaration@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" + integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-validator-identifier@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" @@ -364,38 +345,39 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#d0f0e277c512e0c938277faa85a3968c9a44c0e8" integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg== +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== + "@babel/helper-validator-option@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== -"@babel/helper-wrap-function@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.14.5.tgz#5919d115bf0fe328b8a5d63bcb610f51601f2bff" - integrity sha512-YEdjTCq+LNuNS1WfxsDCNpgXkJaIyqco6DAelTUjT4f2KIWC1nBcaCaSdHTBqQVLnTBexBcVcFhLSU1KnYuePQ== - dependencies: - "@babel/helper-function-name" "^7.14.5" - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" +"@babel/helper-validator-option@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" + integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== -"@babel/helpers@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" - integrity sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA== +"@babel/helper-wrap-function@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" + integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw== dependencies: - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/helper-function-name" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.8" + "@babel/types" "^7.16.8" -"@babel/helpers@^7.14.6": - version "7.14.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.6.tgz#5b58306b95f1b47e2a0199434fa8658fa6c21635" - integrity sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA== +"@babel/helpers@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.2.tgz#970d74f0deadc3f5a938bfa250738eb4ac889384" + integrity sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg== dependencies: - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.18.2" + "@babel/types" "^7.18.2" "@babel/highlight@^7.10.4": version "7.10.4" @@ -415,152 +397,173 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.10.4", "@babel/parser@^7.11.5": +"@babel/highlight@^7.16.7": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351" + integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.10.4": version "7.11.5" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037" integrity sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q== -"@babel/parser@^7.14.5", "@babel/parser@^7.14.6", "@babel/parser@^7.14.7", "@babel/parser@^7.7.2": +"@babel/parser@^7.14.5", "@babel/parser@^7.14.7": version "7.14.7" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.7.tgz#6099720c8839ca865a2637e6c85852ead0bdb595" integrity sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA== -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.14.5.tgz#4b467302e1548ed3b1be43beae2cc9cf45e0bb7e" - integrity sha512-ZoJS2XCKPBfTmL122iP6NM9dOg+d4lc9fFk3zxc8iDjvt8Pk4+TlsHSKhIPf6X+L5ORCdBzqMZDjL/WHj7WknQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" - "@babel/plugin-proposal-optional-chaining" "^7.14.5" +"@babel/parser@^7.16.7", "@babel/parser@^7.18.0": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.4.tgz#6774231779dd700e0af29f6ad8d479582d7ce5ef" + integrity sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow== -"@babel/plugin-proposal-async-generator-functions@^7.14.7": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.7.tgz#784a48c3d8ed073f65adcf30b57bcbf6c8119ace" - integrity sha512-RK8Wj7lXLY3bqei69/cc25gwS5puEc3dknoFPFbqfy3XxYQBQFvu4ioWpafMBAB+L9NyptQK4nMOa5Xz16og8Q== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz#1dca338caaefca368639c9ffb095afbd4d420b1e" + integrity sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.14.5" + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz#0d498ec8f0374b1e2eb54b9cb2c4c78714c77753" + integrity sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.17.12" + +"@babel/plugin-proposal-async-generator-functions@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz#094a417e31ce7e692d84bab06c8e2a607cbeef03" + integrity sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-remap-async-to-generator" "^7.16.8" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz#40d1ee140c5b1e31a350f4f5eed945096559b42e" - integrity sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg== +"@babel/plugin-proposal-class-properties@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz#84f65c0cc247d46f40a6da99aadd6438315d80a4" + integrity sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-proposal-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.14.5.tgz#158e9e10d449c3849ef3ecde94a03d9f1841b681" - integrity sha512-KBAH5ksEnYHCegqseI5N9skTdxgJdmDoAOc0uXa+4QMYKeZD0w5IARh4FMlTNtaHhbB8v+KzMdTgxMMzsIy6Yg== +"@babel/plugin-proposal-class-static-block@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz#7d02253156e3c3793bdb9f2faac3a1c05f0ba710" + integrity sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-dynamic-import@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz#0c6617df461c0c1f8fff3b47cd59772360101d2c" - integrity sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g== +"@babel/plugin-proposal-dynamic-import@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2" + integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz#dbad244310ce6ccd083072167d8cea83a52faf76" - integrity sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA== +"@babel/plugin-proposal-export-namespace-from@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz#b22864ccd662db9606edb2287ea5fd1709f05378" + integrity sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz#38de60db362e83a3d8c944ac858ddf9f0c2239eb" - integrity sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ== +"@babel/plugin-proposal-json-strings@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz#f4642951792437233216d8c1af370bb0fbff4664" + integrity sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz#6e6229c2a99b02ab2915f82571e0cc646a40c738" - integrity sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw== +"@babel/plugin-proposal-logical-assignment-operators@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz#c64a1bcb2b0a6d0ed2ff674fd120f90ee4b88a23" + integrity sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz#ee38589ce00e2cc59b299ec3ea406fcd3a0fdaf6" - integrity sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz#1e93079bbc2cbc756f6db6a1925157c4a92b94be" + integrity sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz#83631bf33d9a51df184c2102a069ac0c58c05f18" - integrity sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg== +"@babel/plugin-proposal-numeric-separator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" + integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.14.7": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.7.tgz#5920a2b3df7f7901df0205974c0641b13fd9d363" - integrity sha512-082hsZz+sVabfmDWo1Oct1u1AgbKbUAyVgmX4otIc7bdsRgHBXwTwb3DpDmD4Eyyx6DNiuz5UAATT655k+kL5g== +"@babel/plugin-proposal-object-rest-spread@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz#79f2390c892ba2a68ec112eb0d895cfbd11155e8" + integrity sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw== dependencies: - "@babel/compat-data" "^7.14.7" - "@babel/helper-compilation-targets" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/compat-data" "^7.17.10" + "@babel/helper-compilation-targets" "^7.17.10" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.14.5" + "@babel/plugin-transform-parameters" "^7.17.12" -"@babel/plugin-proposal-optional-catch-binding@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz#939dd6eddeff3a67fdf7b3f044b5347262598c3c" - integrity sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ== +"@babel/plugin-proposal-optional-catch-binding@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" + integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz#fa83651e60a360e3f13797eef00b8d519695b603" - integrity sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ== +"@babel/plugin-proposal-optional-chaining@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz#f96949e9bacace3a9066323a5cf90cfb9de67174" + integrity sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz#37446495996b2945f30f5be5b60d5e2aa4f5792d" - integrity sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g== +"@babel/plugin-proposal-private-methods@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz#c2ca3a80beb7539289938da005ad525a038a819c" + integrity sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A== dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-proposal-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.5.tgz#9f65a4d0493a940b4c01f8aa9d3f1894a587f636" - integrity sha512-62EyfyA3WA0mZiF2e2IV9mc9Ghwxcg8YTu8BS4Wss4Y3PY725OmS9M0qLORbJwLqFtGh+jiE4wAmocK2CTUK2Q== +"@babel/plugin-proposal-private-property-in-object@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz#b02efb7f106d544667d91ae97405a9fd8c93952d" + integrity sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg== dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz#0f95ee0e757a5d647f378daa0eca7e93faa8bbe8" - integrity sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q== +"@babel/plugin-proposal-unicode-property-regex@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz#3dbd7a67bd7f94c8238b394da112d86aaf32ad4d" + integrity sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.10.4" @@ -619,6 +622,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-syntax-import-assertions@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz#58096a92b11b2e4e54b24c6a0cc0e5e607abcedd" + integrity sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" @@ -696,77 +706,85 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-typescript@^7.14.5", "@babel/plugin-syntax-typescript@^7.7.2": +"@babel/plugin-syntax-typescript@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz#b54fc3be6de734a56b87508f99d6428b5b605a7b" + integrity sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-syntax-typescript@^7.7.2": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz#b82c6ce471b165b5ce420cf92914d6fb46225716" integrity sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-arrow-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz#f7187d9588a768dd080bf4c9ffe117ea62f7862a" - integrity sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A== +"@babel/plugin-transform-arrow-functions@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz#dddd783b473b1b1537ef46423e3944ff24898c45" + integrity sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-async-to-generator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz#72c789084d8f2094acb945633943ef8443d39e67" - integrity sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA== +"@babel/plugin-transform-async-to-generator@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz#dbe5511e6b01eee1496c944e35cdfe3f58050832" + integrity sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ== dependencies: - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.14.5" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-remap-async-to-generator" "^7.16.8" -"@babel/plugin-transform-block-scoped-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz#e48641d999d4bc157a67ef336aeb54bc44fd3ad4" - integrity sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ== +"@babel/plugin-transform-block-scoped-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" + integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-block-scoping@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.5.tgz#8cc63e61e50f42e078e6f09be775a75f23ef9939" - integrity sha512-LBYm4ZocNgoCqyxMLoOnwpsmQ18HWTQvql64t3GvMUzLQrNoV1BDG0lNftC8QKYERkZgCCT/7J5xWGObGAyHDw== +"@babel/plugin-transform-block-scoping@^7.17.12": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz#7988627b3e9186a13e4d7735dc9c34a056613fb9" + integrity sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-classes@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.5.tgz#0e98e82097b38550b03b483f9b51a78de0acb2cf" - integrity sha512-J4VxKAMykM06K/64z9rwiL6xnBHgB1+FVspqvlgCdwD1KUbQNfszeKVVOMh59w3sztHYIZDgnhOC4WbdEfHFDA== +"@babel/plugin-transform-classes@^7.17.12": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.4.tgz#51310b812a090b846c784e47087fa6457baef814" + integrity sha512-e42NSG2mlKWgxKUAD9EJJSkZxR67+wZqzNxLSpc51T8tRU5SLFHsPmgYR5yr7sdgX4u+iHA1C5VafJ6AyImV3A== dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-optimise-call-expression" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.18.2" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-replace-supers" "^7.18.2" + "@babel/helper-split-export-declaration" "^7.16.7" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz#1b9d78987420d11223d41195461cc43b974b204f" - integrity sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg== +"@babel/plugin-transform-computed-properties@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz#bca616a83679698f3258e892ed422546e531387f" + integrity sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-destructuring@^7.14.7": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz#0ad58ed37e23e22084d109f185260835e5557576" - integrity sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw== +"@babel/plugin-transform-destructuring@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz#dc4f92587e291b4daa78aa20cc2d7a63aa11e858" + integrity sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-dotall-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz#2f6bf76e46bdf8043b4e7e16cf24532629ba0c7a" - integrity sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw== +"@babel/plugin-transform-dotall-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" + integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.10.4" @@ -776,240 +794,245 @@ "@babel/helper-create-regexp-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-duplicate-keys@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz#365a4844881bdf1501e3a9f0270e7f0f91177954" - integrity sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A== +"@babel/plugin-transform-duplicate-keys@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz#a09aa709a3310013f8e48e0e23bc7ace0f21477c" + integrity sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-exponentiation-operator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz#5154b8dd6a3dfe6d90923d61724bd3deeb90b493" - integrity sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA== +"@babel/plugin-transform-exponentiation-operator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" + integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-for-of@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.14.5.tgz#dae384613de8f77c196a8869cbf602a44f7fc0eb" - integrity sha512-CfmqxSUZzBl0rSjpoQSFoR9UEj3HzbGuGNL21/iFTmjb5gFggJp3ph0xR1YBhexmLoKRHzgxuFvty2xdSt6gTA== +"@babel/plugin-transform-for-of@^7.18.1": + version "7.18.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz#ed14b657e162b72afbbb2b4cdad277bf2bb32036" + integrity sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-function-name@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz#e81c65ecb900746d7f31802f6bed1f52d915d6f2" - integrity sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ== +"@babel/plugin-transform-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" + integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== dependencies: - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz#41d06c7ff5d4d09e3cf4587bd3ecf3930c730f78" - integrity sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A== +"@babel/plugin-transform-literals@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz#97131fbc6bbb261487105b4b3edbf9ebf9c830ae" + integrity sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-member-expression-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz#b39cd5212a2bf235a617d320ec2b48bcc091b8a7" - integrity sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q== +"@babel/plugin-transform-member-expression-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" + integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-modules-amd@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz#4fd9ce7e3411cb8b83848480b7041d83004858f7" - integrity sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g== +"@babel/plugin-transform-modules-amd@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz#7ef1002e67e36da3155edc8bf1ac9398064c02ed" + integrity sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA== dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.5.tgz#7aaee0ea98283de94da98b28f8c35701429dad97" - integrity sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A== +"@babel/plugin-transform-modules-commonjs@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz#1aa8efa2e2a6e818b6a7f2235fceaf09bdb31e9e" + integrity sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ== dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-simple-access" "^7.14.5" + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-simple-access" "^7.18.2" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.14.5.tgz#c75342ef8b30dcde4295d3401aae24e65638ed29" - integrity sha512-mNMQdvBEE5DcMQaL5LbzXFMANrQjd2W7FPzg34Y4yEz7dBgdaC+9B84dSO+/1Wba98zoDbInctCDo4JGxz1VYA== +"@babel/plugin-transform-modules-systemjs@^7.18.0": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.4.tgz#3d6fd9868c735cce8f38d6ae3a407fb7e61e6d46" + integrity sha512-lH2UaQaHVOAeYrUUuZ8i38o76J/FnO8vu21OE+tD1MyP9lxdZoSfz+pDbWkq46GogUrdrMz3tiz/FYGB+bVThg== dependencies: - "@babel/helper-hoist-variables" "^7.14.5" - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-identifier" "^7.14.5" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-validator-identifier" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz#fb662dfee697cce274a7cda525190a79096aa6e0" - integrity sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA== +"@babel/plugin-transform-modules-umd@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz#56aac64a2c2a1922341129a4597d1fd5c3ff020f" + integrity sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA== dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-named-capturing-groups-regex@^7.14.7": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.7.tgz#60c06892acf9df231e256c24464bfecb0908fd4e" - integrity sha512-DTNOTaS7TkW97xsDMrp7nycUVh6sn/eq22VaxWfEdzuEbRsiaOU0pqU7DlyUGHVsbQbSghvjKRpEl+nUCKGQSg== +"@babel/plugin-transform-named-capturing-groups-regex@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz#9c4a5a5966e0434d515f2675c227fd8cc8606931" + integrity sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-new-target@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz#31bdae8b925dc84076ebfcd2a9940143aed7dbf8" - integrity sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ== +"@babel/plugin-transform-new-target@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.17.12.tgz#10842cd605a620944e81ea6060e9e65c265742e3" + integrity sha512-CaOtzk2fDYisbjAD4Sd1MTKGVIpRtx9bWLyj24Y/k6p4s4gQ3CqDGJauFJxt8M/LEx003d0i3klVqnN73qvK3w== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-object-super@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz#d0b5faeac9e98597a161a9cf78c527ed934cdc45" - integrity sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg== +"@babel/plugin-transform-object-super@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" + integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" -"@babel/plugin-transform-parameters@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.5.tgz#49662e86a1f3ddccac6363a7dfb1ff0a158afeb3" - integrity sha512-Tl7LWdr6HUxTmzQtzuU14SqbgrSKmaR77M0OKyq4njZLQTPfOvzblNKyNkGwOfEFCEx7KeYHQHDI0P3F02IVkA== +"@babel/plugin-transform-parameters@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz#eb467cd9586ff5ff115a9880d6fdbd4a846b7766" + integrity sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-property-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz#0ddbaa1f83db3606f1cdf4846fa1dfb473458b34" - integrity sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw== +"@babel/plugin-transform-property-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" + integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-regenerator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz#9676fd5707ed28f522727c5b3c0aa8544440b04f" - integrity sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg== +"@babel/plugin-transform-regenerator@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz#44274d655eb3f1af3f3a574ba819d3f48caf99d5" + integrity sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw== dependencies: - regenerator-transform "^0.14.2" + "@babel/helper-plugin-utils" "^7.17.12" + regenerator-transform "^0.15.0" -"@babel/plugin-transform-reserved-words@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz#c44589b661cfdbef8d4300dcc7469dffa92f8304" - integrity sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg== +"@babel/plugin-transform-reserved-words@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz#7dbd349f3cdffba751e817cf40ca1386732f652f" + integrity sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-runtime@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.14.5.tgz#30491dad49c6059f8f8fa5ee8896a0089e987523" - integrity sha512-fPMBhh1AV8ZyneiCIA+wYYUH1arzlXR1UMcApjvchDhfKxhy2r2lReJv8uHEyihi4IFIGlr1Pdx7S5fkESDQsg== +"@babel/plugin-transform-runtime@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.2.tgz#04637de1e45ae8847ff14b9beead09c33d34374d" + integrity sha512-mr1ufuRMfS52ttq+1G1PD8OJNqgcTFjq3hwn8SZ5n1x1pBhi0E36rYMdTK0TsKtApJ4lDEdfXJwtGobQMHSMPg== dependencies: - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - babel-plugin-polyfill-corejs2 "^0.2.2" - babel-plugin-polyfill-corejs3 "^0.2.2" - babel-plugin-polyfill-regenerator "^0.2.2" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.5.0" + babel-plugin-polyfill-regenerator "^0.3.0" semver "^6.3.0" -"@babel/plugin-transform-shorthand-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz#97f13855f1409338d8cadcbaca670ad79e091a58" - integrity sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g== +"@babel/plugin-transform-shorthand-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" + integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-spread@^7.14.6": - version "7.14.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz#6bd40e57fe7de94aa904851963b5616652f73144" - integrity sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag== +"@babel/plugin-transform-spread@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz#c112cad3064299f03ea32afed1d659223935d1f5" + integrity sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" -"@babel/plugin-transform-sticky-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz#5b617542675e8b7761294381f3c28c633f40aeb9" - integrity sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A== +"@babel/plugin-transform-sticky-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" + integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-template-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz#a5f2bc233937d8453885dc736bdd8d9ffabf3d93" - integrity sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg== +"@babel/plugin-transform-template-literals@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz#31ed6915721864847c48b656281d0098ea1add28" + integrity sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-typeof-symbol@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz#39af2739e989a2bd291bf6b53f16981423d457d4" - integrity sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw== +"@babel/plugin-transform-typeof-symbol@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz#0f12f57ac35e98b35b4ed34829948d42bd0e6889" + integrity sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-typescript@^7.14.5": - version "7.14.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.14.6.tgz#6e9c2d98da2507ebe0a883b100cde3c7279df36c" - integrity sha512-XlTdBq7Awr4FYIzqhmYY80WN0V0azF74DMPyFqVHBvf81ZUgc4X7ZOpx6O8eLDK6iM5cCQzeyJw0ynTaefixRA== +"@babel/plugin-transform-typescript@^7.17.12": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.4.tgz#587eaf6a39edb8c06215e550dc939faeadd750bf" + integrity sha512-l4vHuSLUajptpHNEOUDEGsnpl9pfRLsN1XUoDQDD/YBuXTM+v37SHGS+c6n4jdcZy96QtuUuSvZYMLSSsjH8Mw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.6" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-typescript" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-typescript" "^7.17.12" -"@babel/plugin-transform-unicode-escapes@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz#9d4bd2a681e3c5d7acf4f57fa9e51175d91d0c6b" - integrity sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA== +"@babel/plugin-transform-unicode-escapes@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" + integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-unicode-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz#4cd09b6c8425dd81255c7ceb3fb1836e7414382e" - integrity sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw== +"@babel/plugin-transform-unicode-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" + integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/preset-env@^7.14.7": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.14.7.tgz#5c70b22d4c2d893b03d8c886a5c17422502b932a" - integrity sha512-itOGqCKLsSUl0Y+1nSfhbuuOlTs0MJk2Iv7iSH+XT/mR8U1zRLO7NjWlYXB47yhK4J/7j+HYty/EhFZDYKa/VA== +"@babel/preset-env@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.2.tgz#f47d3000a098617926e674c945d95a28cb90977a" + integrity sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q== dependencies: - "@babel/compat-data" "^7.14.7" - "@babel/helper-compilation-targets" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.14.5" - "@babel/plugin-proposal-async-generator-functions" "^7.14.7" - "@babel/plugin-proposal-class-properties" "^7.14.5" - "@babel/plugin-proposal-class-static-block" "^7.14.5" - "@babel/plugin-proposal-dynamic-import" "^7.14.5" - "@babel/plugin-proposal-export-namespace-from" "^7.14.5" - "@babel/plugin-proposal-json-strings" "^7.14.5" - "@babel/plugin-proposal-logical-assignment-operators" "^7.14.5" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.5" - "@babel/plugin-proposal-numeric-separator" "^7.14.5" - "@babel/plugin-proposal-object-rest-spread" "^7.14.7" - "@babel/plugin-proposal-optional-catch-binding" "^7.14.5" - "@babel/plugin-proposal-optional-chaining" "^7.14.5" - "@babel/plugin-proposal-private-methods" "^7.14.5" - "@babel/plugin-proposal-private-property-in-object" "^7.14.5" - "@babel/plugin-proposal-unicode-property-regex" "^7.14.5" + "@babel/compat-data" "^7.17.10" + "@babel/helper-compilation-targets" "^7.18.2" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.17.12" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.17.12" + "@babel/plugin-proposal-async-generator-functions" "^7.17.12" + "@babel/plugin-proposal-class-properties" "^7.17.12" + "@babel/plugin-proposal-class-static-block" "^7.18.0" + "@babel/plugin-proposal-dynamic-import" "^7.16.7" + "@babel/plugin-proposal-export-namespace-from" "^7.17.12" + "@babel/plugin-proposal-json-strings" "^7.17.12" + "@babel/plugin-proposal-logical-assignment-operators" "^7.17.12" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.17.12" + "@babel/plugin-proposal-numeric-separator" "^7.16.7" + "@babel/plugin-proposal-object-rest-spread" "^7.18.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" + "@babel/plugin-proposal-optional-chaining" "^7.17.12" + "@babel/plugin-proposal-private-methods" "^7.17.12" + "@babel/plugin-proposal-private-property-in-object" "^7.17.12" + "@babel/plugin-proposal-unicode-property-regex" "^7.17.12" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.17.12" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" @@ -1019,50 +1042,50 @@ "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.14.5" - "@babel/plugin-transform-async-to-generator" "^7.14.5" - "@babel/plugin-transform-block-scoped-functions" "^7.14.5" - "@babel/plugin-transform-block-scoping" "^7.14.5" - "@babel/plugin-transform-classes" "^7.14.5" - "@babel/plugin-transform-computed-properties" "^7.14.5" - "@babel/plugin-transform-destructuring" "^7.14.7" - "@babel/plugin-transform-dotall-regex" "^7.14.5" - "@babel/plugin-transform-duplicate-keys" "^7.14.5" - "@babel/plugin-transform-exponentiation-operator" "^7.14.5" - "@babel/plugin-transform-for-of" "^7.14.5" - "@babel/plugin-transform-function-name" "^7.14.5" - "@babel/plugin-transform-literals" "^7.14.5" - "@babel/plugin-transform-member-expression-literals" "^7.14.5" - "@babel/plugin-transform-modules-amd" "^7.14.5" - "@babel/plugin-transform-modules-commonjs" "^7.14.5" - "@babel/plugin-transform-modules-systemjs" "^7.14.5" - "@babel/plugin-transform-modules-umd" "^7.14.5" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.14.7" - "@babel/plugin-transform-new-target" "^7.14.5" - "@babel/plugin-transform-object-super" "^7.14.5" - "@babel/plugin-transform-parameters" "^7.14.5" - "@babel/plugin-transform-property-literals" "^7.14.5" - "@babel/plugin-transform-regenerator" "^7.14.5" - "@babel/plugin-transform-reserved-words" "^7.14.5" - "@babel/plugin-transform-shorthand-properties" "^7.14.5" - "@babel/plugin-transform-spread" "^7.14.6" - "@babel/plugin-transform-sticky-regex" "^7.14.5" - "@babel/plugin-transform-template-literals" "^7.14.5" - "@babel/plugin-transform-typeof-symbol" "^7.14.5" - "@babel/plugin-transform-unicode-escapes" "^7.14.5" - "@babel/plugin-transform-unicode-regex" "^7.14.5" - "@babel/preset-modules" "^0.1.4" - "@babel/types" "^7.14.5" - babel-plugin-polyfill-corejs2 "^0.2.2" - babel-plugin-polyfill-corejs3 "^0.2.2" - babel-plugin-polyfill-regenerator "^0.2.2" - core-js-compat "^3.15.0" + "@babel/plugin-transform-arrow-functions" "^7.17.12" + "@babel/plugin-transform-async-to-generator" "^7.17.12" + "@babel/plugin-transform-block-scoped-functions" "^7.16.7" + "@babel/plugin-transform-block-scoping" "^7.17.12" + "@babel/plugin-transform-classes" "^7.17.12" + "@babel/plugin-transform-computed-properties" "^7.17.12" + "@babel/plugin-transform-destructuring" "^7.18.0" + "@babel/plugin-transform-dotall-regex" "^7.16.7" + "@babel/plugin-transform-duplicate-keys" "^7.17.12" + "@babel/plugin-transform-exponentiation-operator" "^7.16.7" + "@babel/plugin-transform-for-of" "^7.18.1" + "@babel/plugin-transform-function-name" "^7.16.7" + "@babel/plugin-transform-literals" "^7.17.12" + "@babel/plugin-transform-member-expression-literals" "^7.16.7" + "@babel/plugin-transform-modules-amd" "^7.18.0" + "@babel/plugin-transform-modules-commonjs" "^7.18.2" + "@babel/plugin-transform-modules-systemjs" "^7.18.0" + "@babel/plugin-transform-modules-umd" "^7.18.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.12" + "@babel/plugin-transform-new-target" "^7.17.12" + "@babel/plugin-transform-object-super" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.17.12" + "@babel/plugin-transform-property-literals" "^7.16.7" + "@babel/plugin-transform-regenerator" "^7.18.0" + "@babel/plugin-transform-reserved-words" "^7.17.12" + "@babel/plugin-transform-shorthand-properties" "^7.16.7" + "@babel/plugin-transform-spread" "^7.17.12" + "@babel/plugin-transform-sticky-regex" "^7.16.7" + "@babel/plugin-transform-template-literals" "^7.18.2" + "@babel/plugin-transform-typeof-symbol" "^7.17.12" + "@babel/plugin-transform-unicode-escapes" "^7.16.7" + "@babel/plugin-transform-unicode-regex" "^7.16.7" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.18.2" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.5.0" + babel-plugin-polyfill-regenerator "^0.3.0" + core-js-compat "^3.22.1" semver "^6.3.0" -"@babel/preset-modules@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" - integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== +"@babel/preset-modules@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" @@ -1070,14 +1093,14 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-typescript@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.14.5.tgz#aa98de119cf9852b79511f19e7f44a2d379bcce0" - integrity sha512-u4zO6CdbRKbS9TypMqrlGH7sd2TAJppZwn3c/ZRLeO/wGsbddxgbPDUZVNrie3JWYLQ9vpineKlsrWFvO6Pwkw== +"@babel/preset-typescript@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.17.12.tgz#40269e0a0084d56fc5731b6c40febe1c9a4a3e8c" + integrity sha512-S1ViF8W2QwAKUGJXxP9NAfNaqGDdEBJKpYkxHf5Yy2C4NPPzXGeR3Lhk7G8xJaaLcFTRfNjVbtbVtm8Gb0mqvg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-transform-typescript" "^7.14.5" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-transform-typescript" "^7.17.12" "@babel/runtime-corejs3@^7.10.2": version "7.11.2" @@ -1101,14 +1124,12 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.10.4", "@babel/template@^7.3.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" - integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== +"@babel/runtime@^7.18.2": + version "7.18.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.3.tgz#c7b654b57f6f63cf7f8b418ac9ca04408c4579f4" + integrity sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug== dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/parser" "^7.10.4" - "@babel/types" "^7.10.4" + regenerator-runtime "^0.13.4" "@babel/template@^7.14.5": version "7.14.5" @@ -1119,22 +1140,25 @@ "@babel/parser" "^7.14.5" "@babel/types" "^7.14.5" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.11.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.5.tgz#be777b93b518eb6d76ee2e1ea1d143daa11e61c3" - integrity sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ== +"@babel/template@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" + integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/template@^7.3.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" + integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== dependencies: "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.5" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/parser" "^7.11.5" - "@babel/types" "^7.11.5" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" -"@babel/traverse@^7.13.0", "@babel/traverse@^7.14.5", "@babel/traverse@^7.7.2": +"@babel/traverse@^7.13.0", "@babel/traverse@^7.7.2": version "7.14.7" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.7.tgz#64007c9774cfdc3abd23b0780bc18a3ce3631753" integrity sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ== @@ -1149,7 +1173,23 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.11.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.2.tgz#b77a52604b5cc836a9e1e08dca01cba67a12d2e8" + integrity sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.18.2" + "@babel/helper-environment-visitor" "^7.18.2" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.18.0" + "@babel/types" "^7.18.2" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.11.5" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.5.tgz#d9de577d01252d77c6800cee039ee64faf75662d" integrity sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q== @@ -1166,6 +1206,14 @@ "@babel/helper-validator-identifier" "^7.14.5" to-fast-properties "^2.0.0" +"@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.18.0", "@babel/types@^7.18.2": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354" + integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -1187,49 +1235,10 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" -"@hapi/address@2.x.x": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" - integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== - -"@hapi/bourne@1.x.x": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" - integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== - -"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": - version "8.5.1" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" - integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== - -"@hapi/hoek@^9.0.0": - version "9.1.1" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.1.1.tgz#9daf5745156fd84b8e9889a2dc721f0c58e894aa" - integrity sha512-CAEbWH7OIur6jEOzaai83jq3FmKmv4PmX1JYfs9IrYcGEVI/lyL1EXJGCj7eFVJ0bg5QR8LMxBlEtA+xKiLpFw== - -"@hapi/joi@^15.0.3": - version "15.1.1" - resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" - integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== - dependencies: - "@hapi/address" "2.x.x" - "@hapi/bourne" "1.x.x" - "@hapi/hoek" "8.x.x" - "@hapi/topo" "3.x.x" - -"@hapi/topo@3.x.x": - version "3.1.6" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" - integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== - dependencies: - "@hapi/hoek" "^8.3.0" - -"@hapi/topo@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.0.0.tgz#c19af8577fa393a06e9c77b60995af959be721e7" - integrity sha512-tFJlT47db0kMqVm3H4nQYgn6Pwg10GTZHb1pwmSiv1K4ks6drQOtfEF5ZnPjkvC+y4/bUPHK+bc87QvLcL+WMw== - dependencies: - "@hapi/hoek" "^9.0.0" +"@gar/promisify@^1.0.1": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" @@ -1247,163 +1256,186 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/console@^27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.0.6.tgz#3eb72ea80897495c3d73dd97aab7f26770e2260f" - integrity sha512-fMlIBocSHPZ3JxgWiDNW/KPj6s+YRd0hicb33IrmelCcjXo/pXPwvuiKFmZz+XuqI/1u7nbUK10zSsWL/1aegg== +"@jest/console@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.1.tgz#305f8ca50b6e70413839f54c0e002b60a0f2fd7d" + integrity sha512-0RiUocPVFEm3WRMOStIHbRWllG6iW6E3/gUPnf4lkrVFyXIIDeCe+vlKeYyFOMhB2EPE6FLFCNADSOOQMaqvyA== dependencies: - "@jest/types" "^27.0.6" + "@jest/types" "^28.1.1" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^27.0.6" - jest-util "^27.0.6" + jest-message-util "^28.1.1" + jest-util "^28.1.1" slash "^3.0.0" -"@jest/core@^27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.0.6.tgz#c5f642727a0b3bf0f37c4b46c675372d0978d4a1" - integrity sha512-SsYBm3yhqOn5ZLJCtccaBcvD/ccTLCeuDv8U41WJH/V1MW5eKUkeMHT9U+Pw/v1m1AIWlnIW/eM2XzQr0rEmow== +"@jest/core@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.1.1.tgz#086830bec6267accf9af5ca76f794858e9f9f092" + integrity sha512-3pYsBoZZ42tXMdlcFeCc/0j9kOlK7MYuXs2B1QbvDgMoW1K9NJ4G/VYvIbMb26iqlkTfPHo7SC2JgjDOk/mxXw== dependencies: - "@jest/console" "^27.0.6" - "@jest/reporters" "^27.0.6" - "@jest/test-result" "^27.0.6" - "@jest/transform" "^27.0.6" - "@jest/types" "^27.0.6" + "@jest/console" "^28.1.1" + "@jest/reporters" "^28.1.1" + "@jest/test-result" "^28.1.1" + "@jest/transform" "^28.1.1" + "@jest/types" "^28.1.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - emittery "^0.8.1" + ci-info "^3.2.0" exit "^0.1.2" - graceful-fs "^4.2.4" - jest-changed-files "^27.0.6" - jest-config "^27.0.6" - jest-haste-map "^27.0.6" - jest-message-util "^27.0.6" - jest-regex-util "^27.0.6" - jest-resolve "^27.0.6" - jest-resolve-dependencies "^27.0.6" - jest-runner "^27.0.6" - jest-runtime "^27.0.6" - jest-snapshot "^27.0.6" - jest-util "^27.0.6" - jest-validate "^27.0.6" - jest-watcher "^27.0.6" + graceful-fs "^4.2.9" + jest-changed-files "^28.0.2" + jest-config "^28.1.1" + jest-haste-map "^28.1.1" + jest-message-util "^28.1.1" + jest-regex-util "^28.0.2" + jest-resolve "^28.1.1" + jest-resolve-dependencies "^28.1.1" + jest-runner "^28.1.1" + jest-runtime "^28.1.1" + jest-snapshot "^28.1.1" + jest-util "^28.1.1" + jest-validate "^28.1.1" + jest-watcher "^28.1.1" micromatch "^4.0.4" - p-each-series "^2.1.0" + pretty-format "^28.1.1" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.0.6.tgz#ee293fe996db01d7d663b8108fa0e1ff436219d2" - integrity sha512-4XywtdhwZwCpPJ/qfAkqExRsERW+UaoSRStSHCCiQTUpoYdLukj+YJbQSFrZjhlUDRZeNiU9SFH0u7iNimdiIg== +"@jest/environment@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.1.tgz#c4cbf85283278d768f816ebd1a258ea6f9e39d4f" + integrity sha512-9auVQ2GzQ7nrU+lAr8KyY838YahElTX9HVjbQPPS2XjlxQ+na18G113OoBhyBGBtD6ZnO/SrUy5WR8EzOj1/Uw== dependencies: - "@jest/fake-timers" "^27.0.6" - "@jest/types" "^27.0.6" + "@jest/fake-timers" "^28.1.1" + "@jest/types" "^28.1.1" "@types/node" "*" - jest-mock "^27.0.6" + jest-mock "^28.1.1" -"@jest/fake-timers@^27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.0.6.tgz#cbad52f3fe6abe30e7acb8cd5fa3466b9588e3df" - integrity sha512-sqd+xTWtZ94l3yWDKnRTdvTeZ+A/V7SSKrxsrOKSqdyddb9CeNRF8fbhAU0D7ZJBpTTW2nbp6MftmKJDZfW2LQ== +"@jest/expect-utils@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.1.tgz#d84c346025b9f6f3886d02c48a6177e2b0360587" + integrity sha512-n/ghlvdhCdMI/hTcnn4qV57kQuV9OTsZzH1TTCVARANKhl6hXJqLKUkwX69ftMGpsbpt96SsDD8n8LD2d9+FRw== dependencies: - "@jest/types" "^27.0.6" - "@sinonjs/fake-timers" "^7.0.2" + jest-get-type "^28.0.2" + +"@jest/expect@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.1.1.tgz#ea4fcc8504b45835029221c0dc357c622a761326" + integrity sha512-/+tQprrFoT6lfkMj4mW/mUIfAmmk/+iQPmg7mLDIFOf2lyf7EBHaS+x3RbeR0VZVMe55IvX7QRoT/2aK3AuUXg== + dependencies: + expect "^28.1.1" + jest-snapshot "^28.1.1" + +"@jest/fake-timers@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.1.tgz#47ce33296ab9d680c76076d51ddbe65ceb3337f1" + integrity sha512-BY/3+TyLs5+q87rGWrGUY5f8e8uC3LsVHS9Diz8+FV3ARXL4sNnkLlIB8dvDvRrp+LUCGM+DLqlsYubizGUjIA== + dependencies: + "@jest/types" "^28.1.1" + "@sinonjs/fake-timers" "^9.1.1" "@types/node" "*" - jest-message-util "^27.0.6" - jest-mock "^27.0.6" - jest-util "^27.0.6" + jest-message-util "^28.1.1" + jest-mock "^28.1.1" + jest-util "^28.1.1" -"@jest/globals@^27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.0.6.tgz#48e3903f99a4650673d8657334d13c9caf0e8f82" - integrity sha512-DdTGCP606rh9bjkdQ7VvChV18iS7q0IMJVP1piwTWyWskol4iqcVwthZmoJEf7obE1nc34OpIyoVGPeqLC+ryw== +"@jest/globals@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.1.1.tgz#c0a7977f85e26279cc090d9adcdf82b8a34c4061" + integrity sha512-dEgl/6v7ToB4vXItdvcltJBgny0xBE6xy6IYQrPJAJggdEinGxCDMivNv7sFzPcTITGquXD6UJwYxfJ/5ZwDSg== dependencies: - "@jest/environment" "^27.0.6" - "@jest/types" "^27.0.6" - expect "^27.0.6" + "@jest/environment" "^28.1.1" + "@jest/expect" "^28.1.1" + "@jest/types" "^28.1.1" -"@jest/reporters@^27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.0.6.tgz#91e7f2d98c002ad5df94d5b5167c1eb0b9fd5b00" - integrity sha512-TIkBt09Cb2gptji3yJXb3EE+eVltW6BjO7frO7NEfjI9vSIYoISi5R3aI3KpEDXlB1xwB+97NXIqz84qYeYsfA== +"@jest/reporters@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.1.1.tgz#9389f4bb3cce4d9b586f6195f83c79cd2a1c8662" + integrity sha512-597Zj4D4d88sZrzM4atEGLuO7SdA/YrOv9SRXHXRNC+/FwPCWxZhBAEzhXoiJzfRwn8zes/EjS8Lo6DouGN5Gg== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.0.6" - "@jest/test-result" "^27.0.6" - "@jest/transform" "^27.0.6" - "@jest/types" "^27.0.6" + "@jest/console" "^28.1.1" + "@jest/test-result" "^28.1.1" + "@jest/transform" "^28.1.1" + "@jest/types" "^28.1.1" + "@jridgewell/trace-mapping" "^0.3.7" + "@types/node" "*" chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.2.4" + glob "^7.1.3" + graceful-fs "^4.2.9" istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.3" + istanbul-lib-instrument "^5.1.0" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - jest-haste-map "^27.0.6" - jest-resolve "^27.0.6" - jest-util "^27.0.6" - jest-worker "^27.0.6" + istanbul-reports "^3.1.3" + jest-message-util "^28.1.1" + jest-util "^28.1.1" + jest-worker "^28.1.1" slash "^3.0.0" - source-map "^0.6.0" string-length "^4.0.1" + strip-ansi "^6.0.0" terminal-link "^2.0.0" - v8-to-istanbul "^8.0.0" + v8-to-istanbul "^9.0.0" -"@jest/source-map@^27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.0.6.tgz#be9e9b93565d49b0548b86e232092491fb60551f" - integrity sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g== +"@jest/schemas@^28.0.2": + version "28.0.2" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.0.2.tgz#08c30df6a8d07eafea0aef9fb222c5e26d72e613" + integrity sha512-YVDJZjd4izeTDkij00vHHAymNXQ6WWsdChFRK86qck6Jpr3DCL5W3Is3vslviRlP+bLuMYRLbdp98amMvqudhA== dependencies: + "@sinclair/typebox" "^0.23.3" + +"@jest/source-map@^28.0.2": + version "28.0.2" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-28.0.2.tgz#914546f4410b67b1d42c262a1da7e0406b52dc90" + integrity sha512-Y9dxC8ZpN3kImkk0LkK5XCEneYMAXlZ8m5bflmSL5vrwyeUpJfentacCUg6fOb8NOpOO7hz2+l37MV77T6BFPw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.7" callsites "^3.0.0" - graceful-fs "^4.2.4" - source-map "^0.6.0" + graceful-fs "^4.2.9" -"@jest/test-result@^27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.0.6.tgz#3fa42015a14e4fdede6acd042ce98c7f36627051" - integrity sha512-ja/pBOMTufjX4JLEauLxE3LQBPaI2YjGFtXexRAjt1I/MbfNlMx0sytSX3tn5hSLzQsR3Qy2rd0hc1BWojtj9w== +"@jest/test-result@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.1.tgz#c6f18d1bbb01aa88925dd687872a75f8414b317a" + integrity sha512-hPmkugBktqL6rRzwWAtp1JtYT4VHwv8OQ+9lE5Gymj6dHzubI/oJHMUpPOt8NrdVWSrz9S7bHjJUmv2ggFoUNQ== dependencies: - "@jest/console" "^27.0.6" - "@jest/types" "^27.0.6" + "@jest/console" "^28.1.1" + "@jest/types" "^28.1.1" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.0.6.tgz#80a913ed7a1130545b1cd777ff2735dd3af5d34b" - integrity sha512-bISzNIApazYOlTHDum9PwW22NOyDa6VI31n6JucpjTVM0jD6JDgqEZ9+yn575nDdPF0+4csYDxNNW13NvFQGZA== +"@jest/test-sequencer@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.1.1.tgz#f594ee2331df75000afe0d1ae3237630ecec732e" + integrity sha512-nuL+dNSVMcWB7OOtgb0EGH5AjO4UBCt68SLP08rwmC+iRhyuJWS9MtZ/MpipxFwKAlHFftbMsydXqWre8B0+XA== dependencies: - "@jest/test-result" "^27.0.6" - graceful-fs "^4.2.4" - jest-haste-map "^27.0.6" - jest-runtime "^27.0.6" + "@jest/test-result" "^28.1.1" + graceful-fs "^4.2.9" + jest-haste-map "^28.1.1" + slash "^3.0.0" -"@jest/transform@^27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.0.6.tgz#189ad7107413208f7600f4719f81dd2f7278cc95" - integrity sha512-rj5Dw+mtIcntAUnMlW/Vju5mr73u8yg+irnHwzgtgoeI6cCPOvUwQ0D1uQtc/APmWgvRweEb1g05pkUpxH3iCA== +"@jest/transform@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.1.tgz#83541f2a3f612077c8501f49cc4e205d4e4a6b27" + integrity sha512-PkfaTUuvjUarl1EDr5ZQcCA++oXkFCP9QFUkG0yVKVmNObjhrqDy0kbMpMebfHWm3CCDHjYNem9eUSH8suVNHQ== dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^27.0.6" - babel-plugin-istanbul "^6.0.0" + "@babel/core" "^7.11.6" + "@jest/types" "^28.1.1" + "@jridgewell/trace-mapping" "^0.3.7" + babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.4" - jest-haste-map "^27.0.6" - jest-regex-util "^27.0.6" - jest-util "^27.0.6" + graceful-fs "^4.2.9" + jest-haste-map "^28.1.1" + jest-regex-util "^28.0.2" + jest-util "^28.1.1" micromatch "^4.0.4" - pirates "^4.0.1" + pirates "^4.0.4" slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" + write-file-atomic "^4.0.1" "@jest/types@^26.3.0": version "26.3.0" @@ -1427,17 +1459,58 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" -"@jest/types@^27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.0.6.tgz#9a992bc517e0c49f035938b8549719c2de40706b" - integrity sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g== +"@jest/types@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.1.tgz#d059bbc80e6da6eda9f081f293299348bd78ee0b" + integrity sha512-vRXVqSg1VhDnB8bWcmvLzmg0Bt9CRKVgHPXqYwvWMX3TvAjeO+nRuK6+VdTKCtWOvYlmkF/HqNAL/z+N3B53Kw== dependencies: + "@jest/schemas" "^28.0.2" "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" - "@types/yargs" "^16.0.0" + "@types/yargs" "^17.0.8" chalk "^4.0.0" +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" + integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" + integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== + +"@jridgewell/set-array@^1.0.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea" + integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.13" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" + integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== + +"@jridgewell/trace-mapping@^0.3.7", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" + integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@mapbox/node-pre-gyp@^1.0.0": version "1.0.5" resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.5.tgz#2a0b32fcb416fb3f2250fd24cb2a81421a4f5950" @@ -1453,6 +1526,11 @@ semver "^7.3.4" tar "^6.1.0" +"@mdn/browser-compat-data@^4.1.16": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@mdn/browser-compat-data/-/browser-compat-data-4.2.1.tgz#1fead437f3957ceebe2e8c3f46beccdb9bc575b8" + integrity sha512-EWUguj2kd7ldmrF9F+vI5hUOralPd+sdsUnYbRy33vZTuZkduC1shE9TtEMEjAQwyfyMb4ole5KtjF8MsnQOlA== + "@nodelib/fs.scandir@2.1.3": version "2.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" @@ -1474,18 +1552,49 @@ "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" -"@rollup/plugin-babel@^5.3.0": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz#9cb1c5146ddd6a4968ad96f209c50c62f92f9879" - integrity sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw== +"@npmcli/fs@^1.0.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" + integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== + dependencies: + "@gar/promisify" "^1.0.1" + semver "^7.3.5" + +"@npmcli/move-file@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" + integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + +"@playwright/test@^1.22.2": + version "1.22.2" + resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.22.2.tgz#b848f25f8918140c2d0bae8e9227a40198f2dd4a" + integrity sha512-cCl96BEBGPtptFz7C2FOSN3PrTnJ3rPpENe+gYCMx4GNNDlN4tmo2D89y13feGKTMMAIVrXfSQ/UmaQKLy1XLA== + dependencies: + "@types/node" "*" + playwright-core "1.22.2" + +"@rollup/plugin-alias@^3.1.9": + version "3.1.9" + resolved "https://registry.yarnpkg.com/@rollup/plugin-alias/-/plugin-alias-3.1.9.tgz#a5d267548fe48441f34be8323fb64d1d4a1b3fdf" + integrity sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw== + dependencies: + slash "^3.0.0" + +"@rollup/plugin-babel@^5.3.1": + version "5.3.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" + integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== dependencies: "@babel/helper-module-imports" "^7.10.4" "@rollup/pluginutils" "^3.1.0" -"@rollup/plugin-commonjs@^17.0.0": - version "17.0.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-17.0.0.tgz#2ae2228354cf0fbba6cf9f06f30b2c66a974324c" - integrity sha512-/omBIJG1nHQc+bgkYDuLpb/V08QyutP9amOrJRUSlYJZP+b/68gM//D8sxJe3Yry2QnYIr3QjR3x4AlxJEN3GA== +"@rollup/plugin-commonjs@^22.0.0": + version "22.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-22.0.0.tgz#f4d87016e2fbf187a593ab9f46626fe05b59e8bd" + integrity sha512-Ktvf2j+bAO+30awhbYoCaXpBcyPmJbaEUYClQns/+6SNCYFURbvBiNbWgHITEsIgDDWCDUclWRKEuf8cwZCFoQ== dependencies: "@rollup/pluginutils" "^3.1.0" commondir "^1.0.1" @@ -1500,36 +1609,19 @@ resolved "https://registry.yarnpkg.com/@rollup/plugin-html/-/plugin-html-0.2.0.tgz#a01068e3e0e089a65f44c1b1988b8acd236f36e9" integrity sha512-aT73feaTUmJIQ45K61+5pL9GE5IYgHi0SvQ+yhQfPG1HoDlPnIjk3af9IA/DxJ+8ZlWDWFcN3pik0VavWF88hw== -"@rollup/plugin-inject@^4.0.2": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-inject/-/plugin-inject-4.0.2.tgz#55b21bb244a07675f7fdde577db929c82fc17395" - integrity sha512-TSLMA8waJ7Dmgmoc8JfPnwUwVZgLjjIAM6MqeIFqPO2ODK36JqE0Cf2F54UTgCUuW8da93Mvoj75a6KAVWgylw== - dependencies: - "@rollup/pluginutils" "^3.0.4" - estree-walker "^1.0.1" - magic-string "^0.25.5" - -"@rollup/plugin-node-resolve@^11.0.1": - version "11.0.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.0.1.tgz#d3765eec4bccf960801439a999382aed2dca959b" - integrity sha512-ltlsj/4Bhwwhb+Nb5xCz/6vieuEj2/BAkkqVIKmZwC7pIdl8srmgmglE4S0jFlZa32K4qvdQ6NHdmpRKD/LwoQ== +"@rollup/plugin-node-resolve@^13.3.0": + version "13.3.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz#da1c5c5ce8316cef96a2f823d111c1e4e498801c" + integrity sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw== dependencies: "@rollup/pluginutils" "^3.1.0" "@types/resolve" "1.17.1" - builtin-modules "^3.1.0" deepmerge "^4.2.2" + is-builtin-module "^3.1.0" is-module "^1.0.0" resolve "^1.19.0" -"@rollup/plugin-typescript@^5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-5.0.2.tgz#e879b73354851868b805bbd43f15c229123b8a71" - integrity sha512-CkS028Itwjqm1uLbFVfpJgtVtnNvZ+og/m6UlNRR5wOOnNTWPcVQzOu5xGdEX+WWJxdvWIqUq2uR/RBt2ZipWg== - dependencies: - "@rollup/pluginutils" "^3.0.1" - resolve "^1.14.1" - -"@rollup/pluginutils@^3.0.1", "@rollup/pluginutils@^3.0.4", "@rollup/pluginutils@^3.1.0": +"@rollup/pluginutils@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== @@ -1538,22 +1630,18 @@ estree-walker "^1.0.1" picomatch "^2.2.2" -"@sideway/address@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.0.tgz#0b301ada10ac4e0e3fa525c90615e0b61a72b78d" - integrity sha512-wAH/JYRXeIFQRsxerIuLjgUu2Xszam+O5xKeatJ4oudShOOirfmsQ1D6LL54XOU2tizpCYku+s1wmU0SYdpoSA== +"@rollup/pluginutils@^4.1.1", "@rollup/pluginutils@^4.2.1": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" + integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== dependencies: - "@hapi/hoek" "^9.0.0" + estree-walker "^2.0.1" + picomatch "^2.2.2" -"@sideway/formula@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.0.tgz#fe158aee32e6bd5de85044be615bc08478a0a13c" - integrity sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg== - -"@sideway/pinpoint@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" - integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== +"@sinclair/typebox@^0.23.3": + version "0.23.5" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.23.5.tgz#93f7b9f4e3285a7a9ade7557d9a8d36809cbc47d" + integrity sha512-AFBVi/iT4g20DHoujvMH1aEDn8fGJh4xsRGCP6d8RpLPMqsNPvW01Jcn0QysXTsg++/xj25NmJsGyH9xug/wKg== "@sinonjs/commons@^1.7.0": version "1.8.1" @@ -1562,10 +1650,10 @@ dependencies: type-detect "4.0.8" -"@sinonjs/fake-timers@^7.0.2": - version "7.1.2" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz#2524eae70c4910edccf99b2f4e6efc5894aff7b5" - integrity sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg== +"@sinonjs/fake-timers@^9.1.1": + version "9.1.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" + integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw== dependencies: "@sinonjs/commons" "^1.7.0" @@ -1593,17 +1681,6 @@ resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.0.tgz#14264692a9d6e2fa4db3df5e56e94b5e25647ac0" integrity sha512-iIgQNzCm0v7QMhhe4Jjn9uRh+I6GoPmt03CbEtwx3ao8/EfoQcmgtqH4vQ5Db/lxiIGaWDv6nwvunuh0RyX0+A== -"@types/babel__core@^7.0.0": - version "7.1.9" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.9.tgz#77e59d438522a6fb898fa43dc3455c6e72f3963d" - integrity sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - "@types/babel__core@^7.1.14": version "7.1.15" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.15.tgz#2ccfb1ad55a02c83f8e0ad327cbc332f55eb1024" @@ -1637,13 +1714,6 @@ dependencies: "@babel/types" "^7.3.0" -"@types/babel__traverse@^7.0.4": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.11.0.tgz#b9a1efa635201ba9bc850323a8793ee2d36c04a0" - integrity sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg== - dependencies: - "@babel/types" "^7.3.0" - "@types/color-name@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" @@ -1679,10 +1749,10 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/graceful-fs@^4.1.2": - version "4.1.3" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f" - integrity sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ== +"@types/graceful-fs@^4.1.3": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== dependencies: "@types/node" "*" @@ -1733,11 +1803,31 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== +"@types/minimist@^1.2.0": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" + integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== + "@types/node@*": version "14.6.4" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.4.tgz#a145cc0bb14ef9c4777361b7bbafa5cf8e3acb5a" integrity sha512-Wk7nG1JSaMfMpoMJDKUsWYugliB2Vy55pdjLpmLixeyMi7HizW2I/9QoxsPCkXl3dO+ZOVqPumKaDUv5zJu2uQ== +"@types/node@^17.0.36": + version "17.0.39" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.39.tgz#3652d82e2a16b4ea679d5ea3143b816c91b7e113" + integrity sha512-JDU3YLlnPK3WDao6/DlXLOgSNpG13ct+CwIO17V8q0/9fWJyeMJJ/VyZ1lv8kDprihvZMydzVwf0tQOqGiY2Nw== + +"@types/normalize-package-data@^2.4.0": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" + integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== + +"@types/object-path@^0.11.1": + version "0.11.1" + resolved "https://registry.yarnpkg.com/@types/object-path/-/object-path-0.11.1.tgz#eea5b357518597fc9c0a067ea3147f599fc1514f" + integrity sha512-219LSCO9HPcoXcRTC6DbCs0FRhZgBnEMzf16RRqkT40WbkKx3mOeQuz3e2XqbfhOz/AHfbru0kzB1n1RCAsIIg== + "@types/parse-json@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" @@ -1760,15 +1850,20 @@ dependencies: "@types/node" "*" +"@types/semver@^7.3.9": + version "7.3.9" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.9.tgz#152c6c20a7688c30b967ec1841d31ace569863fc" + integrity sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ== + "@types/stack-utils@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== -"@types/wait-on@^5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@types/wait-on/-/wait-on-5.2.0.tgz#f9096b7bd0c9c03052d6d402ae5cd51714480b2d" - integrity sha512-3+jsMyPm8aot1mqDUDLOl+dejPvpysUUoUXD6CCRY20MNNhcjEfvdcBnGdnk7DEYs9Hr16ubGJA/9/QW0Df/9g== +"@types/ua-parser-js@^0.7.36": + version "0.7.36" + resolved "https://registry.yarnpkg.com/@types/ua-parser-js/-/ua-parser-js-0.7.36.tgz#9bd0b47f26b5a3151be21ba4ce9f5fa457c5f190" + integrity sha512-N1rW+njavs70y2cApeIw1vLMYXRwfBy+7trgavGuuTfOd7j1Yh7QTRc/yqsPl6ncokt72ZXuxEU0PiCp9bSwNQ== "@types/yargs-parser@*": version "15.0.0" @@ -1782,20 +1877,13 @@ dependencies: "@types/yargs-parser" "*" -"@types/yargs@^16.0.0": - version "16.0.4" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" - integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== +"@types/yargs@^17.0.8": + version "17.0.10" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.10.tgz#591522fce85d8739bca7b8bb90d048e4478d186a" + integrity sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA== dependencies: "@types/yargs-parser" "*" -"@types/yauzl@^2.9.1": - version "2.9.1" - resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.1.tgz#d10f69f9f522eef3cf98e30afb684a1e1ec923af" - integrity sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA== - dependencies: - "@types/node" "*" - "@typescript-eslint/eslint-plugin@^3.7.0": version "3.10.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.10.1.tgz#7e061338a1383f59edc204c605899f93dc2e2c8f" @@ -1902,64 +1990,42 @@ "@typescript-eslint/types" "4.28.3" eslint-visitor-keys "^2.0.0" -abab@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.4.tgz#6dfa57b417ca06d21b2478f0e638302f99c2405c" - integrity sha512-Eu9ELJWCz/c1e9gTiCY+FceWxcqzjYEbqMgtndnuSqZSUCOL73TWNK2mHfIj4Cw2E/ongOp+JISVNCmovt2KYQ== - -abab@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" - integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== +"@wessberg/stringutil@^1.0.19": + version "1.0.19" + resolved "https://registry.yarnpkg.com/@wessberg/stringutil/-/stringutil-1.0.19.tgz#baadcb6f4471fe2d46462a7d7a8294e4b45b29ad" + integrity sha512-9AZHVXWlpN8Cn9k5BC/O0Dzb9E9xfEMXzYrNunwvkUTvuK7xgQPVRZpLo+jWCOZ5r8oBa8NIrHuPEu1hzbb6bg== abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - acorn-jsx@^5.2.0: version "5.3.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - acorn@^7.1.1, acorn@^7.4.0: version "7.4.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== -acorn@^8.2.4: - version "8.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.4.1.tgz#56c36251fc7cabc7096adc18f05afe814321a28c" - integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA== - -agent-base@6: +agent-base@6, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" +agentkeepalive@^4.1.3: + version "4.2.1" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz#a7975cbb9f83b367f06c90cc51ff28fe7d499717" + integrity sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA== + dependencies: + debug "^4.1.0" + depd "^1.1.2" + humanize-ms "^1.2.1" + aggregate-error@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" @@ -1983,16 +2049,16 @@ alphanum-sort@^1.0.0: resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= - ansi-colors@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== +ansi-colors@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + ansi-escapes@^4.2.1: version "4.3.1" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" @@ -2020,6 +2086,11 @@ ansi-regex@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -2053,22 +2124,31 @@ anymatch@^3.0.3, anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" -append-transform@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-2.0.0.tgz#99d9d29c7b38391e6f428d28ce136551f0b77e12" - integrity sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg== - dependencies: - default-require-extensions "^3.0.0" - aproba@^1.0.3: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -archy@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" - integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= +"aproba@^1.0.3 || ^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + +are-we-there-yet@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" + integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + +are-we-there-yet@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz#ba20bd6b553e31d62fc8c31bd23d22b95734390d" + integrity sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" are-we-there-yet@~1.1.2: version "1.1.5" @@ -2093,16 +2173,6 @@ aria-query@^4.2.2: "@babel/runtime" "^7.10.2" "@babel/runtime-corejs3" "^7.10.2" -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= - array-includes@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" @@ -2134,6 +2204,11 @@ array.prototype.flatmap@^1.2.3: es-abstract "^1.17.0-next.1" function-bind "^1.1.1" +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== + asn1@~0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" @@ -2191,30 +2266,22 @@ axe-core@^3.5.4: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-3.5.5.tgz#84315073b53fa3c0c51676c588d59da09a192227" integrity sha512-5P0QZ6J5xGikH780pghEdbEKijCTrruK9KxtPZCFWUpef0f6GipO+xEZ5GKCb020mmqgbiNO6TcA55CriL784Q== -axios@^0.21.1: - version "0.21.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" - integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== - dependencies: - follow-redirects "^1.10.0" - axobject-query@^2.1.2: version "2.2.0" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== -babel-jest@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.0.6.tgz#e99c6e0577da2655118e3608b68761a5a69bd0d8" - integrity sha512-iTJyYLNc4wRofASmofpOc5NK9QunwMk+TLFgGXsTFS8uEqmd8wdI7sga0FPe2oVH3b5Agt/EAK1QjPEuKL8VfA== +babel-jest@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.1.tgz#2a3a4ae50964695b2d694ccffe4bec537c5a3586" + integrity sha512-MEt0263viUdAkTq5D7upHPNxvt4n9uLUGa6pPz3WviNBMtOmStb1lIXS3QobnoqM+qnH+vr4EKlvhe8QcmxIYw== dependencies: - "@jest/transform" "^27.0.6" - "@jest/types" "^27.0.6" + "@jest/transform" "^28.1.1" "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^27.0.6" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^28.1.1" chalk "^4.0.0" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" slash "^3.0.0" babel-plugin-dynamic-import-node@^2.3.3: @@ -2224,50 +2291,50 @@ babel-plugin-dynamic-import-node@^2.3.3: dependencies: object.assign "^4.1.0" -babel-plugin-istanbul@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" - integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@istanbuljs/load-nyc-config" "^1.0.0" "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^4.0.0" + istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.0.6.tgz#f7c6b3d764af21cb4a2a1ab6870117dbde15b456" - integrity sha512-CewFeM9Vv2gM7Yr9n5eyyLVPRSiBnk6lKZRjgwYnGKSl9M14TMn2vkN02wTF04OGuSDLEzlWiMzvjXuW9mB6Gw== +babel-plugin-jest-hoist@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.1.tgz#5e055cdcc47894f28341f87f5e35aad2df680b11" + integrity sha512-NovGCy5Hn25uMJSAU8FaHqzs13cFoOI4lhIujiepssjCKRsAo3TA734RDWSGxuFTsUJXerYOqQQodlxgmtqbzw== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" + "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" -babel-plugin-polyfill-corejs2@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz#e9124785e6fd94f94b618a7954e5693053bf5327" - integrity sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ== +babel-plugin-polyfill-corejs2@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" + integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== dependencies: "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.2.2" + "@babel/helper-define-polyfill-provider" "^0.3.1" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.2.2: - version "0.2.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.3.tgz#72add68cf08a8bf139ba6e6dfc0b1d504098e57b" - integrity sha512-rCOFzEIJpJEAU14XCcV/erIf/wZQMmMT5l5vXOpL5uoznyOGfDIjPj6FVytMvtzaKSTSVKouOCTPJ5OMUZH30g== +babel-plugin-polyfill-corejs3@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" + integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" - core-js-compat "^3.14.0" + "@babel/helper-define-polyfill-provider" "^0.3.1" + core-js-compat "^3.21.0" -babel-plugin-polyfill-regenerator@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz#b310c8d642acada348c1fa3b3e6ce0e851bee077" - integrity sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg== +babel-plugin-polyfill-regenerator@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" + integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" + "@babel/helper-define-polyfill-provider" "^0.3.1" babel-preset-current-node-syntax@^1.0.0: version "1.0.1" @@ -2287,12 +2354,12 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.0.6.tgz#909ef08e9f24a4679768be2f60a3df0856843f9d" - integrity sha512-WObA0/Biw2LrVVwZkF/2GqbOdzhKD6Fkdwhoy9ASIrOWr/zodcSpQh72JOkEn6NWyjmnPDjNSqaGN4KnpKzhXw== +babel-preset-jest@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.1.1.tgz#5b6e5e69f963eb2d70f739c607b8f723c0ee75e4" + integrity sha512-FCq9Oud0ReTeWtcneYf/48981aTfXYuB9gbU4rBNNJVBSQ6ssv7E6v/qvbBxtOWwZFXjLZwpg+W3q7J6vhH25g== dependencies: - babel-plugin-jest-hoist "^27.0.6" + babel-plugin-jest-hoist "^28.1.1" babel-preset-current-node-syntax "^1.0.0" balanced-match@^1.0.0: @@ -2312,29 +2379,6 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= - dependencies: - inherits "~2.0.0" - -body-parser@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== - dependencies: - bytes "3.1.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" - iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" - boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" @@ -2355,10 +2399,32 @@ braces@^3.0.1, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== +browserslist-generator@^1.0.66: + version "1.0.66" + resolved "https://registry.yarnpkg.com/browserslist-generator/-/browserslist-generator-1.0.66.tgz#14f3f2cbf09e9a82e7c53a62f8cc18ce6c35eca3" + integrity sha512-aFDax4Qzh29DdyhHQBD2Yu2L5OvaDnvYFMbmpLrLwwaNK4H6dHEhC/Nxv93/+mfAA+a/t94ln0P2JZvHO6LZDA== + dependencies: + "@mdn/browser-compat-data" "^4.1.16" + "@types/object-path" "^0.11.1" + "@types/semver" "^7.3.9" + "@types/ua-parser-js" "^0.7.36" + browserslist "4.20.2" + caniuse-lite "^1.0.30001328" + isbot "3.4.5" + object-path "^0.11.8" + semver "^7.3.7" + ua-parser-js "^1.0.2" + +browserslist@4.20.2: + version "4.20.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.2.tgz#567b41508757ecd904dab4d1c646c612cd3d4f88" + integrity sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA== + dependencies: + caniuse-lite "^1.0.30001317" + electron-to-chromium "^1.4.84" + escalade "^3.1.1" + node-releases "^2.0.2" + picocolors "^1.0.0" browserslist@^4.0.0: version "4.14.2" @@ -2381,6 +2447,28 @@ browserslist@^4.16.6: escalade "^3.1.1" node-releases "^1.1.71" +browserslist@^4.20.2: + version "4.20.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.4.tgz#98096c9042af689ee1e0271333dbc564b8ce4477" + integrity sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw== + dependencies: + caniuse-lite "^1.0.30001349" + electron-to-chromium "^1.4.147" + escalade "^3.1.1" + node-releases "^2.0.5" + picocolors "^1.0.0" + +browserslist@^4.20.3: + version "4.20.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" + integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== + dependencies: + caniuse-lite "^1.0.30001332" + electron-to-chromium "^1.4.118" + escalade "^3.1.1" + node-releases "^2.0.3" + picocolors "^1.0.0" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -2388,11 +2476,6 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" -buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= - buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -2405,25 +2488,34 @@ bufferutil@^4.0.1: dependencies: node-gyp-build "~3.7.0" -builtin-modules@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" - integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== +builtin-modules@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== - -caching-transform@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-4.0.0.tgz#00d297a4206d71e2163c39eaffa8157ac0651f0f" - integrity sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA== +cacache@^15.2.0: + version "15.3.0" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" + integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== dependencies: - hasha "^5.0.0" - make-dir "^3.0.0" - package-hash "^4.0.0" - write-file-atomic "^3.0.0" + "@npmcli/fs" "^1.0.0" + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.1" + tar "^6.0.2" + unique-filename "^1.1.1" caller-callsite@^2.0.0: version "2.0.0" @@ -2449,20 +2541,16 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= +camelcase-keys@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" + integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" + camelcase "^5.3.1" + map-obj "^4.0.0" + quick-lru "^4.0.1" -camelcase@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= - -camelcase@^5.0.0, camelcase@^5.3.1: +camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== @@ -2492,6 +2580,16 @@ caniuse-lite@^1.0.30001219: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz#45b941bbd833cb0fa53861ff2bae746b3c6ca5d4" integrity sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA== +caniuse-lite@^1.0.30001317, caniuse-lite@^1.0.30001328, caniuse-lite@^1.0.30001332: + version "1.0.30001346" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001346.tgz#e895551b46b9cc9cc9de852facd42f04839a8fbe" + integrity sha512-q6ibZUO2t88QCIPayP/euuDREq+aMAxFE5S70PkrLh0iTDj/zEhgvJRKC2+CvXY6EWc6oQwUR48lL5vCW6jiXQ== + +caniuse-lite@^1.0.30001349: + version "1.0.30001352" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001352.tgz#cc6f5da3f983979ad1e2cdbae0505dccaa7c6a12" + integrity sha512-GUgH8w6YergqPQDGWhJGt8GDRnY0L/iJVQcU3eJ46GYf52R8tk0Wxp0PymuFVZboJYXGiCqwozAYZNRjVj6IcA== + canvas@^2.6.1: version "2.8.0" resolved "https://registry.yarnpkg.com/canvas/-/canvas-2.8.0.tgz#f99ca7f25e6e26686661ffa4fec1239bbef74461" @@ -2506,7 +2604,7 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chalk@^1.1.1, chalk@^1.1.3: +chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= @@ -2517,7 +2615,7 @@ chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -2526,14 +2624,6 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - chalk@^4.0.0, chalk@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" @@ -2542,6 +2632,14 @@ chalk@^4.0.0, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + char-regex@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" @@ -2572,10 +2670,10 @@ chownr@^2.0.0: resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== -ci-info@^3.1.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.2.0.tgz#2876cb948a498797b5236f0095bc057d0dca38b6" - integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A== +ci-info@^3.2.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.1.tgz#58331f6f472a25fe3a50a351ae3052936c2c7f32" + integrity sha512-SXgeMX9VwDe7iFFaEWkA5AstuER9YKqy4EhHqr4DVqkwmD9rpVimkMKWHdjn30Ja45txyjhSn63lVX69eVCckg== cjs-module-lexer@^1.0.0: version "1.2.2" @@ -2599,24 +2697,6 @@ cli-width@^3.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -2682,6 +2762,11 @@ color-string@^1.5.2: color-name "^1.0.0" simple-swizzle "^0.2.2" +color-support@^1.1.2, color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + color@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" @@ -2695,33 +2780,18 @@ colorette@^1.2.2: resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: +combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" -commander@^2.11.0, commander@^2.20.0: +commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" - integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== - -commander@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" - integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== - -commander@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" - integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== - common-tags@^1.4.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" @@ -2732,6 +2802,13 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= +compatfactory@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/compatfactory/-/compatfactory-1.0.1.tgz#a5940f1d734b86c02bb818a67a412d4c306ccaf4" + integrity sha512-hR9u0HSZTKDNNchPtMHg6myeNx0XO+av7UZIJPsi4rPALJBHi/W5Mbwi19hC/xm6y3JkYpxVYjTqnSGsU5X/iw== + dependencies: + helpertypes "^0.0.18" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -2742,7 +2819,7 @@ confusing-browser-globals@^1.0.9: resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== -console-control-strings@^1.0.0, console-control-strings@~1.1.0: +console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= @@ -2752,18 +2829,6 @@ contains-path@^0.1.0: resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== - dependencies: - safe-buffer "5.1.2" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" @@ -2771,22 +2836,12 @@ convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: dependencies: safe-buffer "~5.1.1" -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== - -core-js-compat@^3.14.0, core-js-compat@^3.15.0: - version "3.15.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.15.2.tgz#47272fbb479880de14b4e6081f71f3492f5bd3cb" - integrity sha512-Wp+BJVvwopjI+A1EFqm2dwUmWYXrvucmtIB2LgXn/Rb+gWPKYxtmb4GKHGKG/KGF1eK9jfjzT38DITbTOCX/SQ== +core-js-compat@^3.21.0, core-js-compat@^3.22.1: + version "3.22.8" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.22.8.tgz#46fa34ce1ddf742acd7f95f575f66bbb21e05d62" + integrity sha512-pQnwg4xtuvc2Bs/5zYQPaEYYSuTxsF7LBWF0SvnVhthZo/Qe+rJpcEekrdNK5DWwDJ0gv0oI9NNX5Mppdy0ctg== dependencies: - browserslist "^4.16.6" + browserslist "^4.20.3" semver "7.0.0" core-js-pure@^3.0.0: @@ -2794,11 +2849,6 @@ core-js-pure@^3.0.0: resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA== -core-js@^2.6.5: - version "2.6.11" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" - integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== - core-js@^3.6.5: version "3.6.5" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" @@ -2830,14 +2880,6 @@ cosmiconfig@^6.0.0: path-type "^4.0.0" yaml "^1.7.2" -cross-spawn@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" - integrity sha1-ElYDfsufDF9549bvE14wdwGEuYI= - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -2849,7 +2891,7 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -2858,6 +2900,13 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +crosspath@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crosspath/-/crosspath-2.0.0.tgz#5714f30c6541cc776103754954602ce0d25f126c" + integrity sha512-ju88BYCQ2uvjO2bR+SsgLSTwTSctU+6Vp2ePbKPgSCZyy4MWZxYsT738DlKVRE5utUjobjPRm1MkTYKJxCmpTA== + dependencies: + "@types/node" "^17.0.36" + css-color-names@0.0.4, css-color-names@^0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" @@ -2987,38 +3036,6 @@ csso@^4.0.2: dependencies: css-tree "1.0.0-alpha.39" -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= - dependencies: - array-find-index "^1.0.1" - -cwd@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/cwd/-/cwd-0.10.0.tgz#172400694057c22a13b0cf16162c7e4b7a7fe567" - integrity sha1-FyQAaUBXwioTsM8WFix+S3p/5Wc= - dependencies: - find-pkg "^0.1.2" - fs-exists-sync "^0.1.0" - damerau-levenshtein@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" @@ -3031,22 +3048,6 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== - dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - -debug@2.6.9, debug@^2.6.8, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -3054,6 +3055,13 @@ debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" +debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + debug@^4.3.1: version "4.3.2" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" @@ -3061,16 +3069,26 @@ debug@^4.3.1: dependencies: ms "2.1.2" -decamelize@^1.1.2, decamelize@^1.2.0: +debug@^4.3.3: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decamelize-keys@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" + integrity sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg== + dependencies: + decamelize "^1.1.0" + map-obj "^1.0.0" + +decamelize@^1.1.0, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -decimal.js@^10.2.1: - version "10.3.1" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" - integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== - decompress-response@^4.2.0: version "4.2.1" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-4.2.1.tgz#414023cc7a302da25ce2ec82d0d5238ccafd8986" @@ -3093,13 +3111,6 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== -default-require-extensions@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-3.0.0.tgz#e03f93aac9b2b6443fc52e5e4a37b3ad9ad8df96" - integrity sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg== - dependencies: - strip-bom "^4.0.0" - define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -3131,16 +3142,11 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= -depd@~1.1.2: +depd@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - detect-libc@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" @@ -3156,15 +3162,10 @@ diff-sequences@^26.6.2: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== -diff-sequences@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.0.6.tgz#3305cb2e55a033924054695cc66019fd7f8e5723" - integrity sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ== - -diff@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +diff-sequences@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.1.1.tgz#9989dc731266dc2903457a70e996f3a041913ac6" + integrity sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw== dir-glob@^3.0.1: version "3.0.1" @@ -3223,13 +3224,6 @@ domelementtype@^2.0.1: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== - dependencies: - webidl-conversions "^5.0.0" - domutils@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" @@ -3253,11 +3247,6 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - electron-to-chromium@^1.3.564: version "1.3.564" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.564.tgz#e9c319ae437b3eb8bbf3e3bae4bead5a21945961" @@ -3268,10 +3257,20 @@ electron-to-chromium@^1.3.723: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.779.tgz#de55492a756deec63424f89fbe62aec9776f0e6d" integrity sha512-nreave0y/1Qhmo8XtO6C/LpawNyC6U26+q7d814/e+tIqUK073pM+4xW7WUXyqCRa5K4wdxHmNMBAi8ap9nEew== -emittery@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" - integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== +electron-to-chromium@^1.4.118, electron-to-chromium@^1.4.84: + version "1.4.146" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.146.tgz#fd20970c3def2f9e6b32ac13a2e7a6b64e1b0c48" + integrity sha512-4eWebzDLd+hYLm4csbyMU2EbBnqhwl8Oe9eF/7CBDPWcRxFmqzx4izxvHH+lofQxzieg8UbB8ZuzNTxeukzfTg== + +electron-to-chromium@^1.4.147: + version "1.4.151" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.151.tgz#d1c09dd3a06cb81ef03a3bbbff6905827c33ab4b" + integrity sha512-XaG2LpZi9fdiWYOqJh0dJy4SlVywCvpgYXhzOlZTp4JqSKqxn5URqOjbm9OMYB3aInA2GuHQiem1QUOc1yT0Pw== + +emittery@^0.10.2: + version "0.10.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" + integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== emoji-regex@^7.0.1: version "7.0.3" @@ -3288,17 +3287,12 @@ emoji-regex@^9.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.0.0.tgz#48a2309cc8a1d2e9d23bc6a67c39b63032e76ea4" integrity sha512-6p1NII1Vm62wni/VR/cUMauVQoxmLVb9csqQlvLz+hO2gk8U2UYDfXHQSUYIBKmZwAKz867IDqG7B+u0mj+M6w== -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== +encoding@^0.1.12: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== dependencies: - once "^1.4.0" + iconv-lite "^0.6.2" enquirer@^2.3.5: version "2.3.6" @@ -3312,6 +3306,16 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +err-code@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -3354,6 +3358,11 @@ es-abstract@^1.18.0-next.0: string.prototype.trimend "^1.0.1" string.prototype.trimstart "^1.0.1" +es-module-lexer@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" + integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -3363,10 +3372,131 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es6-error@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" - integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== +esbuild-android-64@0.14.42: + version "0.14.42" + resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.42.tgz#d7ab3d44d3671218d22bce52f65642b12908d954" + integrity sha512-P4Y36VUtRhK/zivqGVMqhptSrFILAGlYp0Z8r9UQqHJ3iWztRCNWnlBzD9HRx0DbueXikzOiwyOri+ojAFfW6A== + +esbuild-android-arm64@0.14.42: + version "0.14.42" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.42.tgz#45336d8bec49abddb3a022996a23373f45a57c27" + integrity sha512-0cOqCubq+RWScPqvtQdjXG3Czb3AWI2CaKw3HeXry2eoA2rrPr85HF7IpdU26UWdBXgPYtlTN1LUiuXbboROhg== + +esbuild-darwin-64@0.14.42: + version "0.14.42" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.42.tgz#6dff5e44cd70a88c33323e2f5fb598e40c68a9e0" + integrity sha512-ipiBdCA3ZjYgRfRLdQwP82rTiv/YVMtW36hTvAN5ZKAIfxBOyPXY7Cejp3bMXWgzKD8B6O+zoMzh01GZsCuEIA== + +esbuild-darwin-arm64@0.14.42: + version "0.14.42" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.42.tgz#2c7313e1b12d2fa5b889c03213d682fb92ca8c4f" + integrity sha512-bU2tHRqTPOaoH/4m0zYHbFWpiYDmaA0gt90/3BMEFaM0PqVK/a6MA2V/ypV5PO0v8QxN6gH5hBPY4YJ2lopXgA== + +esbuild-freebsd-64@0.14.42: + version "0.14.42" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.42.tgz#ad1c5a564a7e473b8ce95ee7f76618d05d6daffc" + integrity sha512-75h1+22Ivy07+QvxHyhVqOdekupiTZVLN1PMwCDonAqyXd8TVNJfIRFrdL8QmSJrOJJ5h8H1I9ETyl2L8LQDaw== + +esbuild-freebsd-arm64@0.14.42: + version "0.14.42" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.42.tgz#4bdb480234144f944f1930829bace7561135ddc7" + integrity sha512-W6Jebeu5TTDQMJUJVarEzRU9LlKpNkPBbjqSu+GUPTHDCly5zZEQq9uHkmHHl7OKm+mQ2zFySN83nmfCeZCyNA== + +esbuild-linux-32@0.14.42: + version "0.14.42" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.42.tgz#ef18fd19f067e9d2b5f677d6b82fa81519f5a8c2" + integrity sha512-Ooy/Bj+mJ1z4jlWcK5Dl6SlPlCgQB9zg1UrTCeY8XagvuWZ4qGPyYEWGkT94HUsRi2hKsXvcs6ThTOjBaJSMfg== + +esbuild-linux-64@0.14.42: + version "0.14.42" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.42.tgz#d84e7333b1c1b22cf8b5b9dbb5dd9b2ecb34b79f" + integrity sha512-2L0HbzQfbTuemUWfVqNIjOfaTRt9zsvjnme6lnr7/MO9toz/MJ5tZhjqrG6uDWDxhsaHI2/nsDgrv8uEEN2eoA== + +esbuild-linux-arm64@0.14.42: + version "0.14.42" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.42.tgz#dc19e282f8c4ffbaa470c02a4d171e4ae0180cca" + integrity sha512-c3Ug3e9JpVr8jAcfbhirtpBauLxzYPpycjWulD71CF6ZSY26tvzmXMJYooQ2YKqDY4e/fPu5K8bm7MiXMnyxuA== + +esbuild-linux-arm@0.14.42: + version "0.14.42" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.42.tgz#d49870e63e2242b8156bf473f2ee5154226be328" + integrity sha512-STq69yzCMhdRaWnh29UYrLSr/qaWMm/KqwaRF1pMEK7kDiagaXhSL1zQGXbYv94GuGY/zAwzK98+6idCMUOOCg== + +esbuild-linux-mips64le@0.14.42: + version "0.14.42" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.42.tgz#f4e6ff9bf8a6f175470498826f48d093b054fc22" + integrity sha512-QuvpHGbYlkyXWf2cGm51LBCHx6eUakjaSrRpUqhPwjh/uvNUYvLmz2LgPTTPwCqaKt0iwL+OGVL0tXA5aDbAbg== + +esbuild-linux-ppc64le@0.14.42: + version "0.14.42" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.42.tgz#ac9c66fc80ba9f8fda15a4cc08f4e55f6c0aed63" + integrity sha512-8ohIVIWDbDT+i7lCx44YCyIRrOW1MYlks9fxTo0ME2LS/fxxdoJBwHWzaDYhjvf8kNpA+MInZvyOEAGoVDrMHg== + +esbuild-linux-riscv64@0.14.42: + version "0.14.42" + resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.42.tgz#21e0ae492a3a9bf4eecbfc916339a66e204256d0" + integrity sha512-DzDqK3TuoXktPyG1Lwx7vhaF49Onv3eR61KwQyxYo4y5UKTpL3NmuarHSIaSVlTFDDpcIajCDwz5/uwKLLgKiQ== + +esbuild-linux-s390x@0.14.42: + version "0.14.42" + resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.42.tgz#06d40b957250ffd9a2183bfdfc9a03d6fd21b3e8" + integrity sha512-YFRhPCxl8nb//Wn6SiS5pmtplBi4z9yC2gLrYoYI/tvwuB1jldir9r7JwAGy1Ck4D7sE7wBN9GFtUUX/DLdcEQ== + +esbuild-netbsd-64@0.14.42: + version "0.14.42" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.42.tgz#185664f05f10914f14ed43bd9e22b7de584267f7" + integrity sha512-QYSD2k+oT9dqB/4eEM9c+7KyNYsIPgzYOSrmfNGDIyJrbT1d+CFVKvnKahDKNJLfOYj8N4MgyFaU9/Ytc6w5Vw== + +esbuild-openbsd-64@0.14.42: + version "0.14.42" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.42.tgz#c29006f659eb4e55283044bbbd4eb4054fae8839" + integrity sha512-M2meNVIKWsm2HMY7+TU9AxM7ZVwI9havdsw6m/6EzdXysyCFFSoaTQ/Jg03izjCsK17FsVRHqRe26Llj6x0MNA== + +esbuild-sunos-64@0.14.42: + version "0.14.42" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.42.tgz#aa9eec112cd1e7105e7bb37000eca7d460083f8f" + integrity sha512-uXV8TAZEw36DkgW8Ak3MpSJs1ofBb3Smkc/6pZ29sCAN1KzCAQzsje4sUwugf+FVicrHvlamCOlFZIXgct+iqQ== + +esbuild-windows-32@0.14.42: + version "0.14.42" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.42.tgz#c3fc450853c61a74dacc5679de301db23b73e61e" + integrity sha512-4iw/8qWmRICWi9ZOnJJf9sYt6wmtp3hsN4TdI5NqgjfOkBVMxNdM9Vt3626G1Rda9ya2Q0hjQRD9W1o+m6Lz6g== + +esbuild-windows-64@0.14.42: + version "0.14.42" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.42.tgz#b877aa37ff47d9fcf0ccb1ca6a24b31475a5e555" + integrity sha512-j3cdK+Y3+a5H0wHKmLGTJcq0+/2mMBHPWkItR3vytp/aUGD/ua/t2BLdfBIzbNN9nLCRL9sywCRpOpFMx3CxzA== + +esbuild-windows-arm64@0.14.42: + version "0.14.42" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.42.tgz#79da8744626f24bc016dc40d016950b5a4a2bac5" + integrity sha512-+lRAARnF+hf8J0mN27ujO+VbhPbDqJ8rCcJKye4y7YZLV6C4n3pTRThAb388k/zqF5uM0lS5O201u0OqoWSicw== + +esbuild@^0.14.27, esbuild@^0.14.42: + version "0.14.42" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.42.tgz#98587df0b024d5f6341b12a1d735a2bff55e1836" + integrity sha512-V0uPZotCEHokJdNqyozH6qsaQXqmZEOiZWrXnds/zaH/0SyrIayRXWRB98CENO73MIZ9T3HBIOsmds5twWtmgw== + optionalDependencies: + esbuild-android-64 "0.14.42" + esbuild-android-arm64 "0.14.42" + esbuild-darwin-64 "0.14.42" + esbuild-darwin-arm64 "0.14.42" + esbuild-freebsd-64 "0.14.42" + esbuild-freebsd-arm64 "0.14.42" + esbuild-linux-32 "0.14.42" + esbuild-linux-64 "0.14.42" + esbuild-linux-arm "0.14.42" + esbuild-linux-arm64 "0.14.42" + esbuild-linux-mips64le "0.14.42" + esbuild-linux-ppc64le "0.14.42" + esbuild-linux-riscv64 "0.14.42" + esbuild-linux-s390x "0.14.42" + esbuild-netbsd-64 "0.14.42" + esbuild-openbsd-64 "0.14.42" + esbuild-sunos-64 "0.14.42" + esbuild-windows-32 "0.14.42" + esbuild-windows-64 "0.14.42" + esbuild-windows-arm64 "0.14.42" escalade@^3.0.2: version "3.0.2" @@ -3378,11 +3508,6 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -3393,18 +3518,6 @@ escape-string-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== -escodegen@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" - integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - eslint-config-airbnb-base@^14.2.0: version "14.2.0" resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.0.tgz#fe89c24b3f9dc8008c9c0d0d88c28f95ed65e9c4" @@ -3465,13 +3578,6 @@ eslint-plugin-import@^2.22.0: resolve "^1.17.0" tsconfig-paths "^3.9.0" -eslint-plugin-jest-playwright@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest-playwright/-/eslint-plugin-jest-playwright-0.4.1.tgz#5cae26348b9713b2d41d7e61e7d964aed084c942" - integrity sha512-sQ+grZ57ExRd5Sx8gFZ9GvE/BEFYMzc5Gu35o1KuY/ofhpqnxfwEHyV5vUIngyRSSDRBEDdZMdk+XjruiOnzHw== - dependencies: - eslint-plugin-playwright "^0.4.0" - eslint-plugin-jest@^24.3.6: version "24.3.6" resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-24.3.6.tgz#5f0ca019183c3188c5ad3af8e80b41de6c8e9173" @@ -3504,11 +3610,6 @@ eslint-plugin-jsx-a11y@^6.3.1: jsx-ast-utils "^2.4.1" language-tags "^1.0.5" -eslint-plugin-playwright@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-playwright/-/eslint-plugin-playwright-0.4.0.tgz#0e8dc9805a7e33a6596621a2193b32f13639c325" - integrity sha512-hGI5AETIpgQaNCm9oBAIEZYunuZ6M4rgZYVKrheuOaOcVfmW7z3muZnk0G6gOFHAux1t2fJx+10nWP868sw5TA== - eslint-plugin-prettier@^3.1.4: version "3.1.4" resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz#168ab43154e2ea57db992a2cd097c828171f75c2" @@ -3689,7 +3790,7 @@ espree@^7.3.0: acorn-jsx "^5.2.0" eslint-visitor-keys "^1.3.0" -esprima@^4.0.0, esprima@^4.0.1: +esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -3733,11 +3834,6 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - eventemitter3@^4.0.4: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" @@ -3763,70 +3859,16 @@ exit@^0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= -expand-tilde@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449" - integrity sha1-C4HrqJflo9MdHD0QL48BRB5VlEk= +expect@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.1.tgz#ca6fff65f6517cf7220c2e805a49c19aea30b420" + integrity sha512-/AANEwGL0tWBwzLNOvO0yUdy2D52jVdNXppOqswC49sxMN2cPWsGCQdzuIf9tj6hHoBQzNvx75JUYuQAckPo3w== dependencies: - os-homedir "^1.0.1" - -expect-playwright@^0.3.4: - version "0.3.4" - resolved "https://registry.yarnpkg.com/expect-playwright/-/expect-playwright-0.3.4.tgz#97a2eea0f4887350cf57b1f132484d14ca5bb301" - integrity sha512-JulhMkc5lVvpF18ImWLqviHZpo4qzT9FfpF+lP4D+U9guGUnYOCFpS/5Qk1c3zKhYHJL1JBEfiiGfcRUuzsnEg== - -expect-playwright@^0.7.0: - version "0.7.2" - resolved "https://registry.yarnpkg.com/expect-playwright/-/expect-playwright-0.7.2.tgz#e1f2c31cd0d13d04e1ba4136019613ad01f6ea43" - integrity sha512-5o9si+8SUi68QVI0CRVv8tvTjZinpJWRSfQ3GP6v0DvlK55lDgFvD79r6A/NU+EUawrBc62qP30MxzOUnXNJZQ== - -expect@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/expect/-/expect-27.0.6.tgz#a4d74fbe27222c718fff68ef49d78e26a8fd4c05" - integrity sha512-psNLt8j2kwg42jGBDSfAlU49CEZxejN1f1PlANWDZqIhBOVU/c2Pm888FcjWJzFewhIsNWfZJeLjUjtKGiPuSw== - dependencies: - "@jest/types" "^27.0.6" - ansi-styles "^5.0.0" - jest-get-type "^27.0.6" - jest-matcher-utils "^27.0.6" - jest-message-util "^27.0.6" - jest-regex-util "^27.0.6" - -express@^4.17.1: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== - dependencies: - accepts "~1.3.7" - array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" - content-type "~1.0.4" - cookie "0.4.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "~1.1.2" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" - range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" + "@jest/expect-utils" "^28.1.1" + jest-get-type "^28.0.2" + jest-matcher-utils "^28.1.1" + jest-message-util "^28.1.1" + jest-util "^28.1.1" extend@~3.0.2: version "3.0.2" @@ -3842,17 +3884,6 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -extract-zip@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" - integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== - dependencies: - debug "^4.1.1" - get-stream "^5.1.0" - yauzl "^2.10.0" - optionalDependencies: - "@types/yauzl" "^2.9.1" - extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -3920,13 +3951,6 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" - integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= - dependencies: - pend "~1.2.0" - figures@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -3948,69 +3972,6 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-cache-dir@^3.2.0, find-cache-dir@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" - integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-file-up@^0.1.2: - version "0.1.3" - resolved "https://registry.yarnpkg.com/find-file-up/-/find-file-up-0.1.3.tgz#cf68091bcf9f300a40da411b37da5cce5a2fbea0" - integrity sha1-z2gJG8+fMApA2kEbN9pczlovvqA= - dependencies: - fs-exists-sync "^0.1.0" - resolve-dir "^0.1.0" - -find-pkg@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/find-pkg/-/find-pkg-0.1.2.tgz#1bdc22c06e36365532e2a248046854b9788da557" - integrity sha1-G9wiwG42NlUy4qJIBGhUuXiNpVc= - dependencies: - find-file-up "^0.1.2" - -find-process@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/find-process/-/find-process-1.4.3.tgz#25f9105dc32e42abad4636752c37c51cd57dce45" - integrity sha512-+IA+AUsQCf3uucawyTwMWcY+2M3FXq3BRvw3S+j5Jvydjk31f/+NPWpYZOJs+JUs2GvxH4Yfr6Wham0ZtRLlPA== - dependencies: - chalk "^2.0.1" - commander "^2.11.0" - debug "^2.6.8" - -find-process@^1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/find-process/-/find-process-1.4.4.tgz#52820561162fda0d1feef9aed5d56b3787f0fd6e" - integrity sha512-rRSuT1LE4b+BFK588D2V8/VG9liW0Ark1XJgroxZXI0LtwmQJOb490DvDYvbm+Hek9ETFzTutGfJ90gumITPhQ== - dependencies: - chalk "^4.0.0" - commander "^5.1.0" - debug "^4.1.1" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -4018,13 +3979,6 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -4047,33 +4001,11 @@ flatted@^2.0.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== -follow-redirects@^1.10.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.1.tgz#5f69b813376cee4fd0474a3aba835df04ab763b7" - integrity sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg== - -foreground-child@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" - integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^3.0.2" - forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" @@ -4083,35 +4015,6 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -fromentries@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a" - integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg== - -fs-exists-sync@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" - integrity sha1-mC1ok6+RjnLQjeyehnP/K1qNat0= - -fs-extra@8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - fs-extra@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" @@ -4134,31 +4037,16 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^2.3.2: +fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== -fsevents@~2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== - fsevents@~2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.1.tgz#b209ab14c61012636c8863507edf7fb68cc54e9f" integrity sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw== -fstream@^1.0.0, fstream@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" - integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -4169,6 +4057,35 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +gauge@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" + integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.2" + console-control-strings "^1.0.0" + has-unicode "^2.0.1" + object-assign "^4.1.1" + signal-exit "^3.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.2" + +gauge@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.3" + console-control-strings "^1.1.0" + has-unicode "^2.0.1" + signal-exit "^3.0.7" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.5" + gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -4190,17 +4107,12 @@ gaze@^1.0.0: dependencies: globule "^1.0.0" -gensync@^1.0.0-beta.1: - version "1.0.0-beta.1" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" - integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== - gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^2.0.1, get-caller-file@^2.0.5: +get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== @@ -4220,13 +4132,6 @@ get-stdin@^6.0.0: resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== -get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" @@ -4253,7 +4158,7 @@ glob-parent@^5.1.2: dependencies: is-glob "^4.0.1" -glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.4, glob@^7.1.6, glob@~7.1.1: +glob@^7.0.0, glob@^7.0.3, glob@^7.1.2, glob@^7.1.4, glob@^7.1.6, glob@~7.1.1: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -4277,24 +4182,6 @@ glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -global-modules@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" - integrity sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0= - dependencies: - global-prefix "^0.1.4" - is-windows "^0.2.0" - -global-prefix@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f" - integrity sha1-jTvGuNo8qBEqFg2NSW/wRiv+948= - dependencies: - homedir-polyfill "^1.0.0" - ini "^1.3.4" - is-windows "^0.2.0" - which "^1.2.12" - globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -4342,11 +4229,16 @@ globule@^1.0.0: lodash "~4.17.10" minimatch "~3.0.2" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4: +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== +graceful-fs@^4.2.6, graceful-fs@^4.2.9: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -4360,6 +4252,11 @@ har-validator@~5.1.3: ajv "^6.12.3" har-schema "^2.0.0" +hard-rejection@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== + has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -4382,7 +4279,7 @@ has-symbols@^1.0.0, has-symbols@^1.0.1: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== -has-unicode@^2.0.0: +has-unicode@^2.0.0, has-unicode@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= @@ -4394,31 +4291,28 @@ has@^1.0.0, has@^1.0.3: dependencies: function-bind "^1.1.1" -hasha@^5.0.0: - version "5.2.2" - resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.2.tgz#a48477989b3b327aea3c04f53096d816d97522a1" - integrity sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ== - dependencies: - is-stream "^2.0.0" - type-fest "^0.8.0" +helpertypes@^0.0.18: + version "0.0.18" + resolved "https://registry.yarnpkg.com/helpertypes/-/helpertypes-0.0.18.tgz#fd2bf5d3351cc7d80f7876732361d3adba63e5b4" + integrity sha512-XRhfbSEmR+poXUC5/8AbmYNJb2riOT6qPzjGJZr0S9YedHiaY+/tzPYzWMUclYMEdCYo/1l8PDYrQFCj02v97w== hex-color-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== -homedir-polyfill@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - hosted-git-info@^2.1.4: version "2.8.8" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== +hosted-git-info@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== + dependencies: + lru-cache "^6.0.0" + hsl-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" @@ -4434,39 +4328,15 @@ html-comment-regex@^1.1.0: resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== - dependencies: - whatwg-encoding "^1.0.5" - html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" +http-cache-semantics@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== http-proxy-agent@^4.0.1: version "4.0.1" @@ -4499,13 +4369,27 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -iconv-lite@0.4.24, iconv-lite@^0.4.24: +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + +iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + icss-utils@^4.0.0, icss-utils@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" @@ -4552,18 +4436,6 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -in-publish@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.1.tgz#948b1a535c8030561cea522f73f78f4be357e00c" - integrity sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ== - -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= - dependencies: - repeating "^2.0.0" - indent-string@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" @@ -4574,6 +4446,11 @@ indexes-of@^1.0.1: resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= +infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -4582,21 +4459,11 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@~2.0.0, inherits@~2.0.3: +inherits@2, inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - inquirer@^7.0.0: version "7.3.3" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" @@ -4625,10 +4492,10 @@ internal-slot@^1.0.2: has "^1.0.3" side-channel "^1.0.2" -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== +ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= is-absolute-url@^2.0.0: version "2.1.0" @@ -4652,18 +4519,18 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" +is-builtin-module@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.1.0.tgz#6fdb24313b1c03b75f8b9711c0feb8c30b903b00" + integrity sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg== + dependencies: + builtin-modules "^3.0.0" + is-callable@^1.1.4, is-callable@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.1.tgz#4d1e21a4f437509d25ce55f8184350771421c96d" integrity sha512-wliAfSzx6V+6WfMOmus1xy0XvSgf/dlStkvTfq7F0g4bOIW0PSUbnyse3NhDwdyYS1ozfUtAAySqTws3z9Eqgg== -is-ci@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" - integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== - dependencies: - ci-info "^3.1.1" - is-color-stop@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" @@ -4690,6 +4557,13 @@ is-core-module@^2.2.0: dependencies: has "^1.0.3" +is-core-module@^2.5.0, is-core-module@^2.8.1: + version "2.9.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" + integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== + dependencies: + has "^1.0.3" + is-date-object@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" @@ -4705,11 +4579,6 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-finite@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" - integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== - is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" @@ -4739,6 +4608,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-lambda@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== + is-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" @@ -4769,10 +4643,10 @@ is-path-inside@^3.0.1: resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== -is-potential-custom-element-name@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== +is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== is-reference@^1.2.1: version "1.2.1" @@ -4817,31 +4691,21 @@ is-symbol@^1.0.2: dependencies: has-symbols "^1.0.1" -is-typedarray@^1.0.0, is-typedarray@~1.0.0: +is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= - -is-windows@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" - integrity sha1-3hqm1j6indJIc3tp8f+LgALSEIw= - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= +isbot@3.4.5: + version "3.4.5" + resolved "https://registry.yarnpkg.com/isbot/-/isbot-3.4.5.tgz#69554585b725238692d9cc41d9a842c5b37fa33d" + integrity sha512-+KD6q1BBtw0iK9aGBGSfxJ31/ZgizKRjhm8ebgJUBMx0aeeQuIJ1I72beCoIrltIZGrSm4vmrxRxrG5n1aUTtw== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -4852,41 +4716,27 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.0.0-alpha.1: +istanbul-lib-coverage@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== -istanbul-lib-hook@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz#8f84c9434888cc6b1d0a9d7092a76d239ebf0cc6" - integrity sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ== - dependencies: - append-transform "^2.0.0" +istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== -istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz#31d18bdd127f825dd02ea7bfdfd906f8ab840e9f" + integrity sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A== dependencies: - "@babel/core" "^7.7.5" + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" + istanbul-lib-coverage "^3.2.0" semver "^6.3.0" -istanbul-lib-processinfo@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz#e1426514662244b2f25df728e8fd1ba35fe53b9c" - integrity sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw== - dependencies: - archy "^1.0.0" - cross-spawn "^7.0.0" - istanbul-lib-coverage "^3.0.0-alpha.1" - make-dir "^3.0.0" - p-map "^3.0.0" - rimraf "^3.0.0" - uuid "^3.3.3" - istanbul-lib-report@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" @@ -4905,105 +4755,92 @@ istanbul-lib-source-maps@^4.0.0: istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" -istanbul-reports@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" - integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== +istanbul-reports@^3.1.3: + version "3.1.4" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c" + integrity sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jest-changed-files@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.0.6.tgz#bed6183fcdea8a285482e3b50a9a7712d49a7a8b" - integrity sha512-BuL/ZDauaq5dumYh5y20sn4IISnf1P9A0TDswTxUi84ORGtVa86ApuBHqICL0vepqAnZiY6a7xeSPWv2/yy4eA== +jest-changed-files@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-28.0.2.tgz#7d7810660a5bd043af9e9cfbe4d58adb05e91531" + integrity sha512-QX9u+5I2s54ZnGoMEjiM2WeBvJR2J7w/8ZUmH2um/WLAuGAYFQcsVXY9+1YL6k0H/AGUdH8pXUAv6erDqEsvIA== dependencies: - "@jest/types" "^27.0.6" execa "^5.0.0" throat "^6.0.1" -jest-circus@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.0.6.tgz#dd4df17c4697db6a2c232aaad4e9cec666926668" - integrity sha512-OJlsz6BBeX9qR+7O9lXefWoc2m9ZqcZ5Ohlzz0pTEAG4xMiZUJoacY8f4YDHxgk0oKYxj277AfOk9w6hZYvi1Q== +jest-circus@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.1.1.tgz#3d27da6a974d85a466dc0cdc6ddeb58daaa57bb4" + integrity sha512-75+BBVTsL4+p2w198DQpCeyh1RdaS2lhEG87HkaFX/UG0gJExVq2skG2pT7XZEGBubNj2CytcWSPan4QEPNosw== dependencies: - "@jest/environment" "^27.0.6" - "@jest/test-result" "^27.0.6" - "@jest/types" "^27.0.6" + "@jest/environment" "^28.1.1" + "@jest/expect" "^28.1.1" + "@jest/test-result" "^28.1.1" + "@jest/types" "^28.1.1" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" dedent "^0.7.0" - expect "^27.0.6" is-generator-fn "^2.0.0" - jest-each "^27.0.6" - jest-matcher-utils "^27.0.6" - jest-message-util "^27.0.6" - jest-runtime "^27.0.6" - jest-snapshot "^27.0.6" - jest-util "^27.0.6" - pretty-format "^27.0.6" + jest-each "^28.1.1" + jest-matcher-utils "^28.1.1" + jest-message-util "^28.1.1" + jest-runtime "^28.1.1" + jest-snapshot "^28.1.1" + jest-util "^28.1.1" + pretty-format "^28.1.1" slash "^3.0.0" stack-utils "^2.0.3" throat "^6.0.1" -jest-cli@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.0.6.tgz#d021e5f4d86d6a212450d4c7b86cb219f1e6864f" - integrity sha512-qUUVlGb9fdKir3RDE+B10ULI+LQrz+MCflEH2UJyoUjoHHCbxDrMxSzjQAPUMsic4SncI62ofYCcAvW6+6rhhg== +jest-cli@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.1.1.tgz#23ddfde8940e1818585ae4a568877b33b0e51cfe" + integrity sha512-+sUfVbJqb1OjBZ0OdBbI6OWfYM1i7bSfzYy6gze1F1w3OKWq8ZTEKkZ8a7ZQPq6G/G1qMh/uKqpdWhgl11NFQQ== dependencies: - "@jest/core" "^27.0.6" - "@jest/test-result" "^27.0.6" - "@jest/types" "^27.0.6" + "@jest/core" "^28.1.1" + "@jest/test-result" "^28.1.1" + "@jest/types" "^28.1.1" chalk "^4.0.0" exit "^0.1.2" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^27.0.6" - jest-util "^27.0.6" - jest-validate "^27.0.6" + jest-config "^28.1.1" + jest-util "^28.1.1" + jest-validate "^28.1.1" prompts "^2.0.1" - yargs "^16.0.3" + yargs "^17.3.1" -jest-config@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.0.6.tgz#119fb10f149ba63d9c50621baa4f1f179500277f" - integrity sha512-JZRR3I1Plr2YxPBhgqRspDE2S5zprbga3swYNrvY3HfQGu7p/GjyLOqwrYad97tX3U3mzT53TPHVmozacfP/3w== +jest-config@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.1.1.tgz#e90b97b984f14a6c24a221859e81b258990fce2f" + integrity sha512-tASynMhS+jVV85zKvjfbJ8nUyJS/jUSYZ5KQxLUN2ZCvcQc/OmhQl2j6VEL3ezQkNofxn5pQ3SPYWPHb0unTZA== dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^27.0.6" - "@jest/types" "^27.0.6" - babel-jest "^27.0.6" + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^28.1.1" + "@jest/types" "^28.1.1" + babel-jest "^28.1.1" chalk "^4.0.0" + ci-info "^3.2.0" deepmerge "^4.2.2" - glob "^7.1.1" - graceful-fs "^4.2.4" - is-ci "^3.0.0" - jest-circus "^27.0.6" - jest-environment-jsdom "^27.0.6" - jest-environment-node "^27.0.6" - jest-get-type "^27.0.6" - jest-jasmine2 "^27.0.6" - jest-regex-util "^27.0.6" - jest-resolve "^27.0.6" - jest-runner "^27.0.6" - jest-util "^27.0.6" - jest-validate "^27.0.6" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^28.1.1" + jest-environment-node "^28.1.1" + jest-get-type "^28.0.2" + jest-regex-util "^28.0.2" + jest-resolve "^28.1.1" + jest-runner "^28.1.1" + jest-util "^28.1.1" + jest-validate "^28.1.1" micromatch "^4.0.4" - pretty-format "^27.0.6" - -jest-dev-server@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/jest-dev-server/-/jest-dev-server-4.4.0.tgz#557113faae2877452162696aa94c1e44491ab011" - integrity sha512-STEHJ3iPSC8HbrQ3TME0ozGX2KT28lbT4XopPxUm2WimsX3fcB3YOptRh12YphQisMhfqNSNTZUmWyT3HEXS2A== - dependencies: - chalk "^3.0.0" - cwd "^0.10.0" - find-process "^1.4.3" - prompts "^2.3.0" - spawnd "^4.4.0" - tree-kill "^1.2.2" - wait-on "^3.3.0" + parse-json "^5.2.0" + pretty-format "^28.1.1" + slash "^3.0.0" + strip-json-comments "^3.1.1" jest-diff@^26.0.0: version "26.6.2" @@ -5015,349 +4852,269 @@ jest-diff@^26.0.0: jest-get-type "^26.3.0" pretty-format "^26.6.2" -jest-diff@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.0.6.tgz#4a7a19ee6f04ad70e0e3388f35829394a44c7b5e" - integrity sha512-Z1mqgkTCSYaFgwTlP/NUiRzdqgxmmhzHY1Tq17zL94morOHfHu3K4bgSgl+CR4GLhpV8VxkuOYuIWnQ9LnFqmg== +jest-diff@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.1.tgz#1a3eedfd81ae79810931c63a1d0f201b9120106c" + integrity sha512-/MUUxeR2fHbqHoMMiffe/Afm+U8U4olFRJ0hiVG2lZatPJcnGxx292ustVu7bULhjV65IYMxRdploAKLbcrsyg== dependencies: chalk "^4.0.0" - diff-sequences "^27.0.6" - jest-get-type "^27.0.6" - pretty-format "^27.0.6" + diff-sequences "^28.1.1" + jest-get-type "^28.0.2" + pretty-format "^28.1.1" -jest-docblock@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.0.6.tgz#cc78266acf7fe693ca462cbbda0ea4e639e4e5f3" - integrity sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA== +jest-docblock@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-28.1.1.tgz#6f515c3bf841516d82ecd57a62eed9204c2f42a8" + integrity sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA== dependencies: detect-newline "^3.0.0" -jest-each@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.0.6.tgz#cee117071b04060158dc8d9a66dc50ad40ef453b" - integrity sha512-m6yKcV3bkSWrUIjxkE9OC0mhBZZdhovIW5ergBYirqnkLXkyEn3oUUF/QZgyecA1cF1QFyTE8bRRl8Tfg1pfLA== +jest-each@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-28.1.1.tgz#ba5238dacf4f31d9fe23ddc2c44c01e7c23885c4" + integrity sha512-A042rqh17ZvEhRceDMi784ppoXR7MWGDEKTXEZXb4svt0eShMZvijGxzKsx+yIjeE8QYmHPrnHiTSQVhN4nqaw== dependencies: - "@jest/types" "^27.0.6" + "@jest/types" "^28.1.1" chalk "^4.0.0" - jest-get-type "^27.0.6" - jest-util "^27.0.6" - pretty-format "^27.0.6" + jest-get-type "^28.0.2" + jest-util "^28.1.1" + pretty-format "^28.1.1" -jest-environment-jsdom@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.0.6.tgz#f66426c4c9950807d0a9f209c590ce544f73291f" - integrity sha512-FvetXg7lnXL9+78H+xUAsra3IeZRTiegA3An01cWeXBspKXUhAwMM9ycIJ4yBaR0L7HkoMPaZsozCLHh4T8fuw== +jest-environment-node@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.1.1.tgz#1c86c59003a7d319fa06ea3b1bbda6c193715c67" + integrity sha512-2aV/eeY/WNgUUJrrkDJ3cFEigjC5fqT1+fCclrY6paqJ5zVPoM//sHmfgUUp7WLYxIdbPwMiVIzejpN56MxnNA== dependencies: - "@jest/environment" "^27.0.6" - "@jest/fake-timers" "^27.0.6" - "@jest/types" "^27.0.6" + "@jest/environment" "^28.1.1" + "@jest/fake-timers" "^28.1.1" + "@jest/types" "^28.1.1" "@types/node" "*" - jest-mock "^27.0.6" - jest-util "^27.0.6" - jsdom "^16.6.0" - -jest-environment-node@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.0.6.tgz#a6699b7ceb52e8d68138b9808b0c404e505f3e07" - integrity sha512-+Vi6yLrPg/qC81jfXx3IBlVnDTI6kmRr08iVa2hFCWmJt4zha0XW7ucQltCAPhSR0FEKEoJ3i+W4E6T0s9is0w== - dependencies: - "@jest/environment" "^27.0.6" - "@jest/fake-timers" "^27.0.6" - "@jest/types" "^27.0.6" - "@types/node" "*" - jest-mock "^27.0.6" - jest-util "^27.0.6" + jest-mock "^28.1.1" + jest-util "^28.1.1" jest-get-type@^26.3.0: version "26.3.0" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== -jest-get-type@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.0.6.tgz#0eb5c7f755854279ce9b68a9f1a4122f69047cfe" - integrity sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg== +jest-get-type@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203" + integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA== -jest-haste-map@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.0.6.tgz#4683a4e68f6ecaa74231679dca237279562c8dc7" - integrity sha512-4ldjPXX9h8doB2JlRzg9oAZ2p6/GpQUNAeiYXqcpmrKbP0Qev0wdZlxSMOmz8mPOEnt4h6qIzXFLDi8RScX/1w== +jest-haste-map@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.1.tgz#471685f1acd365a9394745bb97c8fc16289adca3" + integrity sha512-ZrRSE2o3Ezh7sb1KmeLEZRZ4mgufbrMwolcFHNRSjKZhpLa8TdooXOOFlSwoUzlbVs1t0l7upVRW2K7RWGHzbQ== dependencies: - "@jest/types" "^27.0.6" - "@types/graceful-fs" "^4.1.2" + "@jest/types" "^28.1.1" + "@types/graceful-fs" "^4.1.3" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - jest-regex-util "^27.0.6" - jest-serializer "^27.0.6" - jest-util "^27.0.6" - jest-worker "^27.0.6" + graceful-fs "^4.2.9" + jest-regex-util "^28.0.2" + jest-util "^28.1.1" + jest-worker "^28.1.1" micromatch "^4.0.4" - walker "^1.0.7" + walker "^1.0.8" optionalDependencies: fsevents "^2.3.2" -jest-jasmine2@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.0.6.tgz#fd509a9ed3d92bd6edb68a779f4738b100655b37" - integrity sha512-cjpH2sBy+t6dvCeKBsHpW41mjHzXgsavaFMp+VWRf0eR4EW8xASk1acqmljFtK2DgyIECMv2yCdY41r2l1+4iA== +jest-leak-detector@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.1.1.tgz#537f37afd610a4b3f4cab15e06baf60484548efb" + integrity sha512-4jvs8V8kLbAaotE+wFR7vfUGf603cwYtFf1/PYEsyX2BAjSzj8hQSVTP6OWzseTl0xL6dyHuKs2JAks7Pfubmw== dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^27.0.6" - "@jest/source-map" "^27.0.6" - "@jest/test-result" "^27.0.6" - "@jest/types" "^27.0.6" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - expect "^27.0.6" - is-generator-fn "^2.0.0" - jest-each "^27.0.6" - jest-matcher-utils "^27.0.6" - jest-message-util "^27.0.6" - jest-runtime "^27.0.6" - jest-snapshot "^27.0.6" - jest-util "^27.0.6" - pretty-format "^27.0.6" - throat "^6.0.1" + jest-get-type "^28.0.2" + pretty-format "^28.1.1" -jest-leak-detector@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.0.6.tgz#545854275f85450d4ef4b8fe305ca2a26450450f" - integrity sha512-2/d6n2wlH5zEcdctX4zdbgX8oM61tb67PQt4Xh8JFAIy6LRKUnX528HulkaG6nD5qDl5vRV1NXejCe1XRCH5gQ== - dependencies: - jest-get-type "^27.0.6" - pretty-format "^27.0.6" - -jest-matcher-utils@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.0.6.tgz#2a8da1e86c620b39459f4352eaa255f0d43e39a9" - integrity sha512-OFgF2VCQx9vdPSYTHWJ9MzFCehs20TsyFi6bIHbk5V1u52zJOnvF0Y/65z3GLZHKRuTgVPY4Z6LVePNahaQ+tA== +jest-matcher-utils@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.1.tgz#a7c4653c2b782ec96796eb3088060720f1e29304" + integrity sha512-NPJPRWrbmR2nAJ+1nmnfcKKzSwgfaciCCrYZzVnNoxVoyusYWIjkBMNvu0RHJe7dNj4hH3uZOPZsQA+xAYWqsw== dependencies: chalk "^4.0.0" - jest-diff "^27.0.6" - jest-get-type "^27.0.6" - pretty-format "^27.0.6" + jest-diff "^28.1.1" + jest-get-type "^28.0.2" + pretty-format "^28.1.1" -jest-message-util@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.0.6.tgz#158bcdf4785706492d164a39abca6a14da5ab8b5" - integrity sha512-rBxIs2XK7rGy+zGxgi+UJKP6WqQ+KrBbD1YMj517HYN3v2BG66t3Xan3FWqYHKZwjdB700KiAJ+iES9a0M+ixw== +jest-message-util@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.1.tgz#60aa0b475cfc08c8a9363ed2fb9108514dd9ab89" + integrity sha512-xoDOOT66fLfmTRiqkoLIU7v42mal/SqwDKvfmfiWAdJMSJiU+ozgluO7KbvoAgiwIrrGZsV7viETjc8GNrA/IQ== dependencies: "@babel/code-frame" "^7.12.13" - "@jest/types" "^27.0.6" + "@jest/types" "^28.1.1" "@types/stack-utils" "^2.0.0" chalk "^4.0.0" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" micromatch "^4.0.4" - pretty-format "^27.0.6" + pretty-format "^28.1.1" slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.0.6.tgz#0efdd40851398307ba16778728f6d34d583e3467" - integrity sha512-lzBETUoK8cSxts2NYXSBWT+EJNzmUVtVVwS1sU9GwE1DLCfGsngg+ZVSIe0yd0ZSm+y791esiuo+WSwpXJQ5Bw== +jest-mock@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.1.1.tgz#37903d269427fa1ef5b2447be874e1c62a39a371" + integrity sha512-bDCb0FjfsmKweAvE09dZT59IMkzgN0fYBH6t5S45NoJfd2DHkS3ySG2K+hucortryhO3fVuXdlxWcbtIuV/Skw== dependencies: - "@jest/types" "^27.0.6" + "@jest/types" "^28.1.1" "@types/node" "*" -jest-playwright-preset@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/jest-playwright-preset/-/jest-playwright-preset-1.7.0.tgz#bd5998d1a9090fdf68a9dc4421da4c0d45f9156c" - integrity sha512-G25Nik+By0SNniMDdkouDL/yA1LdqjzsXNSVU4xnRX1typjXRmzRE0aSgqxas2sRi8cwG3M1ioHdkLLsp6sang== - dependencies: - expect-playwright "^0.7.0" - jest-process-manager "^0.3.1" - nyc "^15.1.0" - playwright-core ">=1.2.0" - rimraf "^3.0.2" - uuid "^8.3.2" - jest-pnp-resolver@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== -jest-process-manager@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/jest-process-manager/-/jest-process-manager-0.3.1.tgz#e748da83ea66ac5073087feb1150ba1270332b2e" - integrity sha512-x9W54UgZ7IkzUHgXtnI1x4GKOVjxtwW0CA/7yGbTHtT/YhENO0Lic2yfVyC/gekn7OIEMcQmy0L1r9WLQABfqw== - dependencies: - "@types/wait-on" "^5.2.0" - chalk "^4.1.0" - cwd "^0.10.0" - exit "^0.1.2" - find-process "^1.4.4" - prompts "^2.4.1" - signal-exit "^3.0.3" - spawnd "^5.0.0" - tree-kill "^1.2.2" - wait-on "^5.3.0" +jest-regex-util@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" + integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== -jest-regex-util@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.0.6.tgz#02e112082935ae949ce5d13b2675db3d8c87d9c5" - integrity sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ== - -jest-resolve-dependencies@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.0.6.tgz#3e619e0ef391c3ecfcf6ef4056207a3d2be3269f" - integrity sha512-mg9x9DS3BPAREWKCAoyg3QucCr0n6S8HEEsqRCKSPjPcu9HzRILzhdzY3imsLoZWeosEbJZz6TKasveczzpJZA== +jest-resolve-dependencies@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.1.tgz#3dffaaa56f4b41bc6b61053899d1756401763a27" + integrity sha512-p8Y150xYJth4EXhOuB8FzmS9r8IGLEioiaetgdNGb9VHka4fl0zqWlVe4v7mSkYOuEUg2uB61iE+zySDgrOmgQ== dependencies: - "@jest/types" "^27.0.6" - jest-regex-util "^27.0.6" - jest-snapshot "^27.0.6" + jest-regex-util "^28.0.2" + jest-snapshot "^28.1.1" -jest-resolve@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.0.6.tgz#e90f436dd4f8fbf53f58a91c42344864f8e55bff" - integrity sha512-yKmIgw2LgTh7uAJtzv8UFHGF7Dm7XfvOe/LQ3Txv101fLM8cx2h1QVwtSJ51Q/SCxpIiKfVn6G2jYYMDNHZteA== +jest-resolve@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-28.1.1.tgz#bc2eaf384abdcc1aaf3ba7c50d1adf01e59095e5" + integrity sha512-/d1UbyUkf9nvsgdBildLe6LAD4DalgkgZcKd0nZ8XUGPyA/7fsnaQIlKVnDiuUXv/IeZhPEDrRJubVSulxrShA== dependencies: - "@jest/types" "^27.0.6" chalk "^4.0.0" - escalade "^3.1.1" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" + jest-haste-map "^28.1.1" jest-pnp-resolver "^1.2.2" - jest-util "^27.0.6" - jest-validate "^27.0.6" + jest-util "^28.1.1" + jest-validate "^28.1.1" resolve "^1.20.0" + resolve.exports "^1.1.0" slash "^3.0.0" -jest-runner@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.0.6.tgz#1325f45055539222bbc7256a6976e993ad2f9520" - integrity sha512-W3Bz5qAgaSChuivLn+nKOgjqNxM7O/9JOJoKDCqThPIg2sH/d4A/lzyiaFgnb9V1/w29Le11NpzTJSzga1vyYQ== +jest-runner@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.1.1.tgz#9ecdb3f27a00059986797aa6b012ba8306aa436c" + integrity sha512-W5oFUiDBgTsCloTAj6q95wEvYDB0pxIhY6bc5F26OucnwBN+K58xGTGbliSMI4ChQal5eANDF+xvELaYkJxTmA== dependencies: - "@jest/console" "^27.0.6" - "@jest/environment" "^27.0.6" - "@jest/test-result" "^27.0.6" - "@jest/transform" "^27.0.6" - "@jest/types" "^27.0.6" + "@jest/console" "^28.1.1" + "@jest/environment" "^28.1.1" + "@jest/test-result" "^28.1.1" + "@jest/transform" "^28.1.1" + "@jest/types" "^28.1.1" "@types/node" "*" chalk "^4.0.0" - emittery "^0.8.1" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-docblock "^27.0.6" - jest-environment-jsdom "^27.0.6" - jest-environment-node "^27.0.6" - jest-haste-map "^27.0.6" - jest-leak-detector "^27.0.6" - jest-message-util "^27.0.6" - jest-resolve "^27.0.6" - jest-runtime "^27.0.6" - jest-util "^27.0.6" - jest-worker "^27.0.6" - source-map-support "^0.5.6" + emittery "^0.10.2" + graceful-fs "^4.2.9" + jest-docblock "^28.1.1" + jest-environment-node "^28.1.1" + jest-haste-map "^28.1.1" + jest-leak-detector "^28.1.1" + jest-message-util "^28.1.1" + jest-resolve "^28.1.1" + jest-runtime "^28.1.1" + jest-util "^28.1.1" + jest-watcher "^28.1.1" + jest-worker "^28.1.1" + source-map-support "0.5.13" throat "^6.0.1" -jest-runtime@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.0.6.tgz#45877cfcd386afdd4f317def551fc369794c27c9" - integrity sha512-BhvHLRVfKibYyqqEFkybsznKwhrsu7AWx2F3y9G9L95VSIN3/ZZ9vBpm/XCS2bS+BWz3sSeNGLzI3TVQ0uL85Q== +jest-runtime@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.1.1.tgz#569e1dc3c36c6c4c0b29516c1c49b6ad580abdaf" + integrity sha512-J89qEJWW0leOsqyi0D9zHpFEYHwwafFdS9xgvhFHtIdRghbadodI0eA+DrthK/1PebBv3Px8mFSMGKrtaVnleg== dependencies: - "@jest/console" "^27.0.6" - "@jest/environment" "^27.0.6" - "@jest/fake-timers" "^27.0.6" - "@jest/globals" "^27.0.6" - "@jest/source-map" "^27.0.6" - "@jest/test-result" "^27.0.6" - "@jest/transform" "^27.0.6" - "@jest/types" "^27.0.6" - "@types/yargs" "^16.0.0" + "@jest/environment" "^28.1.1" + "@jest/fake-timers" "^28.1.1" + "@jest/globals" "^28.1.1" + "@jest/source-map" "^28.0.2" + "@jest/test-result" "^28.1.1" + "@jest/transform" "^28.1.1" + "@jest/types" "^28.1.1" chalk "^4.0.0" cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" - exit "^0.1.2" + execa "^5.0.0" glob "^7.1.3" - graceful-fs "^4.2.4" - jest-haste-map "^27.0.6" - jest-message-util "^27.0.6" - jest-mock "^27.0.6" - jest-regex-util "^27.0.6" - jest-resolve "^27.0.6" - jest-snapshot "^27.0.6" - jest-util "^27.0.6" - jest-validate "^27.0.6" + graceful-fs "^4.2.9" + jest-haste-map "^28.1.1" + jest-message-util "^28.1.1" + jest-mock "^28.1.1" + jest-regex-util "^28.0.2" + jest-resolve "^28.1.1" + jest-snapshot "^28.1.1" + jest-util "^28.1.1" slash "^3.0.0" strip-bom "^4.0.0" - yargs "^16.0.3" -jest-serializer@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.0.6.tgz#93a6c74e0132b81a2d54623251c46c498bb5bec1" - integrity sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA== +jest-snapshot@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.1.1.tgz#ab825c16c8d8b5e883bd57eee6ca8748c42ab848" + integrity sha512-1KjqHJ98adRcbIdMizjF5DipwZFbvxym/kFO4g4fVZCZRxH/dqV8TiBFCa6rqic3p0karsy8RWS1y4E07b7P0A== dependencies: - "@types/node" "*" - graceful-fs "^4.2.4" - -jest-snapshot@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.0.6.tgz#f4e6b208bd2e92e888344d78f0f650bcff05a4bf" - integrity sha512-NTHaz8He+ATUagUgE7C/UtFcRoHqR2Gc+KDfhQIyx+VFgwbeEMjeP+ILpUTLosZn/ZtbNdCF5LkVnN/l+V751A== - dependencies: - "@babel/core" "^7.7.2" + "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" - "@babel/parser" "^7.7.2" "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/traverse" "^7.7.2" - "@babel/types" "^7.0.0" - "@jest/transform" "^27.0.6" - "@jest/types" "^27.0.6" - "@types/babel__traverse" "^7.0.4" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^28.1.1" + "@jest/transform" "^28.1.1" + "@jest/types" "^28.1.1" + "@types/babel__traverse" "^7.0.6" "@types/prettier" "^2.1.5" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^27.0.6" - graceful-fs "^4.2.4" - jest-diff "^27.0.6" - jest-get-type "^27.0.6" - jest-haste-map "^27.0.6" - jest-matcher-utils "^27.0.6" - jest-message-util "^27.0.6" - jest-resolve "^27.0.6" - jest-util "^27.0.6" + expect "^28.1.1" + graceful-fs "^4.2.9" + jest-diff "^28.1.1" + jest-get-type "^28.0.2" + jest-haste-map "^28.1.1" + jest-matcher-utils "^28.1.1" + jest-message-util "^28.1.1" + jest-util "^28.1.1" natural-compare "^1.4.0" - pretty-format "^27.0.6" - semver "^7.3.2" + pretty-format "^28.1.1" + semver "^7.3.5" -jest-util@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.0.6.tgz#e8e04eec159de2f4d5f57f795df9cdc091e50297" - integrity sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ== +jest-util@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.1.tgz#ff39e436a1aca397c0ab998db5a51ae2b7080d05" + integrity sha512-FktOu7ca1DZSyhPAxgxB6hfh2+9zMoJ7aEQA759Z6p45NuO8mWcqujH+UdHlCm/V6JTWwDztM2ITCzU1ijJAfw== dependencies: - "@jest/types" "^27.0.6" + "@jest/types" "^28.1.1" "@types/node" "*" chalk "^4.0.0" - graceful-fs "^4.2.4" - is-ci "^3.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.0.6.tgz#930a527c7a951927df269f43b2dc23262457e2a6" - integrity sha512-yhZZOaMH3Zg6DC83n60pLmdU1DQE46DW+KLozPiPbSbPhlXXaiUTDlhHQhHFpaqIFRrInko1FHXjTRpjWRuWfA== +jest-validate@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.1.1.tgz#59b7b339b3c85b5144bd0c06ad3600f503a4acc8" + integrity sha512-Kpf6gcClqFCIZ4ti5++XemYJWUPCFUW+N2gknn+KgnDf549iLul3cBuKVe1YcWRlaF8tZV8eJCap0eECOEE3Ug== dependencies: - "@jest/types" "^27.0.6" + "@jest/types" "^28.1.1" camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^27.0.6" + jest-get-type "^28.0.2" leven "^3.1.0" - pretty-format "^27.0.6" + pretty-format "^28.1.1" -jest-watcher@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.0.6.tgz#89526f7f9edf1eac4e4be989bcb6dec6b8878d9c" - integrity sha512-/jIoKBhAP00/iMGnTwUBLgvxkn7vsOweDrOTSPzc7X9uOyUtJIDthQBTI1EXz90bdkrxorUZVhJwiB69gcHtYQ== +jest-watcher@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.1.tgz#533597fb3bfefd52b5cd115cd916cffd237fb60c" + integrity sha512-RQIpeZ8EIJMxbQrXpJQYIIlubBnB9imEHsxxE41f54ZwcqWLysL/A0ZcdMirf+XsMn3xfphVQVV4EW0/p7i7Ug== dependencies: - "@jest/test-result" "^27.0.6" - "@jest/types" "^27.0.6" + "@jest/test-result" "^28.1.1" + "@jest/types" "^28.1.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - jest-util "^27.0.6" + emittery "^0.10.2" + jest-util "^28.1.1" string-length "^4.0.1" jest-worker@^26.0.0: @@ -5369,41 +5126,31 @@ jest-worker@^26.0.0: merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.0.6.tgz#a5fdb1e14ad34eb228cfe162d9f729cdbfa28aed" - integrity sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA== +jest-worker@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.1.tgz#3480c73247171dfd01eda77200f0063ab6a3bf28" + integrity sha512-Au7slXB08C6h+xbJPp7VIb6U0XX5Kc9uel/WFc6/rcTzGiaVCBRngBExSYuXSLFPULPSYU3cJ3ybS988lNFQhQ== dependencies: "@types/node" "*" merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest/-/jest-27.0.6.tgz#10517b2a628f0409087fbf473db44777d7a04505" - integrity sha512-EjV8aETrsD0wHl7CKMibKwQNQc3gIRBXlTikBmmHUeVMKaPFxdcUIBfoDqTSXDoGJIivAYGqCWVlzCSaVjPQsA== +jest@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest/-/jest-28.1.1.tgz#3c39a3a09791e16e9ef283597d24ab19a0df701e" + integrity sha512-qw9YHBnjt6TCbIDMPMpJZqf9E12rh6869iZaN08/vpOGgHJSAaLLUn6H8W3IAEuy34Ls3rct064mZLETkxJ2XA== dependencies: - "@jest/core" "^27.0.6" + "@jest/core" "^28.1.1" + "@jest/types" "^28.1.1" import-local "^3.0.2" - jest-cli "^27.0.6" + jest-cli "^28.1.1" -joi@^17.3.0: - version "17.3.0" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.3.0.tgz#f1be4a6ce29bc1716665819ac361dfa139fff5d2" - integrity sha512-Qh5gdU6niuYbUIUV5ejbsMiiFmBdw8Kcp8Buj2JntszCkCfxJ9Cz76OtHxOZMPXrt5810iDIXs+n1nNVoquHgg== - dependencies: - "@hapi/hoek" "^9.0.0" - "@hapi/topo" "^5.0.0" - "@sideway/address" "^4.1.0" - "@sideway/formula" "^3.0.0" - "@sideway/pinpoint" "^2.0.0" +joycon@^3.0.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" + integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== -jpeg-js@^0.4.2: - version "0.4.3" - resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.4.3.tgz#6158e09f1983ad773813704be80680550eff977b" - integrity sha512-ru1HWKek8octvUHFHvE5ZzQ1yAsJmIvRdGWvSoKV52XKyuyYA437QWDttXT8eZXDSbuMpHlLzPDZUPd6idIz+Q== - -js-base64@^2.1.8: +js-base64@^2.4.3: version "2.6.4" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4" integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== @@ -5426,39 +5173,6 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsdom@^16.6.0: - version "16.6.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.6.0.tgz#f79b3786682065492a3da6a60a4695da983805ac" - integrity sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg== - dependencies: - abab "^2.0.5" - acorn "^8.2.4" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.3.0" - data-urls "^2.0.0" - decimal.js "^10.2.1" - domexception "^2.0.1" - escodegen "^2.0.0" - form-data "^3.0.0" - html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.0" - parse5 "6.0.1" - saxes "^5.0.1" - symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.5.0" - ws "^7.4.5" - xml-name-validator "^3.0.0" - jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -5506,24 +5220,20 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" - integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== - dependencies: - minimist "^1.2.5" +json5@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== jsonc-parser@^2.2.1: version "2.3.0" resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-2.3.0.tgz#7c7fc988ee1486d35734faaaa866fadb00fa91ee" integrity sha512-b0EBt8SWFNnixVdvoR2ZtEGa9ZqLhbJnOjezn+WP+8kspFm+PFYDN8Z4Bc7pRlDjvuVcADSUkroIuTWWn/YiIA== -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" +jsonc-parser@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22" + integrity sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA== jsonfile@^6.0.1: version "6.0.1" @@ -5552,6 +5262,11 @@ jsx-ast-utils@^2.4.1: array-includes "^3.1.1" object.assign "^4.1.0" +kind-of@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" @@ -5610,17 +5325,6 @@ livereload@^0.9.1: opts ">= 1.2.0" ws "^6.2.1" -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - load-json-file@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" @@ -5639,14 +5343,6 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -5659,26 +5355,6 @@ lodash.debounce@^4.0.8: resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= -lodash.flattendeep@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" - integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= - -lodash.hasin@4.5.2: - version "4.5.2" - resolved "https://registry.yarnpkg.com/lodash.hasin/-/lodash.hasin-4.5.2.tgz#f91e352378d21ef7090b9e7687c2ca35c5b4d52a" - integrity sha1-+R41I3jSHvcJC552h8LKNcW01So= - -lodash.isempty@4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" - integrity sha1-b4bL7di+TsmHvpqvM8loTbGzHn4= - -lodash.isnil@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/lodash.isnil/-/lodash.isnil-4.0.0.tgz#49e28cd559013458c814c5479d3c663a21bfaa6c" - integrity sha1-SeKM1VkBNFjIFMVHnTxmOiG/qmw= - lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -5689,31 +5365,21 @@ lodash.merge@^4.6.0: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.omitby@4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.omitby/-/lodash.omitby-4.6.0.tgz#5c15ff4754ad555016b53c041311e8f079204791" - integrity sha1-XBX/R1StVVAWtTwEExHo8HkgR5E= - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= - lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.0.0, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@~4.17.10: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== - -lodash@^4.17.21, lodash@^4.7.0: +lodash@^4.17.11: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@~4.17.10: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + loglevel-colored-level-prefix@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz#6a40218fdc7ae15fc76c3d0f3e676c465388603e" @@ -5734,22 +5400,6 @@ loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -loud-rejection@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - -lru-cache@^4.0.1: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -5762,32 +5412,66 @@ lz-string@^1.4.4: resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= -magic-string@0.25.7, magic-string@^0.25.5, magic-string@^0.25.7: +magic-string@^0.25.7: version "0.25.7" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== dependencies: sourcemap-codec "^1.4.4" -make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: +magic-string@^0.26.2: + version "0.26.2" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.2.tgz#5331700e4158cd6befda738bb6b0c7b93c0d4432" + integrity sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A== + dependencies: + sourcemap-codec "^1.4.8" + +make-dir@^3.0.0, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: semver "^6.0.0" -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= +make-fetch-happen@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" + integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== dependencies: - tmpl "1.0.x" + agentkeepalive "^4.1.3" + cacache "^15.2.0" + http-cache-semantics "^4.1.0" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^6.0.0" + minipass "^3.1.3" + minipass-collect "^1.0.2" + minipass-fetch "^1.3.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.2" + promise-retry "^2.0.1" + socks-proxy-agent "^6.0.0" + ssri "^8.0.0" -map-obj@^1.0.0, map-obj@^1.0.1: +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +map-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= +map-obj@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" + integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== + mdn-data@2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" @@ -5798,31 +5482,23 @@ mdn-data@2.0.6: resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.6.tgz#852dc60fcaa5daa2e8cf6c9189c440ed3e042978" integrity sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA== -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -meow@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= +meow@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364" + integrity sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ== dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + "@types/minimist" "^1.2.0" + camelcase-keys "^6.2.2" + decamelize "^1.2.0" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "4.1.0" + normalize-package-data "^3.0.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.18.0" + yargs-parser "^20.2.3" merge-stream@^2.0.0: version "2.0.0" @@ -5834,11 +5510,6 @@ merge2@^1.2.3, merge2@^1.3.0: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - micromatch@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" @@ -5860,28 +5531,18 @@ mime-db@1.44.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.19, mime-types@~2.1.24: +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.19: version "2.1.27" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== dependencies: mime-db "1.44.0" -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - mime@>=2.4.6: version "2.4.7" resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.7.tgz#962aed9be0ed19c91fd7dc2ece5d7f4e89a90d74" integrity sha512-dhNd1uA2u397uQk3Nv5LM4lm93WYDUXFn3Fu291FJerns4jyTudqhIWe4W04YLy7Uk1tm1Ore04NpjRvQp/NPA== -mime@^2.4.6: - version "2.5.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.0.tgz#2b4af934401779806ee98026bb42e8c1ae1876b1" - integrity sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag== - mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -5892,6 +5553,11 @@ mimic-response@^2.0.0: resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43" integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + minimatch@^3.0.4, minimatch@~3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -5899,11 +5565,59 @@ minimatch@^3.0.4, minimatch@~3.0.2: dependencies: brace-expansion "^1.1.7" -minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: +minimist-options@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" + integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + kind-of "^6.0.3" + +minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-fetch@^1.3.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" + integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== + dependencies: + minipass "^3.1.0" + minipass-sized "^1.0.3" + minizlib "^2.0.0" + optionalDependencies: + encoding "^0.1.12" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + dependencies: + minipass "^3.0.0" + minipass@^3.0.0: version "3.1.3" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" @@ -5911,7 +5625,14 @@ minipass@^3.0.0: dependencies: yallist "^4.0.0" -minizlib@^2.1.1: +minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: + version "3.1.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee" + integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ== + dependencies: + yallist "^4.0.0" + +minizlib@^2.0.0, minizlib@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== @@ -5919,7 +5640,7 @@ minizlib@^2.1.1: minipass "^3.0.0" yallist "^4.0.0" -"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: +mkdirp@^0.5.1, mkdirp@~0.5.1: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -5936,17 +5657,12 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@^2.1.1: +ms@^2.0.0, ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -5966,15 +5682,20 @@ nan@^2.14.0: resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== +nanoid@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== +negotiator@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== nice-try@^1.0.4: version "1.0.5" @@ -5991,41 +5712,27 @@ node-gyp-build@~3.7.0: resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-3.7.0.tgz#daa77a4f547b9aed3e2aac779eaf151afd60ec8d" integrity sha512-L/Eg02Epx6Si2NXmedx+Okg+4UHqmaf3TNcxd50SF9NQGcJaON3AtU++kax69XV7YWz4tUspqZSAsVofhFKG2w== -node-gyp@^3.8.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" - integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== +node-gyp@^8.4.1: + version "8.4.1" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937" + integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w== dependencies: - fstream "^1.0.0" - glob "^7.0.3" - graceful-fs "^4.1.2" - mkdirp "^0.5.0" - nopt "2 || 3" - npmlog "0 || 1 || 2 || 3 || 4" - osenv "0" - request "^2.87.0" - rimraf "2" - semver "~5.3.0" - tar "^2.0.0" - which "1" + env-paths "^2.2.0" + glob "^7.1.4" + graceful-fs "^4.2.6" + make-fetch-happen "^9.1.0" + nopt "^5.0.0" + npmlog "^6.0.0" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.2" + which "^2.0.2" node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= - -node-preload@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" - integrity sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ== - dependencies: - process-on-spawn "^1.0.0" - node-releases@^1.1.61: version "1.1.61" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.61.tgz#707b0fca9ce4e11783612ba4a2fcba09047af16e" @@ -6036,36 +5743,32 @@ node-releases@^1.1.71: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.73.tgz#dd4e81ddd5277ff846b80b52bb40c49edf7a7b20" integrity sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== -node-sass@^4.14.1: - version "4.14.1" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.14.1.tgz#99c87ec2efb7047ed638fb4c9db7f3a42e2217b5" - integrity sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g== +node-releases@^2.0.2, node-releases@^2.0.3, node-releases@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" + integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== + +node-sass@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-7.0.1.tgz#ad4f6bc663de8acc0a9360db39165a1e2620aa72" + integrity sha512-uMy+Xt29NlqKCFdFRZyXKOTqGt+QaKHexv9STj2WeLottnlqZEEWx6Bj0MXNthmFRRdM/YwyNo/8Tr46TOM0jQ== dependencies: async-foreach "^0.1.3" - chalk "^1.1.1" - cross-spawn "^3.0.0" + chalk "^4.1.2" + cross-spawn "^7.0.3" gaze "^1.0.0" get-stdin "^4.0.1" glob "^7.0.3" - in-publish "^2.0.0" lodash "^4.17.15" - meow "^3.7.0" - mkdirp "^0.5.1" + meow "^9.0.0" nan "^2.13.2" - node-gyp "^3.8.0" - npmlog "^4.0.0" + node-gyp "^8.4.1" + npmlog "^5.0.0" request "^2.88.0" - sass-graph "2.2.5" + sass-graph "4.0.0" stdout-stream "^1.4.0" "true-case-path" "^1.0.2" -"nopt@2 || 3": - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= - dependencies: - abbrev "1" - nopt@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" @@ -6073,7 +5776,7 @@ nopt@^5.0.0: dependencies: abbrev "1" -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: +normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -6083,6 +5786,16 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" +normalize-package-data@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" + integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== + dependencies: + hosted-git-info "^4.0.1" + is-core-module "^2.5.0" + semver "^7.3.4" + validate-npm-package-license "^3.0.1" + normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -6100,7 +5813,7 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.1.2: +npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== @@ -6110,6 +5823,26 @@ npm-run-path@^4.0.1: gauge "~2.7.3" set-blocking "~2.0.0" +npmlog@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" + integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== + dependencies: + are-we-there-yet "^2.0.0" + console-control-strings "^1.1.0" + gauge "^3.0.0" + set-blocking "^2.0.0" + +npmlog@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== + dependencies: + are-we-there-yet "^3.0.0" + console-control-strings "^1.1.0" + gauge "^4.0.3" + set-blocking "^2.0.0" + nth-check@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" @@ -6122,50 +5855,12 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - -nyc@^15.1.0: - version "15.1.0" - resolved "https://registry.yarnpkg.com/nyc/-/nyc-15.1.0.tgz#1335dae12ddc87b6e249d5a1994ca4bdaea75f02" - integrity sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A== - dependencies: - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - caching-transform "^4.0.0" - convert-source-map "^1.7.0" - decamelize "^1.2.0" - find-cache-dir "^3.2.0" - find-up "^4.1.0" - foreground-child "^2.0.0" - get-package-type "^0.1.0" - glob "^7.1.6" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-hook "^3.0.0" - istanbul-lib-instrument "^4.0.0" - istanbul-lib-processinfo "^2.0.2" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - make-dir "^3.0.0" - node-preload "^0.2.1" - p-map "^3.0.0" - process-on-spawn "^1.0.0" - resolve-from "^5.0.0" - rimraf "^3.0.0" - signal-exit "^3.0.2" - spawn-wrap "^2.0.0" - test-exclude "^6.0.0" - yargs "^15.0.2" - oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -6180,6 +5875,11 @@ object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== +object-path@^0.11.8: + version "0.11.8" + resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.8.tgz#ed002c02bbdd0070b78a27455e8ae01fc14d4742" + integrity sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA== + object.assign@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" @@ -6227,14 +5927,7 @@ object.values@^1.1.0, object.values@^1.1.1: function-bind "^1.1.1" has "^1.0.3" -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - -once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@^1.3.0, once@^1.3.1: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -6253,7 +5946,7 @@ opener@1: resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== -optionator@^0.8.1, optionator@^0.8.3: +optionator@^0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== @@ -6282,28 +5975,13 @@ optionator@^0.9.1: resolved "https://registry.yarnpkg.com/opts/-/opts-2.0.2.tgz#a17e189fbbfee171da559edd8a42423bc5993ce1" integrity sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg== -os-homedir@^1.0.0, os-homedir@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: +os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@0: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -p-each-series@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" - integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ== +"overlayscrollbars@file:./packages/overlayscrollbars": + version "0.0.1" p-finally@^1.0.0: version "1.0.0" @@ -6317,7 +5995,7 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0, p-limit@^2.2.0: +p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== @@ -6331,13 +6009,6 @@ p-locate@^2.0.0: dependencies: p-limit "^1.1.0" -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" @@ -6352,6 +6023,13 @@ p-map@^3.0.0: dependencies: aggregate-error "^3.0.0" +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + p-queue@^6.4.0: version "6.6.1" resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.1.tgz#578891ada028a61371ec2692b26614d1b7d2b10a" @@ -6377,16 +6055,6 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -package-hash@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-4.0.0.tgz#3537f654665ec3cc38827387fc904c163c54f506" - integrity sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ== - dependencies: - graceful-fs "^4.1.15" - hasha "^5.0.0" - lodash.flattendeep "^4.4.0" - release-zalgo "^1.0.0" - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -6419,27 +6087,15 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - -parse5@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - -parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: - pinkie-promise "^2.0.0" + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" path-exists@^3.0.0: version "3.0.0" @@ -6471,19 +6127,10 @@ path-parse@^1.0.6: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= - -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-type@^2.0.0: version "2.0.0" @@ -6497,16 +6144,16 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= - performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1, picomatch@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" @@ -6522,24 +6169,10 @@ pify@^2.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - -pirates@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== - dependencies: - node-modules-regexp "^1.0.0" +pirates@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== pkg-dir@^2.0.0: version "2.0.0" @@ -6548,135 +6181,45 @@ pkg-dir@^2.0.0: dependencies: find-up "^2.1.0" -pkg-dir@^4.1.0, pkg-dir@^4.2.0: +pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: find-up "^4.0.0" -playwright-chromium@^1.12.3: - version "1.12.3" - resolved "https://registry.yarnpkg.com/playwright-chromium/-/playwright-chromium-1.12.3.tgz#fd8fe42a83b2bbaf616b01615e412f26cdc65859" - integrity sha512-YshYiT/ikEUNGU76lZu4qcfJscERo1257bS1dU1VcBZvz3xNMD2fO25vVOiDEbuYYntLcnj9lW6Qy1UpWSC+VA== +playwright-chromium@^1.22.2: + version "1.22.2" + resolved "https://registry.yarnpkg.com/playwright-chromium/-/playwright-chromium-1.22.2.tgz#9057602b75009848a37d9f75187ce3c928a44354" + integrity sha512-msRcdCIJkdM2R6S+NMJZ02uyZHzJ7TIzkjzs3usDJ1Pwacp9HMhv9T/S4AxtpFXFmvMZq7UJYb0x+tCdHx9+0w== dependencies: - commander "^6.1.0" - debug "^4.1.1" - extract-zip "^2.0.1" - https-proxy-agent "^5.0.0" - jpeg-js "^0.4.2" - mime "^2.4.6" - pngjs "^5.0.0" - progress "^2.0.3" - proper-lockfile "^4.1.1" - proxy-from-env "^1.1.0" - rimraf "^3.0.2" - stack-utils "^2.0.3" - ws "^7.4.6" - yazl "^2.5.1" + playwright-core "1.22.2" -playwright-core@>=1.2.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.8.0.tgz#3c2e8c52d21a032e68f2cdda91d107d9e6b79498" - integrity sha512-3FDiIMabIkamEOPqdjHrPA1puIElx3iYIaln1k5G8ZyGRubmPE9AijHyTXYqkavgteUp+Kb8QOeE13nlnQ++Fg== +playwright-core@1.22.2, playwright-core@^1.22.2: + version "1.22.2" + resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.22.2.tgz#ed2963d79d71c2a18d5a6fd25b60b9f0a344661a" + integrity sha512-w/hc/Ld0RM4pmsNeE6aL/fPNWw8BWit2tg+TfqJ3+p59c6s3B6C8mXvXrIPmfQEobkcFDc+4KirNzOQ+uBSP1Q== + +playwright-firefox@^1.22.2: + version "1.22.2" + resolved "https://registry.yarnpkg.com/playwright-firefox/-/playwright-firefox-1.22.2.tgz#5afff09ba92b20a0e5c549b5a269394dbf3bdc11" + integrity sha512-y586dCkRST345/m+baM28oPSquJV6eizkqyB97blFaNysnVY+1+RE9BzHq10asqecajoPlt+OvSnwFPH88EyPQ== dependencies: - commander "^6.1.0" - debug "^4.1.1" - extract-zip "^2.0.1" - https-proxy-agent "^5.0.0" - jpeg-js "^0.4.2" - mime "^2.4.6" - pngjs "^5.0.0" - progress "^2.0.3" - proper-lockfile "^4.1.1" - proxy-from-env "^1.1.0" - rimraf "^3.0.2" - ws "^7.3.1" + playwright-core "1.22.2" -playwright-core@^1.12.3: - version "1.12.3" - resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.12.3.tgz#897981da4ef674fbb1b35da3d4b9094bfa804d0e" - integrity sha512-7uCxloOH4JRVTdJa+PH0Lp+GqWHL7WjQwMT77TtGtBblgoVFuY7ZzVzXgAXtV0rfqq5xUvwaxFBS36fkgT2bNw== +playwright-webkit@^1.22.2: + version "1.22.2" + resolved "https://registry.yarnpkg.com/playwright-webkit/-/playwright-webkit-1.22.2.tgz#827ce870322e9e5f97c1f195032aaeab0a78ede0" + integrity sha512-WjgKJa6uHzj0g/B0cHjPuM9fdyGLjmGKYkYnepbyl9wtpkLzy7man01nyZ2ujigxhR0ux+u4Ix+jaCMKSdZReQ== dependencies: - commander "^6.1.0" - debug "^4.1.1" - extract-zip "^2.0.1" - https-proxy-agent "^5.0.0" - jpeg-js "^0.4.2" - mime "^2.4.6" - pngjs "^5.0.0" - progress "^2.0.3" - proper-lockfile "^4.1.1" - proxy-from-env "^1.1.0" - rimraf "^3.0.2" - stack-utils "^2.0.3" - ws "^7.4.6" - yazl "^2.5.1" + playwright-core "1.22.2" -playwright-firefox@^1.12.3: - version "1.12.3" - resolved "https://registry.yarnpkg.com/playwright-firefox/-/playwright-firefox-1.12.3.tgz#04e1ee263bcd92b758ebf3f13d734c7f8f03c936" - integrity sha512-Qm76eRRaQSq+v3otjww8L8pzMryPZohJOtpSaDOBMP8IlybqY8dvMvKN3ESmq61amBcME+Hldt06tTbpIkJFtw== +playwright@^1.22.2: + version "1.22.2" + resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.22.2.tgz#353a7c29f89ca9600edc7a9a30aed790823c797d" + integrity sha512-hUTpg7LytIl3/O4t0AQJS1V6hWsaSY5uZ7w1oCC8r3a1AQN5d6otIdCkiB3cbzgQkcMaRxisinjMFMVqZkybdQ== dependencies: - commander "^6.1.0" - debug "^4.1.1" - extract-zip "^2.0.1" - https-proxy-agent "^5.0.0" - jpeg-js "^0.4.2" - mime "^2.4.6" - pngjs "^5.0.0" - progress "^2.0.3" - proper-lockfile "^4.1.1" - proxy-from-env "^1.1.0" - rimraf "^3.0.2" - stack-utils "^2.0.3" - ws "^7.4.6" - yazl "^2.5.1" - -playwright-webkit@1.12.3: - version "1.12.3" - resolved "https://registry.yarnpkg.com/playwright-webkit/-/playwright-webkit-1.12.3.tgz#455e88ee7024677c45d062921ee101dde21ed630" - integrity sha512-a7GMKgY2gqhzKjbXNzqiS+YjFNoOtPYfuCBzkhzxBvixzxTjWv5uoQ0YYD4jV58bshVaPx7Wfh0hhMmBVp5Hdw== - dependencies: - commander "^6.1.0" - debug "^4.1.1" - extract-zip "^2.0.1" - https-proxy-agent "^5.0.0" - jpeg-js "^0.4.2" - mime "^2.4.6" - pngjs "^5.0.0" - progress "^2.0.3" - proper-lockfile "^4.1.1" - proxy-from-env "^1.1.0" - rimraf "^3.0.2" - stack-utils "^2.0.3" - ws "^7.4.6" - yazl "^2.5.1" - -playwright@^1.12.3: - version "1.12.3" - resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.12.3.tgz#113afa2cba10fb56e9a5b307377343e32a155a99" - integrity sha512-eyhHvZV7dMAUltqjQsgJ9CjZM8dznzN1+rcfCI6W6lfQ7IlPvTFGLuKOCcI4ETbjfbxqaS5FKIkb1WDDzq2Nww== - dependencies: - commander "^6.1.0" - debug "^4.1.1" - extract-zip "^2.0.1" - https-proxy-agent "^5.0.0" - jpeg-js "^0.4.2" - mime "^2.4.6" - pngjs "^5.0.0" - progress "^2.0.3" - proper-lockfile "^4.1.1" - proxy-from-env "^1.1.0" - rimraf "^3.0.2" - stack-utils "^2.0.3" - ws "^7.4.6" - yazl "^2.5.1" - -pngjs@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" - integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== + playwright-core "1.22.2" postcss-calc@^7.0.1: version "7.0.4" @@ -6995,6 +6538,15 @@ postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: source-map "^0.6.1" supports-color "^6.1.0" +postcss@^8.4.13: + version "8.4.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" + integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -7063,34 +6615,40 @@ pretty-format@^26.4.2: ansi-styles "^4.0.0" react-is "^16.12.0" -pretty-format@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.0.6.tgz#ab770c47b2c6f893a21aefc57b75da63ef49a11f" - integrity sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ== +pretty-format@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.1.tgz#f731530394e0f7fcd95aba6b43c50e02d86b95cb" + integrity sha512-wwJbVTGFHeucr5Jw2bQ9P+VYHyLdAqedFLEkdQUVaBF/eiidDwH5OpilINq4mEfhbCjLnirt6HTTDhv1HaTIQw== dependencies: - "@jest/types" "^27.0.6" - ansi-regex "^5.0.0" + "@jest/schemas" "^28.0.2" + ansi-regex "^5.0.1" ansi-styles "^5.0.0" - react-is "^17.0.1" + react-is "^18.0.0" process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -process-on-spawn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/process-on-spawn/-/process-on-spawn-1.0.0.tgz#95b05a23073d30a17acfdc92a440efd2baefdc93" - integrity sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg== - dependencies: - fromentries "^1.2.0" - -progress@^2.0.0, progress@^2.0.3: +progress@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -prompts@^2.0.1, prompts@^2.3.0: +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== + +promise-retry@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + dependencies: + err-code "^2.0.2" + retry "^0.12.0" + +prompts@^2.0.1: version "2.3.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== @@ -7098,14 +6656,6 @@ prompts@^2.0.1, prompts@^2.3.0: kleur "^3.0.3" sisteransi "^1.0.4" -prompts@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.1.tgz#befd3b1195ba052f9fd2fde8a486c4e82ee77f61" - integrity sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" @@ -7115,46 +6665,11 @@ prop-types@^15.7.2: object-assign "^4.1.1" react-is "^16.8.1" -proper-lockfile@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/proper-lockfile/-/proper-lockfile-4.1.1.tgz#284cf9db9e30a90e647afad69deb7cb06881262c" - integrity sha512-1w6rxXodisVpn7QYvLk706mzprPTAPCYAqxMvctmPN3ekuRk/kuGkGc82pangZiAt4R3lwSuUzheTTn0/Yb7Zg== - dependencies: - graceful-fs "^4.1.11" - retry "^0.12.0" - signal-exit "^3.0.2" - -proxy-addr@~2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" - integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== - dependencies: - forwarded "~0.1.2" - ipaddr.js "1.9.1" - -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - -psl@^1.1.28, psl@^1.1.33: +psl@^1.1.28: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" @@ -7165,16 +6680,16 @@ q@^1.1.2: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== - qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== +quick-lru@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== + randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -7182,21 +6697,6 @@ randombytes@^2.1.0: dependencies: safe-buffer "^5.1.0" -range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== - dependencies: - bytes "3.1.0" - http-errors "1.7.2" - iconv-lite "0.4.24" - unpipe "1.0.0" - react-is@^16.12.0, react-is@^16.8.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" @@ -7207,13 +6707,10 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" +react-is@^18.0.0: + version "18.1.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.1.0.tgz#61aaed3096d30eacf2a2127118b5b41387d32a67" + integrity sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg== read-pkg-up@^2.0.0: version "2.0.0" @@ -7223,14 +6720,14 @@ read-pkg-up@^2.0.0: find-up "^2.0.0" read-pkg "^2.0.0" -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" read-pkg@^2.0.0: version "2.0.0" @@ -7241,6 +6738,16 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + readable-stream@^2.0.1, readable-stream@^2.0.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" @@ -7254,6 +6761,15 @@ readable-stream@^2.0.1, readable-stream@^2.0.6: string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + readdirp@~3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" @@ -7261,13 +6777,20 @@ readdirp@~3.5.0: dependencies: picomatch "^2.2.1" -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" + indent-string "^4.0.0" + strip-indent "^3.0.0" + +regenerate-unicode-properties@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" + integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== + dependencies: + regenerate "^1.4.2" regenerate-unicode-properties@^8.2.0: version "8.2.0" @@ -7281,15 +6804,20 @@ regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.1.tgz#cad92ad8e6b591773485fbe05a485caf4f457e6f" integrity sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A== +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + regenerator-runtime@^0.13.4: version "0.13.7" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== +regenerator-transform@^0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537" + integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== dependencies: "@babel/runtime" "^7.8.4" @@ -7323,23 +6851,28 @@ regexpu-core@^4.7.0: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.2.0" -regexpu-core@^4.7.1: - version "4.7.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" - integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== +regexpu-core@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" + integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.0.1" + regjsgen "^0.6.0" + regjsparser "^0.8.2" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.0.0" regjsgen@^0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== +regjsgen@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" + integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== + regjsparser@^0.6.4: version "0.6.4" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" @@ -7347,21 +6880,14 @@ regjsparser@^0.6.4: dependencies: jsesc "~0.5.0" -release-zalgo@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" - integrity sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA= +regjsparser@^0.8.2: + version "0.8.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" + integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== dependencies: - es6-error "^4.0.1" + jsesc "~0.5.0" -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= - dependencies: - is-finite "^1.0.0" - -request@^2.87.0, request@^2.88.0: +request@^2.88.0: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -7392,11 +6918,6 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - require-relative@^0.8.7: version "0.8.7" resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de" @@ -7409,14 +6930,6 @@ resolve-cwd@^3.0.0: dependencies: resolve-from "^5.0.0" -resolve-dir@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" - integrity sha1-shklmlYC+sXFxJatiUpujMQwJh4= - dependencies: - expand-tilde "^1.2.2" - global-modules "^0.2.3" - resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" @@ -7432,7 +6945,12 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve@1.17.0, resolve@^1.10.0, resolve@^1.13.1, resolve@^1.14.1, resolve@^1.17.0, resolve@^1.3.2: +resolve.exports@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" + integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== + +resolve@^1.10.0, resolve@^1.13.1, resolve@^1.17.0: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== @@ -7455,6 +6973,15 @@ resolve@^1.19.0: is-core-module "^2.1.0" path-parse "^1.0.6" +resolve@^1.22.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" + integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== + dependencies: + is-core-module "^2.8.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -7483,13 +7010,6 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@2: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - rimraf@2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" @@ -7504,6 +7024,17 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" +rollup-plugin-esbuild@^4.9.1: + version "4.9.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-esbuild/-/rollup-plugin-esbuild-4.9.1.tgz#369d137e2b1542c8ee459495fd4f10de812666aa" + integrity sha512-qn/x7Wz9p3Xnva99qcb+nopH0d2VJwVnsxJTGEg+Sh2Z3tqQl33MhOwzekVo1YTKgv+yAmosjcBRJygMfGrtLw== + dependencies: + "@rollup/pluginutils" "^4.1.1" + debug "^4.3.3" + es-module-lexer "^0.9.3" + joycon "^3.0.1" + jsonc-parser "^3.0.0" + rollup-plugin-livereload@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/rollup-plugin-livereload/-/rollup-plugin-livereload-2.0.0.tgz#d3928d74e8cf2ae4286c5dd46b770fd3f3b82313" @@ -7511,18 +7042,6 @@ rollup-plugin-livereload@^2.0.0: dependencies: livereload "^0.9.1" -rollup-plugin-prettier@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-prettier/-/rollup-plugin-prettier-2.1.0.tgz#06b42169e28cb23163d4648bef412e57ff70acb4" - integrity sha512-2uPhHkBMVBZeb4cruQrYrjOTtoqHNvnUB5UIzmMu8JBXCfQ+0/JxDclEmnBd44MjO14VmXvfr0GanQaZjCxSbQ== - dependencies: - diff "4.0.2" - lodash.hasin "4.5.2" - lodash.isempty "4.4.0" - lodash.isnil "4.0.0" - lodash.omitby "4.6.0" - magic-string "0.25.7" - 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" @@ -7564,23 +7083,28 @@ rollup-plugin-terser@^6.1.0: serialize-javascript "^3.0.0" terser "^4.7.0" -rollup-plugin-typescript2@^0.27.1: - version "0.27.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.27.2.tgz#871a7f5d2a774f9cef50d25da868eec72acc2ed8" - integrity sha512-zarMH2F8oT/NO6p20gl/jkts+WxyzOlhOIUwUU/EDx5e6ewdDPS/flwLj5XFuijUCr64bZwqKuRVwCPdXXYefQ== +rollup-plugin-ts@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-ts/-/rollup-plugin-ts-3.0.1.tgz#aa66cbd16e4cedb28a73c892f449e858b3726566" + integrity sha512-qb+FDZyq1pljgXE+e2LqZH8L+FvS3a47ju/o+4sDd1OcM8P+CR6iH3jT2tjz0YIoJm9h1sj6ITVVBkux3EZ+XA== dependencies: - "@rollup/pluginutils" "^3.1.0" - find-cache-dir "^3.3.1" - fs-extra "8.1.0" - resolve "1.17.0" - tslib "2.0.1" + "@rollup/pluginutils" "^4.2.1" + "@wessberg/stringutil" "^1.0.19" + ansi-colors "^4.1.3" + browserslist "^4.20.3" + browserslist-generator "^1.0.66" + compatfactory "^1.0.1" + crosspath "^2.0.0" + magic-string "^0.26.2" + ts-clone-node "^1.0.0" + tslib "^2.4.0" -rollup@^2.36.1: - version "2.36.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.36.1.tgz#2174f0c25c7b400d57b05628d0e732c7ae8d2178" - integrity sha512-eAfqho8dyzuVvrGqpR0ITgEdq0zG2QJeWYh+HeuTbpcaXk8vNFc48B7bJa1xYosTCKx0CuW+447oQOW8HgBIZQ== +rollup@^2.59.0, rollup@^2.75.5: + version "2.75.5" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.75.5.tgz#7985c1962483235dd07966f09fdad5c5f89f16d0" + integrity sha512-JzNlJZDison3o2mOxVmb44Oz7t74EfSd1SQrplQk0wSaXV7uLQXtVdHbxlcT3w+8tZ1TL4r/eLfc7nAbz38BBA== optionalDependencies: - fsevents "~2.1.2" + fsevents "~2.3.2" run-async@^2.4.0: version "2.4.1" @@ -7592,64 +7116,52 @@ run-parallel@^1.1.9: resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== -rx@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" - integrity sha1-pfE/957zt0D+MKqAP7CfmIBdR4I= - -rxjs@^6.6.0, rxjs@^6.6.3: +rxjs@^6.6.0: version "6.6.3" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== dependencies: tslib "^1.9.0" -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sass-graph@2.2.5: - version "2.2.5" - resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.5.tgz#a981c87446b8319d96dce0671e487879bd24c2e8" - integrity sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag== +sass-graph@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-4.0.0.tgz#fff8359efc77b31213056dfd251d05dadc74c613" + integrity sha512-WSO/MfXqKH7/TS8RdkCX3lVkPFQzCgbqdGsmSKq6tlPU+GpGEsa/5aW18JqItnqh+lPtcjifqdZ/VmiILkKckQ== dependencies: glob "^7.0.0" - lodash "^4.0.0" - scss-tokenizer "^0.2.3" - yargs "^13.3.2" + lodash "^4.17.11" + scss-tokenizer "^0.3.0" + yargs "^17.2.1" sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== +scss-tokenizer@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.3.0.tgz#ef7edc3bc438b25cd6ffacf1aa5b9ad5813bf260" + integrity sha512-14Zl9GcbBvOT9057ZKjpz5yPOyUWG2ojd9D5io28wHRYsOrs7U95Q+KNL87+32p8rc+LvDpbu/i9ZYjM9Q+FsQ== dependencies: - xmlchars "^2.2.0" + js-base64 "^2.4.3" + source-map "^0.7.1" -scss-tokenizer@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" - integrity sha1-jrBtualyMzOCTT9VMGQRSYR85dE= - dependencies: - js-base64 "^2.1.8" - source-map "^0.4.2" - -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0: +"semver@2 || 3 || 4 || 5", semver@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -7676,29 +7188,12 @@ semver@^7.3.4, semver@^7.3.5: dependencies: lru-cache "^6.0.0" -semver@~5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" - integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= - -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== +semver@^7.3.7: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.7.2" - mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" + lru-cache "^6.0.0" serialize-javascript@^3.0.0: version "3.1.0" @@ -7707,26 +7202,11 @@ serialize-javascript@^3.0.0: dependencies: randombytes "^2.1.0" -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.1" - set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -7808,6 +7288,11 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== +signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + simple-concat@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" @@ -7829,7 +7314,7 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" -sisteransi@^1.0.4, sisteransi@^1.0.5: +sisteransi@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== @@ -7848,7 +7333,42 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" -source-map-support@^0.5.6, source-map-support@~0.5.12: +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + +socks-proxy-agent@^6.0.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz#2687a31f9d7185e38d530bef1944fe1f1496d6ce" + integrity sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ== + dependencies: + agent-base "^6.0.2" + debug "^4.3.3" + socks "^2.6.2" + +socks@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.2.tgz#ec042d7960073d40d94268ff3bb727dc685f111a" + integrity sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA== + dependencies: + ip "^1.1.5" + smart-buffer "^4.2.0" + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@~0.5.12: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -7856,13 +7376,6 @@ source-map-support@^0.5.6, source-map-support@~0.5.12: buffer-from "^1.0.0" source-map "^0.6.0" -source-map@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" - integrity sha1-66T12pwNyZneaAMti092FzZSA2s= - dependencies: - amdefine ">=0.0.4" - source-map@^0.5.0: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -7873,48 +7386,16 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3: +source-map@^0.7.1, source-map@^0.7.3: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== -sourcemap-codec@^1.4.4: +sourcemap-codec@^1.4.4, sourcemap-codec@^1.4.8: version "1.4.8" resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== -spawn-wrap@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-2.0.0.tgz#103685b8b8f9b79771318827aa78650a610d457e" - integrity sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg== - dependencies: - foreground-child "^2.0.0" - is-windows "^1.0.2" - make-dir "^3.0.0" - rimraf "^3.0.0" - signal-exit "^3.0.2" - which "^2.0.1" - -spawnd@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/spawnd/-/spawnd-4.4.0.tgz#bb52c5b34a22e3225ae1d3acb873b2cd58af0886" - integrity sha512-jLPOfB6QOEgMOQY15Z6+lwZEhH3F5ncXxIaZ7WHPIapwNNLyjrs61okj3VJ3K6tmP5TZ6cO0VAu9rEY4MD4YQg== - dependencies: - exit "^0.1.2" - signal-exit "^3.0.2" - tree-kill "^1.2.2" - wait-port "^0.2.7" - -spawnd@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/spawnd/-/spawnd-5.0.0.tgz#ea72200bdc468998e84e1c3e7b914ce85fc1c32c" - integrity sha512-28+AJr82moMVWolQvlAIv3JcYDkjkFTEmfDc503wxrF5l2rQ3dFz6DpbXp3kD4zmgGGldfM4xM4v1sFj/ZaIOA== - dependencies: - exit "^0.1.2" - signal-exit "^3.0.3" - tree-kill "^1.2.2" - wait-port "^0.2.9" - spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" @@ -7961,6 +7442,13 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" +ssri@^8.0.0, ssri@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== + dependencies: + minipass "^3.1.1" + stable@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" @@ -7973,11 +7461,6 @@ stack-utils@^2.0.3: dependencies: escape-string-regexp "^2.0.0" -"statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - stdout-stream@^1.4.0: version "1.4.1" resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de" @@ -8010,7 +7493,16 @@ string-width@^1.0.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string-width@^3.0.0, string-width@^3.1.0: +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== @@ -8056,6 +7548,13 @@ string.prototype.trimstart@^1.0.1: define-properties "^1.1.3" es-abstract "^1.17.5" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -8077,7 +7576,7 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: +strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== @@ -8091,12 +7590,12 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: - is-utf8 "^0.2.0" + ansi-regex "^5.0.1" strip-bom@^3.0.0: version "3.0.0" @@ -8113,12 +7612,12 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== dependencies: - get-stdin "^4.0.1" + min-indent "^1.0.0" strip-json-comments@^3.0.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" @@ -8175,6 +7674,11 @@ supports-hyperlinks@^2.0.0: has-flag "^4.0.0" supports-color "^7.0.0" +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + svgo@^1.0.0: version "1.3.2" resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" @@ -8194,11 +7698,6 @@ svgo@^1.0.0: unquote "~1.1.1" util.promisify "~1.0.0" -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - table@^5.2.3: version "5.4.6" resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" @@ -8209,14 +7708,17 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -tar@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" - integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== +tar@^6.0.2, tar@^6.1.2: + version "6.1.11" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" + integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== dependencies: - block-stream "*" - fstream "^1.0.12" - inherits "2" + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" tar@^6.1.0: version "6.1.0" @@ -8283,10 +7785,10 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" -tmpl@1.0.x: - version "1.0.4" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" - integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== to-fast-properties@^2.0.0: version "2.0.0" @@ -8300,20 +7802,6 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - -tough-cookie@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" - integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.1.2" - tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" @@ -8322,29 +7810,10 @@ tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" -tr46@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" - integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== - dependencies: - punycode "^2.1.1" - -tr46@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" - integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== - dependencies: - punycode "^2.1.1" - -tree-kill@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" - integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== - -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= +trim-newlines@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" + integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== "true-case-path@^1.0.2": version "1.0.3" @@ -8353,6 +7822,13 @@ trim-newlines@^1.0.0: dependencies: glob "^7.1.2" +ts-clone-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ts-clone-node/-/ts-clone-node-1.0.0.tgz#aaffa5478cf303471cec9c3c8169e117a0f87614" + integrity sha512-/cDYbr2HAXxFNeTT41c/xs/2bhLJjqnYheHsmA3AoHSt+n4JA4t0FL9Lk5O8kWnJ6jeB3kPcUoXIFtwERNzv6Q== + dependencies: + compatfactory "^1.0.1" + tsconfig-paths@^3.9.0: version "3.9.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" @@ -8363,20 +7839,20 @@ tsconfig-paths@^3.9.0: minimist "^1.2.0" strip-bom "^3.0.0" -tslib@2.0.1, tslib@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e" - integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ== - tslib@^1.8.1, tslib@^1.9.0: version "1.13.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== -tslib@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" - integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== +tslib@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e" + integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ== + +tslib@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== tsutils@^3.17.1: version "3.17.1" @@ -8428,41 +7904,51 @@ type-fest@^0.11.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== -type-fest@^0.8.0, type-fest@^0.8.1: +type-fest@^0.18.0: + version "0.18.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" + integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -type-is@~1.6.17, type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - typescript@^3.9.3: version "3.9.7" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== -typescript@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.2.tgz#399ab18aac45802d6f2498de5054fcbbe716a805" - integrity sha512-zZ4hShnmnoVnAHpVHWpTcxdv7dWP60S2FsydQLV8V5PbS3FifjWFFRiHSWpDJahly88PRyV5teTSLoq4eG7mKw== +typescript@^4.5.4: + version "4.7.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.2.tgz#1f9aa2ceb9af87cca227813b4310fff0b51593c4" + integrity sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A== + +typescript@^4.7.3: + version "4.7.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.3.tgz#8364b502d5257b540f9de4c40be84c98e23a129d" + integrity sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA== + +ua-parser-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.2.tgz#e2976c34dbfb30b15d2c300b2a53eac87c57a775" + integrity sha512-00y/AXhx0/SsnI51fTc0rLRmafiGOM4/O+ny10Ps7f+j/b8p/ZY11ytMgznXkOVo4GQ+KwQG5UQLkLGirsACRg== unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + unicode-match-property-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" @@ -8471,16 +7957,34 @@ unicode-match-property-ecmascript@^1.0.4: unicode-canonical-property-names-ecmascript "^1.0.4" unicode-property-aliases-ecmascript "^1.0.4" +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== +unicode-match-property-value-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" + integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== + unicode-property-aliases-ecmascript@^1.0.4: version "1.1.0" resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== +unicode-property-aliases-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" + integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== + uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" @@ -8491,21 +7995,25 @@ uniqs@^2.0.0: resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= -universalify@^0.1.0, universalify@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" universalify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - unquote@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" @@ -8525,7 +8033,7 @@ utf-8-validate@^5.0.2: dependencies: node-gyp-build "~3.7.0" -util-deprecate@~1.0.1: +util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= @@ -8540,34 +8048,24 @@ util.promisify@~1.0.0: has-symbols "^1.0.1" object.getownpropertydescriptors "^2.1.0" -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@^3.3.2, uuid@^3.3.3: +uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - v8-compile-cache@^2.0.3: version "2.1.1" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== -v8-to-istanbul@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.0.0.tgz#4229f2a99e367f3f018fa1d5c2b8ec684667c69c" - integrity sha512-LkmXi8UUNxnCC+JlH7/fsfsKr5AU110l+SYGJimWNkWhxbN5EyeOtm1MJ0hhvqMMOhGwBj1Fp70Yv9i+hX0QAg== +v8-to-istanbul@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.0.tgz#be0dae58719fc53cb97e5c7ac1d7e6d4f5b19511" + integrity sha512-HcvgY/xaRm7isYmyx+lFKA4uQmfUbN0J4M0nNItvzTvH/iQ9kW5j/t4YSR+Ge323/lrgDAWJoF46tzGQHwBHFw== dependencies: + "@jridgewell/trace-mapping" "^0.3.7" "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" - source-map "^0.7.3" validate-npm-package-license@^3.0.1: version "3.0.4" @@ -8577,11 +8075,6 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - vendors@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" @@ -8596,6 +8089,18 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +vite@^2.9.9: + version "2.9.9" + resolved "https://registry.yarnpkg.com/vite/-/vite-2.9.9.tgz#8b558987db5e60fedec2f4b003b73164cb081c5e" + integrity sha512-ffaam+NgHfbEmfw/Vuh6BHKKlI/XIAhxE5QSS7gFLIngxg171mg1P3a4LSRME0z2ZU1ScxoKzphkipcYwSD5Ew== + dependencies: + esbuild "^0.14.27" + postcss "^8.4.13" + resolve "^1.22.0" + rollup "^2.59.0" + optionalDependencies: + fsevents "~2.3.2" + vscode-json-languageservice@^3.7.0: version "3.8.3" resolved "https://registry.yarnpkg.com/vscode-json-languageservice/-/vscode-json-languageservice-3.8.3.tgz#fae5e7bdda2b6ec4f64588c571df40b6bfcb09b5" @@ -8639,111 +8144,21 @@ vue-eslint-parser@~7.1.0: esquery "^1.0.1" lodash "^4.17.15" -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== dependencies: - browser-process-hrtime "^1.0.0" + makeerror "1.0.12" -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== - dependencies: - xml-name-validator "^3.0.0" - -wait-on@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-3.3.0.tgz#9940981d047a72a9544a97b8b5fca45b2170a082" - integrity sha512-97dEuUapx4+Y12aknWZn7D25kkjMk16PbWoYzpSdA8bYpVfS6hpl2a2pOWZ3c+Tyt3/i4/pglyZctG3J4V1hWQ== - dependencies: - "@hapi/joi" "^15.0.3" - core-js "^2.6.5" - minimist "^1.2.0" - request "^2.88.0" - rx "^4.1.0" - -wait-on@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-5.3.0.tgz#584e17d4b3fe7b46ac2b9f8e5e102c005c2776c7" - integrity sha512-DwrHrnTK+/0QFaB9a8Ol5Lna3k7WvUR4jzSKmz0YaPBpuN2sACyiPVKVfj6ejnjcajAcvn3wlbTyMIn9AZouOg== - dependencies: - axios "^0.21.1" - joi "^17.3.0" - lodash "^4.17.21" - minimist "^1.2.5" - rxjs "^6.6.3" - -wait-port@^0.2.7, wait-port@^0.2.9: - version "0.2.9" - resolved "https://registry.yarnpkg.com/wait-port/-/wait-port-0.2.9.tgz#3905cf271b5dbe37a85c03b85b418b81cb24ee55" - integrity sha512-hQ/cVKsNqGZ/UbZB/oakOGFqic00YAMM5/PEj3Bt4vKarv2jWIWzDbqlwT94qMs/exAQAsvMOq99sZblV92zxQ== - dependencies: - chalk "^2.4.2" - commander "^3.0.2" - debug "^4.1.1" - -walker@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= - dependencies: - makeerror "1.0.x" - -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - -whatwg-url@^8.0.0: - version "8.2.2" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.2.2.tgz#85e7f9795108b53d554cec640b2e8aee2a0d4bfd" - integrity sha512-PcVnO6NiewhkmzV0qn7A+UZ9Xx4maNTI+O+TShmfE4pqjoCMwUMjkvoNhNHPTvgR7QH9Xt3R13iHuWy2sToFxQ== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^2.0.2" - webidl-conversions "^6.1.0" - -whatwg-url@^8.5.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" - integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== - dependencies: - lodash "^4.7.0" - tr46 "^2.1.0" - webidl-conversions "^6.1.0" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@1, which@^1.2.12, which@^1.2.9: +which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" -which@^2.0.1: +which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== @@ -8757,29 +8172,18 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" +wide-align@^1.1.2, wide-align@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + dependencies: + string-width "^1.0.2 || 2 || 3 || 4" + word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -8794,15 +8198,13 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== +write-file-atomic@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.1.tgz#9faa33a964c1c85ff6f849b80b42a88c2c537c8f" + integrity sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ== dependencies: imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" + signal-exit "^3.0.7" write@1.0.3: version "1.0.3" @@ -8818,41 +8220,11 @@ ws@^6.2.1: dependencies: async-limiter "~1.0.0" -ws@^7.3.1: - version "7.4.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.2.tgz#782100048e54eb36fe9843363ab1c68672b261dd" - integrity sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA== - -ws@^7.4.5, ws@^7.4.6: - version "7.5.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74" - integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== - y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" @@ -8863,84 +8235,25 @@ yaml@^1.7.2: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== -yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^20.2.2: +yargs-parser@^20.2.3: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs@^13.3.2: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" +yargs-parser@^21.0.0: + version "21.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" + integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== -yargs@^15.0.2: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - -yargs@^16.0.3: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== +yargs@^17.2.1, yargs@^17.3.1: + version "17.5.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e" + integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== dependencies: cliui "^7.0.2" escalade "^3.1.1" get-caller-file "^2.0.5" require-directory "^2.1.1" - string-width "^4.2.0" + string-width "^4.2.3" y18n "^5.0.5" - yargs-parser "^20.2.2" - -yauzl@^2.10.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" - -yazl@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/yazl/-/yazl-2.5.1.tgz#a3d65d3dd659a5b0937850e8609f22fffa2b5c35" - integrity sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw== - dependencies: - buffer-crc32 "~0.2.3" + yargs-parser "^21.0.0"