@splendidlabz/utils 1.11.2 → 1.11.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/cjs/dom/accessibility.cjs +2 -0
- package/dist/cjs/dom/actions/index.cjs +392 -7
- package/dist/cjs/dom/actions/masonry.cjs +97 -6
- package/dist/cjs/dom/actions/prefer-horizontal-scroll.cjs +58 -14
- package/dist/cjs/dom/actions/sticky.cjs +126 -6
- package/dist/cjs/dom/bounding-box.cjs +2 -0
- package/dist/cjs/dom/clipboard.cjs +2 -0
- package/dist/cjs/dom/cookie.cjs +3 -1
- package/dist/cjs/dom/css-vars.cjs +13 -3
- package/dist/cjs/dom/events.cjs +2 -0
- package/dist/cjs/dom/focusable.cjs +2 -0
- package/dist/cjs/dom/font-size.cjs +15 -3
- package/dist/cjs/dom/get-element.cjs +3 -1
- package/dist/cjs/dom/hash.cjs +2 -0
- package/dist/cjs/dom/index.cjs +1249 -47
- package/dist/cjs/dom/keyboard.cjs +2 -0
- package/dist/cjs/dom/local-store.cjs +3 -1
- package/dist/cjs/dom/media.cjs +2 -0
- package/dist/cjs/dom/observers/index.cjs +235 -9
- package/dist/cjs/dom/observers/intersection-observer.cjs +38 -6
- package/dist/cjs/dom/observers/mutation-observer.cjs +38 -6
- package/dist/cjs/dom/observers/observer.cjs +12 -2
- package/dist/cjs/dom/observers/resize-observer.cjs +38 -6
- package/dist/cjs/dom/observers/scroll-observer.cjs +62 -3
- package/dist/cjs/dom/pkce.cjs +13 -3
- package/dist/cjs/dom/query-params.cjs +3 -1
- package/dist/cjs/dom/random-string.cjs +2 -0
- package/dist/cjs/dom/sanitize.cjs +27 -3
- package/dist/cjs/dom/session-store.cjs +3 -1
- package/dist/cjs/dom/spam-prevention.cjs +2 -0
- package/dist/cjs/dom/trap-focus.cjs +131 -9
- package/dist/cjs/dom/ui/aria-current.cjs +2 -0
- package/dist/cjs/dom/ui/inconsistent-button-fix.cjs +2 -0
- package/dist/cjs/dom/ui/index.cjs +87 -9
- package/dist/cjs/dom/ui/scroll-container.cjs +2 -0
- package/dist/cjs/dom/ui/traverse-and-scramble.cjs +2 -0
- package/dist/cjs/lib/arrays/index.cjs +121 -13
- package/dist/cjs/lib/arrays/item-position.cjs +2 -0
- package/dist/cjs/lib/arrays/join.cjs +10 -2
- package/dist/cjs/lib/arrays/shuffle.cjs +2 -0
- package/dist/cjs/lib/arrays/sort.cjs +11 -3
- package/dist/cjs/lib/arrays/split-array.cjs +2 -0
- package/dist/cjs/lib/arrays/unique.cjs +2 -0
- package/dist/cjs/lib/auth/index.cjs +35 -3
- package/dist/cjs/lib/auth/route-manager.cjs +2 -0
- package/dist/cjs/lib/checks.cjs +2 -0
- package/dist/cjs/lib/date/days.cjs +3 -1
- package/dist/cjs/lib/date/index.cjs +190 -7
- package/dist/cjs/lib/date/months.cjs +3 -1
- package/dist/cjs/lib/date/time.cjs +14 -2
- package/dist/cjs/lib/form/form-data.cjs +2 -0
- package/dist/cjs/lib/form/index.cjs +104 -5
- package/dist/cjs/lib/form/sanitize.cjs +2 -0
- package/dist/cjs/lib/functions/callback.cjs +2 -0
- package/dist/cjs/lib/functions/debounce.cjs +2 -0
- package/dist/cjs/lib/functions/env.cjs +2 -0
- package/dist/cjs/lib/functions/functional.cjs +2 -0
- package/dist/cjs/lib/functions/index.cjs +124 -11
- package/dist/cjs/lib/functions/throttle.cjs +2 -0
- package/dist/cjs/lib/functions/timeout.cjs +2 -0
- package/dist/cjs/lib/hash.cjs +2 -0
- package/dist/cjs/lib/index.cjs +1160 -29
- package/dist/cjs/lib/numbers/index.cjs +17 -4
- package/dist/cjs/lib/numbers/math.cjs +2 -0
- package/dist/cjs/lib/objects/camelcase-keys.cjs +45 -4
- package/dist/cjs/lib/objects/empty.cjs +2 -0
- package/dist/cjs/lib/objects/equal.cjs +2 -0
- package/dist/cjs/lib/objects/extend.cjs +117 -6
- package/dist/cjs/lib/objects/flatten.cjs +11 -3
- package/dist/cjs/lib/objects/index.cjs +360 -27
- package/dist/cjs/lib/objects/json.cjs +2 -0
- package/dist/cjs/lib/objects/loop.cjs +2 -0
- package/dist/cjs/lib/objects/mix/mix.cjs +5 -3
- package/dist/cjs/lib/objects/nested-property.cjs +2 -0
- package/dist/cjs/lib/objects/normalize-object.cjs +78 -4
- package/dist/cjs/lib/objects/omit-empty.cjs +2 -0
- package/dist/cjs/lib/objects/size.cjs +2 -0
- package/dist/cjs/lib/objects/split.cjs +2 -0
- package/dist/cjs/lib/promises/index.cjs +51 -3
- package/dist/cjs/lib/promises/reject.cjs +19 -2
- package/dist/cjs/lib/sse.cjs +29 -4
- package/dist/cjs/lib/strings/convert-case/convert-case.cjs +2 -0
- package/dist/cjs/lib/strings/index.cjs +179 -11
- package/dist/cjs/lib/strings/markdown.cjs +3 -1
- package/dist/cjs/lib/strings/name.cjs +2 -0
- package/dist/cjs/lib/strings/pluralize.cjs +3 -1
- package/dist/cjs/lib/strings/query-string.cjs +2 -0
- package/dist/cjs/lib/style/index.cjs +31 -2
- package/dist/cjs/lib/symbols/index.cjs +22 -3
- package/dist/cjs/lib/symbols/symbols.cjs +2 -0
- package/dist/cjs/node/context.cjs +0 -0
- package/dist/cjs/node/dirname.cjs +4 -2
- package/dist/cjs/node/file-cache.cjs +45 -3
- package/dist/cjs/node/file.cjs +4 -2
- package/dist/cjs/node/hash.cjs +3 -1
- package/dist/cjs/node/index.cjs +278 -15
- package/dist/cjs/node/pkce.cjs +20 -8
- package/dist/cjs/node/random-string.cjs +3 -1
- package/dist/cjs/node/sanitize.cjs +27 -3
- package/dist/cjs/node/uuid.cjs +2 -0
- package/dist/esm/node/context.js +0 -0
- package/dist/esm/node/file-cache.js +1 -1
- package/dist/esm/node/pkce.js +3 -2
- package/dist/types/node/context.d.cts +2 -0
- package/dist/types/node/index.d.cts +1 -1
- package/dist/types/node/pkce.d.cts +7 -1
- package/package.json +5 -2
- package/CHANGELOG.md +0 -231
- package/eslint.config.js +0 -2
- package/src/dom/accessibility.js +0 -58
- package/src/dom/actions/index.js +0 -3
- package/src/dom/actions/masonry.js +0 -43
- package/src/dom/actions/prefer-horizontal-scroll.js +0 -121
- package/src/dom/actions/sticky.js +0 -85
- package/src/dom/bounding-box.js +0 -82
- package/src/dom/clipboard.js +0 -14
- package/src/dom/cookie.js +0 -32
- package/src/dom/css-vars.js +0 -19
- package/src/dom/events.js +0 -71
- package/src/dom/focusable.js +0 -165
- package/src/dom/font-size.js +0 -40
- package/src/dom/get-element.js +0 -176
- package/src/dom/hash.js +0 -9
- package/src/dom/index.js +0 -23
- package/src/dom/keyboard.js +0 -44
- package/src/dom/local-store.js +0 -66
- package/src/dom/media.js +0 -30
- package/src/dom/observers/index.js +0 -4
- package/src/dom/observers/intersection-observer.js +0 -43
- package/src/dom/observers/mutation-observer.js +0 -51
- package/src/dom/observers/observer.js +0 -18
- package/src/dom/observers/resize-observer.js +0 -66
- package/src/dom/observers/scroll-observer.js +0 -146
- package/src/dom/pkce.js +0 -34
- package/src/dom/query-params.js +0 -14
- package/src/dom/random-string.js +0 -18
- package/src/dom/random-string.test.js +0 -13
- package/src/dom/sanitize.js +0 -16
- package/src/dom/session-store.js +0 -29
- package/src/dom/spam-prevention.js +0 -40
- package/src/dom/trap-focus.js +0 -70
- package/src/dom/ui/aria-current.js +0 -20
- package/src/dom/ui/inconsistent-button-fix.js +0 -20
- package/src/dom/ui/index.js +0 -4
- package/src/dom/ui/scroll-container.js +0 -25
- package/src/dom/ui/traverse-and-scramble.js +0 -61
- package/src/lib/arrays/index.js +0 -6
- package/src/lib/arrays/item-position.js +0 -23
- package/src/lib/arrays/join.js +0 -20
- package/src/lib/arrays/shuffle.js +0 -21
- package/src/lib/arrays/sort.js +0 -88
- package/src/lib/arrays/sort.spec.js +0 -123
- package/src/lib/arrays/split-array.js +0 -15
- package/src/lib/arrays/unique.js +0 -3
- package/src/lib/auth/index.js +0 -1
- package/src/lib/auth/route-manager.js +0 -45
- package/src/lib/checks.js +0 -57
- package/src/lib/date/days.js +0 -9
- package/src/lib/date/index.js +0 -3
- package/src/lib/date/months.js +0 -74
- package/src/lib/date/time.js +0 -83
- package/src/lib/form/form-data.js +0 -73
- package/src/lib/form/index.js +0 -2
- package/src/lib/form/sanitize.js +0 -80
- package/src/lib/form/sanitize.spec.js +0 -126
- package/src/lib/functions/callback.js +0 -8
- package/src/lib/functions/debounce.js +0 -18
- package/src/lib/functions/env.js +0 -5
- package/src/lib/functions/functional.js +0 -113
- package/src/lib/functions/functional.test.js +0 -196
- package/src/lib/functions/index.js +0 -5
- package/src/lib/functions/throttle.js +0 -11
- package/src/lib/functions/timeout.js +0 -15
- package/src/lib/hash.js +0 -18
- package/src/lib/hash.spec.js +0 -163
- package/src/lib/index.js +0 -14
- package/src/lib/numbers/index.js +0 -12
- package/src/lib/numbers/math.js +0 -9
- package/src/lib/numbers/split-unit.test.js +0 -45
- package/src/lib/objects/camelcase-keys.js +0 -17
- package/src/lib/objects/camelcase-keys.test.js +0 -72
- package/src/lib/objects/empty.js +0 -10
- package/src/lib/objects/equal.js +0 -9
- package/src/lib/objects/extend.js +0 -16
- package/src/lib/objects/extend.test.js +0 -35
- package/src/lib/objects/flatten.js +0 -19
- package/src/lib/objects/index.js +0 -13
- package/src/lib/objects/json.js +0 -7
- package/src/lib/objects/loop.js +0 -11
- package/src/lib/objects/loop.test.js +0 -31
- package/src/lib/objects/mix/mix.js +0 -191
- package/src/lib/objects/mix/mix.md +0 -78
- package/src/lib/objects/mix/mix.test.js +0 -445
- package/src/lib/objects/nested-property.js +0 -41
- package/src/lib/objects/normalize-object.js +0 -10
- package/src/lib/objects/omit-empty.js +0 -23
- package/src/lib/objects/omit-empty.test.js +0 -85
- package/src/lib/objects/size.js +0 -41
- package/src/lib/objects/split.js +0 -19
- package/src/lib/promises/index.js +0 -1
- package/src/lib/promises/reject.js +0 -17
- package/src/lib/sse.js +0 -61
- package/src/lib/strings/convert-case/convert-case.js +0 -86
- package/src/lib/strings/convert-case/convert-case.md +0 -44
- package/src/lib/strings/convert-case/convert-case.test.js +0 -50
- package/src/lib/strings/index.js +0 -5
- package/src/lib/strings/markdown.js +0 -71
- package/src/lib/strings/name.js +0 -24
- package/src/lib/strings/name.test.js +0 -67
- package/src/lib/strings/pluralize.js +0 -2
- package/src/lib/strings/query-string.js +0 -18
- package/src/lib/style/index.js +0 -13
- package/src/lib/symbols/index.js +0 -1
- package/src/lib/symbols/symbols.js +0 -9
- package/src/node/dirname.js +0 -17
- package/src/node/file-cache.js +0 -184
- package/src/node/file.js +0 -13
- package/src/node/hash.js +0 -5
- package/src/node/index.js +0 -7
- package/src/node/pkce.js +0 -33
- package/src/node/random-string.js +0 -10
- package/src/node/random-string.test.js +0 -15
- package/src/node/sanitize.js +0 -13
- package/src/node/sanitize.spec.js +0 -142
- package/src/node/uuid.js +0 -5
- package/tsconfig.json +0 -23
- package/tsup.config.js +0 -38
- package/tsup.config.mjs +0 -45
|
@@ -15,6 +15,8 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
15
|
return to;
|
|
16
16
|
};
|
|
17
17
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// src/dom/keyboard.js
|
|
18
20
|
var keyboard_exports = {};
|
|
19
21
|
__export(keyboard_exports, {
|
|
20
22
|
isArrowKey: () => isArrowKey,
|
|
@@ -15,12 +15,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
15
|
return to;
|
|
16
16
|
};
|
|
17
17
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// src/dom/local-store.js
|
|
18
20
|
var local_store_exports = {};
|
|
19
21
|
__export(local_store_exports, {
|
|
20
22
|
localStore: () => localStore
|
|
21
23
|
});
|
|
22
24
|
module.exports = __toCommonJS(local_store_exports);
|
|
23
|
-
|
|
25
|
+
var localStore = {
|
|
24
26
|
/**
|
|
25
27
|
* Retrieves a value from localStorage
|
|
26
28
|
* @param {string} key - The key to retrieve from localStorage
|
package/dist/cjs/dom/media.cjs
CHANGED
|
@@ -15,6 +15,8 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
15
|
return to;
|
|
16
16
|
};
|
|
17
17
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// src/dom/media.js
|
|
18
20
|
var media_exports = {};
|
|
19
21
|
__export(media_exports, {
|
|
20
22
|
imagesLoaded: () => imagesLoaded,
|
|
@@ -2,6 +2,10 @@ var __defProp = Object.defineProperty;
|
|
|
2
2
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
3
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
4
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
5
9
|
var __copyProps = (to, from, except, desc) => {
|
|
6
10
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
7
11
|
for (let key of __getOwnPropNames(from))
|
|
@@ -10,18 +14,240 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
10
14
|
}
|
|
11
15
|
return to;
|
|
12
16
|
};
|
|
13
|
-
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
14
17
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// src/dom/observers/index.js
|
|
15
20
|
var observers_exports = {};
|
|
21
|
+
__export(observers_exports, {
|
|
22
|
+
intersectionObserver: () => intersectionObserver,
|
|
23
|
+
mutationObserver: () => mutationObserver,
|
|
24
|
+
resizeObserver: () => resizeObserver,
|
|
25
|
+
scrollObserver: () => scrollObserver
|
|
26
|
+
});
|
|
16
27
|
module.exports = __toCommonJS(observers_exports);
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
28
|
+
|
|
29
|
+
// src/dom/events.js
|
|
30
|
+
function dispatchEvent(node, eventName, detail, options = {}) {
|
|
31
|
+
node.dispatchEvent(
|
|
32
|
+
new CustomEvent(eventName, {
|
|
33
|
+
...options,
|
|
34
|
+
detail
|
|
35
|
+
})
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// src/dom/get-element.js
|
|
40
|
+
function getNodeType(node) {
|
|
41
|
+
if (node instanceof Element) return "element";
|
|
42
|
+
if (node instanceof NodeList) return "nodelist";
|
|
43
|
+
if (Array.isArray(node)) return "array";
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// src/dom/observers/observer.js
|
|
47
|
+
function useObserverMethodOnTarget(target, observer, method = "observe", options = void 0) {
|
|
48
|
+
const targetType = getNodeType(target);
|
|
49
|
+
if (targetType === "element") observer[method](target, options);
|
|
50
|
+
if (targetType === "nodelist") {
|
|
51
|
+
const elements = Array.from(target);
|
|
52
|
+
elements.forEach((element) => observer[method](element, options));
|
|
53
|
+
}
|
|
54
|
+
if (targetType === "array") {
|
|
55
|
+
target.forEach((element) => observer[method](element, options));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// src/dom/observers/intersection-observer.js
|
|
60
|
+
function intersectionObserver(target, options = {}) {
|
|
61
|
+
const { callback, ...opts } = options;
|
|
62
|
+
const observer = new IntersectionObserver(observerFn, opts);
|
|
63
|
+
useObserverMethodOnTarget(target, observer, "observe");
|
|
64
|
+
function observerFn(entries) {
|
|
65
|
+
for (const entry of entries) {
|
|
66
|
+
if (callback) callback({ entry, entries, observer });
|
|
67
|
+
else dispatchEvent(target, "intersect", { entry, entries, observer });
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
observer,
|
|
72
|
+
observe(target2) {
|
|
73
|
+
useObserverMethodOnTarget(target2, observer, "observe", options);
|
|
74
|
+
},
|
|
75
|
+
unobserve(target2) {
|
|
76
|
+
useObserverMethodOnTarget(target2, observer, "unobserve");
|
|
77
|
+
},
|
|
78
|
+
takeRecords() {
|
|
79
|
+
return observer.takeRecords();
|
|
80
|
+
},
|
|
81
|
+
disconnect() {
|
|
82
|
+
const records = observer.takeRecords();
|
|
83
|
+
observer.disconnect();
|
|
84
|
+
if (records.length > 0) observerFn(records);
|
|
85
|
+
},
|
|
86
|
+
destroy() {
|
|
87
|
+
observer.disconnect();
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// src/dom/observers/mutation-observer.js
|
|
93
|
+
var defaultOptions = {
|
|
94
|
+
attributes: false,
|
|
95
|
+
childList: false,
|
|
96
|
+
subtree: false
|
|
97
|
+
};
|
|
98
|
+
function mutationObserver(target, options) {
|
|
99
|
+
options = { ...defaultOptions, ...options };
|
|
100
|
+
const { callback, ...opts } = options;
|
|
101
|
+
const observer = new MutationObserver(observerFn);
|
|
102
|
+
if (target === window) target = document.body;
|
|
103
|
+
useObserverMethodOnTarget(target, observer, "observe", opts);
|
|
104
|
+
function observerFn(entries) {
|
|
105
|
+
for (const entry of entries) {
|
|
106
|
+
if (callback) callback({ entry, entries, observer });
|
|
107
|
+
else dispatchEvent(target, "mutate", { entry, entries, observer });
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
observer,
|
|
112
|
+
observe(target2) {
|
|
113
|
+
useObserverMethodOnTarget(target2, observer, "observe", options);
|
|
114
|
+
},
|
|
115
|
+
takeRecords() {
|
|
116
|
+
return observer.takeRecords();
|
|
117
|
+
},
|
|
118
|
+
disconnect() {
|
|
119
|
+
const records = observer.takeRecords();
|
|
120
|
+
observer.disconnect();
|
|
121
|
+
if (records.length > 0) observerFn(records);
|
|
122
|
+
},
|
|
123
|
+
destroy() {
|
|
124
|
+
observer.disconnect();
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// src/dom/observers/resize-observer.js
|
|
130
|
+
function resizeObserver(target, options) {
|
|
131
|
+
const { callback, ...opts } = options;
|
|
132
|
+
const observer = new ResizeObserver(observerFn);
|
|
133
|
+
if (target === window || target === document)
|
|
134
|
+
target = document.documentElement;
|
|
135
|
+
useObserverMethodOnTarget(target, observer, "observe", opts);
|
|
136
|
+
function observerFn(entries) {
|
|
137
|
+
for (const entry of entries) {
|
|
138
|
+
if (callback) callback({ entry, entries, observer });
|
|
139
|
+
else
|
|
140
|
+
dispatchEvent(entry.target, "resize-obs", { entry, entries, observer });
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
observe(target2) {
|
|
145
|
+
useObserverMethodOnTarget(target2, observer, "observe", options);
|
|
146
|
+
},
|
|
147
|
+
unobserve(target2) {
|
|
148
|
+
useObserverMethodOnTarget(target2, observer, "unobserve");
|
|
149
|
+
},
|
|
150
|
+
disconnect: (_) => observer.disconnect(),
|
|
151
|
+
destroy: (_) => observer.disconnect()
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// src/dom/observers/scroll-observer.js
|
|
156
|
+
var defaultOptions2 = {
|
|
157
|
+
threshold: 0,
|
|
158
|
+
// Float between 0 to 1.
|
|
159
|
+
tolerance: 0.1,
|
|
160
|
+
// Float between 0 to 1. Tolerance for event firing
|
|
161
|
+
once: false
|
|
162
|
+
// Only fire threshold callback once
|
|
163
|
+
};
|
|
164
|
+
function getScrollElement(node) {
|
|
165
|
+
if (node === document || node === window || node === document.documentElement) {
|
|
166
|
+
return document.documentElement;
|
|
167
|
+
}
|
|
168
|
+
return (
|
|
169
|
+
/** @type {Element} */
|
|
170
|
+
node
|
|
171
|
+
);
|
|
172
|
+
}
|
|
173
|
+
function scrollObserver(node, options = {}) {
|
|
174
|
+
const { callback, onScrollDown, onScrollUp, onEnterThreshold, ...userOpts } = options;
|
|
175
|
+
const opts = { ...defaultOptions2, ...userOpts };
|
|
176
|
+
const { threshold, tolerance, once } = opts;
|
|
177
|
+
let prevScrollDirection = null;
|
|
178
|
+
let prevScrollTop = 0;
|
|
179
|
+
let prevScrollPercent = 0;
|
|
180
|
+
let thresholdFired = false;
|
|
181
|
+
let rafId = null;
|
|
182
|
+
const isDocumentScroll = node === document || node === window || node === document.documentElement;
|
|
183
|
+
const scrollElement = getScrollElement(node);
|
|
184
|
+
const eventTarget = isDocumentScroll ? window : node;
|
|
185
|
+
let cachedScrollHeight = 0;
|
|
186
|
+
let cachedClientHeight = 0;
|
|
187
|
+
updateCache();
|
|
188
|
+
const cacheObserver = resizeObserver(scrollElement, {
|
|
189
|
+
callback: updateCache
|
|
190
|
+
});
|
|
191
|
+
eventTarget.addEventListener("scroll", throttledObserve, { passive: true });
|
|
192
|
+
function throttledObserve() {
|
|
193
|
+
rafId = requestAnimationFrame(observe);
|
|
194
|
+
}
|
|
195
|
+
function updateCache() {
|
|
196
|
+
cachedScrollHeight = scrollElement.scrollHeight;
|
|
197
|
+
cachedClientHeight = scrollElement.clientHeight;
|
|
198
|
+
}
|
|
199
|
+
function observe() {
|
|
200
|
+
const scrollTop = scrollElement.scrollTop;
|
|
201
|
+
if (Math.abs(scrollTop - prevScrollTop) < 1) return;
|
|
202
|
+
const scrollDirection = scrollTop > prevScrollTop ? "down" : "up";
|
|
203
|
+
const maxScroll = Math.max(1, cachedScrollHeight - cachedClientHeight);
|
|
204
|
+
const scrollPercent = Math.min(1, Math.max(0, scrollTop / maxScroll));
|
|
205
|
+
const thresholdMin = threshold - tolerance / 2;
|
|
206
|
+
const thresholdMax = threshold + tolerance / 2;
|
|
207
|
+
const wasInThreshold = prevScrollPercent >= thresholdMin && prevScrollPercent <= thresholdMax;
|
|
208
|
+
const isInThreshold = scrollPercent >= thresholdMin && scrollPercent <= thresholdMax;
|
|
209
|
+
const hasEnteredThreshold = !wasInThreshold && isInThreshold && (!once || !thresholdFired);
|
|
210
|
+
if (hasEnteredThreshold && once) {
|
|
211
|
+
thresholdFired = true;
|
|
212
|
+
}
|
|
213
|
+
const callbackData = {
|
|
214
|
+
scrollTop,
|
|
215
|
+
scrollDirection,
|
|
216
|
+
scrollPercent,
|
|
217
|
+
directionChanged: scrollDirection !== prevScrollDirection,
|
|
218
|
+
hasEnteredThreshold,
|
|
219
|
+
isInThreshold
|
|
220
|
+
};
|
|
221
|
+
if (typeof callback === "function") {
|
|
222
|
+
callback(callbackData);
|
|
223
|
+
}
|
|
224
|
+
if (scrollDirection !== prevScrollDirection) {
|
|
225
|
+
if (scrollDirection === "down" && typeof onScrollDown === "function") {
|
|
226
|
+
onScrollDown(callbackData);
|
|
227
|
+
}
|
|
228
|
+
if (scrollDirection === "up" && typeof onScrollUp === "function") {
|
|
229
|
+
onScrollUp(callbackData);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
if (hasEnteredThreshold && typeof onEnterThreshold === "function") {
|
|
233
|
+
onEnterThreshold(callbackData);
|
|
234
|
+
}
|
|
235
|
+
prevScrollTop = scrollTop;
|
|
236
|
+
prevScrollPercent = scrollPercent;
|
|
237
|
+
prevScrollDirection = scrollDirection;
|
|
238
|
+
}
|
|
239
|
+
return {
|
|
240
|
+
destroy() {
|
|
241
|
+
eventTarget.removeEventListener("scroll", throttledObserve);
|
|
242
|
+
if (rafId) cancelAnimationFrame(rafId);
|
|
243
|
+
cacheObserver.destroy();
|
|
244
|
+
}
|
|
245
|
+
};
|
|
246
|
+
}
|
|
21
247
|
// Annotate the CommonJS export names for ESM import in node:
|
|
22
248
|
0 && (module.exports = {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
249
|
+
intersectionObserver,
|
|
250
|
+
mutationObserver,
|
|
251
|
+
resizeObserver,
|
|
252
|
+
scrollObserver
|
|
27
253
|
});
|
|
@@ -15,30 +15,62 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
15
|
return to;
|
|
16
16
|
};
|
|
17
17
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// src/dom/observers/intersection-observer.js
|
|
18
20
|
var intersection_observer_exports = {};
|
|
19
21
|
__export(intersection_observer_exports, {
|
|
20
22
|
intersectionObserver: () => intersectionObserver
|
|
21
23
|
});
|
|
22
24
|
module.exports = __toCommonJS(intersection_observer_exports);
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
|
|
26
|
+
// src/dom/events.js
|
|
27
|
+
function dispatchEvent(node, eventName, detail, options = {}) {
|
|
28
|
+
node.dispatchEvent(
|
|
29
|
+
new CustomEvent(eventName, {
|
|
30
|
+
...options,
|
|
31
|
+
detail
|
|
32
|
+
})
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// src/dom/get-element.js
|
|
37
|
+
function getNodeType(node) {
|
|
38
|
+
if (node instanceof Element) return "element";
|
|
39
|
+
if (node instanceof NodeList) return "nodelist";
|
|
40
|
+
if (Array.isArray(node)) return "array";
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// src/dom/observers/observer.js
|
|
44
|
+
function useObserverMethodOnTarget(target, observer, method = "observe", options = void 0) {
|
|
45
|
+
const targetType = getNodeType(target);
|
|
46
|
+
if (targetType === "element") observer[method](target, options);
|
|
47
|
+
if (targetType === "nodelist") {
|
|
48
|
+
const elements = Array.from(target);
|
|
49
|
+
elements.forEach((element) => observer[method](element, options));
|
|
50
|
+
}
|
|
51
|
+
if (targetType === "array") {
|
|
52
|
+
target.forEach((element) => observer[method](element, options));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// src/dom/observers/intersection-observer.js
|
|
25
57
|
function intersectionObserver(target, options = {}) {
|
|
26
58
|
const { callback, ...opts } = options;
|
|
27
59
|
const observer = new IntersectionObserver(observerFn, opts);
|
|
28
|
-
|
|
60
|
+
useObserverMethodOnTarget(target, observer, "observe");
|
|
29
61
|
function observerFn(entries) {
|
|
30
62
|
for (const entry of entries) {
|
|
31
63
|
if (callback) callback({ entry, entries, observer });
|
|
32
|
-
else
|
|
64
|
+
else dispatchEvent(target, "intersect", { entry, entries, observer });
|
|
33
65
|
}
|
|
34
66
|
}
|
|
35
67
|
return {
|
|
36
68
|
observer,
|
|
37
69
|
observe(target2) {
|
|
38
|
-
|
|
70
|
+
useObserverMethodOnTarget(target2, observer, "observe", options);
|
|
39
71
|
},
|
|
40
72
|
unobserve(target2) {
|
|
41
|
-
|
|
73
|
+
useObserverMethodOnTarget(target2, observer, "unobserve");
|
|
42
74
|
},
|
|
43
75
|
takeRecords() {
|
|
44
76
|
return observer.takeRecords();
|
|
@@ -15,14 +15,46 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
15
|
return to;
|
|
16
16
|
};
|
|
17
17
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// src/dom/observers/mutation-observer.js
|
|
18
20
|
var mutation_observer_exports = {};
|
|
19
21
|
__export(mutation_observer_exports, {
|
|
20
22
|
mutationObserver: () => mutationObserver
|
|
21
23
|
});
|
|
22
24
|
module.exports = __toCommonJS(mutation_observer_exports);
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
|
|
26
|
+
// src/dom/events.js
|
|
27
|
+
function dispatchEvent(node, eventName, detail, options = {}) {
|
|
28
|
+
node.dispatchEvent(
|
|
29
|
+
new CustomEvent(eventName, {
|
|
30
|
+
...options,
|
|
31
|
+
detail
|
|
32
|
+
})
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// src/dom/get-element.js
|
|
37
|
+
function getNodeType(node) {
|
|
38
|
+
if (node instanceof Element) return "element";
|
|
39
|
+
if (node instanceof NodeList) return "nodelist";
|
|
40
|
+
if (Array.isArray(node)) return "array";
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// src/dom/observers/observer.js
|
|
44
|
+
function useObserverMethodOnTarget(target, observer, method = "observe", options = void 0) {
|
|
45
|
+
const targetType = getNodeType(target);
|
|
46
|
+
if (targetType === "element") observer[method](target, options);
|
|
47
|
+
if (targetType === "nodelist") {
|
|
48
|
+
const elements = Array.from(target);
|
|
49
|
+
elements.forEach((element) => observer[method](element, options));
|
|
50
|
+
}
|
|
51
|
+
if (targetType === "array") {
|
|
52
|
+
target.forEach((element) => observer[method](element, options));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// src/dom/observers/mutation-observer.js
|
|
57
|
+
var defaultOptions = {
|
|
26
58
|
attributes: false,
|
|
27
59
|
childList: false,
|
|
28
60
|
subtree: false
|
|
@@ -32,17 +64,17 @@ function mutationObserver(target, options) {
|
|
|
32
64
|
const { callback, ...opts } = options;
|
|
33
65
|
const observer = new MutationObserver(observerFn);
|
|
34
66
|
if (target === window) target = document.body;
|
|
35
|
-
|
|
67
|
+
useObserverMethodOnTarget(target, observer, "observe", opts);
|
|
36
68
|
function observerFn(entries) {
|
|
37
69
|
for (const entry of entries) {
|
|
38
70
|
if (callback) callback({ entry, entries, observer });
|
|
39
|
-
else
|
|
71
|
+
else dispatchEvent(target, "mutate", { entry, entries, observer });
|
|
40
72
|
}
|
|
41
73
|
}
|
|
42
74
|
return {
|
|
43
75
|
observer,
|
|
44
76
|
observe(target2) {
|
|
45
|
-
|
|
77
|
+
useObserverMethodOnTarget(target2, observer, "observe", options);
|
|
46
78
|
},
|
|
47
79
|
takeRecords() {
|
|
48
80
|
return observer.takeRecords();
|
|
@@ -15,14 +15,24 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
15
|
return to;
|
|
16
16
|
};
|
|
17
17
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// src/dom/observers/observer.js
|
|
18
20
|
var observer_exports = {};
|
|
19
21
|
__export(observer_exports, {
|
|
20
22
|
useObserverMethodOnTarget: () => useObserverMethodOnTarget
|
|
21
23
|
});
|
|
22
24
|
module.exports = __toCommonJS(observer_exports);
|
|
23
|
-
|
|
25
|
+
|
|
26
|
+
// src/dom/get-element.js
|
|
27
|
+
function getNodeType(node) {
|
|
28
|
+
if (node instanceof Element) return "element";
|
|
29
|
+
if (node instanceof NodeList) return "nodelist";
|
|
30
|
+
if (Array.isArray(node)) return "array";
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// src/dom/observers/observer.js
|
|
24
34
|
function useObserverMethodOnTarget(target, observer, method = "observe", options = void 0) {
|
|
25
|
-
const targetType =
|
|
35
|
+
const targetType = getNodeType(target);
|
|
26
36
|
if (targetType === "element") observer[method](target, options);
|
|
27
37
|
if (targetType === "nodelist") {
|
|
28
38
|
const elements = Array.from(target);
|
|
@@ -15,32 +15,64 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
15
|
return to;
|
|
16
16
|
};
|
|
17
17
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// src/dom/observers/resize-observer.js
|
|
18
20
|
var resize_observer_exports = {};
|
|
19
21
|
__export(resize_observer_exports, {
|
|
20
22
|
resizeObserver: () => resizeObserver
|
|
21
23
|
});
|
|
22
24
|
module.exports = __toCommonJS(resize_observer_exports);
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
|
|
26
|
+
// src/dom/events.js
|
|
27
|
+
function dispatchEvent(node, eventName, detail, options = {}) {
|
|
28
|
+
node.dispatchEvent(
|
|
29
|
+
new CustomEvent(eventName, {
|
|
30
|
+
...options,
|
|
31
|
+
detail
|
|
32
|
+
})
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// src/dom/get-element.js
|
|
37
|
+
function getNodeType(node) {
|
|
38
|
+
if (node instanceof Element) return "element";
|
|
39
|
+
if (node instanceof NodeList) return "nodelist";
|
|
40
|
+
if (Array.isArray(node)) return "array";
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// src/dom/observers/observer.js
|
|
44
|
+
function useObserverMethodOnTarget(target, observer, method = "observe", options = void 0) {
|
|
45
|
+
const targetType = getNodeType(target);
|
|
46
|
+
if (targetType === "element") observer[method](target, options);
|
|
47
|
+
if (targetType === "nodelist") {
|
|
48
|
+
const elements = Array.from(target);
|
|
49
|
+
elements.forEach((element) => observer[method](element, options));
|
|
50
|
+
}
|
|
51
|
+
if (targetType === "array") {
|
|
52
|
+
target.forEach((element) => observer[method](element, options));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// src/dom/observers/resize-observer.js
|
|
25
57
|
function resizeObserver(target, options) {
|
|
26
58
|
const { callback, ...opts } = options;
|
|
27
59
|
const observer = new ResizeObserver(observerFn);
|
|
28
60
|
if (target === window || target === document)
|
|
29
61
|
target = document.documentElement;
|
|
30
|
-
|
|
62
|
+
useObserverMethodOnTarget(target, observer, "observe", opts);
|
|
31
63
|
function observerFn(entries) {
|
|
32
64
|
for (const entry of entries) {
|
|
33
65
|
if (callback) callback({ entry, entries, observer });
|
|
34
66
|
else
|
|
35
|
-
|
|
67
|
+
dispatchEvent(entry.target, "resize-obs", { entry, entries, observer });
|
|
36
68
|
}
|
|
37
69
|
}
|
|
38
70
|
return {
|
|
39
71
|
observe(target2) {
|
|
40
|
-
|
|
72
|
+
useObserverMethodOnTarget(target2, observer, "observe", options);
|
|
41
73
|
},
|
|
42
74
|
unobserve(target2) {
|
|
43
|
-
|
|
75
|
+
useObserverMethodOnTarget(target2, observer, "unobserve");
|
|
44
76
|
},
|
|
45
77
|
disconnect: (_) => observer.disconnect(),
|
|
46
78
|
destroy: (_) => observer.disconnect()
|
|
@@ -15,13 +15,72 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
15
|
return to;
|
|
16
16
|
};
|
|
17
17
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// src/dom/observers/scroll-observer.js
|
|
18
20
|
var scroll_observer_exports = {};
|
|
19
21
|
__export(scroll_observer_exports, {
|
|
20
22
|
scrollObserver: () => scrollObserver
|
|
21
23
|
});
|
|
22
24
|
module.exports = __toCommonJS(scroll_observer_exports);
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
|
|
26
|
+
// src/dom/events.js
|
|
27
|
+
function dispatchEvent(node, eventName, detail, options = {}) {
|
|
28
|
+
node.dispatchEvent(
|
|
29
|
+
new CustomEvent(eventName, {
|
|
30
|
+
...options,
|
|
31
|
+
detail
|
|
32
|
+
})
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// src/dom/get-element.js
|
|
37
|
+
function getNodeType(node) {
|
|
38
|
+
if (node instanceof Element) return "element";
|
|
39
|
+
if (node instanceof NodeList) return "nodelist";
|
|
40
|
+
if (Array.isArray(node)) return "array";
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// src/dom/observers/observer.js
|
|
44
|
+
function useObserverMethodOnTarget(target, observer, method = "observe", options = void 0) {
|
|
45
|
+
const targetType = getNodeType(target);
|
|
46
|
+
if (targetType === "element") observer[method](target, options);
|
|
47
|
+
if (targetType === "nodelist") {
|
|
48
|
+
const elements = Array.from(target);
|
|
49
|
+
elements.forEach((element) => observer[method](element, options));
|
|
50
|
+
}
|
|
51
|
+
if (targetType === "array") {
|
|
52
|
+
target.forEach((element) => observer[method](element, options));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// src/dom/observers/resize-observer.js
|
|
57
|
+
function resizeObserver(target, options) {
|
|
58
|
+
const { callback, ...opts } = options;
|
|
59
|
+
const observer = new ResizeObserver(observerFn);
|
|
60
|
+
if (target === window || target === document)
|
|
61
|
+
target = document.documentElement;
|
|
62
|
+
useObserverMethodOnTarget(target, observer, "observe", opts);
|
|
63
|
+
function observerFn(entries) {
|
|
64
|
+
for (const entry of entries) {
|
|
65
|
+
if (callback) callback({ entry, entries, observer });
|
|
66
|
+
else
|
|
67
|
+
dispatchEvent(entry.target, "resize-obs", { entry, entries, observer });
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
observe(target2) {
|
|
72
|
+
useObserverMethodOnTarget(target2, observer, "observe", options);
|
|
73
|
+
},
|
|
74
|
+
unobserve(target2) {
|
|
75
|
+
useObserverMethodOnTarget(target2, observer, "unobserve");
|
|
76
|
+
},
|
|
77
|
+
disconnect: (_) => observer.disconnect(),
|
|
78
|
+
destroy: (_) => observer.disconnect()
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// src/dom/observers/scroll-observer.js
|
|
83
|
+
var defaultOptions = {
|
|
25
84
|
threshold: 0,
|
|
26
85
|
// Float between 0 to 1.
|
|
27
86
|
tolerance: 0.1,
|
|
@@ -53,7 +112,7 @@ function scrollObserver(node, options = {}) {
|
|
|
53
112
|
let cachedScrollHeight = 0;
|
|
54
113
|
let cachedClientHeight = 0;
|
|
55
114
|
updateCache();
|
|
56
|
-
const cacheObserver =
|
|
115
|
+
const cacheObserver = resizeObserver(scrollElement, {
|
|
57
116
|
callback: updateCache
|
|
58
117
|
});
|
|
59
118
|
eventTarget.addEventListener("scroll", throttledObserve, { passive: true });
|
package/dist/cjs/dom/pkce.cjs
CHANGED
|
@@ -15,17 +15,27 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
15
|
return to;
|
|
16
16
|
};
|
|
17
17
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// src/dom/pkce.js
|
|
18
20
|
var pkce_exports = {};
|
|
19
21
|
__export(pkce_exports, {
|
|
20
22
|
PKCE: () => PKCE
|
|
21
23
|
});
|
|
22
24
|
module.exports = __toCommonJS(pkce_exports);
|
|
23
|
-
|
|
25
|
+
|
|
26
|
+
// src/dom/random-string.js
|
|
27
|
+
function randomString(length = 10) {
|
|
28
|
+
const firstLetter = String.fromCharCode(65 + Math.floor(Math.random() * 26));
|
|
29
|
+
const others = Math.random().toString(36).substring(2, 2 + length - 1);
|
|
30
|
+
return firstLetter + others;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// src/dom/pkce.js
|
|
24
34
|
async function PKCE() {
|
|
25
|
-
const codeVerifier = await
|
|
35
|
+
const codeVerifier = await randomString();
|
|
26
36
|
const codeChallenge = await getCodeChallenge(codeVerifier);
|
|
27
37
|
return {
|
|
28
|
-
state: await
|
|
38
|
+
state: await randomString(),
|
|
29
39
|
code_verifier: codeVerifier,
|
|
30
40
|
code_challenge: codeChallenge,
|
|
31
41
|
code_challenge_method: "S256"
|
|
@@ -15,12 +15,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
15
|
return to;
|
|
16
16
|
};
|
|
17
17
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// src/dom/query-params.js
|
|
18
20
|
var query_params_exports = {};
|
|
19
21
|
__export(query_params_exports, {
|
|
20
22
|
queryParams: () => queryParams
|
|
21
23
|
});
|
|
22
24
|
module.exports = __toCommonJS(query_params_exports);
|
|
23
|
-
|
|
25
|
+
var queryParams = {
|
|
24
26
|
get(key) {
|
|
25
27
|
const searchParams = new URLSearchParams(location.search);
|
|
26
28
|
return searchParams.get(key);
|
|
@@ -15,6 +15,8 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
15
|
return to;
|
|
16
16
|
};
|
|
17
17
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// src/dom/random-string.js
|
|
18
20
|
var random_string_exports = {};
|
|
19
21
|
__export(random_string_exports, {
|
|
20
22
|
randomString: () => randomString,
|