@studiometa/js-toolkit 1.7.2 → 2.0.0-alpha.10

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 (237) hide show
  1. package/Base/index.d.ts +217 -0
  2. package/Base/index.js +237 -0
  3. package/Base/managers/ChildrenManager.d.ts +108 -0
  4. package/Base/managers/ChildrenManager.js +124 -0
  5. package/Base/managers/EventsManager.d.ts +190 -0
  6. package/Base/managers/EventsManager.js +195 -0
  7. package/Base/managers/OptionsManager.d.ts +120 -0
  8. package/Base/managers/OptionsManager.js +180 -0
  9. package/Base/managers/RefsManager.d.ts +84 -0
  10. package/Base/managers/RefsManager.js +83 -0
  11. package/{abstracts/Base/classes/Services.d.ts → Base/managers/ServicesManager.d.ts} +22 -7
  12. package/Base/managers/ServicesManager.js +115 -0
  13. package/{abstracts/Base → Base}/utils.d.ts +0 -30
  14. package/Base/utils.js +43 -0
  15. package/README.md +12 -70
  16. package/decorators/index.js +1 -2
  17. package/decorators/withBreakpointManager.d.ts +5 -5
  18. package/decorators/withBreakpointManager.js +41 -79
  19. package/decorators/withBreakpointObserver.d.ts +4 -4
  20. package/decorators/withBreakpointObserver.js +54 -77
  21. package/decorators/withDrag.d.ts +6 -6
  22. package/decorators/withDrag.js +17 -41
  23. package/decorators/withExtraConfig.d.ts +6 -6
  24. package/decorators/withExtraConfig.js +2 -24
  25. package/decorators/withIntersectionObserver.d.ts +4 -4
  26. package/decorators/withIntersectionObserver.js +17 -60
  27. package/decorators/withMountWhenInView.d.ts +8 -8
  28. package/decorators/withMountWhenInView.js +23 -51
  29. package/helpers/createApp.d.ts +4 -4
  30. package/helpers/createApp.js +10 -12
  31. package/helpers/importOnInteraction.d.ts +6 -6
  32. package/helpers/importOnInteraction.js +7 -8
  33. package/helpers/importWhenIdle.d.ts +4 -4
  34. package/helpers/importWhenIdle.js +7 -8
  35. package/helpers/importWhenVisible.d.ts +6 -6
  36. package/helpers/importWhenVisible.js +9 -16
  37. package/helpers/index.d.ts +1 -3
  38. package/helpers/index.js +1 -4
  39. package/helpers/utils.js +2 -3
  40. package/index.d.ts +19 -5
  41. package/index.js +5 -6
  42. package/index.modern.js +1 -3230
  43. package/index.umd.js +1 -3586
  44. package/package.json +3 -6
  45. package/{abstracts → services}/Service.d.ts +0 -0
  46. package/services/Service.js +63 -0
  47. package/services/drag.js +144 -180
  48. package/services/index.js +1 -2
  49. package/services/key.js +56 -98
  50. package/services/load.d.ts +1 -1
  51. package/services/load.js +22 -51
  52. package/services/pointer.js +118 -157
  53. package/services/raf.js +37 -65
  54. package/services/resize.js +46 -98
  55. package/services/scroll.js +81 -120
  56. package/utils/collide/boundingRectToCircle.js +7 -6
  57. package/utils/collide/collideCircleCircle.js +1 -2
  58. package/utils/collide/collideCircleRect.js +1 -2
  59. package/utils/collide/collidePointCircle.js +1 -2
  60. package/utils/collide/collidePointRect.js +1 -2
  61. package/utils/collide/collideRectRect.js +1 -2
  62. package/utils/collide/index.js +1 -2
  63. package/utils/css/classes.js +2 -3
  64. package/utils/css/index.js +1 -2
  65. package/utils/css/matrix.js +1 -2
  66. package/utils/css/styles.js +3 -8
  67. package/utils/css/transition.js +67 -140
  68. package/utils/debounce.js +3 -4
  69. package/utils/focusTrap.js +4 -5
  70. package/utils/history.js +12 -19
  71. package/utils/index.d.ts +2 -1
  72. package/utils/index.js +2 -2
  73. package/utils/keyCodes.js +1 -2
  74. package/utils/math/clamp.js +1 -2
  75. package/utils/math/clamp01.js +1 -2
  76. package/utils/math/damp.js +1 -2
  77. package/utils/math/index.js +1 -2
  78. package/utils/math/inertiaFinalValue.js +1 -2
  79. package/utils/math/lerp.js +1 -2
  80. package/utils/math/map.js +1 -2
  81. package/utils/math/round.js +1 -2
  82. package/utils/memoize.d.ts +30 -0
  83. package/utils/memoize.js +30 -0
  84. package/utils/nextFrame.js +4 -9
  85. package/utils/object/autoBind.js +11 -19
  86. package/utils/object/getAllProperties.d.ts +6 -3
  87. package/utils/object/getAllProperties.js +10 -8
  88. package/utils/object/index.js +1 -2
  89. package/utils/object/isObject.js +2 -4
  90. package/utils/string/index.js +1 -2
  91. package/utils/string/withLeadingCharacters.js +1 -2
  92. package/utils/string/withLeadingSlash.js +1 -2
  93. package/utils/string/withTrailingCharacters.js +1 -2
  94. package/utils/string/withTrailingSlash.js +1 -2
  95. package/utils/string/withoutLeadingCharacters.js +1 -2
  96. package/utils/string/withoutLeadingCharactersRecursive.js +1 -2
  97. package/utils/string/withoutLeadingSlash.js +1 -2
  98. package/utils/string/withoutTrailingCharacters.js +1 -2
  99. package/utils/string/withoutTrailingCharactersRecursive.js +1 -2
  100. package/utils/string/withoutTrailingSlash.js +1 -2
  101. package/utils/throttle.js +2 -3
  102. package/abstracts/Base/children.d.ts +0 -16
  103. package/abstracts/Base/children.js +0 -66
  104. package/abstracts/Base/children.js.map +0 -1
  105. package/abstracts/Base/classes/Options.d.ts +0 -37
  106. package/abstracts/Base/classes/Options.js +0 -182
  107. package/abstracts/Base/classes/Options.js.map +0 -1
  108. package/abstracts/Base/classes/Services.js +0 -120
  109. package/abstracts/Base/classes/Services.js.map +0 -1
  110. package/abstracts/Base/components.d.ts +0 -22
  111. package/abstracts/Base/components.js +0 -67
  112. package/abstracts/Base/components.js.map +0 -1
  113. package/abstracts/Base/events.d.ts +0 -8
  114. package/abstracts/Base/events.js +0 -185
  115. package/abstracts/Base/events.js.map +0 -1
  116. package/abstracts/Base/index.d.ts +0 -176
  117. package/abstracts/Base/index.js +0 -215
  118. package/abstracts/Base/index.js.map +0 -1
  119. package/abstracts/Base/options.d.ts +0 -17
  120. package/abstracts/Base/options.js +0 -112
  121. package/abstracts/Base/options.js.map +0 -1
  122. package/abstracts/Base/refs.d.ts +0 -30
  123. package/abstracts/Base/refs.js +0 -60
  124. package/abstracts/Base/refs.js.map +0 -1
  125. package/abstracts/Base/utils.js +0 -102
  126. package/abstracts/Base/utils.js.map +0 -1
  127. package/abstracts/EventManager.d.ts +0 -41
  128. package/abstracts/EventManager.js +0 -88
  129. package/abstracts/EventManager.js.map +0 -1
  130. package/abstracts/Service.js +0 -82
  131. package/abstracts/Service.js.map +0 -1
  132. package/abstracts/index.d.ts +0 -4
  133. package/abstracts/index.js +0 -5
  134. package/abstracts/index.js.map +0 -1
  135. package/components/Accordion/Accordion.d.ts +0 -83
  136. package/components/Accordion/Accordion.js +0 -121
  137. package/components/Accordion/Accordion.js.map +0 -1
  138. package/components/Accordion/AccordionItem.d.ts +0 -122
  139. package/components/Accordion/AccordionItem.js +0 -327
  140. package/components/Accordion/AccordionItem.js.map +0 -1
  141. package/components/Accordion/index.d.ts +0 -27
  142. package/components/Accordion/index.js +0 -39
  143. package/components/Accordion/index.js.map +0 -1
  144. package/components/Cursor.d.ts +0 -138
  145. package/components/Cursor.js +0 -167
  146. package/components/Cursor.js.map +0 -1
  147. package/components/Draggable.d.ts +0 -49
  148. package/components/Draggable.js +0 -77
  149. package/components/Draggable.js.map +0 -1
  150. package/components/Modal.d.ts +0 -158
  151. package/components/Modal.js +0 -270
  152. package/components/Modal.js.map +0 -1
  153. package/components/Tabs.d.ts +0 -108
  154. package/components/Tabs.js +0 -195
  155. package/components/Tabs.js.map +0 -1
  156. package/components/index.d.ts +0 -6
  157. package/components/index.js +0 -7
  158. package/components/index.js.map +0 -1
  159. package/decorators/index.js.map +0 -1
  160. package/decorators/withBreakpointManager.js.map +0 -1
  161. package/decorators/withBreakpointObserver.js.map +0 -1
  162. package/decorators/withDrag.js.map +0 -1
  163. package/decorators/withExtraConfig.js.map +0 -1
  164. package/decorators/withIntersectionObserver.js.map +0 -1
  165. package/decorators/withMountWhenInView.js.map +0 -1
  166. package/full.d.ts +0 -10
  167. package/full.js +0 -12
  168. package/full.js.map +0 -1
  169. package/full.modern.js +0 -7523
  170. package/full.modern.js.map +0 -1
  171. package/full.umd.js +0 -8277
  172. package/full.umd.js.map +0 -1
  173. package/helpers/createApp.js.map +0 -1
  174. package/helpers/createBase.d.ts +0 -7
  175. package/helpers/createBase.js +0 -7
  176. package/helpers/createBase.js.map +0 -1
  177. package/helpers/defineComponent.d.ts +0 -11
  178. package/helpers/defineComponent.js +0 -68
  179. package/helpers/defineComponent.js.map +0 -1
  180. package/helpers/importOnInteraction.js.map +0 -1
  181. package/helpers/importWhenIdle.js.map +0 -1
  182. package/helpers/importWhenVisible.js.map +0 -1
  183. package/helpers/index.js.map +0 -1
  184. package/helpers/utils.js.map +0 -1
  185. package/index.js.map +0 -1
  186. package/index.modern.js.map +0 -1
  187. package/index.umd.js.map +0 -1
  188. package/services/drag.js.map +0 -1
  189. package/services/index.js.map +0 -1
  190. package/services/key.js.map +0 -1
  191. package/services/load.js.map +0 -1
  192. package/services/pointer.js.map +0 -1
  193. package/services/raf.js.map +0 -1
  194. package/services/resize.js.map +0 -1
  195. package/services/scroll.js.map +0 -1
  196. package/utils/collide/boundingRectToCircle.js.map +0 -1
  197. package/utils/collide/collideCircleCircle.js.map +0 -1
  198. package/utils/collide/collideCircleRect.js.map +0 -1
  199. package/utils/collide/collidePointCircle.js.map +0 -1
  200. package/utils/collide/collidePointRect.js.map +0 -1
  201. package/utils/collide/collideRectRect.js.map +0 -1
  202. package/utils/collide/index.js.map +0 -1
  203. package/utils/css/classes.js.map +0 -1
  204. package/utils/css/index.js.map +0 -1
  205. package/utils/css/matrix.js.map +0 -1
  206. package/utils/css/styles.js.map +0 -1
  207. package/utils/css/transition.js.map +0 -1
  208. package/utils/debounce.js.map +0 -1
  209. package/utils/focusTrap.js.map +0 -1
  210. package/utils/history.js.map +0 -1
  211. package/utils/index.js.map +0 -1
  212. package/utils/keyCodes.js.map +0 -1
  213. package/utils/math/clamp.js.map +0 -1
  214. package/utils/math/clamp01.js.map +0 -1
  215. package/utils/math/damp.js.map +0 -1
  216. package/utils/math/index.js.map +0 -1
  217. package/utils/math/inertiaFinalValue.js.map +0 -1
  218. package/utils/math/lerp.js.map +0 -1
  219. package/utils/math/map.js.map +0 -1
  220. package/utils/math/round.js.map +0 -1
  221. package/utils/nextFrame.js.map +0 -1
  222. package/utils/object/autoBind.js.map +0 -1
  223. package/utils/object/getAllProperties.js.map +0 -1
  224. package/utils/object/index.js.map +0 -1
  225. package/utils/object/isObject.js.map +0 -1
  226. package/utils/string/index.js.map +0 -1
  227. package/utils/string/withLeadingCharacters.js.map +0 -1
  228. package/utils/string/withLeadingSlash.js.map +0 -1
  229. package/utils/string/withTrailingCharacters.js.map +0 -1
  230. package/utils/string/withTrailingSlash.js.map +0 -1
  231. package/utils/string/withoutLeadingCharacters.js.map +0 -1
  232. package/utils/string/withoutLeadingCharactersRecursive.js.map +0 -1
  233. package/utils/string/withoutLeadingSlash.js.map +0 -1
  234. package/utils/string/withoutTrailingCharacters.js.map +0 -1
  235. package/utils/string/withoutTrailingCharactersRecursive.js.map +0 -1
  236. package/utils/string/withoutTrailingSlash.js.map +0 -1
  237. package/utils/throttle.js.map +0 -1
