@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.
Files changed (159) hide show
  1. package/Base/index.cjs +295 -0
  2. package/Base/index.js +88 -174
  3. package/Base/managers/ChildrenManager.cjs +125 -0
  4. package/Base/managers/ChildrenManager.js +29 -55
  5. package/Base/managers/EventsManager.cjs +185 -0
  6. package/Base/managers/EventsManager.js +84 -130
  7. package/Base/managers/OptionsManager.cjs +176 -0
  8. package/Base/managers/OptionsManager.js +46 -88
  9. package/Base/managers/RefsManager.cjs +99 -0
  10. package/Base/managers/RefsManager.js +22 -38
  11. package/Base/managers/ServicesManager.cjs +133 -0
  12. package/Base/managers/ServicesManager.js +31 -65
  13. package/Base/utils.cjs +46 -0
  14. package/Base/utils.js +12 -11
  15. package/decorators/index.cjs +50 -0
  16. package/decorators/index.js +18 -8
  17. package/decorators/withBreakpointManager.cjs +92 -0
  18. package/decorators/withBreakpointManager.js +18 -39
  19. package/decorators/withBreakpointObserver.cjs +117 -0
  20. package/decorators/withBreakpointObserver.js +40 -88
  21. package/decorators/withDrag.cjs +55 -0
  22. package/decorators/withDrag.js +18 -26
  23. package/decorators/withExtraConfig.cjs +45 -0
  24. package/decorators/withExtraConfig.js +11 -12
  25. package/decorators/withIntersectionObserver.cjs +62 -0
  26. package/decorators/withIntersectionObserver.js +23 -32
  27. package/decorators/withMountWhenInView.cjs +69 -0
  28. package/decorators/withMountWhenInView.js +26 -53
  29. package/decorators/withScrolledInView.cjs +113 -0
  30. package/decorators/withScrolledInView.js +50 -63
  31. package/decorators/withVue2.cjs +61 -0
  32. package/decorators/withVue2.js +21 -32
  33. package/helpers/createApp.cjs +57 -0
  34. package/helpers/createApp.js +12 -12
  35. package/helpers/importOnInteraction.cjs +57 -0
  36. package/helpers/importOnInteraction.js +17 -18
  37. package/helpers/importWhenIdle.cjs +53 -0
  38. package/helpers/importWhenIdle.js +13 -17
  39. package/helpers/importWhenVisible.cjs +55 -0
  40. package/helpers/importWhenVisible.js +16 -18
  41. package/helpers/index.cjs +42 -0
  42. package/helpers/index.js +10 -4
  43. package/helpers/utils.cjs +40 -0
  44. package/helpers/utils.js +7 -6
  45. package/index.cjs +39 -0
  46. package/index.js +7 -4
  47. package/package.json +14 -3
  48. package/services/Service.cjs +76 -0
  49. package/services/Service.js +13 -32
  50. package/services/drag.cjs +195 -0
  51. package/services/drag.js +60 -90
  52. package/services/index.cjs +48 -0
  53. package/services/index.js +16 -7
  54. package/services/key.cjs +102 -0
  55. package/services/key.js +34 -52
  56. package/services/load.cjs +71 -0
  57. package/services/load.js +13 -24
  58. package/services/pointer.cjs +160 -0
  59. package/services/pointer.js +60 -87
  60. package/services/raf.cjs +82 -0
  61. package/services/raf.js +16 -33
  62. package/services/resize.cjs +107 -0
  63. package/services/resize.js +31 -49
  64. package/services/scroll.cjs +130 -0
  65. package/services/scroll.js +44 -62
  66. package/utils/collide/boundingRectToCircle.cjs +39 -0
  67. package/utils/collide/boundingRectToCircle.d.ts +1 -1
  68. package/utils/collide/boundingRectToCircle.js +7 -10
  69. package/utils/collide/collideCircleCircle.cjs +39 -0
  70. package/utils/collide/collideCircleCircle.js +8 -7
  71. package/utils/collide/collideCircleRect.cjs +51 -0
  72. package/utils/collide/collideCircleRect.js +10 -12
  73. package/utils/collide/collidePointCircle.cjs +36 -0
  74. package/utils/collide/collidePointCircle.js +8 -5
  75. package/utils/collide/collidePointRect.cjs +33 -0
  76. package/utils/collide/collidePointRect.js +5 -2
  77. package/utils/collide/collideRectRect.cjs +33 -0
  78. package/utils/collide/collideRectRect.js +5 -2
  79. package/utils/collide/index.cjs +46 -0
  80. package/utils/collide/index.js +14 -6
  81. package/utils/css/classes.cjs +49 -0
  82. package/utils/css/classes.js +13 -12
  83. package/utils/css/index.cjs +42 -0
  84. package/utils/css/index.js +10 -6
  85. package/utils/css/matrix.cjs +34 -0
  86. package/utils/css/matrix.js +6 -5
  87. package/utils/css/styles.cjs +52 -0
  88. package/utils/css/styles.js +13 -12
  89. package/utils/css/transition.cjs +122 -0
  90. package/utils/css/transition.js +62 -117
  91. package/utils/debounce.cjs +39 -0
  92. package/utils/debounce.js +7 -9
  93. package/utils/focusTrap.cjs +89 -0
  94. package/utils/focusTrap.js +30 -21
  95. package/utils/history.cjs +96 -0
  96. package/utils/history.js +28 -57
  97. package/utils/index.cjs +58 -0
  98. package/utils/index.d.ts +1 -0
  99. package/utils/index.js +30 -11
  100. package/utils/keyCodes.cjs +40 -0
  101. package/utils/keyCodes.js +5 -2
  102. package/utils/math/clamp.cjs +33 -0
  103. package/utils/math/clamp.js +5 -2
  104. package/utils/math/clamp01.cjs +39 -0
  105. package/utils/math/clamp01.js +6 -3
  106. package/utils/math/damp.cjs +33 -0
  107. package/utils/math/damp.js +5 -4
  108. package/utils/math/ease.cjs +93 -0
  109. package/utils/math/ease.js +50 -25
  110. package/utils/math/index.cjs +49 -0
  111. package/utils/math/index.js +17 -8
  112. package/utils/math/inertiaFinalValue.cjs +42 -0
  113. package/utils/math/inertiaFinalValue.js +8 -10
  114. package/utils/math/lerp.cjs +33 -0
  115. package/utils/math/lerp.js +5 -2
  116. package/utils/math/map.cjs +33 -0
  117. package/utils/math/map.js +5 -2
  118. package/utils/math/round.cjs +33 -0
  119. package/utils/math/round.js +5 -3
  120. package/utils/memoize.cjs +48 -0
  121. package/utils/memoize.js +10 -19
  122. package/utils/nextFrame.cjs +45 -0
  123. package/utils/nextFrame.js +14 -9
  124. package/utils/object/autoBind.cjs +56 -0
  125. package/utils/object/autoBind.js +12 -22
  126. package/utils/object/getAllProperties.cjs +42 -0
  127. package/utils/object/getAllProperties.js +10 -13
  128. package/utils/object/index.cjs +40 -0
  129. package/utils/object/index.js +8 -3
  130. package/utils/object/isObject.cjs +33 -0
  131. package/utils/object/isObject.js +6 -3
  132. package/utils/scrollTo.cjs +87 -0
  133. package/utils/scrollTo.js +20 -40
  134. package/utils/string/index.cjs +54 -0
  135. package/utils/string/index.js +22 -10
  136. package/utils/string/withLeadingCharacters.cjs +39 -0
  137. package/utils/string/withLeadingCharacters.js +7 -4
  138. package/utils/string/withLeadingSlash.cjs +39 -0
  139. package/utils/string/withLeadingSlash.js +7 -4
  140. package/utils/string/withTrailingCharacters.cjs +39 -0
  141. package/utils/string/withTrailingCharacters.js +7 -4
  142. package/utils/string/withTrailingSlash.cjs +39 -0
  143. package/utils/string/withTrailingSlash.js +7 -4
  144. package/utils/string/withoutLeadingCharacters.cjs +33 -0
  145. package/utils/string/withoutLeadingCharacters.js +6 -3
  146. package/utils/string/withoutLeadingCharactersRecursive.cjs +44 -0
  147. package/utils/string/withoutLeadingCharactersRecursive.js +8 -7
  148. package/utils/string/withoutLeadingSlash.cjs +39 -0
  149. package/utils/string/withoutLeadingSlash.js +7 -4
  150. package/utils/string/withoutTrailingCharacters.cjs +33 -0
  151. package/utils/string/withoutTrailingCharacters.js +6 -3
  152. package/utils/string/withoutTrailingCharactersRecursive.cjs +44 -0
  153. package/utils/string/withoutTrailingCharactersRecursive.js +8 -7
  154. package/utils/string/withoutTrailingSlash.cjs +39 -0
  155. package/utils/string/withoutTrailingSlash.js +7 -4
  156. package/utils/throttle.cjs +41 -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,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 _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,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;