@wexample/js-helpers 0.0.3 → 0.0.7

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.
Files changed (107) hide show
  1. package/README.md +5 -3
  2. package/dist/Common/AsyncConstructor.cjs +49 -0
  3. package/dist/Common/AsyncConstructor.cjs.map +1 -0
  4. package/dist/Common/AsyncConstructor.d.cts +13 -0
  5. package/dist/Common/AsyncConstructor.d.ts +13 -0
  6. package/dist/Common/AsyncConstructor.js +47 -0
  7. package/dist/Common/AsyncConstructor.js.map +1 -0
  8. package/dist/Helper/Array.cjs +33 -0
  9. package/dist/Helper/Array.cjs.map +1 -0
  10. package/dist/Helper/Array.d.cts +11 -0
  11. package/dist/Helper/Array.d.ts +11 -0
  12. package/dist/Helper/Array.js +26 -0
  13. package/dist/Helper/Array.js.map +1 -0
  14. package/dist/Helper/Bytes.cjs +17 -0
  15. package/dist/Helper/Bytes.cjs.map +1 -0
  16. package/dist/Helper/Bytes.d.cts +3 -0
  17. package/dist/Helper/Bytes.d.ts +3 -0
  18. package/dist/Helper/Bytes.js +15 -0
  19. package/dist/Helper/Bytes.js.map +1 -0
  20. package/dist/Helper/Dom.cjs +83 -0
  21. package/dist/Helper/Dom.cjs.map +1 -0
  22. package/dist/Helper/Dom.d.cts +32 -0
  23. package/dist/Helper/Dom.d.ts +32 -0
  24. package/dist/Helper/Dom.js +71 -0
  25. package/dist/Helper/Dom.js.map +1 -0
  26. package/dist/Helper/Event.cjs +35 -0
  27. package/dist/Helper/Event.cjs.map +1 -0
  28. package/dist/Helper/Event.d.cts +31 -0
  29. package/dist/Helper/Event.d.ts +31 -0
  30. package/dist/Helper/Event.js +33 -0
  31. package/dist/Helper/Event.js.map +1 -0
  32. package/dist/Helper/Function.cjs +10 -0
  33. package/dist/Helper/Function.cjs.map +1 -0
  34. package/dist/Helper/Function.d.cts +3 -0
  35. package/dist/Helper/Function.d.ts +3 -0
  36. package/dist/Helper/Function.js +8 -0
  37. package/dist/Helper/Function.js.map +1 -0
  38. package/dist/Helper/KeyCode.cjs +10 -0
  39. package/dist/Helper/KeyCode.cjs.map +1 -0
  40. package/dist/Helper/KeyCode.d.cts +6 -0
  41. package/dist/Helper/KeyCode.d.ts +6 -0
  42. package/dist/Helper/KeyCode.js +8 -0
  43. package/dist/Helper/KeyCode.js.map +1 -0
  44. package/dist/Helper/Location.cjs +57 -0
  45. package/dist/Helper/Location.cjs.map +1 -0
  46. package/dist/Helper/Location.d.cts +9 -0
  47. package/dist/Helper/Location.d.ts +9 -0
  48. package/dist/Helper/Location.js +51 -0
  49. package/dist/Helper/Location.js.map +1 -0
  50. package/dist/Helper/Log.cjs +37 -0
  51. package/dist/Helper/Log.cjs.map +1 -0
  52. package/dist/Helper/Log.d.cts +19 -0
  53. package/dist/Helper/Log.d.ts +19 -0
  54. package/dist/Helper/Log.js +31 -0
  55. package/dist/Helper/Log.js.map +1 -0
  56. package/dist/Helper/Mixin.cjs +29 -0
  57. package/dist/Helper/Mixin.cjs.map +1 -0
  58. package/dist/Helper/Mixin.d.cts +8 -0
  59. package/dist/Helper/Mixin.d.ts +8 -0
  60. package/dist/Helper/Mixin.js +27 -0
  61. package/dist/Helper/Mixin.js.map +1 -0
  62. package/dist/Helper/Object.cjs +103 -0
  63. package/dist/Helper/Object.cjs.map +1 -0
  64. package/dist/Helper/Object.d.cts +14 -0
  65. package/dist/Helper/Object.d.ts +14 -0
  66. package/dist/Helper/Object.js +95 -0
  67. package/dist/Helper/Object.js.map +1 -0
  68. package/dist/Helper/Pointer.cjs +10 -0
  69. package/dist/Helper/Pointer.cjs.map +1 -0
  70. package/dist/Helper/Pointer.d.cts +5 -0
  71. package/dist/Helper/Pointer.d.ts +5 -0
  72. package/dist/Helper/Pointer.js +8 -0
  73. package/dist/Helper/Pointer.js.map +1 -0
  74. package/dist/Helper/String.cjs +253 -0
  75. package/dist/Helper/String.cjs.map +1 -0
  76. package/dist/Helper/String.d.cts +50 -0
  77. package/dist/Helper/String.d.ts +50 -0
  78. package/dist/Helper/String.js +211 -0
  79. package/dist/Helper/String.js.map +1 -0
  80. package/dist/Helper/Time.cjs +12 -0
  81. package/dist/Helper/Time.cjs.map +1 -0
  82. package/dist/Helper/Time.d.cts +3 -0
  83. package/dist/Helper/Time.d.ts +3 -0
  84. package/dist/Helper/Time.js +10 -0
  85. package/dist/Helper/Time.js.map +1 -0
  86. package/dist/Helper/Url.cjs +24 -0
  87. package/dist/Helper/Url.cjs.map +1 -0
  88. package/dist/Helper/Url.d.cts +4 -0
  89. package/dist/Helper/Url.d.ts +4 -0
  90. package/dist/Helper/Url.js +21 -0
  91. package/dist/Helper/Url.js.map +1 -0
  92. package/dist/Helper/Variables.cjs +20 -0
  93. package/dist/Helper/Variables.cjs.map +1 -0
  94. package/dist/Helper/Variables.d.cts +12 -0
  95. package/dist/Helper/Variables.d.ts +12 -0
  96. package/dist/Helper/Variables.js +15 -0
  97. package/dist/Helper/Variables.js.map +1 -0
  98. package/package.json +36 -2
  99. package/.iml +0 -7
  100. package/.wex/config.yml +0 -3
  101. package/.wex/python/app_manager/.python-version +0 -1
  102. package/.wex/python/app_manager/__main__.py +0 -34
  103. package/.wex/python/app_manager/app_workdir.py +0 -37
  104. package/.wex/python/app_manager/pyproject.toml +0 -13
  105. package/.wex/python/app_manager/requirements.txt +0 -223
  106. package/src/helper/Array.ts +0 -7
  107. package/version.txt +0 -1
package/README.md CHANGED
@@ -1,6 +1,8 @@
1
- # js_helpers
1
+ # @wexample/js-helpers
2
2
 
3
- Version: 0.0.3
3
+ Version: 0.0.7
4
+
5
+ Modern, type-safe helper utilities for Wexample projects.
4
6
 
5
7
  ## Table of Contents
6
8
 
@@ -111,7 +113,7 @@ Free to use in both personal and commercial projects.
111
113
 
112
114
  ## Integration in the Suite
113
115
 
