@studiometa/js-toolkit 2.0.0-beta.11 → 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 (159) hide show
  1. package/Base/index.cjs +287 -0
  2. package/Base/index.js +88 -174
  3. package/Base/managers/ChildrenManager.cjs +122 -0
  4. package/Base/managers/ChildrenManager.js +29 -55
  5. package/Base/managers/EventsManager.cjs +182 -0
  6. package/Base/managers/EventsManager.js +84 -130
  7. package/Base/managers/OptionsManager.cjs +167 -0
  8. package/Base/managers/OptionsManager.js +46 -88
  9. package/Base/managers/RefsManager.cjs +96 -0
  10. package/Base/managers/RefsManager.js +22 -38
  11. package/Base/managers/ServicesManager.cjs +130 -0
  12. package/Base/managers/ServicesManager.js +31 -65
  13. package/Base/utils.cjs +43 -0
  14. package/Base/utils.js +12 -11
  15. package/decorators/index.cjs +47 -0
  16. package/decorators/index.js +18 -8
  17. package/decorators/withBreakpointManager.cjs +89 -0
  18. package/decorators/withBreakpointManager.js +18 -39
  19. package/decorators/withBreakpointObserver.cjs +114 -0
  20. package/decorators/withBreakpointObserver.js +40 -88
  21. package/decorators/withDrag.cjs +52 -0
  22. package/decorators/withDrag.js +18 -26
  23. package/decorators/withExtraConfig.cjs +42 -0
  24. package/decorators/withExtraConfig.js +11 -12
  25. package/decorators/withIntersectionObserver.cjs +59 -0
  26. package/decorators/withIntersectionObserver.js +23 -32
  27. package/decorators/withMountWhenInView.cjs +66 -0
  28. package/decorators/withMountWhenInView.js +26 -53
  29. package/decorators/withScrolledInView.cjs +110 -0
  30. package/decorators/withScrolledInView.js +50 -63
  31. package/decorators/withVue2.cjs +58 -0
  32. package/decorators/withVue2.js +21 -32
  33. package/helpers/createApp.cjs +54 -0
  34. package/helpers/createApp.js +12 -12
  35. package/helpers/importOnInteraction.cjs +54 -0
  36. package/helpers/importOnInteraction.js +17 -18
  37. package/helpers/importWhenIdle.cjs +50 -0
  38. package/helpers/importWhenIdle.js +13 -17
  39. package/helpers/importWhenVisible.cjs +52 -0
  40. package/helpers/importWhenVisible.js +16 -18
  41. package/helpers/index.cjs +39 -0
  42. package/helpers/index.js +10 -4
  43. package/helpers/utils.cjs +37 -0
  44. package/helpers/utils.js +7 -6
  45. package/index.cjs +36 -0
  46. package/index.js +7 -4
  47. package/package.json +14 -3
  48. package/services/Service.cjs +73 -0
  49. package/services/Service.js +13 -32
  50. package/services/drag.cjs +192 -0
  51. package/services/drag.js +60 -90
  52. package/services/index.cjs +45 -0
  53. package/services/index.js +16 -7
  54. package/services/key.cjs +99 -0
  55. package/services/key.js +34 -52
  56. package/services/load.cjs +68 -0
  57. package/services/load.js +13 -24
  58. package/services/pointer.cjs +157 -0
  59. package/services/pointer.js +60 -87
  60. package/services/raf.cjs +79 -0
  61. package/services/raf.js +16 -33
  62. package/services/resize.cjs +104 -0
  63. package/services/resize.js +31 -49
  64. package/services/scroll.cjs +127 -0
  65. package/services/scroll.js +44 -62
  66. package/utils/collide/boundingRectToCircle.cjs +36 -0
  67. package/utils/collide/boundingRectToCircle.d.ts +1 -1
  68. package/utils/collide/boundingRectToCircle.js +7 -10
  69. package/utils/collide/collideCircleCircle.cjs +36 -0
  70. package/utils/collide/collideCircleCircle.js +8 -7
  71. package/utils/collide/collideCircleRect.cjs +48 -0
  72. package/utils/collide/collideCircleRect.js +10 -12
  73. package/utils/collide/collidePointCircle.cjs +33 -0
  74. package/utils/collide/collidePointCircle.js +8 -5
  75. package/utils/collide/collidePointRect.cjs +30 -0
  76. package/utils/collide/collidePointRect.js +5 -2
  77. package/utils/collide/collideRectRect.cjs +30 -0
  78. package/utils/collide/collideRectRect.js +5 -2
  79. package/utils/collide/index.cjs +43 -0
  80. package/utils/collide/index.js +14 -6
  81. package/utils/css/classes.cjs +46 -0
  82. package/utils/css/classes.js +13 -12
  83. package/utils/css/index.cjs +39 -0
  84. package/utils/css/index.js +10 -6
  85. package/utils/css/matrix.cjs +31 -0
  86. package/utils/css/matrix.js +6 -5
  87. package/utils/css/styles.cjs +49 -0
  88. package/utils/css/styles.js +13 -12
  89. package/utils/css/transition.cjs +119 -0
  90. package/utils/css/transition.js +62 -117
  91. package/utils/debounce.cjs +36 -0
  92. package/utils/debounce.js +7 -9
  93. package/utils/focusTrap.cjs +86 -0
  94. package/utils/focusTrap.js +30 -21
  95. package/utils/history.cjs +93 -0
  96. package/utils/history.js +28 -57
  97. package/utils/index.cjs +55 -0
  98. package/utils/index.d.ts +1 -0
  99. package/utils/index.js +30 -11
  100. package/utils/keyCodes.cjs +37 -0
  101. package/utils/keyCodes.js +5 -2
  102. package/utils/math/clamp.cjs +30 -0
  103. package/utils/math/clamp.js +5 -2
  104. package/utils/math/clamp01.cjs +36 -0
  105. package/utils/math/clamp01.js +6 -3
  106. package/utils/math/damp.cjs +30 -0
  107. package/utils/math/damp.js +5 -4
  108. package/utils/math/ease.cjs +90 -0
  109. package/utils/math/ease.js +50 -25
  110. package/utils/math/index.cjs +46 -0
  111. package/utils/math/index.js +17 -8
  112. package/utils/math/inertiaFinalValue.cjs +39 -0
  113. package/utils/math/inertiaFinalValue.js +8 -10
  114. package/utils/math/lerp.cjs +30 -0
  115. package/utils/math/lerp.js +5 -2
  116. package/utils/math/map.cjs +30 -0
  117. package/utils/math/map.js +5 -2
  118. package/utils/math/round.cjs +30 -0
  119. package/utils/math/round.js +5 -3
  120. package/utils/memoize.cjs +45 -0
  121. package/utils/memoize.js +10 -19
  122. package/utils/nextFrame.cjs +42 -0
  123. package/utils/nextFrame.js +14 -9
  124. package/utils/object/autoBind.cjs +53 -0
  125. package/utils/object/autoBind.js +12 -22
  126. package/utils/object/getAllProperties.cjs +39 -0
  127. package/utils/object/getAllProperties.js +10 -13
  128. package/utils/object/index.cjs +37 -0
  129. package/utils/object/index.js +8 -3
  130. package/utils/object/isObject.cjs +30 -0
  131. package/utils/object/isObject.js +6 -3
  132. package/utils/scrollTo.cjs +84 -0
  133. package/utils/scrollTo.js +20 -40
  134. package/utils/string/index.cjs +51 -0
  135. package/utils/string/index.js +22 -10
  136. package/utils/string/withLeadingCharacters.cjs +36 -0
  137. package/utils/string/withLeadingCharacters.js +7 -4
  138. package/utils/string/withLeadingSlash.cjs +36 -0
  139. package/utils/string/withLeadingSlash.js +7 -4
  140. package/utils/string/withTrailingCharacters.cjs +36 -0
  141. package/utils/string/withTrailingCharacters.js +7 -4
  142. package/utils/string/withTrailingSlash.cjs +36 -0
  143. package/utils/string/withTrailingSlash.js +7 -4
  144. package/utils/string/withoutLeadingCharacters.cjs +30 -0
  145. package/utils/string/withoutLeadingCharacters.js +6 -3
  146. package/utils/string/withoutLeadingCharactersRecursive.cjs +41 -0
  147. package/utils/string/withoutLeadingCharactersRecursive.js +8 -7
  148. package/utils/string/withoutLeadingSlash.cjs +36 -0
  149. package/utils/string/withoutLeadingSlash.js +7 -4
  150. package/utils/string/withoutTrailingCharacters.cjs +30 -0
  151. package/utils/string/withoutTrailingCharacters.js +6 -3
  152. package/utils/string/withoutTrailingCharactersRecursive.cjs +41 -0
  153. package/utils/string/withoutTrailingCharactersRecursive.js +8 -7
  154. package/utils/string/withoutTrailingSlash.cjs +36 -0
  155. package/utils/string/withoutTrailingSlash.js +7 -4
  156. package/utils/throttle.cjs +38 -0
  157. package/utils/throttle.js +9 -9
  158. package/index.modern.js +0 -1
  159. package/index.umd.js +0 -1
