@studiometa/js-toolkit 2.0.0-rc.2 → 2.1.0

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 (151) hide show
  1. package/Base/index.cjs +54 -18
  2. package/Base/index.d.ts +47 -26
  3. package/Base/index.js +54 -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 +8 -83
  9. package/Base/managers/ChildrenManager.js +76 -100
  10. package/Base/managers/EventsManager.cjs +75 -99
  11. package/Base/managers/EventsManager.d.ts +37 -113
  12. package/Base/managers/EventsManager.js +75 -99
  13. package/Base/managers/OptionsManager.cjs +65 -79
  14. package/Base/managers/OptionsManager.d.ts +41 -80
  15. package/Base/managers/OptionsManager.js +66 -80
  16. package/Base/managers/RefsManager.cjs +44 -68
  17. package/Base/managers/RefsManager.d.ts +12 -66
  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 +7 -10
  23. package/Base/managers/ServicesManager.d.ts +16 -19
  24. package/Base/managers/ServicesManager.js +7 -10
  25. package/Base/utils.d.ts +4 -4
  26. package/decorators/index.cjs +2 -0
  27. package/decorators/index.d.ts +1 -0
  28. package/decorators/index.js +6 -4
  29. package/decorators/withBreakpointManager.cjs +0 -1
  30. package/decorators/withBreakpointManager.d.ts +2 -2
  31. package/decorators/withBreakpointManager.js +0 -1
  32. package/decorators/withBreakpointObserver.cjs +1 -2
  33. package/decorators/withBreakpointObserver.d.ts +1 -1
  34. package/decorators/withBreakpointObserver.js +1 -2
  35. package/decorators/withDrag.d.ts +1 -1
  36. package/decorators/withExtraConfig.d.ts +1 -1
  37. package/decorators/withFreezedOptions.cjs +12 -3
  38. package/decorators/withFreezedOptions.d.ts +1 -1
  39. package/decorators/withFreezedOptions.js +13 -3
  40. package/decorators/withIntersectionObserver.cjs +0 -1
  41. package/decorators/withIntersectionObserver.d.ts +1 -1
  42. package/decorators/withIntersectionObserver.js +0 -1
  43. package/decorators/withMountWhenInView.cjs +0 -1
  44. package/decorators/withMountWhenInView.d.ts +1 -1
  45. package/decorators/withMountWhenInView.js +0 -1
  46. package/decorators/withResponsiveOptions.cjs +39 -0
  47. package/decorators/withResponsiveOptions.d.ts +8 -0
  48. package/decorators/withResponsiveOptions.js +14 -0
  49. package/decorators/withScrolledInView.cjs +58 -23
  50. package/decorators/withScrolledInView.d.ts +5 -3
  51. package/decorators/withScrolledInView.js +59 -24
  52. package/helpers/createApp.d.ts +3 -26
  53. package/helpers/getInstanceFromElement.cjs +32 -0
  54. package/helpers/getInstanceFromElement.d.ts +14 -0
  55. package/helpers/getInstanceFromElement.js +10 -0
  56. package/helpers/importOnInteraction.d.ts +3 -5
  57. package/helpers/importWhenIdle.d.ts +3 -5
  58. package/helpers/importWhenVisible.d.ts +4 -6
  59. package/helpers/index.cjs +2 -0
  60. package/helpers/index.d.ts +1 -0
  61. package/helpers/index.js +8 -6
  62. package/helpers/utils.d.ts +3 -4
  63. package/package.json +2 -1
  64. package/services/Service.d.ts +9 -9
  65. package/services/drag.cjs +0 -1
  66. package/services/drag.d.ts +3 -3
  67. package/services/drag.js +0 -1
  68. package/services/key.d.ts +1 -1
  69. package/services/load.d.ts +1 -1
  70. package/services/pointer.d.ts +1 -1
  71. package/services/raf.d.ts +1 -1
  72. package/services/resize.cjs +2 -2
  73. package/services/resize.d.ts +1 -1
  74. package/services/resize.js +2 -2
  75. package/services/scroll.cjs +3 -1
  76. package/services/scroll.d.ts +1 -1
  77. package/services/scroll.js +3 -1
  78. package/utils/collide/boundingRectToCircle.d.ts +5 -5
  79. package/utils/collide/collideCircleCircle.d.ts +4 -4
  80. package/utils/collide/collideCircleRect.d.ts +8 -8
  81. package/utils/collide/collidePointCircle.d.ts +6 -6
  82. package/utils/collide/collidePointRect.d.ts +7 -7
  83. package/utils/collide/collideRectRect.d.ts +5 -5
  84. package/utils/css/animate.cjs +190 -0
  85. package/utils/css/animate.d.ts +57 -0
  86. package/utils/css/animate.js +165 -0
  87. package/utils/css/classes.cjs +3 -3
  88. package/utils/css/classes.d.ts +10 -10
  89. package/utils/css/classes.js +3 -3
  90. package/utils/css/getOffsetSizes.cjs +47 -0
  91. package/utils/css/getOffsetSizes.d.ts +15 -0
  92. package/utils/css/getOffsetSizes.js +25 -0
  93. package/utils/css/index.cjs +6 -0
  94. package/utils/css/index.d.ts +3 -0
  95. package/utils/css/index.js +9 -4
  96. package/utils/css/matrix.d.ts +14 -15
  97. package/utils/css/styles.d.ts +2 -2
  98. package/utils/css/transform.cjs +91 -0
  99. package/utils/css/transform.d.ts +43 -0
  100. package/utils/css/transform.js +66 -0
  101. package/utils/css/transition.cjs +2 -0
  102. package/utils/css/transition.d.ts +2 -2
  103. package/utils/css/transition.js +2 -0
  104. package/utils/debounce.d.ts +4 -4
  105. package/utils/focusTrap.cjs +1 -1
  106. package/utils/focusTrap.d.ts +1 -0
  107. package/utils/focusTrap.js +1 -1
  108. package/utils/history.d.ts +13 -11
  109. package/utils/index.cjs +4 -0
  110. package/utils/index.d.ts +2 -0
  111. package/utils/index.js +4 -0
  112. package/utils/isDefined.cjs +28 -0
  113. package/utils/isDefined.d.ts +7 -0
  114. package/utils/isDefined.js +6 -0
  115. package/utils/isFunction.cjs +28 -0
  116. package/utils/isFunction.d.ts +7 -0
  117. package/utils/isFunction.js +6 -0
  118. package/utils/math/clamp.d.ts +1 -1
  119. package/utils/math/clamp01.d.ts +1 -1
  120. package/utils/math/damp.d.ts +6 -6
  121. package/utils/math/ease.d.ts +7 -7
  122. package/utils/math/index.cjs +2 -0
  123. package/utils/math/index.d.ts +1 -0
  124. package/utils/math/index.js +2 -0
  125. package/utils/math/inertiaFinalValue.d.ts +5 -5
  126. package/utils/math/lerp.d.ts +4 -4
  127. package/utils/math/map.d.ts +6 -6
  128. package/utils/math/round.d.ts +4 -4
  129. package/utils/memoize.d.ts +1 -1
  130. package/utils/nextFrame.d.ts +3 -4
  131. package/utils/nextMicrotask.d.ts +1 -1
  132. package/utils/nextTick.d.ts +1 -1
  133. package/utils/object/autoBind.d.ts +3 -3
  134. package/utils/object/getAllProperties.d.ts +3 -3
  135. package/utils/object/isObject.d.ts +1 -1
  136. package/utils/scrollTo.cjs +1 -1
  137. package/utils/scrollTo.d.ts +1 -1
  138. package/utils/scrollTo.js +1 -1
  139. package/utils/string/withLeadingCharacters.d.ts +3 -2
  140. package/utils/string/withLeadingSlash.d.ts +1 -1
  141. package/utils/string/withTrailingCharacters.d.ts +3 -2
  142. package/utils/string/withTrailingSlash.d.ts +1 -1
  143. package/utils/string/withoutLeadingCharacters.d.ts +3 -2
  144. package/utils/string/withoutLeadingCharactersRecursive.d.ts +3 -2
  145. package/utils/string/withoutLeadingSlash.d.ts +1 -1
  146. package/utils/string/withoutTrailingCharacters.d.ts +3 -2
  147. package/utils/string/withoutTrailingCharactersRecursive.d.ts +3 -2
  148. package/utils/string/withoutTrailingSlash.d.ts +1 -1
  149. package/utils/throttle.cjs +1 -1
  150. package/utils/throttle.d.ts +3 -3
  151. package/utils/throttle.js +1 -1
