@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
package/Base/index.cjs CHANGED
@@ -40,6 +40,40 @@ var id = 0;
40
40
  var isDev = typeof __DEV__ !== "undefined" && __DEV__;
41
41
  function noop() {
42
42
  }
43
+ function createAndTestManagers(instance) {
44
+ [
45
+ {
46
+ prop: "__options",
47
+ constructorName: "OptionsManager",
48
+ constructor: import_OptionsManager.default
49
+ },
50
+ {
51
+ prop: "__services",
52
+ constructorName: "ServicesManager",
53
+ constructor: import_ServicesManager.default
54
+ },
55
+ {
56
+ prop: "__events",
57
+ constructorName: "EventsManager",
58
+ constructor: import_EventsManager.default
59
+ },
60
+ {
61
+ prop: "__refs",
62
+ constructorName: "RefsManager",
63
+ constructor: import_RefsManager.default
64
+ },
65
+ {
66
+ prop: "__children",
67
+ constructorName: "ChildrenManager",
68
+ constructor: import_ChildrenManager.default
69
+ }
70
+ ].forEach(({ prop, constructorName, constructor }) => {
71
+ instance[prop] = new instance.__managers[constructorName](instance);
72
+ if (!(instance[prop] instanceof constructor)) {
73
+ throw new Error(`The \`$managers.${constructorName}\` must extend the \`${constructorName}\` class.`);
74
+ }
75
+ });
76
+ }
43
77
  var Base = class extends EventTarget {
44
78
  constructor(element) {
45
79
  super();
@@ -67,15 +101,10 @@ var Base = class extends EventTarget {
67
101
  this.$el.__base__ = /* @__PURE__ */ new WeakMap();
68
102
  }
69
103
  this.$el.__base__.set(this.__ctor, this);
70
- this.__options = new import_OptionsManager.default(element, __config.options || {}, __config);
71
- this.__services = new import_ServicesManager.default(this);
72
- this.__events = new import_EventsManager.default(element, this);
73
- this.__children = new import_ChildrenManager.default(this, element, __config.components || {}, this.__events);
74
- this.__refs = new import_RefsManager.default(this, element, __config.refs || [], this.__events);
104
+ createAndTestManagers(this);
75
105
  if (isDev) {
76
106
  this.__debug("constructor", this);
77
107
  }
78
- return this;
79
108
  }
80
109
  get $root() {
81
110
  if (!this.$parent) {
@@ -92,24 +121,22 @@ var Base = class extends EventTarget {
92
121
  return root;
93
122
  }
94
123
  get __config() {
124
+ var _a, _b, _c;
95
125
  let proto = Object.getPrototypeOf(this);
96
126
  let { config } = proto.constructor;
97
127
  while (proto.constructor.config && proto.constructor.$isBase) {
98
- config = {
99
- ...proto.constructor.config,
100
- ...config
101
- };
128
+ config = { ...proto.constructor.config, ...config };
102
129
  if (proto.constructor.config.options) {
103
- config.options = {
104
- ...proto.constructor.config.options,
105
- ...config.options
106
- };
130
+ config.options = { ...proto.constructor.config.options, ...config.options };
107
131
  }
108
132
  if (proto.constructor.config.emits && config.emits) {
109
133
  config.emits = [...proto.constructor.config.emits, ...config.emits];
110
134
  }
111
135
  proto = Object.getPrototypeOf(proto);
112
136
  }
137
+ config.options = (_a = config.options) != null ? _a : {};
138
+ config.refs = (_b = config.refs) != null ? _b : [];
139
+ config.components = (_c = config.components) != null ? _c : {};
113
140
  return config;
114
141
  }
115
142
  get $services() {
@@ -130,6 +157,15 @@ var Base = class extends EventTarget {
130
157
  get __debug() {
131
158
  return isDev && this.__options.debug ? window.console.log.bind(window, `[debug] [${this.$id}]`) : noop;
132
159
  }
160
+ get __managers() {
161
+ return {
162
+ ChildrenManager: import_ChildrenManager.default,
163
+ EventsManager: import_EventsManager.default,
164
+ OptionsManager: import_OptionsManager.default,
165
+ RefsManager: import_RefsManager.default,
166
+ ServicesManager: import_ServicesManager.default
167
+ };
168
+ }
133
169
  __callMethod(method, ...args) {
134
170
  if (isDev) {
135
171
  this.__debug("callMethod", method, ...args);
@@ -151,6 +187,7 @@ var Base = class extends EventTarget {
151
187
  if (this.$isMounted) {
152
188
  return this;
153
189
  }
190
+ this.$emit("before-mounted");
154
191
  this.$isMounted = true;
155
192
  if (isDev) {
156
193
  this.__debug("$mount");
@@ -214,7 +251,7 @@ var Base = class extends EventTarget {
214
251
  }
215
252
  __removeEmits(event) {
216
253
  const ctor = this.__ctor;
217
- const index = ctor.config.emits.findIndex((value) => value === event);
254
+ const index = ctor.config.emits.indexOf(event);
218
255
  ctor.config.emits.splice(index, 1);
219
256
  }
220
257
  get __ctor() {
@@ -255,9 +292,7 @@ var Base = class extends EventTarget {
255
292
  if (isDev) {
256
293
  this.__testEventIsDefined(event);
257
294
  }
258
- this.dispatchEvent(new CustomEvent(event, {
259
- detail: args
260
- }));
295
+ this.dispatchEvent(new CustomEvent(event, { detail: args }));
261
296
  }
262
297
  static $factory(nameOrSelector) {
263
298
  if (!nameOrSelector) {
@@ -270,6 +305,7 @@ __publicField(Base, "$isBase", true);
270
305
  __publicField(Base, "config", {
271
306
  name: "Base",
272
307
  emits: [
308
+ "before-mounted",
273
309
  "mounted",
274
310
  "updated",
275
311
  "destroyed",
package/Base/index.d.ts CHANGED
@@ -10,21 +10,29 @@
10
10
  */
11
11
  /**
12
12
  * @typedef {Object} BaseConfig
13
- * @property {String} name
14
- * @property {Boolean} [debug]
15
- * @property {Boolean} [log]
16
- * @property {String[]} [refs]
17
- * @property {String[]} [emits]
13
+ * @property {string} name
14
+ * @property {boolean} [debug]
15
+ * @property {boolean} [log]
16
+ * @property {string[]} [refs]
17
+ * @property {string[]} [emits]
18
18
  * @property {BaseConfigComponents} [components]
19
19
  * @property {BaseConfigOptions} [options]
20
20
  */
21
+ /**
22
+ * @typedef {Object} Managers
23
+ * @property {typeof ChildrenManager} ChildrenManager
24
+ * @property {typeof EventsManager} EventsManager
25
+ * @property {typeof OptionsManager} OptionsManager
26
+ * @property {typeof RefsManager} RefsManager
27
+ * @property {typeof ServicesManager} ServicesManager
28
+ */
21
29
  /**
22
30
  * Base class.
23
31
  */
24
32
  export default class Base extends EventTarget {
25
33
  /**
26
34
  * This is a Base instance.
27
- * @type {Boolean}
35
+ * @type {boolean}
28
36
  * @readonly
29
37
  */
30
38
  static readonly $isBase: boolean;
@@ -35,8 +43,8 @@ export default class Base extends EventTarget {
35
43
  /**
36
44
  * Factory method to generate multiple instance of the class.
37
45
  *
38
- * @param {String} nameOrSelector The selector on which to mount each instance.
39
- * @return {Array<Base>} A list of the created instance.
46
+ * @param {string} nameOrSelector The selector on which to mount each instance.
47
+ * @returns {Array<Base>} A list of the created instance.
40
48
  */
41
49
  static $factory(nameOrSelector: string): Array<Base>;
42
50
  /**
@@ -64,7 +72,7 @@ export default class Base extends EventTarget {
64
72
  };
65
73
  /**
66
74
  * The state of the component.
67
- * @type {Boolean}
75
+ * @type {boolean}
68
76
  */
69
77
  $isMounted: boolean;
70
78
  /**
@@ -76,13 +84,13 @@ export default class Base extends EventTarget {
76
84
  private __eventHandlers;
77
85
  /**
78
86
  * Get the root instance of the app.
79
- * @return {Base}
87
+ * @returns {Base}
80
88
  */
81
89
  get $root(): Base;
82
90
  /**
83
91
  * Merge configuration with the parents' configurations.
84
92
  *
85
- * @return {BaseConfig}
93
+ * @returns {BaseConfig}
86
94
  * @private
87
95
  */
88
96
  private get __config();
@@ -101,7 +109,7 @@ export default class Base extends EventTarget {
101
109
  */
102
110
  private __refs;
103
111
  /**
104
- * @return {RefsManager}
112
+ * @returns {RefsManager}
105
113
  */
106
114
  get $refs(): RefsManager;
107
115
  /**
@@ -110,7 +118,7 @@ export default class Base extends EventTarget {
110
118
  */
111
119
  private __options;
112
120
  /**
113
- * @return {BaseOptions}
121
+ * @returns {BaseOptions}
114
122
  */
115
123
  get $options(): BaseOptions;
116
124
  /**
@@ -119,7 +127,7 @@ export default class Base extends EventTarget {
119
127
  */
120
128
  private __children;
121
129
  /**
122
- * @return {ChildrenManager}
130
+ * @returns {ChildrenManager}
123
131
  */
124
132
  get $children(): ChildrenManager;
125
133
  /**
@@ -130,23 +138,29 @@ export default class Base extends EventTarget {
130
138
  /**
131
139
  * Small helper to log stuff.
132
140
  *
133
- * @return {(...args: any) => void}
141
+ * @returns {(...args: any) => void}
134
142
  */
135
143
  get $log(): (...args: any) => void;
136
144
  /**
137
145
  * Small helper to debug information.
138
146
  *
139
147
  * @private
140
- * @return {(...args:any) => void}
148
+ * @returns {(...args:any) => void}
141
149
  */
142
150
  private get __debug();
151
+ /**
152
+ * Get manager constructors.
153
+ *
154
+ * @returns {Managers}
155
+ */
156
+ get __managers(): Managers;
143
157
  /**
144
158
  * Call an instance method and emit corresponding events.
145
159
  *
146
160
  * @private
147
161
  * @param {string} method
148
162
  * @param {any[]} args
149
- * @return {void}
163
+ * @returns {void}
150
164
  */
151
165
  private __callMethod;
152
166
  /**
@@ -154,27 +168,27 @@ export default class Base extends EventTarget {
154
168
  *
155
169
  * @private
156
170
  * @param {string} event The event's name.
157
- * @return {boolean} Wether the given event has been bound or not.
171
+ * @returns {boolean} Wether the given event has been bound or not.
158
172
  */
159
173
  private __hasEvent;
160
174
  /**
161
175
  * Trigger the `mounted` callback.
162
- * @return {this}
176
+ * @returns {this}
163
177
  */
164
178
  $mount(): this;
165
179
  /**
166
180
  * Update the instance children.
167
- * @return {this}
181
+ * @returns {this}
168
182
  */
169
183
  $update(): this;
170
184
  /**
171
185
  * Trigger the `destroyed` callback.
172
- * @return {this}
186
+ * @returns {this}
173
187
  */
174
188
  $destroy(): this;
175
189
  /**
176
190
  * Terminate a child instance when it is not needed anymore.
177
- * @return {void}
191
+ * @returns {void}
178
192
  */
179
193
  $terminate(): void;
180
194
  /**
@@ -217,7 +231,7 @@ export default class Base extends EventTarget {
217
231
  * Function to be called.
218
232
  * @param {boolean|AddEventListenerOptions} [options]
219
233
  * Options for the `removeEventListener` method.
220
- * @return {() => void}
234
+ * @returns {() => void}
221
235
  * A function to unbind the listener.
222
236
  */
223
237
  $on(event: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): () => void;
@@ -230,8 +244,7 @@ export default class Base extends EventTarget {
230
244
  * Function to be removed.
231
245
  * @param {boolean|EventListenerOptions} [options]
232
246
  * Options for the `removeEventListener` method.
233
- *
234
- * @return {void}
247
+ * @returns {void}
235
248
  */
236
249
  $off(event: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
237
250
  /**
@@ -240,7 +253,7 @@ export default class Base extends EventTarget {
240
253
  * @param {string} event
241
254
  * Name of the event.
242
255
  * @param {any[]} args The arguments to apply to the functions bound to this event.
243
- * @return {void}
256
+ * @returns {void}
244
257
  */
245
258
  $emit(event: string, ...args: any[]): void;
246
259
  }
@@ -271,7 +284,15 @@ export type BaseConfig = {
271
284
  components?: BaseConfigComponents;
272
285
  options?: BaseConfigOptions;
273
286
  };
287
+ export type Managers = {
288
+ ChildrenManager: typeof ChildrenManager;
289
+ EventsManager: typeof EventsManager;
290
+ OptionsManager: typeof OptionsManager;
291
+ RefsManager: typeof RefsManager;
292
+ ServicesManager: typeof ServicesManager;
293
+ };
274
294
  import ServicesManager from "./managers/ServicesManager.js";
275
295
  import RefsManager from "./managers/RefsManager.js";
276
296
  import ChildrenManager from "./managers/ChildrenManager.js";
277
297
  import OptionsManager from "./managers/OptionsManager.js";
298
+ import EventsManager from "./managers/EventsManager.js";
package/Base/index.js CHANGED
@@ -14,6 +14,40 @@ let id = 0;
14
14
  const isDev = typeof __DEV__ !== "undefined" && __DEV__;
15
15
  function noop() {
16
16
  }
17
+ function createAndTestManagers(instance) {
18
+ [
19
+ {
20
+ prop: "__options",
21
+ constructorName: "OptionsManager",
22
+ constructor: OptionsManager
23
+ },
24
+ {
25
+ prop: "__services",
26
+ constructorName: "ServicesManager",
27
+ constructor: ServicesManager
28
+ },
29
+ {
30
+ prop: "__events",
31
+ constructorName: "EventsManager",
32
+ constructor: EventsManager
33
+ },
34
+ {
35
+ prop: "__refs",
36
+ constructorName: "RefsManager",
37
+ constructor: RefsManager
38
+ },
39
+ {
40
+ prop: "__children",
41
+ constructorName: "ChildrenManager",
42
+ constructor: ChildrenManager
43
+ }
44
+ ].forEach(({ prop, constructorName, constructor }) => {
45
+ instance[prop] = new instance.__managers[constructorName](instance);
46
+ if (!(instance[prop] instanceof constructor)) {
47
+ throw new Error(`The \`$managers.${constructorName}\` must extend the \`${constructorName}\` class.`);
48
+ }
49
+ });
50
+ }
17
51
  class Base extends EventTarget {
18
52
  constructor(element) {
19
53
  super();
@@ -41,15 +75,10 @@ class Base extends EventTarget {
41
75
  this.$el.__base__ = /* @__PURE__ */ new WeakMap();
42
76
  }
43
77
  this.$el.__base__.set(this.__ctor, this);
44
- this.__options = new OptionsManager(element, __config.options || {}, __config);
45
- this.__services = new ServicesManager(this);
46
- this.__events = new EventsManager(element, this);
47
- this.__children = new ChildrenManager(this, element, __config.components || {}, this.__events);
48
- this.__refs = new RefsManager(this, element, __config.refs || [], this.__events);
78
+ createAndTestManagers(this);
49
79
  if (isDev) {
50
80
  this.__debug("constructor", this);
51
81
  }
52
- return this;
53
82
  }
54
83
  get $root() {
55
84
  if (!this.$parent) {
@@ -66,24 +95,22 @@ class Base extends EventTarget {
66
95
  return root;
67
96
  }
68
97
  get __config() {
98
+ var _a, _b, _c;
69
99
  let proto = Object.getPrototypeOf(this);
70
100
  let { config } = proto.constructor;
71
101
  while (proto.constructor.config && proto.constructor.$isBase) {
72
- config = {
73
- ...proto.constructor.config,
74
- ...config
75
- };
102
+ config = { ...proto.constructor.config, ...config };
76
103
  if (proto.constructor.config.options) {
77
- config.options = {
78
- ...proto.constructor.config.options,
79
- ...config.options
80
- };
104
+ config.options = { ...proto.constructor.config.options, ...config.options };
81
105
  }
82
106
  if (proto.constructor.config.emits && config.emits) {
83
107
  config.emits = [...proto.constructor.config.emits, ...config.emits];
84
108
  }
85
109
  proto = Object.getPrototypeOf(proto);
86
110
  }
111
+ config.options = (_a = config.options) != null ? _a : {};
112
+ config.refs = (_b = config.refs) != null ? _b : [];
113
+ config.components = (_c = config.components) != null ? _c : {};
87
114
  return config;
88
115
  }
89
116
  get $services() {
@@ -104,6 +131,15 @@ class Base extends EventTarget {
104
131
  get __debug() {
105
132
  return isDev && this.__options.debug ? window.console.log.bind(window, `[debug] [${this.$id}]`) : noop;
106
133
  }
134
+ get __managers() {
135
+ return {
136
+ ChildrenManager,
137
+ EventsManager,
138
+ OptionsManager,
139
+ RefsManager,
140
+ ServicesManager
141
+ };
142
+ }
107
143
  __callMethod(method, ...args) {
108
144
  if (isDev) {
109
145
  this.__debug("callMethod", method, ...args);
@@ -125,6 +161,7 @@ class Base extends EventTarget {
125
161
  if (this.$isMounted) {
126
162
  return this;
127
163
  }
164
+ this.$emit("before-mounted");
128
165
  this.$isMounted = true;
129
166
  if (isDev) {
130
167
  this.__debug("$mount");
@@ -188,7 +225,7 @@ class Base extends EventTarget {
188
225
  }
189
226
  __removeEmits(event) {
190
227
  const ctor = this.__ctor;
191
- const index = ctor.config.emits.findIndex((value) => value === event);
228
+ const index = ctor.config.emits.indexOf(event);
192
229
  ctor.config.emits.splice(index, 1);
193
230
  }
194
231
  get __ctor() {
@@ -229,9 +266,7 @@ class Base extends EventTarget {
229
266
  if (isDev) {
230
267
  this.__testEventIsDefined(event);
231
268
  }
232
- this.dispatchEvent(new CustomEvent(event, {
233
- detail: args
234
- }));
269
+ this.dispatchEvent(new CustomEvent(event, { detail: args }));
235
270
  }
236
271
  static $factory(nameOrSelector) {
237
272
  if (!nameOrSelector) {
@@ -244,6 +279,7 @@ __publicField(Base, "$isBase", true);
244
279
  __publicField(Base, "config", {
245
280
  name: "Base",
246
281
  emits: [
282
+ "before-mounted",
247
283
  "mounted",
248
284
  "updated",
249
285
  "destroyed",
@@ -0,0 +1,56 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ 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
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ 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
+
24
+ // packages/js-toolkit/Base/managers/AbstractManager.js
25
+ var AbstractManager_exports = {};
26
+ __export(AbstractManager_exports, {
27
+ default: () => AbstractManager
28
+ });
29
+ module.exports = __toCommonJS(AbstractManager_exports);
30
+ var AbstractManager = class {
31
+ constructor(base) {
32
+ __publicField(this, "__base");
33
+ this.__base = base;
34
+ this.__hideProperties(["__base"]);
35
+ }
36
+ get __element() {
37
+ return this.__base.$el;
38
+ }
39
+ get __config() {
40
+ return this.__base.__config;
41
+ }
42
+ get __eventsManager() {
43
+ return this.__base.__events;
44
+ }
45
+ __hideProperties(properties) {
46
+ Object.defineProperties(this, Object.fromEntries(properties.map((property) => [
47
+ property,
48
+ {
49
+ enumerable: false,
50
+ writable: false,
51
+ value: this[property]
52
+ }
53
+ ])));
54
+ }
55
+ };
56
+ if (module.exports.default) module.exports = module.exports.default;
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @typedef {import('../index.js').default} Base
3
+ * @typedef {import('../index.js').BaseConfig} BaseConfig
4
+ * @typedef {import('./EventsManager.js').default} EventsManager
5
+ */
6
+ /**
7
+ * AbstractManager class.
8
+ */
9
+ export default class AbstractManager {
10
+ /**
11
+ * Class constructor.
12
+ *
13
+ * @param {Base} base
14
+ */
15
+ constructor(base: Base);
16
+ /**
17
+ * @type {Base}
18
+ */
19
+ __base: Base;
20
+ /**
21
+ * Get the base instance root element.
22
+ * @returns {HTMLElement}
23
+ */
24
+ get __element(): HTMLElement;
25
+ /**
26
+ * Get the base instance config.
27
+ * @returns {BaseConfig}
28
+ */
29
+ get __config(): import("../index.js").BaseConfig;
30
+ /**
31
+ * Get the events manager.
32
+ * @returns {EventsManager}
33
+ */
34
+ get __eventsManager(): import("./EventsManager.js").default;
35
+ /**
36
+ * Prevent a list of properties from being enumerable and writable.
37
+ * @param {string[]} properties
38
+ * @returns {void}
39
+ */
40
+ __hideProperties(properties: string[]): void;
41
+ }
42
+ export type Base = import('../index.js').default;
43
+ export type BaseConfig = import('../index.js').BaseConfig;
44
+ export type EventsManager = import('./EventsManager.js').default;
@@ -0,0 +1,35 @@
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 AbstractManager {
8
+ constructor(base) {
9
+ __publicField(this, "__base");
10
+ this.__base = base;
11
+ this.__hideProperties(["__base"]);
12
+ }
13
+ get __element() {
14
+ return this.__base.$el;
15
+ }
16
+ get __config() {
17
+ return this.__base.__config;
18
+ }
19
+ get __eventsManager() {
20
+ return this.__base.__events;
21
+ }
22
+ __hideProperties(properties) {
23
+ Object.defineProperties(this, Object.fromEntries(properties.map((property) => [
24
+ property,
25
+ {
26
+ enumerable: false,
27
+ writable: false,
28
+ value: this[property]
29
+ }
30
+ ])));
31
+ }
32
+ }
33
+ export {
34
+ AbstractManager as default
35
+ };