114
- This package is part of the **Wexample Suite** — a collection of high-quality Python packages designed to work seamlessly together.
116
+ This package is part of the Wexample Suite — a collection of high-quality, modular tools designed to work seamlessly together across multiple languages and environments.
115
117
 
116
118
  ### Related Packages
117
119
 
@@ -0,0 +1,49 @@
1
+ 'use strict';
2
+
3
+ // src/Helper/Function.ts
4
+ function functionIsType(value) {
5
+ return typeof value === "function";
6
+ }
7
+
8
+ // src/Common/AsyncConstructor.ts
9
+ var AsyncConstructor = class {
10
+ constructor() {
11
+ this._isReady = false;
12
+ this._readyArgs = null;
13
+ this.readyCallbacks = [];
14
+ }
15
+ get isReady() {
16
+ return this._isReady;
17
+ }
18
+ defer(fn) {
19
+ if (typeof queueMicrotask === "function") queueMicrotask(fn);
20
+ else setTimeout(fn, 0);
21
+ }
22
+ ready(cb) {
23
+ if (this._isReady) {
24
+ const args = this._readyArgs ?? [];
25
+ this.defer(() => void cb.apply(this, args));
26
+ return;
27
+ }
28
+ this.readyCallbacks.push(cb);
29
+ }
30
+ async readyComplete(...args) {
31
+ if (this._isReady) return;
32
+ this._isReady = true;
33
+ this._readyArgs = args;
34
+ const callbacks = this.readyCallbacks.splice(0);
35
+ for (const cb of callbacks) {
36
+ if (!functionIsType(cb)) {
37
+ throw new TypeError("Ready callback must be a function.");
38
+ }
39
+ await cb.apply(this, args);
40
+ }
41
+ }
42
+ seal() {
43
+ Object.seal(this);
44
+ }
45
+ };
46
+
47
+ module.exports = AsyncConstructor;
48
+ //# sourceMappingURL=AsyncConstructor.cjs.map
49
+ //# sourceMappingURL=AsyncConstructor.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/Helper/Function.ts","../../src/Common/AsyncConstructor.ts"],"names":[],"mappings":";;;AAAO,SAAS,eACd,KAAA,EACgC;AAChC,EAAA,OAAO,OAAO,KAAA,KAAU,UAAA;AAC1B;;;ACAA,IAA8B,mBAA9B,MAAoF;AAAA,EAApF,WAAA,GAAA;AACE,IAAA,IAAA,CAAQ,QAAA,GAAW,KAAA;AACnB,IAAA,IAAA,CAAQ,UAAA,GAA2B,IAAA;AACnC,IAAA,IAAA,CAAiB,iBAA4C,EAAC;AAAA,EAAA;AAAA,EAE9D,IAAI,OAAA,GAAmB;AACrB,IAAA,OAAO,IAAA,CAAK,QAAA;AAAA,EACd;AAAA,EAEU,MAAM,EAAA,EAAsB;AACpC,IAAA,IAAI,OAAO,cAAA,KAAmB,UAAA,EAAY,cAAA,CAAe,EAAE,CAAA;AAAA,SACtD,UAAA,CAAW,IAAI,CAAC,CAAA;AAAA,EACvB;AAAA,EAEA,MAAM,EAAA,EAA8B;AAClC,IAAA,IAAI,KAAK,QAAA,EAAU;AACjB,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,UAAA,IAAe,EAAC;AAClC,MAAA,IAAA,CAAK,MAAM,MAAM,KAAK,GAAG,KAAA,CAAM,IAAA,EAAM,IAAI,CAAC,CAAA;AAC1C,MAAA;AAAA,IACF;AACA,IAAA,IAAA,CAAK,cAAA,CAAe,KAAK,EAAE,CAAA;AAAA,EAC7B;AAAA,EAEA,MAAgB,iBAAiB,IAAA,EAA4B;AAC3D,IAAA,IAAI,KAAK,QAAA,EAAU;AAEnB,IAAA,IAAA,CAAK,QAAA,GAAW,IAAA;AAChB,IAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAElB,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,cAAA,CAAe,MAAA,CAAO,CAAC,CAAA;AAE9C,IAAA,KAAA,MAAW,MAAM,SAAA,EAAW;AAC1B,MAAA,IAAI,CAAC,cAAA,CAAe,EAAE,CAAA,EAAG;AACvB,QAAA,MAAM,IAAI,UAAU,oCAAoC,CAAA;AAAA,MAC1D;AACA,MAAA,MAAM,EAAA,CAAG,KAAA,CAAM,IAAA,EAAM,IAAI,CAAA;AAAA,IAC3B;AAAA,EACF;AAAA,EAEU,IAAA,GAAa;AACrB,IAAA,MAAA,CAAO,KAAK,IAAI,CAAA;AAAA,EAClB;AACF","file":"AsyncConstructor.cjs","sourcesContent":["export function functionIsType<TArgs extends unknown[] = unknown[], R = unknown>(\n value: unknown\n): value is (...args: TArgs) => R {\n return typeof value === 'function';\n}\n","import { functionIsType } from '../Helper/Function';\n\ntype AnyFn<TThis, TArgs extends unknown[]> = (this: TThis, ...args: TArgs) => void | Promise<void>;\n\nexport default abstract class AsyncConstructor<TArgs extends unknown[] = unknown[]> {\n private _isReady = false;\n private _readyArgs: TArgs | null = null;\n private readonly readyCallbacks: Array<AnyFn<this, TArgs>> = [];\n\n get isReady(): boolean {\n return this._isReady;\n }\n\n protected defer(fn: () => void): void {\n if (typeof queueMicrotask === 'function') queueMicrotask(fn);\n else setTimeout(fn, 0);\n }\n\n ready(cb: AnyFn<this, TArgs>): void {\n if (this._isReady) {\n const args = this._readyArgs ?? ([] as unknown as TArgs);\n this.defer(() => void cb.apply(this, args));\n return;\n }\n this.readyCallbacks.push(cb);\n }\n\n protected async readyComplete(...args: TArgs): Promise<void> {\n if (this._isReady) return;\n\n this._isReady = true;\n this._readyArgs = args;\n\n const callbacks = this.readyCallbacks.splice(0);\n\n for (const cb of callbacks) {\n if (!functionIsType(cb)) {\n throw new TypeError('Ready callback must be a function.');\n }\n await cb.apply(this, args);\n }\n }\n\n protected seal(): void {\n Object.seal(this);\n }\n}\n"]}
@@ -0,0 +1,13 @@
1
+ type AnyFn<TThis, TArgs extends unknown[]> = (this: TThis, ...args: TArgs) => void | Promise<void>;
2
+ declare abstract class AsyncConstructor<TArgs extends unknown[] = unknown[]> {
3
+ private _isReady;
4
+ private _readyArgs;
5
+ private readonly readyCallbacks;
6
+ get isReady(): boolean;
7
+ protected defer(fn: () => void): void;
8
+ ready(cb: AnyFn<this, TArgs>): void;
9
+ protected readyComplete(...args: TArgs): Promise<void>;
10
+ protected seal(): void;
11
+ }
12
+
13
+ export { AsyncConstructor as default };
@@ -0,0 +1,13 @@
1
+ type AnyFn<TThis, TArgs extends unknown[]> = (this: TThis, ...args: TArgs) => void | Promise<void>;
2
+ declare abstract class AsyncConstructor<TArgs extends unknown[] = unknown[]> {
3
+ private _isReady;
4
+ private _readyArgs;
5
+ private readonly readyCallbacks;
6
+ get isReady(): boolean;
7
+ protected defer(fn: () => void): void;
8
+ ready(cb: AnyFn<this, TArgs>): void;
9
+ protected readyComplete(...args: TArgs): Promise<void>;
10
+ protected seal(): void;
11
+ }
12
+
13
+ export { AsyncConstructor as default };
@@ -0,0 +1,47 @@
1
+ // src/Helper/Function.ts
2
+ function functionIsType(value) {
3
+ return typeof value === "function";
4
+ }
5
+
6
+ // src/Common/AsyncConstructor.ts
7
+ var AsyncConstructor = class {
8
+ constructor() {
9
+ this._isReady = false;
10
+ this._readyArgs = null;
11
+ this.readyCallbacks = [];
12
+ }
13
+ get isReady() {
14
+ return this._isReady;
15
+ }
16
+ defer(fn) {
17
+ if (typeof queueMicrotask === "function") queueMicrotask(fn);
18
+ else setTimeout(fn, 0);
19
+ }
20
+ ready(cb) {
21
+ if (this._isReady) {
22
+ const args = this._readyArgs ?? [];
23
+ this.defer(() => void cb.apply(this, args));
24
+ return;
25
+ }
26
+ this.readyCallbacks.push(cb);
27
+ }
28
+ async readyComplete(...args) {
29
+ if (this._isReady) return;
30
+ this._isReady = true;
31
+ this._readyArgs = args;
32
+ const callbacks = this.readyCallbacks.splice(0);
33
+ for (const cb of callbacks) {
34
+ if (!functionIsType(cb)) {
35
+ throw new TypeError("Ready callback must be a function.");
36
+ }
37
+ await cb.apply(this, args);
38
+ }
39
+ }
40
+ seal() {
41
+ Object.seal(this);
42
+ }
43
+ };
44
+
45
+ export { AsyncConstructor as default };
46
+ //# sourceMappingURL=AsyncConstructor.js.map
47
+ //# sourceMappingURL=AsyncConstructor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/Helper/Function.ts","../../src/Common/AsyncConstructor.ts"],"names":[],"mappings":";AAAO,SAAS,eACd,KAAA,EACgC;AAChC,EAAA,OAAO,OAAO,KAAA,KAAU,UAAA;AAC1B;;;ACAA,IAA8B,mBAA9B,MAAoF;AAAA,EAApF,WAAA,GAAA;AACE,IAAA,IAAA,CAAQ,QAAA,GAAW,KAAA;AACnB,IAAA,IAAA,CAAQ,UAAA,GAA2B,IAAA;AACnC,IAAA,IAAA,CAAiB,iBAA4C,EAAC;AAAA,EAAA;AAAA,EAE9D,IAAI,OAAA,GAAmB;AACrB,IAAA,OAAO,IAAA,CAAK,QAAA;AAAA,EACd;AAAA,EAEU,MAAM,EAAA,EAAsB;AACpC,IAAA,IAAI,OAAO,cAAA,KAAmB,UAAA,EAAY,cAAA,CAAe,EAAE,CAAA;AAAA,SACtD,UAAA,CAAW,IAAI,CAAC,CAAA;AAAA,EACvB;AAAA,EAEA,MAAM,EAAA,EAA8B;AAClC,IAAA,IAAI,KAAK,QAAA,EAAU;AACjB,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,UAAA,IAAe,EAAC;AAClC,MAAA,IAAA,CAAK,MAAM,MAAM,KAAK,GAAG,KAAA,CAAM,IAAA,EAAM,IAAI,CAAC,CAAA;AAC1C,MAAA;AAAA,IACF;AACA,IAAA,IAAA,CAAK,cAAA,CAAe,KAAK,EAAE,CAAA;AAAA,EAC7B;AAAA,EAEA,MAAgB,iBAAiB,IAAA,EAA4B;AAC3D,IAAA,IAAI,KAAK,QAAA,EAAU;AAEnB,IAAA,IAAA,CAAK,QAAA,GAAW,IAAA;AAChB,IAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAElB,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,cAAA,CAAe,MAAA,CAAO,CAAC,CAAA;AAE9C,IAAA,KAAA,MAAW,MAAM,SAAA,EAAW;AAC1B,MAAA,IAAI,CAAC,cAAA,CAAe,EAAE,CAAA,EAAG;AACvB,QAAA,MAAM,IAAI,UAAU,oCAAoC,CAAA;AAAA,MAC1D;AACA,MAAA,MAAM,EAAA,CAAG,KAAA,CAAM,IAAA,EAAM,IAAI,CAAA;AAAA,IAC3B;AAAA,EACF;AAAA,EAEU,IAAA,GAAa;AACrB,IAAA,MAAA,CAAO,KAAK,IAAI,CAAA;AAAA,EAClB;AACF","file":"AsyncConstructor.js","sourcesContent":["export function functionIsType<TArgs extends unknown[] = unknown[], R = unknown>(\n value: unknown\n): value is (...args: TArgs) => R {\n return typeof value === 'function';\n}\n","import { functionIsType } from '../Helper/Function';\n\ntype AnyFn<TThis, TArgs extends unknown[]> = (this: TThis, ...args: TArgs) => void | Promise<void>;\n\nexport default abstract class AsyncConstructor<TArgs extends unknown[] = unknown[]> {\n private _isReady = false;\n private _readyArgs: TArgs | null = null;\n private readonly readyCallbacks: Array<AnyFn<this, TArgs>> = [];\n\n get isReady(): boolean {\n return this._isReady;\n }\n\n protected defer(fn: () => void): void {\n if (typeof queueMicrotask === 'function') queueMicrotask(fn);\n else setTimeout(fn, 0);\n }\n\n ready(cb: AnyFn<this, TArgs>): void {\n if (this._isReady) {\n const args = this._readyArgs ?? ([] as unknown as TArgs);\n this.defer(() => void cb.apply(this, args));\n return;\n }\n this.readyCallbacks.push(cb);\n }\n\n protected async readyComplete(...args: TArgs): Promise<void> {\n if (this._isReady) return;\n\n this._isReady = true;\n this._readyArgs = args;\n\n const callbacks = this.readyCallbacks.splice(0);\n\n for (const cb of callbacks) {\n if (!functionIsType(cb)) {\n throw new TypeError('Ready callback must be a function.');\n }\n await cb.apply(this, args);\n }\n }\n\n protected seal(): void {\n Object.seal(this);\n }\n}\n"]}
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ // src/Helper/Array.ts
4
+ function arrayDeleteItem(haystack, needle) {
5
+ return arrayDeleteByIndex(haystack, haystack.indexOf(needle));
6
+ }
7
+ function arrayDeleteByIndex(haystack, index) {
8
+ if (index !== -1) {
9
+ haystack.splice(index, 1);
10
+ }
11
+ return haystack;
12
+ }
13
+ function arrayFromArguments(args) {
14
+ return Array.prototype.slice.call(args);
15
+ }
16
+ function arrayShallowCopy(array) {
17
+ return array.slice(0);
18
+ }
19
+ function arrayUnique(array) {
20
+ return array.filter((value, index) => array.indexOf(value) === index);
21
+ }
22
+ function arrayFindByIndex(array, position) {
23
+ return array[position >= 0 ? position : array.length + position];
24
+ }
25
+
26
+ exports.arrayDeleteByIndex = arrayDeleteByIndex;
27
+ exports.arrayDeleteItem = arrayDeleteItem;
28
+ exports.arrayFindByIndex = arrayFindByIndex;
29
+ exports.arrayFromArguments = arrayFromArguments;
30
+ exports.arrayShallowCopy = arrayShallowCopy;
31
+ exports.arrayUnique = arrayUnique;
32
+ //# sourceMappingURL=Array.cjs.map
33
+ //# sourceMappingURL=Array.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/Helper/Array.ts"],"names":[],"mappings":";;;AAAO,SAAS,eAAA,CAAmB,UAAe,MAAA,EAAgB;AAChE,EAAA,OAAO,kBAAA,CAAmB,QAAA,EAAU,QAAA,CAAS,OAAA,CAAQ,MAAM,CAAC,CAAA;AAC9D;AAEO,SAAS,kBAAA,CAAsB,UAAe,KAAA,EAAoB;AACvE,EAAA,IAAI,UAAU,EAAA,EAAI;AAChB,IAAA,QAAA,CAAS,MAAA,CAAO,OAAO,CAAC,CAAA;AAAA,EAC1B;AAEA,EAAA,OAAO,QAAA;AACT;AAKO,SAAS,mBAAsB,IAAA,EAAyB;AAC7D,EAAA,OAAO,KAAA,CAAM,SAAA,CAAU,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA;AACxC;AAEO,SAAS,iBAAoB,KAAA,EAAiB;AACnD,EAAA,OAAO,KAAA,CAAM,MAAM,CAAC,CAAA;AACtB;AAEO,SAAS,YAAe,KAAA,EAAiB;AAC9C,EAAA,OAAO,KAAA,CAAM,OAAO,CAAC,KAAA,EAAO,UAAU,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,KAAM,KAAK,CAAA;AACtE;AAEO,SAAS,gBAAA,CAAoB,OAAY,QAAA,EAAiC;AAC/E,EAAA,OAAO,MAAM,QAAA,IAAY,CAAA,GAAI,QAAA,GAAW,KAAA,CAAM,SAAS,QAAQ,CAAA;AACjE","file":"Array.cjs","sourcesContent":["export function arrayDeleteItem<T>(haystack: T[], needle: T): T[] {\n return arrayDeleteByIndex(haystack, haystack.indexOf(needle));\n}\n\nexport function arrayDeleteByIndex<T>(haystack: T[], index: number): T[] {\n if (index !== -1) {\n haystack.splice(index, 1);\n }\n\n return haystack;\n}\n\n/**\n * Functions \"arguments\" object may be transformed to real array for extra manipulations.\n */\nexport function arrayFromArguments<T>(args: ArrayLike<T>): T[] {\n return Array.prototype.slice.call(args);\n}\n\nexport function arrayShallowCopy<T>(array: T[]): T[] {\n return array.slice(0);\n}\n\nexport function arrayUnique<T>(array: T[]): T[] {\n return array.filter((value, index) => array.indexOf(value) === index);\n}\n\nexport function arrayFindByIndex<T>(array: T[], position: number): T | undefined {\n return array[position >= 0 ? position : array.length + position];\n}\n"]}
@@ -0,0 +1,11 @@
1
+ declare function arrayDeleteItem<T>(haystack: T[], needle: T): T[];
2
+ declare function arrayDeleteByIndex<T>(haystack: T[], index: number): T[];
3
+ /**
4
+ * Functions "arguments" object may be transformed to real array for extra manipulations.
5
+ */
6
+ declare function arrayFromArguments<T>(args: ArrayLike<T>): T[];
7
+ declare function arrayShallowCopy<T>(array: T[]): T[];
8
+ declare function arrayUnique<T>(array: T[]): T[];
9
+ declare function arrayFindByIndex<T>(array: T[], position: number): T | undefined;
10
+
11
+ export { arrayDeleteByIndex, arrayDeleteItem, arrayFindByIndex, arrayFromArguments, arrayShallowCopy, arrayUnique };
@@ -0,0 +1,11 @@
1
+ declare function arrayDeleteItem<T>(haystack: T[], needle: T): T[];
2
+ declare function arrayDeleteByIndex<T>(haystack: T[], index: number): T[];
3
+ /**
4
+ * Functions "arguments" object may be transformed to real array for extra manipulations.
5
+ */
6
+ declare function arrayFromArguments<T>(args: ArrayLike<T>): T[];
7
+ declare function arrayShallowCopy<T>(array: T[]): T[];
8
+ declare function arrayUnique<T>(array: T[]): T[];
9
+ declare function arrayFindByIndex<T>(array: T[], position: number): T | undefined;
10
+
11
+ export { arrayDeleteByIndex, arrayDeleteItem, arrayFindByIndex, arrayFromArguments, arrayShallowCopy, arrayUnique };
@@ -0,0 +1,26 @@
1
+ // src/Helper/Array.ts
2
+ function arrayDeleteItem(haystack, needle) {
3
+ return arrayDeleteByIndex(haystack, haystack.indexOf(needle));
4
+ }
5
+ function arrayDeleteByIndex(haystack, index) {
6
+ if (index !== -1) {
7
+ haystack.splice(index, 1);
8
+ }
9
+ return haystack;
10
+ }
11
+ function arrayFromArguments(args) {
12
+ return Array.prototype.slice.call(args);
13
+ }
14
+ function arrayShallowCopy(array) {
15
+ return array.slice(0);
16
+ }
17
+ function arrayUnique(array) {
18
+ return array.filter((value, index) => array.indexOf(value) === index);
19
+ }
20
+ function arrayFindByIndex(array, position) {
21
+ return array[position >= 0 ? position : array.length + position];
22
+ }
23
+
24
+ export { arrayDeleteByIndex, arrayDeleteItem, arrayFindByIndex, arrayFromArguments, arrayShallowCopy, arrayUnique };
25
+ //# sourceMappingURL=Array.js.map
26
+ //# sourceMappingURL=Array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/Helper/Array.ts"],"names":[],"mappings":";AAAO,SAAS,eAAA,CAAmB,UAAe,MAAA,EAAgB;AAChE,EAAA,OAAO,kBAAA,CAAmB,QAAA,EAAU,QAAA,CAAS,OAAA,CAAQ,MAAM,CAAC,CAAA;AAC9D;AAEO,SAAS,kBAAA,CAAsB,UAAe,KAAA,EAAoB;AACvE,EAAA,IAAI,UAAU,EAAA,EAAI;AAChB,IAAA,QAAA,CAAS,MAAA,CAAO,OAAO,CAAC,CAAA;AAAA,EAC1B;AAEA,EAAA,OAAO,QAAA;AACT;AAKO,SAAS,mBAAsB,IAAA,EAAyB;AAC7D,EAAA,OAAO,KAAA,CAAM,SAAA,CAAU,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA;AACxC;AAEO,SAAS,iBAAoB,KAAA,EAAiB;AACnD,EAAA,OAAO,KAAA,CAAM,MAAM,CAAC,CAAA;AACtB;AAEO,SAAS,YAAe,KAAA,EAAiB;AAC9C,EAAA,OAAO,KAAA,CAAM,OAAO,CAAC,KAAA,EAAO,UAAU,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,KAAM,KAAK,CAAA;AACtE;AAEO,SAAS,gBAAA,CAAoB,OAAY,QAAA,EAAiC;AAC/E,EAAA,OAAO,MAAM,QAAA,IAAY,CAAA,GAAI,QAAA,GAAW,KAAA,CAAM,SAAS,QAAQ,CAAA;AACjE","file":"Array.js","sourcesContent":["export function arrayDeleteItem<T>(haystack: T[], needle: T): T[] {\n return arrayDeleteByIndex(haystack, haystack.indexOf(needle));\n}\n\nexport function arrayDeleteByIndex<T>(haystack: T[], index: number): T[] {\n if (index !== -1) {\n haystack.splice(index, 1);\n }\n\n return haystack;\n}\n\n/**\n * Functions \"arguments\" object may be transformed to real array for extra manipulations.\n */\nexport function arrayFromArguments<T>(args: ArrayLike<T>): T[] {\n return Array.prototype.slice.call(args);\n}\n\nexport function arrayShallowCopy<T>(array: T[]): T[] {\n return array.slice(0);\n}\n\nexport function arrayUnique<T>(array: T[]): T[] {\n return array.filter((value, index) => array.indexOf(value) === index);\n}\n\nexport function arrayFindByIndex<T>(array: T[], position: number): T | undefined {\n return array[position >= 0 ? position : array.length + position];\n}\n"]}
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ // src/Helper/Bytes.ts
4
+ function bytesFormatBytes(bytes, decimals = 2) {
5
+ if (bytes === 0) {
6
+ return "0 Bytes";
7
+ }
8
+ const k = 1024;
9
+ const dm = decimals < 0 ? 0 : decimals;
10
+ const sizes = ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
11
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
12
+ return `${parseFloat((bytes / k ** i).toFixed(dm))} ${sizes[i]}`;
13
+ }
14
+
15
+ exports.bytesFormatBytes = bytesFormatBytes;
16
+ //# sourceMappingURL=Bytes.cjs.map
17
+ //# sourceMappingURL=Bytes.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/Helper/Bytes.ts"],"names":[],"mappings":";;;AAAO,SAAS,gBAAA,CAAiB,KAAA,EAAe,QAAA,GAAW,CAAA,EAAW;AACpE,EAAA,IAAI,UAAU,CAAA,EAAG;AACf,IAAA,OAAO,SAAA;AAAA,EACT;AAEA,EAAA,MAAM,CAAA,GAAI,IAAA;AACV,EAAA,MAAM,EAAA,GAAK,QAAA,GAAW,CAAA,GAAI,CAAA,GAAI,QAAA;AAC9B,EAAA,MAAM,KAAA,GAAQ,CAAC,GAAA,EAAK,IAAA,EAAM,IAAA,EAAM,MAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA;AAClE,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAC,CAAC,CAAA;AAElD,EAAA,OAAO,CAAA,EAAG,UAAA,CAAA,CAAY,KAAA,GAAQ,CAAA,IAAK,CAAA,EAAG,OAAA,CAAQ,EAAE,CAAC,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAChE","file":"Bytes.cjs","sourcesContent":["export function bytesFormatBytes(bytes: number, decimals = 2): string {\n if (bytes === 0) {\n return '0 Bytes';\n }\n\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return `${parseFloat((bytes / k ** i).toFixed(dm))} ${sizes[i]}`;\n}\n"]}
@@ -0,0 +1,3 @@
1
+ declare function bytesFormatBytes(bytes: number, decimals?: number): string;
2
+
3
+ export { bytesFormatBytes };
@@ -0,0 +1,3 @@
1
+ declare function bytesFormatBytes(bytes: number, decimals?: number): string;
2
+
3
+ export { bytesFormatBytes };
@@ -0,0 +1,15 @@
1
+ // src/Helper/Bytes.ts
2
+ function bytesFormatBytes(bytes, decimals = 2) {
3
+ if (bytes === 0) {
4
+ return "0 Bytes";
5
+ }
6
+ const k = 1024;
7
+ const dm = decimals < 0 ? 0 : decimals;
8
+ const sizes = ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
9
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
10
+ return `${parseFloat((bytes / k ** i).toFixed(dm))} ${sizes[i]}`;
11
+ }
12
+
13
+ export { bytesFormatBytes };
14
+ //# sourceMappingURL=Bytes.js.map
15
+ //# sourceMappingURL=Bytes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/Helper/Bytes.ts"],"names":[],"mappings":";AAAO,SAAS,gBAAA,CAAiB,KAAA,EAAe,QAAA,GAAW,CAAA,EAAW;AACpE,EAAA,IAAI,UAAU,CAAA,EAAG;AACf,IAAA,OAAO,SAAA;AAAA,EACT;AAEA,EAAA,MAAM,CAAA,GAAI,IAAA;AACV,EAAA,MAAM,EAAA,GAAK,QAAA,GAAW,CAAA,GAAI,CAAA,GAAI,QAAA;AAC9B,EAAA,MAAM,KAAA,GAAQ,CAAC,GAAA,EAAK,IAAA,EAAM,IAAA,EAAM,MAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA;AAClE,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAC,CAAC,CAAA;AAElD,EAAA,OAAO,CAAA,EAAG,UAAA,CAAA,CAAY,KAAA,GAAQ,CAAA,IAAK,CAAA,EAAG,OAAA,CAAQ,EAAE,CAAC,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAChE","file":"Bytes.js","sourcesContent":["export function bytesFormatBytes(bytes: number, decimals = 2): string {\n if (bytes === 0) {\n return '0 Bytes';\n }\n\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return `${parseFloat((bytes / k ** i).toFixed(dm))} ${sizes[i]}`;\n}\n"]}
@@ -0,0 +1,83 @@
1
+ 'use strict';
2
+
3
+ // src/Helper/Dom.ts
4
+ var DOM_ATTRIBUTE = {
5
+ HREF: "href",
6
+ ID: "id",
7
+ REL: "rel",
8
+ SRC: "src"
9
+ };
10
+ var DOM_ATTRIBUTE_VALUE = {
11
+ STYLESHEET: "stylesheet"
12
+ };
13
+ var DOM_INSERT_POSITION = {
14
+ BEFORE_END: "beforeend"
15
+ };
16
+ var DOM_TAG_NAME = {
17
+ A: "a",
18
+ DIV: "div",
19
+ LINK: "link",
20
+ SCRIPT: "script"
21
+ };
22
+ function domAppendInnerHtml(el, html) {
23
+ el.insertAdjacentHTML(DOM_INSERT_POSITION.BEFORE_END, html);
24
+ }
25
+ function domFindPreviousNode(el) {
26
+ let current = el;
27
+ do {
28
+ current = current?.previousSibling ?? null;
29
+ } while (current && current.nodeType === Node.TEXT_NODE);
30
+ return current;
31
+ }
32
+ function domFindScrollParent(element, includeHidden = false) {
33
+ const style = getComputedStyle(element);
34
+ const overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/;
35
+ const excludeStaticParent = style.position === "absolute";
36
+ if (style.position === "fixed") {
37
+ return document.body;
38
+ }
39
+ let parent = element.parentElement;
40
+ while (parent) {
41
+ const parentStyle = getComputedStyle(parent);
42
+ if ((!excludeStaticParent || parentStyle.position !== "static") && overflowRegex.test(parentStyle.overflow + parentStyle.overflowY + parentStyle.overflowX)) {
43
+ return parent;
44
+ }
45
+ parent = parent.parentElement;
46
+ }
47
+ return document.body;
48
+ }
49
+ function domToggleMainOverlay(visible = null) {
50
+ const overlay = document.getElementById("main-overlay");
51
+ if (!overlay) return;
52
+ const classList = overlay.classList;
53
+ const shouldShow = visible !== null ? visible : !classList.contains("visible");
54
+ classList[shouldShow ? "add" : "remove"]("visible");
55
+ }
56
+ function domCreateHtmlDocumentFromHtml(html) {
57
+ const root = document.createElement("html");
58
+ root.innerHTML = html;
59
+ return root;
60
+ }
61
+ function domRemoveAllClasses(el, classesToRemove) {
62
+ for (const className of classesToRemove) {
63
+ el.classList.remove(className);
64
+ }
65
+ }
66
+ function domReplaceByOneClass(el, newState, classesToRemove) {
67
+ domRemoveAllClasses(el, classesToRemove);
68
+ el.classList.add(newState);
69
+ }
70
+
71
+ exports.DOM_ATTRIBUTE = DOM_ATTRIBUTE;
72
+ exports.DOM_ATTRIBUTE_VALUE = DOM_ATTRIBUTE_VALUE;
73
+ exports.DOM_INSERT_POSITION = DOM_INSERT_POSITION;
74
+ exports.DOM_TAG_NAME = DOM_TAG_NAME;
75
+ exports.domAppendInnerHtml = domAppendInnerHtml;
76
+ exports.domCreateHtmlDocumentFromHtml = domCreateHtmlDocumentFromHtml;
77
+ exports.domFindPreviousNode = domFindPreviousNode;
78
+ exports.domFindScrollParent = domFindScrollParent;
79
+ exports.domRemoveAllClasses = domRemoveAllClasses;
80
+ exports.domReplaceByOneClass = domReplaceByOneClass;
81
+ exports.domToggleMainOverlay = domToggleMainOverlay;
82
+ //# sourceMappingURL=Dom.cjs.map
83
+ //# sourceMappingURL=Dom.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/Helper/Dom.ts"],"names":[],"mappings":"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","file":"Dom.cjs","sourcesContent":["export const DOM_ATTRIBUTE = {\n HREF: 'href',\n ID: 'id',\n REL: 'rel',\n SRC: 'src',\n} as const;\n\nexport const DOM_ATTRIBUTE_VALUE = {\n STYLESHEET: 'stylesheet',\n} as const;\n\nexport const DOM_INSERT_POSITION = {\n BEFORE_END: 'beforeend' as InsertPosition,\n} as const;\n\nexport const DOM_TAG_NAME = {\n A: 'a',\n DIV: 'div',\n LINK: 'link',\n SCRIPT: 'script',\n} as const;\n\nexport function domAppendInnerHtml(el: HTMLElement, html: string): void {\n el.insertAdjacentHTML(DOM_INSERT_POSITION.BEFORE_END, html);\n}\n\nexport function domFindPreviousNode(el: HTMLElement): HTMLElement | null {\n let current: ChildNode | null = el;\n\n do {\n current = current?.previousSibling ?? null;\n } while (current && current.nodeType === Node.TEXT_NODE);\n\n return current as HTMLElement | null;\n}\n\n/**\n * Return first scrollable parent.\n *\n * @see https://stackoverflow.com/a/42543908/2057976\n */\nexport function domFindScrollParent(element: HTMLElement, includeHidden = false): HTMLElement {\n const style = getComputedStyle(element);\n const overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/;\n const excludeStaticParent = style.position === 'absolute';\n\n if (style.position === 'fixed') {\n return document.body;\n }\n\n let parent: HTMLElement | null = element.parentElement;\n while (parent) {\n const parentStyle = getComputedStyle(parent);\n\n if (\n (!excludeStaticParent || parentStyle.position !== 'static') &&\n overflowRegex.test(parentStyle.overflow + parentStyle.overflowY + parentStyle.overflowX)\n ) {\n return parent;\n }\n\n parent = parent.parentElement;\n }\n\n return document.body;\n}\n\nexport function domToggleMainOverlay(visible: boolean | null = null): void {\n const overlay = document.getElementById('main-overlay');\n if (!overlay) return;\n\n const classList = overlay.classList;\n const shouldShow = visible !== null ? visible : !classList.contains('visible');\n\n classList[shouldShow ? 'add' : 'remove']('visible');\n}\n\nexport function domCreateHtmlDocumentFromHtml(html: string): HTMLHtmlElement {\n const root = document.createElement('html');\n root.innerHTML = html;\n return root;\n}\n\nexport function domRemoveAllClasses(el: HTMLElement, classesToRemove: Iterable<string>): void {\n for (const className of classesToRemove) {\n el.classList.remove(className);\n }\n}\n\nexport function domReplaceByOneClass(\n el: HTMLElement,\n newState: string,\n classesToRemove: Iterable<string>\n): void {\n domRemoveAllClasses(el, classesToRemove);\n el.classList.add(newState);\n}\n"]}
@@ -0,0 +1,32 @@
1
+ declare const DOM_ATTRIBUTE: {
2
+ readonly HREF: "href";
3
+ readonly ID: "id";
4
+ readonly REL: "rel";
5
+ readonly SRC: "src";
6
+ };
7
+ declare const DOM_ATTRIBUTE_VALUE: {
8
+ readonly STYLESHEET: "stylesheet";
9
+ };
10
+ declare const DOM_INSERT_POSITION: {
11
+ readonly BEFORE_END: InsertPosition;
12
+ };
13
+ declare const DOM_TAG_NAME: {
14
+ readonly A: "a";
15
+ readonly DIV: "div";
16
+ readonly LINK: "link";
17
+ readonly SCRIPT: "script";
18
+ };
19
+ declare function domAppendInnerHtml(el: HTMLElement, html: string): void;
20
+ declare function domFindPreviousNode(el: HTMLElement): HTMLElement | null;
21
+ /**
22
+ * Return first scrollable parent.
23
+ *
24
+ * @see https://stackoverflow.com/a/42543908/2057976
25
+ */
26
+ declare function domFindScrollParent(element: HTMLElement, includeHidden?: boolean): HTMLElement;
27
+ declare function domToggleMainOverlay(visible?: boolean | null): void;
28
+ declare function domCreateHtmlDocumentFromHtml(html: string): HTMLHtmlElement;
29
+ declare function domRemoveAllClasses(el: HTMLElement, classesToRemove: Iterable<string>): void;
30
+ declare function domReplaceByOneClass(el: HTMLElement, newState: string, classesToRemove: Iterable<string>): void;
31
+
32
+ export { DOM_ATTRIBUTE, DOM_ATTRIBUTE_VALUE, DOM_INSERT_POSITION, DOM_TAG_NAME, domAppendInnerHtml, domCreateHtmlDocumentFromHtml, domFindPreviousNode, domFindScrollParent, domRemoveAllClasses, domReplaceByOneClass, domToggleMainOverlay };
@@ -0,0 +1,32 @@
1
+ declare const DOM_ATTRIBUTE: {
2
+ readonly HREF: "href";
3
+ readonly ID: "id";
4
+ readonly REL: "rel";
5
+ readonly SRC: "src";
6
+ };
7
+ declare const DOM_ATTRIBUTE_VALUE: {
8
+ readonly STYLESHEET: "stylesheet";
9
+ };
10
+ declare const DOM_INSERT_POSITION: {
11
+ readonly BEFORE_END: InsertPosition;
12
+ };
13
+ declare const DOM_TAG_NAME: {
14
+ readonly A: "a";
15
+ readonly DIV: "div";
16
+ readonly LINK: "link";
17
+ readonly SCRIPT: "script";
18
+ };
19
+ declare function domAppendInnerHtml(el: HTMLElement, html: string): void;
20
+ declare function domFindPreviousNode(el: HTMLElement): HTMLElement | null;
21
+ /**
22
+ * Return first scrollable parent.
23
+ *
24
+ * @see https://stackoverflow.com/a/42543908/2057976
25
+ */
26
+ declare function domFindScrollParent(element: HTMLElement, includeHidden?: boolean): HTMLElement;
27
+ declare function domToggleMainOverlay(visible?: boolean | null): void;
28
+ declare function domCreateHtmlDocumentFromHtml(html: string): HTMLHtmlElement;
29
+ declare function domRemoveAllClasses(el: HTMLElement, classesToRemove: Iterable<string>): void;
30
+ declare function domReplaceByOneClass(el: HTMLElement, newState: string, classesToRemove: Iterable<string>): void;
31
+
32
+ export { DOM_ATTRIBUTE, DOM_ATTRIBUTE_VALUE, DOM_INSERT_POSITION, DOM_TAG_NAME, domAppendInnerHtml, domCreateHtmlDocumentFromHtml, domFindPreviousNode, domFindScrollParent, domRemoveAllClasses, domReplaceByOneClass, domToggleMainOverlay };
@@ -0,0 +1,71 @@
1
+ // src/Helper/Dom.ts
2
+ var DOM_ATTRIBUTE = {
3
+ HREF: "href",
4
+ ID: "id",
5
+ REL: "rel",
6
+ SRC: "src"
7
+ };
8
+ var DOM_ATTRIBUTE_VALUE = {
9
+ STYLESHEET: "stylesheet"
10
+ };
11
+ var DOM_INSERT_POSITION = {
12
+ BEFORE_END: "beforeend"
13
+ };
14
+ var DOM_TAG_NAME = {
15
+ A: "a",
16
+ DIV: "div",
17
+ LINK: "link",
18
+ SCRIPT: "script"
19
+ };
20
+ function domAppendInnerHtml(el, html) {
21
+ el.insertAdjacentHTML(DOM_INSERT_POSITION.BEFORE_END, html);
22
+ }
23
+ function domFindPreviousNode(el) {
24
+ let current = el;
25
+ do {
26
+ current = current?.previousSibling ?? null;
27
+ } while (current && current.nodeType === Node.TEXT_NODE);
28
+ return current;
29
+ }
30
+ function domFindScrollParent(element, includeHidden = false) {
31
+ const style = getComputedStyle(element);
32
+ const overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/;
33
+ const excludeStaticParent = style.position === "absolute";
34
+ if (style.position === "fixed") {
35
+ return document.body;
36
+ }
37
+ let parent = element.parentElement;
38
+ while (parent) {
39
+ const parentStyle = getComputedStyle(parent);
40
+ if ((!excludeStaticParent || parentStyle.position !== "static") && overflowRegex.test(parentStyle.overflow + parentStyle.overflowY + parentStyle.overflowX)) {
41
+ return parent;
42
+ }
43
+ parent = parent.parentElement;
44
+ }
45
+ return document.body;
46
+ }
47
+ function domToggleMainOverlay(visible = null) {
48
+ const overlay = document.getElementById("main-overlay");
49
+ if (!overlay) return;
50
+ const classList = overlay.classList;
51
+ const shouldShow = visible !== null ? visible : !classList.contains("visible");
52
+ classList[shouldShow ? "add" : "remove"]("visible");
53
+ }
54
+ function domCreateHtmlDocumentFromHtml(html) {
55
+ const root = document.createElement("html");
56
+ root.innerHTML = html;
57
+ return root;
58
+ }
59
+ function domRemoveAllClasses(el, classesToRemove) {
60
+ for (const className of classesToRemove) {
61
+ el.classList.remove(className);
62
+ }
63
+ }
64
+ function domReplaceByOneClass(el, newState, classesToRemove) {
65
+ domRemoveAllClasses(el, classesToRemove);
66
+ el.classList.add(newState);
67
+ }
68
+
69
+ export { DOM_ATTRIBUTE, DOM_ATTRIBUTE_VALUE, DOM_INSERT_POSITION, DOM_TAG_NAME, domAppendInnerHtml, domCreateHtmlDocumentFromHtml, domFindPreviousNode, domFindScrollParent, domRemoveAllClasses, domReplaceByOneClass, domToggleMainOverlay };
70
+ //# sourceMappingURL=Dom.js.map
71
+ //# sourceMappingURL=Dom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/Helper/Dom.ts"],"names":[],"mappings":"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","file":"Dom.js","sourcesContent":["export const DOM_ATTRIBUTE = {\n HREF: 'href',\n ID: 'id',\n REL: 'rel',\n SRC: 'src',\n} as const;\n\nexport const DOM_ATTRIBUTE_VALUE = {\n STYLESHEET: 'stylesheet',\n} as const;\n\nexport const DOM_INSERT_POSITION = {\n BEFORE_END: 'beforeend' as InsertPosition,\n} as const;\n\nexport const DOM_TAG_NAME = {\n A: 'a',\n DIV: 'div',\n LINK: 'link',\n SCRIPT: 'script',\n} as const;\n\nexport function domAppendInnerHtml(el: HTMLElement, html: string): void {\n el.insertAdjacentHTML(DOM_INSERT_POSITION.BEFORE_END, html);\n}\n\nexport function domFindPreviousNode(el: HTMLElement): HTMLElement | null {\n let current: ChildNode | null = el;\n\n do {\n current = current?.previousSibling ?? null;\n } while (current && current.nodeType === Node.TEXT_NODE);\n\n return current as HTMLElement | null;\n}\n\n/**\n * Return first scrollable parent.\n *\n * @see https://stackoverflow.com/a/42543908/2057976\n */\nexport function domFindScrollParent(element: HTMLElement, includeHidden = false): HTMLElement {\n const style = getComputedStyle(element);\n const overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/;\n const excludeStaticParent = style.position === 'absolute';\n\n if (style.position === 'fixed') {\n return document.body;\n }\n\n let parent: HTMLElement | null = element.parentElement;\n while (parent) {\n const parentStyle = getComputedStyle(parent);\n\n if (\n (!excludeStaticParent || parentStyle.position !== 'static') &&\n overflowRegex.test(parentStyle.overflow + parentStyle.overflowY + parentStyle.overflowX)\n ) {\n return parent;\n }\n\n parent = parent.parentElement;\n }\n\n return document.body;\n}\n\nexport function domToggleMainOverlay(visible: boolean | null = null): void {\n const overlay = document.getElementById('main-overlay');\n if (!overlay) return;\n\n const classList = overlay.classList;\n const shouldShow = visible !== null ? visible : !classList.contains('visible');\n\n classList[shouldShow ? 'add' : 'remove']('visible');\n}\n\nexport function domCreateHtmlDocumentFromHtml(html: string): HTMLHtmlElement {\n const root = document.createElement('html');\n root.innerHTML = html;\n return root;\n}\n\nexport function domRemoveAllClasses(el: HTMLElement, classesToRemove: Iterable<string>): void {\n for (const className of classesToRemove) {\n el.classList.remove(className);\n }\n}\n\nexport function domReplaceByOneClass(\n el: HTMLElement,\n newState: string,\n classesToRemove: Iterable<string>\n): void {\n domRemoveAllClasses(el, classesToRemove);\n el.classList.add(newState);\n}\n"]}
@@ -0,0 +1,35 @@
1
+ 'use strict';
2
+
3
+ // src/Helper/Event.ts
4
+ var EVENT = {
5
+ CLICK: "click",
6
+ DBLCLICK: "dblclick",
7
+ CONTEXTMENU: "contextmenu",
8
+ KEYDOWN: "keydown",
9
+ KEYUP: "keyup",
10
+ KEYPRESS: "keypress",
11
+ INPUT: "input",
12
+ CHANGE: "change",
13
+ FOCUS: "focus",
14
+ BLUR: "blur",
15
+ SUBMIT: "submit",
16
+ RESET: "reset",
17
+ MOUSEUP: "mouseup",
18
+ MOUSEDOWN: "mousedown",
19
+ MOUSEMOVE: "mousemove",
20
+ MOUSEENTER: "mouseenter",
21
+ MOUSELEAVE: "mouseleave",
22
+ WHEEL: "wheel",
23
+ SCROLL: "scroll",
24
+ RESIZE: "resize",
25
+ TOUCHSTART: "touchstart",
26
+ TOUCHMOVE: "touchmove",
27
+ TOUCHEND: "touchend",
28
+ POINTERDOWN: "pointerdown",
29
+ POINTERMOVE: "pointermove",
30
+ POINTERUP: "pointerup"
31
+ };
32
+
33
+ exports.EVENT = EVENT;
34
+ //# sourceMappingURL=Event.cjs.map
35
+ //# sourceMappingURL=Event.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/Helper/Event.ts"],"names":[],"mappings":";;;AAAO,IAAM,KAAA,GAAQ;AAAA,EACnB,KAAA,EAAO,OAAA;AAAA,EACP,QAAA,EAAU,UAAA;AAAA,EACV,WAAA,EAAa,aAAA;AAAA,EACb,OAAA,EAAS,SAAA;AAAA,EACT,KAAA,EAAO,OAAA;AAAA,EACP,QAAA,EAAU,UAAA;AAAA,EACV,KAAA,EAAO,OAAA;AAAA,EACP,MAAA,EAAQ,QAAA;AAAA,EACR,KAAA,EAAO,OAAA;AAAA,EACP,IAAA,EAAM,MAAA;AAAA,EACN,MAAA,EAAQ,QAAA;AAAA,EACR,KAAA,EAAO,OAAA;AAAA,EACP,OAAA,EAAS,SAAA;AAAA,EACT,SAAA,EAAW,WAAA;AAAA,EACX,SAAA,EAAW,WAAA;AAAA,EACX,UAAA,EAAY,YAAA;AAAA,EACZ,UAAA,EAAY,YAAA;AAAA,EACZ,KAAA,EAAO,OAAA;AAAA,EACP,MAAA,EAAQ,QAAA;AAAA,EACR,MAAA,EAAQ,QAAA;AAAA,EACR,UAAA,EAAY,YAAA;AAAA,EACZ,SAAA,EAAW,WAAA;AAAA,EACX,QAAA,EAAU,UAAA;AAAA,EACV,WAAA,EAAa,aAAA;AAAA,EACb,WAAA,EAAa,aAAA;AAAA,EACb,SAAA,EAAW;AACb","file":"Event.cjs","sourcesContent":["export const EVENT = {\n CLICK: 'click',\n DBLCLICK: 'dblclick',\n CONTEXTMENU: 'contextmenu',\n KEYDOWN: 'keydown',\n KEYUP: 'keyup',\n KEYPRESS: 'keypress',\n INPUT: 'input',\n CHANGE: 'change',\n FOCUS: 'focus',\n BLUR: 'blur',\n SUBMIT: 'submit',\n RESET: 'reset',\n MOUSEUP: 'mouseup',\n MOUSEDOWN: 'mousedown',\n MOUSEMOVE: 'mousemove',\n MOUSEENTER: 'mouseenter',\n MOUSELEAVE: 'mouseleave',\n WHEEL: 'wheel',\n SCROLL: 'scroll',\n RESIZE: 'resize',\n TOUCHSTART: 'touchstart',\n TOUCHMOVE: 'touchmove',\n TOUCHEND: 'touchend',\n POINTERDOWN: 'pointerdown',\n POINTERMOVE: 'pointermove',\n POINTERUP: 'pointerup',\n} as const;\n\nexport type EventName = (typeof EVENT)[keyof typeof EVENT];\n"]}
@@ -0,0 +1,31 @@
1
+ declare const EVENT: {
2
+ readonly CLICK: "click";
3
+ readonly DBLCLICK: "dblclick";
4
+ readonly CONTEXTMENU: "contextmenu";
5
+ readonly KEYDOWN: "keydown";
6
+ readonly KEYUP: "keyup";
7
+ readonly KEYPRESS: "keypress";
8
+ readonly INPUT: "input";
9
+ readonly CHANGE: "change";
10
+ readonly FOCUS: "focus";
11
+ readonly BLUR: "blur";
12
+ readonly SUBMIT: "submit";
13
+ readonly RESET: "reset";
14
+ readonly MOUSEUP: "mouseup";
15
+ readonly MOUSEDOWN: "mousedown";
16
+ readonly MOUSEMOVE: "mousemove";
17
+ readonly MOUSEENTER: "mouseenter";
18
+ readonly MOUSELEAVE: "mouseleave";
19
+ readonly WHEEL: "wheel";
20
+ readonly SCROLL: "scroll";
21
+ readonly RESIZE: "resize";
22
+ readonly TOUCHSTART: "touchstart";
23
+ readonly TOUCHMOVE: "touchmove";
24
+ readonly TOUCHEND: "touchend";
25
+ readonly POINTERDOWN: "pointerdown";
26
+ readonly POINTERMOVE: "pointermove";
27
+ readonly POINTERUP: "pointerup";
28
+ };
29
+ type EventName = (typeof EVENT)[keyof typeof EVENT];
30
+
31
+ export { EVENT, type EventName };