@@ -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);
@@ -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;
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,108 +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
- 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('remove');
125
+ this.__manageRootElement("remove");
161
126
  }
162
-
163
- __getEventNameByMethod(method) {
164
- var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
165
- var normalizedName = EventsManager.normalizeName(name);
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
- __getEventMethodsByName() {
172
- var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
173
- var normalizedName = EventsManager.normalizeName(name);
174
- var regex = new RegExp("^on".concat(normalizedName, "[A-Z].*$"));
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, _ref) => {
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, ' ').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();
193
146
  }
194
-
195
147
  static normalizeEventName(name) {
196
- return name.replace(/[A-Z]/g, c => "-".concat(c.toLowerCase())).replace(/^-/, '');
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,167 @@
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 OptionsManager_exports = {};
29
+ __export(OptionsManager_exports, {
30
+ default: () => OptionsManager
31
+ });
32
+ var import_deepmerge = __toESM(require("deepmerge"), 1);
33
+ var import_isObject = __toESM(require("../../utils/object/isObject.js"), 1);
34
+ class OptionsManager {
35
+ __element;
36
+ __values = {};
37
+ static types = [String, Number, Boolean, Array, Object];
38
+ __defaultValues = {
39
+ String: "",
40
+ Number: 0,
41
+ Boolean: false,
42
+ Array: () => [],
43
+ Object: () => ({})
44
+ };
45
+ name = "Base";
46
+ debug = false;
47
+ log = false;
48
+ constructor(element, schema, baseConfig) {
49
+ Object.defineProperties(this, {
50
+ __element: {
51
+ enumerable: false,
52
+ writable: false,
53
+ value: element
54
+ },
55
+ __values: {
56
+ enumerable: false,
57
+ writable: false,
58
+ value: this.__values
59
+ },
60
+ __defaultValues: {
61
+ enumerable: false,
62
+ writable: false,
63
+ value: this.__defaultValues
64
+ }
65
+ });
66
+ this.name = baseConfig.name;
67
+ schema.debug = {
68
+ type: Boolean,
69
+ default: baseConfig.debug ?? false
70
+ };
71
+ schema.log = {
72
+ type: Boolean,
73
+ default: baseConfig.log ?? false
74
+ };
75
+ Object.entries(schema).forEach(([name, config]) => {
76
+ this.__register(name, config);
77
+ });
78
+ return this;
79
+ }
80
+ __register(name, config) {
81
+ const hasDefaultValue = !OptionsManager.types.includes(config);
82
+ const type = hasDefaultValue ? config.type : config;
83
+ if (!OptionsManager.types.includes(type)) {
84
+ throw new Error(`The "${name}" option has an invalid type. The allowed types are: String, Number, Boolean, Array and Object.`);
85
+ }
86
+ const defaultValue = hasDefaultValue ? config.default : this.__defaultValues[type.name];
87
+ if ((type === Array || type === Object) && typeof defaultValue !== "function") {
88
+ throw new Error(`The default value for options of type "${type.name}" must be returned by a function.`);
89
+ }
90
+ Object.defineProperty(this, name, {
91
+ get: () => {
92
+ return this.get(name, type, defaultValue);
93
+ },
94
+ set: (value) => {
95
+ this.set(name, type, value, defaultValue);
96
+ },
97
+ enumerable: true
98
+ });
99
+ }
100
+ get(name, type, defaultValue) {
101
+ const propertyName = OptionsManager.__getPropertyName(name);
102
+ const hasProperty = this.__hasProperty(propertyName);
103
+ if (type === Boolean) {
104
+ if (defaultValue) {
105
+ const negatedPropertyName = OptionsManager.__getPropertyName(name, "No");
106
+ const hasNegatedProperty = this.__hasProperty(negatedPropertyName);
107
+ return !hasNegatedProperty;
108
+ }
109
+ return hasProperty || defaultValue;
110
+ }
111
+ const value = this.__element.dataset[propertyName];
112
+ if (type === Number) {
113
+ return hasProperty ? Number(value) : defaultValue;
114
+ }
115
+ if (type === Array || type === Object) {
116
+ const val = (0, import_deepmerge.default)(defaultValue(), hasProperty ? JSON.parse(value) : this.__defaultValues[type.name]());
117
+ if (!this.__values[name]) {
118
+ this.__values[name] = val;
119
+ }
120
+ return this.__values[name];
121
+ }
122
+ return hasProperty ? value : defaultValue;
123
+ }
124
+ set(name, type, value, defaultValue) {
125
+ const propertyName = OptionsManager.__getPropertyName(name);
126
+ if (value.constructor.name !== type.name) {
127
+ const val = Array.isArray(value) || (0, import_isObject.default)(value) ? JSON.stringify(value) : value;
128
+ throw new TypeError(`The "${val}" value for the "${name}" option must be of type "${type.name}"`);
129
+ }
130
+ switch (type) {
131
+ case Boolean:
132
+ if (defaultValue) {
133
+ const negatedPropertyName = OptionsManager.__getPropertyName(name, "No");
134
+ if (value) {
135
+ delete this.__element.dataset[negatedPropertyName];
136
+ } else {
137
+ this.__element.dataset[negatedPropertyName] = "";
138
+ }
139
+ } else if (value) {
140
+ this.__element.dataset[propertyName] = "";
141
+ } else {
142
+ delete this.__element.dataset[propertyName];
143
+ }
144
+ break;
145
+ case Array:
146
+ case Object:
147
+ this.__values[name] = value;
148
+ break;
149
+ default:
150
+ this.__element.dataset[propertyName] = value;
151
+ }
152
+ }
153
+ __hasProperty(prop) {
154
+ return typeof this.__element.dataset[prop] !== "undefined";
155
+ }
156
+ static __propertyNameCache = /* @__PURE__ */ new Map();
157
+ static __getPropertyName(name, prefix = "") {
158
+ const key = name + prefix;
159
+ if (OptionsManager.__propertyNameCache.has(key)) {
160
+ return OptionsManager.__propertyNameCache.get(key);
161
+ }
162
+ const propertyName = `option${prefix}${name.replace(/^\w/, (c) => c.toUpperCase())}`;
163
+ OptionsManager.__propertyNameCache.set(key, propertyName);
164
+ return propertyName;
165
+ }
166
+ }
167
+ module.exports = __toCommonJS(OptionsManager_exports);