@studiometa/js-toolkit 2.0.0-beta.0 → 2.0.0-beta.12

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 (184) hide show
  1. package/Base/index.cjs +287 -0
  2. package/Base/index.d.ts +27 -1
  3. package/Base/index.js +149 -179
  4. package/Base/managers/ChildrenManager.cjs +122 -0
  5. package/Base/managers/ChildrenManager.js +29 -55
  6. package/Base/managers/EventsManager.cjs +182 -0
  7. package/Base/managers/EventsManager.d.ts +3 -1
  8. package/Base/managers/EventsManager.js +85 -127
  9. package/Base/managers/OptionsManager.cjs +167 -0
  10. package/Base/managers/OptionsManager.d.ts +2 -0
  11. package/Base/managers/OptionsManager.js +46 -88
  12. package/Base/managers/RefsManager.cjs +96 -0
  13. package/Base/managers/RefsManager.d.ts +2 -0
  14. package/Base/managers/RefsManager.js +24 -35
  15. package/Base/managers/ServicesManager.cjs +130 -0
  16. package/Base/managers/ServicesManager.d.ts +29 -4
  17. package/Base/managers/ServicesManager.js +33 -63
  18. package/Base/utils.cjs +43 -0
  19. package/Base/utils.js +12 -11
  20. package/README.md +13 -70
  21. package/decorators/index.cjs +47 -0
  22. package/decorators/index.d.ts +8 -9
  23. package/decorators/index.js +18 -9
  24. package/decorators/withBreakpointManager.cjs +89 -0
  25. package/decorators/withBreakpointManager.js +18 -39
  26. package/decorators/withBreakpointObserver.cjs +114 -0
  27. package/decorators/withBreakpointObserver.js +40 -88
  28. package/decorators/withDrag.cjs +52 -0
  29. package/decorators/withDrag.js +16 -18
  30. package/decorators/withExtraConfig.cjs +42 -0
  31. package/decorators/withExtraConfig.js +11 -12
  32. package/decorators/withIntersectionObserver.cjs +59 -0
  33. package/decorators/withIntersectionObserver.js +23 -31
  34. package/decorators/withMountWhenInView.cjs +66 -0
  35. package/decorators/withMountWhenInView.js +31 -55
  36. package/decorators/withScrolledInView.cjs +110 -0
  37. package/decorators/withScrolledInView.d.ts +4 -1
  38. package/decorators/withScrolledInView.js +77 -73
  39. package/decorators/withVue2.cjs +58 -0
  40. package/decorators/withVue2.js +21 -32
  41. package/helpers/createApp.cjs +54 -0
  42. package/helpers/createApp.js +12 -12
  43. package/helpers/importOnInteraction.cjs +54 -0
  44. package/helpers/importOnInteraction.js +17 -18
  45. package/helpers/importWhenIdle.cjs +50 -0
  46. package/helpers/importWhenIdle.js +13 -17
  47. package/helpers/importWhenVisible.cjs +52 -0
  48. package/helpers/importWhenVisible.js +16 -18
  49. package/helpers/index.cjs +39 -0
  50. package/helpers/index.d.ts +4 -5
  51. package/helpers/index.js +10 -5
  52. package/helpers/utils.cjs +37 -0
  53. package/helpers/utils.js +7 -6
  54. package/index.cjs +36 -0
  55. package/index.d.ts +4 -21
  56. package/index.js +7 -5
  57. package/package.json +14 -3
  58. package/services/Service.cjs +73 -0
  59. package/services/Service.d.ts +22 -17
  60. package/services/Service.js +14 -28
  61. package/services/drag.cjs +192 -0
  62. package/services/drag.d.ts +4 -18
  63. package/services/drag.js +103 -156
  64. package/services/index.cjs +45 -0
  65. package/services/index.d.ts +13 -10
  66. package/services/index.js +16 -8
  67. package/services/key.cjs +99 -0
  68. package/services/key.d.ts +4 -13
  69. package/services/key.js +58 -77
  70. package/services/load.cjs +68 -0
  71. package/services/load.d.ts +3 -13
  72. package/services/load.js +31 -36
  73. package/services/pointer.cjs +157 -0
  74. package/services/pointer.d.ts +4 -13
  75. package/services/pointer.js +91 -121
  76. package/services/raf.cjs +79 -0
  77. package/services/raf.d.ts +3 -13
  78. package/services/raf.js +32 -52
  79. package/services/resize.cjs +104 -0
  80. package/services/resize.d.ts +3 -13
  81. package/services/resize.js +52 -52
  82. package/services/scroll.cjs +127 -0
  83. package/services/scroll.d.ts +3 -13
  84. package/services/scroll.js +75 -89
  85. package/utils/collide/boundingRectToCircle.cjs +36 -0
  86. package/utils/collide/boundingRectToCircle.d.ts +1 -1
  87. package/utils/collide/boundingRectToCircle.js +7 -10
  88. package/utils/collide/collideCircleCircle.cjs +36 -0
  89. package/utils/collide/collideCircleCircle.js +8 -7
  90. package/utils/collide/collideCircleRect.cjs +48 -0
  91. package/utils/collide/collideCircleRect.js +10 -12
  92. package/utils/collide/collidePointCircle.cjs +33 -0
  93. package/utils/collide/collidePointCircle.js +8 -5
  94. package/utils/collide/collidePointRect.cjs +30 -0
  95. package/utils/collide/collidePointRect.js +5 -2
  96. package/utils/collide/collideRectRect.cjs +30 -0
  97. package/utils/collide/collideRectRect.js +5 -2
  98. package/utils/collide/index.cjs +43 -0
  99. package/utils/collide/index.d.ts +6 -7
  100. package/utils/collide/index.js +14 -7
  101. package/utils/css/classes.cjs +46 -0
  102. package/utils/css/classes.js +13 -12
  103. package/utils/css/index.cjs +39 -0
  104. package/utils/css/index.d.ts +4 -5
  105. package/utils/css/index.js +10 -5
  106. package/utils/css/matrix.cjs +31 -0
  107. package/utils/css/matrix.js +6 -5
  108. package/utils/css/styles.cjs +49 -0
  109. package/utils/css/styles.js +13 -12
  110. package/utils/css/transition.cjs +119 -0
  111. package/utils/css/transition.js +62 -117
  112. package/utils/debounce.cjs +36 -0
  113. package/utils/debounce.js +7 -9
  114. package/utils/focusTrap.cjs +86 -0
  115. package/utils/focusTrap.js +30 -21
  116. package/utils/history.cjs +93 -0
  117. package/utils/history.js +28 -57
  118. package/utils/index.cjs +55 -0
  119. package/utils/index.d.ts +12 -35
  120. package/utils/index.js +30 -17
  121. package/utils/keyCodes.cjs +37 -0
  122. package/utils/keyCodes.js +5 -2
  123. package/utils/math/clamp.cjs +30 -0
  124. package/utils/math/clamp.js +5 -2
  125. package/utils/math/clamp01.cjs +36 -0
  126. package/utils/math/clamp01.js +6 -3
  127. package/utils/math/damp.cjs +30 -0
  128. package/utils/math/damp.js +5 -4
  129. package/utils/math/ease.cjs +90 -0
  130. package/utils/math/ease.d.ts +78 -0
  131. package/utils/math/ease.js +66 -0
  132. package/utils/math/index.cjs +46 -0
  133. package/utils/math/index.d.ts +8 -8
  134. package/utils/math/index.js +17 -8
  135. package/utils/math/inertiaFinalValue.cjs +39 -0
  136. package/utils/math/inertiaFinalValue.js +8 -10
  137. package/utils/math/lerp.cjs +30 -0
  138. package/utils/math/lerp.js +5 -2
  139. package/utils/math/map.cjs +30 -0
  140. package/utils/math/map.js +5 -2
  141. package/utils/math/round.cjs +30 -0
  142. package/utils/math/round.js +5 -3
  143. package/utils/memoize.cjs +45 -0
  144. package/utils/memoize.js +10 -19
  145. package/utils/nextFrame.cjs +42 -0
  146. package/utils/nextFrame.js +14 -9
  147. package/utils/object/autoBind.cjs +53 -0
  148. package/utils/object/autoBind.js +12 -22
  149. package/utils/object/getAllProperties.cjs +39 -0
  150. package/utils/object/getAllProperties.js +11 -14
  151. package/utils/object/index.cjs +37 -0
  152. package/utils/object/index.d.ts +3 -4
  153. package/utils/object/index.js +8 -4
  154. package/utils/object/isObject.cjs +30 -0
  155. package/utils/object/isObject.js +6 -3
  156. package/utils/scrollTo.cjs +84 -0
  157. package/utils/scrollTo.js +20 -40
  158. package/utils/string/index.cjs +51 -0
  159. package/utils/string/index.d.ts +10 -11
  160. package/utils/string/index.js +22 -11
  161. package/utils/string/withLeadingCharacters.cjs +36 -0
  162. package/utils/string/withLeadingCharacters.js +7 -4
  163. package/utils/string/withLeadingSlash.cjs +36 -0
  164. package/utils/string/withLeadingSlash.js +7 -4
  165. package/utils/string/withTrailingCharacters.cjs +36 -0
  166. package/utils/string/withTrailingCharacters.js +7 -4
  167. package/utils/string/withTrailingSlash.cjs +36 -0
  168. package/utils/string/withTrailingSlash.js +7 -4
  169. package/utils/string/withoutLeadingCharacters.cjs +30 -0
  170. package/utils/string/withoutLeadingCharacters.js +6 -3
  171. package/utils/string/withoutLeadingCharactersRecursive.cjs +41 -0
  172. package/utils/string/withoutLeadingCharactersRecursive.js +8 -7
  173. package/utils/string/withoutLeadingSlash.cjs +36 -0
  174. package/utils/string/withoutLeadingSlash.js +7 -4
  175. package/utils/string/withoutTrailingCharacters.cjs +30 -0
  176. package/utils/string/withoutTrailingCharacters.js +6 -3
  177. package/utils/string/withoutTrailingCharactersRecursive.cjs +41 -0
  178. package/utils/string/withoutTrailingCharactersRecursive.js +8 -7
  179. package/utils/string/withoutTrailingSlash.cjs +36 -0
  180. package/utils/string/withoutTrailingSlash.js +7 -4
  181. package/utils/throttle.cjs +38 -0
  182. package/utils/throttle.js +9 -9
  183. package/index.modern.js +0 -1
  184. package/index.umd.js +0 -1
