@nativerent/js-utils 1.0.9 → 1.2.0

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.js CHANGED
@@ -434,7 +434,10 @@ function hasObjectChanged(object, values) {
434
434
  } else if (Array.isArray(newVal) || Array.isArray(oldVal)) {
435
435
  newVal = Array.isArray(newVal) ? newVal : [];
436
436
  oldVal = Array.isArray(oldVal) ? oldVal : [];
437
- hasChanged = arrayDiff(newVal, oldVal).length > 0;
437
+ hasChanged = getObjectKeys(oldVal).length !== getObjectKeys(newVal).length;
438
+ if (!hasChanged) {
439
+ hasChanged = arrayDiff(newVal, oldVal).length > 0;
440
+ }
438
441
  } else {
439
442
  hasChanged = areDiff(newVal, oldVal);
440
443
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import type { 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(value: any): value is object {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nexport function isFn(value: any): value is Function {\n return typeof value === \"function\";\n}\n\nexport function isStr(value: any): boolean {\n return typeof value === \"string\";\n}\n\nexport function isString(value: any): value is string {\n return typeof value === \"string\";\n}\n\n/**\n * Check if the given argument is a string which is not empty\n */\nexport function isNotEmptyString(value: any) {\n return isString(value) && value.length;\n}\n\nexport function isHTMLElement(value: any): value is HTMLElement {\n return value instanceof HTMLElement || value instanceof SVGElement;\n}\n\nexport function isNum(value: any): value is number {\n return typeof value === \"number\";\n}\n\nexport function isBool(value: any): value is boolean {\n return typeof value === \"boolean\";\n}\n\nexport function isUndef(value: any): value is undefined {\n return typeof value === \"undefined\";\n}\n\nexport function isNullOrUndef(value: unknown): value is null | undefined {\n return value === null || typeof value === \"undefined\";\n}\n\nexport function isDefined(value: any): boolean {\n return !isUndef(value);\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 const len = obj.length;\n\n if (len === 0) {\n return 0;\n } else if (len === 1) {\n return obj[0].length;\n } else {\n return obj.reduce((acc: any, 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/**\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.substring(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 | ShadowRoot,\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 (\n (isObject(obj[k]) || Array.isArray(obj[k])) &&\n getObjectKeys(obj[k]).length > 0\n ) {\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,KAA6B,EAAA;AACpD,EAAO,OAAA,CAAC,CAAC,KAAS,IAAA,OAAO,UAAU,QAAY,IAAA,CAAC,KAAM,CAAA,OAAA,CAAQ,KAAK,CAAA,CAAA;AACrE,CAAA;AAEO,SAAS,KAAK,KAA+B,EAAA;AAClD,EAAA,OAAO,OAAO,KAAU,KAAA,UAAA,CAAA;AAC1B,CAAA;AAEO,SAAS,MAAM,KAAqB,EAAA;AACzC,EAAA,OAAO,OAAO,KAAU,KAAA,QAAA,CAAA;AAC1B,CAAA;AAEO,SAAS,SAAS,KAA6B,EAAA;AACpD,EAAA,OAAO,OAAO,KAAU,KAAA,QAAA,CAAA;AAC1B,CAAA;AAKO,SAAS,iBAAiB,KAAY,EAAA;AAC3C,EAAO,OAAA,QAAA,CAAS,KAAK,CAAA,IAAK,KAAM,CAAA,MAAA,CAAA;AAClC,CAAA;AAEO,SAAS,cAAc,KAAkC,EAAA;AAC9D,EAAO,OAAA,KAAA,YAAiB,eAAe,KAAiB,YAAA,UAAA,CAAA;AAC1D,CAAA;AAEO,SAAS,MAAM,KAA6B,EAAA;AACjD,EAAA,OAAO,OAAO,KAAU,KAAA,QAAA,CAAA;AAC1B,CAAA;AAEO,SAAS,OAAO,KAA8B,EAAA;AACnD,EAAA,OAAO,OAAO,KAAU,KAAA,SAAA,CAAA;AAC1B,CAAA;AAEO,SAAS,QAAQ,KAAgC,EAAA;AACtD,EAAA,OAAO,OAAO,KAAU,KAAA,WAAA,CAAA;AAC1B,CAAA;AAEO,SAAS,cAAc,KAA2C,EAAA;AACvE,EAAO,OAAA,KAAA,KAAU,IAAQ,IAAA,OAAO,KAAU,KAAA,WAAA,CAAA;AAC5C,CAAA;AAEO,SAAS,UAAU,KAAqB,EAAA;AAC7C,EAAO,OAAA,CAAC,QAAQ,KAAK,CAAA,CAAA;AACvB,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;AAChC,EAAA,MAAM,MAAM,GAAI,CAAA,MAAA,CAAA;AAEhB,EAAA,IAAI,QAAQ,CAAG,EAAA;AACb,IAAO,OAAA,CAAA,CAAA;AAAA,GACT,MAAA,IAAW,QAAQ,CAAG,EAAA;AACpB,IAAO,OAAA,GAAA,CAAI,CAAC,CAAE,CAAA,MAAA,CAAA;AAAA,GACT,MAAA;AACL,IAAA,OAAO,GAAI,CAAA,MAAA,CAAO,CAAC,GAAA,EAAU,GAAQ,KAAA;AACnC,MAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,GAAG,CAAG,EAAA;AACtB,QAAA,GAAA,GAAM,GAAI,CAAA,MAAA,CAAA;AAAA,OACZ;AACA,MAAA,IAAI,GAAK,EAAA;AACP,QAAA,GAAA,IAAO,GAAI,CAAA,MAAA,CAAA;AAAA,OACb;AACA,MAAO,OAAA,GAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAAA,GACH;AACF,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,SAAU,CAAA,CAAA,EAAG,KAAK,CAAI,GAAA,QAAA,CAAS,GAAG,CAAE,CAAA,MAAA,CAAA;AAAA,KACjD;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,IAAA,IAAA,CACG,SAAS,GAAI,CAAA,CAAC,CAAC,CAAA,IAAK,MAAM,OAAQ,CAAA,GAAA,CAAI,CAAC,CAAC,MACzC,aAAc,CAAA,GAAA,CAAI,CAAC,CAAC,CAAA,CAAE,SAAS,CAC/B,EAAA;AACA,MAAO,MAAA,CAAA,MAAA,CAAO,KAAK,aAAc,CAAA,GAAA,CAAI,CAAC,CAAG,EAAA,GAAA,GAAM,CAAC,CAAC,CAAA,CAAA;AAAA,KAC5C,MAAA;AACL,MAAA,GAAA,CAAI,GAAM,GAAA,CAAC,CAAI,GAAA,GAAA,CAAI,CAAC,CAAA,CAAA;AAAA,KACtB;AACA,IAAO,OAAA,GAAA,CAAA;AAAA,GACT,EAAG,EAAuB,CAAA,CAAA;AAC5B,CAAA;AAEO,SAAS,qBAAqB,GAAwB,EAAA;AAC3D,EAAA,MAAM,SAA4B,EAAC,CAAA;AACnC,EAAM,MAAA,IAAA,GAAO,cAAc,GAAG,CAAA,CAAA;AAC9B,EAAA,MAAA,CAAO,IAAK,CAAA,IAAI,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACjC,IAAA,MAAM,MAAS,GAAA,GAAA,CAAI,UAAW,CAAA,YAAA,EAAc,MAAM,CAAA,CAAA;AAClD,IAAO,MAAA,CAAA,MAAM,CAAI,GAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AAAA,GAC1B,CAAA,CAAA;AAED,EAAO,OAAA,MAAA,CAAA;AACT,CAAA;AAEO,SAAS,mBAAmB,OAA2B,EAAA;AAC5D,EAAM,MAAA,SAAA,GAAY,OAAQ,CAAA,OAAA,CAAQ,KAAO,EAAA,GAAG,CAAE,CAAA,OAAA,CAAQ,KAAO,EAAA,EAAE,CAAE,CAAA,KAAA,CAAM,GAAG,CAAA,CAAA;AAE1E,EAAI,IAAA,SAAA,CAAU,SAAS,CAAK,IAAA,SAAA,CAAU,CAAC,CAAE,CAAA,QAAA,CAAS,GAAG,CAAG,EAAA;AACtD,IAAO,OAAA,CAAC,UAAU,CAAC,CAAA,EAAG,GAAG,kBAAmB,CAAA,SAAA,CAAU,CAAC,CAAC,CAAC,CAAA,CAAA;AAAA,GAC3D;AAEA,EAAO,OAAA,SAAA,CAAA;AACT,CAAA;AAEgB,SAAA,YAAA,CACd,KACA,cACQ,EAAA;AACR,EAAiB,cAAA,GAAA,aAAA,CAAc,cAAc,CAAA,GAAI,CAAI,GAAA,cAAA,CAAA;AACrD,EAAO,OAAA,IAAI,IAAK,CAAA,YAAA,CAAa,OAAS,EAAA;AAAA,IACpC,KAAO,EAAA,SAAA;AAAA,IACP,qBAAuB,EAAA,cAAA;AAAA,IACvB,qBAAuB,EAAA,cAAA;AAAA,GACxB,CAAA,CACE,MAAO,CAAA,MAAA,CAAO,GAAG,CAAC,CAClB,CAAA,OAAA,CAAQ,GAAK,EAAA,GAAG,CAChB,CAAA,OAAA,CAAQ,WAAW,GAAG,CAAA,CAAA;AAC3B,CAAA;AAEgB,SAAA,oBAAA,CACd,KACA,cACQ,EAAA;AACR,EAAA,OAAO,cAAe,CAAA,GAAA,EAAK,YAAa,CAAA,GAAA,EAAK,cAAc,CAAC,CAAA,CAAA;AAC9D,CAAA;AAEO,SAAS,cAAc,GAA8B,EAAA;AAC1D,EAAO,OAAA,YAAA,CAAa,GAAG,CAAI,GAAA,GAAA,CAAA;AAC7B,CAAA;AAEgB,SAAA,cAAA,CACd,KACA,SACQ,EAAA;AACR,EAAY,SAAA,GAAA,SAAA,GAAY,SAAY,GAAA,GAAA,CAAI,QAAS,EAAA,CAAA;AACjD,EAAA,OAAA,CAAQ,MAAO,CAAA,GAAG,CAAI,GAAA,CAAA,GAAI,KAAK,GAAO,IAAA,SAAA,CAAA;AACxC,CAAA;AAEO,SAAS,YACd,CAAA,EAAA,EACA,MACA,EAAA,WAAA,EACA,cAAsB,EACtB,EAAA;AACA,EAAA,IAAI,QAAW,GAAA,EAAA,CAAA;AAEf,EAAA,MAAM,aAAa,MAAM;AACvB,IAAI,IAAA,aAAA,OAAoB,CAAG,EAAA;AACzB,MAAA,OAAA;AAAA,KACF;AACA,IAAO,OAAA,QAAA,IAAY,aAAc,EAAA,GAAI,MAAQ,EAAA;AAC3C,MAAA,QAAA,EAAA,CAAA;AACA,MAAW,UAAA,EAAA,CAAA;AAAA,KACb;AACA,IAAO,OAAA,QAAA,IAAY,aAAc,EAAA,GAAI,MAAQ,EAAA;AAC3C,MAAA,QAAA,EAAA,CAAA;AACA,MAAY,WAAA,EAAA,CAAA;AAAA,KACd;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,aAAa,MAAM;AACvB,IAAM,MAAA,QAAA,GAAW,mBAAoB,CAAA,UAAA,EAAY,EAAE,CAAA,CAAA;AACnD,IAAA,MAAM,cAAc,QAAW,GAAA,CAAA,CAAA;AAC/B,IAAI,IAAA,QAAA,GAAW,CAAK,IAAA,WAAA,IAAe,WAAa,EAAA;AAC9C,MAAG,EAAA,CAAA,KAAA,CAAM,QAAW,GAAA,CAAA,EAAG,WAAW,CAAA,EAAA,CAAA,CAAA;AAAA,KACpC;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAM,MAAA,QAAA,GAAW,mBAAoB,CAAA,UAAA,EAAY,EAAE,CAAA,CAAA;AACnD,IAAA,MAAM,cAAc,QAAW,GAAA,CAAA,CAAA;AAC/B,IAAA,IAAI,eAAe,WAAa,EAAA;AAC9B,MAAG,EAAA,CAAA,KAAA,CAAM,QAAW,GAAA,CAAA,EAAG,WAAW,CAAA,EAAA,CAAA,CAAA;AAAA,KACpC;AAAA,GACF,CAAA;AAEA,EAAM,MAAA,aAAA,GAAgB,MACpB,IAAK,CAAA,KAAA;AAAA,IACH,EAAA,CAAG,eACD,mBAAoB,CAAA,YAAA,EAAc,EAAE,CACpC,GAAA,mBAAA,CAAoB,iBAAiB,EAAE,CAAA;AAAA,GAC3C,CAAA;AAEF,EAAW,UAAA,EAAA,CAAA;AACb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import type { 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(value: any): value is object {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nexport function isFn(value: any): value is Function {\n return typeof value === \"function\";\n}\n\nexport function isStr(value: any): boolean {\n return typeof value === \"string\";\n}\n\nexport function isString(value: any): value is string {\n return typeof value === \"string\";\n}\n\n/**\n * Check if the given argument is a string which is not empty\n */\nexport function isNotEmptyString(value: any) {\n return isString(value) && value.length;\n}\n\nexport function isHTMLElement(value: any): value is HTMLElement {\n return value instanceof HTMLElement || value instanceof SVGElement;\n}\n\nexport function isNum(value: any): value is number {\n return typeof value === \"number\";\n}\n\nexport function isBool(value: any): value is boolean {\n return typeof value === \"boolean\";\n}\n\nexport function isUndef(value: any): value is undefined {\n return typeof value === \"undefined\";\n}\n\nexport function isNullOrUndef(value: unknown): value is null | undefined {\n return value === null || typeof value === \"undefined\";\n}\n\nexport function isDefined(value: any): boolean {\n return !isUndef(value);\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 const len = obj.length;\n\n if (len === 0) {\n return 0;\n } else if (len === 1) {\n return obj[0].length;\n } else {\n return obj.reduce((acc: any, 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/**\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.substring(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 | ShadowRoot,\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 hasChanged =\n getObjectKeys(oldVal).length !== getObjectKeys(newVal).length;\n if (!hasChanged) {\n hasChanged = arrayDiff(newVal, oldVal).length > 0;\n }\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 (\n (isObject(obj[k]) || Array.isArray(obj[k])) &&\n getObjectKeys(obj[k]).length > 0\n ) {\n Object.assign(acc, flattenObject(obj[k], pre + k));\n } else {\n acc[pre + k] = obj[k];\n }\n return acc;\n }, {} as FlattenableObject);\n}\n\nexport function flattenObjectAsArray(obj: FlattenableObject) {\n const result: FlattenableObject = {};\n const flat = flattenObject(obj);\n Object.keys(flat).forEach((key) => {\n const newKey = key.replaceAll(/\\.([^.]+)/g, \"[$1]\");\n result[newKey] = flat[key];\n });\n\n return result;\n}\n\nexport function parseObjectPathStr(pathStr: string): string[] {\n const pathParts = pathStr.replace(/\\[/g, \".\").replace(/\\]/g, \"\").split(\".\");\n\n if (pathParts.length > 1 && pathParts[1].includes(\"[\")) {\n return [pathParts[0], ...parseObjectPathStr(pathParts[1])];\n }\n\n return pathParts;\n}\n\nexport function formatNumber(\n num: number | string,\n fractionDigits?: number,\n): string {\n fractionDigits = isNullOrUndef(fractionDigits) ? 2 : fractionDigits;\n return new Intl.NumberFormat(\"ru-RU\", {\n style: \"decimal\",\n minimumFractionDigits: fractionDigits,\n maximumFractionDigits: fractionDigits,\n })\n .format(Number(num))\n .replace(\",\", \".\")\n .replace(/\\u00A0/g, \" \"); // charCode 160, White-space\n}\n\nexport function formatNumberWithSign(\n num: number | string,\n fractionDigits?: number,\n): string {\n return formatWithSign(num, formatNumber(num, fractionDigits));\n}\n\nexport function formatPercent(num: number | string): string {\n return formatNumber(num) + \"%\";\n}\n\nexport function formatWithSign(\n num: number | string,\n numString?: string,\n): string {\n numString = numString ? numString : num.toString();\n return (Number(num) < 0 ? \"\" : \"+\") + numString;\n}\n\nexport function autoSizeText(\n el: HTMLElement,\n height: number,\n minFontSize: number,\n maxFontSize: number = 50,\n) {\n let attempts = 30;\n\n const resizeText = () => {\n if (getTextHeight() === 0) {\n return;\n }\n while (attempts && getTextHeight() > height) {\n attempts--;\n reduceText();\n }\n while (attempts && getTextHeight() < height) {\n attempts--;\n enlargeText();\n }\n };\n\n const reduceText = () => {\n const fontSize = getNumericStyleProp(\"fontSize\", el);\n const newFontSize = fontSize - 1;\n if (fontSize > 1 && newFontSize >= minFontSize) {\n el.style.fontSize = `${newFontSize}px`;\n }\n };\n\n const enlargeText = () => {\n const fontSize = getNumericStyleProp(\"fontSize\", el);\n const newFontSize = fontSize + 1;\n if (newFontSize <= maxFontSize) {\n el.style.fontSize = `${newFontSize}px`;\n }\n };\n\n const getTextHeight = () =>\n Math.floor(\n el.scrollHeight -\n getNumericStyleProp(\"paddingTop\", el) -\n getNumericStyleProp(\"paddingBottom\", el),\n );\n\n resizeText();\n}\n"],"names":[],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -432,7 +432,10 @@ function hasObjectChanged(object, values) {
432
432
  } else if (Array.isArray(newVal) || Array.isArray(oldVal)) {
433
433
  newVal = Array.isArray(newVal) ? newVal : [];
434
434
  oldVal = Array.isArray(oldVal) ? oldVal : [];
435
- hasChanged = arrayDiff(newVal, oldVal).length > 0;
435
+ hasChanged = getObjectKeys(oldVal).length !== getObjectKeys(newVal).length;
436
+ if (!hasChanged) {
437
+ hasChanged = arrayDiff(newVal, oldVal).length > 0;
438
+ }
436
439
  } else {
437
440
  hasChanged = areDiff(newVal, oldVal);
438
441
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import type { 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(value: any): value is object {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nexport function isFn(value: any): value is Function {\n return typeof value === \"function\";\n}\n\nexport function isStr(value: any): boolean {\n return typeof value === \"string\";\n}\n\nexport function isString(value: any): value is string {\n return typeof value === \"string\";\n}\n\n/**\n * Check if the given argument is a string which is not empty\n */\nexport function isNotEmptyString(value: any) {\n return isString(value) && value.length;\n}\n\nexport function isHTMLElement(value: any): value is HTMLElement {\n return value instanceof HTMLElement || value instanceof SVGElement;\n}\n\nexport function isNum(value: any): value is number {\n return typeof value === \"number\";\n}\n\nexport function isBool(value: any): value is boolean {\n return typeof value === \"boolean\";\n}\n\nexport function isUndef(value: any): value is undefined {\n return typeof value === \"undefined\";\n}\n\nexport function isNullOrUndef(value: unknown): value is null | undefined {\n return value === null || typeof value === \"undefined\";\n}\n\nexport function isDefined(value: any): boolean {\n return !isUndef(value);\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 const len = obj.length;\n\n if (len === 0) {\n return 0;\n } else if (len === 1) {\n return obj[0].length;\n } else {\n return obj.reduce((acc: any, 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/**\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.substring(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 | ShadowRoot,\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 (\n (isObject(obj[k]) || Array.isArray(obj[k])) &&\n getObjectKeys(obj[k]).length > 0\n ) {\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 type { 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(value: any): value is object {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nexport function isFn(value: any): value is Function {\n return typeof value === \"function\";\n}\n\nexport function isStr(value: any): boolean {\n return typeof value === \"string\";\n}\n\nexport function isString(value: any): value is string {\n return typeof value === \"string\";\n}\n\n/**\n * Check if the given argument is a string which is not empty\n */\nexport function isNotEmptyString(value: any) {\n return isString(value) && value.length;\n}\n\nexport function isHTMLElement(value: any): value is HTMLElement {\n return value instanceof HTMLElement || value instanceof SVGElement;\n}\n\nexport function isNum(value: any): value is number {\n return typeof value === \"number\";\n}\n\nexport function isBool(value: any): value is boolean {\n return typeof value === \"boolean\";\n}\n\nexport function isUndef(value: any): value is undefined {\n return typeof value === \"undefined\";\n}\n\nexport function isNullOrUndef(value: unknown): value is null | undefined {\n return value === null || typeof value === \"undefined\";\n}\n\nexport function isDefined(value: any): boolean {\n return !isUndef(value);\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 const len = obj.length;\n\n if (len === 0) {\n return 0;\n } else if (len === 1) {\n return obj[0].length;\n } else {\n return obj.reduce((acc: any, 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/**\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.substring(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 | ShadowRoot,\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 hasChanged =\n getObjectKeys(oldVal).length !== getObjectKeys(newVal).length;\n if (!hasChanged) {\n hasChanged = arrayDiff(newVal, oldVal).length > 0;\n }\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 (\n (isObject(obj[k]) || Array.isArray(obj[k])) &&\n getObjectKeys(obj[k]).length > 0\n ) {\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/jest.config.mjs CHANGED
@@ -1,5 +1,9 @@
1
1
  export default {
2
2
  preset: "ts-jest",
3
3
  testEnvironment: "jsdom",
4
+ testEnvironmentOptions: {
5
+ url: "https://example.com/current%20path",
6
+ },
4
7
  testMatch: ["**/tests/**"],
8
+ setupFilesAfterEnv: ["<rootDir>/jest.setup.ts"],
5
9
  };
package/jest.setup.ts ADDED
@@ -0,0 +1,4 @@
1
+ import { TextEncoder, TextDecoder } from "util";
2
+
3
+ (global as any).TextEncoder = TextEncoder;
4
+ (global as any).TextDecoder = TextDecoder;
package/package.json CHANGED
@@ -1,26 +1,27 @@
1
1
  {
2
2
  "name": "@nativerent/js-utils",
3
- "version": "1.0.9",
3
+ "version": "1.2.0",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
7
7
  "typings": "dist/index.d.ts",
8
8
  "scripts": {
9
9
  "build": "rollup -c",
10
- "watch": "rollup -c -w"
10
+ "watch": "rollup -c -w",
11
+ "test": "jest"
11
12
  },
12
13
  "author": "NativeRent",
13
14
  "license": "GPL-3.0-or-later",
14
15
  "devDependencies": {
15
- "@types/jest": "^29.5.11",
16
- "eslint": "^8.56.0",
17
- "jest": "^29.7.0",
18
- "jest-environment-jsdom": "^29.7.0",
19
- "prettier": "^3.1.1",
20
- "rollup": "^4.9.4",
21
- "rollup-plugin-dts": "^6.1.0",
22
- "rollup-plugin-esbuild": "^6.1.0",
23
- "ts-jest": "^29.1.1",
24
- "typescript": "^5.3.3"
16
+ "@types/jest": "^30.0.0",
17
+ "eslint": "^9.39.2",
18
+ "jest": "^30.2.0",
19
+ "jest-environment-jsdom": "^30.2.0",
20
+ "prettier": "^3.8.1",
21
+ "rollup": "^4.57.0",
22
+ "rollup-plugin-dts": "^6.3.0",
23
+ "rollup-plugin-esbuild": "^6.2.1",
24
+ "ts-jest": "^29.4.6",
25
+ "typescript": "^5.9.3"
25
26
  }
26
27
  }