@studiometa/js-toolkit 2.0.1 → 2.2.0-alpha.1
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/Base/index.cjs +55 -18
- package/Base/index.d.ts +23 -1
- package/Base/index.js +55 -18
- package/Base/managers/AbstractManager.cjs +56 -0
- package/Base/managers/AbstractManager.d.ts +44 -0
- package/Base/managers/AbstractManager.js +35 -0
- package/Base/managers/ChildrenManager.cjs +79 -100
- package/Base/managers/ChildrenManager.d.ts +7 -82
- package/Base/managers/ChildrenManager.js +76 -100
- package/Base/managers/EventsManager.cjs +75 -99
- package/Base/managers/EventsManager.d.ts +31 -100
- package/Base/managers/EventsManager.js +75 -99
- package/Base/managers/OptionsManager.cjs +65 -78
- package/Base/managers/OptionsManager.d.ts +37 -79
- package/Base/managers/OptionsManager.js +66 -79
- package/Base/managers/RefsManager.cjs +44 -68
- package/Base/managers/RefsManager.d.ts +10 -64
- package/Base/managers/RefsManager.js +41 -69
- package/Base/managers/ResponsiveOptionsManager.cjs +62 -0
- package/Base/managers/ResponsiveOptionsManager.d.ts +26 -0
- package/Base/managers/ResponsiveOptionsManager.js +37 -0
- package/Base/managers/ServicesManager.cjs +5 -11
- package/Base/managers/ServicesManager.d.ts +2 -11
- package/Base/managers/ServicesManager.js +5 -11
- package/decorators/index.cjs +2 -0
- package/decorators/index.d.ts +1 -0
- package/decorators/index.js +6 -4
- package/decorators/withResponsiveOptions.cjs +39 -0
- package/decorators/withResponsiveOptions.d.ts +8 -0
- package/decorators/withResponsiveOptions.js +14 -0
- package/decorators/withScrolledInView.cjs +66 -23
- package/decorators/withScrolledInView.d.ts +4 -2
- package/decorators/withScrolledInView.js +67 -24
- package/package.json +2 -1
- package/services/Service.cjs +2 -2
- package/services/Service.d.ts +9 -1
- package/services/Service.js +2 -2
- package/services/raf.cjs +16 -0
- package/services/raf.js +16 -0
- package/utils/css/animate.cjs +207 -0
- package/utils/css/animate.d.ts +57 -0
- package/utils/css/animate.js +182 -0
- package/utils/css/getOffsetSizes.cjs +47 -0
- package/utils/css/getOffsetSizes.d.ts +15 -0
- package/utils/css/getOffsetSizes.js +25 -0
- package/utils/css/index.cjs +6 -0
- package/utils/css/index.d.ts +3 -0
- package/utils/css/index.js +9 -4
- package/utils/css/transform.cjs +91 -0
- package/utils/css/transform.d.ts +43 -0
- package/utils/css/transform.js +66 -0
- package/utils/index.cjs +5 -0
- package/utils/index.d.ts +3 -0
- package/utils/index.js +5 -0
- package/utils/isDefined.cjs +28 -0
- package/utils/isDefined.d.ts +7 -0
- package/utils/isDefined.js +6 -0
- package/utils/isFunction.cjs +28 -0
- package/utils/isFunction.d.ts +7 -0
- package/utils/isFunction.js +6 -0
- package/utils/math/index.cjs +2 -0
- package/utils/math/index.d.ts +1 -0
- package/utils/math/index.js +2 -0
- package/utils/scheduler.cjs +73 -0
- package/utils/scheduler.d.ts +19 -0
- package/utils/scheduler.js +51 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
function getScheduler(steps) {
|
|
2
|
+
const stepsFns = {};
|
|
3
|
+
const api = {};
|
|
4
|
+
let isScheduled = false;
|
|
5
|
+
const resolvedPromise = Promise.resolve();
|
|
6
|
+
function run(tasks) {
|
|
7
|
+
let task;
|
|
8
|
+
while (task = tasks.shift()) {
|
|
9
|
+
task();
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function flush() {
|
|
13
|
+
steps.forEach(function runStep(step) {
|
|
14
|
+
run(stepsFns[step]);
|
|
15
|
+
});
|
|
16
|
+
isScheduled = false;
|
|
17
|
+
if (steps.reduce((length, step) => length + stepsFns[step].length, 0) > 0) {
|
|
18
|
+
scheduleFlush();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function scheduleFlush() {
|
|
22
|
+
if (isScheduled) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
isScheduled = true;
|
|
26
|
+
resolvedPromise.then(flush);
|
|
27
|
+
}
|
|
28
|
+
steps.forEach((step) => {
|
|
29
|
+
stepsFns[step] = [];
|
|
30
|
+
api[step] = function add(fn) {
|
|
31
|
+
stepsFns[step].push(fn);
|
|
32
|
+
scheduleFlush();
|
|
33
|
+
};
|
|
34
|
+
});
|
|
35
|
+
return api;
|
|
36
|
+
}
|
|
37
|
+
const instances = /* @__PURE__ */ new Map();
|
|
38
|
+
function useScheduler(steps = ["read", "write"]) {
|
|
39
|
+
const key = steps.join("-");
|
|
40
|
+
if (instances.has(key)) {
|
|
41
|
+
return instances.get(key);
|
|
42
|
+
}
|
|
43
|
+
const scheduler = getScheduler(steps);
|
|
44
|
+
instances.set(key, scheduler);
|
|
45
|
+
return scheduler;
|
|
46
|
+
}
|
|
47
|
+
const domScheduler = useScheduler(["read", "write", "afterWrite"]);
|
|
48
|
+
export {
|
|
49
|
+
domScheduler,
|
|
50
|
+
useScheduler
|
|
51
|
+
};
|