@studiometa/js-toolkit 2.0.0-beta.10 → 2.0.0-beta.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Base/index.cjs +295 -0
- package/Base/index.js +88 -174
- package/Base/managers/ChildrenManager.cjs +125 -0
- package/Base/managers/ChildrenManager.js +29 -55
- package/Base/managers/EventsManager.cjs +185 -0
- package/Base/managers/EventsManager.js +84 -130
- package/Base/managers/OptionsManager.cjs +176 -0
- package/Base/managers/OptionsManager.js +46 -88
- package/Base/managers/RefsManager.cjs +99 -0
- package/Base/managers/RefsManager.js +22 -38
- package/Base/managers/ServicesManager.cjs +133 -0
- package/Base/managers/ServicesManager.js +31 -65
- package/Base/utils.cjs +46 -0
- package/Base/utils.js +12 -11
- package/decorators/index.cjs +50 -0
- package/decorators/index.js +18 -8
- package/decorators/withBreakpointManager.cjs +92 -0
- package/decorators/withBreakpointManager.js +18 -39
- package/decorators/withBreakpointObserver.cjs +117 -0
- package/decorators/withBreakpointObserver.js +40 -88
- package/decorators/withDrag.cjs +55 -0
- package/decorators/withDrag.js +18 -26
- package/decorators/withExtraConfig.cjs +45 -0
- package/decorators/withExtraConfig.js +11 -12
- package/decorators/withIntersectionObserver.cjs +62 -0
- package/decorators/withIntersectionObserver.js +23 -32
- package/decorators/withMountWhenInView.cjs +69 -0
- package/decorators/withMountWhenInView.js +26 -53
- package/decorators/withScrolledInView.cjs +113 -0
- package/decorators/withScrolledInView.js +50 -63
- package/decorators/withVue2.cjs +61 -0
- package/decorators/withVue2.js +21 -32
- package/helpers/createApp.cjs +57 -0
- package/helpers/createApp.js +12 -12
- package/helpers/importOnInteraction.cjs +57 -0
- package/helpers/importOnInteraction.js +17 -18
- package/helpers/importWhenIdle.cjs +53 -0
- package/helpers/importWhenIdle.js +13 -17
- package/helpers/importWhenVisible.cjs +55 -0
- package/helpers/importWhenVisible.js +16 -18
- package/helpers/index.cjs +42 -0
- package/helpers/index.js +10 -4
- package/helpers/utils.cjs +40 -0
- package/helpers/utils.js +7 -6
- package/index.cjs +39 -0
- package/index.js +7 -4
- package/package.json +14 -3
- package/services/Service.cjs +76 -0
- package/services/Service.js +13 -32
- package/services/drag.cjs +195 -0
- package/services/drag.js +60 -90
- package/services/index.cjs +48 -0
- package/services/index.js +16 -7
- package/services/key.cjs +102 -0
- package/services/key.js +34 -52
- package/services/load.cjs +71 -0
- package/services/load.js +13 -24
- package/services/pointer.cjs +160 -0
- package/services/pointer.js +60 -87
- package/services/raf.cjs +82 -0
- package/services/raf.js +16 -33
- package/services/resize.cjs +107 -0
- package/services/resize.js +31 -49
- package/services/scroll.cjs +130 -0
- package/services/scroll.js +44 -62
- package/utils/collide/boundingRectToCircle.cjs +39 -0
- package/utils/collide/boundingRectToCircle.d.ts +1 -1
- package/utils/collide/boundingRectToCircle.js +7 -10
- package/utils/collide/collideCircleCircle.cjs +39 -0
- package/utils/collide/collideCircleCircle.js +8 -7
- package/utils/collide/collideCircleRect.cjs +51 -0
- package/utils/collide/collideCircleRect.js +10 -12
- package/utils/collide/collidePointCircle.cjs +36 -0
- package/utils/collide/collidePointCircle.js +8 -5
- package/utils/collide/collidePointRect.cjs +33 -0
- package/utils/collide/collidePointRect.js +5 -2
- package/utils/collide/collideRectRect.cjs +33 -0
- package/utils/collide/collideRectRect.js +5 -2
- package/utils/collide/index.cjs +46 -0
- package/utils/collide/index.js +14 -6
- package/utils/css/classes.cjs +49 -0
- package/utils/css/classes.js +13 -12
- package/utils/css/index.cjs +42 -0
- package/utils/css/index.js +10 -6
- package/utils/css/matrix.cjs +34 -0
- package/utils/css/matrix.js +6 -5
- package/utils/css/styles.cjs +52 -0
- package/utils/css/styles.js +13 -12
- package/utils/css/transition.cjs +122 -0
- package/utils/css/transition.js +62 -117
- package/utils/debounce.cjs +39 -0
- package/utils/debounce.js +7 -9
- package/utils/focusTrap.cjs +89 -0
- package/utils/focusTrap.js +30 -21
- package/utils/history.cjs +96 -0
- package/utils/history.js +28 -57
- package/utils/index.cjs +58 -0
- package/utils/index.d.ts +1 -0
- package/utils/index.js +30 -11
- package/utils/keyCodes.cjs +40 -0
- package/utils/keyCodes.js +5 -2
- package/utils/math/clamp.cjs +33 -0
- package/utils/math/clamp.js +5 -2
- package/utils/math/clamp01.cjs +39 -0
- package/utils/math/clamp01.js +6 -3
- package/utils/math/damp.cjs +33 -0
- package/utils/math/damp.js +5 -4
- package/utils/math/ease.cjs +93 -0
- package/utils/math/ease.js +50 -25
- package/utils/math/index.cjs +49 -0
- package/utils/math/index.js +17 -8
- package/utils/math/inertiaFinalValue.cjs +42 -0
- package/utils/math/inertiaFinalValue.js +8 -10
- package/utils/math/lerp.cjs +33 -0
- package/utils/math/lerp.js +5 -2
- package/utils/math/map.cjs +33 -0
- package/utils/math/map.js +5 -2
- package/utils/math/round.cjs +33 -0
- package/utils/math/round.js +5 -3
- package/utils/memoize.cjs +48 -0
- package/utils/memoize.js +10 -19
- package/utils/nextFrame.cjs +45 -0
- package/utils/nextFrame.js +14 -9
- package/utils/object/autoBind.cjs +56 -0
- package/utils/object/autoBind.js +12 -22
- package/utils/object/getAllProperties.cjs +42 -0
- package/utils/object/getAllProperties.js +10 -13
- package/utils/object/index.cjs +40 -0
- package/utils/object/index.js +8 -3
- package/utils/object/isObject.cjs +33 -0
- package/utils/object/isObject.js +6 -3
- package/utils/scrollTo.cjs +87 -0
- package/utils/scrollTo.js +20 -40
- package/utils/string/index.cjs +54 -0
- package/utils/string/index.js +22 -10
- package/utils/string/withLeadingCharacters.cjs +39 -0
- package/utils/string/withLeadingCharacters.js +7 -4
- package/utils/string/withLeadingSlash.cjs +39 -0
- package/utils/string/withLeadingSlash.js +7 -4
- package/utils/string/withTrailingCharacters.cjs +39 -0
- package/utils/string/withTrailingCharacters.js +7 -4
- package/utils/string/withTrailingSlash.cjs +39 -0
- package/utils/string/withTrailingSlash.js +7 -4
- package/utils/string/withoutLeadingCharacters.cjs +33 -0
- package/utils/string/withoutLeadingCharacters.js +6 -3
- package/utils/string/withoutLeadingCharactersRecursive.cjs +44 -0
- package/utils/string/withoutLeadingCharactersRecursive.js +8 -7
- package/utils/string/withoutLeadingSlash.cjs +39 -0
- package/utils/string/withoutLeadingSlash.js +7 -4
- package/utils/string/withoutTrailingCharacters.cjs +33 -0
- package/utils/string/withoutTrailingCharacters.js +6 -3
- package/utils/string/withoutTrailingCharactersRecursive.cjs +44 -0
- package/utils/string/withoutTrailingCharactersRecursive.js +8 -7
- package/utils/string/withoutTrailingSlash.cjs +39 -0
- package/utils/string/withoutTrailingSlash.js +7 -4
- package/utils/throttle.cjs +41 -0
- package/utils/throttle.js +9 -9
- package/index.modern.js +0 -1
- package/index.umd.js +0 -1
|
@@ -0,0 +1,185 @@
|
|
|
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 __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __reExport = (target, module2, copyDefault, desc) => {
|
|
13
|
+
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(module2))
|
|
15
|
+
if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
|
|
16
|
+
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return target;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (module2, isNodeMode) => {
|
|
21
|
+
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
|
|
22
|
+
};
|
|
23
|
+
var __toCommonJS = /* @__PURE__ */ ((cache) => {
|
|
24
|
+
return (module2, temp) => {
|
|
25
|
+
return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
|
|
26
|
+
};
|
|
27
|
+
})(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
|
|
28
|
+
|
|
29
|
+
// packages/js-toolkit/Base/managers/EventsManager.js
|
|
30
|
+
var EventsManager_exports = {};
|
|
31
|
+
__export(EventsManager_exports, {
|
|
32
|
+
default: () => EventsManager
|
|
33
|
+
});
|
|
34
|
+
var import_getAllProperties = __toESM(require("../../utils/object/getAllProperties.cjs"), 1);
|
|
35
|
+
var import_RefsManager = __toESM(require("./RefsManager.cjs"), 1);
|
|
36
|
+
var EventsManager = class {
|
|
37
|
+
__rootElement;
|
|
38
|
+
__base;
|
|
39
|
+
__methodsCache = /* @__PURE__ */ new Map();
|
|
40
|
+
__rootElementHandler = {
|
|
41
|
+
handleEvent: (event) => {
|
|
42
|
+
const normalizedEventName = EventsManager.normalizeName(event.type);
|
|
43
|
+
const method = `on${normalizedEventName}`;
|
|
44
|
+
this.__base[method](event);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
__refsHandler = {
|
|
48
|
+
handleEvent: (event) => {
|
|
49
|
+
const ref = event.currentTarget;
|
|
50
|
+
const refName = import_RefsManager.default.normalizeRefName(ref.dataset.ref);
|
|
51
|
+
const normalizedRefName = EventsManager.normalizeName(refName);
|
|
52
|
+
const normalizedEventName = EventsManager.normalizeName(event.type);
|
|
53
|
+
const method = `on${normalizedRefName}${normalizedEventName}`;
|
|
54
|
+
let index = 0;
|
|
55
|
+
if (Array.isArray(this.__base.$refs[refName])) {
|
|
56
|
+
index = this.__base.$refs[refName].indexOf(ref);
|
|
57
|
+
}
|
|
58
|
+
this.__base[method](event, index);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
__childrenHandler = {
|
|
62
|
+
handleEvent: (event) => {
|
|
63
|
+
const child = event.currentTarget;
|
|
64
|
+
let childName;
|
|
65
|
+
let index = 0;
|
|
66
|
+
const childrenManager = this.__base.$children;
|
|
67
|
+
childrenManager.registeredNames.find((name) => {
|
|
68
|
+
if (childrenManager[name].includes(child)) {
|
|
69
|
+
childName = name;
|
|
70
|
+
index = childrenManager[name].indexOf(child);
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
return false;
|
|
74
|
+
});
|
|
75
|
+
const normalizedRefName = EventsManager.normalizeName(childName);
|
|
76
|
+
const normalizedEventName = EventsManager.normalizeName(event.type);
|
|
77
|
+
const method = `on${normalizedRefName}${normalizedEventName}`;
|
|
78
|
+
const args = Array.isArray(event.detail) ? event.detail : [];
|
|
79
|
+
this.__base[method](...args, index, event);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
constructor(rootElement, base) {
|
|
83
|
+
Object.defineProperties(this, {
|
|
84
|
+
__rootElement: {
|
|
85
|
+
enumerable: false,
|
|
86
|
+
writable: false,
|
|
87
|
+
value: rootElement
|
|
88
|
+
},
|
|
89
|
+
__base: {
|
|
90
|
+
enumerable: false,
|
|
91
|
+
writable: false,
|
|
92
|
+
value: base
|
|
93
|
+
},
|
|
94
|
+
__methodsCache: {
|
|
95
|
+
enumerable: false,
|
|
96
|
+
writable: false,
|
|
97
|
+
value: this.__methodsCache
|
|
98
|
+
},
|
|
99
|
+
__rootElementHandler: {
|
|
100
|
+
enumerable: false,
|
|
101
|
+
writable: false,
|
|
102
|
+
value: this.__rootElementHandler
|
|
103
|
+
},
|
|
104
|
+
__refsHandler: {
|
|
105
|
+
enumerable: false,
|
|
106
|
+
writable: false,
|
|
107
|
+
value: this.__refsHandler
|
|
108
|
+
},
|
|
109
|
+
__childrenHandler: {
|
|
110
|
+
enumerable: false,
|
|
111
|
+
writable: false,
|
|
112
|
+
value: this.__childrenHandler
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
__manageRef(name, elements, mode = "add") {
|
|
117
|
+
const action = `${mode}EventListener`;
|
|
118
|
+
const methods = this.__getEventMethodsByName(name);
|
|
119
|
+
methods.forEach((method) => {
|
|
120
|
+
const event = this.__getEventNameByMethod(method, name);
|
|
121
|
+
elements.forEach((element) => element[action](event, this.__refsHandler));
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
bindRef(name, elements) {
|
|
125
|
+
this.__manageRef(name, elements);
|
|
126
|
+
}
|
|
127
|
+
unbindRef(name, elements) {
|
|
128
|
+
this.__manageRef(name, elements, "remove");
|
|
129
|
+
}
|
|
130
|
+
__manageChild(name, instance, mode = "add") {
|
|
131
|
+
const action = mode === "add" ? "$on" : "$off";
|
|
132
|
+
const methods = this.__getEventMethodsByName(name);
|
|
133
|
+
methods.forEach((method) => {
|
|
134
|
+
const event = this.__getEventNameByMethod(method, name);
|
|
135
|
+
instance[action](event, this.__childrenHandler);
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
bindChild(name, instance) {
|
|
139
|
+
this.__manageChild(name, instance);
|
|
140
|
+
}
|
|
141
|
+
unbindChild(name, instance) {
|
|
142
|
+
this.__manageChild(name, instance, "remove");
|
|
143
|
+
}
|
|
144
|
+
__manageRootElement(mode = "add") {
|
|
145
|
+
const modeMethod = `${mode}EventListener`;
|
|
146
|
+
const methods = this.__getEventMethodsByName();
|
|
147
|
+
const { emits = [] } = this.__base.__config;
|
|
148
|
+
methods.forEach((method) => {
|
|
149
|
+
const event = this.__getEventNameByMethod(method);
|
|
150
|
+
const target = emits.includes(event) ? this.__base : this.__rootElement;
|
|
151
|
+
target[modeMethod](event, this.__rootElementHandler);
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
bindRootElement() {
|
|
155
|
+
this.__manageRootElement();
|
|
156
|
+
}
|
|
157
|
+
unbindRootElement() {
|
|
158
|
+
this.__manageRootElement("remove");
|
|
159
|
+
}
|
|
160
|
+
__getEventNameByMethod(method, name = "") {
|
|
161
|
+
const normalizedName = EventsManager.normalizeName(name);
|
|
162
|
+
const regex = new RegExp(`^on${normalizedName}([A-Z].*)$`);
|
|
163
|
+
const [, event] = method.match(regex);
|
|
164
|
+
return EventsManager.normalizeEventName(event);
|
|
165
|
+
}
|
|
166
|
+
__getEventMethodsByName(name = "") {
|
|
167
|
+
const normalizedName = EventsManager.normalizeName(name);
|
|
168
|
+
const regex = new RegExp(`^on${normalizedName}[A-Z].*$`);
|
|
169
|
+
const key = regex.toString();
|
|
170
|
+
let methods = this.__methodsCache.get(key);
|
|
171
|
+
if (!methods) {
|
|
172
|
+
methods = Array.from((0, import_getAllProperties.default)(this.__base, [], (method) => regex.test(method)).reduce((set, [method]) => set.add(method), /* @__PURE__ */ new Set()));
|
|
173
|
+
this.__methodsCache.set(key, methods);
|
|
174
|
+
}
|
|
175
|
+
return methods;
|
|
176
|
+
}
|
|
177
|
+
static normalizeName(name) {
|
|
178
|
+
return name.replace(/[A-Z]([A-Z].*)/g, (c) => c.toLowerCase()).replace(/[^a-zA-Z\d\s:]/g, " ").replace(/(^\w|\s+\w)/g, (c) => c.trim().toUpperCase()).trim();
|
|
179
|
+
}
|
|
180
|
+
static normalizeEventName(name) {
|
|
181
|
+
return name.replace(/[A-Z]/g, (c) => `-${c.toLowerCase()}`).replace(/^-/, "");
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
module.exports = __toCommonJS(EventsManager_exports);
|
|
185
|
+
if (module.exports.default) module.exports = module.exports.default;
|
|
@@ -1,64 +1,52 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
import getAllProperties from "../../utils/object/getAllProperties.js";
|
|
2
|
+
import RefsManager from "./RefsManager.js";
|
|
3
|
+
class EventsManager {
|
|
4
|
+
__rootElement;
|
|
5
|
+
__base;
|
|
6
|
+
__methodsCache = /* @__PURE__ */ new Map();
|
|
7
|
+
__rootElementHandler = {
|
|
8
|
+
handleEvent: (event) => {
|
|
9
|
+
const normalizedEventName = EventsManager.normalizeName(event.type);
|
|
10
|
+
const method = `on${normalizedEventName}`;
|
|
11
|
+
this.__base[method](event);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
__refsHandler = {
|
|
15
|
+
handleEvent: (event) => {
|
|
16
|
+
const ref = event.currentTarget;
|
|
17
|
+
const refName = RefsManager.normalizeRefName(ref.dataset.ref);
|
|
18
|
+
const normalizedRefName = EventsManager.normalizeName(refName);
|
|
19
|
+
const normalizedEventName = EventsManager.normalizeName(event.type);
|
|
20
|
+
const method = `on${normalizedRefName}${normalizedEventName}`;
|
|
21
|
+
let index = 0;
|
|
22
|
+
if (Array.isArray(this.__base.$refs[refName])) {
|
|
23
|
+
index = this.__base.$refs[refName].indexOf(ref);
|
|
18
24
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
index =
|
|
25
|
+
this.__base[method](event, index);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
__childrenHandler = {
|
|
29
|
+
handleEvent: (event) => {
|
|
30
|
+
const child = event.currentTarget;
|
|
31
|
+
let childName;
|
|
32
|
+
let index = 0;
|
|
33
|
+
const childrenManager = this.__base.$children;
|
|
34
|
+
childrenManager.registeredNames.find((name) => {
|
|
35
|
+
if (childrenManager[name].includes(child)) {
|
|
36
|
+
childName = name;
|
|
37
|
+
index = childrenManager[name].indexOf(child);
|
|
38
|
+
return true;
|
|
32
39
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
var childrenManager = this.__base.$children;
|
|
44
|
-
childrenManager.registeredNames.find(name => {
|
|
45
|
-
if (childrenManager[name].includes(child)) {
|
|
46
|
-
childName = name;
|
|
47
|
-
index = childrenManager[name].indexOf(child);
|
|
48
|
-
return true;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return false;
|
|
52
|
-
});
|
|
53
|
-
var normalizedRefName = EventsManager.normalizeName(childName);
|
|
54
|
-
var normalizedEventName = EventsManager.normalizeName(event.type);
|
|
55
|
-
var method = "on".concat(normalizedRefName).concat(normalizedEventName);
|
|
56
|
-
var args = Array.isArray(event.detail) ? event.detail : [];
|
|
57
|
-
|
|
58
|
-
this.__base[method](...args, index, event);
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
|
|
40
|
+
return false;
|
|
41
|
+
});
|
|
42
|
+
const normalizedRefName = EventsManager.normalizeName(childName);
|
|
43
|
+
const normalizedEventName = EventsManager.normalizeName(event.type);
|
|
44
|
+
const method = `on${normalizedRefName}${normalizedEventName}`;
|
|
45
|
+
const args = Array.isArray(event.detail) ? event.detail : [];
|
|
46
|
+
this.__base[method](...args, index, event);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
constructor(rootElement, base) {
|
|
62
50
|
Object.defineProperties(this, {
|
|
63
51
|
__rootElement: {
|
|
64
52
|
enumerable: false,
|
|
@@ -92,108 +80,74 @@ export default class EventsManager {
|
|
|
92
80
|
}
|
|
93
81
|
});
|
|
94
82
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
methods.forEach(method => {
|
|
103
|
-
var event = this.__getEventNameByMethod(method, name);
|
|
104
|
-
|
|
105
|
-
elements.forEach(element => element[action](event, this.__refsHandler));
|
|
83
|
+
__manageRef(name, elements, mode = "add") {
|
|
84
|
+
const action = `${mode}EventListener`;
|
|
85
|
+
const methods = this.__getEventMethodsByName(name);
|
|
86
|
+
methods.forEach((method) => {
|
|
87
|
+
const event = this.__getEventNameByMethod(method, name);
|
|
88
|
+
elements.forEach((element) => element[action](event, this.__refsHandler));
|
|
106
89
|
});
|
|
107
90
|
}
|
|
108
|
-
|
|
109
91
|
bindRef(name, elements) {
|
|
110
92
|
this.__manageRef(name, elements);
|
|
111
93
|
}
|
|
112
|
-
|
|
113
94
|
unbindRef(name, elements) {
|
|
114
|
-
this.__manageRef(name, elements,
|
|
95
|
+
this.__manageRef(name, elements, "remove");
|
|
115
96
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
var methods = this.__getEventMethodsByName(name);
|
|
122
|
-
|
|
123
|
-
methods.forEach(method => {
|
|
124
|
-
var event = this.__getEventNameByMethod(method, name);
|
|
125
|
-
|
|
97
|
+
__manageChild(name, instance, mode = "add") {
|
|
98
|
+
const action = mode === "add" ? "$on" : "$off";
|
|
99
|
+
const methods = this.__getEventMethodsByName(name);
|
|
100
|
+
methods.forEach((method) => {
|
|
101
|
+
const event = this.__getEventNameByMethod(method, name);
|
|
126
102
|
instance[action](event, this.__childrenHandler);
|
|
127
103
|
});
|
|
128
104
|
}
|
|
129
|
-
|
|
130
105
|
bindChild(name, instance) {
|
|
131
106
|
this.__manageChild(name, instance);
|
|
132
107
|
}
|
|
133
|
-
|
|
134
108
|
unbindChild(name, instance) {
|
|
135
|
-
this.__manageChild(name, instance,
|
|
109
|
+
this.__manageChild(name, instance, "remove");
|
|
136
110
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
var {
|
|
145
|
-
emits = []
|
|
146
|
-
} = this.__base.__config;
|
|
147
|
-
methods.forEach(method => {
|
|
148
|
-
var event = this.__getEventNameByMethod(method);
|
|
149
|
-
|
|
150
|
-
var target = emits.includes(event) ? this.__base : this.__rootElement;
|
|
111
|
+
__manageRootElement(mode = "add") {
|
|
112
|
+
const modeMethod = `${mode}EventListener`;
|
|
113
|
+
const methods = this.__getEventMethodsByName();
|
|
114
|
+
const { emits = [] } = this.__base.__config;
|
|
115
|
+
methods.forEach((method) => {
|
|
116
|
+
const event = this.__getEventNameByMethod(method);
|
|
117
|
+
const target = emits.includes(event) ? this.__base : this.__rootElement;
|
|
151
118
|
target[modeMethod](event, this.__rootElementHandler);
|
|
152
119
|
});
|
|
153
120
|
}
|
|
154
|
-
|
|
155
121
|
bindRootElement() {
|
|
156
122
|
this.__manageRootElement();
|
|
157
123
|
}
|
|
158
|
-
|
|
159
124
|
unbindRootElement() {
|
|
160
|
-
this.__manageRootElement(
|
|
125
|
+
this.__manageRootElement("remove");
|
|
161
126
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
var regex = new RegExp("^on".concat(normalizedName, "([A-Z].*)$"));
|
|
167
|
-
var [, event] = method.match(regex);
|
|
127
|
+
__getEventNameByMethod(method, name = "") {
|
|
128
|
+
const normalizedName = EventsManager.normalizeName(name);
|
|
129
|
+
const regex = new RegExp(`^on${normalizedName}([A-Z].*)$`);
|
|
130
|
+
const [, event] = method.match(regex);
|
|
168
131
|
return EventsManager.normalizeEventName(event);
|
|
169
132
|
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
var key = regex.toString();
|
|
176
|
-
|
|
177
|
-
var methods = this.__methodsCache.get(key);
|
|
178
|
-
|
|
133
|
+
__getEventMethodsByName(name = "") {
|
|
134
|
+
const normalizedName = EventsManager.normalizeName(name);
|
|
135
|
+
const regex = new RegExp(`^on${normalizedName}[A-Z].*$`);
|
|
136
|
+
const key = regex.toString();
|
|
137
|
+
let methods = this.__methodsCache.get(key);
|
|
179
138
|
if (!methods) {
|
|
180
|
-
methods = Array.from(getAllProperties(this.__base, [], method => regex.test(method)).reduce((set,
|
|
181
|
-
var [method] = _ref;
|
|
182
|
-
return set.add(method);
|
|
183
|
-
}, new Set()));
|
|
184
|
-
|
|
139
|
+
methods = Array.from(getAllProperties(this.__base, [], (method) => regex.test(method)).reduce((set, [method]) => set.add(method), /* @__PURE__ */ new Set()));
|
|
185
140
|
this.__methodsCache.set(key, methods);
|
|
186
141
|
}
|
|
187
|
-
|
|
188
142
|
return methods;
|
|
189
143
|
}
|
|
190
|
-
|
|
191
144
|
static normalizeName(name) {
|
|
192
|
-
return name.replace(/[A-Z]([A-Z].*)/g, c => c.toLowerCase()).replace(/[^a-zA-Z\d\s:]/g,
|
|
145
|
+
return name.replace(/[A-Z]([A-Z].*)/g, (c) => c.toLowerCase()).replace(/[^a-zA-Z\d\s:]/g, " ").replace(/(^\w|\s+\w)/g, (c) => c.trim().toUpperCase()).trim();
|
|
193
146
|
}
|
|
194
|
-
|
|
195
147
|
static normalizeEventName(name) {
|
|
196
|
-
return name.replace(/[A-Z]/g, c =>
|
|
148
|
+
return name.replace(/[A-Z]/g, (c) => `-${c.toLowerCase()}`).replace(/^-/, "");
|
|
197
149
|
}
|
|
198
|
-
|
|
199
|
-
|
|
150
|
+
}
|
|
151
|
+
export {
|
|
152
|
+
EventsManager as default
|
|
153
|
+
};
|
|
@@ -0,0 +1,176 @@
|
|
|
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 __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all)
|
|
11
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
12
|
+
};
|
|
13
|
+
var __reExport = (target, module2, copyDefault, desc) => {
|
|
14
|
+
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(module2))
|
|
16
|
+
if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
|
|
17
|
+
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
|
|
18
|
+
}
|
|
19
|
+
return target;
|
|
20
|
+
};
|
|
21
|
+
var __toESM = (module2, isNodeMode) => {
|
|
22
|
+
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
|
|
23
|
+
};
|
|
24
|
+
var __toCommonJS = /* @__PURE__ */ ((cache) => {
|
|
25
|
+
return (module2, temp) => {
|
|
26
|
+
return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
|
|
27
|
+
};
|
|
28
|
+
})(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
|
|
29
|
+
var __publicField = (obj, key, value) => {
|
|
30
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
31
|
+
return value;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
// packages/js-toolkit/Base/managers/OptionsManager.js
|
|
35
|
+
var OptionsManager_exports = {};
|
|
36
|
+
__export(OptionsManager_exports, {
|
|
37
|
+
default: () => OptionsManager
|
|
38
|
+
});
|
|
39
|
+
var import_deepmerge = __toESM(require("deepmerge"), 1);
|
|
40
|
+
var import_isObject = __toESM(require("../../utils/object/isObject.cjs"), 1);
|
|
41
|
+
var _OptionsManager = class {
|
|
42
|
+
__element;
|
|
43
|
+
__values = {};
|
|
44
|
+
__defaultValues = {
|
|
45
|
+
String: "",
|
|
46
|
+
Number: 0,
|
|
47
|
+
Boolean: false,
|
|
48
|
+
Array: () => [],
|
|
49
|
+
Object: () => ({})
|
|
50
|
+
};
|
|
51
|
+
name = "Base";
|
|
52
|
+
debug = false;
|
|
53
|
+
log = false;
|
|
54
|
+
constructor(element, schema, baseConfig) {
|
|
55
|
+
Object.defineProperties(this, {
|
|
56
|
+
__element: {
|
|
57
|
+
enumerable: false,
|
|
58
|
+
writable: false,
|
|
59
|
+
value: element
|
|
60
|
+
},
|
|
61
|
+
__values: {
|
|
62
|
+
enumerable: false,
|
|
63
|
+
writable: false,
|
|
64
|
+
value: this.__values
|
|
65
|
+
},
|
|
66
|
+
__defaultValues: {
|
|
67
|
+
enumerable: false,
|
|
68
|
+
writable: false,
|
|
69
|
+
value: this.__defaultValues
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
this.name = baseConfig.name;
|
|
73
|
+
schema.debug = {
|
|
74
|
+
type: Boolean,
|
|
75
|
+
default: baseConfig.debug ?? false
|
|
76
|
+
};
|
|
77
|
+
schema.log = {
|
|
78
|
+
type: Boolean,
|
|
79
|
+
default: baseConfig.log ?? false
|
|
80
|
+
};
|
|
81
|
+
Object.entries(schema).forEach(([name, config]) => {
|
|
82
|
+
this.__register(name, config);
|
|
83
|
+
});
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
86
|
+
__register(name, config) {
|
|
87
|
+
const hasDefaultValue = !_OptionsManager.types.includes(config);
|
|
88
|
+
const type = hasDefaultValue ? config.type : config;
|
|
89
|
+
if (!_OptionsManager.types.includes(type)) {
|
|
90
|
+
throw new Error(`The "${name}" option has an invalid type. The allowed types are: String, Number, Boolean, Array and Object.`);
|
|
91
|
+
}
|
|
92
|
+
const defaultValue = hasDefaultValue ? config.default : this.__defaultValues[type.name];
|
|
93
|
+
if ((type === Array || type === Object) && typeof defaultValue !== "function") {
|
|
94
|
+
throw new Error(`The default value for options of type "${type.name}" must be returned by a function.`);
|
|
95
|
+
}
|
|
96
|
+
Object.defineProperty(this, name, {
|
|
97
|
+
get: () => {
|
|
98
|
+
return this.get(name, type, defaultValue);
|
|
99
|
+
},
|
|
100
|
+
set: (value) => {
|
|
101
|
+
this.set(name, type, value, defaultValue);
|
|
102
|
+
},
|
|
103
|
+
enumerable: true
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
get(name, type, defaultValue) {
|
|
107
|
+
const propertyName = _OptionsManager.__getPropertyName(name);
|
|
108
|
+
const hasProperty = this.__hasProperty(propertyName);
|
|
109
|
+
if (type === Boolean) {
|
|
110
|
+
if (defaultValue) {
|
|
111
|
+
const negatedPropertyName = _OptionsManager.__getPropertyName(name, "No");
|
|
112
|
+
const hasNegatedProperty = this.__hasProperty(negatedPropertyName);
|
|
113
|
+
return !hasNegatedProperty;
|
|
114
|
+
}
|
|
115
|
+
return hasProperty || defaultValue;
|
|
116
|
+
}
|
|
117
|
+
const value = this.__element.dataset[propertyName];
|
|
118
|
+
if (type === Number) {
|
|
119
|
+
return hasProperty ? Number(value) : defaultValue;
|
|
120
|
+
}
|
|
121
|
+
if (type === Array || type === Object) {
|
|
122
|
+
const val = (0, import_deepmerge.default)(defaultValue(), hasProperty ? JSON.parse(value) : this.__defaultValues[type.name]());
|
|
123
|
+
if (!this.__values[name]) {
|
|
124
|
+
this.__values[name] = val;
|
|
125
|
+
}
|
|
126
|
+
return this.__values[name];
|
|
127
|
+
}
|
|
128
|
+
return hasProperty ? value : defaultValue;
|
|
129
|
+
}
|
|
130
|
+
set(name, type, value, defaultValue) {
|
|
131
|
+
const propertyName = _OptionsManager.__getPropertyName(name);
|
|
132
|
+
if (value.constructor.name !== type.name) {
|
|
133
|
+
const val = Array.isArray(value) || (0, import_isObject.default)(value) ? JSON.stringify(value) : value;
|
|
134
|
+
throw new TypeError(`The "${val}" value for the "${name}" option must be of type "${type.name}"`);
|
|
135
|
+
}
|
|
136
|
+
switch (type) {
|
|
137
|
+
case Boolean:
|
|
138
|
+
if (defaultValue) {
|
|
139
|
+
const negatedPropertyName = _OptionsManager.__getPropertyName(name, "No");
|
|
140
|
+
if (value) {
|
|
141
|
+
delete this.__element.dataset[negatedPropertyName];
|
|
142
|
+
} else {
|
|
143
|
+
this.__element.dataset[negatedPropertyName] = "";
|
|
144
|
+
}
|
|
145
|
+
} else if (value) {
|
|
146
|
+
this.__element.dataset[propertyName] = "";
|
|
147
|
+
} else {
|
|
148
|
+
delete this.__element.dataset[propertyName];
|
|
149
|
+
}
|
|
150
|
+
break;
|
|
151
|
+
case Array:
|
|
152
|
+
case Object:
|
|
153
|
+
this.__values[name] = value;
|
|
154
|
+
break;
|
|
155
|
+
default:
|
|
156
|
+
this.__element.dataset[propertyName] = value;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
__hasProperty(prop) {
|
|
160
|
+
return typeof this.__element.dataset[prop] !== "undefined";
|
|
161
|
+
}
|
|
162
|
+
static __getPropertyName(name, prefix = "") {
|
|
163
|
+
const key = name + prefix;
|
|
164
|
+
if (_OptionsManager.__propertyNameCache.has(key)) {
|
|
165
|
+
return _OptionsManager.__propertyNameCache.get(key);
|
|
166
|
+
}
|
|
167
|
+
const propertyName = `option${prefix}${name.replace(/^\w/, (c) => c.toUpperCase())}`;
|
|
168
|
+
_OptionsManager.__propertyNameCache.set(key, propertyName);
|
|
169
|
+
return propertyName;
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
var OptionsManager = _OptionsManager;
|
|
173
|
+
__publicField(OptionsManager, "types", [String, Number, Boolean, Array, Object]);
|
|
174
|
+
__publicField(OptionsManager, "__propertyNameCache", /* @__PURE__ */ new Map());
|
|
175
|
+
module.exports = __toCommonJS(OptionsManager_exports);
|
|
176
|
+
if (module.exports.default) module.exports = module.exports.default;
|