@studiometa/js-toolkit 2.11.2 → 2.12.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/Base.cjs +155 -60
- package/Base/Base.cjs.map +2 -2
- package/Base/Base.js +138 -38
- package/Base/Base.js.map +2 -2
- package/Base/managers/AbstractManager.cjs +21 -0
- package/Base/managers/AbstractManager.cjs.map +1 -1
- package/Base/managers/AbstractManager.js +21 -0
- package/Base/managers/AbstractManager.js.map +1 -1
- package/Base/managers/ChildrenManager.cjs +41 -8
- package/Base/managers/ChildrenManager.cjs.map +3 -3
- package/Base/managers/ChildrenManager.js +41 -8
- package/Base/managers/ChildrenManager.js.map +2 -2
- package/Base/managers/EventsManager.cjs +92 -7
- package/Base/managers/EventsManager.cjs.map +2 -2
- package/Base/managers/EventsManager.js +88 -7
- package/Base/managers/EventsManager.js.map +2 -2
- package/Base/managers/OptionsManager.cjs +29 -2
- package/Base/managers/OptionsManager.cjs.map +2 -2
- package/Base/managers/OptionsManager.js +25 -2
- package/Base/managers/OptionsManager.js.map +2 -2
- package/Base/managers/RefsManager.cjs +19 -5
- package/Base/managers/RefsManager.cjs.map +2 -2
- package/Base/managers/RefsManager.js +27 -6
- package/Base/managers/RefsManager.js.map +2 -2
- package/Base/managers/ResponsiveOptionsManager.cjs +22 -6
- package/Base/managers/ResponsiveOptionsManager.cjs.map +2 -2
- package/Base/managers/ResponsiveOptionsManager.js +22 -6
- package/Base/managers/ResponsiveOptionsManager.js.map +2 -2
- package/Base/managers/ServicesManager.cjs +54 -4
- package/Base/managers/ServicesManager.cjs.map +2 -2
- package/Base/managers/ServicesManager.js +54 -4
- package/Base/managers/ServicesManager.js.map +2 -2
- package/Base/utils.cjs +4 -0
- package/Base/utils.cjs.map +1 -1
- package/Base/utils.js +4 -0
- package/Base/utils.js.map +1 -1
- package/decorators/withBreakpointManager.cjs +14 -4
- package/decorators/withBreakpointManager.cjs.map +2 -2
- package/decorators/withBreakpointManager.js +14 -4
- package/decorators/withBreakpointManager.js.map +2 -2
- package/decorators/withBreakpointObserver.cjs +11 -1
- package/decorators/withBreakpointObserver.cjs.map +2 -2
- package/decorators/withBreakpointObserver.js +12 -2
- package/decorators/withBreakpointObserver.js.map +2 -2
- package/decorators/withDrag.cjs +6 -0
- package/decorators/withDrag.cjs.map +1 -1
- package/decorators/withDrag.js +6 -0
- package/decorators/withDrag.js.map +1 -1
- package/decorators/withExtraConfig.cjs +7 -0
- package/decorators/withExtraConfig.cjs.map +1 -1
- package/decorators/withExtraConfig.js +3 -0
- package/decorators/withExtraConfig.js.map +1 -1
- package/decorators/withFreezedOptions.cjs +8 -0
- package/decorators/withFreezedOptions.cjs.map +1 -1
- package/decorators/withFreezedOptions.js +8 -0
- package/decorators/withFreezedOptions.js.map +1 -1
- package/decorators/withIntersectionObserver.cjs +9 -0
- package/decorators/withIntersectionObserver.cjs.map +1 -1
- package/decorators/withIntersectionObserver.js +9 -0
- package/decorators/withIntersectionObserver.js.map +1 -1
- package/decorators/withMountOnMediaQuery.cjs +16 -0
- package/decorators/withMountOnMediaQuery.cjs.map +1 -1
- package/decorators/withMountOnMediaQuery.js +16 -0
- package/decorators/withMountOnMediaQuery.js.map +1 -1
- package/decorators/withMountWhenInView.cjs +21 -0
- package/decorators/withMountWhenInView.cjs.map +1 -1
- package/decorators/withMountWhenInView.js +21 -0
- package/decorators/withMountWhenInView.js.map +1 -1
- package/decorators/withRelativePointer.cjs +6 -0
- package/decorators/withRelativePointer.cjs.map +1 -1
- package/decorators/withRelativePointer.js +6 -0
- package/decorators/withRelativePointer.js.map +1 -1
- package/decorators/withResponsiveOptions.cjs +3 -0
- package/decorators/withResponsiveOptions.cjs.map +1 -1
- package/decorators/withResponsiveOptions.js +3 -0
- package/decorators/withResponsiveOptions.js.map +1 -1
- package/decorators/withScrolledInView/utils.cjs +6 -6
- package/decorators/withScrolledInView/utils.cjs.map +2 -2
- package/decorators/withScrolledInView/utils.js +7 -7
- package/decorators/withScrolledInView/utils.js.map +2 -2
- package/decorators/withScrolledInView/withScrolledInView.cjs +33 -0
- package/decorators/withScrolledInView/withScrolledInView.cjs.map +1 -1
- package/decorators/withScrolledInView/withScrolledInView.js +33 -0
- package/decorators/withScrolledInView/withScrolledInView.js.map +1 -1
- package/decorators/withVue2.cjs +3 -0
- package/decorators/withVue2.cjs.map +1 -1
- package/decorators/withVue2.js +3 -0
- package/decorators/withVue2.js.map +1 -1
- package/helpers/createApp.cjs +2 -2
- package/helpers/createApp.cjs.map +2 -2
- package/helpers/createApp.js +2 -2
- package/helpers/createApp.js.map +2 -2
- package/helpers/getClosestParent.cjs +4 -0
- package/helpers/getClosestParent.cjs.map +1 -1
- package/helpers/getDirectChildren.cjs.map +1 -1
- package/helpers/getDirectChildren.js.map +1 -1
- package/helpers/importOnInteraction.cjs +4 -4
- package/helpers/importOnInteraction.cjs.map +2 -2
- package/helpers/importOnInteraction.js +4 -4
- package/helpers/importOnInteraction.js.map +2 -2
- package/helpers/importWhenPrefersMotion.cjs +4 -0
- package/helpers/importWhenPrefersMotion.cjs.map +1 -1
- package/helpers/importWhenVisible.cjs +2 -1
- package/helpers/importWhenVisible.cjs.map +2 -2
- package/helpers/importWhenVisible.js +2 -1
- package/helpers/importWhenVisible.js.map +2 -2
- package/helpers/index.cjs +4 -0
- package/helpers/index.cjs.map +1 -1
- package/package.json +3 -3
- package/services/drag.cjs +12 -8
- package/services/drag.cjs.map +2 -2
- package/services/drag.js +8 -8
- package/services/drag.js.map +2 -2
- package/services/index.cjs +4 -0
- package/services/index.cjs.map +1 -1
- package/services/key.cjs +6 -2
- package/services/key.cjs.map +2 -2
- package/services/key.js +2 -2
- package/services/key.js.map +2 -2
- package/services/load.cjs +3 -0
- package/services/load.cjs.map +1 -1
- package/services/load.js +3 -0
- package/services/load.js.map +1 -1
- package/services/pointer.cjs +4 -4
- package/services/pointer.cjs.map +2 -2
- package/services/pointer.js +4 -4
- package/services/pointer.js.map +2 -2
- package/services/raf.cjs +2 -2
- package/services/raf.cjs.map +2 -2
- package/services/raf.js +2 -2
- package/services/raf.js.map +2 -2
- package/services/resize.cjs +4 -0
- package/services/resize.cjs.map +1 -1
- package/services/scroll.cjs +4 -0
- package/services/scroll.cjs.map +1 -1
- package/services/service.cjs +2 -2
- package/services/service.cjs.map +2 -2
- package/services/service.js +2 -2
- package/services/service.js.map +2 -2
- package/utils/Queue.cjs +30 -0
- package/utils/Queue.cjs.map +1 -1
- package/utils/Queue.js +30 -0
- package/utils/Queue.js.map +1 -1
- package/utils/SmartQueue.cjs +16 -0
- package/utils/SmartQueue.cjs.map +1 -1
- package/utils/SmartQueue.js +12 -0
- package/utils/SmartQueue.js.map +1 -1
- package/utils/collide/collidePointRect.cjs +4 -1
- package/utils/collide/collidePointRect.cjs.map +1 -1
- package/utils/collide/collidePointRect.js +4 -1
- package/utils/collide/collidePointRect.js.map +1 -1
- package/utils/collide/collideRectRect.cjs +4 -1
- package/utils/collide/collideRectRect.cjs.map +1 -1
- package/utils/collide/collideRectRect.js +4 -1
- package/utils/collide/collideRectRect.js.map +1 -1
- package/utils/collide/index.cjs +4 -0
- package/utils/collide/index.cjs.map +1 -1
- package/utils/css/animate.cjs +21 -12
- package/utils/css/animate.cjs.map +2 -2
- package/utils/css/animate.js +17 -12
- package/utils/css/animate.js.map +2 -2
- package/utils/css/classes.cjs +2 -3
- package/utils/css/classes.cjs.map +2 -2
- package/utils/css/classes.js +2 -3
- package/utils/css/classes.js.map +2 -2
- package/utils/css/index.cjs +4 -0
- package/utils/css/index.cjs.map +1 -1
- package/utils/css/matrix.cjs.map +1 -1
- package/utils/css/matrix.js.map +1 -1
- package/utils/css/styles.cjs +2 -2
- package/utils/css/styles.cjs.map +2 -2
- package/utils/css/styles.js +2 -2
- package/utils/css/styles.js.map +2 -2
- package/utils/css/transform.cjs.map +1 -1
- package/utils/css/transform.js.map +1 -1
- package/utils/css/transition.cjs +19 -0
- package/utils/css/transition.cjs.map +1 -1
- package/utils/css/transition.js +15 -0
- package/utils/css/transition.js.map +1 -1
- package/utils/focusTrap.cjs +4 -0
- package/utils/focusTrap.cjs.map +1 -1
- package/utils/focusTrap.js.map +1 -1
- package/utils/history.cjs +6 -5
- package/utils/history.cjs.map +2 -2
- package/utils/history.js +6 -5
- package/utils/history.js.map +2 -2
- package/utils/index.cjs +4 -0
- package/utils/index.cjs.map +1 -1
- package/utils/math/clamp01.cjs +4 -0
- package/utils/math/clamp01.cjs.map +1 -1
- package/utils/math/index.cjs +4 -0
- package/utils/math/index.cjs.map +1 -1
- package/utils/math/inertiaFinalValue.cjs +4 -0
- package/utils/math/inertiaFinalValue.cjs.map +1 -1
- package/utils/object/autoBind.cjs +11 -5
- package/utils/object/autoBind.cjs.map +2 -2
- package/utils/object/autoBind.js +7 -5
- package/utils/object/autoBind.js.map +2 -2
- package/utils/object/index.cjs +4 -0
- package/utils/object/index.cjs.map +1 -1
- package/utils/scheduler.cjs +4 -4
- package/utils/scheduler.cjs.map +2 -2
- package/utils/scheduler.js +4 -4
- package/utils/scheduler.js.map +2 -2
- package/utils/scrollTo.cjs +4 -0
- package/utils/scrollTo.cjs.map +1 -1
- package/utils/string/endsWith.cjs +35 -0
- package/utils/string/endsWith.cjs.map +7 -0
- package/utils/string/endsWith.d.ts +8 -0
- package/utils/string/endsWith.js +13 -0
- package/utils/string/endsWith.js.map +7 -0
- package/utils/string/index.cjs +7 -0
- package/utils/string/index.cjs.map +2 -2
- package/utils/string/index.d.ts +2 -0
- package/utils/string/index.js +2 -0
- package/utils/string/index.js.map +2 -2
- package/utils/string/startsWith.cjs +35 -0
- package/utils/string/startsWith.cjs.map +7 -0
- package/utils/string/startsWith.d.ts +8 -0
- package/utils/string/startsWith.js +13 -0
- package/utils/string/startsWith.js.map +7 -0
- package/utils/string/withLeadingCharacters.cjs +4 -0
- package/utils/string/withLeadingCharacters.cjs.map +1 -1
- package/utils/string/withLeadingCharacters.js.map +1 -1
- package/utils/string/withLeadingSlash.cjs +4 -0
- package/utils/string/withLeadingSlash.cjs.map +1 -1
- package/utils/string/withTrailingCharacters.cjs +4 -0
- package/utils/string/withTrailingCharacters.cjs.map +1 -1
- package/utils/string/withTrailingCharacters.js.map +1 -1
- package/utils/string/withTrailingSlash.cjs +4 -0
- package/utils/string/withTrailingSlash.cjs.map +1 -1
- package/utils/string/withoutLeadingCharacters.cjs.map +1 -1
- package/utils/string/withoutLeadingCharacters.js.map +1 -1
- package/utils/string/withoutLeadingCharactersRecursive.cjs +4 -0
- package/utils/string/withoutLeadingCharactersRecursive.cjs.map +1 -1
- package/utils/string/withoutLeadingCharactersRecursive.js.map +1 -1
- package/utils/string/withoutLeadingSlash.cjs +4 -0
- package/utils/string/withoutLeadingSlash.cjs.map +1 -1
- package/utils/string/withoutTrailingCharacters.cjs.map +1 -1
- package/utils/string/withoutTrailingCharacters.js.map +1 -1
- package/utils/string/withoutTrailingCharactersRecursive.cjs +4 -0
- package/utils/string/withoutTrailingCharactersRecursive.cjs.map +1 -1
- package/utils/string/withoutTrailingCharactersRecursive.js.map +1 -1
- package/utils/string/withoutTrailingSlash.cjs +4 -0
- package/utils/string/withoutTrailingSlash.cjs.map +1 -1
- package/utils/tween.cjs +4 -0
- package/utils/tween.cjs.map +1 -1
- package/utils/tween.js.map +1 -1
package/Base/Base.cjs
CHANGED
|
@@ -2,7 +2,6 @@ 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 __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
5
|
var __export = (target, all) => {
|
|
7
6
|
for (var name in all)
|
|
8
7
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -16,10 +15,6 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
15
|
return to;
|
|
17
16
|
};
|
|
18
17
|
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
18
|
|
|
24
19
|
// packages/js-toolkit/Base/Base.ts
|
|
25
20
|
var Base_exports = {};
|
|
@@ -32,7 +27,7 @@ var import_managers = require("./managers/index.cjs");
|
|
|
32
27
|
var import_utils2 = require("../utils/index.cjs");
|
|
33
28
|
var id = 0;
|
|
34
29
|
function createAndTestManagers(instance) {
|
|
35
|
-
[
|
|
30
|
+
for (const { prop, constructorName, constructor } of [
|
|
36
31
|
{
|
|
37
32
|
prop: "__options",
|
|
38
33
|
constructorName: "OptionsManager",
|
|
@@ -58,21 +53,43 @@ function createAndTestManagers(instance) {
|
|
|
58
53
|
constructorName: "ChildrenManager",
|
|
59
54
|
constructor: import_managers.ChildrenManager
|
|
60
55
|
}
|
|
61
|
-
]
|
|
56
|
+
]) {
|
|
62
57
|
instance[prop] = new instance.__managers[constructorName](instance);
|
|
63
58
|
if (import_utils2.isDev && !(instance[prop] instanceof constructor)) {
|
|
64
59
|
throw new Error(
|
|
65
60
|
`The \`$managers.${constructorName}\` must extend the \`${constructorName}\` class.`
|
|
66
61
|
);
|
|
67
62
|
}
|
|
68
|
-
}
|
|
63
|
+
}
|
|
69
64
|
}
|
|
70
65
|
var Base = class extends EventTarget {
|
|
66
|
+
/**
|
|
67
|
+
* This is a Base instance.
|
|
68
|
+
*/
|
|
69
|
+
static $isBase = true;
|
|
70
|
+
/**
|
|
71
|
+
* The instance parent.
|
|
72
|
+
*/
|
|
71
73
|
$parent = null;
|
|
74
|
+
/**
|
|
75
|
+
* The instance id.
|
|
76
|
+
*/
|
|
72
77
|
$id;
|
|
78
|
+
/**
|
|
79
|
+
* The root element.
|
|
80
|
+
*/
|
|
73
81
|
$el;
|
|
82
|
+
/**
|
|
83
|
+
* The state of the component.
|
|
84
|
+
*/
|
|
74
85
|
$isMounted = false;
|
|
86
|
+
/**
|
|
87
|
+
* Store the event handlers.
|
|
88
|
+
*/
|
|
75
89
|
__eventHandlers = /* @__PURE__ */ new Map();
|
|
90
|
+
/**
|
|
91
|
+
* Get the root instance of the app.
|
|
92
|
+
*/
|
|
76
93
|
get $root() {
|
|
77
94
|
if (!this.$parent) {
|
|
78
95
|
return this;
|
|
@@ -87,6 +104,9 @@ var Base = class extends EventTarget {
|
|
|
87
104
|
}
|
|
88
105
|
return root;
|
|
89
106
|
}
|
|
107
|
+
/**
|
|
108
|
+
* Merge configuration with the parents' configurations.
|
|
109
|
+
*/
|
|
90
110
|
get __config() {
|
|
91
111
|
let proto = Object.getPrototypeOf(this);
|
|
92
112
|
let { config } = proto.constructor;
|
|
@@ -105,6 +125,24 @@ var Base = class extends EventTarget {
|
|
|
105
125
|
config.components = config.components ?? {};
|
|
106
126
|
return config;
|
|
107
127
|
}
|
|
128
|
+
static config = {
|
|
129
|
+
name: "Base",
|
|
130
|
+
emits: [
|
|
131
|
+
// hook events
|
|
132
|
+
"before-mounted",
|
|
133
|
+
"mounted",
|
|
134
|
+
"updated",
|
|
135
|
+
"destroyed",
|
|
136
|
+
"terminated",
|
|
137
|
+
// default services' events
|
|
138
|
+
"ticked",
|
|
139
|
+
"scrolled",
|
|
140
|
+
"resized",
|
|
141
|
+
"moved",
|
|
142
|
+
"loaded",
|
|
143
|
+
"keyed"
|
|
144
|
+
]
|
|
145
|
+
};
|
|
108
146
|
__services;
|
|
109
147
|
get $services() {
|
|
110
148
|
return this.__services;
|
|
@@ -122,15 +160,27 @@ var Base = class extends EventTarget {
|
|
|
122
160
|
return this.__children;
|
|
123
161
|
}
|
|
124
162
|
__events;
|
|
163
|
+
/**
|
|
164
|
+
* Small helper to log stuff.
|
|
165
|
+
*/
|
|
125
166
|
get $log() {
|
|
126
167
|
return this.__options.log ? window.console.log.bind(window, `[${this.__config.name}]`) : import_utils2.noop;
|
|
127
168
|
}
|
|
169
|
+
/**
|
|
170
|
+
* Small helper to make warning easier.
|
|
171
|
+
*/
|
|
128
172
|
get $warn() {
|
|
129
173
|
return this.__options.log ? window.console.warn.bind(window, `[${this.__config.name}]`) : import_utils2.noop;
|
|
130
174
|
}
|
|
175
|
+
/**
|
|
176
|
+
* Small helper to debug information.
|
|
177
|
+
*/
|
|
131
178
|
get __debug() {
|
|
132
179
|
return import_utils2.isDev && this.__options.debug ? window.console.log.bind(window, `[debug] [${this.$id}]`) : import_utils2.noop;
|
|
133
180
|
}
|
|
181
|
+
/**
|
|
182
|
+
* Get manager constructors.
|
|
183
|
+
*/
|
|
134
184
|
get __managers() {
|
|
135
185
|
return {
|
|
136
186
|
ChildrenManager: import_managers.ChildrenManager,
|
|
@@ -140,6 +190,9 @@ var Base = class extends EventTarget {
|
|
|
140
190
|
ServicesManager: import_managers.ServicesManager
|
|
141
191
|
};
|
|
142
192
|
}
|
|
193
|
+
/**
|
|
194
|
+
* Call an instance method and emit corresponding events.
|
|
195
|
+
*/
|
|
143
196
|
__callMethod(method, ...args) {
|
|
144
197
|
if (import_utils2.isDev) {
|
|
145
198
|
this.__debug("callMethod", method, ...args);
|
|
@@ -153,10 +206,21 @@ var Base = class extends EventTarget {
|
|
|
153
206
|
}
|
|
154
207
|
return this[method].call(this, ...args);
|
|
155
208
|
}
|
|
209
|
+
/**
|
|
210
|
+
* Test if the given event has been bound to the instance.
|
|
211
|
+
*
|
|
212
|
+
* @param {string} event The event's name.
|
|
213
|
+
* @returns {boolean} Wether the given event has been bound or not.
|
|
214
|
+
*/
|
|
156
215
|
__hasEvent(event) {
|
|
157
216
|
const eventHandlers = this.__eventHandlers.get(event);
|
|
158
217
|
return eventHandlers && eventHandlers.size > 0;
|
|
159
218
|
}
|
|
219
|
+
/**
|
|
220
|
+
* Class constructor where all the magic takes place.
|
|
221
|
+
*
|
|
222
|
+
* @param {HTMLElement} element The component's root element dd.
|
|
223
|
+
*/
|
|
160
224
|
constructor(element) {
|
|
161
225
|
super();
|
|
162
226
|
if (!element) {
|
|
@@ -184,6 +248,9 @@ var Base = class extends EventTarget {
|
|
|
184
248
|
this.__debug("constructor", this);
|
|
185
249
|
}
|
|
186
250
|
}
|
|
251
|
+
/**
|
|
252
|
+
* Trigger the `mounted` callback.
|
|
253
|
+
*/
|
|
187
254
|
$mount() {
|
|
188
255
|
if (this.$isMounted) {
|
|
189
256
|
return this;
|
|
@@ -192,34 +259,34 @@ var Base = class extends EventTarget {
|
|
|
192
259
|
if (import_utils2.isDev) {
|
|
193
260
|
this.__debug("$mount");
|
|
194
261
|
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
this.$isMounted = true;
|
|
203
|
-
},
|
|
204
|
-
() => this.__callMethod("mounted")
|
|
205
|
-
].forEach(import_utils.addToQueue);
|
|
262
|
+
(0, import_utils.addToQueue)(() => this.$children.registerAll());
|
|
263
|
+
(0, import_utils.addToQueue)(() => this.$refs.registerAll());
|
|
264
|
+
(0, import_utils.addToQueue)(() => this.__events.bindRootElement());
|
|
265
|
+
(0, import_utils.addToQueue)(() => this.$services.enableAll());
|
|
266
|
+
(0, import_utils.addToQueue)(() => this.$children.mountAll());
|
|
267
|
+
(0, import_utils.addToQueue)(() => this.$isMounted = true);
|
|
268
|
+
(0, import_utils.addToQueue)(() => this.__callMethod("mounted"));
|
|
206
269
|
return this;
|
|
207
270
|
}
|
|
271
|
+
/**
|
|
272
|
+
* Update the instance children.
|
|
273
|
+
*/
|
|
208
274
|
$update() {
|
|
209
275
|
if (import_utils2.isDev) {
|
|
210
276
|
this.__debug("$update");
|
|
211
277
|
}
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
() => this.__callMethod("updated")
|
|
220
|
-
].forEach(import_utils.addToQueue);
|
|
278
|
+
(0, import_utils.addToQueue)(() => this.$refs.unregisterAll());
|
|
279
|
+
(0, import_utils.addToQueue)(() => this.$services.disableAll());
|
|
280
|
+
(0, import_utils.addToQueue)(() => this.$children.registerAll());
|
|
281
|
+
(0, import_utils.addToQueue)(() => this.$refs.registerAll());
|
|
282
|
+
(0, import_utils.addToQueue)(() => this.$services.enableAll());
|
|
283
|
+
(0, import_utils.addToQueue)(() => this.$children.updateAll());
|
|
284
|
+
(0, import_utils.addToQueue)(() => this.__callMethod("updated"));
|
|
221
285
|
return this;
|
|
222
286
|
}
|
|
287
|
+
/**
|
|
288
|
+
* Trigger the `destroyed` callback.
|
|
289
|
+
*/
|
|
223
290
|
$destroy() {
|
|
224
291
|
if (!this.$isMounted) {
|
|
225
292
|
return this;
|
|
@@ -227,28 +294,31 @@ var Base = class extends EventTarget {
|
|
|
227
294
|
if (import_utils2.isDev) {
|
|
228
295
|
this.__debug("$destroy");
|
|
229
296
|
}
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
() => this.$services.disableAll(),
|
|
237
|
-
() => this.$children.destroyAll(),
|
|
238
|
-
() => this.__callMethod("destroyed")
|
|
239
|
-
].forEach(import_utils.addToQueue);
|
|
297
|
+
(0, import_utils.addToQueue)(() => this.$isMounted = false);
|
|
298
|
+
(0, import_utils.addToQueue)(() => this.__events.unbindRootElement());
|
|
299
|
+
(0, import_utils.addToQueue)(() => this.$refs.unregisterAll());
|
|
300
|
+
(0, import_utils.addToQueue)(() => this.$services.disableAll());
|
|
301
|
+
(0, import_utils.addToQueue)(() => this.$children.destroyAll());
|
|
302
|
+
(0, import_utils.addToQueue)(() => this.__callMethod("destroyed"));
|
|
240
303
|
return this;
|
|
241
304
|
}
|
|
305
|
+
/**
|
|
306
|
+
* Terminate a child instance when it is not needed anymore.
|
|
307
|
+
*/
|
|
242
308
|
$terminate() {
|
|
243
309
|
if (import_utils2.isDev) {
|
|
244
310
|
this.__debug("$terminate");
|
|
245
311
|
}
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
() => this.$el.__base__.set(this.__ctor, "terminated")
|
|
250
|
-
].forEach(import_utils.addToQueue);
|
|
312
|
+
(0, import_utils.addToQueue)(() => this.$destroy());
|
|
313
|
+
(0, import_utils.addToQueue)(() => this.__callMethod("terminated"));
|
|
314
|
+
(0, import_utils.addToQueue)(() => this.$el.__base__.set(this.__ctor, "terminated"));
|
|
251
315
|
}
|
|
316
|
+
/**
|
|
317
|
+
* Add an emitted event.
|
|
318
|
+
*
|
|
319
|
+
* @param {string} event The event name.
|
|
320
|
+
* @returns {void}
|
|
321
|
+
*/
|
|
252
322
|
__addEmits(event) {
|
|
253
323
|
const ctor = this.__ctor;
|
|
254
324
|
if ((0, import_utils2.isArray)(ctor.config.emits)) {
|
|
@@ -257,14 +327,35 @@ var Base = class extends EventTarget {
|
|
|
257
327
|
ctor.config.emits = [event];
|
|
258
328
|
}
|
|
259
329
|
}
|
|
330
|
+
/**
|
|
331
|
+
* Remove an emitted event.
|
|
332
|
+
*
|
|
333
|
+
* @param {string} event The event name.
|
|
334
|
+
* @returns {void}
|
|
335
|
+
*/
|
|
260
336
|
__removeEmits(event) {
|
|
261
337
|
const ctor = this.__ctor;
|
|
262
338
|
const index = ctor.config.emits.indexOf(event);
|
|
263
339
|
ctor.config.emits.splice(index, 1);
|
|
264
340
|
}
|
|
341
|
+
/**
|
|
342
|
+
* Get the instance constructor.
|
|
343
|
+
*/
|
|
265
344
|
get __ctor() {
|
|
266
345
|
return this.constructor;
|
|
267
346
|
}
|
|
347
|
+
/**
|
|
348
|
+
* Bind a listener function to an event.
|
|
349
|
+
*
|
|
350
|
+
* @param {string} event
|
|
351
|
+
* Name of the event.
|
|
352
|
+
* @param {EventListenerOrEventListenerObject} listener
|
|
353
|
+
* Function to be called.
|
|
354
|
+
* @param {boolean|AddEventListenerOptions} [options]
|
|
355
|
+
* Options for the `removeEventListener` method.
|
|
356
|
+
* @returns {() => void}
|
|
357
|
+
* A function to unbind the listener.
|
|
358
|
+
*/
|
|
268
359
|
$on(event, listener, options) {
|
|
269
360
|
if (import_utils2.isDev) {
|
|
270
361
|
this.__debug("$on", event, listener, options);
|
|
@@ -281,6 +372,17 @@ var Base = class extends EventTarget {
|
|
|
281
372
|
this.$off(event, listener, options);
|
|
282
373
|
};
|
|
283
374
|
}
|
|
375
|
+
/**
|
|
376
|
+
* Unbind a listener function from an event.
|
|
377
|
+
*
|
|
378
|
+
* @param {string} event
|
|
379
|
+
* Name of the event.
|
|
380
|
+
* @param {EventListenerOrEventListenerObject} listener
|
|
381
|
+
* Function to be removed.
|
|
382
|
+
* @param {boolean|EventListenerOptions} [options]
|
|
383
|
+
* Options for the `removeEventListener` method.
|
|
384
|
+
* @returns {void}
|
|
385
|
+
*/
|
|
284
386
|
$off(event, listener, options) {
|
|
285
387
|
if (import_utils2.isDev) {
|
|
286
388
|
this.__debug("$off", event, listener);
|
|
@@ -289,12 +391,22 @@ var Base = class extends EventTarget {
|
|
|
289
391
|
const target = (0, import_utils.getEventTarget)(this, event, this.__config);
|
|
290
392
|
target.removeEventListener(event, listener, options);
|
|
291
393
|
}
|
|
394
|
+
/**
|
|
395
|
+
* Emits an event.
|
|
396
|
+
*
|
|
397
|
+
* @param {string} event Name of the event.
|
|
398
|
+
* @param {any[]} args The arguments to apply to the functions bound to this event.
|
|
399
|
+
* @returns {void}
|
|
400
|
+
*/
|
|
292
401
|
$emit(event, ...args) {
|
|
293
402
|
if (import_utils2.isDev) {
|
|
294
403
|
this.__debug("$emit", event, args);
|
|
295
404
|
}
|
|
296
405
|
this.dispatchEvent(new CustomEvent(event, { detail: args }));
|
|
297
406
|
}
|
|
407
|
+
/**
|
|
408
|
+
* Factory method to generate multiple instance of the class.
|
|
409
|
+
*/
|
|
298
410
|
static $factory(nameOrSelector) {
|
|
299
411
|
if (import_utils2.isDev && !nameOrSelector) {
|
|
300
412
|
throw new Error(
|
|
@@ -304,22 +416,5 @@ var Base = class extends EventTarget {
|
|
|
304
416
|
return (0, import_utils.getComponentElements)(nameOrSelector).map((el) => new this(el).$mount());
|
|
305
417
|
}
|
|
306
418
|
};
|
|
307
|
-
__publicField(Base, "$isBase", true);
|
|
308
|
-
__publicField(Base, "config", {
|
|
309
|
-
name: "Base",
|
|
310
|
-
emits: [
|
|
311
|
-
"before-mounted",
|
|
312
|
-
"mounted",
|
|
313
|
-
"updated",
|
|
314
|
-
"destroyed",
|
|
315
|
-
"terminated",
|
|
316
|
-
"ticked",
|
|
317
|
-
"scrolled",
|
|
318
|
-
"resized",
|
|
319
|
-
"moved",
|
|
320
|
-
"loaded",
|
|
321
|
-
"keyed"
|
|
322
|
-
]
|
|
323
|
-
});
|
|
324
419
|
if (module.exports.default) module.exports = module.exports.default;
|
|
325
420
|
//# sourceMappingURL=Base.cjs.map
|
package/Base/Base.cjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../packages/js-toolkit/Base/Base.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable no-use-before-define */\nimport { getComponentElements, getEventTarget, addToQueue } from './utils.js';\nimport {\n ChildrenManager,\n RefsManager,\n ServicesManager,\n EventsManager,\n OptionsManager,\n} from './managers/index.js';\nimport { noop, isDev, isFunction, isArray } from '../utils/index.js';\n\nlet id = 0;\n\n/**\n * Test if the managers' instances implement the default manager.\n *\n * @throws\n */\nfunction createAndTestManagers(instance: Base): void {\n [\n {\n prop: '__options',\n constructorName: 'OptionsManager',\n constructor: OptionsManager,\n },\n {\n prop: '__services',\n constructorName: 'ServicesManager',\n constructor: ServicesManager,\n },\n {\n prop: '__events',\n constructorName: 'EventsManager',\n constructor: EventsManager,\n },\n {\n prop: '__refs',\n constructorName: 'RefsManager',\n constructor: RefsManager,\n },\n {\n prop: '__children',\n constructorName: 'ChildrenManager',\n constructor: ChildrenManager,\n },\n ].forEach(({ prop, constructorName, constructor }) => {\n instance[prop] = new instance.__managers[constructorName](instance);\n if (isDev && !(instance[prop] instanceof constructor)) {\n throw new Error(\n `The \\`$managers.${constructorName}\\` must extend the \\`${constructorName}\\` class.`,\n );\n }\n });\n}\n\nexport type BaseEl = HTMLElement & { __base__?: WeakMap<BaseConstructor, Base | 'terminated'> };\nexport type BaseConstructor<T extends Base = Base> = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n new (...args: any[]): T;\n prototype: Base;\n} & Pick<typeof Base, keyof typeof Base>;\nexport type BaseAsyncConstructor<T extends Base = Base> = (\n instance: Base,\n) => Promise<BaseConstructor<T> | { default: BaseConstructor<T> }>;\nexport type BaseOptions = { [name: string]: unknown };\nexport type BaseRefs = { [name: string]: HTMLElement | HTMLElement[] };\nexport type BaseChildren = { [nameOrSelector: string]: Base[] | Promise<Base>[] };\nexport type BaseConfigComponents = {\n [nameOrSelector: string]: BaseConstructor | BaseAsyncConstructor;\n};\n\nexport type BaseConfig = {\n name: string;\n debug?: boolean;\n log?: boolean;\n refs?: string[];\n emits?: string[];\n components?: BaseConfigComponents;\n options?: import('./managers/OptionsManager').OptionsSchema;\n};\n\nexport type BaseProps = {\n $el?: HTMLElement;\n $options?: BaseOptions;\n $refs?: BaseRefs;\n $children?: BaseChildren;\n $parent?: Base;\n};\n\nexport type Managers = {\n ChildrenManager: typeof ChildrenManager;\n EventsManager: typeof EventsManager;\n OptionsManager: typeof OptionsManager;\n RefsManager: typeof RefsManager;\n ServicesManager: typeof ServicesManager;\n};\n\n/**\n * Base class.\n */\nexport class Base<T extends BaseProps = BaseProps> extends EventTarget {\n /**\n * This is a Base instance.\n */\n static readonly $isBase = true as const;\n\n /**\n * The instance parent.\n */\n $parent: T['$parent'] & Base = null;\n\n /**\n * The instance id.\n */\n $id: string;\n\n /**\n * The root element.\n */\n $el: T['$el'] & BaseEl;\n\n /**\n * The state of the component.\n */\n $isMounted = false;\n\n /**\n * Store the event handlers.\n */\n __eventHandlers: Map<string, Set<EventListenerOrEventListenerObject>> = new Map();\n\n /**\n * Get the root instance of the app.\n */\n get $root(): Base {\n if (!this.$parent) {\n return this;\n }\n\n let parent = this.$parent;\n let root = this.$parent;\n\n while (parent) {\n if (!parent.$parent) {\n root = parent;\n }\n\n parent = parent.$parent;\n }\n\n return root;\n }\n\n /**\n * Merge configuration with the parents' configurations.\n */\n get __config(): BaseConfig {\n let proto = Object.getPrototypeOf(this);\n let { config } = proto.constructor;\n\n while (proto.constructor.config && proto.constructor.$isBase) {\n config = { ...proto.constructor.config, ...config };\n\n if (proto.constructor.config.options) {\n config.options = { ...proto.constructor.config.options, ...config.options };\n }\n\n if (proto.constructor.config.emits && config.emits) {\n config.emits = [...proto.constructor.config.emits, ...config.emits];\n }\n\n proto = Object.getPrototypeOf(proto);\n }\n\n config.options = config.options ?? {};\n config.refs = config.refs ?? [];\n config.components = config.components ?? {};\n\n return config;\n }\n\n static config: BaseConfig = {\n name: 'Base',\n emits: [\n // hook events\n 'before-mounted',\n 'mounted',\n 'updated',\n 'destroyed',\n 'terminated',\n // default services' events\n 'ticked',\n 'scrolled',\n 'resized',\n 'moved',\n 'loaded',\n 'keyed',\n ],\n };\n\n __services: ServicesManager;\n\n get $services(): ServicesManager {\n return this.__services;\n }\n\n __refs: RefsManager & T['$refs'] & BaseRefs;\n\n get $refs(): RefsManager & T['$refs'] & BaseRefs {\n return this.__refs;\n }\n\n __options: OptionsManager & T['$options'] & BaseOptions;\n\n get $options(): OptionsManager & T['$options'] & BaseOptions {\n return this.__options;\n }\n\n __children: ChildrenManager & T['$children'] & BaseChildren;\n\n get $children(): ChildrenManager & T['$children'] & BaseChildren {\n return this.__children;\n }\n\n __events: EventsManager;\n\n /**\n * Small helper to log stuff.\n */\n get $log(): (...args: unknown[]) => void {\n return this.__options.log ? window.console.log.bind(window, `[${this.__config.name}]`) : noop;\n }\n\n /**\n * Small helper to make warning easier.\n */\n get $warn(): (...args: unknown[]) => void {\n return this.__options.log ? window.console.warn.bind(window, `[${this.__config.name}]`) : noop;\n }\n\n /**\n * Small helper to debug information.\n */\n get __debug(): (...args: unknown[]) => void {\n return isDev && this.__options.debug\n ? window.console.log.bind(window, `[debug] [${this.$id}]`)\n : noop;\n }\n\n /**\n * Get manager constructors.\n */\n get __managers(): Managers {\n return {\n ChildrenManager,\n EventsManager,\n OptionsManager,\n RefsManager,\n ServicesManager,\n };\n }\n\n /**\n * Call an instance method and emit corresponding events.\n */\n __callMethod(method: string, ...args: unknown[]): unknown {\n if (isDev) {\n this.__debug('callMethod', method, ...args);\n }\n\n this.$emit(method, ...args);\n\n // We always emit an event, but we do not call the method if it does not exist\n if (!isFunction(this[method])) {\n return null;\n }\n\n if (isDev) {\n this.__debug(method, this, ...args);\n }\n\n return this[method].call(this, ...args);\n }\n\n /**\n * Test if the given event has been bound to the instance.\n *\n * @param {string} event The event's name.\n * @returns {boolean} Wether the given event has been bound or not.\n */\n __hasEvent(event: string): boolean {\n const eventHandlers = this.__eventHandlers.get(event);\n return eventHandlers && eventHandlers.size > 0;\n }\n\n /**\n * Class constructor where all the magic takes place.\n *\n * @param {HTMLElement} element The component's root element dd.\n */\n constructor(element: HTMLElement) {\n super();\n\n if (!element) {\n if (isDev) {\n throw new Error('The root element must be defined.');\n }\n return;\n }\n\n const { __config } = this;\n\n if (__config.name === 'Base') {\n if (isDev) {\n throw new Error('The `config.name` property is required.');\n }\n return;\n }\n\n this.$id = `${__config.name}-${id}`;\n id += 1;\n\n this.$el = element;\n\n if (!this.$el.__base__) {\n this.$el.__base__ = new WeakMap();\n }\n\n this.$el.__base__.set(this.__ctor, this);\n\n createAndTestManagers(this);\n\n if (isDev) {\n this.__debug('constructor', this);\n }\n }\n\n /**\n * Trigger the `mounted` callback.\n */\n $mount(): this {\n if (this.$isMounted) {\n return this;\n }\n\n this.$emit('before-mounted');\n\n if (isDev) {\n this.__debug('$mount');\n }\n\n [\n () => this.$children.registerAll(),\n () => this.$refs.registerAll(),\n () => this.__events.bindRootElement(),\n () => this.$services.enableAll(),\n () => this.$children.mountAll(),\n // eslint-disable-next-line prettier/prettier\n () => {\n this.$isMounted = true;\n },\n () => this.__callMethod('mounted'),\n ].forEach(addToQueue);\n\n return this;\n }\n\n /**\n * Update the instance children.\n */\n $update(): this {\n if (isDev) {\n this.__debug('$update');\n }\n\n [\n // Undo\n () => this.$refs.unregisterAll(),\n () => this.$services.disableAll(),\n // Redo\n () => this.$children.registerAll(),\n () => this.$refs.registerAll(),\n () => this.$services.enableAll(),\n // Update\n () => this.$children.updateAll(),\n () => this.__callMethod('updated'),\n ].forEach(addToQueue);\n\n return this;\n }\n\n /**\n * Trigger the `destroyed` callback.\n */\n $destroy(): this {\n if (!this.$isMounted) {\n return this;\n }\n\n if (isDev) {\n this.__debug('$destroy');\n }\n\n [\n // eslint-disable-next-line prettier/prettier\n () => {\n this.$isMounted = false;\n },\n () => this.__events.unbindRootElement(),\n () => this.$refs.unregisterAll(),\n () => this.$services.disableAll(),\n () => this.$children.destroyAll(),\n () => this.__callMethod('destroyed'),\n ].forEach(addToQueue);\n\n return this;\n }\n\n /**\n * Terminate a child instance when it is not needed anymore.\n */\n $terminate(): void {\n if (isDev) {\n this.__debug('$terminate');\n }\n\n [\n // First, destroy the component.\n () => this.$destroy(),\n // Execute the `terminated` hook if it exists\n () => this.__callMethod('terminated'),\n // Delete instance\n () => this.$el.__base__.set(this.__ctor, 'terminated'),\n ].forEach(addToQueue);\n }\n\n /**\n * Add an emitted event.\n *\n * @param {string} event The event name.\n * @returns {void}\n */\n __addEmits(event: string): void {\n const ctor = this.__ctor;\n if (isArray(ctor.config.emits)) {\n ctor.config.emits.push(event);\n } else {\n ctor.config.emits = [event];\n }\n }\n\n /**\n * Remove an emitted event.\n *\n * @param {string} event The event name.\n * @returns {void}\n */\n __removeEmits(event: string): void {\n const ctor = this.__ctor;\n const index = ctor.config.emits.indexOf(event);\n ctor.config.emits.splice(index, 1);\n }\n\n /**\n * Get the instance constructor.\n */\n get __ctor(): BaseConstructor {\n return this.constructor as BaseConstructor;\n }\n\n /**\n * Bind a listener function to an event.\n *\n * @param {string} event\n * Name of the event.\n * @param {EventListenerOrEventListenerObject} listener\n * Function to be called.\n * @param {boolean|AddEventListenerOptions} [options]\n * Options for the `removeEventListener` method.\n * @returns {() => void}\n * A function to unbind the listener.\n */\n $on(\n event: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): () => void {\n if (isDev) {\n this.__debug('$on', event, listener, options);\n }\n\n let set = this.__eventHandlers.get(event);\n\n if (!set) {\n set = new Set();\n this.__eventHandlers.set(event, set);\n }\n\n set.add(listener);\n\n const target = getEventTarget(this, event, this.__config);\n target.addEventListener(event, listener, options);\n\n return () => {\n this.$off(event, listener, options);\n };\n }\n\n /**\n * Unbind a listener function from an event.\n *\n * @param {string} event\n * Name of the event.\n * @param {EventListenerOrEventListenerObject} listener\n * Function to be removed.\n * @param {boolean|EventListenerOptions} [options]\n * Options for the `removeEventListener` method.\n * @returns {void}\n */\n $off(\n event: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ) {\n if (isDev) {\n this.__debug('$off', event, listener);\n }\n\n this.__eventHandlers.get(event).delete(listener);\n\n const target = getEventTarget(this, event, this.__config);\n target.removeEventListener(event, listener, options);\n }\n\n /**\n * Emits an event.\n *\n * @param {string} event Name of the event.\n * @param {any[]} args The arguments to apply to the functions bound to this event.\n * @returns {void}\n */\n $emit(event: string, ...args: unknown[]) {\n if (isDev) {\n this.__debug('$emit', event, args);\n }\n\n this.dispatchEvent(new CustomEvent(event, { detail: args }));\n }\n\n /**\n * Factory method to generate multiple instance of the class.\n */\n static $factory(nameOrSelector: string): Base[] {\n if (isDev && !nameOrSelector) {\n throw new Error(\n 'The $factory method requires a component\u2019s name or selector to be specified.',\n );\n }\n\n return getComponentElements(nameOrSelector).map((el) => new this(el).$mount());\n }\n}\n"],
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["/* eslint-disable no-use-before-define */\nimport { getComponentElements, getEventTarget, addToQueue } from './utils.js';\nimport {\n ChildrenManager,\n RefsManager,\n ServicesManager,\n EventsManager,\n OptionsManager,\n} from './managers/index.js';\nimport { noop, isDev, isFunction, isArray } from '../utils/index.js';\n\nlet id = 0;\n\n/**\n * Test if the managers' instances implement the default manager.\n *\n * @throws\n */\nfunction createAndTestManagers(instance: Base): void {\n for (const { prop, constructorName, constructor } of [\n {\n prop: '__options',\n constructorName: 'OptionsManager',\n constructor: OptionsManager,\n },\n {\n prop: '__services',\n constructorName: 'ServicesManager',\n constructor: ServicesManager,\n },\n {\n prop: '__events',\n constructorName: 'EventsManager',\n constructor: EventsManager,\n },\n {\n prop: '__refs',\n constructorName: 'RefsManager',\n constructor: RefsManager,\n },\n {\n prop: '__children',\n constructorName: 'ChildrenManager',\n constructor: ChildrenManager,\n },\n ]) {\n instance[prop] = new instance.__managers[constructorName](instance);\n if (isDev && !(instance[prop] instanceof constructor)) {\n throw new Error(\n `The \\`$managers.${constructorName}\\` must extend the \\`${constructorName}\\` class.`,\n );\n }\n }\n}\n\nexport type BaseEl = HTMLElement & { __base__?: WeakMap<BaseConstructor, Base | 'terminated'> };\nexport type BaseConstructor<T extends Base = Base> = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n new (...args: any[]): T;\n prototype: Base;\n} & Pick<typeof Base, keyof typeof Base>;\nexport type BaseAsyncConstructor<T extends Base = Base> = (\n instance: Base,\n) => Promise<BaseConstructor<T> | { default: BaseConstructor<T> }>;\nexport type BaseOptions = { [name: string]: unknown };\nexport type BaseRefs = { [name: string]: HTMLElement | HTMLElement[] };\nexport type BaseChildren = { [nameOrSelector: string]: Base[] | Promise<Base>[] };\nexport type BaseConfigComponents = {\n [nameOrSelector: string]: BaseConstructor | BaseAsyncConstructor;\n};\n\nexport type BaseConfig = {\n name: string;\n debug?: boolean;\n log?: boolean;\n refs?: string[];\n emits?: string[];\n components?: BaseConfigComponents;\n options?: import('./managers/OptionsManager').OptionsSchema;\n};\n\nexport type BaseProps = {\n $el?: HTMLElement;\n $options?: BaseOptions;\n $refs?: BaseRefs;\n $children?: BaseChildren;\n $parent?: Base;\n};\n\nexport type Managers = {\n ChildrenManager: typeof ChildrenManager;\n EventsManager: typeof EventsManager;\n OptionsManager: typeof OptionsManager;\n RefsManager: typeof RefsManager;\n ServicesManager: typeof ServicesManager;\n};\n\n/**\n * Base class.\n */\nexport class Base<T extends BaseProps = BaseProps> extends EventTarget {\n /**\n * This is a Base instance.\n */\n static readonly $isBase = true as const;\n\n /**\n * The instance parent.\n */\n $parent: T['$parent'] & Base = null;\n\n /**\n * The instance id.\n */\n $id: string;\n\n /**\n * The root element.\n */\n $el: T['$el'] & BaseEl;\n\n /**\n * The state of the component.\n */\n $isMounted = false;\n\n /**\n * Store the event handlers.\n */\n __eventHandlers: Map<string, Set<EventListenerOrEventListenerObject>> = new Map();\n\n /**\n * Get the root instance of the app.\n */\n get $root(): Base {\n if (!this.$parent) {\n return this;\n }\n\n let parent = this.$parent;\n let root = this.$parent;\n\n while (parent) {\n if (!parent.$parent) {\n root = parent;\n }\n\n parent = parent.$parent;\n }\n\n return root;\n }\n\n /**\n * Merge configuration with the parents' configurations.\n */\n get __config(): BaseConfig {\n let proto = Object.getPrototypeOf(this);\n let { config } = proto.constructor;\n\n while (proto.constructor.config && proto.constructor.$isBase) {\n config = { ...proto.constructor.config, ...config };\n\n if (proto.constructor.config.options) {\n config.options = { ...proto.constructor.config.options, ...config.options };\n }\n\n if (proto.constructor.config.emits && config.emits) {\n config.emits = [...proto.constructor.config.emits, ...config.emits];\n }\n\n proto = Object.getPrototypeOf(proto);\n }\n\n config.options = config.options ?? {};\n config.refs = config.refs ?? [];\n config.components = config.components ?? {};\n\n return config;\n }\n\n static config: BaseConfig = {\n name: 'Base',\n emits: [\n // hook events\n 'before-mounted',\n 'mounted',\n 'updated',\n 'destroyed',\n 'terminated',\n // default services' events\n 'ticked',\n 'scrolled',\n 'resized',\n 'moved',\n 'loaded',\n 'keyed',\n ],\n };\n\n __services: ServicesManager;\n\n get $services(): ServicesManager {\n return this.__services;\n }\n\n __refs: RefsManager & T['$refs'] & BaseRefs;\n\n get $refs(): RefsManager & T['$refs'] & BaseRefs {\n return this.__refs;\n }\n\n __options: OptionsManager & T['$options'] & BaseOptions;\n\n get $options(): OptionsManager & T['$options'] & BaseOptions {\n return this.__options;\n }\n\n __children: ChildrenManager & T['$children'] & BaseChildren;\n\n get $children(): ChildrenManager & T['$children'] & BaseChildren {\n return this.__children;\n }\n\n __events: EventsManager;\n\n /**\n * Small helper to log stuff.\n */\n get $log(): (...args: unknown[]) => void {\n return this.__options.log ? window.console.log.bind(window, `[${this.__config.name}]`) : noop;\n }\n\n /**\n * Small helper to make warning easier.\n */\n get $warn(): (...args: unknown[]) => void {\n return this.__options.log ? window.console.warn.bind(window, `[${this.__config.name}]`) : noop;\n }\n\n /**\n * Small helper to debug information.\n */\n get __debug(): (...args: unknown[]) => void {\n return isDev && this.__options.debug\n ? window.console.log.bind(window, `[debug] [${this.$id}]`)\n : noop;\n }\n\n /**\n * Get manager constructors.\n */\n get __managers(): Managers {\n return {\n ChildrenManager,\n EventsManager,\n OptionsManager,\n RefsManager,\n ServicesManager,\n };\n }\n\n /**\n * Call an instance method and emit corresponding events.\n */\n __callMethod(method: string, ...args: unknown[]): unknown {\n if (isDev) {\n this.__debug('callMethod', method, ...args);\n }\n\n this.$emit(method, ...args);\n\n // We always emit an event, but we do not call the method if it does not exist\n if (!isFunction(this[method])) {\n return null;\n }\n\n if (isDev) {\n this.__debug(method, this, ...args);\n }\n\n return this[method].call(this, ...args);\n }\n\n /**\n * Test if the given event has been bound to the instance.\n *\n * @param {string} event The event's name.\n * @returns {boolean} Wether the given event has been bound or not.\n */\n __hasEvent(event: string): boolean {\n const eventHandlers = this.__eventHandlers.get(event);\n return eventHandlers && eventHandlers.size > 0;\n }\n\n /**\n * Class constructor where all the magic takes place.\n *\n * @param {HTMLElement} element The component's root element dd.\n */\n constructor(element: HTMLElement) {\n super();\n\n if (!element) {\n if (isDev) {\n throw new Error('The root element must be defined.');\n }\n return;\n }\n\n const { __config } = this;\n\n if (__config.name === 'Base') {\n if (isDev) {\n throw new Error('The `config.name` property is required.');\n }\n return;\n }\n\n this.$id = `${__config.name}-${id}`;\n id += 1;\n\n this.$el = element;\n\n if (!this.$el.__base__) {\n this.$el.__base__ = new WeakMap();\n }\n\n this.$el.__base__.set(this.__ctor, this);\n\n createAndTestManagers(this);\n\n if (isDev) {\n this.__debug('constructor', this);\n }\n }\n\n /**\n * Trigger the `mounted` callback.\n */\n $mount(): this {\n if (this.$isMounted) {\n return this;\n }\n\n this.$emit('before-mounted');\n\n if (isDev) {\n this.__debug('$mount');\n }\n\n addToQueue(() => this.$children.registerAll());\n addToQueue(() => this.$refs.registerAll());\n addToQueue(() => this.__events.bindRootElement());\n addToQueue(() => this.$services.enableAll());\n addToQueue(() => this.$children.mountAll());\n // eslint-disable-next-line no-return-assign\n addToQueue(() => (this.$isMounted = true));\n addToQueue(() => this.__callMethod('mounted'));\n\n return this;\n }\n\n /**\n * Update the instance children.\n */\n $update(): this {\n if (isDev) {\n this.__debug('$update');\n }\n\n // Undo\n addToQueue(() => this.$refs.unregisterAll());\n addToQueue(() => this.$services.disableAll());\n // Redo\n addToQueue(() => this.$children.registerAll());\n addToQueue(() => this.$refs.registerAll());\n addToQueue(() => this.$services.enableAll());\n // Update\n addToQueue(() => this.$children.updateAll());\n addToQueue(() => this.__callMethod('updated'));\n\n return this;\n }\n\n /**\n * Trigger the `destroyed` callback.\n */\n $destroy(): this {\n if (!this.$isMounted) {\n return this;\n }\n\n if (isDev) {\n this.__debug('$destroy');\n }\n\n // eslint-disable-next-line no-return-assign\n addToQueue(() => (this.$isMounted = false));\n addToQueue(() => this.__events.unbindRootElement());\n addToQueue(() => this.$refs.unregisterAll());\n addToQueue(() => this.$services.disableAll());\n addToQueue(() => this.$children.destroyAll());\n addToQueue(() => this.__callMethod('destroyed'));\n\n return this;\n }\n\n /**\n * Terminate a child instance when it is not needed anymore.\n */\n $terminate(): void {\n if (isDev) {\n this.__debug('$terminate');\n }\n\n // First, destroy the component.\n addToQueue(() => this.$destroy());\n // Execute the `terminated` hook if it exists\n addToQueue(() => this.__callMethod('terminated'));\n // Delete instance\n addToQueue(() => this.$el.__base__.set(this.__ctor, 'terminated'));\n }\n\n /**\n * Add an emitted event.\n *\n * @param {string} event The event name.\n * @returns {void}\n */\n __addEmits(event: string): void {\n const ctor = this.__ctor;\n if (isArray(ctor.config.emits)) {\n ctor.config.emits.push(event);\n } else {\n ctor.config.emits = [event];\n }\n }\n\n /**\n * Remove an emitted event.\n *\n * @param {string} event The event name.\n * @returns {void}\n */\n __removeEmits(event: string): void {\n const ctor = this.__ctor;\n const index = ctor.config.emits.indexOf(event);\n ctor.config.emits.splice(index, 1);\n }\n\n /**\n * Get the instance constructor.\n */\n get __ctor(): BaseConstructor {\n return this.constructor as BaseConstructor;\n }\n\n /**\n * Bind a listener function to an event.\n *\n * @param {string} event\n * Name of the event.\n * @param {EventListenerOrEventListenerObject} listener\n * Function to be called.\n * @param {boolean|AddEventListenerOptions} [options]\n * Options for the `removeEventListener` method.\n * @returns {() => void}\n * A function to unbind the listener.\n */\n $on(\n event: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): () => void {\n if (isDev) {\n this.__debug('$on', event, listener, options);\n }\n\n let set = this.__eventHandlers.get(event);\n\n if (!set) {\n set = new Set();\n this.__eventHandlers.set(event, set);\n }\n\n set.add(listener);\n\n const target = getEventTarget(this, event, this.__config);\n target.addEventListener(event, listener, options);\n\n return () => {\n this.$off(event, listener, options);\n };\n }\n\n /**\n * Unbind a listener function from an event.\n *\n * @param {string} event\n * Name of the event.\n * @param {EventListenerOrEventListenerObject} listener\n * Function to be removed.\n * @param {boolean|EventListenerOptions} [options]\n * Options for the `removeEventListener` method.\n * @returns {void}\n */\n $off(\n event: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ) {\n if (isDev) {\n this.__debug('$off', event, listener);\n }\n\n this.__eventHandlers.get(event).delete(listener);\n\n const target = getEventTarget(this, event, this.__config);\n target.removeEventListener(event, listener, options);\n }\n\n /**\n * Emits an event.\n *\n * @param {string} event Name of the event.\n * @param {any[]} args The arguments to apply to the functions bound to this event.\n * @returns {void}\n */\n $emit(event: string, ...args: unknown[]) {\n if (isDev) {\n this.__debug('$emit', event, args);\n }\n\n this.dispatchEvent(new CustomEvent(event, { detail: args }));\n }\n\n /**\n * Factory method to generate multiple instance of the class.\n */\n static $factory(nameOrSelector: string): Base[] {\n if (isDev && !nameOrSelector) {\n throw new Error(\n 'The $factory method requires a component\u2019s name or selector to be specified.',\n );\n }\n\n return getComponentElements(nameOrSelector).map((el) => new this(el).$mount());\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["import_utils"]
|
|
7
7
|
}
|