@nativerent/js-utils 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +23 -18
- package/dist/index.js +28 -19
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +28 -20
- package/dist/index.mjs.map +1 -1
- package/jest.config.mjs +5 -0
- package/package.json +6 -2
- package/src/index.ts +54 -40
- package/src/types.d.ts +1 -1
- package/tests/tests.ts +297 -0
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ type FlattenableObject = { [key: string]: any };
|
|
|
3
3
|
type Primitive = boolean | number | string;
|
|
4
4
|
|
|
5
5
|
type SimpleObject = {
|
|
6
|
-
[key: string]: Primitive | Primitive[] | null | undefined;
|
|
6
|
+
[key: string | number]: Primitive | Primitive[] | null | undefined;
|
|
7
7
|
};
|
|
8
8
|
|
|
9
9
|
declare function debounce(fn: Function, delay: number): () => void;
|
|
@@ -12,6 +12,10 @@ declare function isObject(obj: any): obj is object;
|
|
|
12
12
|
declare function isFn(fn: any): fn is Function;
|
|
13
13
|
declare function isStr(str: any): boolean;
|
|
14
14
|
declare function isString(str: any): str is string;
|
|
15
|
+
/**
|
|
16
|
+
* Check if the given argument is a string which is not empty
|
|
17
|
+
*/
|
|
18
|
+
declare function isNotEmptyString(str: any): number | false;
|
|
15
19
|
declare function isHTMLElement(el: any): el is HTMLElement;
|
|
16
20
|
declare function isNum(num: any): num is number;
|
|
17
21
|
declare function isBool(bool: any): boolean;
|
|
@@ -34,12 +38,13 @@ declare function objectHasProp(obj: any, prop: string | number | symbol): boolea
|
|
|
34
38
|
*/
|
|
35
39
|
declare function getObjectKeys(object: object): string[];
|
|
36
40
|
/**
|
|
37
|
-
*
|
|
41
|
+
* Convert an object to a query string
|
|
42
|
+
* Works with primitive objects
|
|
38
43
|
*/
|
|
39
44
|
declare function objectToQueryString(object: {
|
|
40
|
-
[key: string]: SimpleObject | {
|
|
41
|
-
[key: string]: SimpleObject;
|
|
42
|
-
};
|
|
45
|
+
[key: string | number]: Primitive | Array<Primitive | null | undefined> | SimpleObject | {
|
|
46
|
+
[key: string | number]: SimpleObject;
|
|
47
|
+
} | undefined | null;
|
|
43
48
|
}): string;
|
|
44
49
|
declare function countObjectInnerLength(object: {
|
|
45
50
|
[key: string | number]: any;
|
|
@@ -47,18 +52,18 @@ declare function countObjectInnerLength(object: {
|
|
|
47
52
|
/**
|
|
48
53
|
* Check if the element is in viewport
|
|
49
54
|
*/
|
|
50
|
-
declare
|
|
51
|
-
/**
|
|
52
|
-
* Find a DOM element where an ad unit should be rendered to
|
|
53
|
-
*/
|
|
54
|
-
declare function getHtmlElement(id: string): HTMLElement | null;
|
|
55
|
+
declare function isElementVisible(element: HTMLElement, minVisiblePercent?: number): boolean;
|
|
55
56
|
declare function decodeSafeURL(url: string): string;
|
|
56
|
-
declare function getSafeURL(url
|
|
57
|
+
declare function getSafeURL(url?: string): string;
|
|
57
58
|
declare function parseURL(url: string): URL;
|
|
58
59
|
declare function encodeQueryString(url: string): string;
|
|
59
60
|
declare function injectScript(filename: string): void;
|
|
60
61
|
declare function injectStyleLink(filename: string): void;
|
|
61
62
|
declare function toBinaryStr(str: string): string;
|
|
63
|
+
/**
|
|
64
|
+
* Find a DOM element where an ad unit should be rendered to
|
|
65
|
+
*/
|
|
66
|
+
declare function getHtmlElement(id: string): HTMLElement | null;
|
|
62
67
|
/**
|
|
63
68
|
* Convert an HTML string into a list of nodes
|
|
64
69
|
*/
|
|
@@ -72,7 +77,7 @@ declare function createHtmlElement(type: string, attributes?: {
|
|
|
72
77
|
/**
|
|
73
78
|
* Insert HTML elements into DOM
|
|
74
79
|
*/
|
|
75
|
-
declare function insertHtmlElements(nodes: NodeListOf<Node>, appendTo?: Element
|
|
80
|
+
declare function insertHtmlElements(nodes: NodeListOf<Node>, appendTo?: Element): void;
|
|
76
81
|
/**
|
|
77
82
|
* Make a simple object which contains only attribute name and value
|
|
78
83
|
*/
|
|
@@ -99,6 +104,10 @@ declare function createLinkElement(href: string): HTMLLinkElement;
|
|
|
99
104
|
declare function createSvgElement(content: string, attributes: {
|
|
100
105
|
[key: string]: string;
|
|
101
106
|
}): SVGSVGElement;
|
|
107
|
+
/**
|
|
108
|
+
* Create an image element to use as a tracking pixel
|
|
109
|
+
*/
|
|
110
|
+
declare function createPixelElement(src: string): HTMLImageElement;
|
|
102
111
|
/**
|
|
103
112
|
* Append a new script element to the DOM head
|
|
104
113
|
*/
|
|
@@ -106,7 +115,7 @@ declare function insertJs(js: string, inline?: boolean): void;
|
|
|
106
115
|
/**
|
|
107
116
|
* Append a new style element to the DOM head
|
|
108
117
|
*/
|
|
109
|
-
declare
|
|
118
|
+
declare function insertCss(css: string, className?: string, external?: boolean): void;
|
|
110
119
|
/**
|
|
111
120
|
* Get screen sizes
|
|
112
121
|
*/
|
|
@@ -118,10 +127,6 @@ declare function getScreenSize(): {
|
|
|
118
127
|
* Get a random integer between min and max
|
|
119
128
|
*/
|
|
120
129
|
declare function getRandomInt(min?: number, max?: number): number;
|
|
121
|
-
/**
|
|
122
|
-
* Create an image element to use as a tracking pixel
|
|
123
|
-
*/
|
|
124
|
-
declare function createPixelElement(src: string): HTMLImageElement;
|
|
125
130
|
/**
|
|
126
131
|
* Implementation of Java's String.hashCode() method
|
|
127
132
|
*/
|
|
@@ -211,4 +216,4 @@ declare function formatPercent(num: number | string): string;
|
|
|
211
216
|
declare function formatWithSign(num: number | string, numString?: string): string;
|
|
212
217
|
declare function autoSizeText(el: HTMLElement, height: number, minFontSize: number, maxFontSize?: number): void;
|
|
213
218
|
|
|
214
|
-
export { areDiff, arrayDiff, arrayIntersect, autoSizeText, capitalize, countObjectInnerLength, createHtmlElement, createLinkElement, createPixelElement, createScriptElement, createStyleElement, createSvgElement, debounce, decodeSafeURL, deepCloneObject, encodeQueryString, extractNumbers, filterObjectKeysByValues, fireBlurEvent, fireEvent, fireInputEvent, flatHtmlAttributes, flattenObject, flattenObjectAsArray, formatNumber, formatNumberWithSign, formatPercent, formatWithSign, getFromObject, getHtmlElement, getNumericStyleProp, getObjectKeys, getRandomInt, getRandomItem, getRandomStr, getSafeURL, getScreenSize, hasObjectChanged, hashCode, injectScript, injectStyleLink, insertCss, insertHtmlElements, insertJs, isBool, isDefined, isElementVisible, isFn, isHTMLElement, isNullOrUndef, isNum, isObject, isStr, isString, isUndef, objectHasProp, objectToQueryString, onDOMReady, parseObjectPathStr, parseURL, removeSpaces, roundBigNum, roundDown, roundUp, sortByAlphabet, stringToHtmlElements, sumArray, throttle, toBinaryStr, toCamelCase, toPercent, toSnakeCase };
|
|
219
|
+
export { areDiff, arrayDiff, arrayIntersect, autoSizeText, capitalize, countObjectInnerLength, createHtmlElement, createLinkElement, createPixelElement, createScriptElement, createStyleElement, createSvgElement, debounce, decodeSafeURL, deepCloneObject, encodeQueryString, extractNumbers, filterObjectKeysByValues, fireBlurEvent, fireEvent, fireInputEvent, flatHtmlAttributes, flattenObject, flattenObjectAsArray, formatNumber, formatNumberWithSign, formatPercent, formatWithSign, getFromObject, getHtmlElement, getNumericStyleProp, getObjectKeys, getRandomInt, getRandomItem, getRandomStr, getSafeURL, getScreenSize, hasObjectChanged, hashCode, injectScript, injectStyleLink, insertCss, insertHtmlElements, insertJs, isBool, isDefined, isElementVisible, isFn, isHTMLElement, isNotEmptyString, isNullOrUndef, isNum, isObject, isStr, isString, isUndef, objectHasProp, objectToQueryString, onDOMReady, parseObjectPathStr, parseURL, removeSpaces, roundBigNum, roundDown, roundUp, sortByAlphabet, stringToHtmlElements, sumArray, throttle, toBinaryStr, toCamelCase, toPercent, toSnakeCase };
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ function debounce(fn, delay) {
|
|
|
4
4
|
let timeout;
|
|
5
5
|
return function(...args) {
|
|
6
6
|
clearTimeout(timeout);
|
|
7
|
-
timeout = setTimeout(() => fn.apply(
|
|
7
|
+
timeout = setTimeout(() => fn.apply(null, args), delay);
|
|
8
8
|
};
|
|
9
9
|
}
|
|
10
10
|
function throttle(fn, delay) {
|
|
@@ -30,6 +30,9 @@ function isStr(str) {
|
|
|
30
30
|
function isString(str) {
|
|
31
31
|
return typeof str === "string";
|
|
32
32
|
}
|
|
33
|
+
function isNotEmptyString(str) {
|
|
34
|
+
return typeof str === "string" && str.length;
|
|
35
|
+
}
|
|
33
36
|
function isHTMLElement(el) {
|
|
34
37
|
return el instanceof HTMLElement || el instanceof SVGElement;
|
|
35
38
|
}
|
|
@@ -77,7 +80,7 @@ function getObjectKeys(object) {
|
|
|
77
80
|
function objectToQueryString(object) {
|
|
78
81
|
return Object.entries(object).map(([k, v]) => {
|
|
79
82
|
if (Array.isArray(v)) {
|
|
80
|
-
return v.map((item) => `${k}[]=${encodeURIComponent(item)}`).join("&");
|
|
83
|
+
return v.map((item) => `${k}[]=${encodeURIComponent(item || "")}`).join("&");
|
|
81
84
|
} else if (isObject(v)) {
|
|
82
85
|
return `${k}=${encodeURIComponent(JSON.stringify(v))}`;
|
|
83
86
|
}
|
|
@@ -96,7 +99,7 @@ function countObjectInnerLength(object) {
|
|
|
96
99
|
return acc;
|
|
97
100
|
});
|
|
98
101
|
}
|
|
99
|
-
|
|
102
|
+
function isElementVisible(element, minVisiblePercent = 50) {
|
|
100
103
|
const elementCoords = element.getBoundingClientRect();
|
|
101
104
|
const elementHeight = elementCoords.height;
|
|
102
105
|
if (!elementHeight) {
|
|
@@ -113,9 +116,6 @@ const isElementVisible = (element, minVisiblePercent = 50) => {
|
|
|
113
116
|
elementBottom
|
|
114
117
|
);
|
|
115
118
|
return elementVisibleHeight / elementHeight * 100 >= minVisiblePercent;
|
|
116
|
-
};
|
|
117
|
-
function getHtmlElement(id) {
|
|
118
|
-
return document.getElementById(id);
|
|
119
119
|
}
|
|
120
120
|
function decodeSafeURL(url) {
|
|
121
121
|
try {
|
|
@@ -125,6 +125,7 @@ function decodeSafeURL(url) {
|
|
|
125
125
|
}
|
|
126
126
|
}
|
|
127
127
|
function getSafeURL(url) {
|
|
128
|
+
url = url ? url : location.href;
|
|
128
129
|
return encodeURI(decodeSafeURL(url));
|
|
129
130
|
}
|
|
130
131
|
function parseURL(url) {
|
|
@@ -156,6 +157,9 @@ function toBinaryStr(str) {
|
|
|
156
157
|
const charCodes = encoder.encode(str);
|
|
157
158
|
return String.fromCharCode(...charCodes);
|
|
158
159
|
}
|
|
160
|
+
function getHtmlElement(id) {
|
|
161
|
+
return document.getElementById(id);
|
|
162
|
+
}
|
|
159
163
|
function stringToHtmlElements(html) {
|
|
160
164
|
const template = createHtmlElement("div");
|
|
161
165
|
template.innerHTML = html.replace(/[\r\n]/gm, "").trim();
|
|
@@ -171,7 +175,7 @@ function createHtmlElement(type, attributes = {}) {
|
|
|
171
175
|
}
|
|
172
176
|
return element;
|
|
173
177
|
}
|
|
174
|
-
function insertHtmlElements(nodes, appendTo
|
|
178
|
+
function insertHtmlElements(nodes, appendTo) {
|
|
175
179
|
appendTo = appendTo || document.body;
|
|
176
180
|
const fragment = new DocumentFragment();
|
|
177
181
|
for (let i = 0; i < nodes.length; i++) {
|
|
@@ -190,7 +194,11 @@ function insertHtmlElements(nodes, appendTo = null) {
|
|
|
190
194
|
flatHtmlAttributes(node.attributes)
|
|
191
195
|
);
|
|
192
196
|
} else {
|
|
193
|
-
newNode = createScriptElement(
|
|
197
|
+
newNode = createScriptElement(
|
|
198
|
+
node.innerHTML,
|
|
199
|
+
true,
|
|
200
|
+
flatHtmlAttributes(node.attributes)
|
|
201
|
+
);
|
|
194
202
|
}
|
|
195
203
|
break;
|
|
196
204
|
case "style":
|
|
@@ -272,17 +280,26 @@ function createSvgElement(content, attributes) {
|
|
|
272
280
|
element.innerHTML = content;
|
|
273
281
|
return element;
|
|
274
282
|
}
|
|
283
|
+
function createPixelElement(src) {
|
|
284
|
+
const image = document.createElement("img");
|
|
285
|
+
image.src = src;
|
|
286
|
+
image.width = 1;
|
|
287
|
+
image.height = 1;
|
|
288
|
+
image.style.position = "absolute";
|
|
289
|
+
image.style.left = "-99999px";
|
|
290
|
+
return image;
|
|
291
|
+
}
|
|
275
292
|
function insertJs(js, inline = false) {
|
|
276
293
|
const element = createScriptElement(js, inline);
|
|
277
294
|
document.head.appendChild(element);
|
|
278
295
|
}
|
|
279
|
-
|
|
296
|
+
function insertCss(css, className, external = false) {
|
|
280
297
|
const element = external ? createLinkElement(css) : createStyleElement(css);
|
|
281
298
|
if (className) {
|
|
282
299
|
element.className = className;
|
|
283
300
|
}
|
|
284
301
|
document.head.appendChild(element);
|
|
285
|
-
}
|
|
302
|
+
}
|
|
286
303
|
function getScreenSize() {
|
|
287
304
|
let width, height;
|
|
288
305
|
if (window.screen) {
|
|
@@ -302,15 +319,6 @@ function getRandomInt(min = 0, max = 4294967295) {
|
|
|
302
319
|
max = Math.floor(max);
|
|
303
320
|
return Math.floor(Math.random() * (max - min)) + min;
|
|
304
321
|
}
|
|
305
|
-
function createPixelElement(src) {
|
|
306
|
-
const image = document.createElement("img");
|
|
307
|
-
image.src = src;
|
|
308
|
-
image.width = 1;
|
|
309
|
-
image.height = 1;
|
|
310
|
-
image.style.position = "absolute";
|
|
311
|
-
image.style.left = "-99999px";
|
|
312
|
-
return image;
|
|
313
|
-
}
|
|
314
322
|
function hashCode(str) {
|
|
315
323
|
let hash = 0, chr;
|
|
316
324
|
for (let i = 0; i < str.length; i++) {
|
|
@@ -600,6 +608,7 @@ exports.isDefined = isDefined;
|
|
|
600
608
|
exports.isElementVisible = isElementVisible;
|
|
601
609
|
exports.isFn = isFn;
|
|
602
610
|
exports.isHTMLElement = isHTMLElement;
|
|
611
|
+
exports.isNotEmptyString = isNotEmptyString;
|
|
603
612
|
exports.isNullOrUndef = isNullOrUndef;
|
|
604
613
|
exports.isNum = isNum;
|
|
605
614
|
exports.isObject = isObject;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { FlattenableObject, Primitive, SimpleObject } from \"./types\";\n\nexport function debounce(fn: Function, delay: number): () => void {\n let timeout: ReturnType<typeof setTimeout>;\n\n return function (this: any, ...args: any[]) {\n clearTimeout(timeout);\n timeout = setTimeout(() => fn.apply(this, args), delay);\n };\n}\n\nexport function throttle(fn: Function, delay: number) {\n let lastCall = 0;\n\n return function (...args: any[]) {\n const now = new Date().getTime();\n if (now - lastCall < delay) {\n return;\n }\n lastCall = now;\n fn(...args);\n };\n}\n\nexport function isObject(obj: any): obj is object {\n return !!obj && typeof obj === \"object\" && !Array.isArray(obj);\n}\n\nexport function isFn(fn: any): fn is Function {\n return typeof fn === \"function\";\n}\n\nexport function isStr(str: any): boolean {\n return typeof str === \"string\";\n}\n\nexport function isString(str: any): str is string {\n return typeof str === \"string\";\n}\n\nexport function isHTMLElement(el: any): el is HTMLElement {\n return el instanceof HTMLElement || el instanceof SVGElement;\n}\n\nexport function isNum(num: any): num is number {\n return typeof num === \"number\";\n}\n\nexport function isBool(bool: any): boolean {\n return typeof bool === \"boolean\";\n}\n\nexport function isUndef(val: any): val is undefined {\n return typeof val === \"undefined\";\n}\n\nexport function isNullOrUndef(value: unknown): value is null | undefined {\n return value === null || typeof value === \"undefined\";\n}\n\nexport function isDefined(val: any): boolean {\n return !isUndef(val);\n}\n\n/**\n * Returns an array containing all the elements of array1 that are not in array2 and vice-versa\n */\nexport function arrayDiff(\n array1: Array<Primitive | null | undefined>,\n array2: Array<Primitive | null | undefined>,\n): Array<Primitive | null | undefined> {\n return array1\n .filter((value) => !array2.includes(value))\n .concat(array2.filter((value: any) => !array1.includes(value)));\n}\n\n/**\n * Returns an array of elements present in array1 and array2\n */\nexport function arrayIntersect(\n array1: Array<Primitive | null | undefined>,\n array2: Array<Primitive | null | undefined>,\n) {\n return array1.filter((value) => array2.includes(value));\n}\n\nexport function deepCloneObject<Type>(object: Type): Type {\n return JSON.parse(JSON.stringify(object));\n}\n\nexport function getNumericStyleProp(prop: string, el: Element) {\n const styles: { [key: string]: any } = window.getComputedStyle(el);\n return !isNullOrUndef(styles[prop]) ? parseInt(styles[prop].slice(0, -2)) : 0;\n}\n\nexport function objectHasProp(\n obj: any,\n prop: string | number | symbol,\n): boolean {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n/**\n * Custom version of Object.keys()\n */\nexport function getObjectKeys(object: object): string[] {\n let key;\n let keys = [];\n\n for (key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n\n return keys;\n}\n\n/**\n * Works with primitive objects, see JSDoc @param\n */\nexport function objectToQueryString(object: {\n [key: string]: SimpleObject | { [key: string]: SimpleObject };\n}): string {\n return Object.entries(object)\n .map(([k, v]) => {\n if (Array.isArray(v)) {\n return v.map((item) => `${k}[]=${encodeURIComponent(item)}`).join(\"&\");\n } else if (isObject(v)) {\n return `${k}=${encodeURIComponent(JSON.stringify(v))}`;\n }\n return `${k}=${encodeURIComponent(v || \"\")}`;\n })\n .join(\"&\");\n}\n\nexport function countObjectInnerLength(object: {\n [key: string | number]: any;\n}) {\n const obj = Object.values(object);\n\n return obj.length === 1\n ? obj[0].length\n : obj.reduce((acc, cur) => {\n if (Array.isArray(acc)) {\n acc = acc.length;\n }\n if (cur) {\n acc += cur.length;\n }\n return acc;\n });\n}\n\n/**\n * Check if the element is in viewport\n */\nexport const isElementVisible = (\n element: HTMLElement,\n minVisiblePercent = 50,\n) => {\n const elementCoords = element.getBoundingClientRect();\n const elementHeight = elementCoords.height;\n\n if (!elementHeight) {\n return false;\n }\n\n const elementTop = elementCoords.top;\n const elementBottom = elementCoords.bottom;\n const viewPortHeight = window.innerHeight;\n\n const elementVisibleHeight =\n elementTop > 0\n ? // the element is in or below viewport\n viewPortHeight - elementTop\n : // the element is still in or above viewport\n elementBottom;\n\n return (elementVisibleHeight / elementHeight) * 100 >= minVisiblePercent;\n};\n\n/**\n * Find a DOM element where an ad unit should be rendered to\n */\nexport function getHtmlElement(id: string) {\n return document.getElementById(id);\n}\n\nexport function decodeSafeURL(url: string): string {\n try {\n return decodeURI(url);\n } catch (e) {\n return url;\n }\n}\n\nexport function getSafeURL(url: string): string {\n return encodeURI(decodeSafeURL(url));\n}\n\nexport function parseURL(url: string): URL {\n return new URL(url);\n}\n\nexport function encodeQueryString(url: string): string {\n if (url.length > 0) {\n const index = url.indexOf(\"?\");\n if (index >= 0) {\n return url.substr(0, index) + parseURL(url).search;\n }\n }\n\n return url;\n}\n\nexport function injectScript(filename: string): void {\n const script = document.createElement(\"script\");\n script.src = filename;\n script.async = true;\n document.head.appendChild(script);\n}\n\nexport function injectStyleLink(filename: string): void {\n const link = document.createElement(\"link\");\n link.rel = \"stylesheet\";\n link.href = filename;\n document.head.appendChild(link);\n}\n\nexport function toBinaryStr(str: string) {\n const encoder = new TextEncoder();\n // 1: split the UTF-16 string into an array of bytes\n const charCodes = encoder.encode(str);\n // 2: concatenate byte data to create a binary string\n return String.fromCharCode(...charCodes);\n}\n\n/**\n * Convert an HTML string into a list of nodes\n */\nexport function stringToHtmlElements(html: string): NodeListOf<ChildNode> {\n const template = createHtmlElement(\"div\");\n template.innerHTML = html.replace(/[\\r\\n]/gm, \"\").trim();\n return template.childNodes;\n}\n\n/**\n * Creates an HTML element and sets attributes\n */\nexport function createHtmlElement(\n type: string,\n attributes: { [key: string]: string } = {},\n): HTMLElement {\n const attrs = getObjectKeys(attributes);\n const element = document.createElement(type);\n\n if (attrs.length) {\n attrs.forEach((name) => {\n element.setAttribute(name, attributes[name]);\n });\n }\n\n return element;\n}\n\n/**\n * Insert HTML elements into DOM\n */\nexport function insertHtmlElements(\n nodes: NodeListOf<Node>,\n appendTo: Element | null = null,\n) {\n appendTo = appendTo || document.body;\n\n const fragment = new DocumentFragment();\n\n for (let i = 0; i < nodes.length; i++) {\n // skip non tags and non text, 3 for text nodes\n if (!isHTMLElement(nodes[i]) && nodes[i].nodeType !== 3) {\n continue;\n }\n\n const node = nodes[i] as HTMLElement;\n let newNode;\n\n switch (node.nodeName.toLowerCase()) {\n case \"script\":\n const src = node.getAttribute(\"src\");\n\n if (!isNullOrUndef(src) && src.length > 0) {\n newNode = createScriptElement(\n src,\n false,\n flatHtmlAttributes(node.attributes),\n );\n } else {\n newNode = createScriptElement(node.innerHTML, true);\n }\n break;\n\n case \"style\":\n newNode = createStyleElement(node.textContent);\n break;\n\n case \"svg\":\n newNode = createSvgElement(\n node.innerHTML,\n flatHtmlAttributes(node.attributes),\n );\n break;\n\n case \"#text\":\n newNode = document.createTextNode(node.textContent ?? \"\");\n break;\n\n default:\n newNode = createHtmlElement(\n node.tagName,\n flatHtmlAttributes(node.attributes),\n );\n\n // recursive\n if (node.childNodes.length) {\n insertHtmlElements(node.childNodes, newNode);\n } else {\n newNode.innerHTML = node.innerHTML;\n }\n }\n\n fragment.appendChild(newNode);\n }\n\n appendTo.appendChild(fragment);\n}\n\n/**\n * Make a simple object which contains only attribute name and value\n */\nexport function flatHtmlAttributes(attributes?: NamedNodeMap) {\n let flatAttributes: { [key: string]: string } = {};\n\n if (!isNullOrUndef(attributes)) {\n for (let i = 0; i < attributes.length; i++) {\n let attr = attributes[i];\n\n if (!isUndef(attr)) {\n flatAttributes[attr.name] = attr.value;\n }\n }\n }\n\n return flatAttributes;\n}\n\n/**\n * Create a <script> element\n */\nexport function createScriptElement(\n js: string,\n inline: boolean = false,\n attributes: { [key: string]: string } = {},\n) {\n const attrs = isObject(attributes) ? getObjectKeys(attributes) : [];\n const element = createHtmlElement(\"script\") as HTMLScriptElement;\n\n if (attrs.length) {\n attrs.forEach((name) => {\n element.setAttribute(name, attributes[name]);\n });\n }\n\n if (inline) {\n element.appendChild(document.createTextNode(js));\n } else {\n element.async = true;\n element.src = js;\n }\n\n return element;\n}\n\n/**\n * Create a <style> element\n */\nexport function createStyleElement(css: string | null) {\n const element = createHtmlElement(\"style\");\n\n if (css) {\n element.appendChild(document.createTextNode(css));\n }\n\n return element;\n}\n\n/**\n * Create a <link> element\n */\nexport function createLinkElement(href: string) {\n const element = createHtmlElement(\"link\") as HTMLLinkElement;\n\n element.rel = \"stylesheet\";\n element.href = href;\n\n return element;\n}\n\n/**\n * Create svg elements\n */\nexport function createSvgElement(\n content: string,\n attributes: { [key: string]: string },\n) {\n const attrs = getObjectKeys(attributes);\n const element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n\n if (attrs.length) {\n attrs.forEach((name) => {\n element.setAttribute(name, attributes[name]);\n });\n }\n\n element.innerHTML = content;\n\n return element;\n}\n\n/**\n * Append a new script element to the DOM head\n */\nexport function insertJs(js: string, inline = false) {\n const element = createScriptElement(js, inline);\n\n document.head.appendChild(element);\n}\n\n/**\n * Append a new style element to the DOM head\n */\nexport const insertCss = (\n css: string,\n className?: string,\n external = false,\n) => {\n const element = external ? createLinkElement(css) : createStyleElement(css);\n\n if (className) {\n element.className = className;\n }\n\n document.head.appendChild(element);\n};\n\n/**\n * Get screen sizes\n */\nexport function getScreenSize(): { width: number; height: number } {\n let width, height;\n\n if (window.screen) {\n width = screen.width;\n height = screen.height;\n } else {\n width = window.innerWidth;\n height = window.innerHeight;\n }\n\n return {\n width: width,\n height: height,\n };\n}\n\n/**\n * Get a random integer between min and max\n */\nexport function getRandomInt(min = 0, max = 4294967295) {\n min = Math.ceil(min);\n max = Math.floor(max);\n\n return Math.floor(Math.random() * (max - min)) + min;\n}\n\n/**\n * Create an image element to use as a tracking pixel\n */\nexport function createPixelElement(src: string) {\n const image = document.createElement(\"img\");\n\n image.src = src;\n image.width = 1;\n image.height = 1;\n image.style.position = \"absolute\";\n image.style.left = \"-99999px\";\n\n return image;\n}\n\n/**\n * Implementation of Java's String.hashCode() method\n */\nexport function hashCode(str: string) {\n let hash = 0,\n chr;\n\n for (let i = 0; i < str.length; i++) {\n chr = str.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0; // convert to 32bit integer\n }\n\n return hash >>> 0;\n}\n\n/**\n * Executes a callback as soon as DOM is interactive\n */\nexport function onDOMReady(callback: Function, ...args: any[]) {\n if (\n document.readyState === \"interactive\" ||\n document.readyState === \"complete\"\n ) {\n callback(...args);\n } else {\n document.addEventListener(\"DOMContentLoaded\", () => callback(...args));\n }\n}\n\n/**\n * Calculate the percentage of two values\n *\n * @param a\n * @param b\n * @return number\n */\nexport function toPercent(a: number, b: number): number {\n return b > 0 ? (a / b) * 100 : 0;\n}\n\n/**\n * Make a camelCase string\n *\n * @param string\n * @return string\n */\nexport function toCamelCase(string: string): string {\n return string\n .split(new RegExp(/[-_.]/))\n .reduce(\n (a: string, b: string) => a + b.charAt(0).toUpperCase() + b.slice(1),\n );\n}\n\n/**\n * Make a snake_case string\n *\n * @param string\n * @return string\n */\nexport function toSnakeCase(string: string): string {\n return toCamelCase(string)\n .replace(/(^[A-Z])?([A-Z])/gm, \"$1_$2\")\n .toLowerCase();\n}\n\n/**\n * Transform the first letter of the given string to the upper case\n *\n * @param string\n * @return string\n */\nexport function capitalize(string: string): string {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\n/**\n * Registry independent string sorting\n *\n * @param first\n * @param second\n */\nexport function sortByAlphabet(first: string, second: string): number {\n return first.toLowerCase() > second.toLowerCase() ? 1 : -1;\n}\n\n/**\n * @param length\n * @return string of max length 100\n */\nexport function getRandomStr(length?: number): string {\n length = length ? (length > 100 ? 100 : length) : 10;\n\n let str = Math.random().toString(36).substring(2);\n\n while (str.length < length) {\n str += Math.random().toString(36).substring(2);\n }\n\n const result = str.slice(-length);\n return isNaN(Number(result)) ? result : getRandomStr(length);\n}\n\nexport function getRandomItem(items: any[]): any {\n return items[Math.floor(Math.random() * items.length)];\n}\n\n/**\n * Summarize elements of the given array\n *\n * @param values\n * @return number | string - a summary of all the numbers in the array or an empty string if\n * there was only NaNs\n */\nexport function sumArray(values: Array<any>): number | string {\n if (values.every((value: any) => isNaN(value))) {\n return \"\";\n } else {\n return values.reduce((sum: any, curr: any) => {\n const value = Number(curr);\n\n if (!isNaN(value)) {\n return sum + value;\n } else {\n return sum;\n }\n }, 0);\n }\n}\n\n/**\n * Returns an array of the object keys which values are not present in filter\n *\n * @param obj\n * @param values\n */\nexport function filterObjectKeysByValues(\n obj: { [key: string]: any },\n values: Array<string | number | boolean | null | undefined>,\n): string[] {\n values = Array.isArray(values) ? values : Array(values);\n\n const keys = [];\n\n for (const key in obj) {\n if (!values.includes(obj[key])) {\n keys.push(key);\n }\n }\n\n return keys;\n}\n\nexport function getFromObject(object: object, key: string): any {\n return key.split(\".\").reduce((a: any, b: any) => {\n return a[b];\n }, object);\n}\n\nexport function fireBlurEvent(\n element: string | Element | null,\n delay: number = 0,\n): void {\n fireEvent(\"blur\", element, delay);\n}\n\nexport function fireInputEvent(\n element: string | Element | null,\n delay: number = 0,\n): void {\n fireEvent(\"input\", element, delay);\n}\n\nexport function fireEvent(\n eventName: string,\n element: string | Element | null,\n delay: number = 0,\n): void {\n setTimeout(() => {\n if (isString(element)) {\n element = document.querySelector(element);\n }\n\n if (!isNullOrUndef(element)) {\n element.dispatchEvent(\n new Event(eventName, {\n bubbles: true,\n }),\n );\n }\n }, delay);\n}\n\nexport function hasObjectChanged(\n object: { [key: string]: any },\n values: any[],\n): boolean {\n let hasChanged = false;\n\n for (const key in object) {\n let oldVal = object[key];\n let [, newVal] = values.find(([newKey]) => key === newKey);\n\n if (isObject(oldVal)) {\n if (!isObject(newVal)) {\n hasChanged = true;\n } else {\n hasChanged = hasObjectChanged(oldVal, Object.entries(newVal));\n }\n } else if (Array.isArray(newVal) || Array.isArray(oldVal)) {\n newVal = Array.isArray(newVal) ? newVal : [];\n oldVal = Array.isArray(oldVal) ? oldVal : [];\n\n hasChanged = arrayDiff(newVal, oldVal).length > 0;\n } else {\n hasChanged = areDiff(newVal, oldVal);\n }\n\n if (hasChanged) {\n break;\n }\n }\n\n return hasChanged;\n}\n\nexport function roundBigNum(number: number): number {\n const digitsNum = Math.trunc(number).toString().length;\n\n let roundTo = 0;\n switch (true) {\n case digitsNum > 2 && digitsNum < 5:\n roundTo = 100;\n break;\n case digitsNum >= 5:\n roundTo = 10000;\n break;\n }\n\n return roundTo ? Math.round(number / roundTo) * roundTo : number;\n}\n\nexport function extractNumbers(value: any): string {\n if (!isStr(value) && !isNum(value)) {\n return \"\";\n }\n return value.toString().replace(/[^0-9]/g, \"\");\n}\n\nexport function removeSpaces(value: any): string {\n if (!isStr(value) && !isNum(value)) {\n return \"\";\n }\n return value.toString().replace(/\\s/g, \"\");\n}\n\nexport function roundUp(num: number, precision: number): number {\n const multiplier = Number(\"1\".padEnd(precision + 1, \"0\"));\n return Math.ceil(num * multiplier) / multiplier;\n}\n\nexport function roundDown(num: number, precision: number): number {\n const multiplier = Number(\"1\".padEnd(precision + 1, \"0\"));\n return Math.floor(num * multiplier) / multiplier;\n}\n\nexport function areDiff(\n val1?: Primitive | null,\n val2?: Primitive | null,\n strict?: boolean,\n): boolean {\n if (strict) {\n return val1 !== val2;\n }\n\n // at least one value is not empty\n if (Boolean(val1) || Boolean(val2)) {\n return val1 != val2;\n }\n\n // both empty, but not equally empty!\n // each one may be one of: empty string, null or undefined\n return false;\n}\n\nexport function flattenObject(obj: FlattenableObject, prefix = \"\") {\n return Object.keys(obj).reduce((acc, k) => {\n const pre = prefix.length ? prefix + \".\" : \"\";\n if (isObject(obj[k]) || Array.isArray(obj[k])) {\n Object.assign(acc, flattenObject(obj[k], pre + k));\n } else {\n acc[pre + k] = obj[k];\n }\n return acc;\n }, {} as FlattenableObject);\n}\n\nexport function flattenObjectAsArray(obj: FlattenableObject) {\n const result: FlattenableObject = {};\n const flat = flattenObject(obj);\n Object.keys(flat).forEach((key) => {\n const newKey = key.replaceAll(/\\.([^.]+)/g, \"[$1]\");\n result[newKey] = flat[key];\n });\n\n return result;\n}\n\nexport function parseObjectPathStr(pathStr: string): string[] {\n const pathParts = pathStr.replace(/\\[/g, \".\").replace(/\\]/g, \"\").split(\".\");\n\n if (pathParts.length > 1 && pathParts[1].includes(\"[\")) {\n return [pathParts[0], ...parseObjectPathStr(pathParts[1])];\n }\n\n return pathParts;\n}\n\nexport function formatNumber(\n num: number | string,\n fractionDigits?: number,\n): string {\n fractionDigits = isNullOrUndef(fractionDigits) ? 2 : fractionDigits;\n return new Intl.NumberFormat(\"ru-RU\", {\n style: \"decimal\",\n minimumFractionDigits: fractionDigits,\n maximumFractionDigits: fractionDigits,\n })\n .format(Number(num))\n .replace(\",\", \".\")\n .replace(/\\u00A0/g, \" \"); // charCode 160, White-space\n}\n\nexport function formatNumberWithSign(\n num: number | string,\n fractionDigits?: number,\n): string {\n return formatWithSign(num, formatNumber(num, fractionDigits));\n}\n\nexport function formatPercent(num: number | string): string {\n return formatNumber(num) + \"%\";\n}\n\nexport function formatWithSign(\n num: number | string,\n numString?: string,\n): string {\n numString = numString ? numString : num.toString();\n return (Number(num) < 0 ? \"\" : \"+\") + numString;\n}\n\nexport function autoSizeText(\n el: HTMLElement,\n height: number,\n minFontSize: number,\n maxFontSize: number = 50,\n) {\n let attempts = 30;\n\n const resizeText = () => {\n if (getTextHeight() === 0) {\n return;\n }\n while (attempts && getTextHeight() > height) {\n attempts--;\n reduceText();\n }\n while (attempts && getTextHeight() < height) {\n attempts--;\n enlargeText();\n }\n };\n\n const reduceText = () => {\n const fontSize = getNumericStyleProp(\"fontSize\", el);\n const newFontSize = fontSize - 1;\n if (fontSize > 1 && newFontSize >= minFontSize) {\n el.style.fontSize = `${newFontSize}px`;\n }\n };\n\n const enlargeText = () => {\n const fontSize = getNumericStyleProp(\"fontSize\", el);\n const newFontSize = fontSize + 1;\n if (newFontSize <= maxFontSize) {\n el.style.fontSize = `${newFontSize}px`;\n }\n };\n\n const getTextHeight = () =>\n Math.floor(\n el.scrollHeight -\n getNumericStyleProp(\"paddingTop\", el) -\n getNumericStyleProp(\"paddingBottom\", el),\n );\n\n resizeText();\n}\n"],"names":[],"mappings":";;AAEgB,SAAA,QAAA,CAAS,IAAc,KAA2B,EAAA;AAChE,EAAI,IAAA,OAAA,CAAA;AAEJ,EAAA,OAAO,YAAwB,IAAa,EAAA;AAC1C,IAAA,YAAA,CAAa,OAAO,CAAA,CAAA;AACpB,IAAA,OAAA,GAAU,WAAW,MAAM,EAAA,CAAG,MAAM,IAAM,EAAA,IAAI,GAAG,KAAK,CAAA,CAAA;AAAA,GACxD,CAAA;AACF,CAAA;AAEgB,SAAA,QAAA,CAAS,IAAc,KAAe,EAAA;AACpD,EAAA,IAAI,QAAW,GAAA,CAAA,CAAA;AAEf,EAAA,OAAO,YAAa,IAAa,EAAA;AAC/B,IAAA,MAAM,GAAM,GAAA,iBAAA,IAAI,IAAK,EAAA,EAAE,OAAQ,EAAA,CAAA;AAC/B,IAAI,IAAA,GAAA,GAAM,WAAW,KAAO,EAAA;AAC1B,MAAA,OAAA;AAAA,KACF;AACA,IAAW,QAAA,GAAA,GAAA,CAAA;AACX,IAAA,EAAA,CAAG,GAAG,IAAI,CAAA,CAAA;AAAA,GACZ,CAAA;AACF,CAAA;AAEO,SAAS,SAAS,GAAyB,EAAA;AAChD,EAAO,OAAA,CAAC,CAAC,GAAO,IAAA,OAAO,QAAQ,QAAY,IAAA,CAAC,KAAM,CAAA,OAAA,CAAQ,GAAG,CAAA,CAAA;AAC/D,CAAA;AAEO,SAAS,KAAK,EAAyB,EAAA;AAC5C,EAAA,OAAO,OAAO,EAAO,KAAA,UAAA,CAAA;AACvB,CAAA;AAEO,SAAS,MAAM,GAAmB,EAAA;AACvC,EAAA,OAAO,OAAO,GAAQ,KAAA,QAAA,CAAA;AACxB,CAAA;AAEO,SAAS,SAAS,GAAyB,EAAA;AAChD,EAAA,OAAO,OAAO,GAAQ,KAAA,QAAA,CAAA;AACxB,CAAA;AAEO,SAAS,cAAc,EAA4B,EAAA;AACxD,EAAO,OAAA,EAAA,YAAc,eAAe,EAAc,YAAA,UAAA,CAAA;AACpD,CAAA;AAEO,SAAS,MAAM,GAAyB,EAAA;AAC7C,EAAA,OAAO,OAAO,GAAQ,KAAA,QAAA,CAAA;AACxB,CAAA;AAEO,SAAS,OAAO,IAAoB,EAAA;AACzC,EAAA,OAAO,OAAO,IAAS,KAAA,SAAA,CAAA;AACzB,CAAA;AAEO,SAAS,QAAQ,GAA4B,EAAA;AAClD,EAAA,OAAO,OAAO,GAAQ,KAAA,WAAA,CAAA;AACxB,CAAA;AAEO,SAAS,cAAc,KAA2C,EAAA;AACvE,EAAO,OAAA,KAAA,KAAU,IAAQ,IAAA,OAAO,KAAU,KAAA,WAAA,CAAA;AAC5C,CAAA;AAEO,SAAS,UAAU,GAAmB,EAAA;AAC3C,EAAO,OAAA,CAAC,QAAQ,GAAG,CAAA,CAAA;AACrB,CAAA;AAKgB,SAAA,SAAA,CACd,QACA,MACqC,EAAA;AACrC,EAAO,OAAA,MAAA,CACJ,OAAO,CAAC,KAAA,KAAU,CAAC,MAAO,CAAA,QAAA,CAAS,KAAK,CAAC,CAAA,CACzC,OAAO,MAAO,CAAA,MAAA,CAAO,CAAC,KAAe,KAAA,CAAC,OAAO,QAAS,CAAA,KAAK,CAAC,CAAC,CAAA,CAAA;AAClE,CAAA;AAKgB,SAAA,cAAA,CACd,QACA,MACA,EAAA;AACA,EAAA,OAAO,OAAO,MAAO,CAAA,CAAC,UAAU,MAAO,CAAA,QAAA,CAAS,KAAK,CAAC,CAAA,CAAA;AACxD,CAAA;AAEO,SAAS,gBAAsB,MAAoB,EAAA;AACxD,EAAA,OAAO,IAAK,CAAA,KAAA,CAAM,IAAK,CAAA,SAAA,CAAU,MAAM,CAAC,CAAA,CAAA;AAC1C,CAAA;AAEgB,SAAA,mBAAA,CAAoB,MAAc,EAAa,EAAA;AAC7D,EAAM,MAAA,MAAA,GAAiC,MAAO,CAAA,gBAAA,CAAiB,EAAE,CAAA,CAAA;AACjE,EAAA,OAAO,CAAC,aAAA,CAAc,MAAO,CAAA,IAAI,CAAC,CAAI,GAAA,QAAA,CAAS,MAAO,CAAA,IAAI,CAAE,CAAA,KAAA,CAAM,CAAG,EAAA,CAAA,CAAE,CAAC,CAAI,GAAA,CAAA,CAAA;AAC9E,CAAA;AAEgB,SAAA,aAAA,CACd,KACA,IACS,EAAA;AACT,EAAA,OAAO,MAAO,CAAA,SAAA,CAAU,cAAe,CAAA,IAAA,CAAK,KAAK,IAAI,CAAA,CAAA;AACvD,CAAA;AAKO,SAAS,cAAc,MAA0B,EAAA;AACtD,EAAI,IAAA,GAAA,CAAA;AACJ,EAAA,IAAI,OAAO,EAAC,CAAA;AAEZ,EAAA,KAAK,OAAO,MAAQ,EAAA;AAClB,IAAA,IAAI,OAAO,SAAU,CAAA,cAAA,CAAe,IAAK,CAAA,MAAA,EAAQ,GAAG,CAAG,EAAA;AACrD,MAAA,IAAA,CAAK,KAAK,GAAG,CAAA,CAAA;AAAA,KACf;AAAA,GACF;AAEA,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;AAKO,SAAS,oBAAoB,MAEzB,EAAA;AACT,EAAO,OAAA,MAAA,CAAO,QAAQ,MAAM,CAAA,CACzB,IAAI,CAAC,CAAC,CAAG,EAAA,CAAC,CAAM,KAAA;AACf,IAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,CAAC,CAAG,EAAA;AACpB,MAAA,OAAO,CAAE,CAAA,GAAA,CAAI,CAAC,IAAA,KAAS,CAAG,EAAA,CAAC,CAAM,GAAA,EAAA,kBAAA,CAAmB,IAAI,CAAC,CAAE,CAAA,CAAA,CAAE,KAAK,GAAG,CAAA,CAAA;AAAA,KACvE,MAAA,IAAW,QAAS,CAAA,CAAC,CAAG,EAAA;AACtB,MAAO,OAAA,CAAA,EAAG,CAAC,CAAI,CAAA,EAAA,kBAAA,CAAmB,KAAK,SAAU,CAAA,CAAC,CAAC,CAAC,CAAA,CAAA,CAAA;AAAA,KACtD;AACA,IAAA,OAAO,GAAG,CAAC,CAAA,CAAA,EAAI,kBAAmB,CAAA,CAAA,IAAK,EAAE,CAAC,CAAA,CAAA,CAAA;AAAA,GAC3C,CACA,CAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AACb,CAAA;AAEO,SAAS,uBAAuB,MAEpC,EAAA;AACD,EAAM,MAAA,GAAA,GAAM,MAAO,CAAA,MAAA,CAAO,MAAM,CAAA,CAAA;AAEhC,EAAO,OAAA,GAAA,CAAI,MAAW,KAAA,CAAA,GAClB,GAAI,CAAA,CAAC,CAAE,CAAA,MAAA,GACP,GAAI,CAAA,MAAA,CAAO,CAAC,GAAA,EAAK,GAAQ,KAAA;AACvB,IAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,GAAG,CAAG,EAAA;AACtB,MAAA,GAAA,GAAM,GAAI,CAAA,MAAA,CAAA;AAAA,KACZ;AACA,IAAA,IAAI,GAAK,EAAA;AACP,MAAA,GAAA,IAAO,GAAI,CAAA,MAAA,CAAA;AAAA,KACb;AACA,IAAO,OAAA,GAAA,CAAA;AAAA,GACR,CAAA,CAAA;AACP,CAAA;AAKO,MAAM,gBAAmB,GAAA,CAC9B,OACA,EAAA,iBAAA,GAAoB,EACjB,KAAA;AACH,EAAM,MAAA,aAAA,GAAgB,QAAQ,qBAAsB,EAAA,CAAA;AACpD,EAAA,MAAM,gBAAgB,aAAc,CAAA,MAAA,CAAA;AAEpC,EAAA,IAAI,CAAC,aAAe,EAAA;AAClB,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAEA,EAAA,MAAM,aAAa,aAAc,CAAA,GAAA,CAAA;AACjC,EAAA,MAAM,gBAAgB,aAAc,CAAA,MAAA,CAAA;AACpC,EAAA,MAAM,iBAAiB,MAAO,CAAA,WAAA,CAAA;AAE9B,EAAA,MAAM,uBACJ,UAAa,GAAA,CAAA;AAAA;AAAA,IAET,cAAiB,GAAA,UAAA;AAAA;AAAA;AAAA,IAEjB,aAAA;AAAA,GAAA,CAAA;AAEN,EAAQ,OAAA,oBAAA,GAAuB,gBAAiB,GAAO,IAAA,iBAAA,CAAA;AACzD,EAAA;AAKO,SAAS,eAAe,EAAY,EAAA;AACzC,EAAO,OAAA,QAAA,CAAS,eAAe,EAAE,CAAA,CAAA;AACnC,CAAA;AAEO,SAAS,cAAc,GAAqB,EAAA;AACjD,EAAI,IAAA;AACF,IAAA,OAAO,UAAU,GAAG,CAAA,CAAA;AAAA,WACb,CAAG,EAAA;AACV,IAAO,OAAA,GAAA,CAAA;AAAA,GACT;AACF,CAAA;AAEO,SAAS,WAAW,GAAqB,EAAA;AAC9C,EAAO,OAAA,SAAA,CAAU,aAAc,CAAA,GAAG,CAAC,CAAA,CAAA;AACrC,CAAA;AAEO,SAAS,SAAS,GAAkB,EAAA;AACzC,EAAO,OAAA,IAAI,IAAI,GAAG,CAAA,CAAA;AACpB,CAAA;AAEO,SAAS,kBAAkB,GAAqB,EAAA;AACrD,EAAI,IAAA,GAAA,CAAI,SAAS,CAAG,EAAA;AAClB,IAAM,MAAA,KAAA,GAAQ,GAAI,CAAA,OAAA,CAAQ,GAAG,CAAA,CAAA;AAC7B,IAAA,IAAI,SAAS,CAAG,EAAA;AACd,MAAA,OAAO,IAAI,MAAO,CAAA,CAAA,EAAG,KAAK,CAAI,GAAA,QAAA,CAAS,GAAG,CAAE,CAAA,MAAA,CAAA;AAAA,KAC9C;AAAA,GACF;AAEA,EAAO,OAAA,GAAA,CAAA;AACT,CAAA;AAEO,SAAS,aAAa,QAAwB,EAAA;AACnD,EAAM,MAAA,MAAA,GAAS,QAAS,CAAA,aAAA,CAAc,QAAQ,CAAA,CAAA;AAC9C,EAAA,MAAA,CAAO,GAAM,GAAA,QAAA,CAAA;AACb,EAAA,MAAA,CAAO,KAAQ,GAAA,IAAA,CAAA;AACf,EAAS,QAAA,CAAA,IAAA,CAAK,YAAY,MAAM,CAAA,CAAA;AAClC,CAAA;AAEO,SAAS,gBAAgB,QAAwB,EAAA;AACtD,EAAM,MAAA,IAAA,GAAO,QAAS,CAAA,aAAA,CAAc,MAAM,CAAA,CAAA;AAC1C,EAAA,IAAA,CAAK,GAAM,GAAA,YAAA,CAAA;AACX,EAAA,IAAA,CAAK,IAAO,GAAA,QAAA,CAAA;AACZ,EAAS,QAAA,CAAA,IAAA,CAAK,YAAY,IAAI,CAAA,CAAA;AAChC,CAAA;AAEO,SAAS,YAAY,GAAa,EAAA;AACvC,EAAM,MAAA,OAAA,GAAU,IAAI,WAAY,EAAA,CAAA;AAEhC,EAAM,MAAA,SAAA,GAAY,OAAQ,CAAA,MAAA,CAAO,GAAG,CAAA,CAAA;AAEpC,EAAO,OAAA,MAAA,CAAO,YAAa,CAAA,GAAG,SAAS,CAAA,CAAA;AACzC,CAAA;AAKO,SAAS,qBAAqB,IAAqC,EAAA;AACxE,EAAM,MAAA,QAAA,GAAW,kBAAkB,KAAK,CAAA,CAAA;AACxC,EAAA,QAAA,CAAS,YAAY,IAAK,CAAA,OAAA,CAAQ,UAAY,EAAA,EAAE,EAAE,IAAK,EAAA,CAAA;AACvD,EAAA,OAAO,QAAS,CAAA,UAAA,CAAA;AAClB,CAAA;AAKO,SAAS,iBACd,CAAA,IAAA,EACA,UAAwC,GAAA,EAC3B,EAAA;AACb,EAAM,MAAA,KAAA,GAAQ,cAAc,UAAU,CAAA,CAAA;AACtC,EAAM,MAAA,OAAA,GAAU,QAAS,CAAA,aAAA,CAAc,IAAI,CAAA,CAAA;AAE3C,EAAA,IAAI,MAAM,MAAQ,EAAA;AAChB,IAAM,KAAA,CAAA,OAAA,CAAQ,CAAC,IAAS,KAAA;AACtB,MAAA,OAAA,CAAQ,YAAa,CAAA,IAAA,EAAM,UAAW,CAAA,IAAI,CAAC,CAAA,CAAA;AAAA,KAC5C,CAAA,CAAA;AAAA,GACH;AAEA,EAAO,OAAA,OAAA,CAAA;AACT,CAAA;AAKgB,SAAA,kBAAA,CACd,KACA,EAAA,QAAA,GAA2B,IAC3B,EAAA;AACA,EAAA,QAAA,GAAW,YAAY,QAAS,CAAA,IAAA,CAAA;AAEhC,EAAM,MAAA,QAAA,GAAW,IAAI,gBAAiB,EAAA,CAAA;AAEtC,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,KAAA,CAAM,QAAQ,CAAK,EAAA,EAAA;AAErC,IAAI,IAAA,CAAC,aAAc,CAAA,KAAA,CAAM,CAAC,CAAC,KAAK,KAAM,CAAA,CAAC,CAAE,CAAA,QAAA,KAAa,CAAG,EAAA;AACvD,MAAA,SAAA;AAAA,KACF;AAEA,IAAM,MAAA,IAAA,GAAO,MAAM,CAAC,CAAA,CAAA;AACpB,IAAI,IAAA,OAAA,CAAA;AAEJ,IAAQ,QAAA,IAAA,CAAK,QAAS,CAAA,WAAA,EAAe;AAAA,MACnC,KAAK,QAAA;AACH,QAAM,MAAA,GAAA,GAAM,IAAK,CAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AAEnC,QAAA,IAAI,CAAC,aAAc,CAAA,GAAG,CAAK,IAAA,GAAA,CAAI,SAAS,CAAG,EAAA;AACzC,UAAU,OAAA,GAAA,mBAAA;AAAA,YACR,GAAA;AAAA,YACA,KAAA;AAAA,YACA,kBAAA,CAAmB,KAAK,UAAU,CAAA;AAAA,WACpC,CAAA;AAAA,SACK,MAAA;AACL,UAAU,OAAA,GAAA,mBAAA,CAAoB,IAAK,CAAA,SAAA,EAAW,IAAI,CAAA,CAAA;AAAA,SACpD;AACA,QAAA,MAAA;AAAA,MAEF,KAAK,OAAA;AACH,QAAU,OAAA,GAAA,kBAAA,CAAmB,KAAK,WAAW,CAAA,CAAA;AAC7C,QAAA,MAAA;AAAA,MAEF,KAAK,KAAA;AACH,QAAU,OAAA,GAAA,gBAAA;AAAA,UACR,IAAK,CAAA,SAAA;AAAA,UACL,kBAAA,CAAmB,KAAK,UAAU,CAAA;AAAA,SACpC,CAAA;AACA,QAAA,MAAA;AAAA,MAEF,KAAK,OAAA;AACH,QAAA,OAAA,GAAU,QAAS,CAAA,cAAA,CAAe,IAAK,CAAA,WAAA,IAAe,EAAE,CAAA,CAAA;AACxD,QAAA,MAAA;AAAA,MAEF;AACE,QAAU,OAAA,GAAA,iBAAA;AAAA,UACR,IAAK,CAAA,OAAA;AAAA,UACL,kBAAA,CAAmB,KAAK,UAAU,CAAA;AAAA,SACpC,CAAA;AAGA,QAAI,IAAA,IAAA,CAAK,WAAW,MAAQ,EAAA;AAC1B,UAAmB,kBAAA,CAAA,IAAA,CAAK,YAAY,OAAO,CAAA,CAAA;AAAA,SACtC,MAAA;AACL,UAAA,OAAA,CAAQ,YAAY,IAAK,CAAA,SAAA,CAAA;AAAA,SAC3B;AAAA,KACJ;AAEA,IAAA,QAAA,CAAS,YAAY,OAAO,CAAA,CAAA;AAAA,GAC9B;AAEA,EAAA,QAAA,CAAS,YAAY,QAAQ,CAAA,CAAA;AAC/B,CAAA;AAKO,SAAS,mBAAmB,UAA2B,EAAA;AAC5D,EAAA,IAAI,iBAA4C,EAAC,CAAA;AAEjD,EAAI,IAAA,CAAC,aAAc,CAAA,UAAU,CAAG,EAAA;AAC9B,IAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,UAAA,CAAW,QAAQ,CAAK,EAAA,EAAA;AAC1C,MAAI,IAAA,IAAA,GAAO,WAAW,CAAC,CAAA,CAAA;AAEvB,MAAI,IAAA,CAAC,OAAQ,CAAA,IAAI,CAAG,EAAA;AAClB,QAAe,cAAA,CAAA,IAAA,CAAK,IAAI,CAAA,GAAI,IAAK,CAAA,KAAA,CAAA;AAAA,OACnC;AAAA,KACF;AAAA,GACF;AAEA,EAAO,OAAA,cAAA,CAAA;AACT,CAAA;AAKO,SAAS,oBACd,EACA,EAAA,MAAA,GAAkB,KAClB,EAAA,UAAA,GAAwC,EACxC,EAAA;AACA,EAAA,MAAM,QAAQ,QAAS,CAAA,UAAU,IAAI,aAAc,CAAA,UAAU,IAAI,EAAC,CAAA;AAClE,EAAM,MAAA,OAAA,GAAU,kBAAkB,QAAQ,CAAA,CAAA;AAE1C,EAAA,IAAI,MAAM,MAAQ,EAAA;AAChB,IAAM,KAAA,CAAA,OAAA,CAAQ,CAAC,IAAS,KAAA;AACtB,MAAA,OAAA,CAAQ,YAAa,CAAA,IAAA,EAAM,UAAW,CAAA,IAAI,CAAC,CAAA,CAAA;AAAA,KAC5C,CAAA,CAAA;AAAA,GACH;AAEA,EAAA,IAAI,MAAQ,EAAA;AACV,IAAA,OAAA,CAAQ,WAAY,CAAA,QAAA,CAAS,cAAe,CAAA,EAAE,CAAC,CAAA,CAAA;AAAA,GAC1C,MAAA;AACL,IAAA,OAAA,CAAQ,KAAQ,GAAA,IAAA,CAAA;AAChB,IAAA,OAAA,CAAQ,GAAM,GAAA,EAAA,CAAA;AAAA,GAChB;AAEA,EAAO,OAAA,OAAA,CAAA;AACT,CAAA;AAKO,SAAS,mBAAmB,GAAoB,EAAA;AACrD,EAAM,MAAA,OAAA,GAAU,kBAAkB,OAAO,CAAA,CAAA;AAEzC,EAAA,IAAI,GAAK,EAAA;AACP,IAAA,OAAA,CAAQ,WAAY,CAAA,QAAA,CAAS,cAAe,CAAA,GAAG,CAAC,CAAA,CAAA;AAAA,GAClD;AAEA,EAAO,OAAA,OAAA,CAAA;AACT,CAAA;AAKO,SAAS,kBAAkB,IAAc,EAAA;AAC9C,EAAM,MAAA,OAAA,GAAU,kBAAkB,MAAM,CAAA,CAAA;AAExC,EAAA,OAAA,CAAQ,GAAM,GAAA,YAAA,CAAA;AACd,EAAA,OAAA,CAAQ,IAAO,GAAA,IAAA,CAAA;AAEf,EAAO,OAAA,OAAA,CAAA;AACT,CAAA;AAKgB,SAAA,gBAAA,CACd,SACA,UACA,EAAA;AACA,EAAM,MAAA,KAAA,GAAQ,cAAc,UAAU,CAAA,CAAA;AACtC,EAAA,MAAM,OAAU,GAAA,QAAA,CAAS,eAAgB,CAAA,4BAAA,EAA8B,KAAK,CAAA,CAAA;AAE5E,EAAA,IAAI,MAAM,MAAQ,EAAA;AAChB,IAAM,KAAA,CAAA,OAAA,CAAQ,CAAC,IAAS,KAAA;AACtB,MAAA,OAAA,CAAQ,YAAa,CAAA,IAAA,EAAM,UAAW,CAAA,IAAI,CAAC,CAAA,CAAA;AAAA,KAC5C,CAAA,CAAA;AAAA,GACH;AAEA,EAAA,OAAA,CAAQ,SAAY,GAAA,OAAA,CAAA;AAEpB,EAAO,OAAA,OAAA,CAAA;AACT,CAAA;AAKgB,SAAA,QAAA,CAAS,EAAY,EAAA,MAAA,GAAS,KAAO,EAAA;AACnD,EAAM,MAAA,OAAA,GAAU,mBAAoB,CAAA,EAAA,EAAI,MAAM,CAAA,CAAA;AAE9C,EAAS,QAAA,CAAA,IAAA,CAAK,YAAY,OAAO,CAAA,CAAA;AACnC,CAAA;AAKO,MAAM,SAAY,GAAA,CACvB,GACA,EAAA,SAAA,EACA,WAAW,KACR,KAAA;AACH,EAAA,MAAM,UAAU,QAAW,GAAA,iBAAA,CAAkB,GAAG,CAAA,GAAI,mBAAmB,GAAG,CAAA,CAAA;AAE1E,EAAA,IAAI,SAAW,EAAA;AACb,IAAA,OAAA,CAAQ,SAAY,GAAA,SAAA,CAAA;AAAA,GACtB;AAEA,EAAS,QAAA,CAAA,IAAA,CAAK,YAAY,OAAO,CAAA,CAAA;AACnC,EAAA;AAKO,SAAS,aAAmD,GAAA;AACjE,EAAA,IAAI,KAAO,EAAA,MAAA,CAAA;AAEX,EAAA,IAAI,OAAO,MAAQ,EAAA;AACjB,IAAA,KAAA,GAAQ,MAAO,CAAA,KAAA,CAAA;AACf,IAAA,MAAA,GAAS,MAAO,CAAA,MAAA,CAAA;AAAA,GACX,MAAA;AACL,IAAA,KAAA,GAAQ,MAAO,CAAA,UAAA,CAAA;AACf,IAAA,MAAA,GAAS,MAAO,CAAA,WAAA,CAAA;AAAA,GAClB;AAEA,EAAO,OAAA;AAAA,IACL,KAAA;AAAA,IACA,MAAA;AAAA,GACF,CAAA;AACF,CAAA;AAKO,SAAS,YAAa,CAAA,GAAA,GAAM,CAAG,EAAA,GAAA,GAAM,UAAY,EAAA;AACtD,EAAM,GAAA,GAAA,IAAA,CAAK,KAAK,GAAG,CAAA,CAAA;AACnB,EAAM,GAAA,GAAA,IAAA,CAAK,MAAM,GAAG,CAAA,CAAA;AAEpB,EAAA,OAAO,KAAK,KAAM,CAAA,IAAA,CAAK,QAAY,IAAA,GAAA,GAAM,IAAI,CAAI,GAAA,GAAA,CAAA;AACnD,CAAA;AAKO,SAAS,mBAAmB,GAAa,EAAA;AAC9C,EAAM,MAAA,KAAA,GAAQ,QAAS,CAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AAE1C,EAAA,KAAA,CAAM,GAAM,GAAA,GAAA,CAAA;AACZ,EAAA,KAAA,CAAM,KAAQ,GAAA,CAAA,CAAA;AACd,EAAA,KAAA,CAAM,MAAS,GAAA,CAAA,CAAA;AACf,EAAA,KAAA,CAAM,MAAM,QAAW,GAAA,UAAA,CAAA;AACvB,EAAA,KAAA,CAAM,MAAM,IAAO,GAAA,UAAA,CAAA;AAEnB,EAAO,OAAA,KAAA,CAAA;AACT,CAAA;AAKO,SAAS,SAAS,GAAa,EAAA;AACpC,EAAA,IAAI,OAAO,CACT,EAAA,GAAA,CAAA;AAEF,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,GAAA,CAAI,QAAQ,CAAK,EAAA,EAAA;AACnC,IAAM,GAAA,GAAA,GAAA,CAAI,WAAW,CAAC,CAAA,CAAA;AACtB,IAAQ,IAAA,GAAA,CAAA,IAAA,IAAQ,KAAK,IAAO,GAAA,GAAA,CAAA;AAC5B,IAAQ,IAAA,IAAA,CAAA,CAAA;AAAA,GACV;AAEA,EAAA,OAAO,IAAS,KAAA,CAAA,CAAA;AAClB,CAAA;AAKgB,SAAA,UAAA,CAAW,aAAuB,IAAa,EAAA;AAC7D,EAAA,IACE,QAAS,CAAA,UAAA,KAAe,aACxB,IAAA,QAAA,CAAS,eAAe,UACxB,EAAA;AACA,IAAA,QAAA,CAAS,GAAG,IAAI,CAAA,CAAA;AAAA,GACX,MAAA;AACL,IAAA,QAAA,CAAS,iBAAiB,kBAAoB,EAAA,MAAM,QAAS,CAAA,GAAG,IAAI,CAAC,CAAA,CAAA;AAAA,GACvE;AACF,CAAA;AASgB,SAAA,SAAA,CAAU,GAAW,CAAmB,EAAA;AACtD,EAAA,OAAO,CAAI,GAAA,CAAA,GAAK,CAAI,GAAA,CAAA,GAAK,GAAM,GAAA,CAAA,CAAA;AACjC,CAAA;AAQO,SAAS,YAAY,MAAwB,EAAA;AAClD,EAAA,OAAO,OACJ,KAAM,CAAA,IAAI,MAAO,CAAA,OAAO,CAAC,CACzB,CAAA,MAAA;AAAA,IACC,CAAC,CAAA,EAAW,CAAc,KAAA,CAAA,GAAI,CAAE,CAAA,MAAA,CAAO,CAAC,CAAA,CAAE,WAAY,EAAA,GAAI,CAAE,CAAA,KAAA,CAAM,CAAC,CAAA;AAAA,GACrE,CAAA;AACJ,CAAA;AAQO,SAAS,YAAY,MAAwB,EAAA;AAClD,EAAA,OAAO,YAAY,MAAM,CAAA,CACtB,QAAQ,oBAAsB,EAAA,OAAO,EACrC,WAAY,EAAA,CAAA;AACjB,CAAA;AAQO,SAAS,WAAW,MAAwB,EAAA;AACjD,EAAO,OAAA,MAAA,CAAO,OAAO,CAAC,CAAA,CAAE,aAAgB,GAAA,MAAA,CAAO,MAAM,CAAC,CAAA,CAAA;AACxD,CAAA;AAQgB,SAAA,cAAA,CAAe,OAAe,MAAwB,EAAA;AACpE,EAAA,OAAO,MAAM,WAAY,EAAA,GAAI,MAAO,CAAA,WAAA,KAAgB,CAAI,GAAA,CAAA,CAAA,CAAA;AAC1D,CAAA;AAMO,SAAS,aAAa,MAAyB,EAAA;AACpD,EAAA,MAAA,GAAS,MAAU,GAAA,MAAA,GAAS,GAAM,GAAA,GAAA,GAAM,MAAU,GAAA,EAAA,CAAA;AAElD,EAAI,IAAA,GAAA,GAAM,KAAK,MAAO,EAAA,CAAE,SAAS,EAAE,CAAA,CAAE,UAAU,CAAC,CAAA,CAAA;AAEhD,EAAO,OAAA,GAAA,CAAI,SAAS,MAAQ,EAAA;AAC1B,IAAA,GAAA,IAAO,KAAK,MAAO,EAAA,CAAE,SAAS,EAAE,CAAA,CAAE,UAAU,CAAC,CAAA,CAAA;AAAA,GAC/C;AAEA,EAAA,MAAM,MAAS,GAAA,GAAA,CAAI,KAAM,CAAA,CAAC,MAAM,CAAA,CAAA;AAChC,EAAA,OAAO,MAAM,MAAO,CAAA,MAAM,CAAC,CAAI,GAAA,MAAA,GAAS,aAAa,MAAM,CAAA,CAAA;AAC7D,CAAA;AAEO,SAAS,cAAc,KAAmB,EAAA;AAC/C,EAAO,OAAA,KAAA,CAAM,KAAK,KAAM,CAAA,IAAA,CAAK,QAAW,GAAA,KAAA,CAAM,MAAM,CAAC,CAAA,CAAA;AACvD,CAAA;AASO,SAAS,SAAS,MAAqC,EAAA;AAC5D,EAAA,IAAI,OAAO,KAAM,CAAA,CAAC,UAAe,KAAM,CAAA,KAAK,CAAC,CAAG,EAAA;AAC9C,IAAO,OAAA,EAAA,CAAA;AAAA,GACF,MAAA;AACL,IAAA,OAAO,MAAO,CAAA,MAAA,CAAO,CAAC,GAAA,EAAU,IAAc,KAAA;AAC5C,MAAM,MAAA,KAAA,GAAQ,OAAO,IAAI,CAAA,CAAA;AAEzB,MAAI,IAAA,CAAC,KAAM,CAAA,KAAK,CAAG,EAAA;AACjB,QAAA,OAAO,GAAM,GAAA,KAAA,CAAA;AAAA,OACR,MAAA;AACL,QAAO,OAAA,GAAA,CAAA;AAAA,OACT;AAAA,OACC,CAAC,CAAA,CAAA;AAAA,GACN;AACF,CAAA;AAQgB,SAAA,wBAAA,CACd,KACA,MACU,EAAA;AACV,EAAA,MAAA,GAAS,MAAM,OAAQ,CAAA,MAAM,CAAI,GAAA,MAAA,GAAS,MAAM,MAAM,CAAA,CAAA;AAEtD,EAAA,MAAM,OAAO,EAAC,CAAA;AAEd,EAAA,KAAA,MAAW,OAAO,GAAK,EAAA;AACrB,IAAA,IAAI,CAAC,MAAO,CAAA,QAAA,CAAS,GAAI,CAAA,GAAG,CAAC,CAAG,EAAA;AAC9B,MAAA,IAAA,CAAK,KAAK,GAAG,CAAA,CAAA;AAAA,KACf;AAAA,GACF;AAEA,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;AAEgB,SAAA,aAAA,CAAc,QAAgB,GAAkB,EAAA;AAC9D,EAAA,OAAO,IAAI,KAAM,CAAA,GAAG,EAAE,MAAO,CAAA,CAAC,GAAQ,CAAW,KAAA;AAC/C,IAAA,OAAO,EAAE,CAAC,CAAA,CAAA;AAAA,KACT,MAAM,CAAA,CAAA;AACX,CAAA;AAEgB,SAAA,aAAA,CACd,OACA,EAAA,KAAA,GAAgB,CACV,EAAA;AACN,EAAU,SAAA,CAAA,MAAA,EAAQ,SAAS,KAAK,CAAA,CAAA;AAClC,CAAA;AAEgB,SAAA,cAAA,CACd,OACA,EAAA,KAAA,GAAgB,CACV,EAAA;AACN,EAAU,SAAA,CAAA,OAAA,EAAS,SAAS,KAAK,CAAA,CAAA;AACnC,CAAA;AAEO,SAAS,SACd,CAAA,SAAA,EACA,OACA,EAAA,KAAA,GAAgB,CACV,EAAA;AACN,EAAA,UAAA,CAAW,MAAM;AACf,IAAI,IAAA,QAAA,CAAS,OAAO,CAAG,EAAA;AACrB,MAAU,OAAA,GAAA,QAAA,CAAS,cAAc,OAAO,CAAA,CAAA;AAAA,KAC1C;AAEA,IAAI,IAAA,CAAC,aAAc,CAAA,OAAO,CAAG,EAAA;AAC3B,MAAQ,OAAA,CAAA,aAAA;AAAA,QACN,IAAI,MAAM,SAAW,EAAA;AAAA,UACnB,OAAS,EAAA,IAAA;AAAA,SACV,CAAA;AAAA,OACH,CAAA;AAAA,KACF;AAAA,KACC,KAAK,CAAA,CAAA;AACV,CAAA;AAEgB,SAAA,gBAAA,CACd,QACA,MACS,EAAA;AACT,EAAA,IAAI,UAAa,GAAA,KAAA,CAAA;AAEjB,EAAA,KAAA,MAAW,OAAO,MAAQ,EAAA;AACxB,IAAI,IAAA,MAAA,GAAS,OAAO,GAAG,CAAA,CAAA;AACvB,IAAI,IAAA,GAAG,MAAM,CAAI,GAAA,MAAA,CAAO,IAAK,CAAA,CAAC,CAAC,MAAM,CAAM,KAAA,GAAA,KAAQ,MAAM,CAAA,CAAA;AAEzD,IAAI,IAAA,QAAA,CAAS,MAAM,CAAG,EAAA;AACpB,MAAI,IAAA,CAAC,QAAS,CAAA,MAAM,CAAG,EAAA;AACrB,QAAa,UAAA,GAAA,IAAA,CAAA;AAAA,OACR,MAAA;AACL,QAAA,UAAA,GAAa,gBAAiB,CAAA,MAAA,EAAQ,MAAO,CAAA,OAAA,CAAQ,MAAM,CAAC,CAAA,CAAA;AAAA,OAC9D;AAAA,KACF,MAAA,IAAW,MAAM,OAAQ,CAAA,MAAM,KAAK,KAAM,CAAA,OAAA,CAAQ,MAAM,CAAG,EAAA;AACzD,MAAA,MAAA,GAAS,KAAM,CAAA,OAAA,CAAQ,MAAM,CAAA,GAAI,SAAS,EAAC,CAAA;AAC3C,MAAA,MAAA,GAAS,KAAM,CAAA,OAAA,CAAQ,MAAM,CAAA,GAAI,SAAS,EAAC,CAAA;AAE3C,MAAA,UAAA,GAAa,SAAU,CAAA,MAAA,EAAQ,MAAM,CAAA,CAAE,MAAS,GAAA,CAAA,CAAA;AAAA,KAC3C,MAAA;AACL,MAAa,UAAA,GAAA,OAAA,CAAQ,QAAQ,MAAM,CAAA,CAAA;AAAA,KACrC;AAEA,IAAA,IAAI,UAAY,EAAA;AACd,MAAA,MAAA;AAAA,KACF;AAAA,GACF;AAEA,EAAO,OAAA,UAAA,CAAA;AACT,CAAA;AAEO,SAAS,YAAY,MAAwB,EAAA;AAClD,EAAA,MAAM,YAAY,IAAK,CAAA,KAAA,CAAM,MAAM,CAAA,CAAE,UAAW,CAAA,MAAA,CAAA;AAEhD,EAAA,IAAI,OAAU,GAAA,CAAA,CAAA;AACd,EAAA,QAAQ,IAAM;AAAA,IACZ,MAAK,SAAY,GAAA,CAAA,IAAK,SAAY,GAAA,CAAA;AAChC,MAAU,OAAA,GAAA,GAAA,CAAA;AACV,MAAA,MAAA;AAAA,IACF,KAAK,SAAa,IAAA,CAAA;AAChB,MAAU,OAAA,GAAA,GAAA,CAAA;AACV,MAAA,MAAA;AAAA,GACJ;AAEA,EAAA,OAAO,UAAU,IAAK,CAAA,KAAA,CAAM,MAAS,GAAA,OAAO,IAAI,OAAU,GAAA,MAAA,CAAA;AAC5D,CAAA;AAEO,SAAS,eAAe,KAAoB,EAAA;AACjD,EAAA,IAAI,CAAC,KAAM,CAAA,KAAK,KAAK,CAAC,KAAA,CAAM,KAAK,CAAG,EAAA;AAClC,IAAO,OAAA,EAAA,CAAA;AAAA,GACT;AACA,EAAA,OAAO,KAAM,CAAA,QAAA,EAAW,CAAA,OAAA,CAAQ,WAAW,EAAE,CAAA,CAAA;AAC/C,CAAA;AAEO,SAAS,aAAa,KAAoB,EAAA;AAC/C,EAAA,IAAI,CAAC,KAAM,CAAA,KAAK,KAAK,CAAC,KAAA,CAAM,KAAK,CAAG,EAAA;AAClC,IAAO,OAAA,EAAA,CAAA;AAAA,GACT;AACA,EAAA,OAAO,KAAM,CAAA,QAAA,EAAW,CAAA,OAAA,CAAQ,OAAO,EAAE,CAAA,CAAA;AAC3C,CAAA;AAEgB,SAAA,OAAA,CAAQ,KAAa,SAA2B,EAAA;AAC9D,EAAA,MAAM,aAAa,MAAO,CAAA,GAAA,CAAI,OAAO,SAAY,GAAA,CAAA,EAAG,GAAG,CAAC,CAAA,CAAA;AACxD,EAAA,OAAO,IAAK,CAAA,IAAA,CAAK,GAAM,GAAA,UAAU,CAAI,GAAA,UAAA,CAAA;AACvC,CAAA;AAEgB,SAAA,SAAA,CAAU,KAAa,SAA2B,EAAA;AAChE,EAAA,MAAM,aAAa,MAAO,CAAA,GAAA,CAAI,OAAO,SAAY,GAAA,CAAA,EAAG,GAAG,CAAC,CAAA,CAAA;AACxD,EAAA,OAAO,IAAK,CAAA,KAAA,CAAM,GAAM,GAAA,UAAU,CAAI,GAAA,UAAA,CAAA;AACxC,CAAA;AAEgB,SAAA,OAAA,CACd,IACA,EAAA,IAAA,EACA,MACS,EAAA;AACT,EAAA,IAAI,MAAQ,EAAA;AACV,IAAA,OAAO,IAAS,KAAA,IAAA,CAAA;AAAA,GAClB;AAGA,EAAA,IAAI,OAAQ,CAAA,IAAI,CAAK,IAAA,OAAA,CAAQ,IAAI,CAAG,EAAA;AAClC,IAAA,OAAO,IAAQ,IAAA,IAAA,CAAA;AAAA,GACjB;AAIA,EAAO,OAAA,KAAA,CAAA;AACT,CAAA;AAEgB,SAAA,aAAA,CAAc,GAAwB,EAAA,MAAA,GAAS,EAAI,EAAA;AACjE,EAAA,OAAO,OAAO,IAAK,CAAA,GAAG,EAAE,MAAO,CAAA,CAAC,KAAK,CAAM,KAAA;AACzC,IAAA,MAAM,GAAM,GAAA,MAAA,CAAO,MAAS,GAAA,MAAA,GAAS,GAAM,GAAA,EAAA,CAAA;AAC3C,IAAI,IAAA,QAAA,CAAS,GAAI,CAAA,CAAC,CAAC,CAAA,IAAK,MAAM,OAAQ,CAAA,GAAA,CAAI,CAAC,CAAC,CAAG,EAAA;AAC7C,MAAO,MAAA,CAAA,MAAA,CAAO,KAAK,aAAc,CAAA,GAAA,CAAI,CAAC,CAAG,EAAA,GAAA,GAAM,CAAC,CAAC,CAAA,CAAA;AAAA,KAC5C,MAAA;AACL,MAAA,GAAA,CAAI,GAAM,GAAA,CAAC,CAAI,GAAA,GAAA,CAAI,CAAC,CAAA,CAAA;AAAA,KACtB;AACA,IAAO,OAAA,GAAA,CAAA;AAAA,GACT,EAAG,EAAuB,CAAA,CAAA;AAC5B,CAAA;AAEO,SAAS,qBAAqB,GAAwB,EAAA;AAC3D,EAAA,MAAM,SAA4B,EAAC,CAAA;AACnC,EAAM,MAAA,IAAA,GAAO,cAAc,GAAG,CAAA,CAAA;AAC9B,EAAA,MAAA,CAAO,IAAK,CAAA,IAAI,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACjC,IAAA,MAAM,MAAS,GAAA,GAAA,CAAI,UAAW,CAAA,YAAA,EAAc,MAAM,CAAA,CAAA;AAClD,IAAO,MAAA,CAAA,MAAM,CAAI,GAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AAAA,GAC1B,CAAA,CAAA;AAED,EAAO,OAAA,MAAA,CAAA;AACT,CAAA;AAEO,SAAS,mBAAmB,OAA2B,EAAA;AAC5D,EAAM,MAAA,SAAA,GAAY,OAAQ,CAAA,OAAA,CAAQ,KAAO,EAAA,GAAG,CAAE,CAAA,OAAA,CAAQ,KAAO,EAAA,EAAE,CAAE,CAAA,KAAA,CAAM,GAAG,CAAA,CAAA;AAE1E,EAAI,IAAA,SAAA,CAAU,SAAS,CAAK,IAAA,SAAA,CAAU,CAAC,CAAE,CAAA,QAAA,CAAS,GAAG,CAAG,EAAA;AACtD,IAAO,OAAA,CAAC,UAAU,CAAC,CAAA,EAAG,GAAG,kBAAmB,CAAA,SAAA,CAAU,CAAC,CAAC,CAAC,CAAA,CAAA;AAAA,GAC3D;AAEA,EAAO,OAAA,SAAA,CAAA;AACT,CAAA;AAEgB,SAAA,YAAA,CACd,KACA,cACQ,EAAA;AACR,EAAiB,cAAA,GAAA,aAAA,CAAc,cAAc,CAAA,GAAI,CAAI,GAAA,cAAA,CAAA;AACrD,EAAO,OAAA,IAAI,IAAK,CAAA,YAAA,CAAa,OAAS,EAAA;AAAA,IACpC,KAAO,EAAA,SAAA;AAAA,IACP,qBAAuB,EAAA,cAAA;AAAA,IACvB,qBAAuB,EAAA,cAAA;AAAA,GACxB,CAAA,CACE,MAAO,CAAA,MAAA,CAAO,GAAG,CAAC,CAClB,CAAA,OAAA,CAAQ,GAAK,EAAA,GAAG,CAChB,CAAA,OAAA,CAAQ,WAAW,GAAG,CAAA,CAAA;AAC3B,CAAA;AAEgB,SAAA,oBAAA,CACd,KACA,cACQ,EAAA;AACR,EAAA,OAAO,cAAe,CAAA,GAAA,EAAK,YAAa,CAAA,GAAA,EAAK,cAAc,CAAC,CAAA,CAAA;AAC9D,CAAA;AAEO,SAAS,cAAc,GAA8B,EAAA;AAC1D,EAAO,OAAA,YAAA,CAAa,GAAG,CAAI,GAAA,GAAA,CAAA;AAC7B,CAAA;AAEgB,SAAA,cAAA,CACd,KACA,SACQ,EAAA;AACR,EAAY,SAAA,GAAA,SAAA,GAAY,SAAY,GAAA,GAAA,CAAI,QAAS,EAAA,CAAA;AACjD,EAAA,OAAA,CAAQ,MAAO,CAAA,GAAG,CAAI,GAAA,CAAA,GAAI,KAAK,GAAO,IAAA,SAAA,CAAA;AACxC,CAAA;AAEO,SAAS,YACd,CAAA,EAAA,EACA,MACA,EAAA,WAAA,EACA,cAAsB,EACtB,EAAA;AACA,EAAA,IAAI,QAAW,GAAA,EAAA,CAAA;AAEf,EAAA,MAAM,aAAa,MAAM;AACvB,IAAI,IAAA,aAAA,OAAoB,CAAG,EAAA;AACzB,MAAA,OAAA;AAAA,KACF;AACA,IAAO,OAAA,QAAA,IAAY,aAAc,EAAA,GAAI,MAAQ,EAAA;AAC3C,MAAA,QAAA,EAAA,CAAA;AACA,MAAW,UAAA,EAAA,CAAA;AAAA,KACb;AACA,IAAO,OAAA,QAAA,IAAY,aAAc,EAAA,GAAI,MAAQ,EAAA;AAC3C,MAAA,QAAA,EAAA,CAAA;AACA,MAAY,WAAA,EAAA,CAAA;AAAA,KACd;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,aAAa,MAAM;AACvB,IAAM,MAAA,QAAA,GAAW,mBAAoB,CAAA,UAAA,EAAY,EAAE,CAAA,CAAA;AACnD,IAAA,MAAM,cAAc,QAAW,GAAA,CAAA,CAAA;AAC/B,IAAI,IAAA,QAAA,GAAW,CAAK,IAAA,WAAA,IAAe,WAAa,EAAA;AAC9C,MAAG,EAAA,CAAA,KAAA,CAAM,QAAW,GAAA,CAAA,EAAG,WAAW,CAAA,EAAA,CAAA,CAAA;AAAA,KACpC;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAM,MAAA,QAAA,GAAW,mBAAoB,CAAA,UAAA,EAAY,EAAE,CAAA,CAAA;AACnD,IAAA,MAAM,cAAc,QAAW,GAAA,CAAA,CAAA;AAC/B,IAAA,IAAI,eAAe,WAAa,EAAA;AAC9B,MAAG,EAAA,CAAA,KAAA,CAAM,QAAW,GAAA,CAAA,EAAG,WAAW,CAAA,EAAA,CAAA,CAAA;AAAA,KACpC;AAAA,GACF,CAAA;AAEA,EAAM,MAAA,aAAA,GAAgB,MACpB,IAAK,CAAA,KAAA;AAAA,IACH,EAAA,CAAG,eACD,mBAAoB,CAAA,YAAA,EAAc,EAAE,CACpC,GAAA,mBAAA,CAAoB,iBAAiB,EAAE,CAAA;AAAA,GAC3C,CAAA;AAEF,EAAW,UAAA,EAAA,CAAA;AACb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { FlattenableObject, Primitive, SimpleObject } from \"./types\";\n\nexport function debounce(fn: Function, delay: number): () => void {\n let timeout: ReturnType<typeof setTimeout>;\n\n return function (...args: any[]) {\n clearTimeout(timeout);\n timeout = setTimeout(() => fn.apply(null, args), delay);\n };\n}\n\nexport function throttle(fn: Function, delay: number) {\n let lastCall = 0;\n\n return function (...args: any[]) {\n const now = new Date().getTime();\n if (now - lastCall < delay) {\n return;\n }\n lastCall = now;\n fn(...args);\n };\n}\n\nexport function isObject(obj: any): obj is object {\n return !!obj && typeof obj === \"object\" && !Array.isArray(obj);\n}\n\nexport function isFn(fn: any): fn is Function {\n return typeof fn === \"function\";\n}\n\nexport function isStr(str: any): boolean {\n return typeof str === \"string\";\n}\n\nexport function isString(str: any): str is string {\n return typeof str === \"string\";\n}\n\n/**\n * Check if the given argument is a string which is not empty\n */\nexport function isNotEmptyString(str: any) {\n return typeof str === \"string\" && str.length;\n}\n\nexport function isHTMLElement(el: any): el is HTMLElement {\n return el instanceof HTMLElement || el instanceof SVGElement;\n}\n\nexport function isNum(num: any): num is number {\n return typeof num === \"number\";\n}\n\nexport function isBool(bool: any): boolean {\n return typeof bool === \"boolean\";\n}\n\nexport function isUndef(val: any): val is undefined {\n return typeof val === \"undefined\";\n}\n\nexport function isNullOrUndef(value: unknown): value is null | undefined {\n return value === null || typeof value === \"undefined\";\n}\n\nexport function isDefined(val: any): boolean {\n return !isUndef(val);\n}\n\n/**\n * Returns an array containing all the elements of array1 that are not in array2 and vice-versa\n */\nexport function arrayDiff(\n array1: Array<Primitive | null | undefined>,\n array2: Array<Primitive | null | undefined>,\n): Array<Primitive | null | undefined> {\n return array1\n .filter((value) => !array2.includes(value))\n .concat(array2.filter((value: any) => !array1.includes(value)));\n}\n\n/**\n * Returns an array of elements present in array1 and array2\n */\nexport function arrayIntersect(\n array1: Array<Primitive | null | undefined>,\n array2: Array<Primitive | null | undefined>,\n) {\n return array1.filter((value) => array2.includes(value));\n}\n\nexport function deepCloneObject<Type>(object: Type): Type {\n return JSON.parse(JSON.stringify(object));\n}\n\nexport function getNumericStyleProp(prop: string, el: Element) {\n const styles: { [key: string]: any } = window.getComputedStyle(el);\n return !isNullOrUndef(styles[prop]) ? parseInt(styles[prop].slice(0, -2)) : 0;\n}\n\nexport function objectHasProp(\n obj: any,\n prop: string | number | symbol,\n): boolean {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n/**\n * Custom version of Object.keys()\n */\nexport function getObjectKeys(object: object): string[] {\n let key;\n let keys = [];\n\n for (key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n\n return keys;\n}\n\n/**\n * Convert an object to a query string\n * Works with primitive objects\n */\nexport function objectToQueryString(object: {\n [key: string | number]:\n | Primitive\n | Array<Primitive | null | undefined>\n | SimpleObject\n | { [key: string | number]: SimpleObject }\n | undefined\n | null;\n}): string {\n return Object.entries(object)\n .map(([k, v]) => {\n if (Array.isArray(v)) {\n return v\n .map((item) => `${k}[]=${encodeURIComponent(item || \"\")}`)\n .join(\"&\");\n } else if (isObject(v)) {\n return `${k}=${encodeURIComponent(JSON.stringify(v))}`;\n }\n return `${k}=${encodeURIComponent(v || \"\")}`;\n })\n .join(\"&\");\n}\n\nexport function countObjectInnerLength(object: {\n [key: string | number]: any;\n}) {\n const obj = Object.values(object);\n\n return obj.length === 1\n ? obj[0].length\n : obj.reduce((acc, cur) => {\n if (Array.isArray(acc)) {\n acc = acc.length;\n }\n if (cur) {\n acc += cur.length;\n }\n return acc;\n });\n}\n\n/**\n * Check if the element is in viewport\n */\nexport function isElementVisible(element: HTMLElement, minVisiblePercent = 50) {\n const elementCoords = element.getBoundingClientRect();\n const elementHeight = elementCoords.height;\n\n if (!elementHeight) {\n return false;\n }\n\n const elementTop = elementCoords.top;\n const elementBottom = elementCoords.bottom;\n const viewPortHeight = window.innerHeight;\n\n const elementVisibleHeight =\n elementTop > 0\n ? // the element is in or below viewport\n viewPortHeight - elementTop\n : // the element is still in or above viewport\n elementBottom;\n\n return (elementVisibleHeight / elementHeight) * 100 >= minVisiblePercent;\n}\n\nexport function decodeSafeURL(url: string): string {\n try {\n return decodeURI(url);\n } catch (e) {\n return url;\n }\n}\n\nexport function getSafeURL(url?: string): string {\n url = url ? url : location.href;\n return encodeURI(decodeSafeURL(url));\n}\n\nexport function parseURL(url: string): URL {\n return new URL(url);\n}\n\nexport function encodeQueryString(url: string): string {\n if (url.length > 0) {\n const index = url.indexOf(\"?\");\n if (index >= 0) {\n return url.substr(0, index) + parseURL(url).search;\n }\n }\n\n return url;\n}\n\nexport function injectScript(filename: string): void {\n const script = document.createElement(\"script\");\n script.src = filename;\n script.async = true;\n document.head.appendChild(script);\n}\n\nexport function injectStyleLink(filename: string): void {\n const link = document.createElement(\"link\");\n link.rel = \"stylesheet\";\n link.href = filename;\n document.head.appendChild(link);\n}\n\nexport function toBinaryStr(str: string) {\n const encoder = new TextEncoder();\n // 1: split the UTF-16 string into an array of bytes\n const charCodes = encoder.encode(str);\n // 2: concatenate byte data to create a binary string\n return String.fromCharCode(...charCodes);\n}\n\n/**\n * Find a DOM element where an ad unit should be rendered to\n */\nexport function getHtmlElement(id: string) {\n return document.getElementById(id);\n}\n\n/**\n * Convert an HTML string into a list of nodes\n */\nexport function stringToHtmlElements(html: string): NodeListOf<ChildNode> {\n const template = createHtmlElement(\"div\");\n template.innerHTML = html.replace(/[\\r\\n]/gm, \"\").trim();\n return template.childNodes;\n}\n\n/**\n * Creates an HTML element and sets attributes\n */\nexport function createHtmlElement(\n type: string,\n attributes: { [key: string]: string } = {},\n): HTMLElement {\n const attrs = getObjectKeys(attributes);\n const element = document.createElement(type);\n\n if (attrs.length) {\n attrs.forEach((name) => {\n element.setAttribute(name, attributes[name]);\n });\n }\n\n return element;\n}\n\n/**\n * Insert HTML elements into DOM\n */\nexport function insertHtmlElements(\n nodes: NodeListOf<Node>,\n appendTo?: Element,\n) {\n appendTo = appendTo || document.body;\n\n const fragment = new DocumentFragment();\n\n for (let i = 0; i < nodes.length; i++) {\n // skip non tags and non text, 3 for text nodes\n if (!isHTMLElement(nodes[i]) && nodes[i].nodeType !== 3) {\n continue;\n }\n\n const node = nodes[i] as HTMLElement;\n let newNode;\n\n switch (node.nodeName.toLowerCase()) {\n case \"script\":\n const src = node.getAttribute(\"src\");\n\n if (!isNullOrUndef(src) && src.length > 0) {\n newNode = createScriptElement(\n src,\n false,\n flatHtmlAttributes(node.attributes),\n );\n } else {\n newNode = createScriptElement(\n node.innerHTML,\n true,\n flatHtmlAttributes(node.attributes),\n );\n }\n break;\n\n case \"style\":\n newNode = createStyleElement(node.textContent);\n break;\n\n case \"svg\":\n newNode = createSvgElement(\n node.innerHTML,\n flatHtmlAttributes(node.attributes),\n );\n break;\n\n case \"#text\":\n newNode = document.createTextNode(node.textContent ?? \"\");\n break;\n\n default:\n newNode = createHtmlElement(\n node.tagName,\n flatHtmlAttributes(node.attributes),\n );\n\n // recursive\n if (node.childNodes.length) {\n insertHtmlElements(node.childNodes, newNode);\n } else {\n newNode.innerHTML = node.innerHTML;\n }\n }\n\n fragment.appendChild(newNode);\n }\n\n appendTo.appendChild(fragment);\n}\n\n/**\n * Make a simple object which contains only attribute name and value\n */\nexport function flatHtmlAttributes(attributes?: NamedNodeMap) {\n let flatAttributes: { [key: string]: string } = {};\n\n if (!isNullOrUndef(attributes)) {\n for (let i = 0; i < attributes.length; i++) {\n let attr = attributes[i];\n\n if (!isUndef(attr)) {\n flatAttributes[attr.name] = attr.value;\n }\n }\n }\n\n return flatAttributes;\n}\n\n/**\n * Create a <script> element\n */\nexport function createScriptElement(\n js: string,\n inline: boolean = false,\n attributes: { [key: string]: string } = {},\n) {\n const attrs = isObject(attributes) ? getObjectKeys(attributes) : [];\n const element = createHtmlElement(\"script\") as HTMLScriptElement;\n\n if (attrs.length) {\n attrs.forEach((name) => {\n element.setAttribute(name, attributes[name]);\n });\n }\n\n if (inline) {\n element.appendChild(document.createTextNode(js));\n } else {\n element.async = true;\n element.src = js;\n }\n\n return element;\n}\n\n/**\n * Create a <style> element\n */\nexport function createStyleElement(css: string | null) {\n const element = createHtmlElement(\"style\");\n\n if (css) {\n element.appendChild(document.createTextNode(css));\n }\n\n return element;\n}\n\n/**\n * Create a <link> element\n */\nexport function createLinkElement(href: string) {\n const element = createHtmlElement(\"link\") as HTMLLinkElement;\n\n element.rel = \"stylesheet\";\n element.href = href;\n\n return element;\n}\n\n/**\n * Create svg elements\n */\nexport function createSvgElement(\n content: string,\n attributes: { [key: string]: string },\n) {\n const attrs = getObjectKeys(attributes);\n const element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n\n if (attrs.length) {\n attrs.forEach((name) => {\n element.setAttribute(name, attributes[name]);\n });\n }\n\n element.innerHTML = content;\n\n return element;\n}\n\n/**\n * Create an image element to use as a tracking pixel\n */\nexport function createPixelElement(src: string) {\n const image = document.createElement(\"img\");\n\n image.src = src;\n image.width = 1;\n image.height = 1;\n image.style.position = \"absolute\";\n image.style.left = \"-99999px\";\n\n return image;\n}\n\n/**\n * Append a new script element to the DOM head\n */\nexport function insertJs(js: string, inline = false) {\n const element = createScriptElement(js, inline);\n\n document.head.appendChild(element);\n}\n\n/**\n * Append a new style element to the DOM head\n */\nexport function insertCss(css: string, className?: string, external = false) {\n const element = external ? createLinkElement(css) : createStyleElement(css);\n\n if (className) {\n element.className = className;\n }\n\n document.head.appendChild(element);\n}\n\n/**\n * Get screen sizes\n */\nexport function getScreenSize(): { width: number; height: number } {\n let width, height;\n\n if (window.screen) {\n width = screen.width;\n height = screen.height;\n } else {\n width = window.innerWidth;\n height = window.innerHeight;\n }\n\n return {\n width: width,\n height: height,\n };\n}\n\n/**\n * Get a random integer between min and max\n */\nexport function getRandomInt(min = 0, max = 4294967295) {\n min = Math.ceil(min);\n max = Math.floor(max);\n\n return Math.floor(Math.random() * (max - min)) + min;\n}\n\n/**\n * Implementation of Java's String.hashCode() method\n */\nexport function hashCode(str: string) {\n let hash = 0,\n chr;\n\n for (let i = 0; i < str.length; i++) {\n chr = str.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0; // convert to 32bit integer\n }\n\n return hash >>> 0;\n}\n\n/**\n * Executes a callback as soon as DOM is interactive\n */\nexport function onDOMReady(callback: Function, ...args: any[]) {\n if (\n document.readyState === \"interactive\" ||\n document.readyState === \"complete\"\n ) {\n callback(...args);\n } else {\n document.addEventListener(\"DOMContentLoaded\", () => callback(...args));\n }\n}\n\n/**\n * Calculate the percentage of two values\n *\n * @param a\n * @param b\n * @return number\n */\nexport function toPercent(a: number, b: number): number {\n return b > 0 ? (a / b) * 100 : 0;\n}\n\n/**\n * Make a camelCase string\n *\n * @param string\n * @return string\n */\nexport function toCamelCase(string: string): string {\n return string\n .split(new RegExp(/[-_.]/))\n .reduce(\n (a: string, b: string) => a + b.charAt(0).toUpperCase() + b.slice(1),\n );\n}\n\n/**\n * Make a snake_case string\n *\n * @param string\n * @return string\n */\nexport function toSnakeCase(string: string): string {\n return toCamelCase(string)\n .replace(/(^[A-Z])?([A-Z])/gm, \"$1_$2\")\n .toLowerCase();\n}\n\n/**\n * Transform the first letter of the given string to the upper case\n *\n * @param string\n * @return string\n */\nexport function capitalize(string: string): string {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\n/**\n * Registry independent string sorting\n *\n * @param first\n * @param second\n */\nexport function sortByAlphabet(first: string, second: string): number {\n return first.toLowerCase() > second.toLowerCase() ? 1 : -1;\n}\n\n/**\n * @param length\n * @return string of max length 100\n */\nexport function getRandomStr(length?: number): string {\n length = length ? (length > 100 ? 100 : length) : 10;\n\n let str = Math.random().toString(36).substring(2);\n\n while (str.length < length) {\n str += Math.random().toString(36).substring(2);\n }\n\n const result = str.slice(-length);\n return isNaN(Number(result)) ? result : getRandomStr(length);\n}\n\nexport function getRandomItem(items: any[]): any {\n return items[Math.floor(Math.random() * items.length)];\n}\n\n/**\n * Summarize elements of the given array\n *\n * @param values\n * @return number | string - a summary of all the numbers in the array or an empty string if\n * there was only NaNs\n */\nexport function sumArray(values: Array<any>): number | string {\n if (values.every((value: any) => isNaN(value))) {\n return \"\";\n } else {\n return values.reduce((sum: any, curr: any) => {\n const value = Number(curr);\n\n if (!isNaN(value)) {\n return sum + value;\n } else {\n return sum;\n }\n }, 0);\n }\n}\n\n/**\n * Returns an array of the object keys which values are not present in filter\n *\n * @param obj\n * @param values\n */\nexport function filterObjectKeysByValues(\n obj: { [key: string]: any },\n values: Array<string | number | boolean | null | undefined>,\n): string[] {\n values = Array.isArray(values) ? values : Array(values);\n\n const keys = [];\n\n for (const key in obj) {\n if (!values.includes(obj[key])) {\n keys.push(key);\n }\n }\n\n return keys;\n}\n\nexport function getFromObject(object: object, key: string): any {\n return key.split(\".\").reduce((a: any, b: any) => {\n return a[b];\n }, object);\n}\n\nexport function fireBlurEvent(\n element: string | Element | null,\n delay: number = 0,\n): void {\n fireEvent(\"blur\", element, delay);\n}\n\nexport function fireInputEvent(\n element: string | Element | null,\n delay: number = 0,\n): void {\n fireEvent(\"input\", element, delay);\n}\n\nexport function fireEvent(\n eventName: string,\n element: string | Element | null,\n delay: number = 0,\n): void {\n setTimeout(() => {\n if (isString(element)) {\n element = document.querySelector(element);\n }\n\n if (!isNullOrUndef(element)) {\n element.dispatchEvent(\n new Event(eventName, {\n bubbles: true,\n }),\n );\n }\n }, delay);\n}\n\nexport function hasObjectChanged(\n object: { [key: string]: any },\n values: any[],\n): boolean {\n let hasChanged = false;\n\n for (const key in object) {\n let oldVal = object[key];\n let [, newVal] = values.find(([newKey]) => key === newKey);\n\n if (isObject(oldVal)) {\n if (!isObject(newVal)) {\n hasChanged = true;\n } else {\n hasChanged = hasObjectChanged(oldVal, Object.entries(newVal));\n }\n } else if (Array.isArray(newVal) || Array.isArray(oldVal)) {\n newVal = Array.isArray(newVal) ? newVal : [];\n oldVal = Array.isArray(oldVal) ? oldVal : [];\n\n hasChanged = arrayDiff(newVal, oldVal).length > 0;\n } else {\n hasChanged = areDiff(newVal, oldVal);\n }\n\n if (hasChanged) {\n break;\n }\n }\n\n return hasChanged;\n}\n\nexport function roundBigNum(number: number): number {\n const digitsNum = Math.trunc(number).toString().length;\n\n let roundTo = 0;\n switch (true) {\n case digitsNum > 2 && digitsNum < 5:\n roundTo = 100;\n break;\n case digitsNum >= 5:\n roundTo = 10000;\n break;\n }\n\n return roundTo ? Math.round(number / roundTo) * roundTo : number;\n}\n\nexport function extractNumbers(value: any): string {\n if (!isStr(value) && !isNum(value)) {\n return \"\";\n }\n return value.toString().replace(/[^0-9]/g, \"\");\n}\n\nexport function removeSpaces(value: any): string {\n if (!isStr(value) && !isNum(value)) {\n return \"\";\n }\n return value.toString().replace(/\\s/g, \"\");\n}\n\nexport function roundUp(num: number, precision: number): number {\n const multiplier = Number(\"1\".padEnd(precision + 1, \"0\"));\n return Math.ceil(num * multiplier) / multiplier;\n}\n\nexport function roundDown(num: number, precision: number): number {\n const multiplier = Number(\"1\".padEnd(precision + 1, \"0\"));\n return Math.floor(num * multiplier) / multiplier;\n}\n\nexport function areDiff(\n val1?: Primitive | null,\n val2?: Primitive | null,\n strict?: boolean,\n): boolean {\n if (strict) {\n return val1 !== val2;\n }\n\n // at least one value is not empty\n if (Boolean(val1) || Boolean(val2)) {\n return val1 != val2;\n }\n\n // both empty, but not equally empty!\n // each one may be one of: empty string, null or undefined\n return false;\n}\n\nexport function flattenObject(obj: FlattenableObject, prefix = \"\") {\n return Object.keys(obj).reduce((acc, k) => {\n const pre = prefix.length ? prefix + \".\" : \"\";\n if (isObject(obj[k]) || Array.isArray(obj[k])) {\n Object.assign(acc, flattenObject(obj[k], pre + k));\n } else {\n acc[pre + k] = obj[k];\n }\n return acc;\n }, {} as FlattenableObject);\n}\n\nexport function flattenObjectAsArray(obj: FlattenableObject) {\n const result: FlattenableObject = {};\n const flat = flattenObject(obj);\n Object.keys(flat).forEach((key) => {\n const newKey = key.replaceAll(/\\.([^.]+)/g, \"[$1]\");\n result[newKey] = flat[key];\n });\n\n return result;\n}\n\nexport function parseObjectPathStr(pathStr: string): string[] {\n const pathParts = pathStr.replace(/\\[/g, \".\").replace(/\\]/g, \"\").split(\".\");\n\n if (pathParts.length > 1 && pathParts[1].includes(\"[\")) {\n return [pathParts[0], ...parseObjectPathStr(pathParts[1])];\n }\n\n return pathParts;\n}\n\nexport function formatNumber(\n num: number | string,\n fractionDigits?: number,\n): string {\n fractionDigits = isNullOrUndef(fractionDigits) ? 2 : fractionDigits;\n return new Intl.NumberFormat(\"ru-RU\", {\n style: \"decimal\",\n minimumFractionDigits: fractionDigits,\n maximumFractionDigits: fractionDigits,\n })\n .format(Number(num))\n .replace(\",\", \".\")\n .replace(/\\u00A0/g, \" \"); // charCode 160, White-space\n}\n\nexport function formatNumberWithSign(\n num: number | string,\n fractionDigits?: number,\n): string {\n return formatWithSign(num, formatNumber(num, fractionDigits));\n}\n\nexport function formatPercent(num: number | string): string {\n return formatNumber(num) + \"%\";\n}\n\nexport function formatWithSign(\n num: number | string,\n numString?: string,\n): string {\n numString = numString ? numString : num.toString();\n return (Number(num) < 0 ? \"\" : \"+\") + numString;\n}\n\nexport function autoSizeText(\n el: HTMLElement,\n height: number,\n minFontSize: number,\n maxFontSize: number = 50,\n) {\n let attempts = 30;\n\n const resizeText = () => {\n if (getTextHeight() === 0) {\n return;\n }\n while (attempts && getTextHeight() > height) {\n attempts--;\n reduceText();\n }\n while (attempts && getTextHeight() < height) {\n attempts--;\n enlargeText();\n }\n };\n\n const reduceText = () => {\n const fontSize = getNumericStyleProp(\"fontSize\", el);\n const newFontSize = fontSize - 1;\n if (fontSize > 1 && newFontSize >= minFontSize) {\n el.style.fontSize = `${newFontSize}px`;\n }\n };\n\n const enlargeText = () => {\n const fontSize = getNumericStyleProp(\"fontSize\", el);\n const newFontSize = fontSize + 1;\n if (newFontSize <= maxFontSize) {\n el.style.fontSize = `${newFontSize}px`;\n }\n };\n\n const getTextHeight = () =>\n Math.floor(\n el.scrollHeight -\n getNumericStyleProp(\"paddingTop\", el) -\n getNumericStyleProp(\"paddingBottom\", el),\n );\n\n resizeText();\n}\n"],"names":[],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -2,7 +2,7 @@ function debounce(fn, delay) {
|
|
|
2
2
|
let timeout;
|
|
3
3
|
return function(...args) {
|
|
4
4
|
clearTimeout(timeout);
|
|
5
|
-
timeout = setTimeout(() => fn.apply(
|
|
5
|
+
timeout = setTimeout(() => fn.apply(null, args), delay);
|
|
6
6
|
};
|
|
7
7
|
}
|
|
8
8
|
function throttle(fn, delay) {
|
|
@@ -28,6 +28,9 @@ function isStr(str) {
|
|
|
28
28
|
function isString(str) {
|
|
29
29
|
return typeof str === "string";
|
|
30
30
|
}
|
|
31
|
+
function isNotEmptyString(str) {
|
|
32
|
+
return typeof str === "string" && str.length;
|
|
33
|
+
}
|
|
31
34
|
function isHTMLElement(el) {
|
|
32
35
|
return el instanceof HTMLElement || el instanceof SVGElement;
|
|
33
36
|
}
|
|
@@ -75,7 +78,7 @@ function getObjectKeys(object) {
|
|
|
75
78
|
function objectToQueryString(object) {
|
|
76
79
|
return Object.entries(object).map(([k, v]) => {
|
|
77
80
|
if (Array.isArray(v)) {
|
|
78
|
-
return v.map((item) => `${k}[]=${encodeURIComponent(item)}`).join("&");
|
|
81
|
+
return v.map((item) => `${k}[]=${encodeURIComponent(item || "")}`).join("&");
|
|
79
82
|
} else if (isObject(v)) {
|
|
80
83
|
return `${k}=${encodeURIComponent(JSON.stringify(v))}`;
|
|
81
84
|
}
|
|
@@ -94,7 +97,7 @@ function countObjectInnerLength(object) {
|
|
|
94
97
|
return acc;
|
|
95
98
|
});
|
|
96
99
|
}
|
|
97
|
-
|
|
100
|
+
function isElementVisible(element, minVisiblePercent = 50) {
|
|
98
101
|
const elementCoords = element.getBoundingClientRect();
|
|
99
102
|
const elementHeight = elementCoords.height;
|
|
100
103
|
if (!elementHeight) {
|
|
@@ -111,9 +114,6 @@ const isElementVisible = (element, minVisiblePercent = 50) => {
|
|
|
111
114
|
elementBottom
|
|
112
115
|
);
|
|
113
116
|
return elementVisibleHeight / elementHeight * 100 >= minVisiblePercent;
|
|
114
|
-
};
|
|
115
|
-
function getHtmlElement(id) {
|
|
116
|
-
return document.getElementById(id);
|
|
117
117
|
}
|
|
118
118
|
function decodeSafeURL(url) {
|
|
119
119
|
try {
|
|
@@ -123,6 +123,7 @@ function decodeSafeURL(url) {
|
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
125
|
function getSafeURL(url) {
|
|
126
|
+
url = url ? url : location.href;
|
|
126
127
|
return encodeURI(decodeSafeURL(url));
|
|
127
128
|
}
|
|
128
129
|
function parseURL(url) {
|
|
@@ -154,6 +155,9 @@ function toBinaryStr(str) {
|
|
|
154
155
|
const charCodes = encoder.encode(str);
|
|
155
156
|
return String.fromCharCode(...charCodes);
|
|
156
157
|
}
|
|
158
|
+
function getHtmlElement(id) {
|
|
159
|
+
return document.getElementById(id);
|
|
160
|
+
}
|
|
157
161
|
function stringToHtmlElements(html) {
|
|
158
162
|
const template = createHtmlElement("div");
|
|
159
163
|
template.innerHTML = html.replace(/[\r\n]/gm, "").trim();
|
|
@@ -169,7 +173,7 @@ function createHtmlElement(type, attributes = {}) {
|
|
|
169
173
|
}
|
|
170
174
|
return element;
|
|
171
175
|
}
|
|
172
|
-
function insertHtmlElements(nodes, appendTo
|
|
176
|
+
function insertHtmlElements(nodes, appendTo) {
|
|
173
177
|
appendTo = appendTo || document.body;
|
|
174
178
|
const fragment = new DocumentFragment();
|
|
175
179
|
for (let i = 0; i < nodes.length; i++) {
|
|
@@ -188,7 +192,11 @@ function insertHtmlElements(nodes, appendTo = null) {
|
|
|
188
192
|
flatHtmlAttributes(node.attributes)
|
|
189
193
|
);
|
|
190
194
|
} else {
|
|
191
|
-
newNode = createScriptElement(
|
|
195
|
+
newNode = createScriptElement(
|
|
196
|
+
node.innerHTML,
|
|
197
|
+
true,
|
|
198
|
+
flatHtmlAttributes(node.attributes)
|
|
199
|
+
);
|
|
192
200
|
}
|
|
193
201
|
break;
|
|
194
202
|
case "style":
|
|
@@ -270,17 +278,26 @@ function createSvgElement(content, attributes) {
|
|
|
270
278
|
element.innerHTML = content;
|
|
271
279
|
return element;
|
|
272
280
|
}
|
|
281
|
+
function createPixelElement(src) {
|
|
282
|
+
const image = document.createElement("img");
|
|
283
|
+
image.src = src;
|
|
284
|
+
image.width = 1;
|
|
285
|
+
image.height = 1;
|
|
286
|
+
image.style.position = "absolute";
|
|
287
|
+
image.style.left = "-99999px";
|
|
288
|
+
return image;
|
|
289
|
+
}
|
|
273
290
|
function insertJs(js, inline = false) {
|
|
274
291
|
const element = createScriptElement(js, inline);
|
|
275
292
|
document.head.appendChild(element);
|
|
276
293
|
}
|
|
277
|
-
|
|
294
|
+
function insertCss(css, className, external = false) {
|
|
278
295
|
const element = external ? createLinkElement(css) : createStyleElement(css);
|
|
279
296
|
if (className) {
|
|
280
297
|
element.className = className;
|
|
281
298
|
}
|
|
282
299
|
document.head.appendChild(element);
|
|
283
|
-
}
|
|
300
|
+
}
|
|
284
301
|
function getScreenSize() {
|
|
285
302
|
let width, height;
|
|
286
303
|
if (window.screen) {
|
|
@@ -300,15 +317,6 @@ function getRandomInt(min = 0, max = 4294967295) {
|
|
|
300
317
|
max = Math.floor(max);
|
|
301
318
|
return Math.floor(Math.random() * (max - min)) + min;
|
|
302
319
|
}
|
|
303
|
-
function createPixelElement(src) {
|
|
304
|
-
const image = document.createElement("img");
|
|
305
|
-
image.src = src;
|
|
306
|
-
image.width = 1;
|
|
307
|
-
image.height = 1;
|
|
308
|
-
image.style.position = "absolute";
|
|
309
|
-
image.style.left = "-99999px";
|
|
310
|
-
return image;
|
|
311
|
-
}
|
|
312
320
|
function hashCode(str) {
|
|
313
321
|
let hash = 0, chr;
|
|
314
322
|
for (let i = 0; i < str.length; i++) {
|
|
@@ -549,5 +557,5 @@ function autoSizeText(el, height, minFontSize, maxFontSize = 50) {
|
|
|
549
557
|
resizeText();
|
|
550
558
|
}
|
|
551
559
|
|
|
552
|
-
export { areDiff, arrayDiff, arrayIntersect, autoSizeText, capitalize, countObjectInnerLength, createHtmlElement, createLinkElement, createPixelElement, createScriptElement, createStyleElement, createSvgElement, debounce, decodeSafeURL, deepCloneObject, encodeQueryString, extractNumbers, filterObjectKeysByValues, fireBlurEvent, fireEvent, fireInputEvent, flatHtmlAttributes, flattenObject, flattenObjectAsArray, formatNumber, formatNumberWithSign, formatPercent, formatWithSign, getFromObject, getHtmlElement, getNumericStyleProp, getObjectKeys, getRandomInt, getRandomItem, getRandomStr, getSafeURL, getScreenSize, hasObjectChanged, hashCode, injectScript, injectStyleLink, insertCss, insertHtmlElements, insertJs, isBool, isDefined, isElementVisible, isFn, isHTMLElement, isNullOrUndef, isNum, isObject, isStr, isString, isUndef, objectHasProp, objectToQueryString, onDOMReady, parseObjectPathStr, parseURL, removeSpaces, roundBigNum, roundDown, roundUp, sortByAlphabet, stringToHtmlElements, sumArray, throttle, toBinaryStr, toCamelCase, toPercent, toSnakeCase };
|
|
560
|
+
export { areDiff, arrayDiff, arrayIntersect, autoSizeText, capitalize, countObjectInnerLength, createHtmlElement, createLinkElement, createPixelElement, createScriptElement, createStyleElement, createSvgElement, debounce, decodeSafeURL, deepCloneObject, encodeQueryString, extractNumbers, filterObjectKeysByValues, fireBlurEvent, fireEvent, fireInputEvent, flatHtmlAttributes, flattenObject, flattenObjectAsArray, formatNumber, formatNumberWithSign, formatPercent, formatWithSign, getFromObject, getHtmlElement, getNumericStyleProp, getObjectKeys, getRandomInt, getRandomItem, getRandomStr, getSafeURL, getScreenSize, hasObjectChanged, hashCode, injectScript, injectStyleLink, insertCss, insertHtmlElements, insertJs, isBool, isDefined, isElementVisible, isFn, isHTMLElement, isNotEmptyString, isNullOrUndef, isNum, isObject, isStr, isString, isUndef, objectHasProp, objectToQueryString, onDOMReady, parseObjectPathStr, parseURL, removeSpaces, roundBigNum, roundDown, roundUp, sortByAlphabet, stringToHtmlElements, sumArray, throttle, toBinaryStr, toCamelCase, toPercent, toSnakeCase };
|
|
553
561
|
//# sourceMappingURL=index.mjs.map
|