diff --git a/.gitignore b/.gitignore
index 06140dd..9ed5690 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,9 +3,6 @@
# dependencies
node_modules/
-# dist
-dist/
-
# generated
coverage/
diff --git a/package.json b/package.json
index 5ac17b3..812247b 100644
--- a/package.json
+++ b/package.json
@@ -37,7 +37,7 @@
},
"scripts": {
"test": "jest --coverage",
- "build": "npx rollup -c --config-project='overlayscrollbars'",
+ "build": "npx rollup -c --config-project='overlayscrollbars' && npx rollup -c --config-project='overlayscrollbars-jquery'",
"lint": "npx eslint --fix ."
}
}
diff --git a/packages/overlayscrollbars-jquery/dist/overlayscrollbars-jquery.esm.js b/packages/overlayscrollbars-jquery/dist/overlayscrollbars-jquery.esm.js
new file mode 100644
index 0000000..a6728ec
--- /dev/null
+++ b/packages/overlayscrollbars-jquery/dist/overlayscrollbars-jquery.esm.js
@@ -0,0 +1,14 @@
+export { default as not } from 'dir/not.png';
+import j from 'jquery';
+var abc = 'abc';
+const a = 1 + 1;
+var file = {
+ a
+};
+const a$1 = 'a';
+const b = 'b';
+const c = 'c';
+var index = j('div');
+export default index;
+export { a$1 as a, abc, b, c, file };
+//# sourceMappingURL=overlayscrollbars-jquery.esm.js.map
diff --git a/packages/overlayscrollbars-jquery/dist/overlayscrollbars-jquery.esm.js.map b/packages/overlayscrollbars-jquery/dist/overlayscrollbars-jquery.esm.js.map
new file mode 100644
index 0000000..2f50f0b
--- /dev/null
+++ b/packages/overlayscrollbars-jquery/dist/overlayscrollbars-jquery.esm.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"overlayscrollbars-jquery.esm.js","sources":["../src/dir/abc.js","../src/file.js","../src/test.js","../src/index.js"],"sourcesContent":["export default 'abc';\n","const a = 1 + 1;\nexport default {\n a,\n};\n","export const a = 'a';\nexport const b = 'b';\nexport const c = 'c';\n","import abc from 'dir/abc';\nimport not from 'dir/not.png';\nimport file from 'file';\nimport j from 'jquery';\nimport { a, b, c } from 'test';\n\nexport default j('div');\nexport { a, b, c, file, abc, not };\n"],"names":["a","b","c","j"],"mappings":";;AAAA,UAAe,KAAf;ACAA,MAAMA,CAAC,GAAG,IAAI,CAAd;AACA,WAAe;AACbA,EAAAA;AADa,CAAf;ACDY,MAACA,GAAC,GAAG,GAAL;AACA,MAACC,CAAC,GAAG,GAAL;AACA,MAACC,CAAC,GAAG,GAAL;ACIZ,YAAeC,CAAC,CAAC,KAAD,CAAhB;;"}
\ No newline at end of file
diff --git a/packages/overlayscrollbars-jquery/dist/overlayscrollbars-jquery.esm.min.js b/packages/overlayscrollbars-jquery/dist/overlayscrollbars-jquery.esm.min.js
new file mode 100644
index 0000000..cc114f4
--- /dev/null
+++ b/packages/overlayscrollbars-jquery/dist/overlayscrollbars-jquery.esm.min.js
@@ -0,0 +1 @@
+export{default as not}from"dir/not.png";import a from"jquery";var r="abc";var o={a:2};const t="a",e="b",p="c";var d=a("div");export default d;export{t as a,r as abc,e as b,p as c,o as file};
\ No newline at end of file
diff --git a/packages/overlayscrollbars-jquery/dist/overlayscrollbars-jquery.js b/packages/overlayscrollbars-jquery/dist/overlayscrollbars-jquery.js
new file mode 100644
index 0000000..63609b4
--- /dev/null
+++ b/packages/overlayscrollbars-jquery/dist/overlayscrollbars-jquery.js
@@ -0,0 +1,24 @@
+var OverlayScrollbars = function (exports, not_png, j) {
+ 'use strict';
+
+ not_png = not_png && Object.prototype.hasOwnProperty.call(not_png, 'default') ? not_png['default'] : not_png;
+ j = j && Object.prototype.hasOwnProperty.call(j, 'default') ? j['default'] : j;
+ var abc = 'abc';
+ var a = 1 + 1;
+ var file = {
+ a: a
+ };
+ var a$1 = 'a';
+ var b = 'b';
+ var c = 'c';
+ var index = j('div');
+ exports.not = not_png;
+ exports.a = a$1;
+ exports.abc = abc;
+ exports.b = b;
+ exports.c = c;
+ exports.default = index;
+ exports.file = file;
+ return exports;
+}({}, not_png, jQuery);
+//# sourceMappingURL=overlayscrollbars-jquery.js.map
diff --git a/packages/overlayscrollbars-jquery/dist/overlayscrollbars-jquery.js.map b/packages/overlayscrollbars-jquery/dist/overlayscrollbars-jquery.js.map
new file mode 100644
index 0000000..9184e45
--- /dev/null
+++ b/packages/overlayscrollbars-jquery/dist/overlayscrollbars-jquery.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"overlayscrollbars-jquery.js","sources":["../src/dir/abc.js","../src/file.js","../src/test.js","../src/index.js"],"sourcesContent":["export default 'abc';\n","const a = 1 + 1;\nexport default {\n a,\n};\n","export const a = 'a';\nexport const b = 'b';\nexport const c = 'c';\n","import abc from 'dir/abc';\nimport not from 'dir/not.png';\nimport file from 'file';\nimport j from 'jquery';\nimport { a, b, c } from 'test';\n\nexport default j('div');\nexport { a, b, c, file, abc, not };\n"],"names":["a","b","c","j"],"mappings":";;;;;YAAe;ACAf,MAAMA,CAAC,GAAG,IAAI,CAAd;aACe;AACbA,IAAAA,CAAC,EAADA;AADa;MCDFA,GAAC,GAAG;MACJC,CAAC,GAAG;MACJC,CAAC,GAAG;cCIFC,CAAC,CAAC,KAAD;;;;;;;;;"}
\ No newline at end of file
diff --git a/packages/overlayscrollbars-jquery/dist/overlayscrollbars-jquery.min.js b/packages/overlayscrollbars-jquery/dist/overlayscrollbars-jquery.min.js
new file mode 100644
index 0000000..c922b20
--- /dev/null
+++ b/packages/overlayscrollbars-jquery/dist/overlayscrollbars-jquery.min.js
@@ -0,0 +1 @@
+var OverlayScrollbars=function(t,a,e){"use strict";a=a&&Object.prototype.hasOwnProperty.call(a,"default")?a.default:a;var r={a:2},l=(e=e&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e)("div");return t.not=a,t.a="a",t.abc="abc",t.b="b",t.c="c",t.default=l,t.file=r,t}({},not_png,jQuery);
\ No newline at end of file
diff --git a/packages/overlayscrollbars/dist/overlayscrollbars.esm.js b/packages/overlayscrollbars/dist/overlayscrollbars.esm.js
new file mode 100644
index 0000000..8827213
--- /dev/null
+++ b/packages/overlayscrollbars/dist/overlayscrollbars.esm.js
@@ -0,0 +1,97 @@
+function isNumber(obj) {
+ return typeof obj === 'number';
+}
+
+function isFunction(obj) {
+ return typeof obj === 'function';
+}
+
+function isArray(obj) {
+ return Array.isArray(obj);
+}
+
+function isArrayLike(obj) {
+ const length = !!obj && obj.length;
+ return isArray(obj) || !isFunction(obj) && isNumber(length) && length > -1 && length % 1 == 0;
+}
+
+const keys = obj => Object.keys(obj);
+
+function each(source, callback) {
+ if (isArrayLike(source)) {
+ for (let i = 0; i < source.length; i++) {
+ if (callback(source[i], i, source) === false) {
+ break;
+ }
+ }
+ } else if (source) {
+ each(keys(source), key => callback(source[key], key, source));
+ }
+
+ return source;
+}
+
+const contents = elm => elm ? Array.from(elm.childNodes) : [];
+
+const removeElements = nodes => {
+ if (isArrayLike(nodes)) {
+ each(Array.from(nodes), e => removeElements(e));
+ } else if (nodes) {
+ const {
+ parentNode
+ } = nodes;
+
+ if (parentNode) {
+ parentNode.removeChild(nodes);
+ }
+ }
+};
+
+const createDiv = () => document.createElement('div');
+
+const createDOM = html => {
+ const createdDiv = createDiv();
+ createdDiv.innerHTML = html.trim();
+ return each(contents(createdDiv), elm => removeElements(elm));
+};
+
+const abc = {
+ a: 1,
+ b: 1,
+ c: 1
+};
+
+var index = () => {
+ const {
+ a,
+ b,
+ c
+ } = abc;
+ return [createDOM('\
+
'), a, b, c];
+};
+
+const a = 1;
+export default index;
+export { a };
+//# sourceMappingURL=overlayscrollbars.esm.js.map
diff --git a/packages/overlayscrollbars/dist/overlayscrollbars.esm.js.map b/packages/overlayscrollbars/dist/overlayscrollbars.esm.js.map
new file mode 100644
index 0000000..7547473
--- /dev/null
+++ b/packages/overlayscrollbars/dist/overlayscrollbars.esm.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"overlayscrollbars.esm.js","sources":["../src/core/utils/types.ts","../src/core/utils/object.ts","../src/core/utils/array.ts","../src/core/dom/traversal.ts","../src/core/dom/manipulation.ts","../src/core/dom/create.ts","../src/index.ts"],"sourcesContent":["import { PlainObject } from 'core/typings';\n\nexport const type: (obj: any) => string = (obj) => {\n if (obj === undefined) return `${obj}`;\n if (obj === null) return `${obj}`;\n return Object.prototype.toString\n .call(obj)\n .replace(/^\\[object (.+)\\]$/, '$1')\n .toLowerCase();\n};\n\nexport function isNumber(obj: any): obj is number {\n return typeof obj === 'number';\n}\n\nexport function isString(obj: any): obj is string {\n return typeof obj === 'string';\n}\n\nexport function isBoolean(obj: any): obj is boolean {\n return typeof obj === 'boolean';\n}\n\nexport function isFunction(obj: any): obj is (...args: Array) => unknown {\n return typeof obj === 'function';\n}\n\nexport function isUndefined(obj: any): obj is undefined {\n return obj === undefined;\n}\n\nexport function isNull(obj: any): obj is null {\n return obj === null;\n}\n\nexport function isArray(obj: any): obj is Array {\n return Array.isArray(obj);\n}\n\nexport function isObject(obj: any): boolean {\n return typeof obj === 'object' && !isArray(obj) && !isNull(obj);\n}\n\n/**\n * Returns true if the given object is array like, false otherwise.\n * @param obj The Object\n */\nexport function isArrayLike(obj: any): obj is ArrayLike {\n const length = !!obj && obj.length;\n return isArray(obj) || (!isFunction(obj) && isNumber(length) && length > -1 && length % 1 == 0); // eslint-disable-line eqeqeq\n}\n\n/**\n * Returns true if the given object is a \"plain\" (e.g. { key: value }) object, false otherwise.\n * @param obj The Object.\n */\nexport function isPlainObject(obj: any): obj is PlainObject {\n if (!obj || !isObject(obj) || type(obj) !== 'object') return false;\n\n let key;\n const proto = 'prototype';\n const { hasOwnProperty } = Object[proto];\n const hasOwnConstructor = hasOwnProperty.call(obj, 'constructor');\n const hasIsPrototypeOf = obj.constructor && obj.constructor[proto] && hasOwnProperty.call(obj.constructor[proto], 'isPrototypeOf');\n\n if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n return false;\n }\n\n /* eslint-disable no-restricted-syntax */\n for (key in obj) {\n /**/\n }\n /* eslint-enable */\n\n return isUndefined(key) || hasOwnProperty.call(obj, key);\n}\n\n/**\n * Checks whether the given object is a HTMLElement.\n * @param obj The object which shall be checked.\n */\nexport function isHTMLElement(obj: any): obj is HTMLElement {\n const instaceOfRightHandSide = window.HTMLElement;\n const doInstanceOf = isObject(instaceOfRightHandSide) || isFunction(instaceOfRightHandSide);\n return !!(doInstanceOf ? obj instanceof instaceOfRightHandSide : obj && isObject(obj) && obj.nodeType === 1 && isString(obj.nodeName));\n}\n\n/**\n * Returns true if the given object is empty, false otherwise.\n * @param obj The Object.\n */\nexport function isEmptyObject(obj: any): boolean {\n /* eslint-disable no-restricted-syntax, guard-for-in */\n for (const name in obj) return false;\n return true;\n /* eslint-enable */\n}\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 = (obj: any, prop: string | number | symbol) =>\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: any) => Object.keys(obj);\r\n","import { keys } from 'core/utils/object';\nimport { isArrayLike } from 'core/utils/types';\nimport { PlainObject } from 'core/typings';\n\n/**\n * Iterates through a array or object\n * @param arrayLikeOrObject The array or object through which shall be iterated.\n * @param callback The function which is responsible for the iteration.\n * If the function returns true its treated like a \"continue\" statement.\n * If the function returns false its treated like a \"break\" statement.\n */\nexport function each(\n array: Array | ReadonlyArray,\n callback: (value: T, indexOrKey: number, source: Array) => boolean | void,\n): Array | ReadonlyArray;\nexport function each(\n array: Array | ReadonlyArray | null,\n callback: (value: T, indexOrKey: number, source: Array) => boolean | void,\n): Array | ReadonlyArray | null;\nexport function each(\n arrayLikeObject: ArrayLike,\n callback: (value: T, indexOrKey: number, source: ArrayLike) => boolean | void,\n): ArrayLike;\nexport function each(\n arrayLikeObject: ArrayLike | null,\n callback: (value: T, indexOrKey: number, source: ArrayLike) => boolean | void,\n): ArrayLike | null;\nexport function each(obj: PlainObject, callback: (value: any, indexOrKey: string, source: PlainObject) => boolean | void): PlainObject;\nexport function each(obj: PlainObject | null, callback: (value: any, indexOrKey: string, source: PlainObject) => boolean | void): PlainObject | null;\nexport function each(\n source: ArrayLike | PlainObject | null,\n callback: (value: T | any, indexOrKey: any, source: any) => boolean | void,\n): Array | ReadonlyArray | ArrayLike | PlainObject | null {\n if (isArrayLike(source)) {\n for (let i = 0; i < source.length; i++) {\n if (callback(source[i], i, source) === false) {\n break;\n }\n }\n } else if (source) {\n each(keys(source), (key) => callback(source[key], key, source));\n }\n return source;\n}\n\n/**\n * Returns the index of the given inside the given array or -1 if the given item isn't part of the given array.\n * @param arr The array.\n * @param item The item.\n * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.\n */\nexport const indexOf: (arr: Array, item: T, fromIndex?: number) => number = (arr, item, fromIndex) => arr.indexOf(item, fromIndex);\n","import { each } from 'core/utils/array';\n\nconst elementIsVisible: (elm: HTMLElement) => boolean = (elm) => !!(elm.offsetWidth || elm.offsetHeight || elm.getClientRects().length);\n\nexport const find: (selector: string, elm?: Element | null) => ReadonlyArray = (selector, elm?) => {\n const arr: Array = [];\n\n each((elm || document).querySelectorAll(selector), (e: Element) => {\n arr.push(e);\n });\n\n return arr;\n};\n\nexport const findFirst: (selector: string, elm?: Element | null) => Element | null = (selector, elm?) => (elm || document).querySelector(selector);\n\nexport const is: (elm: Element | null, selector: string) => boolean = (elm, selector) => {\n if (elm) {\n if (selector === ':visible') {\n return elementIsVisible(elm as HTMLElement);\n }\n if (selector === ':hidden') {\n return !elementIsVisible(elm as HTMLElement);\n }\n if (elm.matches(selector)) {\n return true;\n }\n }\n return false;\n};\n\nexport const children: (elm: Element | null, selector?: string) => ReadonlyArray = (elm, selector?) => {\n const childs: Array = [];\n\n each(elm && elm.children, (child: Element) => {\n if (selector) {\n if (child.matches(selector)) {\n childs.push(child);\n }\n } else {\n childs.push(child);\n }\n });\n\n return childs;\n};\n\nexport const contents: (elm: Element | null) => ReadonlyArray = (elm) => (elm ? Array.from(elm.childNodes) : []);\n\nexport const parent: (elm: Node | null) => Node | null = (elm) => (elm ? elm.parentElement : null);\n","import { isArrayLike } from 'core/utils/types';\nimport { each } from 'core/utils/array';\nimport { parent } from 'core/dom/traversal';\n\ntype NodeCollection = ArrayLike | Node | undefined | null;\n\n/**\n * Inserts Nodes before the given preferredAnchor element.\n * @param parentElm The parent of the preferredAnchor element or the element which shall be the parent of the inserted Nodes.\n * @param preferredAnchor The element before which the Nodes shall be inserted or null if the elements shall be appended at the end.\n * @param insertedElms The Nodes which shall be inserted.\n */\nconst before: (parentElm: Node | null, preferredAnchor: Node | null, insertedElms: NodeCollection) => void = (\n parentElm,\n preferredAnchor,\n insertedElms,\n) => {\n if (insertedElms) {\n let anchor: Node | null = preferredAnchor;\n let fragment: DocumentFragment | Node | undefined | null;\n\n // parent must be defined\n if (parentElm) {\n if (isArrayLike(insertedElms)) {\n fragment = document.createDocumentFragment();\n\n // append all insertedElms to the fragment and if one of these is the anchor, change the anchor\n each(insertedElms, (insertedElm) => {\n if (insertedElm === anchor) {\n anchor = insertedElm.previousSibling;\n }\n fragment!.appendChild(insertedElm);\n });\n } else {\n fragment = insertedElms;\n }\n\n // if the preferred anchor isn't null set it to a valid anchor\n if (preferredAnchor) {\n if (!anchor) {\n anchor = parentElm.firstChild;\n } else if (anchor !== preferredAnchor) {\n anchor = anchor.nextSibling;\n }\n }\n\n parentElm.insertBefore(fragment, anchor);\n }\n }\n};\n\n/**\n * Appends the given children at the end of the given Node.\n * @param node The Node to which the children shall be appended.\n * @param children The Nodes which shall be appended.\n */\nexport const appendChildren: (node: Node | null, children: NodeCollection) => void = (node, children) => {\n before(node, null, children);\n};\n\n/**\n * Prepends the given children at the start of the given Node.\n * @param node The Node to which the children shall be prepended.\n * @param children The Nodes which shall be prepended.\n */\nexport const prependChildren: (node: Node | null, children: NodeCollection) => void = (node, children) => {\n before(node, node && node.firstChild, children);\n};\n\n/**\n * Inserts the given Nodes before the given Node.\n * @param node The Node before which the given Nodes shall be inserted.\n * @param insertedNodes The Nodes which shall be inserted.\n */\nexport const insertBefore: (node: Node | null, insertedNodes: NodeCollection) => void = (node, insertedNodes) => {\n before(parent(node), node, insertedNodes);\n};\n\n/**\n * Inserts the given Nodes after the given Node.\n * @param node The Node after which the given Nodes shall be inserted.\n * @param insertedNodes The Nodes which shall be inserted.\n */\nexport const insertAfter: (node: Node | null, insertedNodes: NodeCollection) => void = (node, insertedNodes) => {\n before(parent(node), node && node.nextSibling, insertedNodes);\n};\n\n/**\n * Removes the given Nodes from their parent.\n * @param nodes The Nodes which shall be removed.\n */\nexport const removeElements: (nodes: NodeCollection) => void = (nodes) => {\n if (isArrayLike(nodes)) {\n each(Array.from(nodes), (e) => removeElements(e));\n } else if (nodes) {\n const { parentNode } = nodes;\n if (parentNode) {\n parentNode.removeChild(nodes);\n }\n }\n};\n","import { each } from 'core/utils/array';\nimport { contents } from 'core/dom/traversal';\nimport { removeElements } from 'core/dom/manipulation';\n\nexport const createDiv: () => HTMLDivElement = () => document.createElement('div');\n\nexport const createDOM: (html: string) => ReadonlyArray = (html) => {\n const createdDiv = createDiv();\n createdDiv.innerHTML = html.trim();\n\n return each(contents(createdDiv), (elm) => removeElements(elm));\n};\n","import { createDOM } from 'core/dom';\n\n/*\nexport * from 'core/compatibility';\nexport * from 'core/utils';\nexport * from 'core/dom';\nexport * from 'core/options';\nexport * from 'instances';\n*/\n\nconst abc = {\n a: 1,\n b: 1,\n c: 1,\n};\n\nexport default () => {\n const { a, b, c } = abc;\n return [\n createDOM(\n '\\\n \\\n
\\\n
\\\n
\\\n
\\\n fdfhdfgh\\\n
\\\n
\\\n
\\\n
\\\n
\\\n
\\\n
',\n ),\n a,\n b,\n c,\n ];\n};\n\nexport const a = 1;\n"],"names":["isNumber","obj","isFunction","isArray","Array","isArrayLike","length","keys","Object","each","source","callback","i","key","contents","elm","from","childNodes","removeElements","nodes","e","parentNode","removeChild","createDiv","document","createElement","createDOM","html","createdDiv","innerHTML","trim","abc","a","b","c"],"mappings":"SAWgBA,SAASC;AACvB,SAAO,OAAOA,GAAP,KAAe,QAAtB;AACD;;SAUeC,WAAWD;AACzB,SAAO,OAAOA,GAAP,KAAe,UAAtB;AACD;;SAUeE,QAAQF;AACtB,SAAOG,KAAK,CAACD,OAAN,CAAcF,GAAd,CAAP;AACD;;SAUeI,YAAyCJ;AACvD,QAAMK,MAAM,GAAG,CAAC,CAACL,GAAF,IAASA,GAAG,CAACK,MAA5B;AACA,SAAOH,OAAO,CAACF,GAAD,CAAP,IAAiB,CAACC,UAAU,CAACD,GAAD,CAAX,IAAoBD,QAAQ,CAACM,MAAD,CAA5B,IAAwCA,MAAM,GAAG,CAAC,CAAlD,IAAuDA,MAAM,GAAG,CAAT,IAAc,CAA7F;;;ACrCK,MAAMC,IAAI,GAAiCN,GAAD,IAAcO,MAAM,CAACD,IAAP,CAAYN,GAAZ,CAAxD;;SCiBSQ,KACdC,QACAC;AAEA,MAAIN,WAAW,CAACK,MAAD,CAAf,EAAyB;AACvB,SAAK,IAAIE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,MAAM,CAACJ,MAA3B,EAAmCM,CAAC,EAApC,EAAwC;AACtC,UAAID,QAAQ,CAACD,MAAM,CAACE,CAAD,CAAP,EAAYA,CAAZ,EAAeF,MAAf,CAAR,KAAmC,KAAvC,EAA8C;AAC5C;AACD;AACF;AACF,GAND,MAMO,IAAIA,MAAJ,EAAY;AACjBD,IAAAA,IAAI,CAACF,IAAI,CAACG,MAAD,CAAL,EAAgBG,GAAD,IAASF,QAAQ,CAACD,MAAM,CAACG,GAAD,CAAP,EAAcA,GAAd,EAAmBH,MAAnB,CAAhC,CAAJ;AACD;;AACD,SAAOA,MAAP;;;ACKK,MAAMI,QAAQ,GAAuDC,GAAD,IAAUA,GAAG,GAAGX,KAAK,CAACY,IAAN,CAAsBD,GAAG,CAACE,UAA1B,CAAH,GAA2C,EAA5H;;AC4CA,MAAMC,cAAc,GAAqCC,KAAD;AAC7D,MAAId,WAAW,CAACc,KAAD,CAAf,EAAwB;AACtBV,IAAAA,IAAI,CAACL,KAAK,CAACY,IAAN,CAAWG,KAAX,CAAD,EAAqBC,CAAD,IAAOF,cAAc,CAACE,CAAD,CAAzC,CAAJ;AACD,GAFD,MAEO,IAAID,KAAJ,EAAW;AAChB,UAAM;AAAEE,MAAAA;AAAF,QAAiBF,KAAvB;;AACA,QAAIE,UAAJ,EAAgB;AACdA,MAAAA,UAAU,CAACC,WAAX,CAAuBH,KAAvB;AACD;AACF;AACF,CATM;;ACvFA,MAAMI,SAAS,GAAyB,MAAMC,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAA9C;;AAEA,MAAMC,SAAS,GAA2CC,IAAD;AAC9D,QAAMC,UAAU,GAAGL,SAAS,EAA5B;AACAK,EAAAA,UAAU,CAACC,SAAX,GAAuBF,IAAI,CAACG,IAAL,EAAvB;AAEA,SAAOrB,IAAI,CAACK,QAAQ,CAACc,UAAD,CAAT,EAAwBb,GAAD,IAASG,cAAc,CAACH,GAAD,CAA9C,CAAX;AACD,CALM;;ACIP,MAAMgB,GAAG,GAAG;AACVC,EAAAA,CAAC,EAAE,CADO;AAEVC,EAAAA,CAAC,EAAE,CAFO;AAGVC,EAAAA,CAAC,EAAE;AAHO,CAAZ;;AAMA,YAAe;AACb,QAAM;AAAEF,IAAAA,CAAF;AAAKC,IAAAA,CAAL;AAAQC,IAAAA;AAAR,MAAcH,GAApB;AACA,SAAO,CACLL,SAAS,CACP;;;;;;;;;;;;;;;;;;;;;WADO,CADJ,EAyBLM,CAzBK,EA0BLC,CA1BK,EA2BLC,CA3BK,CAAP;AA6BD,CA/BD;;MAiCaF,CAAC,GAAG;;"}
\ No newline at end of file
diff --git a/packages/overlayscrollbars/dist/overlayscrollbars.esm.min.js b/packages/overlayscrollbars/dist/overlayscrollbars.esm.min.js
new file mode 100644
index 0000000..525f80a
--- /dev/null
+++ b/packages/overlayscrollbars/dist/overlayscrollbars.esm.min.js
@@ -0,0 +1 @@
+function r(r){const s=!!r&&r.length;return function(r){return Array.isArray(r)}(r)||!function(r){return"function"==typeof r}(r)&&function(r){return"number"==typeof r}(s)&&s>-1&&s%1==0}function s(o,c){if(r(o))for(let r=0;rc(o[r],r,o));var i;return o}const o=c=>{if(r(c))s(Array.from(c),r=>o(r));else if(c){const{parentNode:r}=c;r&&r.removeChild(c)}},c=r=>{const c=document.createElement("div");return c.innerHTML=r.trim(),s((i=c)?Array.from(i.childNodes):[],r=>o(r));var i},i={a:1,b:1,c:1};const e=1;export default()=>{const{a:r,b:s,c:o}=i;return[c(' '),r,s,o]};export{e as a};
\ No newline at end of file
diff --git a/packages/overlayscrollbars/dist/overlayscrollbars.js b/packages/overlayscrollbars/dist/overlayscrollbars.js
new file mode 100644
index 0000000..7e0bf90
--- /dev/null
+++ b/packages/overlayscrollbars/dist/overlayscrollbars.js
@@ -0,0 +1,110 @@
+var OverlayScrollbars = function (exports) {
+ 'use strict';
+
+ function isNumber(obj) {
+ return typeof obj === 'number';
+ }
+
+ function isFunction(obj) {
+ return typeof obj === 'function';
+ }
+
+ function isArray(obj) {
+ return Array.isArray(obj);
+ }
+
+ function isArrayLike(obj) {
+ var length = !!obj && obj.length;
+ return isArray(obj) || !isFunction(obj) && isNumber(length) && length > -1 && length % 1 == 0;
+ }
+
+ var keys = function keys(obj) {
+ return Object.keys(obj);
+ };
+
+ function each(source, callback) {
+ if (isArrayLike(source)) {
+ for (var i = 0; i < source.length; i++) {
+ if (callback(source[i], i, source) === false) {
+ break;
+ }
+ }
+ } else if (source) {
+ each(keys(source), function (key) {
+ return callback(source[key], key, source);
+ });
+ }
+
+ return source;
+ }
+
+ var contents = function contents(elm) {
+ return elm ? Array.from(elm.childNodes) : [];
+ };
+
+ var removeElements = function removeElements(nodes) {
+ if (isArrayLike(nodes)) {
+ each(Array.from(nodes), function (e) {
+ return removeElements(e);
+ });
+ } else if (nodes) {
+ var parentNode = nodes.parentNode;
+
+ if (parentNode) {
+ parentNode.removeChild(nodes);
+ }
+ }
+ };
+
+ var createDiv = function createDiv() {
+ return document.createElement('div');
+ };
+
+ var createDOM = function createDOM(html) {
+ var createdDiv = createDiv();
+ createdDiv.innerHTML = html.trim();
+ return each(contents(createdDiv), function (elm) {
+ return removeElements(elm);
+ });
+ };
+
+ var abc = {
+ a: 1,
+ b: 1,
+ c: 1
+ };
+
+ var index = function index() {
+ var a = abc.a,
+ b = abc.b,
+ c = abc.c;
+ return [createDOM('\
+ '), a, b, c];
+ };
+
+ var a = 1;
+ exports.a = a;
+ exports.default = index;
+ return exports;
+}({});
+//# sourceMappingURL=overlayscrollbars.js.map
diff --git a/packages/overlayscrollbars/dist/overlayscrollbars.js.map b/packages/overlayscrollbars/dist/overlayscrollbars.js.map
new file mode 100644
index 0000000..2afa3f6
--- /dev/null
+++ b/packages/overlayscrollbars/dist/overlayscrollbars.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"overlayscrollbars.js","sources":["../src/core/utils/types.ts","../src/core/utils/object.ts","../src/core/utils/array.ts","../src/core/dom/traversal.ts","../src/core/dom/manipulation.ts","../src/core/dom/create.ts","../src/index.ts"],"sourcesContent":["import { PlainObject } from 'core/typings';\n\nexport const type: (obj: any) => string = (obj) => {\n if (obj === undefined) return `${obj}`;\n if (obj === null) return `${obj}`;\n return Object.prototype.toString\n .call(obj)\n .replace(/^\\[object (.+)\\]$/, '$1')\n .toLowerCase();\n};\n\nexport function isNumber(obj: any): obj is number {\n return typeof obj === 'number';\n}\n\nexport function isString(obj: any): obj is string {\n return typeof obj === 'string';\n}\n\nexport function isBoolean(obj: any): obj is boolean {\n return typeof obj === 'boolean';\n}\n\nexport function isFunction(obj: any): obj is (...args: Array) => unknown {\n return typeof obj === 'function';\n}\n\nexport function isUndefined(obj: any): obj is undefined {\n return obj === undefined;\n}\n\nexport function isNull(obj: any): obj is null {\n return obj === null;\n}\n\nexport function isArray(obj: any): obj is Array {\n return Array.isArray(obj);\n}\n\nexport function isObject(obj: any): boolean {\n return typeof obj === 'object' && !isArray(obj) && !isNull(obj);\n}\n\n/**\n * Returns true if the given object is array like, false otherwise.\n * @param obj The Object\n */\nexport function isArrayLike(obj: any): obj is ArrayLike {\n const length = !!obj && obj.length;\n return isArray(obj) || (!isFunction(obj) && isNumber(length) && length > -1 && length % 1 == 0); // eslint-disable-line eqeqeq\n}\n\n/**\n * Returns true if the given object is a \"plain\" (e.g. { key: value }) object, false otherwise.\n * @param obj The Object.\n */\nexport function isPlainObject(obj: any): obj is PlainObject {\n if (!obj || !isObject(obj) || type(obj) !== 'object') return false;\n\n let key;\n const proto = 'prototype';\n const { hasOwnProperty } = Object[proto];\n const hasOwnConstructor = hasOwnProperty.call(obj, 'constructor');\n const hasIsPrototypeOf = obj.constructor && obj.constructor[proto] && hasOwnProperty.call(obj.constructor[proto], 'isPrototypeOf');\n\n if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n return false;\n }\n\n /* eslint-disable no-restricted-syntax */\n for (key in obj) {\n /**/\n }\n /* eslint-enable */\n\n return isUndefined(key) || hasOwnProperty.call(obj, key);\n}\n\n/**\n * Checks whether the given object is a HTMLElement.\n * @param obj The object which shall be checked.\n */\nexport function isHTMLElement(obj: any): obj is HTMLElement {\n const instaceOfRightHandSide = window.HTMLElement;\n const doInstanceOf = isObject(instaceOfRightHandSide) || isFunction(instaceOfRightHandSide);\n return !!(doInstanceOf ? obj instanceof instaceOfRightHandSide : obj && isObject(obj) && obj.nodeType === 1 && isString(obj.nodeName));\n}\n\n/**\n * Returns true if the given object is empty, false otherwise.\n * @param obj The Object.\n */\nexport function isEmptyObject(obj: any): boolean {\n /* eslint-disable no-restricted-syntax, guard-for-in */\n for (const name in obj) return false;\n return true;\n /* eslint-enable */\n}\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 = (obj: any, prop: string | number | symbol) =>\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: any) => Object.keys(obj);\r\n","import { keys } from 'core/utils/object';\nimport { isArrayLike } from 'core/utils/types';\nimport { PlainObject } from 'core/typings';\n\n/**\n * Iterates through a array or object\n * @param arrayLikeOrObject The array or object through which shall be iterated.\n * @param callback The function which is responsible for the iteration.\n * If the function returns true its treated like a \"continue\" statement.\n * If the function returns false its treated like a \"break\" statement.\n */\nexport function each(\n array: Array | ReadonlyArray,\n callback: (value: T, indexOrKey: number, source: Array) => boolean | void,\n): Array | ReadonlyArray;\nexport function each(\n array: Array | ReadonlyArray | null,\n callback: (value: T, indexOrKey: number, source: Array) => boolean | void,\n): Array | ReadonlyArray | null;\nexport function each(\n arrayLikeObject: ArrayLike,\n callback: (value: T, indexOrKey: number, source: ArrayLike) => boolean | void,\n): ArrayLike;\nexport function each(\n arrayLikeObject: ArrayLike | null,\n callback: (value: T, indexOrKey: number, source: ArrayLike) => boolean | void,\n): ArrayLike | null;\nexport function each(obj: PlainObject, callback: (value: any, indexOrKey: string, source: PlainObject) => boolean | void): PlainObject;\nexport function each(obj: PlainObject | null, callback: (value: any, indexOrKey: string, source: PlainObject) => boolean | void): PlainObject | null;\nexport function each(\n source: ArrayLike | PlainObject | null,\n callback: (value: T | any, indexOrKey: any, source: any) => boolean | void,\n): Array | ReadonlyArray | ArrayLike | PlainObject | null {\n if (isArrayLike(source)) {\n for (let i = 0; i < source.length; i++) {\n if (callback(source[i], i, source) === false) {\n break;\n }\n }\n } else if (source) {\n each(keys(source), (key) => callback(source[key], key, source));\n }\n return source;\n}\n\n/**\n * Returns the index of the given inside the given array or -1 if the given item isn't part of the given array.\n * @param arr The array.\n * @param item The item.\n * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.\n */\nexport const indexOf: (arr: Array, item: T, fromIndex?: number) => number = (arr, item, fromIndex) => arr.indexOf(item, fromIndex);\n","import { each } from 'core/utils/array';\n\nconst elementIsVisible: (elm: HTMLElement) => boolean = (elm) => !!(elm.offsetWidth || elm.offsetHeight || elm.getClientRects().length);\n\nexport const find: (selector: string, elm?: Element | null) => ReadonlyArray = (selector, elm?) => {\n const arr: Array = [];\n\n each((elm || document).querySelectorAll(selector), (e: Element) => {\n arr.push(e);\n });\n\n return arr;\n};\n\nexport const findFirst: (selector: string, elm?: Element | null) => Element | null = (selector, elm?) => (elm || document).querySelector(selector);\n\nexport const is: (elm: Element | null, selector: string) => boolean = (elm, selector) => {\n if (elm) {\n if (selector === ':visible') {\n return elementIsVisible(elm as HTMLElement);\n }\n if (selector === ':hidden') {\n return !elementIsVisible(elm as HTMLElement);\n }\n if (elm.matches(selector)) {\n return true;\n }\n }\n return false;\n};\n\nexport const children: (elm: Element | null, selector?: string) => ReadonlyArray = (elm, selector?) => {\n const childs: Array = [];\n\n each(elm && elm.children, (child: Element) => {\n if (selector) {\n if (child.matches(selector)) {\n childs.push(child);\n }\n } else {\n childs.push(child);\n }\n });\n\n return childs;\n};\n\nexport const contents: (elm: Element | null) => ReadonlyArray = (elm) => (elm ? Array.from(elm.childNodes) : []);\n\nexport const parent: (elm: Node | null) => Node | null = (elm) => (elm ? elm.parentElement : null);\n","import { isArrayLike } from 'core/utils/types';\nimport { each } from 'core/utils/array';\nimport { parent } from 'core/dom/traversal';\n\ntype NodeCollection = ArrayLike | Node | undefined | null;\n\n/**\n * Inserts Nodes before the given preferredAnchor element.\n * @param parentElm The parent of the preferredAnchor element or the element which shall be the parent of the inserted Nodes.\n * @param preferredAnchor The element before which the Nodes shall be inserted or null if the elements shall be appended at the end.\n * @param insertedElms The Nodes which shall be inserted.\n */\nconst before: (parentElm: Node | null, preferredAnchor: Node | null, insertedElms: NodeCollection) => void = (\n parentElm,\n preferredAnchor,\n insertedElms,\n) => {\n if (insertedElms) {\n let anchor: Node | null = preferredAnchor;\n let fragment: DocumentFragment | Node | undefined | null;\n\n // parent must be defined\n if (parentElm) {\n if (isArrayLike(insertedElms)) {\n fragment = document.createDocumentFragment();\n\n // append all insertedElms to the fragment and if one of these is the anchor, change the anchor\n each(insertedElms, (insertedElm) => {\n if (insertedElm === anchor) {\n anchor = insertedElm.previousSibling;\n }\n fragment!.appendChild(insertedElm);\n });\n } else {\n fragment = insertedElms;\n }\n\n // if the preferred anchor isn't null set it to a valid anchor\n if (preferredAnchor) {\n if (!anchor) {\n anchor = parentElm.firstChild;\n } else if (anchor !== preferredAnchor) {\n anchor = anchor.nextSibling;\n }\n }\n\n parentElm.insertBefore(fragment, anchor);\n }\n }\n};\n\n/**\n * Appends the given children at the end of the given Node.\n * @param node The Node to which the children shall be appended.\n * @param children The Nodes which shall be appended.\n */\nexport const appendChildren: (node: Node | null, children: NodeCollection) => void = (node, children) => {\n before(node, null, children);\n};\n\n/**\n * Prepends the given children at the start of the given Node.\n * @param node The Node to which the children shall be prepended.\n * @param children The Nodes which shall be prepended.\n */\nexport const prependChildren: (node: Node | null, children: NodeCollection) => void = (node, children) => {\n before(node, node && node.firstChild, children);\n};\n\n/**\n * Inserts the given Nodes before the given Node.\n * @param node The Node before which the given Nodes shall be inserted.\n * @param insertedNodes The Nodes which shall be inserted.\n */\nexport const insertBefore: (node: Node | null, insertedNodes: NodeCollection) => void = (node, insertedNodes) => {\n before(parent(node), node, insertedNodes);\n};\n\n/**\n * Inserts the given Nodes after the given Node.\n * @param node The Node after which the given Nodes shall be inserted.\n * @param insertedNodes The Nodes which shall be inserted.\n */\nexport const insertAfter: (node: Node | null, insertedNodes: NodeCollection) => void = (node, insertedNodes) => {\n before(parent(node), node && node.nextSibling, insertedNodes);\n};\n\n/**\n * Removes the given Nodes from their parent.\n * @param nodes The Nodes which shall be removed.\n */\nexport const removeElements: (nodes: NodeCollection) => void = (nodes) => {\n if (isArrayLike(nodes)) {\n each(Array.from(nodes), (e) => removeElements(e));\n } else if (nodes) {\n const { parentNode } = nodes;\n if (parentNode) {\n parentNode.removeChild(nodes);\n }\n }\n};\n","import { each } from 'core/utils/array';\nimport { contents } from 'core/dom/traversal';\nimport { removeElements } from 'core/dom/manipulation';\n\nexport const createDiv: () => HTMLDivElement = () => document.createElement('div');\n\nexport const createDOM: (html: string) => ReadonlyArray = (html) => {\n const createdDiv = createDiv();\n createdDiv.innerHTML = html.trim();\n\n return each(contents(createdDiv), (elm) => removeElements(elm));\n};\n","import { createDOM } from 'core/dom';\n\n/*\nexport * from 'core/compatibility';\nexport * from 'core/utils';\nexport * from 'core/dom';\nexport * from 'core/options';\nexport * from 'instances';\n*/\n\nconst abc = {\n a: 1,\n b: 1,\n c: 1,\n};\n\nexport default () => {\n const { a, b, c } = abc;\n return [\n createDOM(\n '\\\n \\\n
\\\n
\\\n
\\\n
\\\n fdfhdfgh\\\n
\\\n
\\\n
\\\n
\\\n
\\\n
\\\n
',\n ),\n a,\n b,\n c,\n ];\n};\n\nexport const a = 1;\n"],"names":["isNumber","obj","isFunction","isArray","Array","isArrayLike","length","keys","Object","each","source","callback","i","key","contents","elm","from","childNodes","removeElements","nodes","e","parentNode","removeChild","createDiv","document","createElement","createDOM","html","createdDiv","innerHTML","trim","abc","a","b","c"],"mappings":"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"}
\ No newline at end of file
diff --git a/packages/overlayscrollbars/dist/overlayscrollbars.min.js b/packages/overlayscrollbars/dist/overlayscrollbars.min.js
new file mode 100644
index 0000000..e44fa07
--- /dev/null
+++ b/packages/overlayscrollbars/dist/overlayscrollbars.min.js
@@ -0,0 +1 @@
+var OverlayScrollbars=function(r){"use strict";function s(r){var s=!!r&&r.length;return function(r){return Array.isArray(r)}(r)||!function(r){return"function"==typeof r}(r)&&function(r){return"number"==typeof r}(s)&&s>-1&&s%1==0}function o(r,i){if(s(r))for(var n=0;n '),r,s,o]},r}({});
\ No newline at end of file