@nativerent/js-utils 1.0.2 → 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 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
- * Works with primitive objects, see JSDoc @param
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 const isElementVisible: (element: HTMLElement, minVisiblePercent?: number) => boolean;
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: string): string;
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 | null): void;
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 const insertCss: (css: string, className?: string, external?: boolean) => void;
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(this, args), delay);
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
- const isElementVisible = (element, minVisiblePercent = 50) => {
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 = null) {
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(node.innerHTML, true);
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
- const insertCss = (css, className, external = false) => {
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":"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"}
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":";;AAEgB,SAAA,QAAA,CAAS,IAAc,KAA2B,EAAA;AAChE,EAAI,IAAA,OAAA,CAAA;AAEJ,EAAA,OAAO,YAAa,IAAa,EAAA;AAC/B,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;AAKO,SAAS,iBAAiB,GAAU,EAAA;AACzC,EAAO,OAAA,OAAO,GAAQ,KAAA,QAAA,IAAY,GAAI,CAAA,MAAA,CAAA;AACxC,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;AAMO,SAAS,oBAAoB,MAQzB,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,CACJ,CAAA,GAAA,CAAI,CAAC,IAAA,KAAS,GAAG,CAAC,CAAA,GAAA,EAAM,kBAAmB,CAAA,IAAA,IAAQ,EAAE,CAAC,CAAE,CAAA,CAAA,CACxD,KAAK,GAAG,CAAA,CAAA;AAAA,KACb,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;AAKgB,SAAA,gBAAA,CAAiB,OAAsB,EAAA,iBAAA,GAAoB,EAAI,EAAA;AAC7E,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,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,GAAsB,EAAA;AAC/C,EAAM,GAAA,GAAA,GAAA,GAAM,MAAM,QAAS,CAAA,IAAA,CAAA;AAC3B,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,eAAe,EAAY,EAAA;AACzC,EAAO,OAAA,QAAA,CAAS,eAAe,EAAE,CAAA,CAAA;AACnC,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,OACA,QACA,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;AAAA,YACR,IAAK,CAAA,SAAA;AAAA,YACL,IAAA;AAAA,YACA,kBAAA,CAAmB,KAAK,UAAU,CAAA;AAAA,WACpC,CAAA;AAAA,SACF;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;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;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,SAAS,SAAU,CAAA,GAAA,EAAa,SAAoB,EAAA,QAAA,GAAW,KAAO,EAAA;AAC3E,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,CAAA;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,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
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(this, args), delay);
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
- const isElementVisible = (element, minVisiblePercent = 50) => {
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 = null) {
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(node.innerHTML, true);
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
- const insertCss = (css, className, external = false) => {
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","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":"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"}
1
+ {"version":3,"file":"index.mjs","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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nativerent/js-utils",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",