+
+> OverlayScrollbars is a javascript scrollbar plugin that hides native scrollbars, provides custom styleable overlay scrollbars and keeps the native functionality and feeling.
+
+## Why
+
+I've created this plugin because I hate ugly and space consuming scrollbars. Similar plugins haven't met my requirements in terms of features, quality, simplicity, license or browser support.
+
+## Goals & Features
+
+ - Simple, powerful and good documented API
+ - High browser compatibility - Firefox, Chrome, Opera, Edge, Safari 10+ and IE 11
+ - Tested on various devices - Mobile, Desktop and Tablet
+ - Tested with various (and mixed) inputs - Mouse, touch and pen
+ - Treeshaking - bundle only what you really need
+ - Automatic update detection - no polling
+ - Usage of latest browser features - best performance in new browsers
+ - Bidirectional - LTR or RTL direction support
+ - Simple and effective scrollbar styling
+ - TypeScript support - fully written in TypeScript
+
+## Getting started
+
+#### npm & Node
+OverlayScrollbars can be downloaded from [npm](https://www.npmjs.com/package/overlayscrollbars) or the package manager of your choice:
+```sh
+npm install overlayscrollbars
+```
+After installation it can be imported:
+```js
+import 'overlayscrollbars/overlayscrollbars.css';
+import { OverlayScrollbars } from 'overlayscrollbars';
+```
+
+
Manual download & embedding
+
+You can use OverlayScrollbars without any bundler or package manager.
+Simply download it from the [Releases](https://github.com/KingSora/OverlayScrollbars/releases) or use a [CDN](https://cdnjs.com/libraries/overlayscrollbars).
+
+- Use the javascript files with the `.browser` extension.
+- If you target old browsers use the `.es5` javascript file, for new browsers `.es6`.
+- For production use the javascript / stylesheet files with the `.min` extension.
+
+Embedd OverlayScrollbars manually in your HTML:
+```html
+
+
+```
+
+
+
+## Initialization
+
+> __Note__ During initialization its expected that the CSS file is loaded and parsed by the browser.
+
+You can initialize either directly with an `Element` or with an `Object` where you have more control over the initialization process.
+
+```js
+// simple initialization with an element
+const osInstance = OverlayScrollbars(document.querySelector('#myElement'), {});
+```
+
+
Initialization with an Object
+
+> __Note__ For now please refer to the TypeScript definitions for a more detailed description of all possibilities.
+
+The only required field is the `target` field. This is the field to which the plugin is applied to.
+If you use the object initialization only with the `target` field, the outcome is equivalent to the element initialization:
+```js
+// Both initializations have the same outcome
+
+OverlayScrollbars(document.querySelector('#myElement'), {});
+OverlayScrollbars({ target: document.querySelector('#myElement') }, {});
+```
+
+In the initialization object you can specify how the library is handling generated elements.
+For example you can appoint an existing element as the `viewport` element. Like this the library won't generate it but take the specified element instead:
+
+ ```js
+OverlayScrollbars({
+ target: document.querySelector('#target'),
+ elements: {
+ viewport: document.querySelector('#viewport'),
+ },
+}, {});
+```
+
+This is very useful if you have a fixed DOM structure and don't want OverlayScrollbars to generate its own elements. Those cases arise very often when you want an other library to work together with OverlayScrollbars.
+
+---
+
+You can also decide to which element the scrollbars should be applied to:
+
+ ```js
+OverlayScrollbars({
+ target: document.querySelector('#target'),
+ scrollbars: {
+ slot: document.querySelector('#target').parentElement,
+ },
+}, {});
+```
+
+---
+
+And last but not least you can decide when the initialization should be canceled:
+ ```js
+OverlayScrollbars({
+ target: document.querySelector('#target'),
+ cancel: {
+ nativeScrollbarsOverlaid: true,
+ body: null,
+ }
+}, {});
+```
+
+In the above example the initialization is canceled when the native scrollbars are overlaid or when your target is a `body` element and the plugin determined that a initialization to the `body` element would affect native functionality like `window.scrollTo`.
+
+
+
+## Options
+
+You can initialize OverlayScrollbars with an initial set of options, which can be changed at any time with the `options` method:
+```js
+OverlayScrollbars(document.querySelector('#myElement'), {
+ overflow: {
+ x: 'hidden',
+ },
+});
+```
+
+
Options in depth
+
+The default options are:
+```js
+const defaultOptions = {
+ paddingAbsolute: false,
+ showNativeOverlaidScrollbars: false,
+ update: {
+ elementEvents: [['img', 'load']],
+ debounce: [0, 33],
+ attributes: null,
+ ignoreMutation: null,
+ },
+ overflow: {
+ x: 'scroll',
+ y: 'scroll',
+ },
+ scrollbars: {
+ theme: 'os-theme-dark',
+ visibility: 'auto',
+ autoHide: 'never',
+ autoHideDelay: 1300,
+ dragScroll: true,
+ clickScroll: false,
+ pointers: ['mouse', 'touch', 'pen'],
+ },
+};
+```
+
+### `paddingAbsolute`
+
+| type | default |
+| :--- | :--- |
+| `boolean` | `false` |
+
+Indicates whether the padding for the content shall be absolute.
+
+### `showNativeOverlaidScrollbars`
+
+| type | default |
+| :--- | :--- |
+| `boolean` | `false` |
+
+Indicates whether the native overlaid scrollbars shall be visible.
+
+### `update.elementEvents`
+
+| type | default |
+| :--- | :--- |
+| `Array<[string, string]> \| null` | `[['img', 'load']]` |
+
+An array of tuples. The first value in the tuple is an `selector` and the second value are `event names`. The plugin will update itself if any of the elements with the specified selector will emit any specified event. The default value can be interpreted as "The plugin will update itself if any `img` element emits an `load` event."
+
+### `update.debounce`
+
+| type | default |
+| :--- | :--- |
+| `[number, number] \| number \| null` | `[0, 33]` |
+
+> __Note__ If 0 is used for the timeout, `requestAnimationFrame` instead of `setTimeout` is used for the debounce.
+
+Debounces the `MutationObserver` which tracks changes to the content. If a **tuple** is passed, the first value is the timeout and second is the max wait. If only a **number** is passed you specify only the timeout and there is no max wait. With **null** there is no debounce. **Usefull to fine-tune performance.**
+
+### `update.attributes`
+
+| type | default |
+| :--- | :--- |
+| `string[] \| null` | `null` |
+
+> __Note__ There is a base array of attributes that the `MutationObserver` always observes, even if this option is `null`.
+
+An array of additional attributes that the `MutationObserver` should observe for the content.
+
+### `update.ignoreMutation`
+
+| type | default |
+| :--- | :--- |
+| `((mutation) => any) \| null` | `null` |
+
+A function which receives a [`MutationRecord`](https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord) as an argument. If the function returns a truthy value the mutation will be ignored and the plugin won't update. **Usefull to fine-tune performance.**
+
+### `overflow.x`
+
+| type | default |
+| :--- | :--- |
+| `string` | `'scroll'` |
+
+> __Note__ Valid values are: `'hidden'`, `'scroll'`, `'visible'`, `'visible-hidden'` and `'visible-scroll'`.
+
+The overflow behavior for the horizontal (x) axis.
+
+### `overflow.y`
+
+| type | default |
+| :--- | :--- |
+| `string` | `'scroll'` |
+
+> __Note__ Valid values are: `'hidden'`, `'scroll'`, `'visible'`, `'visible-hidden'` and `'visible-scroll'`.
+
+The overflow behavior for the vertical (y) axis.
+
+### `scrollbars.theme`
+
+| type | default |
+| :--- | :--- |
+| `string \| null` | `'os-theme-dark'` |
+
+Applies the specified theme (classname) to the scrollbars.
+
+### `scrollbars.visibility`
+
+| type | default |
+| :--- | :--- |
+| `string` | `'auto'` |
+
+> __Note__ Valid values are: `'visible'`, `'hidden'`, and `'auto'`.
+
+The base visibility of the scrollbars.
+
+### `scrollbars.autoHide`
+
+| type | default |
+| :--- | :--- |
+| `string` | `'never'` |
+
+> __Note__ Valid values are: `'never'`, `'scroll'`, `'leave'` and `'move'`.
+
+The possibility to hide visible scrollbars automatically after a certain user action.
+
+### `scrollbars.autoHideDelay`
+
+| type | default |
+| :--- | :--- |
+| `number` | `1300` |
+
+The delay in milliseconds before the scrollbars are hidden automatically.
+
+### `scrollbars.dragScroll`
+
+| type | default |
+| :--- | :--- |
+| `boolean` | `true` |
+
+Indicates whether you can drag the scrollbar handles for scrolling.
+
+### `scrollbars.clickScroll`
+
+| type | default |
+| :--- | :--- |
+| `boolean` | `false` |
+
+Indicates whether you can click on the scrollbar track for scrolling.
+
+### `scrollbars.pointers`
+
+| type | default |
+| :--- | :--- |
+| `string[] \| null` | `['mouse', 'touch', 'pen']` |
+
+The [`PointerTypes`](https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/pointerType) the plugin should react to.
+
+
+
+## Events
+
+You can initialize OverlayScrollbars with an initial set of events, which can be managed at any time with the `on` and `off` methods:
+```js
+OverlayScrollbars(document.querySelector('#myElement'), {}, {
+ updated(osInstance, onUpdatedArgs) {
+ // ...
+ }
+});
+```
+
+
Events in depth
+
+> __Note__ Every event receives the `instance` from which it was fired as the first argument. Always.
+
+### `initialized`
+
+| arguments | description |
+| :--- | :--- |
+| `instance` | The instance which fired the event. |
+
+Is fired after all generated elements, observers and events were appended to the DOM.
+
+### `updated`
+
+| arguments | description |
+| :--- | :--- |
+| `instance` | The instance which fired the event. |
+| `onUpdatedArgs` | An `object` which describes the update in detail. |
+
+> __Note__ If an update was triggered but nothing changed, the event won't be fired.
+
+Is fired after the instace was updated.
+
+### `destroyed`
+
+| arguments | description |
+| :--- | :--- |
+| `instance` | The instance which fired the event. |
+| `canceled` | An `boolean` which indicates whether the initialization was canceled and thus destroyed. |
+
+Is fired after all generated elements, observers and events were removed from the DOM.
+
+
+
+## Instance Methods
+
+> __Note__ For now please refer to the TypeScript definitions for a more detailed description.
+
+```ts
+interface OverlayScrollbars {
+ options(): Options;
+ options(newOptions: DeepPartial): Options;
+
+ update(force?: boolean): OverlayScrollbars;
+
+ destroy(): void;
+
+ state(): State;
+
+ elements(): Elements;
+
+ on(name: N, listener: EventListener): () => void;
+ on(name: N, listener: EventListener[]): () => void;
+
+ off(name: N, listener: EventListener): void;
+ off(name: N, listener: EventListener[]): void;
+}
+```
+
+## Static Methods
+
+> __Note__ For now please refer to the TypeScript definitions for a more detailed description.
+
+```ts
+interface OverlayScrollbarsStatic {
+ (target: InitializationTarget): OverlayScrollbars | undefined;
+ (
+ target: InitializationTarget,
+ options: DeepPartial,
+ eventListeners?: InitialEventListeners
+ ): OverlayScrollbars;
+
+ plugin(plugin: Plugin | Plugin[]): void;
+ valid(osInstance: any): boolean;
+ env(): Environment;
+}
+```
+
+## Sponsors
+
+ Thanks to BrowserStack for sponsoring open source projects and letting me test OverlayScrollbars for free.
+
+
+
+
+## Future Plans
+
+ - Provide plugin based support for missing features. (treeshakeable)
+ - Frequent updates in terms of bug-fixes and enhancements. (always use latest browser features)
+ - Improve tests. (unit & browser tests)
+
+## License
+
+MIT
\ No newline at end of file
diff --git a/local/browser-testing/dist/Resize.d.ts b/local/browser-testing/dist/Resize.d.ts
deleted file mode 100644
index a54fa67..0000000
--- a/local/browser-testing/dist/Resize.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-declare type ResizeListener = (width: number, height: number) => void;
-export declare const resize: (element: HTMLElement) => {
- addResizeListener(listener: ResizeListener): void;
-};
-export {};
diff --git a/local/browser-testing/dist/Resize.js b/local/browser-testing/dist/Resize.js
deleted file mode 100644
index 2c30672..0000000
--- a/local/browser-testing/dist/Resize.js
+++ /dev/null
@@ -1,73 +0,0 @@
-// @ts-ignore
-import { createDiv, appendChildren, parent, style, on, off, addClass, clientSize, each, } from './support';
-export const resize = (element) => {
- const resizeListeners = [];
- const strMouseTouchDownEvent = 'mousedown touchstart';
- const strMouseTouchUpEvent = 'mouseup touchend';
- const strMouseTouchMoveEvent = 'mousemove touchmove';
- const strSelectStartEvent = 'selectstart';
- const dragStartSize = { w: 0, h: 0 };
- const dragStartPosition = { x: 0, y: 0 };
- const resizeBtn = createDiv('resizeBtn');
- appendChildren(element, resizeBtn);
- addClass(element, 'resizer');
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- let dragResizeBtn;
- let dragResizer;
- const onSelectStart = (event) => {
- event.preventDefault();
- return false;
- };
- const resizerResize = (event) => {
- const isTouchEvent = event.touches !== undefined;
- const mouseOffsetHolder = isTouchEvent
- ? event.touches[0]
- : event;
- const sizeStyle = {
- width: dragStartSize.w + mouseOffsetHolder.pageX - dragStartPosition.x,
- height: dragStartSize.h + mouseOffsetHolder.pageY - dragStartPosition.y,
- };
- style(dragResizer, sizeStyle);
- each(resizeListeners, (listener) => {
- if (listener) {
- listener(sizeStyle.width, sizeStyle.height);
- }
- });
- event.stopPropagation();
- };
- const resizerResized = () => {
- off(document, strSelectStartEvent, onSelectStart);
- off(document, strMouseTouchMoveEvent, resizerResize);
- off(document, strMouseTouchUpEvent, resizerResized);
- dragResizer = undefined;
- dragResizeBtn = undefined;
- };
- on(resizeBtn, strMouseTouchDownEvent, (event) => {
- const { currentTarget } = event;
- const correctButton = event.buttons === 1 || event.which === 1;
- const isTouchEvent = event.touches !== undefined;
- const mouseOffsetHolder = isTouchEvent
- ? event.touches[0]
- : event;
- if (correctButton || isTouchEvent) {
- dragStartPosition.x = mouseOffsetHolder.pageX;
- dragStartPosition.y = mouseOffsetHolder.pageY;
- dragResizeBtn = currentTarget;
- dragResizer = parent(currentTarget);
- const cSize = clientSize(element);
- dragStartSize.w = cSize.w;
- dragStartSize.h = cSize.h;
- on(document, strSelectStartEvent, onSelectStart, { _passive: false });
- on(document, strMouseTouchMoveEvent, resizerResize, { _passive: false });
- on(document, strMouseTouchUpEvent, resizerResized, { _passive: false });
- event.preventDefault();
- event.stopPropagation();
- }
- }, { _passive: false });
- return {
- addResizeListener(listener) {
- resizeListeners.push(listener);
- },
- };
-};
-//# sourceMappingURL=resize.js.map
\ No newline at end of file
diff --git a/local/browser-testing/dist/Resize.js.map b/local/browser-testing/dist/Resize.js.map
deleted file mode 100644
index 022a355..0000000
--- a/local/browser-testing/dist/Resize.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"resize.js","sourceRoot":"","sources":["../src/resize.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/local/browser-testing/dist/Select.d.ts b/local/browser-testing/dist/Select.d.ts
deleted file mode 100644
index 5005192..0000000
--- a/local/browser-testing/dist/Select.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-export declare const generateSelectCallback: (targetElms: HTMLElement[] | HTMLElement | null, callback: (targetAffectedElm: HTMLElement, possibleValues: string[], selectedValue: string) => any) => (event: Event | HTMLSelectElement | null) => void;
-export declare const generateClassChangeSelectCallback: (targetElms: HTMLElement[] | HTMLElement | null) => (event: Event | HTMLSelectElement | null) => void;
-export declare const selectOption: (select: HTMLSelectElement | null, selectedOption: string | number) => boolean;
-export declare const iterateSelect: (select: HTMLSelectElement | null, options?: {
- filter?: ((value: string, index: number, array: string[]) => boolean) | undefined;
- beforeEach?: (() => T | Promise) | undefined;
- check?: ((input: T, selectedOptions: string) => void | Promise) | undefined;
- afterEach?: (() => void | Promise) | undefined;
-} | undefined) => Promise;
diff --git a/local/browser-testing/dist/Select.js b/local/browser-testing/dist/Select.js
deleted file mode 100644
index 39582de..0000000
--- a/local/browser-testing/dist/Select.js
+++ /dev/null
@@ -1,75 +0,0 @@
-function isEvent(obj) {
- return obj instanceof Event || !!obj.target;
-}
-// eslint-disable-next-line
-const noop = () => {
- return {};
-};
-const getSelectOptions = (selectElement) => Array.from(selectElement.options).map((option) => option.value);
-export const generateSelectCallback = (targetElms, callback) => (event) => {
- const target = isEvent(event)
- ? event.target
- : event;
- if (target) {
- const selectedOption = target.value;
- const selectOptions = getSelectOptions(target);
- const elmsArr = Array.isArray(targetElms) ? targetElms : [targetElms];
- elmsArr.forEach((elm) => {
- if (elm) {
- callback(elm, selectOptions, selectedOption);
- }
- });
- }
-};
-export const generateClassChangeSelectCallback = (targetElms) => generateSelectCallback(targetElms, (targetAffectedElm, possibleValues, selectedValue) => {
- possibleValues.forEach((clazz) => targetAffectedElm.classList.remove(clazz));
- targetAffectedElm.classList.add(selectedValue);
-});
-export const selectOption = (select, selectedOption) => {
- if (!select) {
- return false;
- }
- const options = getSelectOptions(select);
- const currValue = select.value;
- if (selectedOption === currValue) {
- return false;
- }
- if (typeof selectedOption === 'string' && options.includes(selectedOption)) {
- select.value = selectedOption;
- }
- else if (typeof selectedOption === 'number' &&
- options.length < selectedOption &&
- selectedOption > -1) {
- select.selectedIndex = selectedOption;
- }
- let event;
- if (typeof Event === 'function') {
- event = new Event('change');
- }
- else {
- event = document.createEvent('Event');
- event.initEvent('change', true, true);
- }
- select.dispatchEvent(event);
- return true;
-};
-export const iterateSelect = async (select, options) => {
- if (select) {
- const { beforeEach = noop, check = noop, afterEach = noop, filter } = options || {};
- const selectOptions = getSelectOptions(select);
- const selectOptionsReversed = getSelectOptions(select).reverse();
- const iterateOptions = [...selectOptions, ...selectOptionsReversed].filter(filter || (() => true));
- for (let i = 0; i < iterateOptions.length; i++) {
- const option = iterateOptions[i];
- // eslint-disable-next-line
- const beforeEachObj = await beforeEach();
- if (selectOption(select, option)) {
- // eslint-disable-next-line
- await check(beforeEachObj, option);
- // eslint-disable-next-line
- await afterEach();
- }
- }
- }
-};
-//# sourceMappingURL=select.js.map
\ No newline at end of file
diff --git a/local/browser-testing/dist/Select.js.map b/local/browser-testing/dist/Select.js.map
deleted file mode 100644
index d17354a..0000000
--- a/local/browser-testing/dist/Select.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"select.js","sourceRoot":"","sources":["../src/select.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/local/browser-testing/dist/TestResult.d.ts b/local/browser-testing/dist/TestResult.d.ts
deleted file mode 100644
index 55f61b8..0000000
--- a/local/browser-testing/dist/TestResult.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-import { waitForOptions } from '@testing-library/dom';
-export declare const setTestResult: (result: boolean | null) => void;
-export declare const testPassed: () => boolean;
-export declare const waitForOrFailTest: (callback: () => T | Promise, options?: waitForOptions) => Promise;
diff --git a/local/browser-testing/dist/TestResult.js b/local/browser-testing/dist/TestResult.js
deleted file mode 100644
index a305046..0000000
--- a/local/browser-testing/dist/TestResult.js
+++ /dev/null
@@ -1,30 +0,0 @@
-import { waitFor } from '@testing-library/dom';
-const getTestResultElm = () => document.getElementById('testResult');
-export const setTestResult = (result) => {
- const elm = getTestResultElm();
- if (elm) {
- if (typeof result === 'boolean') {
- if (result) {
- if (elm.getAttribute('class') === 'failed') {
- return;
- }
- }
- elm.setAttribute('class', result ? 'passed' : 'failed');
- }
- else {
- elm.removeAttribute('class');
- }
- }
-};
-export const testPassed = () => {
- const elm = getTestResultElm();
- return elm ? elm.getAttribute('class') === 'passed' : false;
-};
-export const waitForOrFailTest = (callback, options) => waitFor(callback, {
- ...options,
- onTimeout(error) {
- setTestResult(false);
- return error;
- },
-});
-//# sourceMappingURL=testResult.js.map
\ No newline at end of file
diff --git a/local/browser-testing/dist/TestResult.js.map b/local/browser-testing/dist/TestResult.js.map
deleted file mode 100644
index d5371e5..0000000
--- a/local/browser-testing/dist/TestResult.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"testResult.js","sourceRoot":"","sources":["../src/testResult.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAkB,MAAM,sBAAsB,CAAC;AAE/D,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;AAErE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAsB,EAAE,EAAE;IACtD,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG,EAAE;QACP,IAAI,OAAO,MAAM,KAAK,SAAS,EAAE;YAC/B,IAAI,MAAM,EAAE;gBACV,IAAI,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,QAAQ,EAAE;oBAC1C,OAAO;iBACR;aACF;YACD,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;SACzD;aAAM;YACL,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;SAC9B;KACF;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,GAAY,EAAE;IACtC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAI,QAA8B,EAAE,OAAwB,EAAE,EAAE,CAC/F,OAAO,CAAC,QAAQ,EAAE;IAChB,GAAG,OAAO;IACV,SAAS,CAAC,KAAY;QACpB,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC,CAAC"}
\ No newline at end of file
diff --git a/local/browser-testing/dist/Timeout.d.ts b/local/browser-testing/dist/Timeout.d.ts
deleted file mode 100644
index 675b643..0000000
--- a/local/browser-testing/dist/Timeout.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export declare const timeout: (ms: number) => Promise;
diff --git a/local/browser-testing/dist/Timeout.js b/local/browser-testing/dist/Timeout.js
deleted file mode 100644
index c3a12a9..0000000
--- a/local/browser-testing/dist/Timeout.js
+++ /dev/null
@@ -1,4 +0,0 @@
-export const timeout = (ms) => new Promise((resolve) => {
- setTimeout(resolve, ms);
-});
-//# sourceMappingURL=timeout.js.map
\ No newline at end of file
diff --git a/local/browser-testing/dist/Timeout.js.map b/local/browser-testing/dist/Timeout.js.map
deleted file mode 100644
index a8864ff..0000000
--- a/local/browser-testing/dist/Timeout.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"timeout.js","sourceRoot":"","sources":["../src/timeout.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,EAAE,CACpC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;IACtB,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC"}
\ No newline at end of file
diff --git a/local/browser-testing/dist/index.d.ts b/local/browser-testing/dist/index.d.ts
deleted file mode 100644
index 4468f70..0000000
--- a/local/browser-testing/dist/index.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export * from './select';
-export * from './testResult';
-export * from './timeout';
-export * from './resize';
diff --git a/local/browser-testing/dist/index.js b/local/browser-testing/dist/index.js
deleted file mode 100644
index 0c5df2e..0000000
--- a/local/browser-testing/dist/index.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export * from './select';
-export * from './testResult';
-export * from './timeout';
-export * from './resize';
-//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/local/browser-testing/dist/index.js.map b/local/browser-testing/dist/index.js.map
deleted file mode 100644
index fe3ff1d..0000000
--- a/local/browser-testing/dist/index.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC"}
\ No newline at end of file
diff --git a/local/browser-testing/dist/support/dom/class.d.ts b/local/browser-testing/dist/support/dom/class.d.ts
deleted file mode 100644
index 2e05d23..0000000
--- a/local/browser-testing/dist/support/dom/class.d.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-declare type ClassContainingElement = Node | Element | false | null | undefined;
-declare type ClassName = string | false | null | undefined;
-/**
- * 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: ClassContainingElement, className: ClassName) => boolean;
-/**
- * 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: ClassContainingElement, className: ClassName) => void;
-/**
- * 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)
- * @returns A function which removes the added class name(s).
- */
-export declare const addClass: (elm: ClassContainingElement, className: ClassName) => (() => 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: ClassName, classNameB: ClassName) => string[];
-export {};
diff --git a/local/browser-testing/dist/support/dom/class.js b/local/browser-testing/dist/support/dom/class.js
deleted file mode 100644
index 87041ee..0000000
--- a/local/browser-testing/dist/support/dom/class.js
+++ /dev/null
@@ -1,65 +0,0 @@
-import { isString } from '../utils/types';
-import { each } from '../utils/array';
-import { keys } from '../utils/object';
-const rnothtmlwhite = /[^\x20\t\r\n\f]+/g;
-const classListAction = (elm, className, action) => {
- const classList = elm && elm.classList;
- let clazz;
- let i = 0;
- let result = false;
- if (classList && className && isString(className)) {
- const classes = className.match(rnothtmlwhite) || [];
- result = classes.length > 0;
- while ((clazz = classes[i++])) {
- result = !!action(classList, clazz) && result;
- }
- }
- return result;
-};
-/**
- * Check whether the given element has the given class name(s).
- * @param elm The element.
- * @param className The class name(s).
- */
-export const hasClass = (elm, className) => classListAction(elm, className, (classList, clazz) => classList.contains(clazz));
-/**
- * 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 const removeClass = (elm, className) => {
- classListAction(elm, className, (classList, clazz) => classList.remove(clazz));
-};
-/**
- * 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)
- * @returns A function which removes the added class name(s).
- */
-export const addClass = (elm, className) => {
- classListAction(elm, className, (classList, clazz) => classList.add(clazz));
- return removeClass.bind(0, elm, className);
-};
-/**
- * Takes two className strings, compares them and returns the difference as array.
- * @param classNameA ClassName A.
- * @param classNameB ClassName B.
- */
-export const diffClass = (classNameA, classNameB) => {
- const classNameASplit = classNameA && classNameA.split(' ');
- const classNameBSplit = classNameB && classNameB.split(' ');
- const tempObj = {};
- each(classNameASplit, (className) => {
- tempObj[className] = 1;
- });
- each(classNameBSplit, (className) => {
- if (tempObj[className]) {
- delete tempObj[className];
- }
- else {
- tempObj[className] = 1;
- }
- });
- return keys(tempObj);
-};
-//# sourceMappingURL=class.js.map
\ No newline at end of file
diff --git a/local/browser-testing/dist/support/dom/class.js.map b/local/browser-testing/dist/support/dom/class.js.map
deleted file mode 100644
index 2ff320a..0000000
--- a/local/browser-testing/dist/support/dom/class.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"class.js","sourceRoot":"","sources":["../../../src/support/dom/class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAKvC,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAC1C,MAAM,eAAe,GAAG,CACtB,GAA2B,EAC3B,SAAoB,EACpB,MAAqE,EAC5D,EAAE;IACX,MAAM,SAAS,GAAG,GAAG,IAAK,GAAe,CAAC,SAAS,CAAC;IACpD,IAAI,KAAa,CAAC;IAClB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,IAAI,SAAS,IAAI,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE;QACjD,MAAM,OAAO,GAAkB,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QACpE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5B,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YAC7B,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC;SAC/C;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAA2B,EAAE,SAAoB,EAAW,EAAE,CACrF,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAEnF;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAA2B,EAAE,SAAoB,EAAQ,EAAE;IACrF,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACjF,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAA2B,EAAE,SAAoB,EAAgB,EAAE;IAC1F,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5E,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,UAAqB,EAAE,UAAqB,EAAE,EAAE;IACxE,MAAM,eAAe,GAAG,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5D,MAAM,eAAe,GAAG,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,EAAE,CAAC;IAEnB,IAAI,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,EAAE;QAClC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,EAAE;QAClC,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;YACtB,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;SAC3B;aAAM;YACL,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;SACxB;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC,CAAC"}
\ No newline at end of file
diff --git a/local/browser-testing/dist/support/dom/create.d.ts b/local/browser-testing/dist/support/dom/create.d.ts
deleted file mode 100644
index ad152ab..0000000
--- a/local/browser-testing/dist/support/dom/create.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Creates a div DOM node.
- */
-export declare const createDiv: (classNames?: string) => 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/local/browser-testing/dist/support/dom/create.js b/local/browser-testing/dist/support/dom/create.js
deleted file mode 100644
index 2586096..0000000
--- a/local/browser-testing/dist/support/dom/create.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import { each } from '../utils/array';
-import { contents } from './traversal';
-import { removeElements } from './manipulation';
-/**
- * Creates a div DOM node.
- */
-export const createDiv = (classNames) => {
- const div = document.createElement('div');
- if (classNames) {
- div.setAttribute('class', classNames);
- }
- return div;
-};
-/**
- * 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 const createDOM = (html) => {
- const createdDiv = createDiv();
- createdDiv.innerHTML = html.trim();
- return each(contents(createdDiv), (elm) => removeElements(elm));
-};
-//# sourceMappingURL=create.js.map
\ No newline at end of file
diff --git a/local/browser-testing/dist/support/dom/create.js.map b/local/browser-testing/dist/support/dom/create.js.map
deleted file mode 100644
index 36a7411..0000000
--- a/local/browser-testing/dist/support/dom/create.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/support/dom/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,UAAmB,EAAkB,EAAE;IAC/D,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,UAAU,EAAE;QACd,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;KACvC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAuB,EAAE;IAC7D,MAAM,UAAU,GAAG,SAAS,EAAE,CAAC;IAC/B,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAEnC,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;AAClE,CAAC,CAAC"}
\ No newline at end of file
diff --git a/local/browser-testing/dist/support/dom/dimensions.d.ts b/local/browser-testing/dist/support/dom/dimensions.d.ts
deleted file mode 100644
index aa7051e..0000000
--- a/local/browser-testing/dist/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 | false | 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 | false | 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 | false | null | undefined) => boolean;
diff --git a/local/browser-testing/dist/support/dom/dimensions.js b/local/browser-testing/dist/support/dom/dimensions.js
deleted file mode 100644
index 38faf6c..0000000
--- a/local/browser-testing/dist/support/dom/dimensions.js
+++ /dev/null
@@ -1,53 +0,0 @@
-const elementHasDimensions = (elm) => !!(elm.offsetWidth || elm.offsetHeight || elm.getClientRects().length);
-const zeroObj = {
- w: 0,
- h: 0,
-};
-/**
- * Returns the window inner- width and height.
- */
-export const windowSize = () => ({
- w: window.innerWidth,
- h: window.innerHeight,
-});
-/**
- * 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 const offsetSize = (elm) => elm
- ? {
- w: elm.offsetWidth,
- h: elm.offsetHeight,
- }
- : zeroObj;
-/**
- * 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 const clientSize = (elm) => elm
- ? {
- w: elm.clientWidth,
- h: elm.clientHeight,
- }
- : zeroObj;
-/**
- * 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 const scrollSize = (elm) => elm
- ? {
- w: elm.scrollWidth,
- h: elm.scrollHeight,
- }
- : zeroObj;
-/**
- * Returns the BoundingClientRect of the passed element.
- * @param elm The element of which the BoundingClientRect shall be returned.
- */
-export const getBoundingClientRect = (elm) => elm.getBoundingClientRect();
-/**
- * Determines whether the passed element has any dimensions.
- * @param elm The element.
- */
-export const hasDimensions = (elm) => elm ? elementHasDimensions(elm) : false;
-//# sourceMappingURL=dimensions.js.map
\ No newline at end of file
diff --git a/local/browser-testing/dist/support/dom/dimensions.js.map b/local/browser-testing/dist/support/dom/dimensions.js.map
deleted file mode 100644
index 08e9ae5..0000000
--- a/local/browser-testing/dist/support/dom/dimensions.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"dimensions.js","sourceRoot":"","sources":["../../../src/support/dom/dimensions.ts"],"names":[],"mappings":"AAKA,MAAM,oBAAoB,GAAG,CAAC,GAAgB,EAAW,EAAE,CACzD,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC;AACzE,MAAM,OAAO,GAAO;IAClB,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;CACL,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,GAAO,EAAE,CAAC,CAAC;IACnC,CAAC,EAAE,MAAM,CAAC,UAAU;IACpB,CAAC,EAAE,MAAM,CAAC,WAAW;CACtB,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAmC,EAAM,EAAE,CACpE,GAAG;IACD,CAAC,CAAC;QACE,CAAC,EAAE,GAAG,CAAC,WAAW;QAClB,CAAC,EAAE,GAAG,CAAC,YAAY;KACpB;IACH,CAAC,CAAC,OAAO,CAAC;AAEd;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAA2C,EAAM,EAAE,CAC5E,GAAG;IACD,CAAC,CAAC;QACE,CAAC,EAAE,GAAG,CAAC,WAAW;QAClB,CAAC,EAAE,GAAG,CAAC,YAAY;KACpB;IACH,CAAC,CAAC,OAAO,CAAC;AAEd;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAA2C,EAAM,EAAE,CAC5E,GAAG;IACD,CAAC,CAAC;QACE,CAAC,EAAE,GAAG,CAAC,WAAW;QAClB,CAAC,EAAE,GAAG,CAAC,YAAY;KACpB;IACH,CAAC,CAAC,OAAO,CAAC;AAEd;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAgB,EAAW,EAAE,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;AAEhG;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAA2C,EAAW,EAAE,CACpF,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC,GAAkB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC"}
\ No newline at end of file
diff --git a/local/browser-testing/dist/support/dom/events.d.ts b/local/browser-testing/dist/support/dom/events.d.ts
deleted file mode 100644
index ee3729a..0000000
--- a/local/browser-testing/dist/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) => 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) => (() => 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/local/browser-testing/dist/support/dom/events.js b/local/browser-testing/dist/support/dom/events.js
deleted file mode 100644
index b82549e..0000000
--- a/local/browser-testing/dist/support/dom/events.js
+++ /dev/null
@@ -1,80 +0,0 @@
-import { isUndefined } from '../utils/types';
-import { each, push, runEachAndClear } from '../utils/array';
-let passiveEventsSupport;
-const supportPassiveEvents = () => {
- if (isUndefined(passiveEventsSupport)) {
- passiveEventsSupport = false;
- try {
- /* eslint-disable */
- // @ts-ignore
- window.addEventListener('test', null, Object.defineProperty({}, 'passive', {
- get() {
- passiveEventsSupport = true;
- },
- }));
- /* eslint-enable */
- }
- catch (e) { }
- }
- return passiveEventsSupport;
-};
-const splitEventNames = (eventNames) => eventNames.split(' ');
-/**
- * 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 const off = (target, eventNames, listener, capture) => {
- each(splitEventNames(eventNames), (eventName) => {
- target.removeEventListener(eventName, listener, capture);
- });
-};
-/**
- * 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 const on = (target, eventNames, listener, options) => {
- const doSupportPassiveEvents = supportPassiveEvents();
- const passive = (doSupportPassiveEvents && options && options._passive) ?? doSupportPassiveEvents;
- const capture = (options && options._capture) || false;
- const once = (options && options._once) || false;
- const offListeners = [];
- const nativeOptions = doSupportPassiveEvents
- ? {
- passive,
- capture,
- }
- : capture;
- each(splitEventNames(eventNames), (eventName) => {
- const finalListener = (once
- ? (evt) => {
- target.removeEventListener(eventName, finalListener, capture);
- listener && listener(evt);
- }
- : listener);
- push(offListeners, off.bind(null, target, eventName, finalListener, capture));
- target.addEventListener(eventName, finalListener, nativeOptions);
- });
- return runEachAndClear.bind(0, offListeners);
-};
-/**
- * Shorthand for the stopPropagation event Method.
- * @param evt The event of which the stopPropagation method shall be called.
- */
-export const stopPropagation = (evt) => evt.stopPropagation();
-/**
- * Shorthand for the preventDefault event Method.
- * @param evt The event of which the preventDefault method shall be called.
- */
-export const preventDefault = (evt) => evt.preventDefault();
-/**
- * Shorthand for the stopPropagation and preventDefault event Method.
- * @param evt The event of which the stopPropagation and preventDefault methods shall be called.
- */
-export const stopAndPrevent = (evt) => stopPropagation(evt) || preventDefault(evt);
-//# sourceMappingURL=events.js.map
\ No newline at end of file
diff --git a/local/browser-testing/dist/support/dom/events.js.map b/local/browser-testing/dist/support/dom/events.js.map
deleted file mode 100644
index b75a9fd..0000000
--- a/local/browser-testing/dist/support/dom/events.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/support/dom/events.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/local/browser-testing/dist/support/dom/index.d.ts b/local/browser-testing/dist/support/dom/index.d.ts
deleted file mode 100644
index c298aa6..0000000
--- a/local/browser-testing/dist/support/dom/index.d.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-export * from './class';
-export * from './create';
-export * from './dimensions';
-export * from './events';
-export * from './style';
-export * from './manipulation';
-export * from './offset';
-export * from './traversal';
diff --git a/local/browser-testing/dist/support/dom/index.js b/local/browser-testing/dist/support/dom/index.js
deleted file mode 100644
index 548bb3b..0000000
--- a/local/browser-testing/dist/support/dom/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-export * from './class';
-export * from './create';
-export * from './dimensions';
-export * from './events';
-export * from './style';
-export * from './manipulation';
-export * from './offset';
-export * from './traversal';
-//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/local/browser-testing/dist/support/dom/index.js.map b/local/browser-testing/dist/support/dom/index.js.map
deleted file mode 100644
index d2a1b8d..0000000
--- a/local/browser-testing/dist/support/dom/index.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/support/dom/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC"}
\ No newline at end of file
diff --git a/local/browser-testing/dist/support/dom/manipulation.d.ts b/local/browser-testing/dist/support/dom/manipulation.d.ts
deleted file mode 100644
index eaaaa98..0000000
--- a/local/browser-testing/dist/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 | false | 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 | false | 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 | false | 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 | false | 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/local/browser-testing/dist/support/dom/manipulation.js b/local/browser-testing/dist/support/dom/manipulation.js
deleted file mode 100644
index f0ac5e5..0000000
--- a/local/browser-testing/dist/support/dom/manipulation.js
+++ /dev/null
@@ -1,86 +0,0 @@
-import { isArrayLike } from '../utils/types';
-import { each, from } from '../utils/array';
-import { parent } from './traversal';
-/**
- * Inserts Nodes before the given preferredAnchor element.
- * @param parentElm The parent of the preferredAnchor element or the element which shall be the parent of the inserted Nodes.
- * @param preferredAnchor The element before which the Nodes shall be inserted or null if the elements shall be appended at the end.
- * @param insertedElms The Nodes which shall be inserted.
- */
-const before = (parentElm, preferredAnchor, insertedElms) => {
- if (insertedElms && parentElm) {
- let anchor = preferredAnchor;
- let fragment;
- if (isArrayLike(insertedElms)) {
- fragment = document.createDocumentFragment();
- // append all insertedElms to the fragment and if one of these is the anchor, change the anchor
- each(insertedElms, (insertedElm) => {
- if (insertedElm === anchor) {
- anchor = insertedElm.previousSibling;
- }
- fragment.appendChild(insertedElm);
- });
- }
- else {
- fragment = insertedElms;
- }
- // if the preferred anchor isn't null set it to a valid anchor
- if (preferredAnchor) {
- if (!anchor) {
- anchor = parentElm.firstChild;
- }
- else if (anchor !== preferredAnchor) {
- anchor = anchor.nextSibling;
- }
- }
- parentElm.insertBefore(fragment, anchor || null);
- }
-};
-/**
- * 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 const appendChildren = (node, children) => {
- before(node, null, children);
-};
-/**
- * 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 const prependChildren = (node, children) => {
- before(node, node && node.firstChild, children);
-};
-/**
- * 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 const insertBefore = (node, insertedNodes) => {
- before(parent(node), node, insertedNodes);
-};
-/**
- * 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 const insertAfter = (node, insertedNodes) => {
- before(parent(node), node && node.nextSibling, insertedNodes);
-};
-/**
- * Removes the given Nodes from their parent.
- * @param nodes The Nodes which shall be removed.
- */
-export const removeElements = (nodes) => {
- if (isArrayLike(nodes)) {
- each(from(nodes), (e) => removeElements(e));
- }
- else if (nodes) {
- const parentElm = parent(nodes);
- if (parentElm) {
- parentElm.removeChild(nodes);
- }
- }
-};
-//# sourceMappingURL=manipulation.js.map
\ No newline at end of file
diff --git a/local/browser-testing/dist/support/dom/manipulation.js.map b/local/browser-testing/dist/support/dom/manipulation.js.map
deleted file mode 100644
index 0fdb3cd..0000000
--- a/local/browser-testing/dist/support/dom/manipulation.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"manipulation.js","sourceRoot":"","sources":["../../../src/support/dom/manipulation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAIrC;;;;;GAKG;AACH,MAAM,MAAM,GAAG,CACb,SAA0C,EAC1C,eAAgD,EAChD,YAA4B,EACtB,EAAE;IACR,IAAI,YAAY,IAAI,SAAS,EAAE;QAC7B,IAAI,MAAM,GAAoC,eAAe,CAAC;QAC9D,IAAI,QAAoD,CAAC;QAEzD,IAAI,WAAW,CAAC,YAAY,CAAC,EAAE;YAC7B,QAAQ,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAC;YAE7C,+FAA+F;YAC/F,IAAI,CAAC,YAAY,EAAE,CAAC,WAAW,EAAE,EAAE;gBACjC,IAAI,WAAW,KAAK,MAAM,EAAE;oBAC1B,MAAM,GAAG,WAAW,CAAC,eAAe,CAAC;iBACtC;gBACD,QAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,QAAQ,GAAG,YAAY,CAAC;SACzB;QAED,8DAA8D;QAC9D,IAAI,eAAe,EAAE;YACnB,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC;aAC/B;iBAAM,IAAI,MAAM,KAAK,eAAe,EAAE;gBACrC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;aAC7B;SACF;QAED,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC;KAClD;AACH,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,IAAqC,EACrC,QAAwB,EAClB,EAAE;IACR,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,IAAqC,EACrC,QAAwB,EAClB,EAAE;IACR,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,IAAqC,EACrC,aAA6B,EACvB,EAAE;IACR,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,IAAqC,EACrC,aAA6B,EACvB,EAAE;IACR,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAChE,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAqB,EAAQ,EAAE;IAC5D,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;QACtB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7C;SAAM,IAAI,KAAK,EAAE;QAChB,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,SAAS,EAAE;YACb,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SAC9B;KACF;AACH,CAAC,CAAC"}
\ No newline at end of file
diff --git a/local/browser-testing/dist/support/dom/offset.d.ts b/local/browser-testing/dist/support/dom/offset.d.ts
deleted file mode 100644
index d210359..0000000
--- a/local/browser-testing/dist/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/local/browser-testing/dist/support/dom/offset.js b/local/browser-testing/dist/support/dom/offset.js
deleted file mode 100644
index 1e2579b..0000000
--- a/local/browser-testing/dist/support/dom/offset.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import { getBoundingClientRect } from './dimensions';
-const zeroObj = {
- x: 0,
- y: 0,
-};
-/**
- * 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 const absoluteCoordinates = (elm) => {
- const rect = elm ? getBoundingClientRect(elm) : 0;
- return rect
- ? {
- x: rect.left + window.pageYOffset,
- y: rect.top + window.pageXOffset,
- }
- : zeroObj;
-};
-/**
- * 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 const offsetCoordinates = (elm) => elm
- ? {
- x: elm.offsetLeft,
- y: elm.offsetTop,
- }
- : zeroObj;
-//# sourceMappingURL=offset.js.map
\ No newline at end of file
diff --git a/local/browser-testing/dist/support/dom/offset.js.map b/local/browser-testing/dist/support/dom/offset.js.map
deleted file mode 100644
index f665300..0000000
--- a/local/browser-testing/dist/support/dom/offset.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"offset.js","sourceRoot":"","sources":["../../../src/support/dom/offset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAOrD,MAAM,OAAO,GAAO;IAClB,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;CACL,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAmC,EAAM,EAAE;IAC7E,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,OAAO,IAAI;QACT,CAAC,CAAC;YACE,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,WAAW;YACjC,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,WAAW;SACjC;QACH,CAAC,CAAC,OAAO,CAAC;AACd,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAmC,EAAM,EAAE,CAC3E,GAAG;IACD,CAAC,CAAC;QACE,CAAC,EAAE,GAAG,CAAC,UAAU;QACjB,CAAC,EAAE,GAAG,CAAC,SAAS;KACjB;IACH,CAAC,CAAC,OAAO,CAAC"}
\ No newline at end of file
diff --git a/local/browser-testing/dist/support/dom/style.d.ts b/local/browser-testing/dist/support/dom/style.d.ts
deleted file mode 100644
index 13d174c..0000000
--- a/local/browser-testing/dist/support/dom/style.d.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-export interface TRBL {
- t: number;
- r: number;
- b: number;
- l: number;
-}
-declare type StyleObject = {
- [Key in keyof CSSStyleDeclaration | (CustomCssProps extends string ? CustomCssProps : '')]?: string | 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, propertySuffix?: string) => TRBL;
-export {};
diff --git a/local/browser-testing/dist/support/dom/style.js b/local/browser-testing/dist/support/dom/style.js
deleted file mode 100644
index a77d1b7..0000000
--- a/local/browser-testing/dist/support/dom/style.js
+++ /dev/null
@@ -1,96 +0,0 @@
-import { each, keys } from '../utils';
-import { isString, isNumber, isArray, isUndefined } from '../utils/types';
-const cssNumber = {
- // animationiterationcount: 1,
- // columncount: 1,
- // fillopacity: 1,
- // flexgrow: 1,
- // flexshrink: 1,
- // fontweight: 1,
- // lineheight: 1,
- // order: 1,
- // orphans: 1,
- // widows: 1,
- // zoom: 1,
- opacity: 1,
- zindex: 1,
-};
-const parseToZeroOrNumber = (value, toFloat) => {
- /* istanbul ignore next */
- const num = toFloat ? parseFloat(value) : parseInt(value, 10);
- // num === num means num is not NaN
- /* istanbul ignore next */
- return num === num ? num : 0; // eslint-disable-line no-self-compare
-};
-const adaptCSSVal = (prop, val) => !cssNumber[prop.toLowerCase()] && isNumber(val) ? `${val}px` : val;
-const getCSSVal = (elm, computedStyle, prop) =>
-/* istanbul ignore next */
-computedStyle != null
- ? computedStyle[prop] || computedStyle.getPropertyValue(prop)
- : elm.style[prop];
-const setCSSVal = (elm, prop, val) => {
- try {
- const { style: elmStyle } = elm;
- if (!isUndefined(elmStyle[prop])) {
- elmStyle[prop] = adaptCSSVal(prop, val);
- }
- else {
- elmStyle.setProperty(prop, val);
- }
- }
- catch (e) { }
-};
-export function style(elm, styles) {
- const getSingleStyle = isString(styles);
- const getStyles = isArray(styles) || getSingleStyle;
- if (getStyles) {
- let getStylesResult = getSingleStyle ? '' : {};
- if (elm) {
- const computedStyle = window.getComputedStyle(elm, null);
- getStylesResult = getSingleStyle
- ? getCSSVal(elm, computedStyle, styles)
- : styles.reduce((result, key) => {
- result[key] = getCSSVal(elm, computedStyle, key);
- return result;
- }, getStylesResult);
- }
- return getStylesResult;
- }
- elm && each(keys(styles), (key) => setCSSVal(elm, key, styles[key]));
-}
-/**
- * Hides the passed element (display: none).
- * @param elm The element which shall be hidden.
- */
-export const hide = (elm) => {
- style(elm, { display: 'none' });
-};
-/**
- * Shows the passed element (display: block).
- * @param elm The element which shall be shown.
- */
-export const show = (elm) => {
- style(elm, { display: 'block' });
-};
-/**
- * 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 const topRightBottomLeft = (elm, propertyPrefix, propertySuffix) => {
- const finalPrefix = propertyPrefix ? `${propertyPrefix}-` : '';
- const finalSuffix = propertySuffix ? `-${propertySuffix}` : '';
- const top = `${finalPrefix}top${finalSuffix}`;
- const right = `${finalPrefix}right${finalSuffix}`;
- const bottom = `${finalPrefix}bottom${finalSuffix}`;
- const left = `${finalPrefix}left${finalSuffix}`;
- const result = style(elm, [top, right, bottom, left]);
- return {
- t: parseToZeroOrNumber(result[top]),
- r: parseToZeroOrNumber(result[right]),
- b: parseToZeroOrNumber(result[bottom]),
- l: parseToZeroOrNumber(result[left]),
- };
-};
-//# sourceMappingURL=style.js.map
\ No newline at end of file
diff --git a/local/browser-testing/dist/support/dom/style.js.map b/local/browser-testing/dist/support/dom/style.js.map
deleted file mode 100644
index 6c96931..0000000
--- a/local/browser-testing/dist/support/dom/style.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"style.js","sourceRoot":"","sources":["../../../src/support/dom/style.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/local/browser-testing/dist/support/dom/traversal.d.ts b/local/browser-testing/dist/support/dom/traversal.d.ts
deleted file mode 100644
index 0a9ec88..0000000
--- a/local/browser-testing/dist/support/dom/traversal.d.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-declare type InputElementType = Node | Element | Node | false | null | undefined;
-declare type OutputElementType = Node | 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) => 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;
-declare const closest: (elm: InputElementType, selector: string) => 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, closest };
diff --git a/local/browser-testing/dist/support/dom/traversal.js b/local/browser-testing/dist/support/dom/traversal.js
deleted file mode 100644
index 47bda24..0000000
--- a/local/browser-testing/dist/support/dom/traversal.js
+++ /dev/null
@@ -1,93 +0,0 @@
-import { isElement } from '../utils/types';
-import { push, from } from '../utils/array';
-const elmPrototype = Element.prototype;
-/**
- * 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.
- */
-const find = (selector, elm) => {
- const arr = [];
- const rootElm = elm ? (isElement(elm) ? elm : null) : document;
- return rootElm ? push(arr, rootElm.querySelectorAll(selector)) : arr;
-};
-/**
- * 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.
- */
-const findFirst = (selector, elm) => {
- const rootElm = elm ? (isElement(elm) ? elm : null) : document;
- return rootElm ? rootElm.querySelector(selector) : null;
-};
-/**
- * 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'.
- */
-const is = (elm, selector) => {
- if (isElement(elm)) {
- /* istanbul ignore next */
- // eslint-disable-next-line
- // @ts-ignore
- const fn = elmPrototype.matches || elmPrototype.msMatchesSelector;
- return fn.call(elm, selector);
- }
- return false;
-};
-/**
- * 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.
- */
-const children = (elm, selector) => {
- const childs = [];
- return isElement(elm)
- ? push(childs, from(elm.children).filter((child) => (selector ? is(child, selector) : child)))
- : childs;
-};
-/**
- * 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.
- */
-const contents = (elm) => elm ? from(elm.childNodes) : [];
-/**
- * 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.
- */
-const parent = (elm) => (elm ? elm.parentElement : null);
-const closest = (elm, selector) => {
- if (isElement(elm)) {
- const closestFn = elmPrototype.closest;
- if (closestFn) {
- return closestFn.call(elm, selector);
- }
- do {
- if (is(elm, selector)) {
- return elm;
- }
- elm = parent(elm);
- } while (elm);
- }
- return null;
-};
-/**
- * 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.
- */
-const liesBetween = (elm, highBoundarySelector, deepBoundarySelector) => {
- const closestHighBoundaryElm = elm && closest(elm, highBoundarySelector);
- const closestDeepBoundaryElm = elm && findFirst(deepBoundarySelector, closestHighBoundaryElm);
- const deepBoundaryIsValid = closest(closestDeepBoundaryElm, highBoundarySelector) === closestHighBoundaryElm;
- return closestHighBoundaryElm && closestDeepBoundaryElm
- ? closestHighBoundaryElm === elm ||
- closestDeepBoundaryElm === elm ||
- (deepBoundaryIsValid &&
- closest(closest(elm, deepBoundarySelector), highBoundarySelector) !==
- closestHighBoundaryElm)
- : false;
-};
-export { find, findFirst, is, children, contents, parent, liesBetween, closest };
-//# sourceMappingURL=traversal.js.map
\ No newline at end of file
diff --git a/local/browser-testing/dist/support/dom/traversal.js.map b/local/browser-testing/dist/support/dom/traversal.js.map
deleted file mode 100644
index e14643b..0000000
--- a/local/browser-testing/dist/support/dom/traversal.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"traversal.js","sourceRoot":"","sources":["../../../src/support/dom/traversal.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/local/browser-testing/dist/support/index.d.ts b/local/browser-testing/dist/support/index.d.ts
deleted file mode 100644
index f20e8e8..0000000
--- a/local/browser-testing/dist/support/index.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export * from './dom';
-export * from './utils';
diff --git a/local/browser-testing/dist/support/index.js b/local/browser-testing/dist/support/index.js
deleted file mode 100644
index 949ae5f..0000000
--- a/local/browser-testing/dist/support/index.js
+++ /dev/null
@@ -1,3 +0,0 @@
-export * from './dom';
-export * from './utils';
-//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/local/browser-testing/dist/support/index.js.map b/local/browser-testing/dist/support/index.js.map
deleted file mode 100644
index 5202b1c..0000000
--- a/local/browser-testing/dist/support/index.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/support/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC"}
\ No newline at end of file
diff --git a/local/browser-testing/dist/support/utils/array.d.ts b/local/browser-testing/dist/support/utils/array.d.ts
deleted file mode 100644
index 6349055..0000000
--- a/local/browser-testing/dist/support/utils/array.d.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-declare type PlainObject = Record;
-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 | false | null | undefined, callback: (value: T, indexOrKey: number, source: Array) => boolean | unknown): Array | ReadonlyArray | false | null | undefined;
-export declare function each(arrayLikeObject: ArrayLike, callback: (value: T, indexOrKey: number, source: ArrayLike) => boolean | unknown): ArrayLike;
-export declare function each(arrayLikeObject: ArrayLike | false | null | undefined, callback: (value: T, indexOrKey: number, source: ArrayLike) => boolean | unknown): ArrayLike | false | null | undefined;
-export declare function each(obj: PlainObject, callback: (value: any, indexOrKey: string, source: PlainObject) => boolean | unknown): PlainObject;
-export declare function each(obj: PlainObject | false | null | undefined, callback: (value: any, indexOrKey: string, source: PlainObject) => boolean | unknown): PlainObject | false | 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) => 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) => 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 | Set | undefined) => T[];
-/**
- * Check whether the passed array is empty.
- * @param array The array which shall be checked.
- */
-export declare const isEmptyArray: (array: any[] | null | undefined) => boolean;
-/**
- * Calls all functions in the passed array/set of functions.
- * @param arr The array filled with function which shall be called.
- * @param args The args with which each function is called.
- * @param keep True when the Set / array should not be cleared afterwards, false otherwise.
- */
-export declare const runEachAndClear: (arr: RunEachItem[], args?: any[], keep?: boolean) => void;
-export {};
diff --git a/local/browser-testing/dist/support/utils/array.js b/local/browser-testing/dist/support/utils/array.js
deleted file mode 100644
index 925fbf2..0000000
--- a/local/browser-testing/dist/support/utils/array.js
+++ /dev/null
@@ -1,73 +0,0 @@
-import { isArrayLike, isString } from './types';
-export function each(source, callback) {
- if (isArrayLike(source)) {
- for (let i = 0; i < source.length; i++) {
- if (callback(source[i], i, source) === false) {
- break;
- }
- }
- }
- else if (source) {
- // cant use support func keys here due to circular dep
- each(Object.keys(source), (key) => callback(source[key], key, source));
- }
- return source;
-}
-/**
- * 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 const indexOf = (arr, item, fromIndex) => arr.indexOf(item, fromIndex);
-/**
- * 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 const push = (array, items, arrayIsSingleItem) => {
- !arrayIsSingleItem && !isString(items) && isArrayLike(items)
- ? Array.prototype.push.apply(array, items)
- : array.push(items);
- return array;
-};
-/**
- * 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 const from = (arr) => {
- const original = Array.from;
- const result = [];
- if (original && arr) {
- return original(arr);
- }
- if (arr instanceof Set) {
- arr.forEach((value) => {
- push(result, value);
- });
- }
- else {
- each(arr, (elm) => {
- push(result, elm);
- });
- }
- return result;
-};
-/**
- * Check whether the passed array is empty.
- * @param array The array which shall be checked.
- */
-export const isEmptyArray = (array) => !!array && array.length === 0;
-/**
- * Calls all functions in the passed array/set of functions.
- * @param arr The array filled with function which shall be called.
- * @param args The args with which each function is called.
- * @param keep True when the Set / array should not be cleared afterwards, false otherwise.
- */
-export const runEachAndClear = (arr, args, keep) => {
- // eslint-disable-next-line prefer-spread
- const runFn = (fn) => fn && fn.apply(undefined, args || []);
- each(arr, runFn);
- !keep && (arr.length = 0);
-};
-//# sourceMappingURL=array.js.map
\ No newline at end of file
diff --git a/local/browser-testing/dist/support/utils/array.js.map b/local/browser-testing/dist/support/utils/array.js.map
deleted file mode 100644
index 3bfe0d9..0000000
--- a/local/browser-testing/dist/support/utils/array.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"array.js","sourceRoot":"","sources":["../../../src/support/utils/array.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAqChD,MAAM,UAAU,IAAI,CAClB,MAA2F,EAC3F,QAAuE;IAEvE,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,KAAK,EAAE;gBAC5C,MAAM;aACP;SACF;KACF;SAAM,IAAI,MAAM,EAAE;QACjB,sDAAsD;QACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;KACxE;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAU,GAAQ,EAAE,IAAO,EAAE,SAAkB,EAAU,EAAE,CAChF,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAE/B;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAI,KAAU,EAAE,KAAuB,EAAE,iBAA2B,EAAO,EAAE;IAC/F,CAAC,iBAAiB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC;QAC1D,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAY,CAAC;QACjD,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAU,CAAC,CAAC;IAC3B,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAU,GAA2B,EAAE,EAAE;IAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;IAC5B,MAAM,MAAM,GAAQ,EAAE,CAAC;IAEvB,IAAI,QAAQ,IAAI,GAAG,EAAE;QACnB,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;KACtB;IAED,IAAI,GAAG,YAAY,GAAG,EAAE;QACtB,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACpB,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;KACJ;SAAM;QACL,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE;YAChB,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;KACJ;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAA+B,EAAW,EAAE,CACvE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;AAEhC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAkB,EAAE,IAAY,EAAE,IAAc,EAAQ,EAAE;IACxF,yCAAyC;IACzC,MAAM,KAAK,GAAG,CAAC,EAAe,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IACzE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACjB,CAAC,IAAI,IAAI,CAAE,GAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC,CAAC"}
\ No newline at end of file
diff --git a/local/browser-testing/dist/support/utils/index.d.ts b/local/browser-testing/dist/support/utils/index.d.ts
deleted file mode 100644
index f1efd7b..0000000
--- a/local/browser-testing/dist/support/utils/index.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export * from './array';
-export * from './object';
-export * from './types';
diff --git a/local/browser-testing/dist/support/utils/index.js b/local/browser-testing/dist/support/utils/index.js
deleted file mode 100644
index b7c7d60..0000000
--- a/local/browser-testing/dist/support/utils/index.js
+++ /dev/null
@@ -1,4 +0,0 @@
-export * from './array';
-export * from './object';
-export * from './types';
-//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/local/browser-testing/dist/support/utils/index.js.map b/local/browser-testing/dist/support/utils/index.js.map
deleted file mode 100644
index a9b7651..0000000
--- a/local/browser-testing/dist/support/utils/index.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/support/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
\ No newline at end of file
diff --git a/local/browser-testing/dist/support/utils/object.d.ts b/local/browser-testing/dist/support/utils/object.d.ts
deleted file mode 100644
index c2ac240..0000000
--- a/local/browser-testing/dist/support/utils/object.d.ts
+++ /dev/null
@@ -1,26 +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;
-declare type AssignDeep = {
- (target: T, object1: U): T & U;
- (target: T, object1: U, object2: V): T & U & V;
- (target: T, object1: U, object2: V, object3: W): T & U & V & W;
- (target: T, object1: U, object2: V, object3: W, object4: X): T & U & V & W & X;
- (target: T, object1: U, object2: V, object3: W, object4: X, object5: Y): T & U & V & W & X & Y;
- (target: T, object1?: U, object2?: V, object3?: W, object4?: X, object5?: Y, object6?: Z): T & U & V & W & X & Y & Z;
-};
-export declare const assignDeep: AssignDeep;
-/**
- * Returns true if the given object is empty, false otherwise.
- * @param obj The Object.
- */
-export declare const isEmptyObject: (obj: any) => boolean;
-export {};
diff --git a/local/browser-testing/dist/support/utils/object.js b/local/browser-testing/dist/support/utils/object.js
deleted file mode 100644
index a8b34e5..0000000
--- a/local/browser-testing/dist/support/utils/object.js
+++ /dev/null
@@ -1,65 +0,0 @@
-import { isArray, isFunction, isPlainObject, isNull } from './types';
-import { each } from './array';
-/**
- * Determines whether the passed object has a property with the passed name.
- * @param obj The object.
- * @param prop The name of the property.
- */
-export const hasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);
-/**
- * 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 const keys = (obj) => (obj ? Object.keys(obj) : []);
-// https://github.com/jquery/jquery/blob/master/src/core.js#L116
-export const assignDeep = (target, object1, object2, object3, object4, object5, object6) => {
- const sources = [object1, object2, object3, object4, object5, object6];
- // Handle case when target is a string or something (possible in deep copy)
- if ((typeof target !== 'object' || isNull(target)) && !isFunction(target)) {
- target = {};
- }
- each(sources, (source) => {
- // Extend the base object
- each(keys(source), (key) => {
- const copy = source[key];
- // Prevent Object.prototype pollution
- // Prevent never-ending loop
- if (target === copy) {
- return true;
- }
- const copyIsArray = isArray(copy);
- // Recurse if we're merging plain objects or arrays
- if (copy && (isPlainObject(copy) || copyIsArray)) {
- const src = target[key];
- let clone = src;
- // Ensure proper type for the source value
- if (copyIsArray && !isArray(src)) {
- clone = [];
- }
- else if (!copyIsArray && !isPlainObject(src)) {
- clone = {};
- }
- // Never move original objects, clone them
- target[key] = assignDeep(clone, copy);
- }
- else {
- target[key] = copy;
- }
- });
- });
- // Return the modified object
- return target;
-};
-/**
- * Returns true if the given object is empty, false otherwise.
- * @param obj The Object.
- */
-export const isEmptyObject = (obj) => {
- /* eslint-disable no-restricted-syntax, guard-for-in */
- // eslint-disable-next-line no-unreachable-loop
- for (const name in obj)
- return false;
- return true;
- /* eslint-enable */
-};
-//# sourceMappingURL=object.js.map
\ No newline at end of file
diff --git a/local/browser-testing/dist/support/utils/object.js.map b/local/browser-testing/dist/support/utils/object.js.map
deleted file mode 100644
index d412f7f..0000000
--- a/local/browser-testing/dist/support/utils/object.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"object.js","sourceRoot":"","sources":["../../../src/support/utils/object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAQ,EAAE,IAA8B,EAAW,EAAE,CAClF,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAElD;;;GAGG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,GAAQ,EAAiB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAwB/E,gEAAgE;AAChE,MAAM,CAAC,MAAM,UAAU,GAAe,CACpC,MAAS,EACT,OAAW,EACX,OAAW,EACX,OAAW,EACX,OAAW,EACX,OAAW,EACX,OAAW,EACgB,EAAE;IAC7B,MAAM,OAAO,GAAe,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAEnF,2EAA2E;IAC3E,IAAI,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;QACzE,MAAM,GAAG,EAAO,CAAC;KAClB;IAED,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;QACvB,yBAAyB;QACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;YACzB,MAAM,IAAI,GAAQ,MAAM,CAAC,GAAG,CAAC,CAAC;YAE9B,qCAAqC;YACrC,4BAA4B;YAC5B,IAAI,MAAM,KAAK,IAAI,EAAE;gBACnB,OAAO,IAAI,CAAC;aACb;YAED,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAElC,mDAAmD;YACnD,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,EAAE;gBAChD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBACxB,IAAI,KAAK,GAAQ,GAAG,CAAC;gBAErB,0CAA0C;gBAC1C,IAAI,WAAW,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBAChC,KAAK,GAAG,EAAE,CAAC;iBACZ;qBAAM,IAAI,CAAC,WAAW,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;oBAC9C,KAAK,GAAG,EAAE,CAAC;iBACZ;gBAED,0CAA0C;gBAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,CAAQ,CAAC;aAC9C;iBAAM;gBACL,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;aACpB;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,6BAA6B;IAC7B,OAAO,MAAa,CAAC;AACvB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAQ,EAAW,EAAE;IACjD,uDAAuD;IACvD,+CAA+C;IAC/C,KAAK,MAAM,IAAI,IAAI,GAAG;QAAE,OAAO,KAAK,CAAC;IACrC,OAAO,IAAI,CAAC;IACZ,mBAAmB;AACrB,CAAC,CAAC"}
\ No newline at end of file
diff --git a/local/browser-testing/dist/support/utils/types.d.ts b/local/browser-testing/dist/support/utils/types.d.ts
deleted file mode 100644
index c9bd274..0000000
--- a/local/browser-testing/dist/support/utils/types.d.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-declare type PlainObject = Record;
-export declare const isUndefined: (obj: any) => obj is undefined;
-export declare const isNull: (obj: any) => obj is null;
-export declare const type: (obj: any) => string;
-export declare const isNumber: (obj: any) => obj is number;
-export declare const isString: (obj: any) => obj is string;
-export declare const isBoolean: (obj: any) => obj is boolean;
-export declare const isFunction: (obj: any) => obj is (...args: any[]) => any;
-export declare const isArray: (obj: any) => obj is T[];
-export declare const isObject: (obj: any) => boolean;
-/**
- * Returns true if the given object is array like, false otherwise.
- * @param obj The Object
- */
-export declare const isArrayLike: = any>(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 const isPlainObject: (obj: any) => obj is PlainObject;
-/**
- * Checks whether the given object is a HTMLElement.
- * @param obj The object which shall be checked.
- */
-export declare const isHTMLElement: (obj: any) => obj is HTMLElement;
-/**
- * Checks whether the given object is a Element.
- * @param obj The object which shall be checked.
- */
-export declare const isElement: (obj: any) => obj is Element;
-export {};
diff --git a/local/browser-testing/dist/support/utils/types.js b/local/browser-testing/dist/support/utils/types.js
deleted file mode 100644
index 94fa532..0000000
--- a/local/browser-testing/dist/support/utils/types.js
+++ /dev/null
@@ -1,77 +0,0 @@
-const ElementNodeType = Node.ELEMENT_NODE;
-const { toString, hasOwnProperty } = Object.prototype;
-export const isUndefined = (obj) => obj === undefined;
-export const isNull = (obj) => obj === null;
-export const type = (obj) => isUndefined(obj) || isNull(obj)
- ? `${obj}`
- : toString
- .call(obj)
- .replace(/^\[object (.+)\]$/, '$1')
- .toLowerCase();
-export const isNumber = (obj) => typeof obj === 'number';
-export const isString = (obj) => typeof obj === 'string';
-export const isBoolean = (obj) => typeof obj === 'boolean';
-export const isFunction = (obj) => typeof obj === 'function';
-export const isArray = (obj) => Array.isArray(obj);
-export const isObject = (obj) => typeof obj === 'object' && !isArray(obj) && !isNull(obj);
-/**
- * Returns true if the given object is array like, false otherwise.
- * @param obj The Object
- */
-export const isArrayLike = (obj) => {
- const length = !!obj && obj.length;
- const lengthCorrectFormat = isNumber(length) && length > -1 && length % 1 == 0; // eslint-disable-line eqeqeq
- return isArray(obj) || (!isFunction(obj) && lengthCorrectFormat)
- ? length > 0 && isObject(obj)
- ? length - 1 in obj
- : true
- : false;
-};
-/**
- * Returns true if the given object is a "plain" (e.g. { key: value }) object, false otherwise.
- * @param obj The Object.
- */
-export const isPlainObject = (obj) => {
- if (!obj || !isObject(obj) || type(obj) !== 'object')
- return false;
- let key;
- 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');
- if (ctor && !hasOwnConstructor && !hasIsPrototypeOf) {
- return false;
- }
- /* eslint-disable no-restricted-syntax */
- for (key in obj) {
- /**/
- }
- /* eslint-enable */
- return isUndefined(key) || hasOwnProperty.call(obj, key);
-};
-/**
- * Checks whether the given object is a HTMLElement.
- * @param obj The object which shall be checked.
- */
-export const isHTMLElement = (obj) => {
- const instanceofObj = HTMLElement;
- return obj
- ? instanceofObj
- ? obj instanceof instanceofObj
- : obj.nodeType === ElementNodeType
- : false;
-};
-/**
- * Checks whether the given object is a Element.
- * @param obj The object which shall be checked.
- */
-export const isElement = (obj) => {
- const instanceofObj = Element;
- return obj
- ? instanceofObj
- ? obj instanceof instanceofObj
- : obj.nodeType === ElementNodeType
- : false;
-};
-//# sourceMappingURL=types.js.map
\ No newline at end of file
diff --git a/local/browser-testing/dist/support/utils/types.js.map b/local/browser-testing/dist/support/utils/types.js.map
deleted file mode 100644
index fec3f86..0000000
--- a/local/browser-testing/dist/support/utils/types.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/support/utils/types.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/local/rollup/src/createRollupConfig.js b/local/rollup/src/createRollupConfig.js
index c45d7e8..fc518ad 100644
--- a/local/rollup/src/createRollupConfig.js
+++ b/local/rollup/src/createRollupConfig.js
@@ -86,9 +86,8 @@ const mergeAndResolveOptions = (userOptions) => {
},
},
};
- const { src, dist, types, styles } = mergedOptions.paths;
+ const { dist, types, styles } = mergedOptions.paths;
- mergedOptions.paths.src = resolvePath(projectPath, src);
mergedOptions.paths.dist = resolvePath(projectPath, dist);
mergedOptions.paths.types = resolvePath(projectPath, types);
mergedOptions.paths.styles = resolvePath(projectPath, styles);
diff --git a/packages/overlayscrollbars/dist/browser/overlayscrollbars.browser.es5.js b/packages/overlayscrollbars/dist/browser/overlayscrollbars.browser.es5.js
deleted file mode 100644
index fce9c71..0000000
--- a/packages/overlayscrollbars/dist/browser/overlayscrollbars.browser.es5.js
+++ /dev/null
@@ -1,2921 +0,0 @@
-/*!
- * OverlayScrollbars
- * Version: 2.0.0-beta.0
- *
- * Copyright (c) Rene Haas | KingSora.
- * https://github.com/KingSora
- *
- * Released under the MIT license.
- */
-
-var OverlayScrollbars = function(r) {
- "use strict";
- function each(r, a) {
- if (g(r)) {
- for (var e = 0; e < r.length; e++) {
- if (false === a(r[e], e, r)) {
- break;
- }
- }
- } else if (r) {
- each(Object.keys(r), (function(e) {
- return a(r[e], e, r);
- }));
- }
- return r;
- }
- function style(r, a) {
- var e = l(a);
- var n = d(a) || e;
- if (n) {
- var t = e ? "" : {};
- if (r) {
- var v = window.getComputedStyle(r, null);
- t = e ? Tr(r, v, a) : a.reduce((function(a, e) {
- a[e] = Tr(r, v, e);
- return a;
- }), t);
- }
- return t;
- }
- r && each(E(a), (function(e) {
- return zr(r, e, a[e]);
- }));
- }
- function getDefaultExportFromCjs(r) {
- return r && r.v && Object.prototype.hasOwnProperty.call(r, "default") ? r["default"] : r;
- }
- var a = function createCache(r, a) {
- var e = r.o, n = r.u, t = r.g;
- var v = e;
- var i;
- var o = function cacheUpdateContextual(r, a) {
- var e = v;
- var o = r;
- var u = a || (n ? !n(e, o) : e !== o);
- if (u || t) {
- v = o;
- i = e;
- }
- return [ v, u, i ];
- };
- var u = function cacheUpdateIsolated(r) {
- return o(a(v, i), r);
- };
- var f = function getCurrentCache(r) {
- return [ v, !!r, i ];
- };
- return [ a ? u : o, f ];
- };
- var e = Node.ELEMENT_NODE;
- var n = Object.prototype, t = n.toString, v = n.hasOwnProperty;
- var i = function isUndefined(r) {
- return void 0 === r;
- };
- var o = function isNull(r) {
- return null === r;
- };
- var u = function type(r) {
- return i(r) || o(r) ? "" + r : t.call(r).replace(/^\[object (.+)\]$/, "$1").toLowerCase();
- };
- var f = function isNumber(r) {
- return "number" === typeof r;
- };
- var l = function isString(r) {
- return "string" === typeof r;
- };
- var c = function isBoolean(r) {
- return "boolean" === typeof r;
- };
- var s = function isFunction(r) {
- return "function" === typeof r;
- };
- var d = function isArray(r) {
- return Array.isArray(r);
- };
- var h = function isObject(r) {
- return "object" === typeof r && !d(r) && !o(r);
- };
- var g = function isArrayLike(r) {
- var a = !!r && r.length;
- var e = f(a) && a > -1 && a % 1 == 0;
- return d(r) || !s(r) && e ? a > 0 && h(r) ? a - 1 in r : true : false;
- };
- var p = function isPlainObject(r) {
- if (!r || !h(r) || "object" !== u(r)) {
- return false;
- }
- var a;
- var e = "constructor";
- var n = r[e];
- var t = n && n.prototype;
- var o = v.call(r, e);
- var f = t && v.call(t, "isPrototypeOf");
- if (n && !o && !f) {
- return false;
- }
- for (a in r) {}
- return i(a) || v.call(r, a);
- };
- var w = function isHTMLElement(r) {
- var a = HTMLElement;
- return r ? a ? r instanceof a : r.nodeType === e : false;
- };
- var b = function isElement(r) {
- var a = Element;
- return r ? a ? r instanceof a : r.nodeType === e : false;
- };
- var m = function indexOf(r, a, e) {
- return r.indexOf(a, e);
- };
- var y = function push(r, a, e) {
- !e && !l(a) && g(a) ? Array.prototype.push.apply(r, a) : r.push(a);
- return r;
- };
- var S = function from(r) {
- var a = Array.from;
- var e = [];
- if (a && r) {
- return a(r);
- }
- if (r instanceof Set) {
- r.forEach((function(r) {
- y(e, r);
- }));
- } else {
- each(r, (function(r) {
- y(e, r);
- }));
- }
- return e;
- };
- var C = function isEmptyArray(r) {
- return !!r && 0 === r.length;
- };
- var O = function runEachAndClear(r, a, e) {
- var n = function runFn(r) {
- return r && r.apply(void 0, a || []);
- };
- each(r, n);
- !e && (r.length = 0);
- };
- var x = function hasOwnProperty(r, a) {
- return Object.prototype.hasOwnProperty.call(r, a);
- };
- var E = function keys(r) {
- return r ? Object.keys(r) : [];
- };
- var A = function assignDeep(r, a, e, n, t, v, i) {
- var u = [ a, e, n, t, v, i ];
- if (("object" !== typeof r || o(r)) && !s(r)) {
- r = {};
- }
- each(u, (function(a) {
- each(E(a), (function(e) {
- var n = a[e];
- if (r === n) {
- return true;
- }
- var t = d(n);
- if (n && (p(n) || t)) {
- var v = r[e];
- var i = v;
- if (t && !d(v)) {
- i = [];
- } else if (!t && !p(v)) {
- i = {};
- }
- r[e] = assignDeep(i, n);
- } else {
- r[e] = n;
- }
- }));
- }));
- return r;
- };
- var T = function isEmptyObject(r) {
- for (var a in r) {
- return false;
- }
- return true;
- };
- var z = function getSetProp(r, a, e, n) {
- if (i(n)) {
- return e ? e[r] : a;
- }
- e && (l(n) || f(n)) && (e[r] = n);
- };
- var P = function attr(r, a, e) {
- if (i(e)) {
- return r ? r.getAttribute(a) : null;
- }
- r && r.setAttribute(a, e);
- };
- var L = function attrClass(r, a, e, n) {
- if (e) {
- var t = P(r, a) || "";
- var v = new Set(t.split(" "));
- v[n ? "add" : "delete"](e);
- P(r, a, S(v).join(" ").trim());
- }
- };
- var H = function hasAttrClass(r, a, e) {
- var n = P(r, a) || "";
- var t = new Set(n.split(" "));
- return t.has(e);
- };
- var M = function removeAttr(r, a) {
- r && r.removeAttribute(a);
- };
- var D = function scrollLeft(r, a) {
- return z("scrollLeft", 0, r, a);
- };
- var R = function scrollTop(r, a) {
- return z("scrollTop", 0, r, a);
- };
- var I = Element.prototype;
- var k = function find(r, a) {
- var e = [];
- var n = a ? b(a) ? a : null : document;
- return n ? y(e, n.querySelectorAll(r)) : e;
- };
- var V = function findFirst(r, a) {
- var e = a ? b(a) ? a : null : document;
- return e ? e.querySelector(r) : null;
- };
- var j = function is(r, a) {
- if (b(r)) {
- var e = I.matches || I.msMatchesSelector;
- return e.call(r, a);
- }
- return false;
- };
- var B = function contents(r) {
- return r ? S(r.childNodes) : [];
- };
- var F = function parent(r) {
- return r ? r.parentElement : null;
- };
- var q = function closest(r, a) {
- if (b(r)) {
- var e = I.closest;
- if (e) {
- return e.call(r, a);
- }
- do {
- if (j(r, a)) {
- return r;
- }
- r = F(r);
- } while (r);
- }
- return null;
- };
- var U = function liesBetween(r, a, e) {
- var n = r && q(r, a);
- var t = r && V(e, n);
- var v = q(t, a) === n;
- return n && t ? n === r || t === r || v && q(q(r, e), a) !== n : false;
- };
- var N = function before(r, a, e) {
- if (e && r) {
- var n = a;
- var t;
- if (g(e)) {
- t = document.createDocumentFragment();
- each(e, (function(r) {
- if (r === n) {
- n = r.previousSibling;
- }
- t.appendChild(r);
- }));
- } else {
- t = e;
- }
- if (a) {
- if (!n) {
- n = r.firstChild;
- } else if (n !== a) {
- n = n.nextSibling;
- }
- }
- r.insertBefore(t, n || null);
- }
- };
- var Y = function appendChildren(r, a) {
- N(r, null, a);
- };
- var W = function insertBefore(r, a) {
- N(F(r), r, a);
- };
- var X = function insertAfter(r, a) {
- N(F(r), r && r.nextSibling, a);
- };
- var G = function removeElements(r) {
- if (g(r)) {
- each(S(r), (function(r) {
- return removeElements(r);
- }));
- } else if (r) {
- var a = F(r);
- if (a) {
- a.removeChild(r);
- }
- }
- };
- var Z = function createDiv(r) {
- var a = document.createElement("div");
- if (r) {
- P(a, "class", r);
- }
- return a;
- };
- var $ = function createDOM(r) {
- var a = Z();
- a.innerHTML = r.trim();
- return each(B(a), (function(r) {
- return G(r);
- }));
- };
- var J = function firstLetterToUpper(r) {
- return r.charAt(0).toUpperCase() + r.slice(1);
- };
- var K = function getDummyStyle() {
- return Z().style;
- };
- var Q = [ "-webkit-", "-moz-", "-o-", "-ms-" ];
- var rr = [ "WebKit", "Moz", "O", "MS", "webkit", "moz", "o", "ms" ];
- var ar = {};
- var er = {};
- var nr = function cssProperty(r) {
- var a = er[r];
- if (x(er, r)) {
- return a;
- }
- var e = J(r);
- var n = K();
- each(Q, (function(t) {
- var v = t.replace(/-/g, "");
- var i = [ r, t + r, v + e, J(v) + e ];
- return !(a = i.find((function(r) {
- return void 0 !== n[r];
- })));
- }));
- return er[r] = a || "";
- };
- var tr = function jsAPI(r) {
- var a = ar[r] || window[r];
- if (x(ar, r)) {
- return a;
- }
- each(rr, (function(e) {
- a = a || window[e + J(r)];
- return !a;
- }));
- ar[r] = a;
- return a;
- };
- var vr = tr("MutationObserver");
- var ir = tr("IntersectionObserver");
- var or = tr("ResizeObserver");
- var ur = tr("cancelAnimationFrame");
- var fr = tr("requestAnimationFrame");
- var lr = window.setTimeout;
- var cr = window.clearTimeout;
- var sr = /[^\x20\t\r\n\f]+/g;
- var dr = function classListAction(r, a, e) {
- var n = r && r.classList;
- var t;
- var v = 0;
- var i = false;
- if (n && a && l(a)) {
- var o = a.match(sr) || [];
- i = o.length > 0;
- while (t = o[v++]) {
- i = !!e(n, t) && i;
- }
- }
- return i;
- };
- var hr = function hasClass(r, a) {
- return dr(r, a, (function(r, a) {
- return r.contains(a);
- }));
- };
- var gr = function removeClass(r, a) {
- dr(r, a, (function(r, a) {
- return r.remove(a);
- }));
- };
- var pr = function addClass(r, a) {
- dr(r, a, (function(r, a) {
- return r.add(a);
- }));
- return gr.bind(0, r, a);
- };
- var _r = function equal(r, a, e, n) {
- if (r && a) {
- var t = true;
- each(e, (function(e) {
- var v = n ? n(r[e]) : r[e];
- var i = n ? n(a[e]) : a[e];
- if (v !== i) {
- t = false;
- }
- }));
- return t;
- }
- return false;
- };
- var wr = function equalWH(r, a) {
- return _r(r, a, [ "w", "h" ]);
- };
- var br = function equalXY(r, a) {
- return _r(r, a, [ "x", "y" ]);
- };
- var mr = function equalTRBL(r, a) {
- return _r(r, a, [ "t", "r", "b", "l" ]);
- };
- var yr = function equalBCRWH(r, a, e) {
- return _r(r, a, [ "width", "height" ], e && function(r) {
- return Math.round(r);
- });
- };
- var Sr = function noop() {};
- var Cr = function selfCancelTimeout(r) {
- var a;
- var e = r ? lr : fr;
- var n = r ? cr : ur;
- return [ function(t) {
- n(a);
- a = e(t, s(r) ? r() : r);
- }, function() {
- return n(a);
- } ];
- };
- var Or = function debounce(r, a) {
- var e;
- var n;
- var t;
- var v = Sr;
- var i = a || {}, o = i.p, u = i._, l = i.m;
- var c = function invokeFunctionToDebounce(a) {
- v();
- cr(e);
- e = n = void 0;
- v = Sr;
- r.apply(this, a);
- };
- var d = function mergeParms(r) {
- return l && n ? l(n, r) : r;
- };
- var h = function flush() {
- if (v !== Sr) {
- c(d(t) || t);
- }
- };
- var g = function debouncedFn() {
- var r = S(arguments);
- var a = s(o) ? o() : o;
- var i = f(a) && a >= 0;
- if (i) {
- var l = s(u) ? u() : u;
- var g = f(l) && l >= 0;
- var p = a > 0 ? lr : fr;
- var w = a > 0 ? cr : ur;
- var b = d(r);
- var m = b || r;
- var y = c.bind(0, m);
- v();
- var C = p(y, a);
- v = function clear() {
- return w(C);
- };
- if (g && !e) {
- e = lr(h, l);
- }
- n = t = m;
- } else {
- c(r);
- }
- };
- g.S = h;
- return g;
- };
- var xr = {
- opacity: 1,
- zindex: 1
- };
- var Er = function parseToZeroOrNumber(r, a) {
- var e = a ? parseFloat(r) : parseInt(r, 10);
- return e === e ? e : 0;
- };
- var Ar = function adaptCSSVal(r, a) {
- return !xr[r.toLowerCase()] && f(a) ? a + "px" : a;
- };
- var Tr = function getCSSVal(r, a, e) {
- return null != a ? a[e] || a.getPropertyValue(e) : r.style[e];
- };
- var zr = function setCSSVal(r, a, e) {
- try {
- var n = r.style;
- if (!i(n[a])) {
- n[a] = Ar(a, e);
- } else {
- n.setProperty(a, e);
- }
- } catch (t) {}
- };
- var Pr = function directionIsRTL(r) {
- return "rtl" === style(r, "direction");
- };
- var Lr = function topRightBottomLeft(r, a, e) {
- var n = a ? a + "-" : "";
- var t = e ? "-" + e : "";
- var v = n + "top" + t;
- var i = n + "right" + t;
- var o = n + "bottom" + t;
- var u = n + "left" + t;
- var f = style(r, [ v, i, o, u ]);
- return {
- t: Er(f[v]),
- r: Er(f[i]),
- b: Er(f[o]),
- l: Er(f[u])
- };
- };
- var Hr = Math.round;
- var Mr = {
- w: 0,
- h: 0
- };
- var Dr = function windowSize() {
- return {
- w: window.innerWidth,
- h: window.innerHeight
- };
- };
- var Rr = function offsetSize(r) {
- return r ? {
- w: r.offsetWidth,
- h: r.offsetHeight
- } : Mr;
- };
- var Ir = function clientSize(r) {
- return r ? {
- w: r.clientWidth,
- h: r.clientHeight
- } : Mr;
- };
- var kr = function scrollSize(r) {
- return r ? {
- w: r.scrollWidth,
- h: r.scrollHeight
- } : Mr;
- };
- var Vr = function fractionalSize(r) {
- var a = parseFloat(style(r, "height")) || 0;
- var e = parseFloat(style(r, "width")) || 0;
- return {
- w: e - Hr(e),
- h: a - Hr(a)
- };
- };
- var jr = function getBoundingClientRect(r) {
- return r.getBoundingClientRect();
- };
- var Br;
- var Fr = function supportPassiveEvents() {
- if (i(Br)) {
- Br = false;
- try {
- window.addEventListener("test", null, Object.defineProperty({}, "passive", {
- get: function get() {
- Br = true;
- }
- }));
- } catch (r) {}
- }
- return Br;
- };
- var qr = function splitEventNames(r) {
- return r.split(" ");
- };
- var Ur = function off(r, a, e, n) {
- each(qr(a), (function(a) {
- r.removeEventListener(a, e, n);
- }));
- };
- var Nr = function on(r, a, e, n) {
- var t;
- var v = Fr();
- var i = null != (t = v && n && n.C) ? t : v;
- var o = n && n.O || false;
- var u = n && n.A || false;
- var f = [];
- var l = v ? {
- passive: i,
- capture: o
- } : o;
- each(qr(a), (function(a) {
- var n = u ? function(t) {
- r.removeEventListener(a, n, o);
- e && e(t);
- } : e;
- y(f, Ur.bind(null, r, a, n, o));
- r.addEventListener(a, n, l);
- }));
- return O.bind(0, f);
- };
- var Yr = function stopPropagation(r) {
- return r.stopPropagation();
- };
- var Wr = function preventDefault(r) {
- return r.preventDefault();
- };
- var Xr = {
- x: 0,
- y: 0
- };
- var Gr = function absoluteCoordinates(r) {
- var a = r ? jr(r) : 0;
- return a ? {
- x: a.left + window.pageYOffset,
- y: a.top + window.pageXOffset
- } : Xr;
- };
- var Zr = function manageListener(r, a) {
- each(d(a) ? a : [ a ], r);
- };
- var $r = function createEventListenerHub(r) {
- var a = new Map;
- var e = function removeEvent(r, e) {
- if (r) {
- var n = a.get(r);
- Zr((function(r) {
- if (n) {
- n[r ? "delete" : "clear"](r);
- }
- }), e);
- } else {
- a.forEach((function(r) {
- r.clear();
- }));
- a.clear();
- }
- };
- var n = function addEvent(r, n) {
- var t = a.get(r) || new Set;
- a.set(r, t);
- Zr((function(r) {
- r && t.add(r);
- }), n);
- return e.bind(0, r, n);
- };
- var t = function triggerEvent(r, e) {
- var n = a.get(r);
- each(S(n), (function(r) {
- if (e && !C(e)) {
- r.apply(0, e);
- } else {
- r();
- }
- }));
- };
- var v = E(r);
- each(v, (function(a) {
- n(a, r[a]);
- }));
- return [ n, e, t ];
- };
- var Jr = function opsStringify(r) {
- return JSON.stringify(r, (function(r, a) {
- if (s(a)) {
- throw new Error;
- }
- return a;
- }));
- };
- var Kr = {
- paddingAbsolute: false,
- showNativeOverlaidScrollbars: false,
- update: {
- elementEvents: [ [ "img", "load" ] ],
- debounce: [ 0, 33 ],
- attributes: null,
- ignoreMutation: null
- },
- overflow: {
- x: "scroll",
- y: "scroll"
- },
- scrollbars: {
- theme: "os-theme-dark",
- visibility: "auto",
- autoHide: "never",
- autoHideDelay: 1300,
- dragScroll: true,
- clickScroll: false,
- pointers: [ "mouse", "touch", "pen" ]
- }
- };
- var Qr = function getOptionsDiff(r, a) {
- var e = {};
- var n = E(a).concat(E(r));
- each(n, (function(n) {
- var t = r[n];
- var v = a[n];
- if (h(t) && h(v)) {
- A(e[n] = {}, getOptionsDiff(t, v));
- } else if (x(a, n) && v !== t) {
- var i = true;
- if (d(t) || d(v)) {
- try {
- if (Jr(t) === Jr(v)) {
- i = false;
- }
- } catch (o) {}
- }
- if (i) {
- e[n] = v;
- }
- }
- }));
- return e;
- };
- var ra = "os-environment";
- var aa = ra + "-flexbox-glue";
- var ea = aa + "-max";
- var na = "data-overlayscrollbars";
- var ta = na + "-overflow-x";
- var va = na + "-overflow-y";
- var ia = "overflowVisible";
- var oa = "scrollbarHidden";
- var ua = "updating";
- var fa = "os-padding";
- var la = "os-viewport";
- var ca = la + "-arrange";
- var sa = "os-content";
- var da = la + "-scrollbar-hidden";
- var ha = "os-overflow-visible";
- var ga = "os-size-observer";
- var pa = ga + "-appear";
- var _a = ga + "-listener";
- var wa = _a + "-scroll";
- var ba = _a + "-item";
- var ma = ba + "-final";
- var ya = "os-trinsic-observer";
- var Sa = "os-scrollbar";
- var Ca = Sa + "-rtl";
- var Oa = Sa + "-horizontal";
- var xa = Sa + "-vertical";
- var Ea = Sa + "-track";
- var Aa = Sa + "-handle";
- var Ta = Sa + "-visible";
- var za = Sa + "-cornerless";
- var Pa = Sa + "-transitionless";
- var La = Sa + "-interaction";
- var Ha = Sa + "-unusable";
- var Ma = Sa + "-auto-hidden";
- var Da = Sa + "-wheel";
- var Ra = Ea + "-interactive";
- var Ia = Aa + "-interactive";
- var ka = {};
- var Va = function getPlugins() {
- return ka;
- };
- var ja = function addPlugin(r) {
- each(d(r) ? r : [ r ], (function(r) {
- var a = E(r)[0];
- ka[a] = r[a];
- }));
- };
- var Ba = {
- exports: {}
- };
- (function(r) {
- function _extends() {
- r.exports = _extends = Object.assign ? Object.assign.bind() : function(r) {
- for (var a = 1; a < arguments.length; a++) {
- var e = arguments[a];
- for (var n in e) {
- if (Object.prototype.hasOwnProperty.call(e, n)) {
- r[n] = e[n];
- }
- }
- }
- return r;
- }, r.exports.v = true, r.exports["default"] = r.exports;
- return _extends.apply(this, arguments);
- }
- r.exports = _extends, r.exports.v = true, r.exports["default"] = r.exports;
- })(Ba);
- var Fa = /*@__PURE__*/ getDefaultExportFromCjs(Ba.exports);
- var qa = {
- boolean: "__TPL_boolean_TYPE__",
- number: "__TPL_number_TYPE__",
- string: "__TPL_string_TYPE__",
- array: "__TPL_array_TYPE__",
- object: "__TPL_object_TYPE__",
- function: "__TPL_function_TYPE__",
- null: "__TPL_null_TYPE__"
- };
- var Ua = function validateRecursive(r, a, e, n) {
- var t = {};
- var v = Fa({}, a);
- var o = E(r).filter((function(r) {
- return x(a, r);
- }));
- each(o, (function(o) {
- var f = a[o];
- var c = r[o];
- var s = p(c);
- var h = n ? n + "." : "";
- if (s && p(f)) {
- var g = validateRecursive(c, f, e, h + o), w = g[0], b = g[1];
- t[o] = w;
- v[o] = b;
- each([ v, t ], (function(r) {
- if (T(r[o])) {
- delete r[o];
- }
- }));
- } else if (!s) {
- var m = false;
- var S = [];
- var C = [];
- var O = u(f);
- var x = !d(c) ? [ c ] : c;
- each(x, (function(r) {
- var a;
- each(qa, (function(e, n) {
- if (e === r) {
- a = n;
- }
- }));
- var e = i(a);
- if (e && l(f)) {
- var n = r.split(" ");
- m = !!n.find((function(r) {
- return r === f;
- }));
- y(S, n);
- } else {
- m = qa[O] === r;
- }
- y(C, e ? qa.string : a);
- return !m;
- }));
- if (m) {
- t[o] = f;
- } else if (e) {
- console.warn('The option "' + h + o + "\" wasn't set, because it doesn't accept the type [ " + O.toUpperCase() + ' ] with the value of "' + f + '".\r\n' + "Accepted types are: [ " + C.join(", ").toUpperCase() + " ].\r\n" + (S.length > 0 ? "\r\nValid strings are: [ " + S.join(", ") + " ]." : ""));
- }
- delete v[o];
- }
- }));
- return [ t, v ];
- };
- var Na = function validateOptions(r, a, e) {
- return Ua(r, a, e);
- };
- var Ya = qa.number;
- var Wa = qa.boolean;
- var Xa = [ qa.array, qa.null ];
- var Ga = "hidden scroll visible visible-hidden";
- var Za = "visible hidden auto";
- var $a = "never scroll leavemove";
- var Ja = {
- paddingAbsolute: Wa,
- showNativeOverlaidScrollbars: Wa,
- update: {
- elementEvents: Xa,
- attributes: Xa,
- debounce: [ qa.number, qa.array, qa.null ],
- ignoreMutation: [ qa.function, qa.null ]
- },
- overflow: {
- x: Ga,
- y: Ga
- },
- scrollbars: {
- theme: [ qa.string, qa.null ],
- visibility: Za,
- autoHide: $a,
- autoHideDelay: Ya,
- dragScroll: Wa,
- clickScroll: Wa,
- pointers: [ qa.array, qa.null ]
- }
- };
- var Ka = "__osOptionsValidationPlugin";
- /* @__PURE__ */ (function() {
- var r;
- return r = {}, r[Ka] = {
- T: function _(r, a) {
- var e = Na(Ja, r, a), n = e[0], t = e[1];
- return Fa({}, t, n);
- }
- }, r;
- })();
- var Qa = 3333333;
- var re = "scroll";
- var ae = "__osSizeObserverPlugin";
- var ee = /* @__PURE__ */ function() {
- var r;
- return r = {}, r[ae] = {
- T: function _(r, a, e) {
- var n = $('
');
- Y(r, n);
- pr(r, wa);
- var t = n[0];
- var v = t.lastChild;
- var i = t.firstChild;
- var o = null == i ? void 0 : i.firstChild;
- var u = Rr(t);
- var f = u;
- var l = false;
- var c;
- var s = function reset() {
- D(i, Qa);
- R(i, Qa);
- D(v, Qa);
- R(v, Qa);
- };
- var d = function onResized(r) {
- c = 0;
- if (l) {
- u = f;
- a(true === r);
- }
- };
- var h = function onScroll(r) {
- f = Rr(t);
- l = !r || !wr(f, u);
- if (r) {
- Yr(r);
- if (l && !c) {
- ur(c);
- c = fr(d);
- }
- } else {
- d(false === r);
- }
- s();
- };
- var g = y([], [ Nr(i, re, h), Nr(v, re, h) ]);
- style(o, {
- width: Qa,
- height: Qa
- });
- fr(s);
- return [ e ? h.bind(0, false) : s, g ];
- }
- }, r;
- }();
- var ne = 0;
- var te = Math.round, ve = Math.abs;
- var ie = function getWindowDPR() {
- var r = window.screen.deviceXDPI || 0;
- var a = window.screen.logicalXDPI || 1;
- return window.devicePixelRatio || r / a;
- };
- var oe = function diffBiggerThanOne(r, a) {
- var e = ve(r);
- var n = ve(a);
- return !(e === n || e + 1 === n || e - 1 === n);
- };
- var ue = "__osScrollbarsHidingPlugin";
- var fe = /* @__PURE__ */ function() {
- var r;
- return r = {}, r[ue] = {
- P: function _createUniqueViewportArrangeElement(r) {
- var a = r.L, e = r.H, n = r.M;
- var t = !n && !a && (e.x || e.y);
- var v = t ? document.createElement("style") : false;
- if (v) {
- P(v, "id", ca + "-" + ne);
- ne++;
- }
- return v;
- },
- D: function _overflowUpdateSegment(r, a, e, n, t, v, i) {
- var o = function arrangeViewport(a, v, i, o) {
- if (r) {
- var u = t(), f = u.R;
- var l = a.I, c = a.k;
- var s = c.x, d = c.y;
- var h = l.x, g = l.y;
- var p = o ? "paddingRight" : "paddingLeft";
- var w = f[p];
- var b = f.paddingTop;
- var m = v.w + i.w;
- var y = v.h + i.h;
- var S = {
- w: g && d ? g + m - w + "px" : "",
- h: h && s ? h + y - b + "px" : ""
- };
- if (n) {
- var C = n.sheet;
- if (C) {
- var O = C.cssRules;
- if (O) {
- if (!O.length) {
- C.insertRule("#" + P(n, "id") + " + ." + ca + "::before {}", 0);
- }
- var x = O[0].style;
- x.width = S.w;
- x.height = S.h;
- }
- }
- } else {
- style(e, {
- "--os-vaw": S.w,
- "--os-vah": S.h
- });
- }
- }
- return r;
- };
- var u = function undoViewportArrange(n, o, u) {
- if (r) {
- var f = u || v(n);
- var l = t(), c = l.R;
- var s = f.k;
- var d = s.x, h = s.y;
- var g = {};
- var p = function assignProps(r) {
- return each(r.split(" "), (function(r) {
- g[r] = c[r];
- }));
- };
- if (d) {
- p("marginBottom paddingTop paddingBottom");
- }
- if (h) {
- p("marginLeft marginRight paddingLeft paddingRight");
- }
- var w = style(e, E(g));
- gr(e, ca);
- if (!a) {
- g.height = "";
- }
- style(e, g);
- return [ function() {
- i(f, o, r, w);
- style(e, w);
- pr(e, ca);
- }, f ];
- }
- return [ Sr ];
- };
- return [ o, u ];
- },
- V: function _envWindowZoom() {
- var r = {
- w: 0,
- h: 0
- };
- var a = 0;
- return function(e, n, t) {
- var v = Dr();
- var i = {
- w: v.w - r.w,
- h: v.h - r.h
- };
- if (0 === i.w && 0 === i.h) {
- return;
- }
- var o = {
- w: ve(i.w),
- h: ve(i.h)
- };
- var u = {
- w: ve(te(v.w / (r.w / 100))),
- h: ve(te(v.h / (r.h / 100)))
- };
- var f = ie();
- var l = o.w > 2 && o.h > 2;
- var c = !oe(u.w, u.h);
- var s = f !== a && f > 0;
- var d = l && c && s;
- if (d) {
- var h = n(), g = h[0], p = h[1];
- A(e.j, g);
- if (p) {
- t();
- }
- }
- r = v;
- a = f;
- };
- }
- }, r;
- }();
- var le;
- var ce = function getNativeScrollbarSize(r, a, e, n) {
- Y(r, a);
- var t = Ir(a);
- var v = Rr(a);
- var i = Vr(e);
- n && G(a);
- return {
- x: v.h - t.h + i.h,
- y: v.w - t.w + i.w
- };
- };
- var se = function getNativeScrollbarsHiding(r) {
- var a = false;
- var e = pr(r, da);
- try {
- a = "none" === style(r, nr("scrollbar-width")) || "none" === window.getComputedStyle(r, "::-webkit-scrollbar").getPropertyValue("display");
- } catch (n) {}
- e();
- return a;
- };
- var de = function getRtlScrollBehavior(r, a) {
- var e = "hidden";
- style(r, {
- overflowX: e,
- overflowY: e,
- direction: "rtl"
- });
- D(r, 0);
- var n = Gr(r);
- var t = Gr(a);
- D(r, -999);
- var v = Gr(a);
- return {
- i: n.x === t.x,
- n: t.x !== v.x
- };
- };
- var he = function getFlexboxGlue(r, a) {
- var e = pr(r, aa);
- var n = jr(r);
- var t = jr(a);
- var v = yr(t, n, true);
- var i = pr(r, ea);
- var o = jr(r);
- var u = jr(a);
- var f = yr(u, o, true);
- e();
- i();
- return v && f;
- };
- var ge = function createEnvironment() {
- var r = document, e = r.body;
- var n = $('
');
- var t = n[0];
- var v = t.firstChild;
- var i = $r(), o = i[0], u = i[2];
- var f = a({
- o: ce(e, t, v),
- u: br
- }, ce.bind(0, e, t, v, true)), l = f[0], c = f[1];
- var s = c(), d = s[0];
- var h = se(t);
- var g = {
- x: 0 === d.x,
- y: 0 === d.y
- };
- var p = {
- elements: {
- host: null,
- padding: !h,
- viewport: function viewport(r) {
- return h && r === r.ownerDocument.body && r;
- },
- content: false
- },
- scrollbars: {
- slot: true
- },
- cancel: {
- nativeScrollbarsOverlaid: false,
- body: null
- }
- };
- var w = A({}, Kr);
- var b = {
- j: d,
- H: g,
- L: h,
- M: "-1" === style(t, "zIndex"),
- B: de(t, v),
- F: he(t, v),
- q: function _addListener(r) {
- return o("_", r);
- },
- U: A.bind(0, {}, p),
- N: function _setDefaultInitialization(r) {
- A(p, r);
- },
- Y: A.bind(0, {}, w),
- W: function _setDefaultOptions(r) {
- A(w, r);
- },
- X: A({}, p),
- G: A({}, w)
- };
- M(t, "style");
- G(t);
- if (!h && (!g.x || !g.y)) {
- var m;
- window.addEventListener("resize", (function() {
- var r = Va()[ue];
- m = m || r && r.V();
- m && m(b, l, u.bind(0, "_"));
- }));
- }
- return b;
- };
- var pe = function getEnvironment() {
- if (!le) {
- le = ge();
- }
- return le;
- };
- var _e = function resolveInitialization(r, a) {
- return s(r) ? r.apply(0, a) : r;
- };
- var we = function staticInitializationElement(r, a, e, n) {
- var t = i(n) ? e : n;
- var v = _e(t, r);
- return v || a();
- };
- var be = function dynamicInitializationElement(r, a, e, n) {
- var t = i(n) ? e : n;
- var v = _e(t, r);
- return !!v && (w(v) ? v : a());
- };
- var me = function cancelInitialization(r, a) {
- var e = r || {}, n = e.nativeScrollbarsOverlaid, t = e.body;
- var v = a.Z;
- var u = pe(), f = u.U, l = u.H, c = u.L;
- var s = f().cancel, d = s.nativeScrollbarsOverlaid, h = s.body;
- var g = null != n ? n : d;
- var p = i(t) ? h : t;
- var w = (l.x || l.y) && g;
- var b = v && (o(p) ? !c : p);
- return !!w || !!b;
- };
- var ye = new WeakMap;
- var Se = function addInstance(r, a) {
- ye.set(r, a);
- };
- var Ce = function removeInstance(r) {
- ye.delete(r);
- };
- var Oe = function getInstance(r) {
- return ye.get(r);
- };
- var xe = function getPropByPath(r, a) {
- return r ? a.split(".").reduce((function(r, a) {
- return r && x(r, a) ? r[a] : void 0;
- }), r) : void 0;
- };
- var Ee = function createOptionCheck(r, a, e) {
- return function(n) {
- return [ xe(r, n), e || void 0 !== xe(a, n) ];
- };
- };
- var Ae = function createState(r) {
- var a = r;
- return [ function() {
- return a;
- }, function(r) {
- a = A({}, a, r);
- } ];
- };
- var Te = "tabindex";
- var ze = Z.bind(0, "");
- var Pe = function unwrap(r) {
- Y(F(r), B(r));
- G(r);
- };
- var Le = function addDataAttrHost(r, a) {
- P(r, na, a);
- return M.bind(0, r, na);
- };
- var He = function createStructureSetupElements(r) {
- var a = pe();
- var e = a.U, n = a.L;
- var t = Va()[ue];
- var v = t && t.P;
- var i = e(), o = i.elements;
- var u = o.host, f = o.viewport, l = o.padding, c = o.content;
- var s = w(r);
- var d = s ? {} : r;
- var h = d.elements;
- var g = h || {}, p = g.host, b = g.padding, S = g.viewport, C = g.content;
- var x = s ? r : d.target;
- var A = j(x, "textarea");
- var T = x.ownerDocument;
- var z = x === T.body;
- var D = T.defaultView;
- var R = we.bind(0, [ x ]);
- var I = be.bind(0, [ x ]);
- var k = R(ze, f, S);
- var V = k === x;
- var q = V && z;
- var U = T.activeElement;
- var N = !V && D.top === D && U === x;
- var Z = {
- $: x,
- J: A ? R(ze, u, p) : x,
- K: k,
- rr: !V && I(ze, l, b),
- ar: !V && I(ze, c, C),
- er: !V && !n && v && v(a),
- nr: q ? T.documentElement : k,
- tr: q ? T : k,
- vr: D,
- ir: T,
- ur: A,
- Z: z,
- lr: s,
- cr: V,
- sr: function _viewportHasClass(r, a) {
- return V ? H(k, na, a) : hr(k, r);
- },
- dr: function _viewportAddRemoveClass(r, a, e) {
- return V ? L(k, na, a, e) : (e ? pr : gr)(k, r);
- }
- };
- var $ = E(Z).reduce((function(r, a) {
- var e = Z[a];
- return y(r, e && !F(e) ? e : false);
- }), []);
- var J = function elementIsGenerated(r) {
- return r ? m($, r) > -1 : null;
- };
- var K = Z.$, Q = Z.J, rr = Z.rr, ar = Z.K, er = Z.ar, nr = Z.er;
- var tr = [];
- var vr = A && J(Q);
- var ir = A ? K : B([ er, ar, rr, Q, K ].find((function(r) {
- return false === J(r);
- })));
- var or = er || ar;
- var ur = function appendElements() {
- var r = Le(Q, V ? "viewport" : "host");
- var a = pr(rr, fa);
- var e = pr(ar, !V && la);
- var t = pr(er, sa);
- var v = z ? pr(F(x), da) : Sr;
- if (vr) {
- X(K, Q);
- y(tr, (function() {
- X(Q, K);
- G(Q);
- }));
- }
- Y(or, ir);
- Y(Q, rr);
- Y(rr || Q, !V && ar);
- Y(ar, er);
- y(tr, (function() {
- v();
- r();
- M(ar, ta);
- M(ar, va);
- if (J(er)) {
- Pe(er);
- }
- if (J(ar)) {
- Pe(ar);
- }
- if (J(rr)) {
- Pe(rr);
- }
- a();
- e();
- t();
- }));
- if (n && !V) {
- y(tr, gr.bind(0, ar, da));
- }
- if (nr) {
- W(ar, nr);
- y(tr, G.bind(0, nr));
- }
- if (N) {
- var i = P(ar, Te);
- P(ar, Te, "-1");
- ar.focus();
- var o = Nr(T, "pointerdown keydown", (function() {
- i ? P(ar, Te, i) : M(ar, Te);
- o();
- }));
- } else if (U && U.focus) {
- U.focus();
- }
- ir = 0;
- };
- return [ Z, ur, O.bind(0, tr) ];
- };
- var Me = function createTrinsicUpdateSegment(r, a) {
- var e = r.ar;
- var n = a[0];
- return function(r) {
- var a = pe(), t = a.F;
- var v = n(), i = v.hr;
- var o = r.gr;
- var u = (e || !t) && o;
- if (u) {
- style(e, {
- height: i ? "" : "100%"
- });
- }
- return {
- pr: u,
- _r: u
- };
- };
- };
- var De = function createPaddingUpdateSegment(r, e) {
- var n = e[0], t = e[1];
- var v = r.J, i = r.rr, o = r.K, u = r.cr;
- var f = a({
- u: mr,
- o: Lr()
- }, Lr.bind(0, v, "padding", "")), l = f[0], c = f[1];
- return function(r, a, e) {
- var v = c(e), f = v[0], s = v[1];
- var d = pe(), h = d.L, g = d.F;
- var p = n(), w = p.wr;
- var b = r.pr, m = r._r, y = r.br;
- var S = a("paddingAbsolute"), C = S[0], O = S[1];
- var x = !g && m;
- if (b || s || x) {
- var E = l(e);
- f = E[0];
- s = E[1];
- }
- var T = !u && (O || y || s);
- if (T) {
- var z = !C || !i && !h;
- var P = f.r + f.l;
- var L = f.t + f.b;
- var H = {
- marginRight: z && !w ? -P : 0,
- marginBottom: z ? -L : 0,
- marginLeft: z && w ? -P : 0,
- top: z ? -f.t : 0,
- right: z ? w ? -f.r : "auto" : 0,
- left: z ? w ? "auto" : -f.l : 0,
- width: z ? "calc(100% + " + P + "px)" : ""
- };
- var M = {
- paddingTop: z ? f.t : 0,
- paddingRight: z ? f.r : 0,
- paddingBottom: z ? f.b : 0,
- paddingLeft: z ? f.l : 0
- };
- style(i || o, H);
- style(o, M);
- t({
- rr: f,
- mr: !z,
- R: i ? M : A({}, H, M)
- });
- }
- return {
- yr: T
- };
- };
- };
- var Re = Math.max;
- var Ie = Re.bind(0, 0);
- var ke = "visible";
- var Ve = "hidden";
- var je = 42;
- var Be = {
- u: wr,
- o: {
- w: 0,
- h: 0
- }
- };
- var Fe = {
- u: br,
- o: {
- x: Ve,
- y: Ve
- }
- };
- var qe = function getOverflowAmount(r, a) {
- var e = window.devicePixelRatio % 1 !== 0 ? 1 : 0;
- var n = {
- w: Ie(r.w - a.w),
- h: Ie(r.h - a.h)
- };
- return {
- w: n.w > e ? n.w : 0,
- h: n.h > e ? n.h : 0
- };
- };
- var Ue = function conditionalClass(r, a, e) {
- return e ? pr(r, a) : gr(r, a);
- };
- var Ne = function overflowIsVisible(r) {
- return 0 === r.indexOf(ke);
- };
- var Ye = function createOverflowUpdateSegment(r, e) {
- var n = e[0], t = e[1];
- var v = r.J, i = r.rr, o = r.K, u = r.er, f = r.cr, l = r.dr, c = r.Z, s = r.vr;
- var d = pe(), h = d.j, g = d.F, p = d.L, w = d.H;
- var b = Va()[ue];
- var m = !f && !p && (w.x || w.y);
- var y = c && f;
- var S = a(Be, Vr.bind(0, o)), C = S[0], O = S[1];
- var x = a(Be, kr.bind(0, o)), E = x[0], A = x[1];
- var T = a(Be), z = T[0], H = T[1];
- var M = a(Be), D = M[0], R = M[1];
- var I = a(Fe), k = I[0];
- var V = function fixFlexboxGlue(r, a) {
- style(o, {
- height: ""
- });
- if (a) {
- var e = n(), t = e.mr, i = e.rr;
- var u = r.Sr, f = r.I;
- var l = Vr(v);
- var c = Ir(v);
- var s = "content-box" === style(o, "boxSizing");
- var d = t || s ? i.b + i.t : 0;
- var h = !(w.x && s);
- style(o, {
- height: c.h + l.h + (u.x && h ? f.x : 0) - d
- });
- }
- };
- var j = function getViewportOverflowState(r, a) {
- var e = !p && !r ? je : 0;
- var n = function getStatePerAxis(r, n, t) {
- var v = style(o, r);
- var i = a ? a[r] : v;
- var u = "scroll" === i;
- var f = n ? e : t;
- var l = u && !p ? f : 0;
- var c = n && !!e;
- return [ v, u, l, c ];
- };
- var t = n("overflowX", w.x, h.x), v = t[0], i = t[1], u = t[2], f = t[3];
- var l = n("overflowY", w.y, h.y), c = l[0], s = l[1], d = l[2], g = l[3];
- return {
- Cr: {
- x: v,
- y: c
- },
- Sr: {
- x: i,
- y: s
- },
- I: {
- x: u,
- y: d
- },
- k: {
- x: f,
- y: g
- }
- };
- };
- var B = function setViewportOverflowState(r, a, e, n) {
- var t = function setAxisOverflowStyle(r, a) {
- var e = Ne(r);
- var n = a && e && r.replace(ke + "-", "") || "";
- return [ a && !e ? r : "", Ne(n) ? "hidden" : n ];
- };
- var v = t(e.x, a.x), i = v[0], o = v[1];
- var u = t(e.y, a.y), f = u[0], l = u[1];
- n.overflowX = o && f ? o : i;
- n.overflowY = l && i ? l : f;
- return j(r, n);
- };
- var F = function hideNativeScrollbars(r, a, e, t) {
- var v = r.I, i = r.k;
- var o = i.x, u = i.y;
- var f = v.x, l = v.y;
- var c = n(), s = c.R;
- var d = a ? "marginLeft" : "marginRight";
- var h = a ? "paddingLeft" : "paddingRight";
- var g = s[d];
- var p = s.marginBottom;
- var w = s[h];
- var b = s.paddingBottom;
- t.width = "calc(100% + " + (l + -1 * g) + "px)";
- t[d] = -l + g;
- t.marginBottom = -f + p;
- if (e) {
- t[h] = w + (u ? l : 0);
- t.paddingBottom = b + (o ? f : 0);
- }
- };
- var q = b ? b.D(m, g, o, u, n, j, F) : [ function() {
- return m;
- }, function() {
- return [ Sr ];
- } ], U = q[0], N = q[1];
- return function(r, a, e) {
- var u = r.pr, c = r.Or, d = r._r, h = r.yr, b = r.gr, m = r.br;
- var S = n(), x = S.hr, T = S.wr;
- var M = a("showNativeOverlaidScrollbars"), I = M[0], q = M[1];
- var Y = a("overflow"), W = Y[0], X = Y[1];
- var G = I && w.x && w.y;
- var Z = !f && !g && (u || d || c || q || b);
- var $ = Ne(W.x);
- var J = Ne(W.y);
- var K = $ || J;
- var Q = O(e);
- var rr = A(e);
- var ar = H(e);
- var er = R(e);
- var nr;
- if (q && p) {
- l(da, oa, !G);
- }
- if (Z) {
- nr = j(G);
- V(nr, x);
- }
- if (u || h || d || m || q) {
- if (K) {
- l(ha, ia, false);
- }
- var tr = N(G, T, nr), vr = tr[0], ir = tr[1];
- var or = Q = C(e), ur = or[0], fr = or[1];
- var lr = rr = E(e), cr = lr[0], sr = lr[1];
- var dr = Ir(o);
- var hr = cr;
- var gr = dr;
- vr();
- if ((sr || fr || q) && ir && !G && U(ir, cr, ur, T)) {
- gr = Ir(o);
- hr = kr(o);
- }
- var pr = {
- w: Ie(Re(cr.w, hr.w) + ur.w),
- h: Ie(Re(cr.h, hr.h) + ur.h)
- };
- var _r = {
- w: Ie(y ? s.innerWidth : gr.w + Ie(dr.w - cr.w) + ur.w),
- h: Ie(y ? s.innerHeight : gr.h + Ie(dr.h - cr.h) + ur.h)
- };
- er = D(_r);
- ar = z(qe(pr, _r), e);
- }
- var wr = er, br = wr[0], mr = wr[1];
- var yr = ar, Sr = yr[0], Cr = yr[1];
- var Or = rr, xr = Or[0], Er = Or[1];
- var Ar = Q, Tr = Ar[0], zr = Ar[1];
- var Pr = {
- x: Sr.w > 0,
- y: Sr.h > 0
- };
- var Lr = $ && J && (Pr.x || Pr.y) || $ && Pr.x && !Pr.y || J && Pr.y && !Pr.x;
- if (h || m || zr || Er || mr || Cr || X || q || Z) {
- var Hr = {
- marginRight: 0,
- marginBottom: 0,
- marginLeft: 0,
- width: "",
- overflowY: "",
- overflowX: ""
- };
- var Mr = B(G, Pr, W, Hr);
- var Dr = U(Mr, xr, Tr, T);
- if (!f) {
- F(Mr, T, Dr, Hr);
- }
- if (Z) {
- V(Mr, x);
- }
- if (f) {
- P(v, ta, Hr.overflowX);
- P(v, va, Hr.overflowY);
- } else {
- style(o, Hr);
- }
- }
- L(v, na, ia, Lr);
- Ue(i, ha, Lr);
- !f && Ue(o, ha, K);
- var Rr = k(j(G).Cr), Vr = Rr[0], jr = Rr[1];
- t({
- Cr: Vr,
- Er: {
- x: br.w,
- y: br.h
- },
- Ar: {
- x: Sr.w,
- y: Sr.h
- },
- Tr: Pr
- });
- return {
- zr: jr,
- Pr: mr,
- Lr: Cr
- };
- };
- };
- var We = function prepareUpdateHints(r, a, e) {
- var n = {};
- var t = a || {};
- var v = E(r).concat(E(t));
- each(v, (function(a) {
- var v = r[a];
- var i = t[a];
- n[a] = !!(e || v || i);
- }));
- return n;
- };
- var Xe = function createStructureSetupUpdate(r, a) {
- var e = r.$, n = r.K, t = r.dr, v = r.cr;
- var i = pe(), o = i.L, u = i.H, f = i.F;
- var l = !o && (u.x || u.y);
- var c = [ Me(r, a), De(r, a), Ye(r, a) ];
- return function(r, a, i) {
- var o = We(A({
- pr: false,
- yr: false,
- br: false,
- gr: false,
- Pr: false,
- Lr: false,
- zr: false,
- Or: false,
- _r: false
- }, a), {}, i);
- var u = l || !f;
- var s = u && D(n);
- var d = u && R(n);
- t("", ua, true);
- var h = o;
- each(c, (function(a) {
- h = We(h, a(h, r, !!i) || {}, i);
- }));
- D(n, s);
- R(n, d);
- t("", ua);
- if (!v) {
- D(e, 0);
- R(e, 0);
- }
- return h;
- };
- };
- var Ge = 3333333;
- var Ze = function domRectHasDimensions(r) {
- return r && (r.height || r.width);
- };
- var $e = function createSizeObserver(r, e, n) {
- var t = n || {}, v = t.Hr, i = void 0 === v ? false : v, o = t.Mr, u = void 0 === o ? false : o;
- var f = Va()[ae];
- var l = pe(), s = l.B;
- var g = $('
');
- var p = g[0];
- var w = p.firstChild;
- var b = Pr.bind(0, r);
- var m = a({
- o: void 0,
- g: true,
- u: function _equal(r, a) {
- return !(!r || !Ze(r) && Ze(a));
- }
- }), S = m[0];
- var C = function onSizeChangedCallbackProxy(r) {
- var a = d(r) && r.length > 0 && h(r[0]);
- var n = !a && c(r[0]);
- var t = false;
- var v = false;
- var o = true;
- if (a) {
- var u = S(r.pop().contentRect), f = u[0], l = u[2];
- var g = Ze(f);
- var w = Ze(l);
- t = !l || !g;
- v = !w && g;
- o = !t;
- } else if (n) {
- o = r[1];
- } else {
- v = true === r;
- }
- if (i && o) {
- var b = n ? r[0] : Pr(p);
- D(p, b ? s.n ? -Ge : s.i ? 0 : Ge : Ge);
- R(p, Ge);
- }
- if (!t) {
- e({
- pr: !n,
- Dr: n ? r : void 0,
- Mr: !!v
- });
- }
- };
- var x = [];
- var E = u ? C : false;
- return [ function() {
- O(x);
- G(p);
- }, function() {
- if (or) {
- var e = new or(C);
- e.observe(w);
- y(x, (function() {
- e.disconnect();
- }));
- } else if (f) {
- var n = f.T(w, C, u), t = n[0], v = n[1];
- E = t;
- y(x, v);
- }
- if (i) {
- var o = a({
- o: !b()
- }, b), l = o[0];
- y(x, Nr(p, "scroll", (function(r) {
- var a = l();
- var e = a[0], n = a[1];
- if (n) {
- gr(w, "ltr rtl");
- if (e) {
- pr(w, "rtl");
- } else {
- pr(w, "ltr");
- }
- C(a);
- }
- Yr(r);
- })));
- }
- if (E) {
- pr(p, pa);
- y(x, Nr(p, "animationstart", E, {
- A: !!or
- }));
- }
- Y(r, p);
- } ];
- };
- var Je = function isHeightIntrinsic(r) {
- return 0 === r.h || r.isIntersecting || r.intersectionRatio > 0;
- };
- var Ke = function createTrinsicObserver(r, e) {
- var n;
- var t = Z(ya);
- var v = [];
- var i = a({
- o: false
- }), o = i[0];
- var u = function triggerOnTrinsicChangedCallback(r, a) {
- if (r) {
- var n = o(Je(r));
- var t = n[1];
- if (t) {
- !a && e(n);
- return [ n ];
- }
- }
- };
- var f = function intersectionObserverCallback(r, a) {
- if (r && r.length > 0) {
- return u(r.pop(), a);
- }
- };
- return [ function() {
- O(v);
- G(t);
- }, function() {
- if (ir) {
- n = new ir((function(r) {
- return f(r);
- }), {
- root: r
- });
- n.observe(t);
- y(v, (function() {
- n.disconnect();
- }));
- } else {
- var a = function onSizeChanged() {
- var r = Rr(t);
- u(r);
- };
- var e = $e(t, a), i = e[0], o = e[1];
- y(v, i);
- o();
- a();
- }
- Y(r, t);
- }, function() {
- if (n) {
- return f(n.takeRecords(), true);
- }
- } ];
- };
- var Qe = function createEventContentChange(r, a, e) {
- var n;
- var t = false;
- var v = function destroy() {
- t = true;
- };
- var i = function updateElements(v) {
- if (e) {
- var i = e.reduce((function(a, e) {
- if (e) {
- var n = e[0];
- var t = e[1];
- var i = t && n && (v ? v(n) : k(n, r));
- if (i && i.length && t && l(t)) {
- y(a, [ i, t.trim() ], true);
- }
- }
- return a;
- }), []);
- each(i, (function(r) {
- return each(r[0], (function(e) {
- var v = r[1];
- var i = n.get(e);
- if (i) {
- var o = i[0];
- var u = i[1];
- if (o === v) {
- u();
- }
- }
- var f = Nr(e, v, (function(r) {
- if (t) {
- f();
- n.delete(e);
- } else {
- a(r);
- }
- }));
- n.set(e, [ v, f ]);
- }));
- }));
- }
- };
- if (e) {
- n = new WeakMap;
- i();
- }
- return [ v, i ];
- };
- var rn = function createDOMObserver(r, a, e, n) {
- var t = false;
- var v = n || {}, i = v.Rr, o = v.Ir, u = v.kr, f = v.Vr, c = v.jr, s = v.Br;
- var d = Or((function() {
- if (t) {
- e(true);
- }
- }), {
- p: 33,
- _: 99
- });
- var h = Qe(r, d, u), g = h[0], p = h[1];
- var w = i || [];
- var b = o || [];
- var S = w.concat(b);
- var O = function observerCallback(t, v) {
- var i = c || Sr;
- var o = s || Sr;
- var u = [];
- var d = [];
- var h = false;
- var g = false;
- var w = false;
- each(t, (function(e) {
- var t = e.attributeName, v = e.target, c = e.type, s = e.oldValue, p = e.addedNodes;
- var S = "attributes" === c;
- var C = "childList" === c;
- var O = r === v;
- var x = S && l(t) ? P(v, t) : 0;
- var E = 0 !== x && s !== x;
- var A = m(b, t) > -1 && E;
- if (a && !O) {
- var T = !S;
- var z = S && A;
- var L = z && f && j(v, f);
- var H = L ? !i(v, t, s, x) : T || z;
- var M = H && !o(e, !!L, r, n);
- y(d, p);
- g = g || M;
- w = w || C;
- }
- if (!a && O && E && !i(v, t, s, x)) {
- y(u, t);
- h = h || A;
- }
- }));
- if (w && !C(d)) {
- p((function(r) {
- return d.reduce((function(a, e) {
- y(a, k(r, e));
- return j(e, r) ? y(a, e) : a;
- }), []);
- }));
- }
- if (a) {
- !v && g && e(false);
- return [ false ];
- }
- if (!C(u) || h) {
- !v && e(u, h);
- return [ u, h ];
- }
- };
- var x = new vr((function(r) {
- return O(r);
- }));
- x.observe(r, {
- attributes: true,
- attributeOldValue: true,
- attributeFilter: S,
- subtree: a,
- childList: a,
- characterData: a
- });
- t = true;
- return [ function() {
- if (t) {
- g();
- x.disconnect();
- t = false;
- }
- }, function() {
- if (t) {
- d.S();
- var r = x.takeRecords();
- return !C(r) && O(r, true);
- }
- } ];
- };
- var an = "[" + na + "]";
- var en = "." + la;
- var nn = [ "tabindex" ];
- var tn = [ "wrap", "cols", "rows" ];
- var vn = [ "id", "class", "style", "open" ];
- var un = function createStructureSetupObservers(r, e, n) {
- var t;
- var v;
- var i;
- var o = e[1];
- var u = r.J, c = r.K, h = r.ar, g = r.ur, p = r.cr, w = r.sr, b = r.dr;
- var S = pe(), C = S.F;
- var O = a({
- u: wr,
- o: {
- w: 0,
- h: 0
- }
- }, (function() {
- var r = w(ha, ia);
- var a = w(ca, "");
- var e = a && D(c);
- var n = a && R(c);
- b(ha, ia);
- b(ca, "");
- b("", ua, true);
- var t = kr(h);
- var v = kr(c);
- var i = Vr(c);
- b(ha, ia, r);
- b(ca, "", a);
- b("", ua);
- D(c, e);
- R(c, n);
- return {
- w: v.w + t.w + i.w,
- h: v.h + t.h + i.h
- };
- })), x = O[0];
- var T = g ? tn : vn.concat(tn);
- var z = Or(n, {
- p: function _timeout() {
- return t;
- },
- _: function _maxDelay() {
- return v;
- },
- m: function _mergeParams(r, a) {
- var e = r[0];
- var n = a[0];
- return [ E(e).concat(E(n)).reduce((function(r, a) {
- r[a] = e[a] || n[a];
- return r;
- }), {}) ];
- }
- });
- var L = function updateViewportAttrsFromHost(r) {
- each(r || nn, (function(r) {
- if (m(nn, r) > -1) {
- var a = P(u, r);
- if (l(a)) {
- P(c, r, a);
- } else {
- M(c, r);
- }
- }
- }));
- };
- var H = function onTrinsicChanged(r, a) {
- var e = r[0], t = r[1];
- var v = {
- gr: t
- };
- o({
- hr: e
- });
- !a && n(v);
- return v;
- };
- var I = function onSizeChanged(r) {
- var a = r.pr, e = r.Dr, t = r.Mr;
- var v = !a || t ? n : z;
- var i = false;
- if (e) {
- var u = e[0], f = e[1];
- i = f;
- o({
- wr: u
- });
- }
- v({
- pr: a,
- br: i
- });
- };
- var k = function onContentMutation(r, a) {
- var e = x(), t = e[1];
- var v = {
- _r: t
- };
- var i = r ? n : z;
- if (t) {
- !a && i(v);
- }
- return v;
- };
- var V = function onHostMutation(r, a, e) {
- var n = {
- Or: a
- };
- if (a) {
- !e && z(n);
- } else if (!p) {
- L(r);
- }
- return n;
- };
- var j = h || !C ? Ke(u, H) : [ Sr, Sr, Sr ], B = j[0], F = j[1], N = j[2];
- var Y = !p ? $e(u, I, {
- Mr: true,
- Hr: true
- }) : [ Sr, Sr ], W = Y[0], X = Y[1];
- var G = rn(u, false, V, {
- Ir: vn,
- Rr: vn.concat(nn)
- }), Z = G[0], $ = G[1];
- var J = p && or && new or(I.bind(0, {
- pr: true
- }));
- J && J.observe(u);
- L();
- return [ function() {
- B();
- W();
- i && i[0]();
- J && J.disconnect();
- Z();
- }, function() {
- X();
- F();
- }, function() {
- var r = {};
- var a = $();
- var e = N();
- var n = i && i[1]();
- if (a) {
- A(r, V.apply(0, y(a, true)));
- }
- if (e) {
- A(r, H.apply(0, y(e, true)));
- }
- if (n) {
- A(r, k.apply(0, y(n, true)));
- }
- return r;
- }, function(r) {
- var a = r("update.ignoreMutation"), e = a[0];
- var n = r("update.attributes"), o = n[0], u = n[1];
- var l = r("update.elementEvents"), g = l[0], w = l[1];
- var b = r("update.debounce"), m = b[0], y = b[1];
- var S = w || u;
- var C = function ignoreMutationFromOptions(r) {
- return s(e) && e(r);
- };
- if (S) {
- if (i) {
- i[1]();
- i[0]();
- }
- i = rn(h || c, true, k, {
- Ir: T.concat(o || []),
- Rr: T.concat(o || []),
- kr: g,
- Vr: an,
- Br: function _ignoreContentChange(r, a) {
- var e = r.target, n = r.attributeName;
- var t = !a && n && !p ? U(e, an, en) : false;
- return t || !!q(e, "." + Sa) || !!C(r);
- }
- });
- }
- if (y) {
- z.S();
- if (d(m)) {
- var O = m[0];
- var x = m[1];
- t = f(O) && O;
- v = f(x) && x;
- } else if (f(m)) {
- t = m;
- v = false;
- } else {
- t = false;
- v = false;
- }
- }
- } ];
- };
- var fn = {
- x: 0,
- y: 0
- };
- var ln = {
- rr: {
- t: 0,
- r: 0,
- b: 0,
- l: 0
- },
- mr: false,
- R: {
- marginRight: 0,
- marginBottom: 0,
- marginLeft: 0,
- paddingTop: 0,
- paddingRight: 0,
- paddingBottom: 0,
- paddingLeft: 0
- },
- Er: fn,
- Ar: fn,
- Cr: {
- x: "hidden",
- y: "hidden"
- },
- Tr: {
- x: false,
- y: false
- },
- hr: false,
- wr: false
- };
- var cn = function createStructureSetup(r, a) {
- var e = Ee(a, {});
- var n = Ae(ln);
- var t = $r(), v = t[0], i = t[1], o = t[2];
- var u = n[0];
- var f = He(r), l = f[0], c = f[1], s = f[2];
- var d = Xe(l, n);
- var h = function triggerUpdateEvent(r, a, e) {
- var n = E(r).some((function(a) {
- return r[a];
- }));
- if (n || !T(a) || e) {
- o("u", [ r, a, e ]);
- }
- };
- var g = un(l, n, (function(r) {
- h(d(e, r), {}, false);
- })), p = g[0], w = g[1], b = g[2], m = g[3];
- var y = u.bind(0);
- y.Fr = function(r) {
- v("u", r);
- };
- y.qr = function() {
- var r = l.$, a = l.K;
- var e = D(r);
- var n = R(r);
- w();
- c();
- D(a, e);
- R(a, n);
- };
- y.Ur = l;
- return [ function(r, e) {
- var n = Ee(a, r, e);
- m(n);
- h(d(n, b(), e), r, !!e);
- }, y, function() {
- i();
- p();
- s();
- } ];
- };
- var sn = Math.round, dn = Math.max, hn = Math.sign;
- var gn = function animationCurrentTime() {
- return performance.now();
- };
- var pn = function animateNumber(r, a, e, n) {
- var t = 0;
- var v = gn();
- var i = function frame() {
- var i = gn();
- var o = i - v;
- var u = o >= e;
- var f = 1 - (dn(0, v + e - i) / e || 0);
- var l = (a - r) * f + r;
- var c = u || 1 === f;
- n(l, c);
- t = c ? 0 : fr(frame);
- };
- i();
- return function() {
- return ur(t);
- };
- };
- var _n = function getScale(r) {
- var a = jr(r), e = a.width, n = a.height;
- var t = Rr(r), v = t.w, i = t.h;
- return {
- x: sn(e) / v || 1,
- y: sn(n) / i || 1
- };
- };
- var wn = function continuePointerDown(r, a, e) {
- var n = a.scrollbars;
- var t = r.button, v = r.isPrimary, i = r.pointerType;
- var o = n.pointers;
- return 0 === t && v && n[e ? "dragScroll" : "clickScroll"] && (o || []).includes(i);
- };
- var bn = function createRootClickStopPropagationEvents(r, a) {
- return Nr(r, "mousedown", Nr.bind(0, a, "click", Yr, {
- A: true,
- O: true
- }), {
- O: true
- });
- };
- var mn = function createInteractiveScrollEvents(r, a, e, n, t, v) {
- var i = pe(), o = i.B;
- var u = e.Nr, f = e.Yr, l = e.Wr;
- var c = "scroll" + (v ? "Left" : "Top");
- var s = "client" + (v ? "X" : "Y");
- var d = v ? "width" : "height";
- var h = v ? "left" : "top";
- var g = v ? "w" : "h";
- var p = v ? "x" : "y";
- var w = function getHandleOffset(r, a) {
- return r[h] - a[h];
- };
- var b = function createRelativeHandleMove(r, a) {
- return function(e) {
- var i = t(), s = i.Ar;
- var d = Rr(f)[g] - Rr(u)[g];
- var h = a * e / d;
- var w = h * s[p];
- var b = Pr(l);
- var m = b && v ? o.n || o.i ? 1 : -1 : 1;
- n[c] = r + w * m;
- };
- };
- return Nr(f, "pointerdown", (function(e) {
- var t = q(e.target, "." + Aa) === u;
- if (wn(e, r, t)) {
- var v = !t && e.shiftKey;
- var i = b(n[c] || 0, 1 / _n(n)[p]);
- var o = e[s];
- var l = jr(u);
- var g = jr(f);
- var m = l[d];
- var S = w(l, g) + m / 2;
- var C = o - g[h];
- var x = t ? 0 : C - S;
- var E = [ Nr(a, "selectstart", (function(r) {
- return Wr(r);
- }), {
- C: false
- }), Nr(f, "pointermove", (function(r) {
- var a = r[s] - o;
- if (t || v) {
- i(x + a);
- }
- })) ];
- if (v) {
- i(x);
- } else if (!t) {
- var A = 0;
- var T = Sr;
- var z = function animateClickScroll(r) {
- T = pn(r, r + m * hn(x), 133, (function(r, a) {
- i(r);
- var e = w(jr(u), g);
- var n = e + m;
- var t = C >= e && C <= n;
- if (a && !t) {
- if (A) {
- animateClickScroll(r);
- } else {
- var v = setTimeout((function() {
- animateClickScroll(r);
- }), 222);
- T = function clear() {
- clearTimeout(v);
- };
- }
- A++;
- }
- }));
- };
- z(0);
- y(E, (function() {
- return T();
- }));
- }
- Nr(f, "pointerup", (function(r) {
- O(E);
- f.releasePointerCapture(r.pointerId);
- }), {
- A: true
- });
- f.setPointerCapture(e.pointerId);
- }
- }));
- };
- var yn = function createScrollbarsSetupEvents(r, a) {
- return function(e, n, t, v, i, o) {
- var u = e.Wr;
- var f = Cr(333), l = f[0], c = f[1];
- var s = !!i.scrollBy;
- var d = true;
- return O.bind(0, [ Nr(u, "pointerenter", (function() {
- n(La, true);
- })), Nr(u, "pointerleave pointercancel", (function() {
- n(La);
- })), Nr(u, "wheel", (function(r) {
- var a = r.deltaX, e = r.deltaY, t = r.deltaMode;
- if (s && d && 0 === t && F(u) === v) {
- i.scrollBy({
- left: a,
- top: e,
- behavior: "smooth"
- });
- }
- d = false;
- n(Da, true);
- l((function() {
- d = true;
- n(Da);
- }));
- Wr(r);
- }), {
- C: false,
- O: true
- }), bn(u, t), mn(r, t, e, i, a, o), c ]);
- };
- };
- var Sn = Math.min, Cn = Math.max, On = Math.abs, xn = Math.round;
- var En = function getScrollbarHandleLengthRatio(r, a, e, n) {
- if (n) {
- var t = e ? "x" : "y";
- var v = n.Ar, i = n.Er;
- var o = i[t];
- var u = v[t];
- return Cn(0, Sn(1, o / (o + u)));
- }
- var f = e ? "w" : "h";
- var l = Rr(r)[f];
- var c = Rr(a)[f];
- return Cn(0, Sn(1, l / c));
- };
- var An = function getScrollbarHandleOffsetRatio(r, a, e, n, t, v) {
- var i = pe(), o = i.B;
- var u = v ? "x" : "y";
- var f = v ? "Left" : "Top";
- var l = n.Ar;
- var c = xn(l[u]);
- var s = On(e["scroll" + f]);
- var d = v && t;
- var h = o.i ? s : c - s;
- var g = d ? h : s;
- var p = Sn(1, g / c);
- var w = En(r, a, v);
- return 1 / w * (1 - w) * p;
- };
- var Tn = function createScrollbarsSetupElements(r, a, e) {
- var n = pe(), t = n.U;
- var v = t(), i = v.scrollbars;
- var o = i.slot;
- var u = a.ir, f = a.$, l = a.J, s = a.K, d = a.lr, h = a.nr;
- var g = d ? {} : r, p = g.scrollbars;
- var w = p || {}, b = w.slot;
- var m = be([ f, l, s ], (function() {
- return l;
- }), o, b);
- var S = function scrollbarStructureAddRemoveClass(r, a, e) {
- var n = e ? pr : gr;
- each(r, (function(r) {
- n(r.Wr, a);
- }));
- };
- var x = function scrollbarsHandleStyle(r, a) {
- each(r, (function(r) {
- var e = a(r), n = e[0], t = e[1];
- style(n, t);
- }));
- };
- var E = function scrollbarStructureRefreshHandleLength(r, a, e) {
- x(r, (function(r) {
- var n;
- var t = r.Nr, v = r.Yr;
- return [ t, (n = {}, n[e ? "width" : "height"] = (100 * En(t, v, e, a)).toFixed(3) + "%",
- n) ];
- }));
- };
- var A = function scrollbarStructureRefreshHandleOffset(r, a, e) {
- var n = e ? "X" : "Y";
- x(r, (function(r) {
- var t = r.Nr, v = r.Yr, i = r.Wr;
- var o = An(t, v, h, a, Pr(i), e);
- var u = o === o;
- return [ t, {
- transform: u ? "translate" + n + "(" + (100 * o).toFixed(3) + "%)" : ""
- } ];
- }));
- };
- var T = [];
- var z = [];
- var P = [];
- var L = function scrollbarsAddRemoveClass(r, a, e) {
- var n = c(e);
- var t = n ? e : true;
- var v = n ? !e : true;
- t && S(z, r, a);
- v && S(P, r, a);
- };
- var H = function refreshScrollbarsHandleLength(r) {
- E(z, r, true);
- E(P, r);
- };
- var M = function refreshScrollbarsHandleOffset(r) {
- A(z, r, true);
- A(P, r);
- };
- var D = function generateScrollbarDOM(r) {
- var a = r ? Oa : xa;
- var n = r ? z : P;
- var t = C(n) ? Pa : "";
- var v = Z(Sa + " " + a + " " + t);
- var i = Z(Ea);
- var o = Z(Aa);
- var f = {
- Wr: v,
- Yr: i,
- Nr: o
- };
- Y(v, i);
- Y(i, o);
- y(n, f);
- y(T, [ G.bind(0, v), e(f, L, u, l, h, r) ]);
- return f;
- };
- var R = D.bind(0, true);
- var I = D.bind(0, false);
- var k = function appendElements() {
- Y(m, z[0].Wr);
- Y(m, P[0].Wr);
- lr((function() {
- L(Pa);
- }), 300);
- };
- R();
- I();
- return [ {
- Xr: H,
- Gr: M,
- Zr: L,
- $r: {
- Jr: z,
- Kr: R,
- Qr: x.bind(0, z)
- },
- ra: {
- Jr: P,
- Kr: I,
- Qr: x.bind(0, P)
- }
- }, k, O.bind(0, T) ];
- };
- var zn = function createScrollbarsSetup(r, a, e) {
- var n;
- var t;
- var v;
- var i;
- var o;
- var u = 0;
- var f = Ae({});
- var l = f[0];
- var c = Cr(), s = c[0], d = c[1];
- var h = Cr(), g = h[0], p = h[1];
- var w = Cr(100), b = w[0], m = w[1];
- var y = Cr(100), S = y[0], C = y[1];
- var x = Cr((function() {
- return u;
- })), E = x[0], A = x[1];
- var T = Tn(r, e.Ur, yn(a, e)), z = T[0], P = T[1], L = T[2];
- var H = e.Ur, M = H.J, I = H.K, k = H.nr, V = H.tr, j = H.cr, B = H.Z;
- var q = z.$r, U = z.ra, N = z.Zr, Y = z.Xr, W = z.Gr;
- var X = q.Qr;
- var G = U.Qr;
- var Z = function styleScrollbarPosition(r) {
- var a = r.Wr;
- var e = j && !B && F(a) === I && a;
- return [ e, {
- transform: e ? "translate(" + D(k) + "px, " + R(k) + "px)" : ""
- } ];
- };
- var $ = function manageScrollbarsAutoHide(r, a) {
- A();
- if (r) {
- N(Ma);
- } else {
- var e = function hide() {
- return N(Ma, true);
- };
- if (u > 0 && !a) {
- E(e);
- } else {
- e();
- }
- }
- };
- var J = function onHostMouseEnter() {
- i = t;
- i && $(true);
- };
- var K = [ m, A, C, p, d, L, Nr(M, "pointerover", J, {
- A: true
- }), Nr(M, "pointerenter", J), Nr(M, "pointerleave", (function() {
- i = false;
- t && $(false);
- })), Nr(M, "pointermove", (function() {
- n && s((function() {
- m();
- $(true);
- S((function() {
- n && $(false);
- }));
- }));
- })), Nr(V, "scroll", (function() {
- g((function() {
- W(e());
- v && $(true);
- b((function() {
- v && !i && $(false);
- }));
- }));
- j && X(Z);
- j && G(Z);
- })) ];
- var Q = l.bind(0);
- Q.Ur = z;
- Q.qr = P;
- return [ function(r, i, f) {
- var l = f.Pr, c = f.Lr, s = f.zr, d = f.br;
- var h = Ee(a, r, i);
- var g = e();
- var p = g.Ar, w = g.Cr, b = g.wr;
- var m = h("scrollbars.theme"), y = m[0], S = m[1];
- var C = h("scrollbars.visibility"), O = C[0], x = C[1];
- var E = h("scrollbars.autoHide"), A = E[0], T = E[1];
- var z = h("scrollbars.autoHideDelay"), P = z[0];
- var L = h("scrollbars.dragScroll"), H = L[0], M = L[1];
- var D = h("scrollbars.clickScroll"), R = D[0], I = D[1];
- var k = l || c || d || i;
- var V = s || x || i;
- var j = function setScrollbarVisibility(r, a) {
- var e = "visible" === O || "auto" === O && "scroll" === r;
- N(Ta, e, a);
- return e;
- };
- u = P;
- if (S) {
- N(o);
- N(y, true);
- o = y;
- }
- if (T) {
- n = "move" === A;
- t = "leave" === A;
- v = "never" !== A;
- $(!v, true);
- }
- if (M) {
- N(Ia, H);
- }
- if (I) {
- N(Ra, R);
- }
- if (V) {
- var F = j(w.x, true);
- var q = j(w.y, false);
- var U = F && q;
- N(za, !U);
- }
- if (k) {
- Y(g);
- W(g);
- N(Ha, !p.x, true);
- N(Ha, !p.y, false);
- N(Ca, b && !B);
- }
- }, Q, O.bind(0, K) ];
- };
- var Pn = function OverlayScrollbars(r, a, e) {
- var n = pe(), t = n.Y, v = n.q;
- var i = Va();
- var o = w(r);
- var u = o ? r : r.target;
- var f = Oe(u);
- if (a && !f) {
- var l = false;
- var c = i[Ka];
- var d = function validateOptions(r) {
- var a = r || {};
- var e = c && c.T;
- return e ? e(a, true) : a;
- };
- var h = A({}, t(), d(a));
- var g = $r(e), p = g[0], b = g[1], m = g[2];
- var y = cn(r, h), S = y[0], C = y[1], O = y[2];
- var x = zn(r, h, C), z = x[0], P = x[1], L = x[2];
- var H = function update(r, a) {
- S(r, !!a);
- };
- var M = v(H.bind(0, {}, true));
- var D = function destroy(r) {
- Ce(u);
- M();
- L();
- O();
- l = true;
- m("destroyed", [ R, !!r ]);
- b();
- };
- var R = {
- options: function options(r) {
- if (r) {
- var a = Qr(h, d(r));
- if (!T(a)) {
- A(h, a);
- H(a);
- }
- }
- return A({}, h);
- },
- on: p,
- off: function off(r, a) {
- r && a && b(r, a);
- },
- state: function state() {
- var r = C(), a = r.Er, e = r.Ar, n = r.Cr, t = r.Tr, v = r.rr, i = r.mr, o = r.wr;
- return A({}, {
- overflowEdge: a,
- overflowAmount: e,
- overflowStyle: n,
- hasOverflow: t,
- padding: v,
- paddingAbsolute: i,
- directionRTL: o,
- destroyed: l
- });
- },
- elements: function elements() {
- var r = C.Ur, a = r.$, e = r.J, n = r.rr, t = r.K, v = r.ar, i = r.nr, o = r.tr;
- var u = P.Ur, f = u.$r, l = u.ra;
- var c = function translateScrollbarStructure(r) {
- var a = r.Nr, e = r.Yr, n = r.Wr;
- return {
- scrollbar: n,
- track: e,
- handle: a
- };
- };
- var s = function translateScrollbarsSetupElement(r) {
- var a = r.Jr, e = r.Kr;
- var n = c(a[0]);
- return A({}, n, {
- clone: function clone() {
- var r = c(e());
- z({}, true, {});
- return r;
- }
- });
- };
- return A({}, {
- target: a,
- host: e,
- padding: n || t,
- viewport: t,
- content: v || t,
- scrollOffsetElement: i,
- scrollEventElement: o,
- scrollbarHorizontal: s(f),
- scrollbarVertical: s(l)
- });
- },
- update: function update(r) {
- H({}, r);
- return R;
- },
- destroy: D.bind(0)
- };
- C.Fr((function(r, a, e) {
- z(a, e, r);
- }));
- each(E(i), (function(r) {
- var a = i[r];
- if (s(a)) {
- a(OverlayScrollbars, R);
- }
- }));
- if (me(!o && r.cancel, C.Ur)) {
- D(true);
- return R;
- }
- C.qr();
- P.qr();
- Se(u, R);
- m("initialized", [ R ]);
- C.Fr((function(r, a, e) {
- var n = r.pr, t = r.br, v = r.gr, i = r.Pr, o = r.Lr, u = r.zr, f = r._r, l = r.Or;
- m("updated", [ R, {
- updateHints: {
- sizeChanged: n,
- directionChanged: t,
- heightIntrinsicChanged: v,
- overflowEdgeChanged: i,
- overflowAmountChanged: o,
- overflowStyleChanged: u,
- contentMutation: f,
- hostMutation: l
- },
- changedOptions: a,
- force: e
- } ]);
- }));
- return R.update(true);
- }
- return f;
- };
- Pn.plugin = ja;
- Pn.valid = function(r) {
- var a = r && r.elements;
- var e = s(a) && a();
- return p(e) && !!Oe(e.target);
- };
- Pn.env = function() {
- var r = pe(), a = r.j, e = r.H, n = r.L, t = r.B, v = r.F, i = r.M, o = r.X, u = r.G, f = r.U, l = r.N, c = r.Y, s = r.W;
- return A({}, {
- scrollbarsSize: a,
- scrollbarsOverlaid: e,
- scrollbarsHiding: n,
- rtlScrollBehavior: t,
- flexboxGlue: v,
- cssCustomProperties: i,
- staticDefaultInitialization: o,
- staticDefaultOptions: u,
- getDefaultInitialization: f,
- setDefaultInitialization: l,
- getDefaultOptions: c,
- setDefaultOptions: s
- });
- };
- r.OverlayScrollbars = Pn;
- r.scrollbarsHidingPlugin = fe;
- r.sizeObserverPlugin = ee;
- Object.defineProperty(r, "v", {
- value: true
- });
- return r;
-}({});
-//# sourceMappingURL=overlayscrollbars.browser.es5.js.map
diff --git a/packages/overlayscrollbars/dist/browser/overlayscrollbars.browser.es5.js.map b/packages/overlayscrollbars/dist/browser/overlayscrollbars.browser.es5.js.map
deleted file mode 100644
index 16f2fd2..0000000
--- a/packages/overlayscrollbars/dist/browser/overlayscrollbars.browser.es5.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"overlayscrollbars.browser.es5.js","sources":["../../src/support/utils/array.ts","../../src/support/dom/style.ts","../../src/support/cache.ts","../../src/support/utils/types.ts","../../src/support/utils/object.ts","../../src/support/dom/attribute.ts","../../src/support/dom/traversal.ts","../../src/support/dom/manipulation.ts","../../src/support/dom/create.ts","../../src/support/compatibility/vendors.ts","../../src/support/compatibility/apis.ts","../../src/support/dom/class.ts","../../src/support/utils/equal.ts","../../src/support/utils/function.ts","../../src/support/dom/dimensions.ts","../../src/support/dom/events.ts","../../src/support/dom/offset.ts","../../src/support/eventListeners.ts","../../src/options.ts","../../src/classnames.ts","../../src/plugins/plugins.ts","../../../../node_modules/@babel/runtime/helpers/extends.js","../../src/plugins/optionsValidationPlugin/validation.ts","../../src/plugins/optionsValidationPlugin/optionsValidationPlugin.ts","../../src/plugins/sizeObserverPlugin/sizeObserverPlugin.ts","../../src/plugins/scrollbarsHidingPlugin/scrollbarsHidingPlugin.ts","../../src/environment.ts","../../src/initialization.ts","../../src/instances.ts","../../src/setups/setups.ts","../../src/setups/structureSetup/structureSetup.elements.ts","../../src/setups/structureSetup/updateSegments/trinsicUpdateSegment.ts","../../src/setups/structureSetup/updateSegments/paddingUpdateSegment.ts","../../src/setups/structureSetup/updateSegments/overflowUpdateSegment.ts","../../src/setups/structureSetup/structureSetup.update.ts","../../src/observers/sizeObserver.ts","../../src/observers/trinsicObserver.ts","../../src/observers/domObserver.ts","../../src/setups/structureSetup/structureSetup.observers.ts","../../src/setups/structureSetup/structureSetup.ts","../../src/setups/scrollbarsSetup/scrollbarsSetup.events.ts","../../src/setups/scrollbarsSetup/scrollbarsSetup.calculations.ts","../../src/setups/scrollbarsSetup/scrollbarsSetup.elements.ts","../../src/setups/scrollbarsSetup/scrollbarsSetup.ts","../../src/overlayscrollbars.ts"],"sourcesContent":["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 | false | null | undefined,\r\n callback: (value: T, indexOrKey: number, source: Array) => boolean | unknown\r\n): Array | ReadonlyArray | false | 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 | false | null | undefined,\r\n callback: (value: T, indexOrKey: number, source: ArrayLike) => boolean | unknown\r\n): ArrayLike | false | null | undefined;\r\nexport function each(\r\n obj: PlainObject,\r\n callback: (value: any, indexOrKey: string, source: PlainObject) => boolean | unknown\r\n): PlainObject;\r\nexport function each(\r\n obj: PlainObject | false | null | undefined,\r\n callback: (value: any, indexOrKey: string, source: PlainObject) => boolean | unknown\r\n): PlainObject | false | null | undefined;\r\nexport function each(\r\n source: Array | ArrayLike | ReadonlyArray | PlainObject | false | null | undefined,\r\n callback: (value: T, indexOrKey: any, source: any) => boolean | unknown\r\n): Array | ArrayLike | ReadonlyArray | PlainObject | false | 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 // cant use support func keys here due to circular dep\r\n each(Object.keys(source), (key) => callback(source[key], key, source));\r\n }\r\n return source;\r\n}\r\n\r\n/**\r\n * Returns the index of the given inside the given array or -1 if the given item isn't part of the given array.\r\n * @param arr The array.\r\n * @param item The item.\r\n * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.\r\n */\r\nexport const indexOf = (arr: T[], item: T, fromIndex?: number): number =>\r\n arr.indexOf(item, fromIndex);\r\n\r\n/**\r\n * Pushesh all given items into the given array and returns it.\r\n * @param array The array the items shall be pushed into.\r\n * @param items The items which shall be pushed into the array.\r\n */\r\nexport const push = (array: T[], items: T | ArrayLike, arrayIsSingleItem?: boolean): T[] => {\r\n !arrayIsSingleItem && !isString(items) && isArrayLike(items)\r\n ? Array.prototype.push.apply(array, items as T[])\r\n : array.push(items as T);\r\n return array;\r\n};\r\n\r\n/**\r\n * Creates a shallow-copied Array instance from an array-like or iterable object.\r\n * @param arr The object from which the array instance shall be created.\r\n */\r\nexport const from = (arr?: ArrayLike | Set) => {\r\n const original = Array.from;\r\n const result: T[] = [];\r\n\r\n if (original && arr) {\r\n return original(arr);\r\n }\r\n\r\n if (arr instanceof Set) {\r\n arr.forEach((value) => {\r\n push(result, value);\r\n });\r\n } else {\r\n each(arr, (elm) => {\r\n push(result, elm);\r\n });\r\n }\r\n\r\n return result;\r\n};\r\n\r\n/**\r\n * Check whether the passed array is empty.\r\n * @param array The array which shall be checked.\r\n */\r\nexport const isEmptyArray = (array: any[] | null | undefined): boolean =>\r\n !!array && array.length === 0;\r\n\r\n/**\r\n * Calls all functions in the passed array/set of functions.\r\n * @param arr The array filled with function which shall be called.\r\n * @param args The args with which each function is called.\r\n * @param keep True when the Set / array should not be cleared afterwards, false otherwise.\r\n */\r\nexport const runEachAndClear = (arr: RunEachItem[], args?: any[], keep?: boolean): void => {\r\n // eslint-disable-next-line prefer-spread\r\n const runFn = (fn: RunEachItem) => fn && fn.apply(undefined, args || []);\r\n each(arr, runFn);\r\n !keep && ((arr as any[]).length = 0);\r\n};\r\n","import { each, keys } from 'support/utils';\r\nimport { isString, isNumber, isArray, isUndefined } from 'support/utils/types';\r\nimport { PlainObject, StyleObject } from 'typings';\r\n\r\nexport interface TRBL {\r\n t: number;\r\n r: number;\r\n b: number;\r\n l: number;\r\n}\r\n\r\nconst cssNumber = {\r\n // animationiterationcount: 1,\r\n // columncount: 1,\r\n // fillopacity: 1,\r\n // flexgrow: 1,\r\n // flexshrink: 1,\r\n // fontweight: 1,\r\n // lineheight: 1,\r\n // order: 1,\r\n // orphans: 1,\r\n // widows: 1,\r\n // zoom: 1,\r\n opacity: 1,\r\n zindex: 1,\r\n};\r\n\r\nconst parseToZeroOrNumber = (value: string, toFloat?: boolean): number => {\r\n /* istanbul ignore next */\r\n const num = toFloat ? parseFloat(value) : parseInt(value, 10);\r\n // num === num means num is not NaN\r\n /* istanbul ignore next */\r\n return num === num ? num : 0; // eslint-disable-line no-self-compare\r\n};\r\n\r\nconst adaptCSSVal = (prop: string, val: string | number): string | number =>\r\n !cssNumber[prop.toLowerCase()] && isNumber(val) ? `${val}px` : val;\r\n\r\nconst getCSSVal = (elm: HTMLElement, computedStyle: CSSStyleDeclaration, prop: string): string =>\r\n /* istanbul ignore next */\r\n computedStyle != null\r\n ? computedStyle[prop] || computedStyle.getPropertyValue(prop)\r\n : elm.style[prop];\r\n\r\nconst setCSSVal = (elm: HTMLElement, prop: string, val: string | number): void => {\r\n try {\r\n const { style: elmStyle } = elm;\r\n if (!isUndefined(elmStyle[prop])) {\r\n elmStyle[prop] = adaptCSSVal(prop, val);\r\n } else {\r\n elmStyle.setProperty(prop, val as string);\r\n }\r\n } catch (e) {}\r\n};\r\n\r\n/**\r\n * Gets or sets the passed styles to the passed element.\r\n * @param elm The element to which the styles shall be applied to / be read from.\r\n * @param styles The styles which shall be set or read.\r\n */\r\nexport function style(\r\n elm: HTMLElement | false | null | undefined,\r\n styles: StyleObject\r\n): void;\r\nexport function style(elm: HTMLElement | false | null | undefined, styles: string): string;\r\nexport function style(\r\n elm: HTMLElement | false | null | undefined,\r\n styles: Array | string\r\n): { [key: string]: string };\r\nexport function style(\r\n elm: HTMLElement | false | null | undefined,\r\n styles: StyleObject | Array | string\r\n): { [key: string]: string } | string | void {\r\n const getSingleStyle = isString(styles);\r\n const getStyles = isArray(styles) || getSingleStyle;\r\n\r\n if (getStyles) {\r\n let getStylesResult: string | PlainObject = getSingleStyle ? '' : {};\r\n if (elm) {\r\n const computedStyle: CSSStyleDeclaration = window.getComputedStyle(elm, null);\r\n getStylesResult = getSingleStyle\r\n ? getCSSVal(elm, computedStyle, styles as string)\r\n : (styles as Array).reduce((result, key) => {\r\n result[key] = getCSSVal(elm, computedStyle, key as string);\r\n return result;\r\n }, getStylesResult);\r\n }\r\n return getStylesResult;\r\n }\r\n elm && each(keys(styles), (key) => setCSSVal(elm, key, styles[key]));\r\n}\r\n\r\nexport const directionIsRTL = (elm: HTMLElement | false | null | undefined): boolean =>\r\n style(elm, 'direction') === 'rtl';\r\n\r\n/**\r\n * Returns the top right bottom left values of the passed css property.\r\n * @param elm The element of which the values shall be returned.\r\n * @param propertyPrefix The css property prefix. (e.g. \"border\")\r\n * @param propertySuffix The css property suffix. (e.g. \"width\")\r\n */\r\nexport const topRightBottomLeft = (\r\n elm?: HTMLElement | false | null | undefined,\r\n propertyPrefix?: string,\r\n propertySuffix?: string\r\n): TRBL => {\r\n const finalPrefix = propertyPrefix ? `${propertyPrefix}-` : '';\r\n const finalSuffix = propertySuffix ? `-${propertySuffix}` : '';\r\n const top = `${finalPrefix}top${finalSuffix}`;\r\n const right = `${finalPrefix}right${finalSuffix}`;\r\n const bottom = `${finalPrefix}bottom${finalSuffix}`;\r\n const left = `${finalPrefix}left${finalSuffix}`;\r\n const result = style(elm, [top, right, bottom, left]);\r\n return {\r\n t: parseToZeroOrNumber(result[top]),\r\n r: parseToZeroOrNumber(result[right]),\r\n b: parseToZeroOrNumber(result[bottom]),\r\n l: parseToZeroOrNumber(result[left]),\r\n };\r\n};\r\n","export interface CacheOptions {\r\n // initial value of _value.\r\n _initialValue: Value;\r\n // Custom comparison function if shallow compare isn't enough. Returns true if nothing changed.\r\n _equal?: EqualCachePropFunction;\r\n // If true always updates _value and _previous, otherwise they update only when they changed.\r\n _alwaysUpdateValues?: boolean;\r\n}\r\n\r\nexport type CacheValues = [value: T, changed: boolean, previous?: T];\r\n\r\nexport type EqualCachePropFunction = (currentVal: Value, newVal: Value) => boolean;\r\n\r\nexport type CacheUpdater = (current: Value, previous?: Value) => Value;\r\n\r\nexport type UpdateCacheContextual = (newValue: Value, force?: boolean) => CacheValues;\r\n\r\nexport type UpdateCache = (force?: boolean) => CacheValues;\r\n\r\nexport type GetCurrentCache = (force?: boolean) => CacheValues;\r\n\r\nexport type Cache = [UpdateCache, GetCurrentCache];\r\n\r\nexport type CacheContextual = [UpdateCacheContextual, GetCurrentCache];\r\n\r\ntype CreateCache = {\r\n (options: CacheOptions): CacheContextual;\r\n (options: CacheOptions, update: CacheUpdater): Cache;\r\n (options: CacheOptions, update?: CacheUpdater):\r\n | CacheContextual\r\n | Cache;\r\n};\r\n\r\nexport const createCache: CreateCache = (\r\n options: CacheOptions,\r\n update?: CacheUpdater\r\n): CacheContextual | Cache => {\r\n const { _initialValue, _equal, _alwaysUpdateValues } = options;\r\n let _value: Value = _initialValue;\r\n let _previous: Value | undefined;\r\n\r\n const cacheUpdateContextual: UpdateCacheContextual = (newValue, force?) => {\r\n const curr = _value;\r\n\r\n const newVal = newValue;\r\n const changed = force || (_equal ? !_equal(curr, newVal) : curr !== newVal);\r\n\r\n if (changed || _alwaysUpdateValues) {\r\n _value = newVal;\r\n _previous = curr;\r\n }\r\n\r\n return [_value, changed, _previous];\r\n };\r\n const cacheUpdateIsolated: UpdateCache = (force?) =>\r\n cacheUpdateContextual(update!(_value, _previous), force);\r\n\r\n const getCurrentCache: GetCurrentCache = (force?: boolean) => [\r\n _value,\r\n !!force, // changed\r\n _previous,\r\n ];\r\n\r\n return [update ? cacheUpdateIsolated : cacheUpdateContextual, getCurrentCache] as\r\n | CacheContextual\r\n | Cache;\r\n};\r\n","import { PlainObject } from 'typings';\r\n\r\nconst ElementNodeType = Node.ELEMENT_NODE;\r\nconst { toString, hasOwnProperty } = Object.prototype;\r\n\r\nexport const isUndefined = (obj: any): obj is undefined => obj === undefined;\r\n\r\nexport const isNull = (obj: any): obj is null => obj === null;\r\n\r\nexport const type = (obj: any): string =>\r\n isUndefined(obj) || isNull(obj)\r\n ? `${obj}`\r\n : toString\r\n .call(obj)\r\n .replace(/^\\[object (.+)\\]$/, '$1')\r\n .toLowerCase();\r\n\r\nexport const isNumber = (obj: any): obj is number => typeof obj === 'number';\r\n\r\nexport const isString = (obj: any): obj is string => typeof obj === 'string';\r\n\r\nexport const isBoolean = (obj: any): obj is boolean => typeof obj === 'boolean';\r\n\r\nexport const isFunction = (obj: any): obj is (...args: any[]) => any => typeof obj === 'function';\r\n\r\nexport const isArray = (obj: any): obj is Array => Array.isArray(obj);\r\n\r\nexport const isObject = (obj: any): boolean =>\r\n typeof obj === 'object' && !isArray(obj) && !isNull(obj);\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 const isArrayLike = (obj: any): obj is ArrayLike => {\r\n const length = !!obj && obj.length;\r\n const lengthCorrectFormat = isNumber(length) && length > -1 && length % 1 == 0; // eslint-disable-line eqeqeq\r\n\r\n return isArray(obj) || (!isFunction(obj) && lengthCorrectFormat)\r\n ? length > 0 && isObject(obj)\r\n ? length - 1 in obj\r\n : true\r\n : false;\r\n};\r\n\r\n/**\r\n * Returns true if the given object is a \"plain\" (e.g. { key: value }) object, false otherwise.\r\n * @param obj The Object.\r\n */\r\nexport const 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 const isHTMLElement = (obj: any): obj is HTMLElement => {\r\n const instanceofObj = HTMLElement;\r\n return obj\r\n ? instanceofObj\r\n ? obj instanceof instanceofObj\r\n : obj.nodeType === ElementNodeType\r\n : false;\r\n};\r\n\r\n/**\r\n * Checks whether the given object is a Element.\r\n * @param obj The object which shall be checked.\r\n */\r\nexport const isElement = (obj: any): obj is Element => {\r\n const instanceofObj = Element;\r\n return obj\r\n ? instanceofObj\r\n ? obj instanceof instanceofObj\r\n : obj.nodeType === ElementNodeType\r\n : false;\r\n};\r\n","import { isArray, isFunction, isPlainObject, isNull } from 'support/utils/types';\r\nimport { each } from 'support/utils/array';\r\n\r\n/**\r\n * Determines whether the passed object has a property with the passed name.\r\n * @param obj The object.\r\n * @param prop The name of the property.\r\n */\r\nexport const hasOwnProperty = (obj: any, prop: string | number | symbol): boolean =>\r\n Object.prototype.hasOwnProperty.call(obj, prop);\r\n\r\n/**\r\n * Returns the names of the enumerable string properties and methods of an object.\r\n * @param obj The object of which the properties shall be returned.\r\n */\r\nexport const keys = (obj: any): Array => (obj ? Object.keys(obj) : []);\r\n\r\ntype AssignDeep = {\r\n (target: T, object1: U): T & U;\r\n (target: T, object1: U, object2: V): T & U & V;\r\n (target: T, object1: U, object2: V, object3: W): T & U & V & W;\r\n (target: T, object1: U, object2: V, object3: W, object4: X): T & U & V & W & X;\r\n (target: T, object1: U, object2: V, object3: W, object4: X, object5: Y): T &\r\n U &\r\n V &\r\n W &\r\n X &\r\n Y;\r\n (\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};\r\n\r\n// https://github.com/jquery/jquery/blob/master/src/core.js#L116\r\nexport const assignDeep: 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 const isEmptyObject = (obj: any): boolean => {\r\n // eslint-disable-next-line no-restricted-syntax, no-unreachable-loop, guard-for-in\r\n for (const name in obj) return false;\r\n return true;\r\n /* eslint-enable */\r\n};\r\n","import { from } from 'support/utils/array';\r\nimport { isNumber, isString, isUndefined } from 'support/utils/types';\r\n\r\ntype GetSetPropName = 'scrollLeft' | 'scrollTop' | 'value';\r\n\r\ntype Attr = {\r\n (elm: HTMLElement | false | null | undefined, attrName: string): string | null;\r\n (elm: HTMLElement | false | null | undefined, attrName: string, value: string): void;\r\n (elm: HTMLElement | false | null | undefined, attrName: string, value?: string):\r\n | string\r\n | null\r\n | void;\r\n};\r\n\r\ntype GetSetProp = {\r\n (elm: HTMLElement | false | null | undefined): T;\r\n (elm: HTMLElement | false | null | undefined, value: T | false | null): void;\r\n (elm: HTMLElement | false | null | undefined, value?: T | false | null): T | void;\r\n};\r\n\r\nconst getSetProp = (\r\n topLeft: GetSetPropName,\r\n fallback: number | string,\r\n elm: HTMLElement | HTMLInputElement | false | null | undefined,\r\n value?: number | string | false | null\r\n): number | string | void => {\r\n if (isUndefined(value)) {\r\n return elm ? elm[topLeft] : fallback;\r\n }\r\n elm && (isString(value) || isNumber(value)) && (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 const attr = ((\r\n elm: HTMLElement | false | null | undefined,\r\n attrName: string,\r\n value?: string\r\n): string | null | void => {\r\n if (isUndefined(value)) {\r\n return elm ? elm.getAttribute(attrName) : null;\r\n }\r\n elm && elm.setAttribute(attrName, value);\r\n}) as Attr;\r\n\r\n/**\r\n * Treats the given attribute like the \"class\" attribute and adds or removes the given value from it.\r\n * @param elm The element.\r\n * @param attrName The attributeName to which the value shall be added or removed.\r\n * @param value The value which shall be added or removed.\r\n * @param add True if the value shall be added, false otherwise.\r\n */\r\nexport const attrClass = (\r\n elm: HTMLElement | false | null | undefined,\r\n attrName: string,\r\n value: string,\r\n add?: boolean\r\n) => {\r\n if (value) {\r\n const currValues = attr(elm, attrName) || '';\r\n const currValuesSet = new Set(currValues.split(' '));\r\n currValuesSet[add ? 'add' : 'delete'](value);\r\n\r\n attr(elm, attrName, from(currValuesSet).join(' ').trim());\r\n }\r\n};\r\n\r\n/**\r\n * Treats the given attribute like the \"class\" attribute and checks if the given value is in it.\r\n * @param elm The element.\r\n * @param attrName The attributeName from which the content shall be checked.\r\n * @param value The value.\r\n * @returns True if the given attribute has the value in it, false otherwise.\r\n */\r\nexport const hasAttrClass = (\r\n elm: HTMLElement | false | null | undefined,\r\n attrName: string,\r\n value: string\r\n) => {\r\n const currValues = attr(elm, attrName) || '';\r\n const currValuesSet = new Set(currValues.split(' '));\r\n return currValuesSet.has(value);\r\n};\r\n\r\n/**\r\n * Removes the given attribute from the given element.\r\n * @param elm The element of which the attribute shall be removed.\r\n * @param attrName The attribute name.\r\n */\r\nexport const removeAttr = (elm: Element | false | null | undefined, attrName: string): void => {\r\n elm && elm.removeAttribute(attrName);\r\n};\r\n\r\n/**\r\n * Gets or sets the scrollLeft value of the given element depending whether the value attribute is given.\r\n * @param elm The element of which the scrollLeft value shall be get or set.\r\n * @param value The scrollLeft value which shall be set.\r\n */\r\nexport const scrollLeft = ((\r\n elm: HTMLElement | false | null | undefined,\r\n value?: number | false | null\r\n): number | void => getSetProp('scrollLeft', 0, elm, value) as number) as GetSetProp;\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 const scrollTop = ((\r\n elm: HTMLElement | false | null | undefined,\r\n value?: number | false | null\r\n): number | void => getSetProp('scrollTop', 0, elm, value) as number) as GetSetProp;\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 const val = ((\r\n elm: HTMLInputElement | false | null | undefined,\r\n value?: string\r\n): string | void => getSetProp('value', '', elm, value) as string) as GetSetProp;\r\n","import { isElement } from 'support/utils/types';\r\nimport { push, from } from 'support/utils/array';\r\n\r\ntype InputElementType = Node | Element | Node | false | null | undefined;\r\ntype OutputElementType = Node | Element | null;\r\n\r\nconst elmPrototype = Element.prototype;\r\n\r\n/**\r\n * Find all elements with the passed selector, outgoing (and including) the passed element or the document if no element was provided.\r\n * @param selector The selector which has to be searched by.\r\n * @param elm The element from which the search shall be outgoing.\r\n */\r\nconst find = (selector: string, elm?: InputElementType): Element[] => {\r\n const arr: Array = [];\r\n const rootElm = elm ? (isElement(elm) ? elm : null) : document;\r\n\r\n return rootElm ? push(arr, rootElm.querySelectorAll(selector)) : arr;\r\n};\r\n\r\n/**\r\n * Find the first element with the passed selector, outgoing (and including) the passed element or the document if no element was provided.\r\n * @param selector The selector which has to be searched by.\r\n * @param elm The element from which the search shall be outgoing.\r\n */\r\nconst findFirst = (selector: string, elm?: InputElementType): OutputElementType => {\r\n const rootElm = elm ? (isElement(elm) ? elm : null) : document;\r\n\r\n return rootElm ? rootElm.querySelector(selector) : null;\r\n};\r\n\r\n/**\r\n * Determines whether the passed element is matching with the passed selector.\r\n * @param elm The element which has to be compared with the passed selector.\r\n * @param selector The selector which has to be compared with the passed element. Additional selectors: ':visible' and ':hidden'.\r\n */\r\nconst is = (elm: InputElementType, selector: string): boolean => {\r\n if (isElement(elm)) {\r\n /* istanbul ignore next */\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n const fn: (...args: any) => boolean = elmPrototype.matches || elmPrototype.msMatchesSelector;\r\n return fn.call(elm, selector);\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Returns the children (no text-nodes or comments) of the passed element which are matching the passed selector. An empty array is returned if the passed element is null.\r\n * @param elm The element of which the children shall be returned.\r\n * @param selector The selector which must match with the children elements.\r\n */\r\nconst children = (elm: InputElementType, selector?: string): ReadonlyArray => {\r\n const childs: Array = [];\r\n\r\n return isElement(elm)\r\n ? push(\r\n childs,\r\n from(elm.children).filter((child) => (selector ? is(child, selector) : child))\r\n )\r\n : childs;\r\n};\r\n\r\n/**\r\n * Returns the childNodes (incl. text-nodes or comments etc.) of the passed element. An empty array is returned if the passed element is null.\r\n * @param elm The element of which the childNodes shall be returned.\r\n */\r\nconst contents = (elm: InputElementType): ReadonlyArray =>\r\n elm ? from(elm.childNodes) : [];\r\n\r\n/**\r\n * Returns the parent element of the passed element, or null if the passed element is null.\r\n * @param elm The element of which the parent element shall be returned.\r\n */\r\nconst parent = (elm: InputElementType): OutputElementType => (elm ? elm.parentElement : null);\r\n\r\nconst closest = (elm: InputElementType, selector: string): OutputElementType => {\r\n if (isElement(elm)) {\r\n const closestFn = elmPrototype.closest;\r\n if (closestFn) {\r\n return closestFn.call(elm, selector);\r\n }\r\n\r\n do {\r\n if (is(elm, selector)) {\r\n return elm as Element;\r\n }\r\n elm = parent(elm);\r\n } while (elm);\r\n }\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n * Determines whether the given element lies between two selectors in the DOM.\r\n * @param elm The element.\r\n * @param highBoundarySelector The high boundary selector.\r\n * @param deepBoundarySelector The deep boundary selector.\r\n */\r\nconst liesBetween = (\r\n elm: InputElementType,\r\n highBoundarySelector: string,\r\n deepBoundarySelector: string\r\n): boolean => {\r\n const closestHighBoundaryElm = elm && closest(elm, highBoundarySelector);\r\n const closestDeepBoundaryElm = elm && findFirst(deepBoundarySelector, closestHighBoundaryElm);\r\n const deepBoundaryIsValid =\r\n closest(closestDeepBoundaryElm, highBoundarySelector) === closestHighBoundaryElm;\r\n\r\n return closestHighBoundaryElm && closestDeepBoundaryElm\r\n ? closestHighBoundaryElm === elm ||\r\n closestDeepBoundaryElm === elm ||\r\n (deepBoundaryIsValid &&\r\n closest(closest(elm, deepBoundarySelector), highBoundarySelector) !==\r\n closestHighBoundaryElm)\r\n : false;\r\n};\r\n\r\nexport { find, findFirst, is, children, contents, parent, liesBetween, closest };\r\n","import { isArrayLike } from 'support/utils/types';\r\nimport { each, from } from 'support/utils/array';\r\nimport { parent } from 'support/dom/traversal';\r\n\r\ntype NodeCollection = ArrayLike | Node | false | null | undefined;\r\n\r\n/**\r\n * Inserts Nodes before the given preferredAnchor element.\r\n * @param parentElm The parent of the preferredAnchor element or the element which shall be the parent of the inserted Nodes.\r\n * @param preferredAnchor The element before which the Nodes shall be inserted or null if the elements shall be appended at the end.\r\n * @param insertedElms The Nodes which shall be inserted.\r\n */\r\nconst before = (\r\n parentElm: Node | false | null | undefined,\r\n preferredAnchor: Node | false | null | undefined,\r\n insertedElms: NodeCollection\r\n): void => {\r\n if (insertedElms && parentElm) {\r\n let anchor: Node | false | null | undefined = preferredAnchor;\r\n let fragment: DocumentFragment | Node | null | undefined;\r\n\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 * 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 = (\r\n node: Node | false | null | undefined,\r\n children: NodeCollection\r\n): 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 = (\r\n node: Node | false | null | undefined,\r\n children: NodeCollection\r\n): void => {\r\n before(node, node && node.firstChild, children);\r\n};\r\n\r\n/**\r\n * Inserts the given Nodes before the given Node.\r\n * @param node The Node before which the given Nodes shall be inserted.\r\n * @param insertedNodes The Nodes which shall be inserted.\r\n */\r\nexport const insertBefore = (\r\n node: Node | false | null | undefined,\r\n insertedNodes: NodeCollection\r\n): void => {\r\n before(parent(node), node, insertedNodes);\r\n};\r\n\r\n/**\r\n * Inserts the given Nodes after the given Node.\r\n * @param node The Node after which the given Nodes shall be inserted.\r\n * @param insertedNodes The Nodes which shall be inserted.\r\n */\r\nexport const insertAfter = (\r\n node: Node | false | null | undefined,\r\n insertedNodes: NodeCollection\r\n): void => {\r\n before(parent(node), node && node.nextSibling, insertedNodes);\r\n};\r\n\r\n/**\r\n * Removes the given Nodes from their parent.\r\n * @param nodes The Nodes which shall be removed.\r\n */\r\nexport const removeElements = (nodes: NodeCollection): void => {\r\n if (isArrayLike(nodes)) {\r\n each(from(nodes), (e) => removeElements(e));\r\n } else if (nodes) {\r\n const parentElm = parent(nodes);\r\n if (parentElm) {\r\n parentElm.removeChild(nodes);\r\n }\r\n }\r\n};\r\n","import { each } from 'support/utils/array';\r\nimport { attr } from 'support/dom/attribute';\r\nimport { contents } from 'support/dom/traversal';\r\nimport { removeElements } from 'support/dom/manipulation';\r\n\r\n/**\r\n * Creates a div DOM node.\r\n */\r\nexport const createDiv = (classNames?: string): HTMLDivElement => {\r\n const div = document.createElement('div');\r\n if (classNames) {\r\n attr(div, 'class', classNames);\r\n }\r\n return div;\r\n};\r\n\r\n/**\r\n * Creates DOM nodes modeled after the passed html string and returns the root dom nodes as a array.\r\n * @param html The html string after which the DOM nodes shall be created.\r\n */\r\nexport const createDOM = (html: string): ReadonlyArray => {\r\n const createdDiv = createDiv();\r\n createdDiv.innerHTML = html.trim();\r\n\r\n return each(contents(createdDiv), (elm) => removeElements(elm));\r\n};\r\n","import { each } from 'support/utils/array';\r\nimport { hasOwnProperty } from 'support/utils/object';\r\nimport { createDiv } from 'support/dom/create';\r\n\r\nconst firstLetterToUpper = (str: string): string => str.charAt(0).toUpperCase() + str.slice(1);\r\nconst getDummyStyle = (): CSSStyleDeclaration => createDiv().style;\r\n\r\n// https://developer.mozilla.org/en-US/docs/Glossary/Vendor_Prefix\r\n\r\nexport const cssPrefixes: ReadonlyArray = ['-webkit-', '-moz-', '-o-', '-ms-'];\r\nexport const jsPrefixes: ReadonlyArray = [\r\n 'WebKit',\r\n 'Moz',\r\n 'O',\r\n 'MS',\r\n 'webkit',\r\n 'moz',\r\n 'o',\r\n 'ms',\r\n];\r\n\r\nexport const jsCache: { [key: string]: any } = {};\r\nexport const cssCache: { [key: string]: string } = {};\r\n\r\n/**\r\n * Gets the name of the given CSS property with vendor prefix if it isn't supported without it, or and empty string if unsupported.\r\n * @param name The name of the CSS property which shall be get.\r\n */\r\nexport const cssProperty = (name: string): string => {\r\n let result: string | undefined = cssCache[name];\r\n\r\n if (hasOwnProperty(cssCache, name)) {\r\n return result;\r\n }\r\n\r\n const uppercasedName: string = firstLetterToUpper(name);\r\n const elmStyle: CSSStyleDeclaration = getDummyStyle();\r\n\r\n each(cssPrefixes, (prefix: string) => {\r\n const prefixWithoutDashes: string = prefix.replace(/-/g, '');\r\n const resultPossibilities: Array = [\r\n name, // transition\r\n prefix + name, // -webkit-transition\r\n prefixWithoutDashes + uppercasedName, // webkitTransition\r\n firstLetterToUpper(prefixWithoutDashes) + uppercasedName, // WebkitTransition\r\n ];\r\n\r\n // eslint-disable-next-line no-return-assign\r\n return !(result = resultPossibilities.find(\r\n (resultPossibility: string) => elmStyle[resultPossibility] !== undefined\r\n ));\r\n });\r\n\r\n // eslint-disable-next-line no-return-assign\r\n return (cssCache[name] = result || '');\r\n};\r\n\r\n/**\r\n * Get the name of the given CSS property value(s), with vendor prefix if it isn't supported without it, or an empty string if no value is supported.\r\n * @param property The CSS property to which the CSS property value(s) belong.\r\n * @param values The value(s) separated by spaces which shall be get.\r\n * @param suffix A suffix which is added to each value in case the value is a function or something else more advanced.\r\n */\r\nexport const cssPropertyValue = (property: string, values: string, suffix?: string): string => {\r\n const name = `${property} ${values}`;\r\n let result: string | undefined = cssCache[name];\r\n\r\n if (hasOwnProperty(cssCache, name)) {\r\n return result;\r\n }\r\n\r\n const dummyStyle: CSSStyleDeclaration = getDummyStyle();\r\n const possbleValues: Array = values.split(' ');\r\n const preparedSuffix: string = suffix || '';\r\n const cssPrefixesWithFirstEmpty = [''].concat(cssPrefixes);\r\n\r\n each(possbleValues, (possibleValue: string) => {\r\n each(cssPrefixesWithFirstEmpty, (prefix: string) => {\r\n const prop = prefix + possibleValue;\r\n dummyStyle.cssText = `${property}:${prop}${preparedSuffix}`;\r\n if (dummyStyle.length) {\r\n result = prop;\r\n return false;\r\n }\r\n });\r\n return !result;\r\n });\r\n\r\n // eslint-disable-next-line no-return-assign\r\n return (cssCache[name] = result || '');\r\n};\r\n\r\n/**\r\n * Get the requested JS function, object or constructor with vendor prefix if it isn't supported without or undefined if unsupported.\r\n * @param name The name of the JS function, object or constructor.\r\n */\r\nexport const jsAPI = (name: string): T | undefined => {\r\n let result: any = jsCache[name] || window[name];\r\n\r\n if (hasOwnProperty(jsCache, name)) {\r\n return result;\r\n }\r\n\r\n each(jsPrefixes, (prefix: string) => {\r\n result = result || window[prefix + firstLetterToUpper(name)];\r\n return !result;\r\n });\r\n\r\n jsCache[name] = result;\r\n return result;\r\n};\r\n","import { jsAPI } from 'support/compatibility/vendors';\r\n\r\nexport const MutationObserverConstructor = jsAPI('MutationObserver');\r\nexport const IntersectionObserverConstructor =\r\n jsAPI('IntersectionObserver');\r\nexport const ResizeObserverConstructor = jsAPI('ResizeObserver');\r\nexport const cAF = jsAPI('cancelAnimationFrame');\r\nexport const rAF = jsAPI('requestAnimationFrame');\r\nexport const setT = window.setTimeout as (handler: TimerHandler, timeout?: number) => number;\r\nexport const clearT = window.clearTimeout as (id?: number) => void;\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\ntype ClassContainingElement = Node | Element | false | null | undefined;\r\ntype ClassName = string | false | null | undefined;\r\n\r\nconst rnothtmlwhite = /[^\\x20\\t\\r\\n\\f]+/g;\r\nconst classListAction = (\r\n elm: ClassContainingElement,\r\n className: ClassName,\r\n action: (elmClassList: DOMTokenList, clazz: string) => boolean | void\r\n): boolean => {\r\n const classList = elm && (elm as Element).classList;\r\n let clazz: string;\r\n let i = 0;\r\n let result = false;\r\n\r\n if (classList && className && isString(className)) {\r\n const classes: Array = className.match(rnothtmlwhite) || [];\r\n result = classes.length > 0;\r\n while ((clazz = classes[i++])) {\r\n result = !!action(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: ClassContainingElement, className: ClassName): boolean =>\r\n classListAction(elm, className, (classList, clazz) => classList.contains(clazz));\r\n\r\n/**\r\n * Removes the given class name(s) from the given element.\r\n * @param elm The element.\r\n * @param className The class name(s) which shall be removed. (separated by spaces)\r\n */\r\nexport const removeClass = (elm: ClassContainingElement, className: ClassName): void => {\r\n classListAction(elm, className, (classList, clazz) => classList.remove(clazz));\r\n};\r\n\r\n/**\r\n * Adds the given class name(s) to the given element.\r\n * @param elm The element.\r\n * @param className The class name(s) which shall be added. (separated by spaces)\r\n * @returns A function which removes the added class name(s).\r\n */\r\nexport const addClass = (elm: ClassContainingElement, className: ClassName): (() => void) => {\r\n classListAction(elm, className, (classList, clazz) => classList.add(clazz));\r\n return removeClass.bind(0, elm, className);\r\n};\r\n\r\n/**\r\n * Takes two className strings, compares them and returns the difference as array.\r\n * @param classNameA ClassName A.\r\n * @param classNameB ClassName B.\r\n */\r\nexport const diffClass = (classNameA: ClassName, classNameB: ClassName) => {\r\n const classNameASplit = classNameA && classNameA.split(' ');\r\n const classNameBSplit = classNameB && classNameB.split(' ');\r\n const tempObj = {};\r\n\r\n each(classNameASplit, (className) => {\r\n tempObj[className] = 1;\r\n });\r\n each(classNameBSplit, (className) => {\r\n if (tempObj[className]) {\r\n delete tempObj[className];\r\n } else {\r\n tempObj[className] = 1;\r\n }\r\n });\r\n\r\n return keys(tempObj);\r\n};\r\n","import { each } from 'support/utils/array';\r\nimport { WH, XY, TRBL } from 'support/dom';\r\nimport { PlainObject } from 'typings';\r\n\r\n/**\r\n * Compares two objects and returns true if all values of the passed prop names are identical, false otherwise or if one of the two object is falsy.\r\n * @param a Object a.\r\n * @param b Object b.\r\n * @param props The props which shall be compared.\r\n */\r\nexport const equal = (\r\n a: T | undefined,\r\n b: T | undefined,\r\n props: Array,\r\n propMutation?: ((value: any) => any) | null | false\r\n): boolean => {\r\n if (a && b) {\r\n let result = true;\r\n each(props, (prop) => {\r\n const compareA = propMutation ? propMutation(a[prop]) : a[prop];\r\n const compareB = propMutation ? propMutation(b[prop]) : b[prop];\r\n if (compareA !== compareB) {\r\n result = false;\r\n }\r\n });\r\n return result;\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalWH = (a?: WH, b?: WH) => equal>(a, b, ['w', 'h']);\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalXY = (a?: XY, b?: XY) => equal>(a, b, ['x', 'y']);\r\n\r\n/**\r\n * Compares object a with object b and returns true if both have the same property values, false otherwise.\r\n * Also returns false if one of the objects is undefined or null.\r\n * @param a Object a.\r\n * @param b Object b.\r\n */\r\nexport const equalTRBL = (a?: TRBL, b?: TRBL) => equal(a, b, ['t', 'r', 'b', 'l']);\r\n\r\n/**\r\n * Compares two DOM Rects for their equality of their width and height properties\r\n * Also returns false if one of the DOM Rects is undefined or null.\r\n * @param a DOM Rect a.\r\n * @param b DOM Rect b.\r\n * @param round Whether the values should be rounded.\r\n */\r\nexport const equalBCRWH = (a?: DOMRect, b?: DOMRect, round?: boolean) =>\r\n equal(a, b, ['width', 'height'], round && ((value) => Math.round(value)));\r\n","import { isNumber, isFunction } from 'support/utils/types';\r\nimport { from } from 'support/utils/array';\r\nimport { rAF, cAF, setT, clearT } from 'support/compatibility/apis';\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\nexport const selfCancelTimeout = (timeout?: number | (() => number)) => {\r\n let id: number;\r\n const setTFn = timeout ? setT : rAF!;\r\n const clearTFn = timeout ? clearT : cAF!;\r\n return [\r\n (callback: () => any) => {\r\n clearTFn(id);\r\n // @ts-ignore\r\n id = setTFn(callback, isFunction(timeout) ? timeout() : timeout);\r\n },\r\n () => clearTFn(id),\r\n ] as [timeout: (callback: () => any) => void, clear: () => void];\r\n};\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 maxTimeoutId: number | undefined;\r\n let prevArguments: Parameters | null | undefined;\r\n let latestArguments: Parameters | null | undefined;\r\n let clear: () => void = noop;\r\n const { _timeout, _maxDelay, _mergeParams } = options || {};\r\n\r\n const invokeFunctionToDebounce = function (args: IArguments) {\r\n clear();\r\n clearT(maxTimeoutId);\r\n maxTimeoutId = prevArguments = undefined;\r\n clear = noop;\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n functionToDebounce.apply(this, args);\r\n };\r\n\r\n const mergeParms = (\r\n curr: Parameters\r\n ): Parameters | false | null | undefined =>\r\n _mergeParams && prevArguments ? _mergeParams(prevArguments, curr) : curr;\r\n\r\n const flush = () => {\r\n /* istanbul ignore next */\r\n if (clear !== noop) {\r\n invokeFunctionToDebounce(mergeParms(latestArguments!) || latestArguments!);\r\n }\r\n };\r\n\r\n const debouncedFn = function () {\r\n // eslint-disable-next-line prefer-rest-params\r\n const args: Parameters = from(arguments) as Parameters;\r\n const finalTimeout = isFunction(_timeout) ? _timeout() : _timeout;\r\n const hasTimeout = isNumber(finalTimeout) && finalTimeout >= 0;\r\n\r\n if (hasTimeout) {\r\n const finalMaxWait = isFunction(_maxDelay) ? _maxDelay() : _maxDelay;\r\n const hasMaxWait = isNumber(finalMaxWait) && finalMaxWait >= 0;\r\n const setTimeoutFn = finalTimeout > 0 ? setT : rAF!;\r\n const clearTimeoutFn = finalTimeout > 0 ? clearT : cAF!;\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 clear();\r\n // @ts-ignore\r\n const timeoutId = setTimeoutFn(boundInvoke, finalTimeout);\r\n clear = () => clearTimeoutFn(timeoutId);\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 { style } from 'support/dom/style';\r\n\r\nexport interface WH {\r\n w: T;\r\n h: T;\r\n}\r\n\r\nconst { round } = Math;\r\nconst elementHasDimensions = (elm: HTMLElement): boolean =>\r\n !!(elm.offsetWidth || elm.offsetHeight || elm.getClientRects().length);\r\nconst zeroObj: WH = {\r\n w: 0,\r\n h: 0,\r\n};\r\n\r\n/**\r\n * Returns the window inner- width and height.\r\n */\r\nexport const windowSize = (): WH => ({\r\n w: window.innerWidth,\r\n h: window.innerHeight,\r\n});\r\n\r\n/**\r\n * Returns the scroll- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the scroll- width and height shall be returned.\r\n */\r\nexport const offsetSize = (elm: HTMLElement | null | undefined): WH =>\r\n elm\r\n ? {\r\n w: elm.offsetWidth,\r\n h: elm.offsetHeight,\r\n }\r\n : zeroObj;\r\n\r\n/**\r\n * Returns the client- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the client- width and height shall be returned.\r\n */\r\nexport const clientSize = (elm: HTMLElement | false | null | undefined): WH =>\r\n elm\r\n ? {\r\n w: elm.clientWidth,\r\n h: elm.clientHeight,\r\n }\r\n : zeroObj;\r\n\r\n/**\r\n * Returns the client- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the client- width and height shall be returned.\r\n */\r\nexport const scrollSize = (elm: HTMLElement | false | null | undefined): WH =>\r\n elm\r\n ? {\r\n w: elm.scrollWidth,\r\n h: elm.scrollHeight,\r\n }\r\n : zeroObj;\r\n\r\n/**\r\n * Returns the fractional- width and height of the passed element. If the element is null the width and height values are 0.\r\n * @param elm The element of which the fractional- width and height shall be returned.\r\n */\r\nexport const fractionalSize = (elm: HTMLElement | false | null | undefined): WH => {\r\n const cssHeight = parseFloat(style(elm, 'height')) || 0;\r\n const cssWidth = parseFloat(style(elm, 'width')) || 0;\r\n return {\r\n w: cssWidth - round(cssWidth),\r\n h: cssHeight - round(cssHeight),\r\n };\r\n};\r\n\r\n/**\r\n * Returns the BoundingClientRect of the passed element.\r\n * @param elm The element of which the BoundingClientRect shall be returned.\r\n */\r\nexport const getBoundingClientRect = (elm: HTMLElement): DOMRect => elm.getBoundingClientRect();\r\n\r\n/**\r\n * Determines whether the passed element has any dimensions.\r\n * @param elm The element.\r\n */\r\nexport const hasDimensions = (elm: HTMLElement | false | null | undefined): boolean =>\r\n elm ? elementHasDimensions(elm as HTMLElement) : false;\r\n","import { isUndefined } from 'support/utils/types';\r\nimport { each, push, runEachAndClear } 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() {\r\n passiveEventsSupport = true;\r\n },\r\n })\r\n );\r\n /* eslint-enable */\r\n } catch (e) {}\r\n }\r\n return passiveEventsSupport;\r\n};\r\nconst splitEventNames = (eventNames: string) => eventNames.split(' ');\r\n\r\nexport interface OnOptions {\r\n _capture?: boolean;\r\n _passive?: boolean;\r\n _once?: boolean;\r\n}\r\n\r\n/**\r\n * Removes the passed event listener for the passed events with the passed options.\r\n * @param target The element from which the listener shall be removed.\r\n * @param eventNames The eventsnames for which the listener shall be removed.\r\n * @param listener The listener which shall be removed.\r\n * @param capture The options of the removed listener.\r\n */\r\nexport const off = (\r\n target: EventTarget,\r\n eventNames: string,\r\n listener: (event: T) => any,\r\n capture?: boolean\r\n): void => {\r\n each(splitEventNames(eventNames), (eventName) => {\r\n target.removeEventListener(eventName, listener as EventListener, capture);\r\n });\r\n};\r\n\r\n/**\r\n * Adds the passed event listener for the passed eventnames with the passed options.\r\n * @param target The element to which the listener shall be added.\r\n * @param eventNames The eventsnames for which the listener shall be called.\r\n * @param listener The listener which is called on the eventnames.\r\n * @param options The options of the added listener.\r\n */\r\nexport const on = (\r\n target: EventTarget,\r\n eventNames: string,\r\n listener: (event: T) => any,\r\n options?: OnOptions\r\n): (() => void) => {\r\n const doSupportPassiveEvents = supportPassiveEvents();\r\n const passive = (doSupportPassiveEvents && options && options._passive) ?? doSupportPassiveEvents;\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 = (\r\n once\r\n ? (evt: T) => {\r\n target.removeEventListener(eventName, finalListener, capture);\r\n listener && listener(evt);\r\n }\r\n : listener\r\n ) 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 runEachAndClear.bind(0, offListeners);\r\n};\r\n\r\n/**\r\n * Shorthand for the stopPropagation event Method.\r\n * @param evt The event of which the stopPropagation method shall be called.\r\n */\r\nexport const stopPropagation = (evt: Event): void => evt.stopPropagation();\r\n\r\n/**\r\n * Shorthand for the preventDefault event Method.\r\n * @param evt The event of which the preventDefault method shall be called.\r\n */\r\nexport const preventDefault = (evt: Event): void => evt.preventDefault();\r\n\r\n/**\r\n * Shorthand for the stopPropagation and preventDefault event Method.\r\n * @param evt The event of which the stopPropagation and preventDefault methods shall be called.\r\n */\r\nexport const stopAndPrevent = (evt: Event): void =>\r\n (stopPropagation(evt) as undefined) || (preventDefault(evt) as undefined);\r\n","import { getBoundingClientRect } from 'support/dom/dimensions';\r\n\r\nexport interface XY {\r\n x: T;\r\n y: T;\r\n}\r\n\r\nconst zeroObj: XY = {\r\n x: 0,\r\n y: 0,\r\n};\r\n\r\n/**\r\n * Returns the offset- left and top coordinates of the passed element relative to the document. If the element is null the top and left values are 0.\r\n * @param elm The element of which the offset- top and left coordinates shall be returned.\r\n */\r\nexport const absoluteCoordinates = (elm: HTMLElement | null | undefined): XY => {\r\n const rect = elm ? getBoundingClientRect(elm) : 0;\r\n return rect\r\n ? {\r\n x: rect.left + window.pageYOffset,\r\n y: rect.top + window.pageXOffset,\r\n }\r\n : zeroObj;\r\n};\r\n\r\n/**\r\n * Returns the offset- left and top coordinates of the passed element. If the element is null the top and left values are 0.\r\n * @param elm The element of which the offset- top and left coordinates shall be returned.\r\n */\r\nexport const offsetCoordinates = (elm: HTMLElement | null | undefined): XY =>\r\n elm\r\n ? {\r\n x: elm.offsetLeft,\r\n y: elm.offsetTop,\r\n }\r\n : zeroObj;\r\n","import { isArray } from 'support/utils/types';\r\nimport { keys } from 'support/utils/object';\r\nimport { each, from, isEmptyArray } from 'support/utils/array';\r\n\r\nexport type EventListener<\r\n EventMap extends Record,\r\n N extends keyof EventMap = keyof EventMap\r\n> = (...args: EventMap[N]) => void;\r\n\r\nexport type InitialEventListeners> = {\r\n [K in keyof EventMap]?: EventListener | EventListener[];\r\n};\r\n\r\nconst manageListener = >(\r\n callback: (listener?: EventListener) => void,\r\n listener?: EventListener | EventListener[]\r\n) => {\r\n each(isArray(listener) ? listener : [listener], callback);\r\n};\r\n\r\nexport const createEventListenerHub = >(\r\n initialEventListeners?: InitialEventListeners\r\n) => {\r\n // eslint-disable-next-line @typescript-eslint/no-shadow\r\n type EventListener = (...args: EventMap[N]) => void;\r\n type RemoveEvent = {\r\n (name?: N, listener?: EventListener): void;\r\n (name?: N, listener?: EventListener[]): void;\r\n (name?: N, listener?: EventListener | EventListener[]): void;\r\n };\r\n type AddEvent = {\r\n (name: N, listener: EventListener): () => void;\r\n (name: N, listener: EventListener[]): () => void;\r\n (\r\n name: N,\r\n listener: EventListener | EventListener[]\r\n ): () => void;\r\n };\r\n type TriggerEvent = {\r\n (name: N, args?: EventMap[N]): void;\r\n };\r\n\r\n const events = new Map>();\r\n\r\n const removeEvent: RemoveEvent = (\r\n name?: N,\r\n listener?: EventListener | EventListener[]\r\n ): void => {\r\n if (name) {\r\n const eventSet = events.get(name);\r\n manageListener((currListener) => {\r\n if (eventSet) {\r\n eventSet[currListener ? 'delete' : 'clear'](currListener!);\r\n }\r\n }, listener as any);\r\n } else {\r\n events.forEach((eventSet) => {\r\n eventSet.clear();\r\n });\r\n events.clear();\r\n }\r\n };\r\n\r\n const addEvent: AddEvent = (\r\n name: N,\r\n listener: EventListener | EventListener[]\r\n ): (() => void) => {\r\n const eventSet = events.get(name) || new Set();\r\n events.set(name, eventSet);\r\n\r\n manageListener((currListener) => {\r\n currListener && eventSet.add(currListener);\r\n }, listener as any);\r\n\r\n return removeEvent.bind(0, name as any, listener as any);\r\n };\r\n\r\n const triggerEvent: TriggerEvent = (\r\n name: N,\r\n args?: EventMap[N]\r\n ): void => {\r\n const eventSet = events.get(name);\r\n\r\n each(from(eventSet), (event) => {\r\n if (args && !isEmptyArray(args)) {\r\n (event as (...eventArgs: EventMap[keyof EventMap]) => void).apply(0, args as any);\r\n } else {\r\n (event as () => void)();\r\n }\r\n });\r\n };\r\n\r\n const initialListenerKeys = keys(initialEventListeners) as Extract[];\r\n each(initialListenerKeys, (key) => {\r\n addEvent(key, initialEventListeners![key] as any);\r\n });\r\n\r\n return [addEvent, removeEvent, triggerEvent] as [AddEvent, RemoveEvent, TriggerEvent];\r\n};\r\n","import { assignDeep, each, isObject, keys, isArray, hasOwnProperty, isFunction } from 'support';\r\nimport { DeepPartial, DeepReadonly } from 'typings';\r\n\r\nconst opsStringify = (value: any) =>\r\n JSON.stringify(value, (_, val) => {\r\n if (isFunction(val)) {\r\n throw new Error();\r\n }\r\n return val;\r\n });\r\n\r\nexport type OverflowBehavior =\r\n | 'hidden'\r\n | 'scroll'\r\n | 'visible'\r\n | 'visible-hidden'\r\n | 'visible-scroll';\r\n\r\nexport type ScrollbarVisibilityBehavior = 'visible' | 'hidden' | 'auto';\r\n\r\nexport type ScrollbarAutoHideBehavior = 'never' | 'scroll' | 'leave' | 'move';\r\n\r\nexport interface Options {\r\n paddingAbsolute: boolean;\r\n showNativeOverlaidScrollbars: boolean;\r\n update: {\r\n elementEvents: Array<[elementSelector: string, eventNames: string]> | null;\r\n debounce: [timeout: number, maxWait: number] | number | null; // (if tuple: [timeout: 0, maxWait: 33], if number: [timeout: number, maxWait: false]) debounce for content Changes\r\n attributes: string[] | null;\r\n ignoreMutation: ((mutation: MutationRecord) => any) | null;\r\n };\r\n overflow: {\r\n x: OverflowBehavior;\r\n y: OverflowBehavior;\r\n };\r\n scrollbars: {\r\n theme: string | null;\r\n visibility: ScrollbarVisibilityBehavior;\r\n autoHide: ScrollbarAutoHideBehavior;\r\n autoHideDelay: number;\r\n dragScroll: boolean;\r\n clickScroll: boolean;\r\n pointers: string[] | null;\r\n };\r\n}\r\n\r\nexport type ReadonlyOptions = DeepReadonly