@@ -1,8 +1,9 @@
1
+ var __create = Object.create;
1
2
  var __defProp = Object.defineProperty;
2
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
4
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
7
  var __export = (target, all) => {
7
8
  for (var name in all)
8
9
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -15,85 +16,60 @@ var __copyProps = (to, from, except, desc) => {
15
16
  }
16
17
  return to;
17
18
  };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
18
20
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var __publicField = (obj, key, value) => {
20
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
21
- return value;
22
- };
23
21
 
24
22
  // packages/js-toolkit/Base/managers/RefsManager.js
25
23
  var RefsManager_exports = {};
26
24
  __export(RefsManager_exports, {
27
- default: () => RefsManager
25
+ default: () => RefsManager,
26
+ normalizeRefName: () => normalizeRefName
28
27
  });
29
28
  module.exports = __toCommonJS(RefsManager_exports);
30
- var RefsManager = class {
31
- constructor(base, element, refs, eventsManager) {
32
- __publicField(this, "__element");
33
- __publicField(this, "__refs");
34
- __publicField(this, "__base");
35
- __publicField(this, "__eventsManager");
36
- Object.defineProperties(this, {
37
- __element: {
38
- enumerable: false,
39
- writable: false,
40
- value: element
41
- },
42
- __refs: {
43
- enumerable: false,
44
- writable: false,
45
- value: refs
46
- },
47
- __base: {
48
- enumerable: false,
49
- writable: false,
50
- value: base
51
- },
52
- __eventsManager: {
53
- enumerable: false,
54
- writable: false,
55
- value: eventsManager
56
- }
57
- });
58
- }
59
- registerAll() {
60
- this.__refs.forEach((refName) => this.__register(refName));
29
+ var import_AbstractManager = __toESM(require("./AbstractManager.cjs"), 1);
30
+ function normalizeRefName(name) {
31
+ return name.endsWith("[]") ? name.replace(/\[\]$/, "") : name;
32
+ }
33
+ function __filterRefsBelongingToInstance(that, ref) {
34
+ let ancestor = ref.parentElement;
35
+ while (ancestor && ancestor.dataset.component === void 0) {
36
+ ancestor = ancestor.parentElement;
61
37
  }
62
- unregisterAll() {
63
- this.__refs.forEach((refName) => this.__unregister(refName));
38
+ return ancestor === null || ancestor === that.__element;
39
+ }
40
+ function __register(that, refName) {
41
+ const isMultiple = refName.endsWith("[]");
42
+ const propName = normalizeRefName(refName);
43
+ const refs = Array.from(that.__element.querySelectorAll(`[data-ref="${refName}"]`)).filter((ref) => __filterRefsBelongingToInstance(that, ref));
44
+ if (!isMultiple && refs.length > 1) {
45
+ console.warn(`[${that.__base.$options.name}]`, `The "${refName}" ref has been found multiple times.`, "Did you forgot to add the `[]` suffix to its name?");
64
46
  }
65
- __register(refName) {
66
- const isMultiple = refName.endsWith("[]");
67
- const propName = RefsManager.normalizeRefName(refName);
68
- const refs = Array.from(this.__element.querySelectorAll(`[data-ref="${refName}"]`)).filter((ref) => this.__filterRefsBelongingToInstance(ref));
69
- if (!isMultiple && refs.length > 1) {
70
- console.warn(`[${this.__base.$options.name}]`, `The "${refName}" ref has been found multiple times.`, "Did you forgot to add the `[]` suffix to its name?");
71
- }
72
- if (!isMultiple && refs.length <= 1 && refs[0] === void 0) {
73
- console.warn(`[${this.__base.$options.name}]`, `The "${refName}" ref is missing.`, `Is there an \`[data-ref="${refName}"]\` element in the component's scope?`);
74
- return;
75
- }
76
- this.__eventsManager.bindRef(refName, refs);
77
- Object.defineProperty(this, propName, {
78
- value: isMultiple || refs.length > 1 ? refs : refs[0],
79
- enumerable: true,
80
- configurable: true
81
- });
47
+ if (!isMultiple && refs.length <= 1 && refs[0] === void 0) {
48
+ console.warn(`[${that.__base.$options.name}]`, `The "${refName}" ref is missing.`, `Is there an \`[data-ref="${refName}"]\` element in the component's scope?`);
49
+ return;
82
50
  }
83
- __unregister(refName) {
84
- const propName = RefsManager.normalizeRefName(refName);
85
- const refs = Array.isArray(this[propName]) ? this[propName] : [this[propName]];
86
- this.__eventsManager.unbindRef(refName, refs);
51
+ that.__eventsManager.bindRef(refName, refs);
52
+ Object.defineProperty(that, propName, {
53
+ value: isMultiple || refs.length > 1 ? refs : refs[0],
54
+ enumerable: true,
55
+ configurable: true
56
+ });
57
+ }
58
+ function __unregister(that, refName) {
59
+ const propName = normalizeRefName(refName);
60
+ const refs = Array.isArray(that[propName]) ? that[propName] : [that[propName]];
61
+ that.__eventsManager.unbindRef(refName, refs);
62
+ }
63
+ var RefsManager = class extends import_AbstractManager.default {
64
+ get __refs() {
65
+ var _a;
66
+ return (_a = this.__config.refs) != null ? _a : [];
87
67
  }
88
- static normalizeRefName(name) {
89
- return name.endsWith("[]") ? name.replace(/\[\]$/, "") : name;
68
+ registerAll() {
69
+ this.__refs.forEach((refName) => __register(this, refName));
90
70
  }
91
- __filterRefsBelongingToInstance(ref) {
92
- let ancestor = ref.parentElement;
93
- while (ancestor && ancestor.dataset.component === void 0) {
94
- ancestor = ancestor.parentElement;
95
- }
96
- return ancestor === null || ancestor === this.__element;
71
+ unregisterAll() {
72
+ this.__refs.forEach((refName) => __unregister(this, refName));
97
73
  }
98
74
  };
99
75
  if (module.exports.default) module.exports = module.exports.default;
@@ -1,86 +1,32 @@
1
1
  /**
2
- * @typedef {import('../index.js').default} Base
3
- * @typedef {import('./EventsManager.js').default} EventsManager
2
+ * Normalize the name of ref.
3
+ *
4
+ * @param {string} name The original name.
5
+ * @returns {string} The normalized name.
4
6
  */
7
+ export function normalizeRefName(name: string): string;
5
8
  /**
6
9
  * Refs Manager
7
10
  *
8
11
  * @todo Use `MutationObserver` to automatically update refs?
9
12
  */
10
- export default class RefsManager {
11
- /**
12
- * Normalize the name of ref.
13
- *
14
- * @param {string} name The original name.
15
- * @return {string} The normalized name.
16
- */
17
- static normalizeRefName(name: string): string;
18
- /**
19
- * Class constructor.
20
- *
21
- * @param {Base} base
22
- * The base instance tied to this manager.
23
- * @param {HTMLElement} element
24
- * The root element of a Base component.
25
- * @param {string[]} refs
26
- * The list of refs of this component.
27
- * @param {EventsManager} eventsManager
28
- */
29
- constructor(base: Base, element: HTMLElement, refs: string[], eventsManager: EventsManager);
30
- /**
31
- * @type {HTMLElement}
32
- * @private
33
- */
34
- private __element;
35
- /**
36
- * @type {string[]}
37
- * @private
38
- */
39
- private __refs;
13
+ export default class RefsManager extends AbstractManager {
40
14
  /**
41
- * @type {Base}
42
- * @private
15
+ * Get refs configuration.
16
+ * @returns {string[]}
43
17
  */
44
- private __base;
45
- /**
46
- * @type {EventsManager}
47
- * @private
48
- */
49
- private __eventsManager;
18
+ get __refs(): string[];
50
19
  /**
51
20
  * Register all refs.
52
21
  *
53
- * @return {void}
22
+ * @returns {void}
54
23
  */
55
24
  registerAll(): void;
56
25
  /**
57
26
  * Unregister all refs.
58
27
  *
59
- * @return {void}
28
+ * @returns {void}
60
29
  */
61
30
  unregisterAll(): void;
62
- /**
63
- * Register one ref.
64
- *
65
- * @param {string} refName The ref name.
66
- * @private
67
- */
68
- private __register;
69
- /**
70
- * Unregister one ref.
71
- *
72
- * @param {string} refName The ref name.
73
- * @private
74
- */
75
- private __unregister;
76
- /**
77
- * Filter refs belonging to the related Base instance.
78
- *
79
- * @param {HTMLElement} ref The ref to test.
80
- * @return {boolean}
81
- * @private
82
- */
83
- private __filterRefsBelongingToInstance;
84
31
  }
85
- export type Base = import('../index.js').default;
86
- export type EventsManager = import('./EventsManager.js').default;
32
+ import AbstractManager from "./AbstractManager.js";
@@ -1,78 +1,50 @@
1
- var __defProp = Object.defineProperty;
2
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
- var __publicField = (obj, key, value) => {
4
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
- return value;
6
- };
7
- class RefsManager {
8
- constructor(base, element, refs, eventsManager) {
9
- __publicField(this, "__element");
10
- __publicField(this, "__refs");
11
- __publicField(this, "__base");
12
- __publicField(this, "__eventsManager");
13
- Object.defineProperties(this, {
14
- __element: {
15
- enumerable: false,
16
- writable: false,
17
- value: element
18
- },
19
- __refs: {
20
- enumerable: false,
21
- writable: false,
22
- value: refs
23
- },
24
- __base: {
25
- enumerable: false,
26
- writable: false,
27
- value: base
28
- },
29
- __eventsManager: {
30
- enumerable: false,
31
- writable: false,
32
- value: eventsManager
33
- }
34
- });
35
- }
36
- registerAll() {
37
- this.__refs.forEach((refName) => this.__register(refName));
1
+ import AbstractManager from "./AbstractManager.js";
2
+ function normalizeRefName(name) {
3
+ return name.endsWith("[]") ? name.replace(/\[\]$/, "") : name;
4
+ }
5
+ function __filterRefsBelongingToInstance(that, ref) {
6
+ let ancestor = ref.parentElement;
7
+ while (ancestor && ancestor.dataset.component === void 0) {
8
+ ancestor = ancestor.parentElement;
38
9
  }
39
- unregisterAll() {
40
- this.__refs.forEach((refName) => this.__unregister(refName));
10
+ return ancestor === null || ancestor === that.__element;
11
+ }
12
+ function __register(that, refName) {
13
+ const isMultiple = refName.endsWith("[]");
14
+ const propName = normalizeRefName(refName);
15
+ const refs = Array.from(that.__element.querySelectorAll(`[data-ref="${refName}"]`)).filter((ref) => __filterRefsBelongingToInstance(that, ref));
16
+ if (!isMultiple && refs.length > 1) {
17
+ console.warn(`[${that.__base.$options.name}]`, `The "${refName}" ref has been found multiple times.`, "Did you forgot to add the `[]` suffix to its name?");
41
18
  }
42
- __register(refName) {
43
- const isMultiple = refName.endsWith("[]");
44
- const propName = RefsManager.normalizeRefName(refName);
45
- const refs = Array.from(this.__element.querySelectorAll(`[data-ref="${refName}"]`)).filter((ref) => this.__filterRefsBelongingToInstance(ref));
46
- if (!isMultiple && refs.length > 1) {
47
- console.warn(`[${this.__base.$options.name}]`, `The "${refName}" ref has been found multiple times.`, "Did you forgot to add the `[]` suffix to its name?");
48
- }
49
- if (!isMultiple && refs.length <= 1 && refs[0] === void 0) {
50
- console.warn(`[${this.__base.$options.name}]`, `The "${refName}" ref is missing.`, `Is there an \`[data-ref="${refName}"]\` element in the component's scope?`);
51
- return;
52
- }
53
- this.__eventsManager.bindRef(refName, refs);
54
- Object.defineProperty(this, propName, {
55
- value: isMultiple || refs.length > 1 ? refs : refs[0],
56
- enumerable: true,
57
- configurable: true
58
- });
19
+ if (!isMultiple && refs.length <= 1 && refs[0] === void 0) {
20
+ console.warn(`[${that.__base.$options.name}]`, `The "${refName}" ref is missing.`, `Is there an \`[data-ref="${refName}"]\` element in the component's scope?`);
21
+ return;
59
22
  }
60
- __unregister(refName) {
61
- const propName = RefsManager.normalizeRefName(refName);
62
- const refs = Array.isArray(this[propName]) ? this[propName] : [this[propName]];
63
- this.__eventsManager.unbindRef(refName, refs);
23
+ that.__eventsManager.bindRef(refName, refs);
24
+ Object.defineProperty(that, propName, {
25
+ value: isMultiple || refs.length > 1 ? refs : refs[0],
26
+ enumerable: true,
27
+ configurable: true
28
+ });
29
+ }
30
+ function __unregister(that, refName) {
31
+ const propName = normalizeRefName(refName);
32
+ const refs = Array.isArray(that[propName]) ? that[propName] : [that[propName]];
33
+ that.__eventsManager.unbindRef(refName, refs);
34
+ }
35
+ class RefsManager extends AbstractManager {
36
+ get __refs() {
37
+ var _a;
38
+ return (_a = this.__config.refs) != null ? _a : [];
64
39
  }
65
- static normalizeRefName(name) {
66
- return name.endsWith("[]") ? name.replace(/\[\]$/, "") : name;
40
+ registerAll() {
41
+ this.__refs.forEach((refName) => __register(this, refName));
67
42
  }
68
- __filterRefsBelongingToInstance(ref) {
69
- let ancestor = ref.parentElement;
70
- while (ancestor && ancestor.dataset.component === void 0) {
71
- ancestor = ancestor.parentElement;
72
- }
73
- return ancestor === null || ancestor === this.__element;
43
+ unregisterAll() {
44
+ this.__refs.forEach((refName) => __unregister(this, refName));
74
45
  }
75
46
  }
76
47
  export {
77
- RefsManager as default
48
+ RefsManager as default,
49
+ normalizeRefName
78
50
  };
@@ -0,0 +1,62 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
20
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
21
+
22
+ // packages/js-toolkit/Base/managers/ResponsiveOptionsManager.js
23
+ var ResponsiveOptionsManager_exports = {};
24
+ __export(ResponsiveOptionsManager_exports, {
25
+ default: () => ResponsiveOptionsManager
26
+ });
27
+ module.exports = __toCommonJS(ResponsiveOptionsManager_exports);
28
+ var import_OptionsManager = __toESM(require("./OptionsManager.cjs"), 1);
29
+ var import_services = require("../../services/index.cjs");
30
+ function __getResponsiveName(that, name) {
31
+ const { breakpoint } = (0, import_services.useResize)().props();
32
+ if (!breakpoint) {
33
+ return name;
34
+ }
35
+ let responsiveName = name;
36
+ const propertyName = (0, import_OptionsManager.__getPropertyName)(name);
37
+ const regex = new RegExp(`${propertyName}:(.+)$`);
38
+ Object.keys(that.__element.dataset).filter((optionName) => regex.test(optionName)).forEach((optionName) => {
39
+ const [, breakpoints] = optionName.match(regex);
40
+ const isInBreakpoint = breakpoints.split(":").includes(breakpoint);
41
+ if (isInBreakpoint) {
42
+ responsiveName = optionName.replace(/^option/, "");
43
+ }
44
+ });
45
+ return responsiveName;
46
+ }
47
+ var ResponsiveOptionsManager = class extends import_OptionsManager.default {
48
+ get(name, config) {
49
+ if (!config.responsive) {
50
+ return super.get(name, config);
51
+ }
52
+ return super.get(__getResponsiveName(this, name), config);
53
+ }
54
+ set(name, value, config) {
55
+ if (!config.responsive) {
56
+ super.set(name, value, config);
57
+ return;
58
+ }
59
+ console.warn(`[${this.__config.name}]`, "Responsive options are read-only.");
60
+ }
61
+ };
62
+ if (module.exports.default) module.exports = module.exports.default;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Class options to manage options as data attributes on an HTML element.
3
+ */
4
+ export default class ResponsiveOptionsManager extends OptionsManager {
5
+ /**
6
+ * Get an option value.
7
+ *
8
+ * @param {string} name The option name.
9
+ * @param {ResponsiveOptionObject} config The option configuration.
10
+ * @returns {any}
11
+ */
12
+ get(name: string, config: ResponsiveOptionObject): any;
13
+ /**
14
+ * Set an option value.
15
+ *
16
+ * @param {string} name The option name.
17
+ * @param {any} value The new value.
18
+ * @param {ResponsiveOptionObject} config The option configuration.
19
+ */
20
+ set(name: string, value: any, config: ResponsiveOptionObject): void;
21
+ }
22
+ export type OptionObject = import('./OptionsManager.js').OptionObject;
23
+ export type ResponsiveOptionObject = OptionObject & {
24
+ responsive?: boolean;
25
+ };
26
+ import OptionsManager from "./OptionsManager.js";
@@ -0,0 +1,37 @@
1
+ import OptionsManager, { __getPropertyName } from "./OptionsManager.js";
2
+ import { useResize } from "../../services/index.js";
3
+ function __getResponsiveName(that, name) {
4
+ const { breakpoint } = useResize().props();
5
+ if (!breakpoint) {
6
+ return name;
7
+ }
8
+ let responsiveName = name;
9
+ const propertyName = __getPropertyName(name);
10
+ const regex = new RegExp(`${propertyName}:(.+)$`);
11
+ Object.keys(that.__element.dataset).filter((optionName) => regex.test(optionName)).forEach((optionName) => {
12
+ const [, breakpoints] = optionName.match(regex);
13
+ const isInBreakpoint = breakpoints.split(":").includes(breakpoint);
14
+ if (isInBreakpoint) {
15
+ responsiveName = optionName.replace(/^option/, "");
16
+ }
17
+ });
18
+ return responsiveName;
19
+ }
20
+ class ResponsiveOptionsManager extends OptionsManager {
21
+ get(name, config) {
22
+ if (!config.responsive) {
23
+ return super.get(name, config);
24
+ }
25
+ return super.get(__getResponsiveName(this, name), config);
26
+ }
27
+ set(name, value, config) {
28
+ if (!config.responsive) {
29
+ super.set(name, value, config);
30
+ return;
31
+ }
32
+ console.warn(`[${this.__config.name}]`, "Responsive options are read-only.");
33
+ }
34
+ }
35
+ export {
36
+ ResponsiveOptionsManager as default
37
+ };
@@ -36,6 +36,7 @@ var import_resize = __toESM(require("../../services/resize.cjs"), 1);
36
36
  var import_scroll = __toESM(require("../../services/scroll.cjs"), 1);
37
37
  var import_key = __toESM(require("../../services/key.cjs"), 1);
38
38
  var import_load = __toESM(require("../../services/load.cjs"), 1);
39
+ var import_AbstractManager = __toESM(require("./AbstractManager.cjs"), 1);
39
40
  var import_utils = require("../utils.cjs");
40
41
  var SERVICES_MAP = {
41
42
  scrolled: import_scroll.default,
@@ -46,17 +47,10 @@ var SERVICES_MAP = {
46
47
  loaded: import_load.default
47
48
  };
48
49
  var SERVICE_NAMES = Object.keys(SERVICES_MAP);
49
- var ServicesManager = class {
50
- constructor(instance) {
51
- __publicField(this, "__base");
50
+ var ServicesManager = class extends import_AbstractManager.default {
51
+ constructor() {
52
+ super(...arguments);
52
53
  __publicField(this, "__customServices", {});
53
- Object.defineProperties(this, {
54
- __base: {
55
- enumerable: false,
56
- writable: false,
57
- value: instance
58
- }
59
- });
60
54
  }
61
55
  get __services() {
62
56
  return {
@@ -71,6 +65,9 @@ var ServicesManager = class {
71
65
  const { has } = this.__services[service]();
72
66
  return has(this.__base.$id);
73
67
  }
68
+ get(service) {
69
+ return this.__services[service]().props();
70
+ }
74
71
  enable(service) {
75
72
  if (this.has(service)) {
76
73
  return this.disable.bind(this, service);
@@ -7,63 +7,59 @@
7
7
  *
8
8
  * @todo Add support for disabled services on mount when the method is defined.
9
9
  */
10
- export default class ServicesManager {
11
- /**
12
- * Class constructor.
13
- * @param {Base} instance The Base instance.
14
- */
15
- constructor(instance: Base);
16
- /**
17
- * @type {Base}
18
- * @private
19
- */
20
- private __base;
10
+ export default class ServicesManager extends AbstractManager {
21
11
  /**
22
12
  * @type {Record<string, () => ServiceInterface>}
23
13
  */
24
14
  __customServices: Record<string, () => ServiceInterface>;
25
15
  /**
26
- * @return {Record<string, () => ServiceInterface>}
16
+ * @returns {Record<string, () => ServiceInterface>}
27
17
  */
28
18
  get __services(): Record<string, () => ServiceInterface>;
29
19
  /**
30
20
  * Test if the given service is registered.
31
21
  *
32
22
  * @param {ServiceName} service The name of the service.
33
- * @return {Boolean}
23
+ * @returns {boolean}
34
24
  */
35
25
  has(service: ServiceName): boolean;
26
+ /**
27
+ * Get a service props by name.
28
+ * @param {ServiceName} service The name of the service.
29
+ * @returns {ReturnType<ServiceInterface['props']>}
30
+ */
31
+ get(service: ServiceName): ReturnType<ServiceInterface['props']>;
36
32
  /**
37
33
  * Init the given service and bind it to the given instance.
38
34
  *
39
35
  * @param {ServiceName} service The name of the service.
40
- * @return {() => void} A function to unbind the service.
36
+ * @returns {() => void} A function to unbind the service.
41
37
  */
42
38
  enable(service: ServiceName): () => void;
43
39
  /**
44
40
  * Enable all services and return methods to disable them.
45
41
  *
46
- * @return {Function[]}
42
+ * @returns {Function[]}
47
43
  */
48
44
  enableAll(): Function[];
49
45
  /**
50
46
  * Disable all services.
51
47
  *
52
- * @return {void}
48
+ * @returns {void}
53
49
  */
54
50
  disableAll(): void;
55
51
  /**
56
52
  * Disable a service.
57
53
  *
58
- * @param {String} service The name of the service.
59
- * @return {void}
54
+ * @param {string} service The name of the service.
55
+ * @returns {void}
60
56
  */
61
57
  disable(service: string): void;
62
58
  /**
63
59
  * Toggle a service.
64
60
  * @param {string} service The name of the service.
65
61
  * @param {boolean} [force] The state to force.
66
- * @return {void}
62
+ * @returns {void}
67
63
  */
68
64
  toggle(service: string, force?: boolean): void;
69
65
  /**
@@ -95,6 +91,7 @@ export type ServiceName = keyof {
95
91
  keyed: typeof useKey;
96
92
  loaded: typeof useLoad;
97
93
  } | string;
94
+ import AbstractManager from "./AbstractManager.js";
98
95
  declare namespace SERVICES_MAP {
99
96
  export { useScroll as scrolled };
100
97
  export { useResize as resized };
@@ -10,6 +10,7 @@ import useResize from "../../services/resize.js";
10
10
  import useScroll from "../../services/scroll.js";
11
11
  import useKey from "../../services/key.js";
12
12
  import useLoad from "../../services/load.js";
13
+ import AbstractManager from "./AbstractManager.js";
13
14
  import { hasMethod } from "../utils.js";
14
15
  const SERVICES_MAP = {
15
16
  scrolled: useScroll,
@@ -20,17 +21,10 @@ const SERVICES_MAP = {
20
21
  loaded: useLoad
21
22
  };
22
23
  const SERVICE_NAMES = Object.keys(SERVICES_MAP);
23
- class ServicesManager {
24
- constructor(instance) {
25
- __publicField(this, "__base");
24
+ class ServicesManager extends AbstractManager {
25
+ constructor() {
26
+ super(...arguments);
26
27
  __publicField(this, "__customServices", {});
27
- Object.defineProperties(this, {
28
- __base: {
29
- enumerable: false,
30
- writable: false,
31
- value: instance
32
- }
33
- });
34
28
  }
35
29
  get __services() {
36
30
  return {
@@ -45,6 +39,9 @@ class ServicesManager {
45
39
  const { has } = this.__services[service]();
46
40
  return has(this.__base.$id);
47
41
  }
42
+ get(service) {
43
+ return this.__services[service]().props();
44
+ }
48
45
  enable(service) {
49
46
  if (this.has(service)) {
50
47
  return this.disable.bind(this, service);
package/Base/utils.d.ts CHANGED
@@ -5,18 +5,18 @@
5
5
  * Test if an object has a method.
6
6
  *
7
7
  * @param {Object} obj The object to test
8
- * @param {String} name The method's name
9
- * @return {Boolean}
8
+ * @param {string} name The method's name
9
+ * @returns {boolean}
10
10
  */
11
11
  export function hasMethod(obj: any, name: string): boolean;
12
12
  /**
13
13
  * Get a list of elements based on the name of a component.
14
14
  *
15
- * @param {String} nameOrSelector
15
+ * @param {string} nameOrSelector
16
16
  * The name or selector to used for this component.
17
17
  * @param {HTMLElement|Document} element
18
18
  * The root element on which to query the selector, defaults to `document`.
19
- * @return {Array<HTMLElement>}
19
+ * @returns {Array<HTMLElement>}
20
20
  * A list of elements on which the component should be mounted.
21
21
  */
22
22
  export function getComponentElements(nameOrSelector: string, element?: HTMLElement | Document): Array<HTMLElement>;