@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.
Files changed (66) hide show
  1. package/Base/index.cjs +55 -18
  2. package/Base/index.d.ts +23 -1
  3. package/Base/index.js +55 -18
  4. package/Base/managers/AbstractManager.cjs +56 -0
  5. package/Base/managers/AbstractManager.d.ts +44 -0
  6. package/Base/managers/AbstractManager.js +35 -0
  7. package/Base/managers/ChildrenManager.cjs +79 -100
  8. package/Base/managers/ChildrenManager.d.ts +7 -82
  9. package/Base/managers/ChildrenManager.js +76 -100
  10. package/Base/managers/EventsManager.cjs +75 -99
  11. package/Base/managers/EventsManager.d.ts +31 -100
  12. package/Base/managers/EventsManager.js +75 -99
  13. package/Base/managers/OptionsManager.cjs +65 -78
  14. package/Base/managers/OptionsManager.d.ts +37 -79
  15. package/Base/managers/OptionsManager.js +66 -79
  16. package/Base/managers/RefsManager.cjs +44 -68
  17. package/Base/managers/RefsManager.d.ts +10 -64
  18. package/Base/managers/RefsManager.js +41 -69
  19. package/Base/managers/ResponsiveOptionsManager.cjs +62 -0
  20. package/Base/managers/ResponsiveOptionsManager.d.ts +26 -0
  21. package/Base/managers/ResponsiveOptionsManager.js +37 -0
  22. package/Base/managers/ServicesManager.cjs +5 -11
  23. package/Base/managers/ServicesManager.d.ts +2 -11
  24. package/Base/managers/ServicesManager.js +5 -11
  25. package/decorators/index.cjs +2 -0
  26. package/decorators/index.d.ts +1 -0
  27. package/decorators/index.js +6 -4
  28. package/decorators/withResponsiveOptions.cjs +39 -0
  29. package/decorators/withResponsiveOptions.d.ts +8 -0
  30. package/decorators/withResponsiveOptions.js +14 -0
  31. package/decorators/withScrolledInView.cjs +66 -23
  32. package/decorators/withScrolledInView.d.ts +4 -2
  33. package/decorators/withScrolledInView.js +67 -24
  34. package/package.json +2 -1
  35. package/services/Service.cjs +2 -2
  36. package/services/Service.d.ts +9 -1
  37. package/services/Service.js +2 -2
  38. package/services/raf.cjs +16 -0
  39. package/services/raf.js +16 -0
  40. package/utils/css/animate.cjs +207 -0
  41. package/utils/css/animate.d.ts +57 -0
  42. package/utils/css/animate.js +182 -0
  43. package/utils/css/getOffsetSizes.cjs +47 -0
  44. package/utils/css/getOffsetSizes.d.ts +15 -0
  45. package/utils/css/getOffsetSizes.js +25 -0
  46. package/utils/css/index.cjs +6 -0
  47. package/utils/css/index.d.ts +3 -0
  48. package/utils/css/index.js +9 -4
  49. package/utils/css/transform.cjs +91 -0
  50. package/utils/css/transform.d.ts +43 -0
  51. package/utils/css/transform.js +66 -0
  52. package/utils/index.cjs +5 -0
  53. package/utils/index.d.ts +3 -0
  54. package/utils/index.js +5 -0
  55. package/utils/isDefined.cjs +28 -0
  56. package/utils/isDefined.d.ts +7 -0
  57. package/utils/isDefined.js +6 -0
  58. package/utils/isFunction.cjs +28 -0
  59. package/utils/isFunction.d.ts +7 -0
  60. package/utils/isFunction.js +6 -0
  61. package/utils/math/index.cjs +2 -0
  62. package/utils/math/index.d.ts +1 -0
  63. package/utils/math/index.js +2 -0
  64. package/utils/scheduler.cjs +73 -0
  65. package/utils/scheduler.d.ts +19 -0
  66. 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
+ };