package/Base/index.cjs ADDED
@@ -0,0 +1,287 @@
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
+ var Base_exports = {};
29
+ __export(Base_exports, {
30
+ default: () => Base
31
+ });
32
+ var import_utils = require("./utils.js");
33
+ var import_ChildrenManager = __toESM(require("./managers/ChildrenManager.js"), 1);
34
+ var import_RefsManager = __toESM(require("./managers/RefsManager.js"), 1);
35
+ var import_ServicesManager = __toESM(require("./managers/ServicesManager.js"), 1);
36
+ var import_EventsManager = __toESM(require("./managers/EventsManager.js"), 1);
37
+ var import_OptionsManager = __toESM(require("./managers/OptionsManager.js"), 1);
38
+ let id = 0;
39
+ const isDev = typeof __DEV__ !== "undefined" && __DEV__;
40
+ function noop() {
41
+ }
42
+ class Base extends EventTarget {
43
+ static $isBase = true;
44
+ $parent = null;
45
+ $id;
46
+ $el;
47
+ $isMounted = false;
48
+ __eventHandlers = /* @__PURE__ */ new Map();
49
+ get $root() {
50
+ if (!this.$parent) {
51
+ return this;
52
+ }
53
+ let parent = this.$parent;
54
+ let root = this.$parent;
55
+ while (parent) {
56
+ if (!parent.$parent) {
57
+ root = parent;
58
+ }
59
+ parent = parent.$parent;
60
+ }
61
+ return root;
62
+ }
63
+ get __config() {
64
+ let proto = Object.getPrototypeOf(this);
65
+ let { config } = proto.constructor;
66
+ while (proto.constructor.config && proto.constructor.$isBase) {
67
+ config = {
68
+ ...proto.constructor.config,
69
+ ...config
70
+ };
71
+ if (proto.constructor.config.options) {
72
+ config.options = {
73
+ ...proto.constructor.config.options,
74
+ ...config.options
75
+ };
76
+ }
77
+ if (proto.constructor.config.emits && config.emits) {
78
+ config.emits = [...proto.constructor.config.emits, ...config.emits];
79
+ }
80
+ proto = Object.getPrototypeOf(proto);
81
+ }
82
+ return config;
83
+ }
84
+ static config = {
85
+ name: "Base",
86
+ emits: [
87
+ "mounted",
88
+ "updated",
89
+ "destroyed",
90
+ "terminated",
91
+ "ticked",
92
+ "scrolled",
93
+ "resized",
94
+ "moved",
95
+ "loaded",
96
+ "keyed"
97
+ ]
98
+ };
99
+ __services;
100
+ get $services() {
101
+ return this.__services;
102
+ }
103
+ __refs;
104
+ get $refs() {
105
+ return this.__refs;
106
+ }
107
+ __options;
108
+ get $options() {
109
+ return this.__options;
110
+ }
111
+ __children;
112
+ get $children() {
113
+ return this.__children;
114
+ }
115
+ __events;
116
+ get $log() {
117
+ return this.__options.log ? window.console.log.bind(window, `[${this.__config.name}]`) : noop;
118
+ }
119
+ get __debug() {
120
+ return isDev && this.__options.debug ? window.console.log.bind(window, `[debug] [${this.$id}]`) : noop;
121
+ }
122
+ __callMethod(method, ...args) {
123
+ if (isDev) {
124
+ this.__debug("callMethod", method, ...args);
125
+ }
126
+ this.$emit(method, ...args);
127
+ if (typeof this[method] !== "function") {
128
+ return;
129
+ }
130
+ this[method].call(this, ...args);
131
+ if (isDev) {
132
+ this.__debug(method, this, ...args);
133
+ }
134
+ }
135
+ __hasEvent(event) {
136
+ const eventHandlers = this.__eventHandlers.get(event);
137
+ return eventHandlers && eventHandlers.size > 0;
138
+ }
139
+ constructor(element) {
140
+ super();
141
+ if (!element) {
142
+ throw new Error("The root element must be defined.");
143
+ }
144
+ const { __config } = this;
145
+ if (__config.name === "Base") {
146
+ throw new Error("The `config.name` property is required.");
147
+ }
148
+ this.$id = `${__config.name}-${id}`;
149
+ id += 1;
150
+ this.$el = element;
151
+ if (!("__base__" in this.$el)) {
152
+ Object.defineProperty(this.$el, "__base__", {
153
+ get: () => this,
154
+ configurable: true
155
+ });
156
+ }
157
+ this.__options = new import_OptionsManager.default(element, __config.options || {}, __config);
158
+ this.__services = new import_ServicesManager.default(this);
159
+ this.__events = new import_EventsManager.default(element, this);
160
+ this.__children = new import_ChildrenManager.default(this, element, __config.components || {}, this.__events);
161
+ this.__refs = new import_RefsManager.default(this, element, __config.refs || [], this.__events);
162
+ if (isDev) {
163
+ this.__debug("constructor", this);
164
+ }
165
+ return this;
166
+ }
167
+ $mount() {
168
+ if (this.$isMounted) {
169
+ return this;
170
+ }
171
+ this.$isMounted = true;
172
+ if (isDev) {
173
+ this.__debug("$mount");
174
+ }
175
+ this.$children.registerAll();
176
+ this.$refs.registerAll();
177
+ this.__events.bindRootElement();
178
+ this.$services.enableAll();
179
+ this.$children.mountAll();
180
+ this.__callMethod("mounted");
181
+ return this;
182
+ }
183
+ $update() {
184
+ if (isDev) {
185
+ this.__debug("$update");
186
+ }
187
+ this.$refs.unregisterAll();
188
+ this.$services.disableAll();
189
+ this.$children.registerAll();
190
+ this.$refs.registerAll();
191
+ this.$services.enableAll();
192
+ this.$children.updateAll();
193
+ this.__callMethod("updated");
194
+ return this;
195
+ }
196
+ $destroy() {
197
+ if (!this.$isMounted) {
198
+ return this;
199
+ }
200
+ this.$isMounted = false;
201
+ if (isDev) {
202
+ this.__debug("$destroy");
203
+ }
204
+ this.__events.unbindRootElement();
205
+ this.$refs.unregisterAll();
206
+ this.$services.disableAll();
207
+ this.$children.destroyAll();
208
+ this.__callMethod("destroyed");
209
+ return this;
210
+ }
211
+ $terminate() {
212
+ if (isDev) {
213
+ this.__debug("$terminate");
214
+ }
215
+ this.$destroy();
216
+ this.__callMethod("terminated");
217
+ Object.defineProperty(this.$el, "__base__", {
218
+ value: "terminated",
219
+ configurable: false,
220
+ writable: false
221
+ });
222
+ }
223
+ __testEventIsDefined(event) {
224
+ if (!(Array.isArray(this.__config.emits) && this.__config.emits.includes(event))) {
225
+ console.warn(`[${this.__config.name}]`, `The "${event}" event is missing from the configuration.`);
226
+ }
227
+ }
228
+ __addEmits(event) {
229
+ const ctor = this.constructor;
230
+ if (Array.isArray(ctor.config.emits)) {
231
+ ctor.config.emits.push(event);
232
+ } else {
233
+ ctor.config.emits = [event];
234
+ }
235
+ }
236
+ __removeEmits(event) {
237
+ const ctor = this.constructor;
238
+ const index = ctor.config.emits.findIndex((value) => value === event);
239
+ ctor.config.emits.splice(index, 1);
240
+ }
241
+ $on(event, listener, options) {
242
+ if (isDev) {
243
+ this.__debug("$on", event, listener, options);
244
+ }
245
+ if (isDev) {
246
+ this.__testEventIsDefined(event);
247
+ }
248
+ let set = this.__eventHandlers.get(event);
249
+ if (!set) {
250
+ set = /* @__PURE__ */ new Set();
251
+ this.__eventHandlers.set(event, set);
252
+ }
253
+ set.add(listener);
254
+ this.addEventListener(event, listener, options);
255
+ return () => {
256
+ this.$off(event, listener, options);
257
+ };
258
+ }
259
+ $off(event, listener, options) {
260
+ if (isDev) {
261
+ this.__debug("$off", event, listener);
262
+ }
263
+ if (isDev) {
264
+ this.__testEventIsDefined(event);
265
+ }
266
+ this.__eventHandlers.get(event).delete(listener);
267
+ this.removeEventListener(event, listener, options);
268
+ }
269
+ $emit(event, ...args) {
270
+ if (isDev) {
271
+ this.__debug("$emit", event, args);
272
+ }
273
+ if (isDev) {
274
+ this.__testEventIsDefined(event);
275
+ }
276
+ this.dispatchEvent(new CustomEvent(event, {
277
+ detail: args
278
+ }));
279
+ }
280
+ static $factory(nameOrSelector) {
281
+ if (!nameOrSelector) {
282
+ throw new Error("The $factory method requires a component\u2019s name or selector to be specified.");
283
+ }
284
+ return (0, import_utils.getComponentElements)(nameOrSelector).map((el) => new this(el).$mount());
285
+ }
286
+ }
287
+ module.exports = __toCommonJS(Base_exports);
package/Base/index.d.ts CHANGED
@@ -14,13 +14,14 @@
14
14
  * @property {Boolean} [debug]
