@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
@@ -1,19 +1,13 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- import { getComponentElements } from '../utils.js';
3
- export default class ChildrenManager {
1
+ import { getComponentElements } from "../utils.js";
2
+ class ChildrenManager {
3
+ __base;
4
+ __element;
5
+ __components;
6
+ __eventsManager;
4
7
  get registeredNames() {
5
- return Object.keys(this).filter(key => !key.startsWith('__'));
8
+ return Object.keys(this).filter((key) => !key.startsWith("__"));
6
9
  }
7
-
8
10
  constructor(base, element, components, eventsManager) {
9
- _defineProperty(this, "__base", void 0);
10
-
11
- _defineProperty(this, "__element", void 0);
12
-
13
- _defineProperty(this, "__components", void 0);
14
-
15
- _defineProperty(this, "__eventsManager", void 0);
16
-
17
11
  Object.defineProperties(this, {
18
12
  __base: {
19
13
  enumerable: false,
@@ -37,88 +31,68 @@ export default class ChildrenManager {
37
31
  }
38
32
  });
39
33
  }
40
-
41
34
  registerAll() {
42
- Object.entries(this.__components).forEach(_ref => {
43
- var [name, component] = _ref;
44
- return this.__register(name, component);
45
- });
35
+ Object.entries(this.__components).forEach(([name, component]) => this.__register(name, component));
46
36
  }
47
-
48
37
  __register(name, component) {
49
38
  Object.defineProperty(this, name, {
50
39
  enumerable: true,
51
40
  configurable: true,
52
41
  get: () => {
53
- var elements = getComponentElements(name, this.__element);
54
-
42
+ const elements = getComponentElements(name, this.__element);
55
43
  if (elements.length === 0) {
56
44
  return [];
57
45
  }
58
-
59
- return elements.map(element => this.__getChild(element, component, name)).filter(instance => instance !== 'terminated');
46
+ return elements.map((element) => this.__getChild(element, component, name)).filter((instance) => instance !== "terminated");
60
47
  }
61
48
  });
62
49
  }
63
-
64
50
  __getChild(el, ComponentClass, name) {
65
51
  if (el.__base__) {
66
52
  return el.__base__;
67
53
  }
68
-
69
- if ('$isBase' in ComponentClass) {
70
- var child = new ComponentClass(el);
71
- Object.defineProperty(child, '$parent', {
72
- get: () => this.__base
73
- });
54
+ if ("$isBase" in ComponentClass) {
55
+ const child = new ComponentClass(el);
56
+ Object.defineProperty(child, "$parent", { get: () => this.__base });
74
57
  return child;
75
58
  }
76
-
77
- return ComponentClass(this.__base).then(module => {
78
- var _module$default;
79
-
80
- return this.__getChild(el, (_module$default = module.default) !== null && _module$default !== void 0 ? _module$default : module, name);
59
+ return ComponentClass(this.__base).then((module) => {
60
+ return this.__getChild(el, module.default ?? module, name);
81
61
  });
82
62
  }
83
-
84
63
  mountAll() {
85
- this.__triggerHookForAll('$mount');
64
+ this.__triggerHookForAll("$mount");
86
65
  }
87
-
88
66
  updateAll() {
89
- this.__triggerHookForAll('$update');
67
+ this.__triggerHookForAll("$update");
90
68
  }
91
-
92
69
  destroyAll() {
93
- this.__triggerHookForAll('$destroy');
70
+ this.__triggerHookForAll("$destroy");
94
71
  }
95
-
96
72
  __triggerHookForAll(hook) {
97
- this.registeredNames.forEach(name => {
98
- this[name].forEach(instance => {
73
+ this.registeredNames.forEach((name) => {
74
+ this[name].forEach((instance) => {
99
75
  if (instance instanceof Promise) {
100
- instance.then(resolvedInstance => this.__triggerHook(hook, resolvedInstance, name));
76
+ instance.then((resolvedInstance) => this.__triggerHook(hook, resolvedInstance, name));
101
77
  } else {
102
78
  this.__triggerHook(hook, instance, name);
103
79
  }
104
80
  });
105
81
  });
106
82
  }
107
-
108
83
  __triggerHook(hook, instance, name) {
109
- if (hook === '$update' && !instance.$isMounted) {
110
- hook = '$mount';
84
+ if (hook === "$update" && !instance.$isMounted) {
85
+ hook = "$mount";
111
86
  }
112
-
113
- if (hook === '$update' || hook === '$destroy') {
87
+ if (hook === "$update" || hook === "$destroy") {
114
88
  this.__eventsManager.unbindChild(name, instance);
115
89
  }
116
-
117
- if (hook === '$update' || hook === '$mount') {
90
+ if (hook === "$update" || hook === "$mount") {
118
91
  this.__eventsManager.bindChild(name, instance);
119
92
  }
120
-
121
93
  instance[hook]();
122
94
  }
123
-
124
- }
95
+ }
96
+ export {
97
+ ChildrenManager as default
98
+ };
@@ -0,0 +1,182 @@
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 EventsManager_exports = {};
29
+ __export(EventsManager_exports, {
30
+ default: () => EventsManager
31
+ });
32
+ var import_getAllProperties = __toESM(require("../../utils/object/getAllProperties.js"), 1);
33
+ var import_RefsManager = __toESM(require("./RefsManager.js"), 1);
34
+ class EventsManager {
35
+ __rootElement;
36
+ __base;
37
+ __methodsCache = /* @__PURE__ */ new Map();
38
+ __rootElementHandler = {
39
+ handleEvent: (event) => {
40
+ const normalizedEventName = EventsManager.normalizeName(event.type);
41
+ const method = `on${normalizedEventName}`;
42
+ this.__base[method](event);
43
+ }
44
+ };
45
+ __refsHandler = {
46
+ handleEvent: (event) => {
47
+ const ref = event.currentTarget;
48
+ const refName = import_RefsManager.default.normalizeRefName(ref.dataset.ref);
49
+ const normalizedRefName = EventsManager.normalizeName(refName);
50
+ const normalizedEventName = EventsManager.normalizeName(event.type);
51
+ const method = `on${normalizedRefName}${normalizedEventName}`;
52
+ let index = 0;
53
+ if (Array.isArray(this.__base.$refs[refName])) {
54
+ index = this.__base.$refs[refName].indexOf(ref);
55
+ }
56
+ this.__base[method](event, index);
57
+ }
58
+ };
59
+ __childrenHandler = {
60
+ handleEvent: (event) => {
61
+ const child = event.currentTarget;
62
+ let childName;
63
+ let index = 0;
64
+ const childrenManager = this.__base.$children;
65
+ childrenManager.registeredNames.find((name) => {
66
+ if (childrenManager[name].includes(child)) {
67
+ childName = name;
68
+ index = childrenManager[name].indexOf(child);
69
+ return true;
70
+ }
71
+ return false;
72
+ });
73
+ const normalizedRefName = EventsManager.normalizeName(childName);
74
+ const normalizedEventName = EventsManager.normalizeName(event.type);
75
+ const method = `on${normalizedRefName}${normalizedEventName}`;
76
+ const args = Array.isArray(event.detail) ? event.detail : [];
77
+ this.__base[method](...args, index, event);
78
+ }
79
+ };
80
+ constructor(rootElement, base) {
81
+ Object.defineProperties(this, {
82
+ __rootElement: {
83
+ enumerable: false,
84
+ writable: false,
85
+ value: rootElement
86
+ },
87
+ __base: {
88
+ enumerable: false,
89
+ writable: false,
90
+ value: base
91
+ },
92
+ __methodsCache: {
93
+ enumerable: false,
94
+ writable: false,
95
+ value: this.__methodsCache
96
+ },
97
+ __rootElementHandler: {
98
+ enumerable: false,
99
+ writable: false,
100
+ value: this.__rootElementHandler
101
+ },
102
+ __refsHandler: {
103
+ enumerable: false,
104
+ writable: false,
105
+ value: this.__refsHandler
106
+ },
107
+ __childrenHandler: {
108
+ enumerable: false,
109
+ writable: false,
110
+ value: this.__childrenHandler
111
+ }
112
+ });
113
+ }
114
+ __manageRef(name, elements, mode = "add") {
115
+ const action = `${mode}EventListener`;
116
+ const methods = this.__getEventMethodsByName(name);
117
+ methods.forEach((method) => {
118
+ const event = this.__getEventNameByMethod(method, name);
119
+ elements.forEach((element) => element[action](event, this.__refsHandler));
120
+ });
121
+ }
122
+ bindRef(name, elements) {
123
+ this.__manageRef(name, elements);
124
+ }
125
+ unbindRef(name, elements) {
126
+ this.__manageRef(name, elements, "remove");
127
+ }
128
+ __manageChild(name, instance, mode = "add") {
129
+ const action = mode === "add" ? "$on" : "$off";
130
+ const methods = this.__getEventMethodsByName(name);
131
+ methods.forEach((method) => {
132
+ const event = this.__getEventNameByMethod(method, name);
133
+ instance[action](event, this.__childrenHandler);
134
+ });
135
+ }
136
+ bindChild(name, instance) {
137
+ this.__manageChild(name, instance);
138
+ }
139
+ unbindChild(name, instance) {
140
+ this.__manageChild(name, instance, "remove");
141
+ }
142
+ __manageRootElement(mode = "add") {
143
+ const modeMethod = `${mode}EventListener`;
144
+ const methods = this.__getEventMethodsByName();
145
+ const { emits = [] } = this.__base.__config;
146
+ methods.forEach((method) => {
147
+ const event = this.__getEventNameByMethod(method);
148
+ const target = emits.includes(event) ? this.__base : this.__rootElement;
149
+ target[modeMethod](event, this.__rootElementHandler);
150
+ });
151
+ }
152
+ bindRootElement() {
153
+ this.__manageRootElement();
154
+ }
155
+ unbindRootElement() {
156
+ this.__manageRootElement("remove");
157
+ }
158
+ __getEventNameByMethod(method, name = "") {
159
+ const normalizedName = EventsManager.normalizeName(name);
160
+ const regex = new RegExp(`^on${normalizedName}([A-Z].*)$`);
161
+ const [, event] = method.match(regex);
162
+ return EventsManager.normalizeEventName(event);
163
+ }
164
+ __getEventMethodsByName(name = "") {
165
+ const normalizedName = EventsManager.normalizeName(name);
166
+ const regex = new RegExp(`^on${normalizedName}[A-Z].*$`);
167
+ const key = regex.toString();
168
+ let methods = this.__methodsCache.get(key);
169
+ if (!methods) {
170
+ methods = Array.from((0, import_getAllProperties.default)(this.__base, [], (method) => regex.test(method)).reduce((set, [method]) => set.add(method), /* @__PURE__ */ new Set()));
171
+ this.__methodsCache.set(key, methods);
172
+ }
173
+ return methods;
174
+ }
175
+ static normalizeName(name) {
176
+ 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();
177
+ }
178
+ static normalizeEventName(name) {
179
+ return name.replace(/[A-Z]/g, (c) => `-${c.toLowerCase()}`).replace(/^-/, "");
180
+ }
181
+ }
182
+ module.exports = __toCommonJS(EventsManager_exports);
@@ -4,6 +4,8 @@
4
4
  */
5
5
  /**
6
6
  * Event management class.
7
+ * @todo Prevent binding of `onChildOrRefEvent` to the root element
8
+ * @todo Use event delegation?
7
9
  */
8
10
  export default class EventsManager {
9
11
  /**
@@ -150,7 +152,7 @@ export default class EventsManager {
150
152
  * Manage event methods on the root element.
151
153
  *
152
154
  * @param {'add'|'remove'} [mode]
153
- * The action to perform: add or remove the event listeners.
155
+ * The action to perform: add or remove the event listeners, defaults to 'add'.
154
156
  *
155
157
  * @return {void}
156
158
  * @private
@@ -1,64 +1,52 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- import getAllProperties from '../../utils/object/getAllProperties.js';
3
- import RefsManager from './RefsManager.js';
4
- export default class EventsManager {
5
- constructor(rootElement, base) {
6
- _defineProperty(this, "__rootElement", void 0);
7
-
8
- _defineProperty(this, "__base", void 0);
9
-
10
- _defineProperty(this, "__methodsCache", new Map());
11
-
12
- _defineProperty(this, "__rootElementHandler", {
13
- handleEvent: event => {
14
- var normalizedEventName = EventsManager.normalizeName(event.type);
15
- var method = "on".concat(normalizedEventName);
16
-
17
- this.__base[method](event);
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
- _defineProperty(this, "__refsHandler", {
22
- handleEvent: event => {
23
- var ref = event.currentTarget;
24
- var refName = RefsManager.normalizeRefName(ref.dataset.ref);
25
- var normalizedRefName = EventsManager.normalizeName(refName);
26
- var normalizedEventName = EventsManager.normalizeName(event.type);
27
- var method = "on".concat(normalizedRefName).concat(normalizedEventName);
28
- var index = 0;
29
-
30
- if (Array.isArray(this.__base.$refs[refName])) {
31
- index = this.__base.$refs[refName].indexOf(ref);
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
- this.__base[method](event, index);
35
- }
36
- });
37
-
38
- _defineProperty(this, "__childrenHandler", {
39
- handleEvent: event => {
40
- var child = event.currentTarget.__base__;
41
- var childName;
42
- var index = 0;
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,104 +80,74 @@ export default class EventsManager {
92
80
  }
93
81
  });
94
82
  }
95
-
96
- __manageRef(name, elements) {
97
- var mode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'add';
98
- var action = "".concat(mode, "EventListener");
99
-
100
- var methods = this.__getEventMethodsByName(name);
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, 'remove');
95
+ this.__manageRef(name, elements, "remove");
115
96
  }
116
-
117
- __manageChild(name, instance) {
118
- var mode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'add';
119
- var action = mode === 'add' ? '$on' : '$off';
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, 'remove');
109
+ this.__manageChild(name, instance, "remove");
136
110
  }
137
-
138
- __manageRootElement() {
139
- var mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'add';
140
- var modeMethod = "".concat(mode, "EventListener");
141
-
142
- var methods = this.__getEventMethodsByName();
143
-
144
- methods.forEach(method => {
145
- var event = this.__getEventNameByMethod(method);
146
-
147
- this.__rootElement[modeMethod](event, this.__rootElementHandler);
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;
118
+ target[modeMethod](event, this.__rootElementHandler);
148
119
  });
149
120
  }
150
-
151
121
  bindRootElement() {
152
122
  this.__manageRootElement();
153
123
  }
154
-
155
124
  unbindRootElement() {
156
- this.__manageRootElement('remove');
125
+ this.__manageRootElement("remove");
157
126
  }
158
-
159
- __getEventNameByMethod(method) {
160
- var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
161
- var normalizedName = EventsManager.normalizeName(name);
162
- var regex = new RegExp("^on".concat(normalizedName, "([A-Z].*)$"));
163
- 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);
164
131
  return EventsManager.normalizeEventName(event);
165
132
  }
166
-
167
- __getEventMethodsByName() {
168
- var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
169
- var normalizedName = EventsManager.normalizeName(name);
170
- var regex = new RegExp("^on".concat(normalizedName, "[A-Z].*$"));
171
- var key = regex.toString();
172
-
173
- var methods = this.__methodsCache.get(key);
174
-
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);
175
138
  if (!methods) {
176
- methods = Array.from(getAllProperties(this.__base, [], method => regex.test(method)).reduce((set, _ref) => {
177
- var [method] = _ref;
178
- return set.add(method);
179
- }, new Set()));
180
-
139
+ methods = Array.from(getAllProperties(this.__base, [], (method) => regex.test(method)).reduce((set, [method]) => set.add(method), /* @__PURE__ */ new Set()));
181
140
  this.__methodsCache.set(key, methods);
182
141
  }
183
-
184
142
  return methods;
185
143
  }
186
-
187
144
  static normalizeName(name) {
188
- 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();
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();
189
146
  }
190
-
191
147
  static normalizeEventName(name) {
192
- return name.replace(/[A-Z]/g, c => "-".concat(c.toLowerCase())).replace(/^-/, '');
148
+ return name.replace(/[A-Z]/g, (c) => `-${c.toLowerCase()}`).replace(/^-/, "");
193
149
  }
194
-
195
- }
150
+ }
151
+ export {
152
+ EventsManager as default
153
+ };