@nativerent/js-utils 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -3,7 +3,7 @@ type FlattenableObject = { [key: string]: any };
3
3
  type Primitive = boolean | number | string;
4
4
 
5
5
  type SimpleObject = {
6
- [key: string]: Primitive | Primitive[] | null | undefined;
6
+ [key: string | number]: Primitive | Primitive[] | null | undefined;
7
7
  };
8
8
 
9
9
  declare function debounce(fn: Function, delay: number): () => void;
@@ -12,6 +12,10 @@ declare function isObject(obj: any): obj is object;
12
12
  declare function isFn(fn: any): fn is Function;
13
13
  declare function isStr(str: any): boolean;
14
14
  declare function isString(str: any): str is string;
15
+ /**
16
+ * Check if the given argument is a string which is not empty
17
+ */
18
+ declare function isNotEmptyString(str: any): number | false;
15
19
  declare function isHTMLElement(el: any): el is HTMLElement;
16
20
  declare function isNum(num: any): num is number;
17
21
  declare function isBool(bool: any): boolean;
@@ -34,31 +38,32 @@ declare function objectHasProp(obj: any, prop: string | number | symbol): boolea
34
38
  */
35
39
  declare function getObjectKeys(object: object): string[];
36
40
  /**
37
- * Works with primitive objects, see JSDoc @param
41
+ * Convert an object to a query string
42
+ * Works with primitive objects
38
43
  */
39
44
  declare function objectToQueryString(object: {
40
- [key: string]: SimpleObject | {
41
- [key: string]: SimpleObject;
42
- };
45
+ [key: string | number]: Primitive | Array<Primitive | null | undefined> | SimpleObject | {
46
+ [key: string | number]: SimpleObject;
47
+ } | undefined | null;
43
48
  }): string;
44
49
  declare function countObjectInnerLength(object: {
45
- [key: string | number]: any;
46
- }): any;
50
+ [key: string | number]: any[];
51
+ }): number | any[];
47
52
  /**
48
53
  * Check if the element is in viewport
49
54
  */
50
- declare const isElementVisible: (element: HTMLElement, minVisiblePercent?: number) => boolean;
51
- /**
52
- * Find a DOM element where an ad unit should be rendered to
53
- */
54
- declare function getHtmlElement(id: string): HTMLElement | null;
55
+ declare function isElementVisible(element: HTMLElement, minVisiblePercent?: number): boolean;
55
56
  declare function decodeSafeURL(url: string): string;
56
- declare function getSafeURL(url: string): string;
57
+ declare function getSafeURL(url?: string): string;
57
58
  declare function parseURL(url: string): URL;
58
59
  declare function encodeQueryString(url: string): string;
59
60
  declare function injectScript(filename: string): void;
60
61
  declare function injectStyleLink(filename: string): void;
61
62
  declare function toBinaryStr(str: string): string;
63
+ /**
64
+ * Find a DOM element where an ad unit should be rendered to
65
+ */
66
+ declare function getHtmlElement(id: string): HTMLElement | null;
62
67
  /**
63
68
  * Convert an HTML string into a list of nodes
64
69
  */