15
15
  * @property {Boolean} [log]
16
16
  * @property {String[]} [refs]
17
+ * @property {String[]} [emits]
17
18
  * @property {BaseConfigComponents} [components]
18
19
  * @property {BaseConfigOptions} [options]
19
20
  */
20
21
  /**
21
22
  * Base class.
22
23
  */
23
- export default class Base {
24
+ export default class Base extends EventTarget {
24
25
  /**
25
26
  * This is a Base instance.
26
27
  * @type {Boolean}
@@ -174,6 +175,30 @@ export default class Base {
174
175
  * @return {void}
175
176
  */
176
177
  $terminate(): void;
178
+ /**
179
+ * Test if the given event is configured and warn otherwise.
180
+ *
181
+ * @private
182
+ * @param {string} event The event name.
183
+ * @returns {void}
184
+ */
185
+ private __testEventIsDefined;
186
+ /**
187
+ * Add an emitted event.
188
+ *
189
+ * @private
190
+ * @param {string} event The event name.
191
+ * @returns {void}
192
+ */
193
+ private __addEmits;
194
+ /**
195
+ * Remove an emitted event.
196
+ *
197
+ * @private
198
+ * @param {string} event The event name.
199
+ * @returns {void}
200
+ */
201
+ private __removeEmits;
177
202
  /**
178
203
  * Bind a listener function to an event.
179
204
  *
@@ -233,6 +258,7 @@ export type BaseConfig = {
233
258
  debug?: boolean;
234
259
  log?: boolean;
235
260
  refs?: string[];
261
+ emits?: string[];
236
262
  components?: BaseConfigComponents;
237
263
  options?: BaseConfigOptions;
238
264
  };