@@ -1,8 +0,0 @@
1
- /**
2
- * Bind ref and children component's events to their corresponding method.
3
- *
4
- * @param {Base} instance A Base instance.
5
- * @return {Array} A list of methods to unbind the events.
6
- */
7
- export default function bindEvents(instance: Base): any[];
8
- export type Base = import('./index.js').default;
@@ -1,185 +0,0 @@
1
- import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
- import _regeneratorRuntime from "@babel/runtime/regenerator";
5
- import getAllProperties from '../../utils/object/getAllProperties.js';
6
- import { debug } from './utils.js';
7
-
8
- function bindRootEvents(instance, eventMethods) {
9
- return eventMethods.map(function (eventMethod) {
10
- var eventName = eventMethod.replace(/^on/, '').toLowerCase();
11
-
12
- var handler = function handler() {
13
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
14
- args[_key] = arguments[_key];
15
- }
16
-
17
- if (__DEV__) {
18
- debug.apply(void 0, [instance, eventMethod, instance.$el].concat(args));
19
- }
20
-
21
- instance[eventMethod].apply(instance, args);
22
- };
23
-
24
- instance.$el.addEventListener(eventName, handler);
25
- return function () {
26
- instance.$el.removeEventListener(eventName, handler);
27
- };
28
- });
29
- }
30
-
31
- function bindRefsEvents(instance, eventMethods) {
32
- var unbindMethods = [];
33
- Object.entries(instance.$refs).forEach(function (_ref) {
34
- var _ref2 = _slicedToArray(_ref, 2),
35
- refName = _ref2[0],
36
- $refOrRefs = _ref2[1];
37
-
38
- var $refs = Array.isArray($refOrRefs) ? $refOrRefs : [$refOrRefs];
39
- var refEventMethod = "on".concat(refName.replace(/^\w/, function (c) {
40
- return c.toUpperCase();
41
- }));
42
- eventMethods.filter(function (eventMethod) {
43
- return eventMethod.startsWith(refEventMethod);
44
- }).forEach(function (eventMethod) {
45
- $refs.forEach(function ($ref, index) {
46
- var eventName = eventMethod.replace(refEventMethod, '').toLowerCase();
47
-
48
- var handler = function handler() {
49
- for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
50
- args[_key2] = arguments[_key2];
51
- }
52
-
53
- if (__DEV__) {
54
- debug.apply(void 0, [instance, eventMethod, $ref].concat(args, [index]));
55
- }
56
-
57
- instance[eventMethod].apply(instance, args.concat([index]));
58
- };
59
-
60
- if (__DEV__) {
61
- debug(instance, 'binding ref event', refName, eventName);
62
- }
63
-
64
- if ($ref instanceof instance.constructor) {
65
- $ref = $ref.$el;
66
- }
67
-
68
- $ref.addEventListener(eventName, handler);
69
-
70
- var unbindMethod = function unbindMethod() {
71
- if (__DEV__) {
72
- debug(instance, 'unbinding ref event', refName, eventMethod);
73
- }
74
-
75
- $ref.removeEventListener(eventName, handler);
76
- };
77
-
78
- unbindMethods.push(unbindMethod);
79
- });
80
- });
81
- });
82
- return unbindMethods;
83
- }
84
-
85
- function bindChildrenEvents(instance, eventMethods) {
86
- var unbindMethods = [];
87
- Object.entries(instance.$children).forEach(function (_ref3) {
88
- var _ref4 = _slicedToArray(_ref3, 2),
89
- childName = _ref4[0],
90
- $children = _ref4[1];
91
-
92
- var childEventMethod = "on".concat(childName.replace(/^\w/, function (c) {
93
- return c.toUpperCase();
94
- }));
95
- eventMethods.filter(function (eventMethod) {
96
- return eventMethod.startsWith(childEventMethod);
97
- }).forEach(function (eventMethod) {
98
- $children.forEach(function () {
99
- var _ref5 = _asyncToGenerator(_regeneratorRuntime.mark(function _callee($child, index) {
100
- var eventName, handler, unbindMethod;
101
- return _regeneratorRuntime.wrap(function _callee$(_context) {
102
- while (1) {
103
- switch (_context.prev = _context.next) {
104
- case 0:
105
- eventName = eventMethod.replace(childEventMethod, '').toLowerCase();
106
-
107
- handler = function handler() {
108
- for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
109
- args[_key3] = arguments[_key3];
110
- }
111
-
112
- if (__DEV__) {
113
- debug.apply(void 0, [instance, eventMethod, $child].concat(args, [index]));
114
- }
115
-
116
- instance[eventMethod].apply(instance, args.concat([index]));
117
- };
118
-
119
- if (__DEV__) {
120
- debug(instance, 'binding child event', childName, eventName);
121
- }
122
-
123
- if (!($child instanceof Promise)) {
124
- _context.next = 7;
125
- break;
126
- }
127
-
128
- _context.next = 6;
129
- return $child;
130
-
131
- case 6:
132
- $child = _context.sent;
133
-
134
- case 7:
135
- unbindMethod = $child.$on(eventName, handler);
136
- unbindMethods.push(function () {
137
- if (__DEV__) {
138
- debug(instance, 'unbinding child event', childName, eventName);
139
- }
140
-
141
- unbindMethod();
142
- });
143
-
144
- case 9:
145
- case "end":
146
- return _context.stop();
147
- }
148
- }
149
- }, _callee);
150
- }));
151
-
152
- return function (_x, _x2) {
153
- return _ref5.apply(this, arguments);
154
- };
155
- }());
156
- });
157
- });
158
- return unbindMethods;
159
- }
160
-
161
- export default function bindEvents(instance) {
162
- var ROOT_EVENT_REGEX = /^on[A-Z][a-z]+$/;
163
- var REFS_CHILDREN_EVENT_REGEX = /^on([A-Z]([a-z]+)?)([A-Z][a-z]+)+$/;
164
- var eventMethods = getAllProperties(instance).reduce(function (acc, _ref6) {
165
- var _ref7 = _slicedToArray(_ref6, 1),
166
- name = _ref7[0];
167
-
168
- if (ROOT_EVENT_REGEX.test(name) && !acc.root.includes(name)) {
169
- acc.root.push(name);
170
- return acc;
171
- }
172
-
173
- if (REFS_CHILDREN_EVENT_REGEX.test(name) && !acc.refsOrChildren.includes(name)) {
174
- acc.refsOrChildren.push(name);
175
- }
176
-
177
- return acc;
178
- }, {
179
- root: [],
180
- refsOrChildren: []
181
- });
182
- var unbindMethods = [].concat(_toConsumableArray(bindRootEvents(instance, eventMethods.root)), _toConsumableArray(bindRefsEvents(instance, eventMethods.refsOrChildren)), _toConsumableArray(bindChildrenEvents(instance, eventMethods.refsOrChildren)));
183
- return unbindMethods;
184
- }
185
- //# sourceMappingURL=events.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../packages/js-toolkit/abstracts/Base/events.js"],"names":["getAllProperties","debug","bindRootEvents","instance","eventMethods","map","eventMethod","eventName","replace","toLowerCase","handler","args","__DEV__","$el","addEventListener","removeEventListener","bindRefsEvents","unbindMethods","Object","entries","$refs","forEach","refName","$refOrRefs","Array","isArray","refEventMethod","c","toUpperCase","filter","startsWith","$ref","index","constructor","unbindMethod","push","bindChildrenEvents","$children","childName","childEventMethod","$child","Promise","$on","bindEvents","ROOT_EVENT_REGEX","REFS_CHILDREN_EVENT_REGEX","reduce","acc","name","test","root","includes","refsOrChildren"],"mappings":"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","sourcesContent":["import getAllProperties from '../../utils/object/getAllProperties.js';\nimport { debug } from './utils.js';\n\n/**\n * @typedef {import('./index.js').default} Base\n */\n\n/**\n * Bind event handler methods to the root HTML element.\n *\n * @param {Base} instance A Base instance.\n * @param {Array} eventMethods A list of methods to bind.\n * @return {Array} A list of unbind functions.\n */\nfunction bindRootEvents(instance, eventMethods) {\n return eventMethods.map((eventMethod) => {\n const eventName = eventMethod.replace(/^on/, '').toLowerCase();\n\n const handler = (...args) => {\n if (__DEV__) {\n debug(instance, eventMethod, instance.$el, ...args);\n }\n instance[eventMethod](...args);\n };\n\n instance.$el.addEventListener(eventName, handler);\n\n return () => {\n instance.$el.removeEventListener(eventName, handler);\n };\n });\n}\n\n/**\n * Bind event handler methods to refs HTML element.\n *\n * @param {Base} instance A Base instance.\n * @param {Array} eventMethods A list of methods to bind.\n * @return {Array} A list of unbind functions.\n */\nfunction bindRefsEvents(instance, eventMethods) {\n const unbindMethods = [];\n\n Object.entries(instance.$refs).forEach(([refName, $refOrRefs]) => {\n const $refs = Array.isArray($refOrRefs) ? $refOrRefs : [$refOrRefs];\n const refEventMethod = `on${refName.replace(/^\\w/, (c) => c.toUpperCase())}`;\n\n eventMethods\n .filter((eventMethod) => eventMethod.startsWith(refEventMethod))\n .forEach((eventMethod) => {\n $refs.forEach(($ref, index) => {\n const eventName = eventMethod.replace(refEventMethod, '').toLowerCase();\n const handler = (...args) => {\n if (__DEV__) {\n debug(instance, eventMethod, $ref, ...args, index);\n }\n instance[eventMethod](...args, index);\n };\n\n if (__DEV__) {\n debug(instance, 'binding ref event', refName, eventName);\n }\n\n if ($ref instanceof instance.constructor) {\n // @ts-ignore\n $ref = $ref.$el; // eslint-disable-line no-param-reassign\n }\n\n /** @type {HTMLElement} */ ($ref).addEventListener(eventName, handler);\n const unbindMethod = () => {\n if (__DEV__) {\n debug(instance, 'unbinding ref event', refName, eventMethod);\n }\n /** @type {HTMLElement} */ ($ref).removeEventListener(eventName, handler);\n };\n\n unbindMethods.push(unbindMethod);\n });\n });\n });\n\n return unbindMethods;\n}\n\n/**\n * Bind event handler methods to children Base instance.\n * @param {Base} instance A Base instance.\n * @param {Array} eventMethods A list of methods to bind.\n * @return {Array} A list of unbind functions.\n */\nfunction bindChildrenEvents(instance, eventMethods) {\n const unbindMethods = [];\n\n Object.entries(instance.$children).forEach(([childName, $children]) => {\n const childEventMethod = `on${childName.replace(/^\\w/, (c) => c.toUpperCase())}`;\n\n eventMethods\n .filter((eventMethod) => eventMethod.startsWith(childEventMethod))\n .forEach((eventMethod) => {\n $children.forEach(\n /**\n * @param {Base|Promise<Base>} $child\n * @param {Number} index\n */\n async ($child, index) => {\n const eventName = eventMethod.replace(childEventMethod, '').toLowerCase();\n const handler = (...args) => {\n if (__DEV__) {\n debug(instance, eventMethod, $child, ...args, index);\n }\n instance[eventMethod](...args, index);\n };\n\n if (__DEV__) {\n debug(instance, 'binding child event', childName, eventName);\n }\n\n if ($child instanceof Promise) {\n // eslint-disable-next-line no-param-reassign\n $child = await $child;\n }\n\n const unbindMethod = $child.$on(eventName, handler);\n unbindMethods.push(() => {\n if (__DEV__) {\n debug(instance, 'unbinding child event', childName, eventName);\n }\n unbindMethod();\n });\n }\n );\n });\n });\n\n return unbindMethods;\n}\n\n/**\n * Bind ref and children component's events to their corresponding method.\n *\n * @param {Base} instance A Base instance.\n * @return {Array} A list of methods to unbind the events.\n */\nexport default function bindEvents(instance) {\n const ROOT_EVENT_REGEX = /^on[A-Z][a-z]+$/;\n const REFS_CHILDREN_EVENT_REGEX = /^on([A-Z]([a-z]+)?)([A-Z][a-z]+)+$/;\n\n // Get all event methods\n const eventMethods = getAllProperties(instance).reduce(\n (acc, [name]) => {\n // Testing camelCase with one word: onEvent.\n if (ROOT_EVENT_REGEX.test(name) && !acc.root.includes(name)) {\n acc.root.push(name);\n return acc;\n }\n\n // Testing camelCase with more than two words: onRefEvent.\n if (REFS_CHILDREN_EVENT_REGEX.test(name) && !acc.refsOrChildren.includes(name)) {\n acc.refsOrChildren.push(name);\n }\n\n return acc;\n },\n { root: [], refsOrChildren: [] }\n );\n\n const unbindMethods = [\n ...bindRootEvents(instance, eventMethods.root),\n ...bindRefsEvents(instance, eventMethods.refsOrChildren),\n ...bindChildrenEvents(instance, eventMethods.refsOrChildren),\n ];\n\n return unbindMethods;\n}\n"],"file":"events.js"}
@@ -1,176 +0,0 @@
1
- /**
2
- * @typedef {typeof Base} BaseComponent
3
- * @typedef {(Base) => Promise<BaseComponent | { default: BaseComponent }>} BaseAsyncComponent
4
- * @typedef {{ name: string, debug: boolean, log: boolean, [name:string]: any }} BaseOptions
5
- * @typedef {{ [name:string]: HTMLElement | HTMLElement[] | Base | Base[] | Promise<Base> | Promise<Base>[] }} BaseRefs
6
- * @typedef {{ [nameOrSelector:string]: Base[] | Promise<Base>[] }} BaseChildren
7
- * @typedef {{ [nameOrSelector:string]: BaseComponent | BaseAsyncComponent }} BaseConfigComponents
8
- * @typedef {import('./classes/Options').OptionsSchema} BaseConfigOptions
9
- */
10
- /**
11
- * @typedef {Object} BaseConfig
12
- * @property {String} name
13
- * @property {Boolean} [debug]
14
- * @property {Boolean} [log]
15
- * @property {String[]} [refs]
16
- * @property {BaseConfigComponents} [components]
17
- * @property {BaseConfigOptions} [options]
18
- */
19
- /**
20
- * @typedef {import('./classes/Services.js').ServiceName} ServiceName
21
- */
22
- /**
23
- * Base class to easily create components.
24
- *
25
- * @example
26
- * ```js
27
- * class Component extends Base {
28
- * static config = {
29
- * name: 'Component',
30
- * log: true,
31
- * };
32
- *
33
- * mounted() {
34
- * this.$log('Component is mounted!');
35
- * }
36
- * }
37
- *
38
- * class App extends Base {
39
- * static config = {
40
- * name: 'App',
41
- * components: {
42
- * Component,
43
- * },
44
- * };
45
- * }
46
- *
47
- * new App(document.body).$mount();
48
- * ```
49
- */
50
- export default class Base extends EventManager {
51
- /**
52
- * This is a Base instance.
53
- * @type {Boolean}
54
- */
55
- static $isBase: boolean;
56
- /** @type {BaseConfig} */
57
- static config: BaseConfig;
58
- /**
59
- * Factory method to generate multiple instance of the class.
60
- *
61
- * @param {String} nameOrSelector The selector on which to mount each instance.
62
- * @return {Array<Base>} A list of the created instance.
63
- */
64
- static $factory(nameOrSelector: string): Array<Base>;
65
- /**
66
- * Class constructor where all the magic takes place.
67
- *
68
- * @param {HTMLElement} element The component's root element dd.
69
- */
70
- constructor(element: HTMLElement);
71
- /**
72
- * The instance parent.
73
- * @type {Base}
74
- */
75
- $parent: Base;
76
- /**
77
- * The instance id.
78
- * @type {string}
79
- */
80
- $id: string;
81
- /**
82
- * The root element.
83
- * @type {HTMLElement}
84
- */
85
- $el: HTMLElement;
86
- /**
87
- * The instance options.
88
- * @type {BaseOptions}
89
- */
90
- $options: BaseOptions;
91
- /**
92
- * The instance children components.
93
- * @type {BaseChildren}
94
- */
95
- $children: BaseChildren;
96
- /**
97
- * The instance services.
98
- * @type {Services}
99
- */
100
- $services: Services;
101
- /**
102
- * The state of the component.
103
- * @type {Boolean}
104
- */
105
- $isMounted: boolean;
106
- /**
107
- * Get properties to exclude from the autobind call.
108
- * @return {Array<String|RegExp>}
109
- */
110
- get _excludeFromAutoBind(): (string | RegExp)[];
111
- /**
112
- * @deprecated Use the static `config` property instead.
113
- * @return {BaseConfig}
114
- */
115
- get config(): BaseConfig;
116
- /**
117
- * Get the component's refs.
118
- * @return {BaseRefs}
119
- */
120
- get $refs(): BaseRefs;
121
- /**
122
- * Small helper to log stuff.
123
- *
124
- * @return {(...args: any) => void} A log function if the log options is active.
125
- */
126
- get $log(): (...args: any) => void;
127
- /**
128
- * Trigger the `mounted` callback.
129
- */
130
- $mount(): Base;
131
- /**
132
- * Update the instance children.
133
- */
134
- $update(): Base;
135
- /**
136
- * Trigger the `destroyed` callback.
137
- */
138
- $destroy(): Base;
139
- /**
140
- * Terminate a child instance when it is not needed anymore.
141
- * @return {void}
142
- */
143
- $terminate(): void;
144
- }
145
- export type BaseComponent = typeof Base;
146
- export type BaseAsyncComponent = (Base: any) => Promise<BaseComponent | {
147
- default: BaseComponent;
148
- }>;
149
- export type BaseOptions = {
150
- [name: string]: any;
151
- name: string;
152
- debug: boolean;
153
- log: boolean;
154
- };
155
- export type BaseRefs = {
156
- [name: string]: Base | HTMLElement | HTMLElement[] | Base[] | Promise<Base> | Promise<Base>[];
157
- };
158
- export type BaseChildren = {
159
- [nameOrSelector: string]: Base[] | Promise<Base>[];
160
- };
161
- export type BaseConfigComponents = {
162
- [nameOrSelector: string]: typeof Base | BaseAsyncComponent;
163
- };
164
- export type BaseConfigOptions = import('./classes/Options').OptionsSchema;
165
- export type BaseConfig = {
166
- name: string;
167
- debug?: boolean;
168
- log?: boolean;
169
- refs?: string[];
170
- components?: BaseConfigComponents;
171
- options?: BaseConfigOptions;
172
- };
173
- export type ServiceName = import('./classes/Services.js').ServiceName;
174
- import EventManager from "../EventManager.js";
175
- import Services from "./classes/Services.js";
176
- import { debug } from "./utils.js";
@@ -1,215 +0,0 @@
1
- import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
- import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
3
- import _createClass from "@babel/runtime/helpers/createClass";
4
- import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
5
- import _inherits from "@babel/runtime/helpers/inherits";
6
- import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
7
- import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
8
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
9
-
10
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
11
-
12
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
13
-
14
- import autoBind from '../../utils/object/autoBind.js';
15
- import EventManager from '../EventManager.js';
16
- import { callMethod, debug, getConfig, getComponentElements } from './utils.js';
17
- import { getChildren } from './children.js';
18
- import { getOptions } from './options.js';
19
- import { getRefs } from './refs.js';
20
- import { mountComponents, mountOrUpdateComponents, destroyComponents } from './components.js';
21
- import Services from './classes/Services.js';
22
- import bindEvents from './events.js';
23
-
24
- if (typeof __DEV__ === 'undefined') {
25
- if (typeof globalThis !== 'undefined') {
26
- globalThis.__DEV__ = false;
27
- } else if (typeof window !== 'undefined') {
28
- window.__DEV__ = false;
29
- }
30
- }
31
-
32
- var id = 0;
33
-
34
- var Base = function (_EventManager) {
35
- _inherits(Base, _EventManager);
36
-
37
- var _super = _createSuper(Base);
38
-
39
- function Base(element) {
40
- var _this;
41
-
42
- _classCallCheck(this, Base);
43
-
44
- _this = _super.call(this);
45
-
46
- _defineProperty(_assertThisInitialized(_this), "$parent", null);
47
-
48
- _defineProperty(_assertThisInitialized(_this), "$id", void 0);
49
-
50
- _defineProperty(_assertThisInitialized(_this), "$el", void 0);
51
-
52
- _defineProperty(_assertThisInitialized(_this), "$options", void 0);
53
-
54
- _defineProperty(_assertThisInitialized(_this), "$children", void 0);
55
-
56
- _defineProperty(_assertThisInitialized(_this), "$services", void 0);
57
-
58
- _defineProperty(_assertThisInitialized(_this), "$isMounted", false);
59
-
60
- if (!element) {
61
- throw new Error('The root element must be defined.');
62
- }
63
-
64
- var _getConfig = getConfig(_assertThisInitialized(_this)),
65
- name = _getConfig.name;
66
-
67
- _this.$id = "".concat(name, "-").concat(id);
68
- id += 1;
69
- _this.$el = element;
70
- _this.$options = getOptions(_assertThisInitialized(_this), element, getConfig(_assertThisInitialized(_this)));
71
- _this.$children = getChildren(_assertThisInitialized(_this), _this.$el, getConfig(_assertThisInitialized(_this)).components || {});
72
- _this.$services = new Services(_assertThisInitialized(_this));
73
-
74
- if (!('__base__' in _this.$el)) {
75
- Object.defineProperty(_this.$el, '__base__', {
76
- get: function get() {
77
- return _assertThisInitialized(_this);
78
- },
79
- configurable: true
80
- });
81
- }
82
-
83
- autoBind(_assertThisInitialized(_this), {
84
- exclude: _toConsumableArray(_this._excludeFromAutoBind)
85
- });
86
- var unbindMethods = [];
87
-
88
- _this.$on('mounted', function () {
89
- _this.$services.enableAll();
90
-
91
- unbindMethods = _toConsumableArray(bindEvents(_assertThisInitialized(_this)));
92
- mountComponents(_assertThisInitialized(_this));
93
- _this.$isMounted = true;
94
- });
95
-
96
- _this.$on('updated', function () {
97
- _this.$services.disableAll();
98
-
99
- unbindMethods.forEach(function (method) {
100
- return method();
101
- });
102
- unbindMethods = _toConsumableArray(bindEvents(_assertThisInitialized(_this)));
103
-
104
- _this.$services.enableAll();
105
-
106
- mountOrUpdateComponents(_assertThisInitialized(_this));
107
- });
108
-
109
- _this.$on('destroyed', function () {
110
- _this.$isMounted = false;
111
-
112
- _this.$services.disableAll();
113
-
114
- unbindMethods.forEach(function (method) {
115
- return method();
116
- });
117
- destroyComponents(_assertThisInitialized(_this));
118
- });
119
-
120
- if (__DEV__) {
121
- debug(_assertThisInitialized(_this), 'constructor', _assertThisInitialized(_this));
122
- }
123
-
124
- return _possibleConstructorReturn(_this, _assertThisInitialized(_this));
125
- }
126
-
127
- _createClass(Base, [{
128
- key: "_excludeFromAutoBind",
129
- get: function get() {
130
- return ['$mount', '$update', '$destroy', '$terminate', '$log', '$on', '$once', '$off', '$emit', 'mounted', 'loaded', 'ticked', 'resized', 'moved', 'keyed', 'scrolled', 'destroyed', 'terminated'];
131
- }
132
- }, {
133
- key: "config",
134
- get: function get() {
135
- return null;
136
- }
137
- }, {
138
- key: "$refs",
139
- get: function get() {
140
- return getRefs(this, this.$el);
141
- }
142
- }, {
143
- key: "$log",
144
- get: function get() {
145
- return this.$options.log ? window.console.log.bind(window, "[".concat(this.$options.name, "]")) : function noop() {};
146
- }
147
- }, {
148
- key: "$mount",
149
- value: function $mount() {
150
- if (__DEV__) {
151
- debug(this, '$mount');
152
- }
153
-
154
- callMethod(this, 'mounted');
155
- return this;
156
- }
157
- }, {
158
- key: "$update",
159
- value: function $update() {
160
- if (__DEV__) {
161
- debug(this, '$update');
162
- }
163
-
164
- callMethod(this, 'updated');
165
- return this;
166
- }
167
- }, {
168
- key: "$destroy",
169
- value: function $destroy() {
170
- if (__DEV__) {
171
- debug(this, '$destroy');
172
- }
173
-
174
- callMethod(this, 'destroyed');
175
- return this;
176
- }
177
- }, {
178
- key: "$terminate",
179
- value: function $terminate() {
180
- if (__DEV__) {
181
- debug(this, '$terminate');
182
- }
183
-
184
- this.$destroy();
185
- callMethod(this, 'terminated');
186
- Object.defineProperty(this.$el, '__base__', {
187
- value: 'terminated',
188
- configurable: false,
189
- writable: false
190
- });
191
- }
192
- }], [{
193
- key: "$factory",
194
- value: function $factory(nameOrSelector) {
195
- var _this2 = this;
196
-
197
- if (!nameOrSelector) {
198
- throw new Error('The $factory method requires a component’s name or selector to be specified.');
199
- }
200
-
201
- return getComponentElements(nameOrSelector).map(function (el) {
202
- return new _this2(el).$mount();
203
- });
204
- }
205
- }]);
206
-
207
- return Base;
208
- }(EventManager);
209
-
210
- _defineProperty(Base, "$isBase", true);
211
-
212
- _defineProperty(Base, "config", void 0);
213
-
214
- export { Base as default };
215
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../packages/js-toolkit/abstracts/Base/index.js"],"names":["autoBind","EventManager","callMethod","debug","getConfig","getComponentElements","getChildren","getOptions","getRefs","mountComponents","mountOrUpdateComponents","destroyComponents","Services","bindEvents","__DEV__","globalThis","window","id","Base","element","Error","name","$id","$el","$options","$children","components","$services","Object","defineProperty","get","configurable","exclude","_excludeFromAutoBind","unbindMethods","$on","enableAll","$isMounted","disableAll","forEach","method","log","console","bind","noop","$destroy","value","writable","nameOrSelector","map","el","$mount"],"mappings":"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","sourcesContent":["import autoBind from '../../utils/object/autoBind.js';\nimport EventManager from '../EventManager.js';\nimport { callMethod, debug, getConfig, getComponentElements } from './utils.js';\nimport { getChildren } from './children.js';\nimport { getOptions } from './options.js';\nimport { getRefs } from './refs.js';\nimport { mountComponents, mountOrUpdateComponents, destroyComponents } from './components.js';\nimport Services from './classes/Services.js';\nimport bindEvents from './events.js';\n\n// Define the __DEV__ constant if not defined\nif (typeof __DEV__ === 'undefined') {\n if (typeof globalThis !== 'undefined') {\n globalThis.__DEV__ = false;\n } else if (typeof window !== 'undefined') {\n window.__DEV__ = false;\n }\n}\n\nlet id = 0;\n\n/**\n * @typedef {typeof Base} BaseComponent\n * @typedef {(Base) => Promise<BaseComponent | { default: BaseComponent }>} BaseAsyncComponent\n * @typedef {{ name: string, debug: boolean, log: boolean, [name:string]: any }} BaseOptions\n * @typedef {{ [name:string]: HTMLElement | HTMLElement[] | Base | Base[] | Promise<Base> | Promise<Base>[] }} BaseRefs\n * @typedef {{ [nameOrSelector:string]: Base[] | Promise<Base>[] }} BaseChildren\n * @typedef {{ [nameOrSelector:string]: BaseComponent | BaseAsyncComponent }} BaseConfigComponents\n * @typedef {import('./classes/Options').OptionsSchema} BaseConfigOptions\n */\n\n/**\n * @typedef {Object} BaseConfig\n * @property {String} name\n * @property {Boolean} [debug]\n * @property {Boolean} [log]\n * @property {String[]} [refs]\n * @property {BaseConfigComponents} [components]\n * @property {BaseConfigOptions} [options]\n */\n\n/**\n * @typedef {import('./classes/Services.js').ServiceName} ServiceName\n */\n\n/**\n * Base class to easily create components.\n *\n * @example\n * ```js\n * class Component extends Base {\n * static config = {\n * name: 'Component',\n * log: true,\n * };\n *\n * mounted() {\n * this.$log('Component is mounted!');\n * }\n * }\n *\n * class App extends Base {\n * static config = {\n * name: 'App',\n * components: {\n * Component,\n * },\n * };\n * }\n *\n * new App(document.body).$mount();\n * ```\n */\nexport default class Base extends EventManager {\n /**\n * The instance parent.\n * @type {Base}\n */\n $parent = null;\n\n /**\n * The instance id.\n * @type {string}\n */\n $id;\n\n /**\n * The root element.\n * @type {HTMLElement}\n */\n $el;\n\n /**\n * The instance options.\n * @type {BaseOptions}\n */\n $options;\n\n /**\n * The instance children components.\n * @type {BaseChildren}\n */\n $children;\n\n /**\n * The instance services.\n * @type {Services}\n */\n $services;\n\n /**\n * The state of the component.\n * @type {Boolean}\n */\n $isMounted = false;\n\n /**\n * This is a Base instance.\n * @type {Boolean}\n */\n static $isBase = true;\n\n /**\n * Get properties to exclude from the autobind call.\n * @return {Array<String|RegExp>}\n */\n get _excludeFromAutoBind() {\n return [\n '$mount',\n '$update',\n '$destroy',\n '$terminate',\n '$log',\n '$on',\n '$once',\n '$off',\n '$emit',\n 'mounted',\n 'loaded',\n 'ticked',\n 'resized',\n 'moved',\n 'keyed',\n 'scrolled',\n 'destroyed',\n 'terminated',\n ];\n }\n\n /**\n * @deprecated Use the static `config` property instead.\n * @return {BaseConfig}\n */\n get config() {\n return null;\n }\n\n /** @type {BaseConfig} */\n static config;\n\n /**\n * Get the component's refs.\n * @return {BaseRefs}\n */\n get $refs() {\n return getRefs(this, this.$el);\n }\n\n /**\n * Class constructor where all the magic takes place.\n *\n * @param {HTMLElement} element The component's root element dd.\n */\n constructor(element) {\n super();\n\n if (!element) {\n throw new Error('The root element must be defined.');\n }\n\n const { name } = getConfig(this);\n\n /** @type {String} */\n this.$id = `${name}-${id}`;\n id += 1;\n\n /** @type {HTMLElement} */\n this.$el = element;\n\n this.$options = getOptions(this, element, getConfig(this));\n this.$children = getChildren(this, this.$el, getConfig(this).components || {});\n this.$services = new Services(this);\n\n if (!('__base__' in this.$el)) {\n Object.defineProperty(this.$el, '__base__', {\n get: () => this,\n configurable: true,\n });\n }\n\n // Autobind all methods to the instance\n autoBind(this, {\n exclude: [...this._excludeFromAutoBind],\n });\n\n let unbindMethods = [];\n this.$on('mounted', () => {\n this.$services.enableAll();\n unbindMethods = [...bindEvents(this)];\n mountComponents(this);\n this.$isMounted = true;\n });\n\n this.$on('updated', () => {\n this.$services.disableAll();\n unbindMethods.forEach((method) => method());\n unbindMethods = [...bindEvents(this)];\n this.$services.enableAll();\n mountOrUpdateComponents(this);\n });\n\n this.$on('destroyed', () => {\n this.$isMounted = false;\n this.$services.disableAll();\n unbindMethods.forEach((method) => method());\n destroyComponents(this);\n });\n\n if (__DEV__) {\n debug(this, 'constructor', this);\n }\n return this;\n }\n\n /**\n * Small helper to log stuff.\n *\n * @return {(...args: any) => void} A log function if the log options is active.\n */\n get $log() {\n return this.$options.log\n ? window.console.log.bind(window, `[${this.$options.name}]`)\n : function noop() {};\n }\n\n /**\n * Trigger the `mounted` callback.\n */\n $mount() {\n if (__DEV__) {\n debug(this, '$mount');\n }\n\n callMethod(this, 'mounted');\n return this;\n }\n\n /**\n * Update the instance children.\n */\n $update() {\n if (__DEV__) {\n debug(this, '$update');\n }\n\n callMethod(this, 'updated');\n return this;\n }\n\n /**\n * Trigger the `destroyed` callback.\n */\n $destroy() {\n if (__DEV__) {\n debug(this, '$destroy');\n }\n\n callMethod(this, 'destroyed');\n return this;\n }\n\n /**\n * Terminate a child instance when it is not needed anymore.\n * @return {void}\n */\n $terminate() {\n if (__DEV__) {\n debug(this, '$terminate');\n }\n\n // First, destroy the component.\n this.$destroy();\n\n // Execute the `terminated` hook if it exists\n callMethod(this, 'terminated');\n\n // Delete the reference to the instance\n // delete this.$el.__base__;\n\n // And update its status to prevent re-instantiation when accessing the\n // parent's `$children` property\n Object.defineProperty(this.$el, '__base__', {\n value: 'terminated',\n configurable: false,\n writable: false,\n });\n }\n\n /**\n * Factory method to generate multiple instance of the class.\n *\n * @param {String} nameOrSelector The selector on which to mount each instance.\n * @return {Array<Base>} A list of the created instance.\n */\n static $factory(nameOrSelector) {\n if (!nameOrSelector) {\n throw new Error(\n 'The $factory method requires a component’s name or selector to be specified.'\n );\n }\n\n return getComponentElements(nameOrSelector).map((el) => new this(el).$mount());\n }\n}\n"],"file":"index.js"}
@@ -1,17 +0,0 @@
1
- /**
2
- * Get a component's options.
3
- *
4
- * @param {Base} instance The component's instance.
5
- * @param {HTMLElement} element The component's root element.
6
- * @param {Object} config The component's default config.
7
- * @return {Options & BaseOptions} The component's merged options.
8
- */
9
- export function getOptions(instance: Base, element: HTMLElement, config: any): Options & BaseOptions;
10
- declare namespace _default {
11
- export { getOptions };
12
- }
13
- export default _default;
14
- export type Base = import('./index.js').default;
15
- export type BaseOptions = import('./index.js').BaseOptions;
16
- export type OptionsSchema = import('./classes/Options.js').OptionsSchema;
17
- import Options from "./classes/Options.js";