@@ -72,7 +77,7 @@ declare function createHtmlElement(type: string, attributes?: {
72
77
  /**
73
78
  * Insert HTML elements into DOM
74
79
  */
75
- declare function insertHtmlElements(nodes: NodeListOf<Node>, appendTo?: Element | null): void;
80
+ declare function insertHtmlElements(nodes: NodeListOf<Node>, appendTo?: Element): void;
76
81
  /**
77
82
  * Make a simple object which contains only attribute name and value
78
83
  */
@@ -99,6 +104,10 @@ declare function createLinkElement(href: string): HTMLLinkElement;
99
104
  declare function createSvgElement(content: string, attributes: {
100
105
  [key: string]: string;
101
106
  }): SVGSVGElement;
107
+ /**
108
+ * Create an image element to use as a tracking pixel
109
+ */
110
+ declare function createPixelElement(src: string): HTMLImageElement;
102
111
  /**
103
112
  * Append a new script element to the DOM head
104
113
  */
@@ -106,7 +115,7 @@ declare function insertJs(js: string, inline?: boolean): void;
106
115
  /**
107
116
  * Append a new style element to the DOM head
108
117
  */
109
- declare const insertCss: (css: string, className?: string, external?: boolean) => void;
118
+ declare function insertCss(css: string, className?: string, external?: boolean): void;
110
119
  /**
111
120
  * Get screen sizes
112
121
  */
@@ -118,10 +127,6 @@ declare function getScreenSize(): {
118
127
  * Get a random integer between min and max
119
128
  */
120
129
  declare function getRandomInt(min?: number, max?: number): number;
121
- /**
122
- * Create an image element to use as a tracking pixel
123
- */
124
- declare function createPixelElement(src: string): HTMLImageElement;
125
130
  /**
126
131
  * Implementation of Java's String.hashCode() method
127
132
  */
@@ -211,4 +216,4 @@ declare function formatPercent(num: number | string): string;
211
216
  declare function formatWithSign(num: number | string, numString?: string): string;
212
217
  declare function autoSizeText(el: HTMLElement, height: number, minFontSize: number, maxFontSize?: number): void;
213
218
 
214
- export { areDiff, arrayDiff, arrayIntersect, autoSizeText, capitalize, countObjectInnerLength, createHtmlElement, createLinkElement, createPixelElement, createScriptElement, createStyleElement, createSvgElement, debounce, decodeSafeURL, deepCloneObject, encodeQueryString, extractNumbers, filterObjectKeysByValues, fireBlurEvent, fireEvent, fireInputEvent, flatHtmlAttributes, flattenObject, flattenObjectAsArray, formatNumber, formatNumberWithSign, formatPercent, formatWithSign, getFromObject, getHtmlElement, getNumericStyleProp, getObjectKeys, getRandomInt, getRandomItem, getRandomStr, getSafeURL, getScreenSize, hasObjectChanged, hashCode, injectScript, injectStyleLink, insertCss, insertHtmlElements, insertJs, isBool, isDefined, isElementVisible, isFn, isHTMLElement, isNullOrUndef, isNum, isObject, isStr, isString, isUndef, objectHasProp, objectToQueryString, onDOMReady, parseObjectPathStr, parseURL, removeSpaces, roundBigNum, roundDown, roundUp, sortByAlphabet, stringToHtmlElements, sumArray, throttle, toBinaryStr, toCamelCase, toPercent, toSnakeCase };
219
+ export { areDiff, arrayDiff, arrayIntersect, autoSizeText, capitalize, countObjectInnerLength, createHtmlElement, createLinkElement, createPixelElement, createScriptElement, createStyleElement, createSvgElement, debounce, decodeSafeURL, deepCloneObject, encodeQueryString, extractNumbers, filterObjectKeysByValues, fireBlurEvent, fireEvent, fireInputEvent, flatHtmlAttributes, flattenObject, flattenObjectAsArray, formatNumber, formatNumberWithSign, formatPercent, formatWithSign, getFromObject, getHtmlElement, getNumericStyleProp, getObjectKeys, getRandomInt, getRandomItem, getRandomStr, getSafeURL, getScreenSize, hasObjectChanged, hashCode, injectScript, injectStyleLink, insertCss, insertHtmlElements, insertJs, isBool, isDefined, isElementVisible, isFn, isHTMLElement, isNotEmptyString, isNullOrUndef, isNum, isObject, isStr, isString, isUndef, objectHasProp, objectToQueryString, onDOMReady, parseObjectPathStr, parseURL, removeSpaces, roundBigNum, roundDown, roundUp, sortByAlphabet, stringToHtmlElements, sumArray, throttle, toBinaryStr, toCamelCase, toPercent, toSnakeCase };
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@ function debounce(fn, delay) {
4
4
  let timeout;
5
5
  return function(...args) {
6
6
  clearTimeout(timeout);
7
- timeout = setTimeout(() => fn.apply(this, args), delay);
7
+ timeout = setTimeout(() => fn.apply(null, args), delay);
8
8
  };
9
9
  }
10
10
  function throttle(fn, delay) {
@@ -30,6 +30,9 @@ function isStr(str) {
30
30
  function isString(str) {
31
31
  return typeof str === "string";
32
32
  }
33
+ function isNotEmptyString(str) {
34
+ return typeof str === "string" && str.length;
35
+ }
33
36
  function isHTMLElement(el) {
34
37
  return el instanceof HTMLElement || el instanceof SVGElement;
35
38
  }
@@ -77,7 +80,7 @@ function getObjectKeys(object) {
77
80
  function objectToQueryString(object) {
78
81
  return Object.entries(object).map(([k, v]) => {
79
82
  if (Array.isArray(v)) {
80
- return v.map((item) => `${k}[]=${encodeURIComponent(item)}`).join("&");
83
+ return v.map((item) => `${k}[]=${encodeURIComponent(item || "")}`).join("&");
81
84
  } else if (isObject(v)) {
82
85
  return `${k}=${encodeURIComponent(JSON.stringify(v))}`;
83
86
  }
@@ -86,17 +89,24 @@ function objectToQueryString(object) {
86
89
  }
87
90
  function countObjectInnerLength(object) {
88
91
  const obj = Object.values(object);
89
- return obj.length === 1 ? obj[0].length : obj.reduce((acc, cur) => {
90
- if (Array.isArray(acc)) {
91
- acc = acc.length;
92
- }
93
- if (cur) {
94
- acc += cur.length;
95
- }
96
- return acc;
97
- });
92
+ const len = obj.length;
93
+ if (len === 0) {
94
+ return 0;
95
+ } else if (len === 1) {
96
+ return obj[0].length;
97
+ } else {
98
+ return obj.reduce((acc, cur) => {
99
+ if (Array.isArray(acc)) {
100
+ acc = acc.length;
101
+ }
102
+ if (cur) {
103
+ acc += cur.length;
104
+ }
105
+ return acc;
106
+ });
107
+ }
98
108
  }
99
- const isElementVisible = (element, minVisiblePercent = 50) => {
109
+ function isElementVisible(element, minVisiblePercent = 50) {
100
110
  const elementCoords = element.getBoundingClientRect();
101
111
  const elementHeight = elementCoords.height;
102
112
  if (!elementHeight) {
@@ -113,9 +123,6 @@ const isElementVisible = (element, minVisiblePercent = 50) => {
113
123
  elementBottom
114
124
  );
115
125
  return elementVisibleHeight / elementHeight * 100 >= minVisiblePercent;
116
- };
117
- function getHtmlElement(id) {
118
- return document.getElementById(id);
119
126
  }
120
127
  function decodeSafeURL(url) {
121
128
  try {
@@ -125,6 +132,7 @@ function decodeSafeURL(url) {
125
132
  }
126
133
  }
127
134
  function getSafeURL(url) {
135
+ url = url ? url : location.href;
128
136
  return encodeURI(decodeSafeURL(url));
129
137
  }
130
138
  function parseURL(url) {
@@ -156,6 +164,9 @@ function toBinaryStr(str) {
156
164
  const charCodes = encoder.encode(str);
157
165
  return String.fromCharCode(...charCodes);
158
166
  }
167
+ function getHtmlElement(id) {
168
+ return document.getElementById(id);
169
+ }
159
170
  function stringToHtmlElements(html) {
160
171
  const template = createHtmlElement("div");
161
172
  template.innerHTML = html.replace(/[\r\n]/gm, "").trim();
@@ -171,7 +182,7 @@ function createHtmlElement(type, attributes = {}) {
171
182
  }
172
183
  return element;
173
184
  }
174
- function insertHtmlElements(nodes, appendTo = null) {
185
+ function insertHtmlElements(nodes, appendTo) {
175
186
  appendTo = appendTo || document.body;
176
187
  const fragment = new DocumentFragment();
177
188
  for (let i = 0; i < nodes.length; i++) {
@@ -190,7 +201,11 @@ function insertHtmlElements(nodes, appendTo = null) {
190
201
  flatHtmlAttributes(node.attributes)
191
202
  );
192
203
  } else {
193
- newNode = createScriptElement(node.innerHTML, true);
204
+ newNode = createScriptElement(
205
+ node.innerHTML,
206
+ true,
207
+ flatHtmlAttributes(node.attributes)
208
+ );
194
209
  }
195
210
  break;
196
211
  case "style":
@@ -272,17 +287,26 @@ function createSvgElement(content, attributes) {
272
287
  element.innerHTML = content;
273
288
  return element;
274
289
  }
290
+ function createPixelElement(src) {
291
+ const image = document.createElement("img");
292
+ image.src = src;
293
+ image.width = 1;
294
+ image.height = 1;
295
+ image.style.position = "absolute";
296
+ image.style.left = "-99999px";
297
+ return image;
298
+ }
275
299
  function insertJs(js, inline = false) {
276
300
  const element = createScriptElement(js, inline);
277
301
  document.head.appendChild(element);
278
302
  }
279
- const insertCss = (css, className, external = false) => {
303
+ function insertCss(css, className, external = false) {
280
304
  const element = external ? createLinkElement(css) : createStyleElement(css);
281
305
  if (className) {
282
306
  element.className = className;
283
307
  }
284
308
  document.head.appendChild(element);
285
- };
309
+ }
286
310
  function getScreenSize() {
287
311
  let width, height;
288
312
  if (window.screen) {
@@ -302,15 +326,6 @@ function getRandomInt(min = 0, max = 4294967295) {
302
326
  max = Math.floor(max);
303
327
  return Math.floor(Math.random() * (max - min)) + min;
304
328
  }
305
- function createPixelElement(src) {
306
- const image = document.createElement("img");
307
- image.src = src;
308
- image.width = 1;
309
- image.height = 1;
310
- image.style.position = "absolute";
311
- image.style.left = "-99999px";
312
- return image;
313
- }
314
329
  function hashCode(str) {
315
330
  let hash = 0, chr;
316
331
  for (let i = 0; i < str.length; i++) {
@@ -600,6 +615,7 @@ exports.isDefined = isDefined;
600
615
  exports.isElementVisible = isElementVisible;
601
616
  exports.isFn = isFn;
602
617
  exports.isHTMLElement = isHTMLElement;
618
+ exports.isNotEmptyString = isNotEmptyString;
603
619
  exports.isNullOrUndef = isNullOrUndef;
604
620
  exports.isNum = isNum;
605
621
  exports.isObject = isObject;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { FlattenableObject, Primitive, SimpleObject } from \"./types\";\n\nexport function debounce(fn: Function, delay: number): () => void {\n let timeout: ReturnType<typeof setTimeout>;\n\n return function (this: any, ...args: any[]) {\n clearTimeout(timeout);\n timeout = setTimeout(() => fn.apply(this, args), delay);\n };\n}\n\nexport function throttle(fn: Function, delay: number) {\n let lastCall = 0;\n\n return function (...args: any[]) {\n const now = new Date().getTime();\n if (now - lastCall < delay) {\n return;\n }\n lastCall = now;\n fn(...args);\n };\n}\n\nexport function isObject(obj: any): obj is object {\n return !!obj && typeof obj === \"object\" && !Array.isArray(obj);\n}\n\nexport function isFn(fn: any): fn is Function {\n return typeof fn === \"function\";\n}\n\nexport function isStr(str: any): boolean {\n return typeof str === \"string\";\n}\n\nexport function isString(str: any): str is string {\n return typeof str === \"string\";\n}\n\nexport function isHTMLElement(el: any): el is HTMLElement {\n return el instanceof HTMLElement || el instanceof SVGElement;\n}\n\nexport function isNum(num: any): num is number {\n return typeof num === \"number\";\n}\n\nexport function isBool(bool: any): boolean {\n return typeof bool === \"boolean\";\n}\n\nexport function isUndef(val: any): val is undefined {\n return typeof val === \"undefined\";\n}\n\nexport function isNullOrUndef(value: unknown): value is null | undefined {\n return value === null || typeof value === \"undefined\";\n}\n\nexport function isDefined(val: any): boolean {\n return !isUndef(val);\n}\n\n/**\n * Returns an array containing all the elements of array1 that are not in array2 and vice-versa\n */\nexport function arrayDiff(\n array1: Array<Primitive | null | undefined>,\n array2: Array<Primitive | null | undefined>,\n): Array<Primitive | null | undefined> {\n return array1\n .filter((value) => !array2.includes(value))\n .concat(array2.filter((value: any) => !array1.includes(value)));\n}\n\n/**\n * Returns an array of elements present in array1 and array2\n */\nexport function arrayIntersect(\n array1: Array<Primitive | null | undefined>,\n array2: Array<Primitive | null | undefined>,\n) {\n return array1.filter((value) => array2.includes(value));\n}\n\nexport function deepCloneObject<Type>(object: Type): Type {\n return JSON.parse(JSON.stringify(object));\n}\n\nexport function getNumericStyleProp(prop: string, el: Element) {\n const styles: { [key: string]: any } = window.getComputedStyle(el);\n return !isNullOrUndef(styles[prop]) ? parseInt(styles[prop].slice(0, -2)) : 0;\n}\n\nexport function objectHasProp(\n obj: any,\n prop: string | number | symbol,\n): boolean {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n/**\n * Custom version of Object.keys()\n */\nexport function getObjectKeys(object: object): string[] {\n let key;\n let keys = [];\n\n for (key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n\n return keys;\n}\n\n/**\n * Works with primitive objects, see JSDoc @param\n */\nexport function objectToQueryString(object: {\n [key: string]: SimpleObject | { [key: string]: SimpleObject };\n}): string {\n return Object.entries(object)\n .map(([k, v]) => {\n if (Array.isArray(v)) {\n return v.map((item) => `${k}[]=${encodeURIComponent(item)}`).join(\"&\");\n } else if (isObject(v)) {\n return `${k}=${encodeURIComponent(JSON.stringify(v))}`;\n }\n return `${k}=${encodeURIComponent(v || \"\")}`;\n })\n .join(\"&\");\n}\n\nexport function countObjectInnerLength(object: {\n [key: string | number]: any;\n}) {\n const obj = Object.values(object);\n\n return obj.length === 1\n ? obj[0].length\n : obj.reduce((acc, cur) => {\n if (Array.isArray(acc)) {\n acc = acc.length;\n }\n if (cur) {\n acc += cur.length;\n }\n return acc;\n });\n}\n\n/**\n * Check if the element is in viewport\n */\nexport const isElementVisible = (\n element: HTMLElement,\n minVisiblePercent = 50,\n) => {\n const elementCoords = element.getBoundingClientRect();\n const elementHeight = elementCoords.height;\n\n if (!elementHeight) {\n return false;\n }\n\n const elementTop = elementCoords.top;\n const elementBottom = elementCoords.bottom;\n const viewPortHeight = window.innerHeight;\n\n const elementVisibleHeight =\n elementTop > 0\n ? // the element is in or below viewport\n viewPortHeight - elementTop\n : // the element is still in or above viewport\n elementBottom;\n\n return (elementVisibleHeight / elementHeight) * 100 >= minVisiblePercent;\n};\n\n/**\n * Find a DOM element where an ad unit should be rendered to\n */\nexport function getHtmlElement(id: string) {\n return document.getElementById(id);\n}\n\nexport function decodeSafeURL(url: string): string {\n try {\n return decodeURI(url);\n } catch (e) {\n return url;\n }\n}\n\nexport function getSafeURL(url: string): string {\n return encodeURI(decodeSafeURL(url));\n}\n\nexport function parseURL(url: string): URL {\n return new URL(url);\n}\n\nexport function encodeQueryString(url: string): string {\n if (url.length > 0) {\n const index = url.indexOf(\"?\");\n if (index >= 0) {\n return url.substr(0, index) + parseURL(url).search;\n }\n }\n\n return url;\n}\n\nexport function injectScript(filename: string): void {\n const script = document.createElement(\"script\");\n script.src = filename;\n script.async = true;\n document.head.appendChild(script);\n}\n\nexport function injectStyleLink(filename: string): void {\n const link = document.createElement(\"link\");\n link.rel = \"stylesheet\";\n link.href = filename;\n document.head.appendChild(link);\n}\n\nexport function toBinaryStr(str: string) {\n const encoder = new TextEncoder();\n // 1: split the UTF-16 string into an array of bytes\n const charCodes = encoder.encode(str);\n // 2: concatenate byte data to create a binary string\n return String.fromCharCode(...charCodes);\n}\n\n/**\n * Convert an HTML string into a list of nodes\n */\nexport function stringToHtmlElements(html: string): NodeListOf<ChildNode> {\n const template = createHtmlElement(\"div\");\n template.innerHTML = html.replace(/[\\r\\n]/gm, \"\").trim();\n return template.childNodes;\n}\n\n/**\n * Creates an HTML element and sets attributes\n */\nexport function createHtmlElement(\n type: string,\n attributes: { [key: string]: string } = {},\n): HTMLElement {\n const attrs = getObjectKeys(attributes);\n const element = document.createElement(type);\n\n if (attrs.length) {\n attrs.forEach((name) => {\n element.setAttribute(name, attributes[name]);\n });\n }\n\n return element;\n}\n\n/**\n * Insert HTML elements into DOM\n */\nexport function insertHtmlElements(\n nodes: NodeListOf<Node>,\n appendTo: Element | null = null,\n) {\n appendTo = appendTo || document.body;\n\n const fragment = new DocumentFragment();\n\n for (let i = 0; i < nodes.length; i++) {\n // skip non tags and non text, 3 for text nodes\n if (!isHTMLElement(nodes[i]) && nodes[i].nodeType !== 3) {\n continue;\n }\n\n const node = nodes[i] as HTMLElement;\n let newNode;\n\n switch (node.nodeName.toLowerCase()) {\n case \"script\":\n const src = node.getAttribute(\"src\");\n\n if (!isNullOrUndef(src) && src.length > 0) {\n newNode = createScriptElement(\n src,\n false,\n flatHtmlAttributes(node.attributes),\n );\n } else {\n newNode = createScriptElement(node.innerHTML, true);\n }\n break;\n\n case \"style\":\n newNode = createStyleElement(node.textContent);\n break;\n\n case \"svg\":\n newNode = createSvgElement(\n node.innerHTML,\n flatHtmlAttributes(node.attributes),\n );\n break;\n\n case \"#text\":\n newNode = document.createTextNode(node.textContent ?? \"\");\n break;\n\n default:\n newNode = createHtmlElement(\n node.tagName,\n flatHtmlAttributes(node.attributes),\n );\n\n // recursive\n if (node.childNodes.length) {\n insertHtmlElements(node.childNodes, newNode);\n } else {\n newNode.innerHTML = node.innerHTML;\n }\n }\n\n fragment.appendChild(newNode);\n }\n\n appendTo.appendChild(fragment);\n}\n\n/**\n * Make a simple object which contains only attribute name and value\n */\nexport function flatHtmlAttributes(attributes?: NamedNodeMap) {\n let flatAttributes: { [key: string]: string } = {};\n\n if (!isNullOrUndef(attributes)) {\n for (let i = 0; i < attributes.length; i++) {\n let attr = attributes[i];\n\n if (!isUndef(attr)) {\n flatAttributes[attr.name] = attr.value;\n }\n }\n }\n\n return flatAttributes;\n}\n\n/**\n * Create a <script> element\n */\nexport function createScriptElement(\n js: string,\n inline: boolean = false,\n attributes: { [key: string]: string } = {},\n) {\n const attrs = isObject(attributes) ? getObjectKeys(attributes) : [];\n const element = createHtmlElement(\"script\") as HTMLScriptElement;\n\n if (attrs.length) {\n attrs.forEach((name) => {\n element.setAttribute(name, attributes[name]);\n });\n }\n\n if (inline) {\n element.appendChild(document.createTextNode(js));\n } else {\n element.async = true;\n element.src = js;\n }\n\n return element;\n}\n\n/**\n * Create a <style> element\n */\nexport function createStyleElement(css: string | null) {\n const element = createHtmlElement(\"style\");\n\n if (css) {\n element.appendChild(document.createTextNode(css));\n }\n\n return element;\n}\n\n/**\n * Create a <link> element\n */\nexport function createLinkElement(href: string) {\n const element = createHtmlElement(\"link\") as HTMLLinkElement;\n\n element.rel = \"stylesheet\";\n element.href = href;\n\n return element;\n}\n\n/**\n * Create svg elements\n */\nexport function createSvgElement(\n content: string,\n attributes: { [key: string]: string },\n) {\n const attrs = getObjectKeys(attributes);\n const element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n\n if (attrs.length) {\n attrs.forEach((name) => {\n element.setAttribute(name, attributes[name]);\n });\n }\n\n element.innerHTML = content;\n\n return element;\n}\n\n/**\n * Append a new script element to the DOM head\n */\nexport function insertJs(js: string, inline = false) {\n const element = createScriptElement(js, inline);\n\n document.head.appendChild(element);\n}\n\n/**\n * Append a new style element to the DOM head\n */\nexport const insertCss = (\n css: string,\n className?: string,\n external = false,\n) => {\n const element = external ? createLinkElement(css) : createStyleElement(css);\n\n if (className) {\n element.className = className;\n }\n\n document.head.appendChild(element);\n};\n\n/**\n * Get screen sizes\n */\nexport function getScreenSize(): { width: number; height: number } {\n let width, height;\n\n if (window.screen) {\n width = screen.width;\n height = screen.height;\n } else {\n width = window.innerWidth;\n height = window.innerHeight;\n }\n\n return {\n width: width,\n height: height,\n };\n}\n\n/**\n * Get a random integer between min and max\n */\nexport function getRandomInt(min = 0, max = 4294967295) {\n min = Math.ceil(min);\n max = Math.floor(max);\n\n return Math.floor(Math.random() * (max - min)) + min;\n}\n\n/**\n * Create an image element to use as a tracking pixel\n */\nexport function createPixelElement(src: string) {\n const image = document.createElement(\"img\");\n\n image.src = src;\n image.width = 1;\n image.height = 1;\n image.style.position = \"absolute\";\n image.style.left = \"-99999px\";\n\n return image;\n}\n\n/**\n * Implementation of Java's String.hashCode() method\n */\nexport function hashCode(str: string) {\n let hash = 0,\n chr;\n\n for (let i = 0; i < str.length; i++) {\n chr = str.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0; // convert to 32bit integer\n }\n\n return hash >>> 0;\n}\n\n/**\n * Executes a callback as soon as DOM is interactive\n */\nexport function onDOMReady(callback: Function, ...args: any[]) {\n if (\n document.readyState === \"interactive\" ||\n document.readyState === \"complete\"\n ) {\n callback(...args);\n } else {\n document.addEventListener(\"DOMContentLoaded\", () => callback(...args));\n }\n}\n\n/**\n * Calculate the percentage of two values\n *\n * @param a\n * @param b\n * @return number\n */\nexport function toPercent(a: number, b: number): number {\n return b > 0 ? (a / b) * 100 : 0;\n}\n\n/**\n * Make a camelCase string\n *\n * @param string\n * @return string\n */\nexport function toCamelCase(string: string): string {\n return string\n .split(new RegExp(/[-_.]/))\n .reduce(\n (a: string, b: string) => a + b.charAt(0).toUpperCase() + b.slice(1),\n );\n}\n\n/**\n * Make a snake_case string\n *\n * @param string\n * @return string\n */\nexport function toSnakeCase(string: string): string {\n return toCamelCase(string)\n .replace(/(^[A-Z])?([A-Z])/gm, \"$1_$2\")\n .toLowerCase();\n}\n\n/**\n * Transform the first letter of the given string to the upper case\n *\n * @param string\n * @return string\n */\nexport function capitalize(string: string): string {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\n/**\n * Registry independent string sorting\n *\n * @param first\n * @param second\n */\nexport function sortByAlphabet(first: string, second: string): number {\n return first.toLowerCase() > second.toLowerCase() ? 1 : -1;\n}\n\n/**\n * @param length\n * @return string of max length 100\n */\nexport function getRandomStr(length?: number): string {\n length = length ? (length > 100 ? 100 : length) : 10;\n\n let str = Math.random().toString(36).substring(2);\n\n while (str.length < length) {\n str += Math.random().toString(36).substring(2);\n }\n\n const result = str.slice(-length);\n return isNaN(Number(result)) ? result : getRandomStr(length);\n}\n\nexport function getRandomItem(items: any[]): any {\n return items[Math.floor(Math.random() * items.length)];\n}\n\n/**\n * Summarize elements of the given array\n *\n * @param values\n * @return number | string - a summary of all the numbers in the array or an empty string if\n * there was only NaNs\n */\nexport function sumArray(values: Array<any>): number | string {\n if (values.every((value: any) => isNaN(value))) {\n return \"\";\n } else {\n return values.reduce((sum: any, curr: any) => {\n const value = Number(curr);\n\n if (!isNaN(value)) {\n return sum + value;\n } else {\n return sum;\n }\n }, 0);\n }\n}\n\n/**\n * Returns an array of the object keys which values are not present in filter\n *\n * @param obj\n * @param values\n */\nexport function filterObjectKeysByValues(\n obj: { [key: string]: any },\n values: Array<string | number | boolean | null | undefined>,\n): string[] {\n values = Array.isArray(values) ? values : Array(values);\n\n const keys = [];\n\n for (const key in obj) {\n if (!values.includes(obj[key])) {\n keys.push(key);\n }\n }\n\n return keys;\n}\n\nexport function getFromObject(object: object, key: string): any {\n return key.split(\".\").reduce((a: any, b: any) => {\n return a[b];\n }, object);\n}\n\nexport function fireBlurEvent(\n element: string | Element | null,\n delay: number = 0,\n): void {\n fireEvent(\"blur\", element, delay);\n}\n\nexport function fireInputEvent(\n element: string | Element | null,\n delay: number = 0,\n): void {\n fireEvent(\"input\", element, delay);\n}\n\nexport function fireEvent(\n eventName: string,\n element: string | Element | null,\n delay: number = 0,\n): void {\n setTimeout(() => {\n if (isString(element)) {\n element = document.querySelector(element);\n }\n\n if (!isNullOrUndef(element)) {\n element.dispatchEvent(\n new Event(eventName, {\n bubbles: true,\n }),\n );\n }\n }, delay);\n}\n\nexport function hasObjectChanged(\n object: { [key: string]: any },\n values: any[],\n): boolean {\n let hasChanged = false;\n\n for (const key in object) {\n let oldVal = object[key];\n let [, newVal] = values.find(([newKey]) => key === newKey);\n\n if (isObject(oldVal)) {\n if (!isObject(newVal)) {\n hasChanged = true;\n } else {\n hasChanged = hasObjectChanged(oldVal, Object.entries(newVal));\n }\n } else if (Array.isArray(newVal) || Array.isArray(oldVal)) {\n newVal = Array.isArray(newVal) ? newVal : [];\n oldVal = Array.isArray(oldVal) ? oldVal : [];\n\n hasChanged = arrayDiff(newVal, oldVal).length > 0;\n } else {\n hasChanged = areDiff(newVal, oldVal);\n }\n\n if (hasChanged) {\n break;\n }\n }\n\n return hasChanged;\n}\n\nexport function roundBigNum(number: number): number {\n const digitsNum = Math.trunc(number).toString().length;\n\n let roundTo = 0;\n switch (true) {\n case digitsNum > 2 && digitsNum < 5:\n roundTo = 100;\n break;\n case digitsNum >= 5:\n roundTo = 10000;\n break;\n }\n\n return roundTo ? Math.round(number / roundTo) * roundTo : number;\n}\n\nexport function extractNumbers(value: any): string {\n if (!isStr(value) && !isNum(value)) {\n return \"\";\n }\n return value.toString().replace(/[^0-9]/g, \"\");\n}\n\nexport function removeSpaces(value: any): string {\n if (!isStr(value) && !isNum(value)) {\n return \"\";\n }\n return value.toString().replace(/\\s/g, \"\");\n}\n\nexport function roundUp(num: number, precision: number): number {\n const multiplier = Number(\"1\".padEnd(precision + 1, \"0\"));\n return Math.ceil(num * multiplier) / multiplier;\n}\n\nexport function roundDown(num: number, precision: number): number {\n const multiplier = Number(\"1\".padEnd(precision + 1, \"0\"));\n return Math.floor(num * multiplier) / multiplier;\n}\n\nexport function areDiff(\n val1?: Primitive | null,\n val2?: Primitive | null,\n strict?: boolean,\n): boolean {\n if (strict) {\n return val1 !== val2;\n }\n\n // at least one value is not empty\n if (Boolean(val1) || Boolean(val2)) {\n return val1 != val2;\n }\n\n // both empty, but not equally empty!\n // each one may be one of: empty string, null or undefined\n return false;\n}\n\nexport function flattenObject(obj: FlattenableObject, prefix = \"\") {\n return Object.keys(obj).reduce((acc, k) => {\n const pre = prefix.length ? prefix + \".\" : \"\";\n if (isObject(obj[k]) || Array.isArray(obj[k])) {\n Object.assign(acc, flattenObject(obj[k], pre + k));\n } else {\n acc[pre + k] = obj[k];\n }\n return acc;\n }, {} as FlattenableObject);\n}\n\nexport function flattenObjectAsArray(obj: FlattenableObject) {\n const result: FlattenableObject = {};\n const flat = flattenObject(obj);\n Object.keys(flat).forEach((key) => {\n const newKey = key.replaceAll(/\\.([^.]+)/g, \"[$1]\");\n result[newKey] = flat[key];\n });\n\n return result;\n}\n\nexport function parseObjectPathStr(pathStr: string): string[] {\n const pathParts = pathStr.replace(/\\[/g, \".\").replace(/\\]/g, \"\").split(\".\");\n\n if (pathParts.length > 1 && pathParts[1].includes(\"[\")) {\n return [pathParts[0], ...parseObjectPathStr(pathParts[1])];\n }\n\n return pathParts;\n}\n\nexport function formatNumber(\n num: number | string,\n fractionDigits?: number,\n): string {\n fractionDigits = isNullOrUndef(fractionDigits) ? 2 : fractionDigits;\n return new Intl.NumberFormat(\"ru-RU\", {\n style: \"decimal\",\n minimumFractionDigits: fractionDigits,\n maximumFractionDigits: fractionDigits,\n })\n .format(Number(num))\n .replace(\",\", \".\")\n .replace(/\\u00A0/g, \" \"); // charCode 160, White-space\n}\n\nexport function formatNumberWithSign(\n num: number | string,\n fractionDigits?: number,\n): string {\n return formatWithSign(num, formatNumber(num, fractionDigits));\n}\n\nexport function formatPercent(num: number | string): string {\n return formatNumber(num) + \"%\";\n}\n\nexport function formatWithSign(\n num: number | string,\n numString?: string,\n): string {\n numString = numString ? numString : num.toString();\n return (Number(num) < 0 ? \"\" : \"+\") + numString;\n}\n\nexport function autoSizeText(\n el: HTMLElement,\n height: number,\n minFontSize: number,\n maxFontSize: number = 50,\n) {\n let attempts = 30;\n\n const resizeText = () => {\n if (getTextHeight() === 0) {\n return;\n }\n while (attempts && getTextHeight() > height) {\n attempts--;\n reduceText();\n }\n while (attempts && getTextHeight() < height) {\n attempts--;\n enlargeText();\n }\n };\n\n const reduceText = () => {\n const fontSize = getNumericStyleProp(\"fontSize\", el);\n const newFontSize = fontSize - 1;\n if (fontSize > 1 && newFontSize >= minFontSize) {\n el.style.fontSize = `${newFontSize}px`;\n }\n };\n\n const enlargeText = () => {\n const fontSize = getNumericStyleProp(\"fontSize\", el);\n const newFontSize = fontSize + 1;\n if (newFontSize <= maxFontSize) {\n el.style.fontSize = `${newFontSize}px`;\n }\n };\n\n const getTextHeight = () =>\n Math.floor(\n el.scrollHeight -\n getNumericStyleProp(\"paddingTop\", el) -\n getNumericStyleProp(\"paddingBottom\", el),\n );\n\n resizeText();\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { FlattenableObject, Primitive, SimpleObject } from \"./types\";\n\nexport function debounce(fn: Function, delay: number): () => void {\n let timeout: ReturnType<typeof setTimeout>;\n\n return function (...args: any[]) {\n clearTimeout(timeout);\n timeout = setTimeout(() => fn.apply(null, args), delay);\n };\n}\n\nexport function throttle(fn: Function, delay: number) {\n let lastCall = 0;\n\n return function (...args: any[]) {\n const now = new Date().getTime();\n if (now - lastCall < delay) {\n return;\n }\n lastCall = now;\n fn(...args);\n };\n}\n\nexport function isObject(obj: any): obj is object {\n return !!obj && typeof obj === \"object\" && !Array.isArray(obj);\n}\n\nexport function isFn(fn: any): fn is Function {\n return typeof fn === \"function\";\n}\n\nexport function isStr(str: any): boolean {\n return typeof str === \"string\";\n}\n\nexport function isString(str: any): str is string {\n return typeof str === \"string\";\n}\n\n/**\n * Check if the given argument is a string which is not empty\n */\nexport function isNotEmptyString(str: any) {\n return typeof str === \"string\" && str.length;\n}\n\nexport function isHTMLElement(el: any): el is HTMLElement {\n return el instanceof HTMLElement || el instanceof SVGElement;\n}\n\nexport function isNum(num: any): num is number {\n return typeof num === \"number\";\n}\n\nexport function isBool(bool: any): boolean {\n return typeof bool === \"boolean\";\n}\n\nexport function isUndef(val: any): val is undefined {\n return typeof val === \"undefined\";\n}\n\nexport function isNullOrUndef(value: unknown): value is null | undefined {\n return value === null || typeof value === \"undefined\";\n}\n\nexport function isDefined(val: any): boolean {\n return !isUndef(val);\n}\n\n/**\n * Returns an array containing all the elements of array1 that are not in array2 and vice-versa\n */\nexport function arrayDiff(\n array1: Array<Primitive | null | undefined>,\n array2: Array<Primitive | null | undefined>,\n): Array<Primitive | null | undefined> {\n return array1\n .filter((value) => !array2.includes(value))\n .concat(array2.filter((value: any) => !array1.includes(value)));\n}\n\n/**\n * Returns an array of elements present in array1 and array2\n */\nexport function arrayIntersect(\n array1: Array<Primitive | null | undefined>,\n array2: Array<Primitive | null | undefined>,\n) {\n return array1.filter((value) => array2.includes(value));\n}\n\nexport function deepCloneObject<Type>(object: Type): Type {\n return JSON.parse(JSON.stringify(object));\n}\n\nexport function getNumericStyleProp(prop: string, el: Element) {\n const styles: { [key: string]: any } = window.getComputedStyle(el);\n return !isNullOrUndef(styles[prop]) ? parseInt(styles[prop].slice(0, -2)) : 0;\n}\n\nexport function objectHasProp(\n obj: any,\n prop: string | number | symbol,\n): boolean {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n/**\n * Custom version of Object.keys()\n */\nexport function getObjectKeys(object: object): string[] {\n let key;\n let keys = [];\n\n for (key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n\n return keys;\n}\n\n/**\n * Convert an object to a query string\n * Works with primitive objects\n */\nexport function objectToQueryString(object: {\n [key: string | number]:\n | Primitive\n | Array<Primitive | null | undefined>\n | SimpleObject\n | { [key: string | number]: SimpleObject }\n | undefined\n | null;\n}): string {\n return Object.entries(object)\n .map(([k, v]) => {\n if (Array.isArray(v)) {\n return v\n .map((item) => `${k}[]=${encodeURIComponent(item || \"\")}`)\n .join(\"&\");\n } else if (isObject(v)) {\n return `${k}=${encodeURIComponent(JSON.stringify(v))}`;\n }\n return `${k}=${encodeURIComponent(v || \"\")}`;\n })\n .join(\"&\");\n}\n\nexport function countObjectInnerLength(object: {\n [key: string | number]: any[];\n}) {\n const obj = Object.values(object);\n 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.substr(0, index) + parseURL(url).search;\n }\n }\n\n return url;\n}\n\nexport function injectScript(filename: string): void {\n const script = document.createElement(\"script\");\n script.src = filename;\n script.async = true;\n document.head.appendChild(script);\n}\n\nexport function injectStyleLink(filename: string): void {\n const link = document.createElement(\"link\");\n link.rel = \"stylesheet\";\n link.href = filename;\n document.head.appendChild(link);\n}\n\nexport function toBinaryStr(str: string) {\n const encoder = new TextEncoder();\n // 1: split the UTF-16 string into an array of bytes\n const charCodes = encoder.encode(str);\n // 2: concatenate byte data to create a binary string\n return String.fromCharCode(...charCodes);\n}\n\n/**\n * Find a DOM element where an ad unit should be rendered to\n */\nexport function getHtmlElement(id: string) {\n return document.getElementById(id);\n}\n\n/**\n * Convert an HTML string into a list of nodes\n */\nexport function stringToHtmlElements(html: string): NodeListOf<ChildNode> {\n const template = createHtmlElement(\"div\");\n template.innerHTML = html.replace(/[\\r\\n]/gm, \"\").trim();\n return template.childNodes;\n}\n\n/**\n * Creates an HTML element and sets attributes\n */\nexport function createHtmlElement(\n type: string,\n attributes: { [key: string]: string } = {},\n): HTMLElement {\n const attrs = getObjectKeys(attributes);\n const element = document.createElement(type);\n\n if (attrs.length) {\n attrs.forEach((name) => {\n element.setAttribute(name, attributes[name]);\n });\n }\n\n return element;\n}\n\n/**\n * Insert HTML elements into DOM\n */\nexport function insertHtmlElements(\n nodes: NodeListOf<Node>,\n appendTo?: Element,\n) {\n appendTo = appendTo || document.body;\n\n const fragment = new DocumentFragment();\n\n for (let i = 0; i < nodes.length; i++) {\n // skip non tags and non text, 3 for text nodes\n if (!isHTMLElement(nodes[i]) && nodes[i].nodeType !== 3) {\n continue;\n }\n\n const node = nodes[i] as HTMLElement;\n let newNode;\n\n switch (node.nodeName.toLowerCase()) {\n case \"script\":\n const src = node.getAttribute(\"src\");\n\n if (!isNullOrUndef(src) && src.length > 0) {\n newNode = createScriptElement(\n src,\n false,\n flatHtmlAttributes(node.attributes),\n );\n } else {\n newNode = createScriptElement(\n node.innerHTML,\n true,\n flatHtmlAttributes(node.attributes),\n );\n }\n break;\n\n case \"style\":\n newNode = createStyleElement(node.textContent);\n break;\n\n case \"svg\":\n newNode = createSvgElement(\n node.innerHTML,\n flatHtmlAttributes(node.attributes),\n );\n break;\n\n case \"#text\":\n newNode = document.createTextNode(node.textContent ?? \"\");\n break;\n\n default:\n newNode = createHtmlElement(\n node.tagName,\n flatHtmlAttributes(node.attributes),\n );\n\n // recursive\n if (node.childNodes.length) {\n insertHtmlElements(node.childNodes, newNode);\n } else {\n newNode.innerHTML = node.innerHTML;\n }\n }\n\n fragment.appendChild(newNode);\n }\n\n appendTo.appendChild(fragment);\n}\n\n/**\n * Make a simple object which contains only attribute name and value\n */\nexport function flatHtmlAttributes(attributes?: NamedNodeMap) {\n let flatAttributes: { [key: string]: string } = {};\n\n if (!isNullOrUndef(attributes)) {\n for (let i = 0; i < attributes.length; i++) {\n let attr = attributes[i];\n\n if (!isUndef(attr)) {\n flatAttributes[attr.name] = attr.value;\n }\n }\n }\n\n return flatAttributes;\n}\n\n/**\n * Create a <script> element\n */\nexport function createScriptElement(\n js: string,\n inline: boolean = false,\n attributes: { [key: string]: string } = {},\n) {\n const attrs = isObject(attributes) ? getObjectKeys(attributes) : [];\n const element = createHtmlElement(\"script\") as HTMLScriptElement;\n\n if (attrs.length) {\n attrs.forEach((name) => {\n element.setAttribute(name, attributes[name]);\n });\n }\n\n if (inline) {\n element.appendChild(document.createTextNode(js));\n } else {\n element.async = true;\n element.src = js;\n }\n\n return element;\n}\n\n/**\n * Create a <style> element\n */\nexport function createStyleElement(css: string | null) {\n const element = createHtmlElement(\"style\");\n\n if (css) {\n element.appendChild(document.createTextNode(css));\n }\n\n return element;\n}\n\n/**\n * Create a <link> element\n */\nexport function createLinkElement(href: string) {\n const element = createHtmlElement(\"link\") as HTMLLinkElement;\n\n element.rel = \"stylesheet\";\n element.href = href;\n\n return element;\n}\n\n/**\n * Create svg elements\n */\nexport function createSvgElement(\n content: string,\n attributes: { [key: string]: string },\n) {\n const attrs = getObjectKeys(attributes);\n const element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n\n if (attrs.length) {\n attrs.forEach((name) => {\n element.setAttribute(name, attributes[name]);\n });\n }\n\n element.innerHTML = content;\n\n return element;\n}\n\n/**\n * Create an image element to use as a tracking pixel\n */\nexport function createPixelElement(src: string) {\n const image = document.createElement(\"img\");\n\n image.src = src;\n image.width = 1;\n image.height = 1;\n image.style.position = \"absolute\";\n image.style.left = \"-99999px\";\n\n return image;\n}\n\n/**\n * Append a new script element to the DOM head\n */\nexport function insertJs(js: string, inline = false) {\n const element = createScriptElement(js, inline);\n\n document.head.appendChild(element);\n}\n\n/**\n * Append a new style element to the DOM head\n */\nexport function insertCss(css: string, className?: string, external = false) {\n const element = external ? createLinkElement(css) : createStyleElement(css);\n\n if (className) {\n element.className = className;\n }\n\n document.head.appendChild(element);\n}\n\n/**\n * Get screen sizes\n */\nexport function getScreenSize(): { width: number; height: number } {\n let width, height;\n\n if (window.screen) {\n width = screen.width;\n height = screen.height;\n } else {\n width = window.innerWidth;\n height = window.innerHeight;\n }\n\n return {\n width: width,\n height: height,\n };\n}\n\n/**\n * Get a random integer between min and max\n */\nexport function getRandomInt(min = 0, max = 4294967295) {\n min = Math.ceil(min);\n max = Math.floor(max);\n\n return Math.floor(Math.random() * (max - min)) + min;\n}\n\n/**\n * Implementation of Java's String.hashCode() method\n */\nexport function hashCode(str: string) {\n let hash = 0,\n chr;\n\n for (let i = 0; i < str.length; i++) {\n chr = str.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0; // convert to 32bit integer\n }\n\n return hash >>> 0;\n}\n\n/**\n * Executes a callback as soon as DOM is interactive\n */\nexport function onDOMReady(callback: Function, ...args: any[]) {\n if (\n document.readyState === \"interactive\" ||\n document.readyState === \"complete\"\n ) {\n callback(...args);\n } else {\n document.addEventListener(\"DOMContentLoaded\", () => callback(...args));\n }\n}\n\n/**\n * Calculate the percentage of two values\n *\n * @param a\n * @param b\n * @return number\n */\nexport function toPercent(a: number, b: number): number {\n return b > 0 ? (a / b) * 100 : 0;\n}\n\n/**\n * Make a camelCase string\n *\n * @param string\n * @return string\n */\nexport function toCamelCase(string: string): string {\n return string\n .split(new RegExp(/[-_.]/))\n .reduce(\n (a: string, b: string) => a + b.charAt(0).toUpperCase() + b.slice(1),\n );\n}\n\n/**\n * Make a snake_case string\n *\n * @param string\n * @return string\n */\nexport function toSnakeCase(string: string): string {\n return toCamelCase(string)\n .replace(/(^[A-Z])?([A-Z])/gm, \"$1_$2\")\n .toLowerCase();\n}\n\n/**\n * Transform the first letter of the given string to the upper case\n *\n * @param string\n * @return string\n */\nexport function capitalize(string: string): string {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\n/**\n * Registry independent string sorting\n *\n * @param first\n * @param second\n */\nexport function sortByAlphabet(first: string, second: string): number {\n return first.toLowerCase() > second.toLowerCase() ? 1 : -1;\n}\n\n/**\n * @param length\n * @return string of max length 100\n */\nexport function getRandomStr(length?: number): string {\n length = length ? (length > 100 ? 100 : length) : 10;\n\n let str = Math.random().toString(36).substring(2);\n\n while (str.length < length) {\n str += Math.random().toString(36).substring(2);\n }\n\n const result = str.slice(-length);\n return isNaN(Number(result)) ? result : getRandomStr(length);\n}\n\nexport function getRandomItem(items: any[]): any {\n return items[Math.floor(Math.random() * items.length)];\n}\n\n/**\n * Summarize elements of the given array\n *\n * @param values\n * @return number | string - a summary of all the numbers in the array or an empty string if\n * there was only NaNs\n */\nexport function sumArray(values: Array<any>): number | string {\n if (values.every((value: any) => isNaN(value))) {\n return \"\";\n } else {\n return values.reduce((sum: any, curr: any) => {\n const value = Number(curr);\n\n if (!isNaN(value)) {\n return sum + value;\n } else {\n return sum;\n }\n }, 0);\n }\n}\n\n/**\n * Returns an array of the object keys which values are not present in filter\n *\n * @param obj\n * @param values\n */\nexport function filterObjectKeysByValues(\n obj: { [key: string]: any },\n values: Array<string | number | boolean | null | undefined>,\n): string[] {\n values = Array.isArray(values) ? values : Array(values);\n\n const keys = [];\n\n for (const key in obj) {\n if (!values.includes(obj[key])) {\n keys.push(key);\n }\n }\n\n return keys;\n}\n\nexport function getFromObject(object: object, key: string): any {\n return key.split(\".\").reduce((a: any, b: any) => {\n return a[b];\n }, object);\n}\n\nexport function fireBlurEvent(\n element: string | Element | null,\n delay: number = 0,\n): void {\n fireEvent(\"blur\", element, delay);\n}\n\nexport function fireInputEvent(\n element: string | Element | null,\n delay: number = 0,\n): void {\n fireEvent(\"input\", element, delay);\n}\n\nexport function fireEvent(\n eventName: string,\n element: string | Element | null,\n delay: number = 0,\n): void {\n setTimeout(() => {\n if (isString(element)) {\n element = document.querySelector(element);\n }\n\n if (!isNullOrUndef(element)) {\n element.dispatchEvent(\n new Event(eventName, {\n bubbles: true,\n }),\n );\n }\n }, delay);\n}\n\nexport function hasObjectChanged(\n object: { [key: string]: any },\n values: any[],\n): boolean {\n let hasChanged = false;\n\n for (const key in object) {\n let oldVal = object[key];\n let [, newVal] = values.find(([newKey]) => key === newKey);\n\n if (isObject(oldVal)) {\n if (!isObject(newVal)) {\n hasChanged = true;\n } else {\n hasChanged = hasObjectChanged(oldVal, Object.entries(newVal));\n }\n } else if (Array.isArray(newVal) || Array.isArray(oldVal)) {\n newVal = Array.isArray(newVal) ? newVal : [];\n oldVal = Array.isArray(oldVal) ? oldVal : [];\n\n hasChanged = arrayDiff(newVal, oldVal).length > 0;\n } else {\n hasChanged = areDiff(newVal, oldVal);\n }\n\n if (hasChanged) {\n break;\n }\n }\n\n return hasChanged;\n}\n\nexport function roundBigNum(number: number): number {\n const digitsNum = Math.trunc(number).toString().length;\n\n let roundTo = 0;\n switch (true) {\n case digitsNum > 2 && digitsNum < 5:\n roundTo = 100;\n break;\n case digitsNum >= 5:\n roundTo = 10000;\n break;\n }\n\n return roundTo ? Math.round(number / roundTo) * roundTo : number;\n}\n\nexport function extractNumbers(value: any): string {\n if (!isStr(value) && !isNum(value)) {\n return \"\";\n }\n return value.toString().replace(/[^0-9]/g, \"\");\n}\n\nexport function removeSpaces(value: any): string {\n if (!isStr(value) && !isNum(value)) {\n return \"\";\n }\n return value.toString().replace(/\\s/g, \"\");\n}\n\nexport function roundUp(num: number, precision: number): number {\n const multiplier = Number(\"1\".padEnd(precision + 1, \"0\"));\n return Math.ceil(num * multiplier) / multiplier;\n}\n\nexport function roundDown(num: number, precision: number): number {\n const multiplier = Number(\"1\".padEnd(precision + 1, \"0\"));\n return Math.floor(num * multiplier) / multiplier;\n}\n\nexport function areDiff(\n val1?: Primitive | null,\n val2?: Primitive | null,\n strict?: boolean,\n): boolean {\n if (strict) {\n return val1 !== val2;\n }\n\n // at least one value is not empty\n if (Boolean(val1) || Boolean(val2)) {\n return val1 != val2;\n }\n\n // both empty, but not equally empty!\n // each one may be one of: empty string, null or undefined\n return false;\n}\n\nexport function flattenObject(obj: FlattenableObject, prefix = \"\") {\n return Object.keys(obj).reduce((acc, k) => {\n const pre = prefix.length ? prefix + \".\" : \"\";\n if (isObject(obj[k]) || Array.isArray(obj[k])) {\n Object.assign(acc, flattenObject(obj[k], pre + k));\n } else {\n acc[pre + k] = obj[k];\n }\n return acc;\n }, {} as FlattenableObject);\n}\n\nexport function flattenObjectAsArray(obj: FlattenableObject) {\n const result: FlattenableObject = {};\n const flat = flattenObject(obj);\n Object.keys(flat).forEach((key) => {\n const newKey = key.replaceAll(/\\.([^.]+)/g, \"[$1]\");\n result[newKey] = flat[key];\n });\n\n return result;\n}\n\nexport function parseObjectPathStr(pathStr: string): string[] {\n const pathParts = pathStr.replace(/\\[/g, \".\").replace(/\\]/g, \"\").split(\".\");\n\n if (pathParts.length > 1 && pathParts[1].includes(\"[\")) {\n return [pathParts[0], ...parseObjectPathStr(pathParts[1])];\n }\n\n return pathParts;\n}\n\nexport function formatNumber(\n num: number | string,\n fractionDigits?: number,\n): string {\n fractionDigits = isNullOrUndef(fractionDigits) ? 2 : fractionDigits;\n return new Intl.NumberFormat(\"ru-RU\", {\n style: \"decimal\",\n minimumFractionDigits: fractionDigits,\n maximumFractionDigits: fractionDigits,\n })\n .format(Number(num))\n .replace(\",\", \".\")\n .replace(/\\u00A0/g, \" \"); // charCode 160, White-space\n}\n\nexport function formatNumberWithSign(\n num: number | string,\n fractionDigits?: number,\n): string {\n return formatWithSign(num, formatNumber(num, fractionDigits));\n}\n\nexport function formatPercent(num: number | string): string {\n return formatNumber(num) + \"%\";\n}\n\nexport function formatWithSign(\n num: number | string,\n numString?: string,\n): string {\n numString = numString ? numString : num.toString();\n return (Number(num) < 0 ? \"\" : \"+\") + numString;\n}\n\nexport function autoSizeText(\n el: HTMLElement,\n height: number,\n minFontSize: number,\n maxFontSize: number = 50,\n) {\n let attempts = 30;\n\n const resizeText = () => {\n if (getTextHeight() === 0) {\n return;\n }\n while (attempts && getTextHeight() > height) {\n attempts--;\n reduceText();\n }\n while (attempts && getTextHeight() < height) {\n attempts--;\n enlargeText();\n }\n };\n\n const reduceText = () => {\n const fontSize = getNumericStyleProp(\"fontSize\", el);\n const newFontSize = fontSize - 1;\n if (fontSize > 1 && newFontSize >= minFontSize) {\n el.style.fontSize = `${newFontSize}px`;\n }\n };\n\n const enlargeText = () => {\n const fontSize = getNumericStyleProp(\"fontSize\", el);\n const newFontSize = fontSize + 1;\n if (newFontSize <= maxFontSize) {\n el.style.fontSize = `${newFontSize}px`;\n }\n };\n\n const getTextHeight = () =>\n Math.floor(\n el.scrollHeight -\n getNumericStyleProp(\"paddingTop\", el) -\n getNumericStyleProp(\"paddingBottom\", el),\n );\n\n resizeText();\n}\n"],"names":[],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -2,7 +2,7 @@ function debounce(fn, delay) {
2
2
  let timeout;
3
3
  return function(...args) {
4
4
  clearTimeout(timeout);
5
- timeout = setTimeout(() => fn.apply(this, args), delay);
5
+ timeout = setTimeout(() => fn.apply(null, args), delay);
6
6
  };
7
7
  }
8
8
  function throttle(fn, delay) {
@@ -28,6 +28,9 @@ function isStr(str) {
28
28
  function isString(str) {
29
29
  return typeof str === "string";
30
30
  }
31
+ function isNotEmptyString(str) {
32
+ return typeof str === "string" && str.length;
33
+ }
31
34
  function isHTMLElement(el) {
32
35
  return el instanceof HTMLElement || el instanceof SVGElement;
33
36
  }
@@ -75,7 +78,7 @@ function getObjectKeys(object) {
75
78
  function objectToQueryString(object) {
76
79
  return Object.entries(object).map(([k, v]) => {
77
80
  if (Array.isArray(v)) {
78
- return v.map((item) => `${k}[]=${encodeURIComponent(item)}`).join("&");
81
+ return v.map((item) => `${k}[]=${encodeURIComponent(item || "")}`).join("&");
79
82
  } else if (isObject(v)) {
80
83
  return `${k}=${encodeURIComponent(JSON.stringify(v))}`;
81
84
  }
@@ -84,17 +87,24 @@ function objectToQueryString(object) {
84
87
  }
85
88
  function countObjectInnerLength(object) {
86
89
  const obj = Object.values(object);
87
- return obj.length === 1 ? obj[0].length : obj.reduce((acc, cur) => {
88
- if (Array.isArray(acc)) {
89
- acc = acc.length;
90
- }
91
- if (cur) {
92
- acc += cur.length;
93
- }
94
- return acc;
95
- });
90
+ const len = obj.length;
91
+ if (len === 0) {
92
+ return 0;
93
+ } else if (len === 1) {
94
+ return obj[0].length;
95
+ } else {
96
+ return obj.reduce((acc, cur) => {
97
+ if (Array.isArray(acc)) {
98
+ acc = acc.length;
99
+ }
100
+ if (cur) {
101
+ acc += cur.length;
102
+ }
103
+ return acc;
104
+ });
105
+ }
96
106
  }
97
- const isElementVisible = (element, minVisiblePercent = 50) => {
107
+ function isElementVisible(element, minVisiblePercent = 50) {
98
108
  const elementCoords = element.getBoundingClientRect();
99
109
  const elementHeight = elementCoords.height;
100
110
  if (!elementHeight) {
@@ -111,9 +121,6 @@ const isElementVisible = (element, minVisiblePercent = 50) => {
111
121
  elementBottom
112
122
  );
113
123
  return elementVisibleHeight / elementHeight * 100 >= minVisiblePercent;
114
- };
115
- function getHtmlElement(id) {
116
- return document.getElementById(id);
117
124
  }
118
125
  function decodeSafeURL(url) {
119
126
  try {
@@ -123,6 +130,7 @@ function decodeSafeURL(url) {
123
130
  }
124
131
  }
125
132
  function getSafeURL(url) {
133
+ url = url ? url : location.href;
126
134
  return encodeURI(decodeSafeURL(url));
127
135
  }
128
136
  function parseURL(url) {
@@ -154,6 +162,9 @@ function toBinaryStr(str) {
154
162
  const charCodes = encoder.encode(str);
155
163
  return String.fromCharCode(...charCodes);
156
164
  }
165
+ function getHtmlElement(id) {
166
+ return document.getElementById(id);
167
+ }
157
168
  function stringToHtmlElements(html) {
158
169
  const template = createHtmlElement("div");
159
170
  template.innerHTML = html.replace(/[\r\n]/gm, "").trim();
@@ -169,7 +180,7 @@ function createHtmlElement(type, attributes = {}) {
169
180
  }
170
181
  return element;
171
182
  }
172
- function insertHtmlElements(nodes, appendTo = null) {
183
+ function insertHtmlElements(nodes, appendTo) {
173
184
  appendTo = appendTo || document.body;
174
185
  const fragment = new DocumentFragment();
175
186
  for (let i = 0; i < nodes.length; i++) {
@@ -188,7 +199,11 @@ function insertHtmlElements(nodes, appendTo = null) {
188
199
  flatHtmlAttributes(node.attributes)
189
200
  );
190
201
  } else {
191
- newNode = createScriptElement(node.innerHTML, true);
202
+ newNode = createScriptElement(
203
+ node.innerHTML,
204
+ true,
205
+ flatHtmlAttributes(node.attributes)
206
+ );
192
207
  }
193
208
  break;
194
209
  case "style":
@@ -270,17 +285,26 @@ function createSvgElement(content, attributes) {
270
285
  element.innerHTML = content;
271
286
  return element;
272
287
  }
288
+ function createPixelElement(src) {
289
+ const image = document.createElement("img");
290
+ image.src = src;
291
+ image.width = 1;
292
+ image.height = 1;
293
+ image.style.position = "absolute";
294
+ image.style.left = "-99999px";
295
+ return image;
296
+ }
273
297
  function insertJs(js, inline = false) {
274
298
  const element = createScriptElement(js, inline);
275
299
  document.head.appendChild(element);
276
300
  }
277
- const insertCss = (css, className, external = false) => {
301
+ function insertCss(css, className, external = false) {
278
302
  const element = external ? createLinkElement(css) : createStyleElement(css);
279
303
  if (className) {
280
304
  element.className = className;
281
305
  }
282
306
  document.head.appendChild(element);
283
- };
307
+ }
284
308
  function getScreenSize() {
285
309
  let width, height;
286
310
  if (window.screen) {
@@ -300,15 +324,6 @@ function getRandomInt(min = 0, max = 4294967295) {
300
324
  max = Math.floor(max);
301
325
  return Math.floor(Math.random() * (max - min)) + min;
302
326
  }
303
- function createPixelElement(src) {
304
- const image = document.createElement("img");
305
- image.src = src;
306
- image.width = 1;
307
- image.height = 1;
308
- image.style.position = "absolute";
309
- image.style.left = "-99999px";
310
- return image;
311
- }
312
327
  function hashCode(str) {
313
328
  let hash = 0, chr;
314
329
  for (let i = 0; i < str.length; i++) {
@@ -549,5 +564,5 @@ function autoSizeText(el, height, minFontSize, maxFontSize = 50) {
549
564
  resizeText();
550
565
  }
551
566
 
552
- export { areDiff, arrayDiff, arrayIntersect, autoSizeText, capitalize, countObjectInnerLength, createHtmlElement, createLinkElement, createPixelElement, createScriptElement, createStyleElement, createSvgElement, debounce, decodeSafeURL, deepCloneObject, encodeQueryString, extractNumbers, filterObjectKeysByValues, fireBlurEvent, fireEvent, fireInputEvent, flatHtmlAttributes, flattenObject, flattenObjectAsArray, formatNumber, formatNumberWithSign, formatPercent, formatWithSign, getFromObject, getHtmlElement, getNumericStyleProp, getObjectKeys, getRandomInt, getRandomItem, getRandomStr, getSafeURL, getScreenSize, hasObjectChanged, hashCode, injectScript, injectStyleLink, insertCss, insertHtmlElements, insertJs, isBool, isDefined, isElementVisible, isFn, isHTMLElement, isNullOrUndef, isNum, isObject, isStr, isString, isUndef, objectHasProp, objectToQueryString, onDOMReady, parseObjectPathStr, parseURL, removeSpaces, roundBigNum, roundDown, roundUp, sortByAlphabet, stringToHtmlElements, sumArray, throttle, toBinaryStr, toCamelCase, toPercent, toSnakeCase };
567
+ export { areDiff, arrayDiff, arrayIntersect, autoSizeText, capitalize, countObjectInnerLength, createHtmlElement, createLinkElement, createPixelElement, createScriptElement, createStyleElement, createSvgElement, debounce, decodeSafeURL, deepCloneObject, encodeQueryString, extractNumbers, filterObjectKeysByValues, fireBlurEvent, fireEvent, fireInputEvent, flatHtmlAttributes, flattenObject, flattenObjectAsArray, formatNumber, formatNumberWithSign, formatPercent, formatWithSign, getFromObject, getHtmlElement, getNumericStyleProp, getObjectKeys, getRandomInt, getRandomItem, getRandomStr, getSafeURL, getScreenSize, hasObjectChanged, hashCode, injectScript, injectStyleLink, insertCss, insertHtmlElements, insertJs, isBool, isDefined, isElementVisible, isFn, isHTMLElement, isNotEmptyString, isNullOrUndef, isNum, isObject, isStr, isString, isUndef, objectHasProp, objectToQueryString, onDOMReady, parseObjectPathStr, parseURL, removeSpaces, roundBigNum, roundDown, roundUp, sortByAlphabet, stringToHtmlElements, sumArray, throttle, toBinaryStr, toCamelCase, toPercent, toSnakeCase };
553
568
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import { FlattenableObject, Primitive, SimpleObject } from \"./types\";\n\nexport function debounce(fn: Function, delay: number): () => void {\n let timeout: ReturnType<typeof setTimeout>;\n\n return function (this: any, ...args: any[]) {\n clearTimeout(timeout);\n timeout = setTimeout(() => fn.apply(this, args), delay);\n };\n}\n\nexport function throttle(fn: Function, delay: number) {\n let lastCall = 0;\n\n return function (...args: any[]) {\n const now = new Date().getTime();\n if (now - lastCall < delay) {\n return;\n }\n lastCall = now;\n fn(...args);\n };\n}\n\nexport function isObject(obj: any): obj is object {\n return !!obj && typeof obj === \"object\" && !Array.isArray(obj);\n}\n\nexport function isFn(fn: any): fn is Function {\n return typeof fn === \"function\";\n}\n\nexport function isStr(str: any): boolean {\n return typeof str === \"string\";\n}\n\nexport function isString(str: any): str is string {\n return typeof str === \"string\";\n}\n\nexport function isHTMLElement(el: any): el is HTMLElement {\n return el instanceof HTMLElement || el instanceof SVGElement;\n}\n\nexport function isNum(num: any): num is number {\n return typeof num === \"number\";\n}\n\nexport function isBool(bool: any): boolean {\n return typeof bool === \"boolean\";\n}\n\nexport function isUndef(val: any): val is undefined {\n return typeof val === \"undefined\";\n}\n\nexport function isNullOrUndef(value: unknown): value is null | undefined {\n return value === null || typeof value === \"undefined\";\n}\n\nexport function isDefined(val: any): boolean {\n return !isUndef(val);\n}\n\n/**\n * Returns an array containing all the elements of array1 that are not in array2 and vice-versa\n */\nexport function arrayDiff(\n array1: Array<Primitive | null | undefined>,\n array2: Array<Primitive | null | undefined>,\n): Array<Primitive | null | undefined> {\n return array1\n .filter((value) => !array2.includes(value))\n .concat(array2.filter((value: any) => !array1.includes(value)));\n}\n\n/**\n * Returns an array of elements present in array1 and array2\n */\nexport function arrayIntersect(\n array1: Array<Primitive | null | undefined>,\n array2: Array<Primitive | null | undefined>,\n) {\n return array1.filter((value) => array2.includes(value));\n}\n\nexport function deepCloneObject<Type>(object: Type): Type {\n return JSON.parse(JSON.stringify(object));\n}\n\nexport function getNumericStyleProp(prop: string, el: Element) {\n const styles: { [key: string]: any } = window.getComputedStyle(el);\n return !isNullOrUndef(styles[prop]) ? parseInt(styles[prop].slice(0, -2)) : 0;\n}\n\nexport function objectHasProp(\n obj: any,\n prop: string | number | symbol,\n): boolean {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n/**\n * Custom version of Object.keys()\n */\nexport function getObjectKeys(object: object): string[] {\n let key;\n let keys = [];\n\n for (key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n\n return keys;\n}\n\n/**\n * Works with primitive objects, see JSDoc @param\n */\nexport function objectToQueryString(object: {\n [key: string]: SimpleObject | { [key: string]: SimpleObject };\n}): string {\n return Object.entries(object)\n .map(([k, v]) => {\n if (Array.isArray(v)) {\n return v.map((item) => `${k}[]=${encodeURIComponent(item)}`).join(\"&\");\n } else if (isObject(v)) {\n return `${k}=${encodeURIComponent(JSON.stringify(v))}`;\n }\n return `${k}=${encodeURIComponent(v || \"\")}`;\n })\n .join(\"&\");\n}\n\nexport function countObjectInnerLength(object: {\n [key: string | number]: any;\n}) {\n const obj = Object.values(object);\n\n return obj.length === 1\n ? obj[0].length\n : obj.reduce((acc, cur) => {\n if (Array.isArray(acc)) {\n acc = acc.length;\n }\n if (cur) {\n acc += cur.length;\n }\n return acc;\n });\n}\n\n/**\n * Check if the element is in viewport\n */\nexport const isElementVisible = (\n element: HTMLElement,\n minVisiblePercent = 50,\n) => {\n const elementCoords = element.getBoundingClientRect();\n const elementHeight = elementCoords.height;\n\n if (!elementHeight) {\n return false;\n }\n\n const elementTop = elementCoords.top;\n const elementBottom = elementCoords.bottom;\n const viewPortHeight = window.innerHeight;\n\n const elementVisibleHeight =\n elementTop > 0\n ? // the element is in or below viewport\n viewPortHeight - elementTop\n : // the element is still in or above viewport\n elementBottom;\n\n return (elementVisibleHeight / elementHeight) * 100 >= minVisiblePercent;\n};\n\n/**\n * Find a DOM element where an ad unit should be rendered to\n */\nexport function getHtmlElement(id: string) {\n return document.getElementById(id);\n}\n\nexport function decodeSafeURL(url: string): string {\n try {\n return decodeURI(url);\n } catch (e) {\n return url;\n }\n}\n\nexport function getSafeURL(url: string): string {\n return encodeURI(decodeSafeURL(url));\n}\n\nexport function parseURL(url: string): URL {\n return new URL(url);\n}\n\nexport function encodeQueryString(url: string): string {\n if (url.length > 0) {\n const index = url.indexOf(\"?\");\n if (index >= 0) {\n return url.substr(0, index) + parseURL(url).search;\n }\n }\n\n return url;\n}\n\nexport function injectScript(filename: string): void {\n const script = document.createElement(\"script\");\n script.src = filename;\n script.async = true;\n document.head.appendChild(script);\n}\n\nexport function injectStyleLink(filename: string): void {\n const link = document.createElement(\"link\");\n link.rel = \"stylesheet\";\n link.href = filename;\n document.head.appendChild(link);\n}\n\nexport function toBinaryStr(str: string) {\n const encoder = new TextEncoder();\n // 1: split the UTF-16 string into an array of bytes\n const charCodes = encoder.encode(str);\n // 2: concatenate byte data to create a binary string\n return String.fromCharCode(...charCodes);\n}\n\n/**\n * Convert an HTML string into a list of nodes\n */\nexport function stringToHtmlElements(html: string): NodeListOf<ChildNode> {\n const template = createHtmlElement(\"div\");\n template.innerHTML = html.replace(/[\\r\\n]/gm, \"\").trim();\n return template.childNodes;\n}\n\n/**\n * Creates an HTML element and sets attributes\n */\nexport function createHtmlElement(\n type: string,\n attributes: { [key: string]: string } = {},\n): HTMLElement {\n const attrs = getObjectKeys(attributes);\n const element = document.createElement(type);\n\n if (attrs.length) {\n attrs.forEach((name) => {\n element.setAttribute(name, attributes[name]);\n });\n }\n\n return element;\n}\n\n/**\n * Insert HTML elements into DOM\n */\nexport function insertHtmlElements(\n nodes: NodeListOf<Node>,\n appendTo: Element | null = null,\n) {\n appendTo = appendTo || document.body;\n\n const fragment = new DocumentFragment();\n\n for (let i = 0; i < nodes.length; i++) {\n // skip non tags and non text, 3 for text nodes\n if (!isHTMLElement(nodes[i]) && nodes[i].nodeType !== 3) {\n continue;\n }\n\n const node = nodes[i] as HTMLElement;\n let newNode;\n\n switch (node.nodeName.toLowerCase()) {\n case \"script\":\n const src = node.getAttribute(\"src\");\n\n if (!isNullOrUndef(src) && src.length > 0) {\n newNode = createScriptElement(\n src,\n false,\n flatHtmlAttributes(node.attributes),\n );\n } else {\n newNode = createScriptElement(node.innerHTML, true);\n }\n break;\n\n case \"style\":\n newNode = createStyleElement(node.textContent);\n break;\n\n case \"svg\":\n newNode = createSvgElement(\n node.innerHTML,\n flatHtmlAttributes(node.attributes),\n );\n break;\n\n case \"#text\":\n newNode = document.createTextNode(node.textContent ?? \"\");\n break;\n\n default:\n newNode = createHtmlElement(\n node.tagName,\n flatHtmlAttributes(node.attributes),\n );\n\n // recursive\n if (node.childNodes.length) {\n insertHtmlElements(node.childNodes, newNode);\n } else {\n newNode.innerHTML = node.innerHTML;\n }\n }\n\n fragment.appendChild(newNode);\n }\n\n appendTo.appendChild(fragment);\n}\n\n/**\n * Make a simple object which contains only attribute name and value\n */\nexport function flatHtmlAttributes(attributes?: NamedNodeMap) {\n let flatAttributes: { [key: string]: string } = {};\n\n if (!isNullOrUndef(attributes)) {\n for (let i = 0; i < attributes.length; i++) {\n let attr = attributes[i];\n\n if (!isUndef(attr)) {\n flatAttributes[attr.name] = attr.value;\n }\n }\n }\n\n return flatAttributes;\n}\n\n/**\n * Create a <script> element\n */\nexport function createScriptElement(\n js: string,\n inline: boolean = false,\n attributes: { [key: string]: string } = {},\n) {\n const attrs = isObject(attributes) ? getObjectKeys(attributes) : [];\n const element = createHtmlElement(\"script\") as HTMLScriptElement;\n\n if (attrs.length) {\n attrs.forEach((name) => {\n element.setAttribute(name, attributes[name]);\n });\n }\n\n if (inline) {\n element.appendChild(document.createTextNode(js));\n } else {\n element.async = true;\n element.src = js;\n }\n\n return element;\n}\n\n/**\n * Create a <style> element\n */\nexport function createStyleElement(css: string | null) {\n const element = createHtmlElement(\"style\");\n\n if (css) {\n element.appendChild(document.createTextNode(css));\n }\n\n return element;\n}\n\n/**\n * Create a <link> element\n */\nexport function createLinkElement(href: string) {\n const element = createHtmlElement(\"link\") as HTMLLinkElement;\n\n element.rel = \"stylesheet\";\n element.href = href;\n\n return element;\n}\n\n/**\n * Create svg elements\n */\nexport function createSvgElement(\n content: string,\n attributes: { [key: string]: string },\n) {\n const attrs = getObjectKeys(attributes);\n const element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n\n if (attrs.length) {\n attrs.forEach((name) => {\n element.setAttribute(name, attributes[name]);\n });\n }\n\n element.innerHTML = content;\n\n return element;\n}\n\n/**\n * Append a new script element to the DOM head\n */\nexport function insertJs(js: string, inline = false) {\n const element = createScriptElement(js, inline);\n\n document.head.appendChild(element);\n}\n\n/**\n * Append a new style element to the DOM head\n */\nexport const insertCss = (\n css: string,\n className?: string,\n external = false,\n) => {\n const element = external ? createLinkElement(css) : createStyleElement(css);\n\n if (className) {\n element.className = className;\n }\n\n document.head.appendChild(element);\n};\n\n/**\n * Get screen sizes\n */\nexport function getScreenSize(): { width: number; height: number } {\n let width, height;\n\n if (window.screen) {\n width = screen.width;\n height = screen.height;\n } else {\n width = window.innerWidth;\n height = window.innerHeight;\n }\n\n return {\n width: width,\n height: height,\n };\n}\n\n/**\n * Get a random integer between min and max\n */\nexport function getRandomInt(min = 0, max = 4294967295) {\n min = Math.ceil(min);\n max = Math.floor(max);\n\n return Math.floor(Math.random() * (max - min)) + min;\n}\n\n/**\n * Create an image element to use as a tracking pixel\n */\nexport function createPixelElement(src: string) {\n const image = document.createElement(\"img\");\n\n image.src = src;\n image.width = 1;\n image.height = 1;\n image.style.position = \"absolute\";\n image.style.left = \"-99999px\";\n\n return image;\n}\n\n/**\n * Implementation of Java's String.hashCode() method\n */\nexport function hashCode(str: string) {\n let hash = 0,\n chr;\n\n for (let i = 0; i < str.length; i++) {\n chr = str.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0; // convert to 32bit integer\n }\n\n return hash >>> 0;\n}\n\n/**\n * Executes a callback as soon as DOM is interactive\n */\nexport function onDOMReady(callback: Function, ...args: any[]) {\n if (\n document.readyState === \"interactive\" ||\n document.readyState === \"complete\"\n ) {\n callback(...args);\n } else {\n document.addEventListener(\"DOMContentLoaded\", () => callback(...args));\n }\n}\n\n/**\n * Calculate the percentage of two values\n *\n * @param a\n * @param b\n * @return number\n */\nexport function toPercent(a: number, b: number): number {\n return b > 0 ? (a / b) * 100 : 0;\n}\n\n/**\n * Make a camelCase string\n *\n * @param string\n * @return string\n */\nexport function toCamelCase(string: string): string {\n return string\n .split(new RegExp(/[-_.]/))\n .reduce(\n (a: string, b: string) => a + b.charAt(0).toUpperCase() + b.slice(1),\n );\n}\n\n/**\n * Make a snake_case string\n *\n * @param string\n * @return string\n */\nexport function toSnakeCase(string: string): string {\n return toCamelCase(string)\n .replace(/(^[A-Z])?([A-Z])/gm, \"$1_$2\")\n .toLowerCase();\n}\n\n/**\n * Transform the first letter of the given string to the upper case\n *\n * @param string\n * @return string\n */\nexport function capitalize(string: string): string {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\n/**\n * Registry independent string sorting\n *\n * @param first\n * @param second\n */\nexport function sortByAlphabet(first: string, second: string): number {\n return first.toLowerCase() > second.toLowerCase() ? 1 : -1;\n}\n\n/**\n * @param length\n * @return string of max length 100\n */\nexport function getRandomStr(length?: number): string {\n length = length ? (length > 100 ? 100 : length) : 10;\n\n let str = Math.random().toString(36).substring(2);\n\n while (str.length < length) {\n str += Math.random().toString(36).substring(2);\n }\n\n const result = str.slice(-length);\n return isNaN(Number(result)) ? result : getRandomStr(length);\n}\n\nexport function getRandomItem(items: any[]): any {\n return items[Math.floor(Math.random() * items.length)];\n}\n\n/**\n * Summarize elements of the given array\n *\n * @param values\n * @return number | string - a summary of all the numbers in the array or an empty string if\n * there was only NaNs\n */\nexport function sumArray(values: Array<any>): number | string {\n if (values.every((value: any) => isNaN(value))) {\n return \"\";\n } else {\n return values.reduce((sum: any, curr: any) => {\n const value = Number(curr);\n\n if (!isNaN(value)) {\n return sum + value;\n } else {\n return sum;\n }\n }, 0);\n }\n}\n\n/**\n * Returns an array of the object keys which values are not present in filter\n *\n * @param obj\n * @param values\n */\nexport function filterObjectKeysByValues(\n obj: { [key: string]: any },\n values: Array<string | number | boolean | null | undefined>,\n): string[] {\n values = Array.isArray(values) ? values : Array(values);\n\n const keys = [];\n\n for (const key in obj) {\n if (!values.includes(obj[key])) {\n keys.push(key);\n }\n }\n\n return keys;\n}\n\nexport function getFromObject(object: object, key: string): any {\n return key.split(\".\").reduce((a: any, b: any) => {\n return a[b];\n }, object);\n}\n\nexport function fireBlurEvent(\n element: string | Element | null,\n delay: number = 0,\n): void {\n fireEvent(\"blur\", element, delay);\n}\n\nexport function fireInputEvent(\n element: string | Element | null,\n delay: number = 0,\n): void {\n fireEvent(\"input\", element, delay);\n}\n\nexport function fireEvent(\n eventName: string,\n element: string | Element | null,\n delay: number = 0,\n): void {\n setTimeout(() => {\n if (isString(element)) {\n element = document.querySelector(element);\n }\n\n if (!isNullOrUndef(element)) {\n element.dispatchEvent(\n new Event(eventName, {\n bubbles: true,\n }),\n );\n }\n }, delay);\n}\n\nexport function hasObjectChanged(\n object: { [key: string]: any },\n values: any[],\n): boolean {\n let hasChanged = false;\n\n for (const key in object) {\n let oldVal = object[key];\n let [, newVal] = values.find(([newKey]) => key === newKey);\n\n if (isObject(oldVal)) {\n if (!isObject(newVal)) {\n hasChanged = true;\n } else {\n hasChanged = hasObjectChanged(oldVal, Object.entries(newVal));\n }\n } else if (Array.isArray(newVal) || Array.isArray(oldVal)) {\n newVal = Array.isArray(newVal) ? newVal : [];\n oldVal = Array.isArray(oldVal) ? oldVal : [];\n\n hasChanged = arrayDiff(newVal, oldVal).length > 0;\n } else {\n hasChanged = areDiff(newVal, oldVal);\n }\n\n if (hasChanged) {\n break;\n }\n }\n\n return hasChanged;\n}\n\nexport function roundBigNum(number: number): number {\n const digitsNum = Math.trunc(number).toString().length;\n\n let roundTo = 0;\n switch (true) {\n case digitsNum > 2 && digitsNum < 5:\n roundTo = 100;\n break;\n case digitsNum >= 5:\n roundTo = 10000;\n break;\n }\n\n return roundTo ? Math.round(number / roundTo) * roundTo : number;\n}\n\nexport function extractNumbers(value: any): string {\n if (!isStr(value) && !isNum(value)) {\n return \"\";\n }\n return value.toString().replace(/[^0-9]/g, \"\");\n}\n\nexport function removeSpaces(value: any): string {\n if (!isStr(value) && !isNum(value)) {\n return \"\";\n }\n return value.toString().replace(/\\s/g, \"\");\n}\n\nexport function roundUp(num: number, precision: number): number {\n const multiplier = Number(\"1\".padEnd(precision + 1, \"0\"));\n return Math.ceil(num * multiplier) / multiplier;\n}\n\nexport function roundDown(num: number, precision: number): number {\n const multiplier = Number(\"1\".padEnd(precision + 1, \"0\"));\n return Math.floor(num * multiplier) / multiplier;\n}\n\nexport function areDiff(\n val1?: Primitive | null,\n val2?: Primitive | null,\n strict?: boolean,\n): boolean {\n if (strict) {\n return val1 !== val2;\n }\n\n // at least one value is not empty\n if (Boolean(val1) || Boolean(val2)) {\n return val1 != val2;\n }\n\n // both empty, but not equally empty!\n // each one may be one of: empty string, null or undefined\n return false;\n}\n\nexport function flattenObject(obj: FlattenableObject, prefix = \"\") {\n return Object.keys(obj).reduce((acc, k) => {\n const pre = prefix.length ? prefix + \".\" : \"\";\n if (isObject(obj[k]) || Array.isArray(obj[k])) {\n Object.assign(acc, flattenObject(obj[k], pre + k));\n } else {\n acc[pre + k] = obj[k];\n }\n return acc;\n }, {} as FlattenableObject);\n}\n\nexport function flattenObjectAsArray(obj: FlattenableObject) {\n const result: FlattenableObject = {};\n const flat = flattenObject(obj);\n Object.keys(flat).forEach((key) => {\n const newKey = key.replaceAll(/\\.([^.]+)/g, \"[$1]\");\n result[newKey] = flat[key];\n });\n\n return result;\n}\n\nexport function parseObjectPathStr(pathStr: string): string[] {\n const pathParts = pathStr.replace(/\\[/g, \".\").replace(/\\]/g, \"\").split(\".\");\n\n if (pathParts.length > 1 && pathParts[1].includes(\"[\")) {\n return [pathParts[0], ...parseObjectPathStr(pathParts[1])];\n }\n\n return pathParts;\n}\n\nexport function formatNumber(\n num: number | string,\n fractionDigits?: number,\n): string {\n fractionDigits = isNullOrUndef(fractionDigits) ? 2 : fractionDigits;\n return new Intl.NumberFormat(\"ru-RU\", {\n style: \"decimal\",\n minimumFractionDigits: fractionDigits,\n maximumFractionDigits: fractionDigits,\n })\n .format(Number(num))\n .replace(\",\", \".\")\n .replace(/\\u00A0/g, \" \"); // charCode 160, White-space\n}\n\nexport function formatNumberWithSign(\n num: number | string,\n fractionDigits?: number,\n): string {\n return formatWithSign(num, formatNumber(num, fractionDigits));\n}\n\nexport function formatPercent(num: number | string): string {\n return formatNumber(num) + \"%\";\n}\n\nexport function formatWithSign(\n num: number | string,\n numString?: string,\n): string {\n numString = numString ? numString : num.toString();\n return (Number(num) < 0 ? \"\" : \"+\") + numString;\n}\n\nexport function autoSizeText(\n el: HTMLElement,\n height: number,\n minFontSize: number,\n maxFontSize: number = 50,\n) {\n let attempts = 30;\n\n const resizeText = () => {\n if (getTextHeight() === 0) {\n return;\n }\n while (attempts && getTextHeight() > height) {\n attempts--;\n reduceText();\n }\n while (attempts && getTextHeight() < height) {\n attempts--;\n enlargeText();\n }\n };\n\n const reduceText = () => {\n const fontSize = getNumericStyleProp(\"fontSize\", el);\n const newFontSize = fontSize - 1;\n if (fontSize > 1 && newFontSize >= minFontSize) {\n el.style.fontSize = `${newFontSize}px`;\n }\n };\n\n const enlargeText = () => {\n const fontSize = getNumericStyleProp(\"fontSize\", el);\n const newFontSize = fontSize + 1;\n if (newFontSize <= maxFontSize) {\n el.style.fontSize = `${newFontSize}px`;\n }\n };\n\n const getTextHeight = () =>\n Math.floor(\n el.scrollHeight -\n getNumericStyleProp(\"paddingTop\", el) -\n getNumericStyleProp(\"paddingBottom\", el),\n );\n\n resizeText();\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import { FlattenableObject, Primitive, SimpleObject } from \"./types\";\n\nexport function debounce(fn: Function, delay: number): () => void {\n let timeout: ReturnType<typeof setTimeout>;\n\n return function (...args: any[]) {\n clearTimeout(timeout);\n timeout = setTimeout(() => fn.apply(null, args), delay);\n };\n}\n\nexport function throttle(fn: Function, delay: number) {\n let lastCall = 0;\n\n return function (...args: any[]) {\n const now = new Date().getTime();\n if (now - lastCall < delay) {\n return;\n }\n lastCall = now;\n fn(...args);\n };\n}\n\nexport function isObject(obj: any): obj is object {\n return !!obj && typeof obj === \"object\" && !Array.isArray(obj);\n}\n\nexport function isFn(fn: any): fn is Function {\n return typeof fn === \"function\";\n}\n\nexport function isStr(str: any): boolean {\n return typeof str === \"string\";\n}\n\nexport function isString(str: any): str is string {\n return typeof str === \"string\";\n}\n\n/**\n * Check if the given argument is a string which is not empty\n */\nexport function isNotEmptyString(str: any) {\n return typeof str === \"string\" && str.length;\n}\n\nexport function isHTMLElement(el: any): el is HTMLElement {\n return el instanceof HTMLElement || el instanceof SVGElement;\n}\n\nexport function isNum(num: any): num is number {\n return typeof num === \"number\";\n}\n\nexport function isBool(bool: any): boolean {\n return typeof bool === \"boolean\";\n}\n\nexport function isUndef(val: any): val is undefined {\n return typeof val === \"undefined\";\n}\n\nexport function isNullOrUndef(value: unknown): value is null | undefined {\n return value === null || typeof value === \"undefined\";\n}\n\nexport function isDefined(val: any): boolean {\n return !isUndef(val);\n}\n\n/**\n * Returns an array containing all the elements of array1 that are not in array2 and vice-versa\n */\nexport function arrayDiff(\n array1: Array<Primitive | null | undefined>,\n array2: Array<Primitive | null | undefined>,\n): Array<Primitive | null | undefined> {\n return array1\n .filter((value) => !array2.includes(value))\n .concat(array2.filter((value: any) => !array1.includes(value)));\n}\n\n/**\n * Returns an array of elements present in array1 and array2\n */\nexport function arrayIntersect(\n array1: Array<Primitive | null | undefined>,\n array2: Array<Primitive | null | undefined>,\n) {\n return array1.filter((value) => array2.includes(value));\n}\n\nexport function deepCloneObject<Type>(object: Type): Type {\n return JSON.parse(JSON.stringify(object));\n}\n\nexport function getNumericStyleProp(prop: string, el: Element) {\n const styles: { [key: string]: any } = window.getComputedStyle(el);\n return !isNullOrUndef(styles[prop]) ? parseInt(styles[prop].slice(0, -2)) : 0;\n}\n\nexport function objectHasProp(\n obj: any,\n prop: string | number | symbol,\n): boolean {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n/**\n * Custom version of Object.keys()\n */\nexport function getObjectKeys(object: object): string[] {\n let key;\n let keys = [];\n\n for (key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n\n return keys;\n}\n\n/**\n * Convert an object to a query string\n * Works with primitive objects\n */\nexport function objectToQueryString(object: {\n [key: string | number]:\n | Primitive\n | Array<Primitive | null | undefined>\n | SimpleObject\n | { [key: string | number]: SimpleObject }\n | undefined\n | null;\n}): string {\n return Object.entries(object)\n .map(([k, v]) => {\n if (Array.isArray(v)) {\n return v\n .map((item) => `${k}[]=${encodeURIComponent(item || \"\")}`)\n .join(\"&\");\n } else if (isObject(v)) {\n return `${k}=${encodeURIComponent(JSON.stringify(v))}`;\n }\n return `${k}=${encodeURIComponent(v || \"\")}`;\n })\n .join(\"&\");\n}\n\nexport function countObjectInnerLength(object: {\n [key: string | number]: any[];\n}) {\n const obj = Object.values(object);\n 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.substr(0, index) + parseURL(url).search;\n }\n }\n\n return url;\n}\n\nexport function injectScript(filename: string): void {\n const script = document.createElement(\"script\");\n script.src = filename;\n script.async = true;\n document.head.appendChild(script);\n}\n\nexport function injectStyleLink(filename: string): void {\n const link = document.createElement(\"link\");\n link.rel = \"stylesheet\";\n link.href = filename;\n document.head.appendChild(link);\n}\n\nexport function toBinaryStr(str: string) {\n const encoder = new TextEncoder();\n // 1: split the UTF-16 string into an array of bytes\n const charCodes = encoder.encode(str);\n // 2: concatenate byte data to create a binary string\n return String.fromCharCode(...charCodes);\n}\n\n/**\n * Find a DOM element where an ad unit should be rendered to\n */\nexport function getHtmlElement(id: string) {\n return document.getElementById(id);\n}\n\n/**\n * Convert an HTML string into a list of nodes\n */\nexport function stringToHtmlElements(html: string): NodeListOf<ChildNode> {\n const template = createHtmlElement(\"div\");\n template.innerHTML = html.replace(/[\\r\\n]/gm, \"\").trim();\n return template.childNodes;\n}\n\n/**\n * Creates an HTML element and sets attributes\n */\nexport function createHtmlElement(\n type: string,\n attributes: { [key: string]: string } = {},\n): HTMLElement {\n const attrs = getObjectKeys(attributes);\n const element = document.createElement(type);\n\n if (attrs.length) {\n attrs.forEach((name) => {\n element.setAttribute(name, attributes[name]);\n });\n }\n\n return element;\n}\n\n/**\n * Insert HTML elements into DOM\n */\nexport function insertHtmlElements(\n nodes: NodeListOf<Node>,\n appendTo?: Element,\n) {\n appendTo = appendTo || document.body;\n\n const fragment = new DocumentFragment();\n\n for (let i = 0; i < nodes.length; i++) {\n // skip non tags and non text, 3 for text nodes\n if (!isHTMLElement(nodes[i]) && nodes[i].nodeType !== 3) {\n continue;\n }\n\n const node = nodes[i] as HTMLElement;\n let newNode;\n\n switch (node.nodeName.toLowerCase()) {\n case \"script\":\n const src = node.getAttribute(\"src\");\n\n if (!isNullOrUndef(src) && src.length > 0) {\n newNode = createScriptElement(\n src,\n false,\n flatHtmlAttributes(node.attributes),\n );\n } else {\n newNode = createScriptElement(\n node.innerHTML,\n true,\n flatHtmlAttributes(node.attributes),\n );\n }\n break;\n\n case \"style\":\n newNode = createStyleElement(node.textContent);\n break;\n\n case \"svg\":\n newNode = createSvgElement(\n node.innerHTML,\n flatHtmlAttributes(node.attributes),\n );\n break;\n\n case \"#text\":\n newNode = document.createTextNode(node.textContent ?? \"\");\n break;\n\n default:\n newNode = createHtmlElement(\n node.tagName,\n flatHtmlAttributes(node.attributes),\n );\n\n // recursive\n if (node.childNodes.length) {\n insertHtmlElements(node.childNodes, newNode);\n } else {\n newNode.innerHTML = node.innerHTML;\n }\n }\n\n fragment.appendChild(newNode);\n }\n\n appendTo.appendChild(fragment);\n}\n\n/**\n * Make a simple object which contains only attribute name and value\n */\nexport function flatHtmlAttributes(attributes?: NamedNodeMap) {\n let flatAttributes: { [key: string]: string } = {};\n\n if (!isNullOrUndef(attributes)) {\n for (let i = 0; i < attributes.length; i++) {\n let attr = attributes[i];\n\n if (!isUndef(attr)) {\n flatAttributes[attr.name] = attr.value;\n }\n }\n }\n\n return flatAttributes;\n}\n\n/**\n * Create a <script> element\n */\nexport function createScriptElement(\n js: string,\n inline: boolean = false,\n attributes: { [key: string]: string } = {},\n) {\n const attrs = isObject(attributes) ? getObjectKeys(attributes) : [];\n const element = createHtmlElement(\"script\") as HTMLScriptElement;\n\n if (attrs.length) {\n attrs.forEach((name) => {\n element.setAttribute(name, attributes[name]);\n });\n }\n\n if (inline) {\n element.appendChild(document.createTextNode(js));\n } else {\n element.async = true;\n element.src = js;\n }\n\n return element;\n}\n\n/**\n * Create a <style> element\n */\nexport function createStyleElement(css: string | null) {\n const element = createHtmlElement(\"style\");\n\n if (css) {\n element.appendChild(document.createTextNode(css));\n }\n\n return element;\n}\n\n/**\n * Create a <link> element\n */\nexport function createLinkElement(href: string) {\n const element = createHtmlElement(\"link\") as HTMLLinkElement;\n\n element.rel = \"stylesheet\";\n element.href = href;\n\n return element;\n}\n\n/**\n * Create svg elements\n */\nexport function createSvgElement(\n content: string,\n attributes: { [key: string]: string },\n) {\n const attrs = getObjectKeys(attributes);\n const element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n\n if (attrs.length) {\n attrs.forEach((name) => {\n element.setAttribute(name, attributes[name]);\n });\n }\n\n element.innerHTML = content;\n\n return element;\n}\n\n/**\n * Create an image element to use as a tracking pixel\n */\nexport function createPixelElement(src: string) {\n const image = document.createElement(\"img\");\n\n image.src = src;\n image.width = 1;\n image.height = 1;\n image.style.position = \"absolute\";\n image.style.left = \"-99999px\";\n\n return image;\n}\n\n/**\n * Append a new script element to the DOM head\n */\nexport function insertJs(js: string, inline = false) {\n const element = createScriptElement(js, inline);\n\n document.head.appendChild(element);\n}\n\n/**\n * Append a new style element to the DOM head\n */\nexport function insertCss(css: string, className?: string, external = false) {\n const element = external ? createLinkElement(css) : createStyleElement(css);\n\n if (className) {\n element.className = className;\n }\n\n document.head.appendChild(element);\n}\n\n/**\n * Get screen sizes\n */\nexport function getScreenSize(): { width: number; height: number } {\n let width, height;\n\n if (window.screen) {\n width = screen.width;\n height = screen.height;\n } else {\n width = window.innerWidth;\n height = window.innerHeight;\n }\n\n return {\n width: width,\n height: height,\n };\n}\n\n/**\n * Get a random integer between min and max\n */\nexport function getRandomInt(min = 0, max = 4294967295) {\n min = Math.ceil(min);\n max = Math.floor(max);\n\n return Math.floor(Math.random() * (max - min)) + min;\n}\n\n/**\n * Implementation of Java's String.hashCode() method\n */\nexport function hashCode(str: string) {\n let hash = 0,\n chr;\n\n for (let i = 0; i < str.length; i++) {\n chr = str.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0; // convert to 32bit integer\n }\n\n return hash >>> 0;\n}\n\n/**\n * Executes a callback as soon as DOM is interactive\n */\nexport function onDOMReady(callback: Function, ...args: any[]) {\n if (\n document.readyState === \"interactive\" ||\n document.readyState === \"complete\"\n ) {\n callback(...args);\n } else {\n document.addEventListener(\"DOMContentLoaded\", () => callback(...args));\n }\n}\n\n/**\n * Calculate the percentage of two values\n *\n * @param a\n * @param b\n * @return number\n */\nexport function toPercent(a: number, b: number): number {\n return b > 0 ? (a / b) * 100 : 0;\n}\n\n/**\n * Make a camelCase string\n *\n * @param string\n * @return string\n */\nexport function toCamelCase(string: string): string {\n return string\n .split(new RegExp(/[-_.]/))\n .reduce(\n (a: string, b: string) => a + b.charAt(0).toUpperCase() + b.slice(1),\n );\n}\n\n/**\n * Make a snake_case string\n *\n * @param string\n * @return string\n */\nexport function toSnakeCase(string: string): string {\n return toCamelCase(string)\n .replace(/(^[A-Z])?([A-Z])/gm, \"$1_$2\")\n .toLowerCase();\n}\n\n/**\n * Transform the first letter of the given string to the upper case\n *\n * @param string\n * @return string\n */\nexport function capitalize(string: string): string {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\n/**\n * Registry independent string sorting\n *\n * @param first\n * @param second\n */\nexport function sortByAlphabet(first: string, second: string): number {\n return first.toLowerCase() > second.toLowerCase() ? 1 : -1;\n}\n\n/**\n * @param length\n * @return string of max length 100\n */\nexport function getRandomStr(length?: number): string {\n length = length ? (length > 100 ? 100 : length) : 10;\n\n let str = Math.random().toString(36).substring(2);\n\n while (str.length < length) {\n str += Math.random().toString(36).substring(2);\n }\n\n const result = str.slice(-length);\n return isNaN(Number(result)) ? result : getRandomStr(length);\n}\n\nexport function getRandomItem(items: any[]): any {\n return items[Math.floor(Math.random() * items.length)];\n}\n\n/**\n * Summarize elements of the given array\n *\n * @param values\n * @return number | string - a summary of all the numbers in the array or an empty string if\n * there was only NaNs\n */\nexport function sumArray(values: Array<any>): number | string {\n if (values.every((value: any) => isNaN(value))) {\n return \"\";\n } else {\n return values.reduce((sum: any, curr: any) => {\n const value = Number(curr);\n\n if (!isNaN(value)) {\n return sum + value;\n } else {\n return sum;\n }\n }, 0);\n }\n}\n\n/**\n * Returns an array of the object keys which values are not present in filter\n *\n * @param obj\n * @param values\n */\nexport function filterObjectKeysByValues(\n obj: { [key: string]: any },\n values: Array<string | number | boolean | null | undefined>,\n): string[] {\n values = Array.isArray(values) ? values : Array(values);\n\n const keys = [];\n\n for (const key in obj) {\n if (!values.includes(obj[key])) {\n keys.push(key);\n }\n }\n\n return keys;\n}\n\nexport function getFromObject(object: object, key: string): any {\n return key.split(\".\").reduce((a: any, b: any) => {\n return a[b];\n }, object);\n}\n\nexport function fireBlurEvent(\n element: string | Element | null,\n delay: number = 0,\n): void {\n fireEvent(\"blur\", element, delay);\n}\n\nexport function fireInputEvent(\n element: string | Element | null,\n delay: number = 0,\n): void {\n fireEvent(\"input\", element, delay);\n}\n\nexport function fireEvent(\n eventName: string,\n element: string | Element | null,\n delay: number = 0,\n): void {\n setTimeout(() => {\n if (isString(element)) {\n element = document.querySelector(element);\n }\n\n if (!isNullOrUndef(element)) {\n element.dispatchEvent(\n new Event(eventName, {\n bubbles: true,\n }),\n );\n }\n }, delay);\n}\n\nexport function hasObjectChanged(\n object: { [key: string]: any },\n values: any[],\n): boolean {\n let hasChanged = false;\n\n for (const key in object) {\n let oldVal = object[key];\n let [, newVal] = values.find(([newKey]) => key === newKey);\n\n if (isObject(oldVal)) {\n if (!isObject(newVal)) {\n hasChanged = true;\n } else {\n hasChanged = hasObjectChanged(oldVal, Object.entries(newVal));\n }\n } else if (Array.isArray(newVal) || Array.isArray(oldVal)) {\n newVal = Array.isArray(newVal) ? newVal : [];\n oldVal = Array.isArray(oldVal) ? oldVal : [];\n\n hasChanged = arrayDiff(newVal, oldVal).length > 0;\n } else {\n hasChanged = areDiff(newVal, oldVal);\n }\n\n if (hasChanged) {\n break;\n }\n }\n\n return hasChanged;\n}\n\nexport function roundBigNum(number: number): number {\n const digitsNum = Math.trunc(number).toString().length;\n\n let roundTo = 0;\n switch (true) {\n case digitsNum > 2 && digitsNum < 5:\n roundTo = 100;\n break;\n case digitsNum >= 5:\n roundTo = 10000;\n break;\n }\n\n return roundTo ? Math.round(number / roundTo) * roundTo : number;\n}\n\nexport function extractNumbers(value: any): string {\n if (!isStr(value) && !isNum(value)) {\n return \"\";\n }\n return value.toString().replace(/[^0-9]/g, \"\");\n}\n\nexport function removeSpaces(value: any): string {\n if (!isStr(value) && !isNum(value)) {\n return \"\";\n }\n return value.toString().replace(/\\s/g, \"\");\n}\n\nexport function roundUp(num: number, precision: number): number {\n const multiplier = Number(\"1\".padEnd(precision + 1, \"0\"));\n return Math.ceil(num * multiplier) / multiplier;\n}\n\nexport function roundDown(num: number, precision: number): number {\n const multiplier = Number(\"1\".padEnd(precision + 1, \"0\"));\n return Math.floor(num * multiplier) / multiplier;\n}\n\nexport function areDiff(\n val1?: Primitive | null,\n val2?: Primitive | null,\n strict?: boolean,\n): boolean {\n if (strict) {\n return val1 !== val2;\n }\n\n // at least one value is not empty\n if (Boolean(val1) || Boolean(val2)) {\n return val1 != val2;\n }\n\n // both empty, but not equally empty!\n // each one may be one of: empty string, null or undefined\n return false;\n}\n\nexport function flattenObject(obj: FlattenableObject, prefix = \"\") {\n return Object.keys(obj).reduce((acc, k) => {\n const pre = prefix.length ? prefix + \".\" : \"\";\n if (isObject(obj[k]) || Array.isArray(obj[k])) {\n Object.assign(acc, flattenObject(obj[k], pre + k));\n } else {\n acc[pre + k] = obj[k];\n }\n return acc;\n }, {} as FlattenableObject);\n}\n\nexport function flattenObjectAsArray(obj: FlattenableObject) {\n const result: FlattenableObject = {};\n const flat = flattenObject(obj);\n Object.keys(flat).forEach((key) => {\n const newKey = key.replaceAll(/\\.([^.]+)/g, \"[$1]\");\n result[newKey] = flat[key];\n });\n\n return result;\n}\n\nexport function parseObjectPathStr(pathStr: string): string[] {\n const pathParts = pathStr.replace(/\\[/g, \".\").replace(/\\]/g, \"\").split(\".\");\n\n if (pathParts.length > 1 && pathParts[1].includes(\"[\")) {\n return [pathParts[0], ...parseObjectPathStr(pathParts[1])];\n }\n\n return pathParts;\n}\n\nexport function formatNumber(\n num: number | string,\n fractionDigits?: number,\n): string {\n fractionDigits = isNullOrUndef(fractionDigits) ? 2 : fractionDigits;\n return new Intl.NumberFormat(\"ru-RU\", {\n style: \"decimal\",\n minimumFractionDigits: fractionDigits,\n maximumFractionDigits: fractionDigits,\n })\n .format(Number(num))\n .replace(\",\", \".\")\n .replace(/\\u00A0/g, \" \"); // charCode 160, White-space\n}\n\nexport function formatNumberWithSign(\n num: number | string,\n fractionDigits?: number,\n): string {\n return formatWithSign(num, formatNumber(num, fractionDigits));\n}\n\nexport function formatPercent(num: number | string): string {\n return formatNumber(num) + \"%\";\n}\n\nexport function formatWithSign(\n num: number | string,\n numString?: string,\n): string {\n numString = numString ? numString : num.toString();\n return (Number(num) < 0 ? \"\" : \"+\") + numString;\n}\n\nexport function autoSizeText(\n el: HTMLElement,\n height: number,\n minFontSize: number,\n maxFontSize: number = 50,\n) {\n let attempts = 30;\n\n const resizeText = () => {\n if (getTextHeight() === 0) {\n return;\n }\n while (attempts && getTextHeight() > height) {\n attempts--;\n reduceText();\n }\n while (attempts && getTextHeight() < height) {\n attempts--;\n enlargeText();\n }\n };\n\n const reduceText = () => {\n const fontSize = getNumericStyleProp(\"fontSize\", el);\n const newFontSize = fontSize - 1;\n if (fontSize > 1 && newFontSize >= minFontSize) {\n el.style.fontSize = `${newFontSize}px`;\n }\n };\n\n const enlargeText = () => {\n const fontSize = getNumericStyleProp(\"fontSize\", el);\n const newFontSize = fontSize + 1;\n if (newFontSize <= maxFontSize) {\n el.style.fontSize = `${newFontSize}px`;\n }\n };\n\n const getTextHeight = () =>\n Math.floor(\n el.scrollHeight -\n getNumericStyleProp(\"paddingTop\", el) -\n getNumericStyleProp(\"paddingBottom\", el),\n );\n\n resizeText();\n}\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nativerent/js-utils",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
package/src/index.ts CHANGED
@@ -151,21 +151,26 @@ export function objectToQueryString(object: {
151
151
  }
152
152
 
153
153
  export function countObjectInnerLength(object: {
154
- [key: string | number]: any;
154
+ [key: string | number]: any[];
155
155
  }) {
156
156
  const obj = Object.values(object);
157
+ const len = obj.length;
157
158
 
158
- return obj.length === 1
159
- ? obj[0].length
160
- : obj.reduce((acc, cur) => {
161
- if (Array.isArray(acc)) {
162
- acc = acc.length;
163
- }
164
- if (cur) {
165
- acc += cur.length;
166
- }
167
- return acc;
168
- });
159
+ if (len === 0) {
160
+ return 0;
161
+ } else if (len === 1) {
162
+ return obj[0].length;
163
+ } else {
164
+ return obj.reduce((acc: any, cur) => {
165
+ if (Array.isArray(acc)) {
166
+ acc = acc.length;
167
+ }
168
+ if (cur) {
169
+ acc += cur.length;
170
+ }
171
+ return acc;
172
+ });
173
+ }
169
174
  }
170
175
 
171
176
  /**