@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 +25 -20
- package/dist/index.js +44 -28
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +44 -29
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +17 -12
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
|
-
*
|
|
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
|
|
51
|
-
/**
|
|
52
|
-
* Find a DOM element where an ad unit should be rendered to
|
|
53
|
-
*/
|
|
54
|
-
declare function getHtmlElement(id: string): HTMLElement | null;
|
|
55
|
+
declare function isElementVisible(element: HTMLElement, minVisiblePercent?: number): boolean;
|
|
55
56
|
declare function decodeSafeURL(url: string): string;
|
|
56
|
-
declare function getSafeURL(url
|
|
57
|
+
declare function getSafeURL(url?: string): string;
|
|
57
58
|
declare function parseURL(url: string): URL;
|
|
58
59
|
declare function encodeQueryString(url: string): string;
|
|
59
60
|
declare function injectScript(filename: string): void;
|
|
60
61
|
declare function injectStyleLink(filename: string): void;
|
|
61
62
|
declare function toBinaryStr(str: string): string;
|
|
63
|
+
/**
|
|
64
|
+
* Find a DOM element where an ad unit should be rendered to
|
|
65
|
+
*/
|
|
66
|
+
declare function getHtmlElement(id: string): HTMLElement | null;
|
|
62
67
|
/**
|
|
63
68
|
* Convert an HTML string into a list of nodes
|
|
64
69
|
*/
|
|
@@ -72,7 +77,7 @@ declare function createHtmlElement(type: string, attributes?: {
|
|
|
72
77
|
/**
|
|
73
78
|
* Insert HTML elements into DOM
|
|
74
79
|
*/
|
|
75
|
-
declare function insertHtmlElements(nodes: NodeListOf<Node>, appendTo?: Element
|
|
80
|
+
declare function insertHtmlElements(nodes: NodeListOf<Node>, appendTo?: Element): void;
|
|
76
81
|
/**
|
|
77
82
|
* Make a simple object which contains only attribute name and value
|
|
78
83
|
*/
|
|
@@ -99,6 +104,10 @@ declare function createLinkElement(href: string): HTMLLinkElement;
|
|
|
99
104
|
declare function createSvgElement(content: string, attributes: {
|
|
100
105
|
[key: string]: string;
|
|
101
106
|
}): SVGSVGElement;
|
|
107
|
+
/**
|
|
108
|
+
* Create an image element to use as a tracking pixel
|
|
109
|
+
*/
|
|
110
|
+
declare function createPixelElement(src: string): HTMLImageElement;
|
|
102
111
|
/**
|
|
103
112
|
* Append a new script element to the DOM head
|
|
104
113
|
*/
|
|
@@ -106,7 +115,7 @@ declare function insertJs(js: string, inline?: boolean): void;
|
|
|
106
115
|
/**
|
|
107
116
|
* Append a new style element to the DOM head
|
|
108
117
|
*/
|
|
109
|
-
declare
|
|
118
|
+
declare function insertCss(css: string, className?: string, external?: boolean): void;
|
|
110
119
|
/**
|
|
111
120
|
* Get screen sizes
|
|
112
121
|
*/
|
|
@@ -118,10 +127,6 @@ declare function getScreenSize(): {
|
|
|
118
127
|
* Get a random integer between min and max
|
|
119
128
|
*/
|
|
120
129
|
declare function getRandomInt(min?: number, max?: number): number;
|
|
121
|
-
/**
|
|
122
|
-
* Create an image element to use as a tracking pixel
|
|
123
|
-
*/
|
|
124
|
-
declare function createPixelElement(src: string): HTMLImageElement;
|
|
125
130
|
/**
|
|
126
131
|
* Implementation of Java's String.hashCode() method
|
|
127
132
|
*/
|
|
@@ -211,4 +216,4 @@ declare function formatPercent(num: number | string): string;
|
|
|
211
216
|
declare function formatWithSign(num: number | string, numString?: string): string;
|
|
212
217
|
declare function autoSizeText(el: HTMLElement, height: number, minFontSize: number, maxFontSize?: number): void;
|
|
213
218
|
|
|
214
|
-
export { areDiff, arrayDiff, arrayIntersect, autoSizeText, capitalize, countObjectInnerLength, createHtmlElement, createLinkElement, createPixelElement, createScriptElement, createStyleElement, createSvgElement, debounce, decodeSafeURL, deepCloneObject, encodeQueryString, extractNumbers, filterObjectKeysByValues, fireBlurEvent, fireEvent, fireInputEvent, flatHtmlAttributes, flattenObject, flattenObjectAsArray, formatNumber, formatNumberWithSign, formatPercent, formatWithSign, getFromObject, getHtmlElement, getNumericStyleProp, getObjectKeys, getRandomInt, getRandomItem, getRandomStr, getSafeURL, getScreenSize, hasObjectChanged, hashCode, injectScript, injectStyleLink, insertCss, insertHtmlElements, insertJs, isBool, isDefined, isElementVisible, isFn, isHTMLElement, isNullOrUndef, isNum, isObject, isStr, isString, isUndef, objectHasProp, objectToQueryString, onDOMReady, parseObjectPathStr, parseURL, removeSpaces, roundBigNum, roundDown, roundUp, sortByAlphabet, stringToHtmlElements, sumArray, throttle, toBinaryStr, toCamelCase, toPercent, toSnakeCase };
|
|
219
|
+
export { areDiff, arrayDiff, arrayIntersect, autoSizeText, capitalize, countObjectInnerLength, createHtmlElement, createLinkElement, createPixelElement, createScriptElement, createStyleElement, createSvgElement, debounce, decodeSafeURL, deepCloneObject, encodeQueryString, extractNumbers, filterObjectKeysByValues, fireBlurEvent, fireEvent, fireInputEvent, flatHtmlAttributes, flattenObject, flattenObjectAsArray, formatNumber, formatNumberWithSign, formatPercent, formatWithSign, getFromObject, getHtmlElement, getNumericStyleProp, getObjectKeys, getRandomInt, getRandomItem, getRandomStr, getSafeURL, getScreenSize, hasObjectChanged, hashCode, injectScript, injectStyleLink, insertCss, insertHtmlElements, insertJs, isBool, isDefined, isElementVisible, isFn, isHTMLElement, isNotEmptyString, isNullOrUndef, isNum, isObject, isStr, isString, isUndef, objectHasProp, objectToQueryString, onDOMReady, parseObjectPathStr, parseURL, removeSpaces, roundBigNum, roundDown, roundUp, sortByAlphabet, stringToHtmlElements, sumArray, throttle, toBinaryStr, toCamelCase, toPercent, toSnakeCase };
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ function debounce(fn, delay) {
|
|
|
4
4
|
let timeout;
|
|
5
5
|
return function(...args) {
|
|
6
6
|
clearTimeout(timeout);
|
|
7
|
-
timeout = setTimeout(() => fn.apply(
|
|
7
|
+
timeout = setTimeout(() => fn.apply(null, args), delay);
|
|
8
8
|
};
|
|
9
9
|
}
|
|
10
10
|
function throttle(fn, delay) {
|
|
@@ -30,6 +30,9 @@ function isStr(str) {
|
|
|
30
30
|
function isString(str) {
|
|
31
31
|
return typeof str === "string";
|
|
32
32
|
}
|
|
33
|
+
function isNotEmptyString(str) {
|
|
34
|
+
return typeof str === "string" && str.length;
|
|
35
|
+
}
|
|
33
36
|
function isHTMLElement(el) {
|
|
34
37
|
return el instanceof HTMLElement || el instanceof SVGElement;
|
|
35
38
|
}
|
|
@@ -77,7 +80,7 @@ function getObjectKeys(object) {
|
|
|
77
80
|
function objectToQueryString(object) {
|
|
78
81
|
return Object.entries(object).map(([k, v]) => {
|
|
79
82
|
if (Array.isArray(v)) {
|
|
80
|
-
return v.map((item) => `${k}[]=${encodeURIComponent(item)}`).join("&");
|
|
83
|
+
return v.map((item) => `${k}[]=${encodeURIComponent(item || "")}`).join("&");
|
|
81
84
|
} else if (isObject(v)) {
|
|
82
85
|
return `${k}=${encodeURIComponent(JSON.stringify(v))}`;
|
|
83
86
|
}
|
|
@@ -86,17 +89,24 @@ function objectToQueryString(object) {
|
|
|
86
89
|
}
|
|
87
90
|
function countObjectInnerLength(object) {
|
|
88
91
|
const obj = Object.values(object);
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
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
|
-
|
|
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
|
|
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(
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
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
|
-
|
|
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
|
|
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(
|
|
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
|
-
|
|
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
|
package/dist/index.mjs.map
CHANGED
|
@@ -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
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
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
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
|
/**
|