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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/Base/index.cjs +287 -0
  2. package/Base/index.d.ts +27 -1
  3. package/Base/index.js +149 -179
  4. package/Base/managers/ChildrenManager.cjs +122 -0
  5. package/Base/managers/ChildrenManager.js +29 -55
  6. package/Base/managers/EventsManager.cjs +182 -0
  7. package/Base/managers/EventsManager.d.ts +3 -1
  8. package/Base/managers/EventsManager.js +85 -127
  9. package/Base/managers/OptionsManager.cjs +167 -0
  10. package/Base/managers/OptionsManager.d.ts +2 -0
  11. package/Base/managers/OptionsManager.js +46 -88
  12. package/Base/managers/RefsManager.cjs +96 -0
  13. package/Base/managers/RefsManager.d.ts +2 -0
  14. package/Base/managers/RefsManager.js +24 -35
  15. package/Base/managers/ServicesManager.cjs +130 -0
  16. package/Base/managers/ServicesManager.d.ts +29 -4
  17. package/Base/managers/ServicesManager.js +33 -63
  18. package/Base/utils.cjs +43 -0
  19. package/Base/utils.js +12 -11
  20. package/README.md +13 -70
  21. package/decorators/index.cjs +47 -0
  22. package/decorators/index.d.ts +8 -9
  23. package/decorators/index.js +18 -9
  24. package/decorators/withBreakpointManager.cjs +89 -0
  25. package/decorators/withBreakpointManager.js +18 -39
  26. package/decorators/withBreakpointObserver.cjs +114 -0
  27. package/decorators/withBreakpointObserver.js +40 -88
  28. package/decorators/withDrag.cjs +52 -0
  29. package/decorators/withDrag.js +16 -18
  30. package/decorators/withExtraConfig.cjs +42 -0
  31. package/decorators/withExtraConfig.js +11 -12
  32. package/decorators/withIntersectionObserver.cjs +59 -0
  33. package/decorators/withIntersectionObserver.js +23 -31
  34. package/decorators/withMountWhenInView.cjs +66 -0
  35. package/decorators/withMountWhenInView.js +31 -55
  36. package/decorators/withScrolledInView.cjs +110 -0
  37. package/decorators/withScrolledInView.d.ts +4 -1
  38. package/decorators/withScrolledInView.js +77 -73
  39. package/decorators/withVue2.cjs +58 -0
  40. package/decorators/withVue2.js +21 -32
  41. package/helpers/createApp.cjs +54 -0
  42. package/helpers/createApp.js +12 -12
  43. package/helpers/importOnInteraction.cjs +54 -0
  44. package/helpers/importOnInteraction.js +17 -18
  45. package/helpers/importWhenIdle.cjs +50 -0
  46. package/helpers/importWhenIdle.js +13 -17
  47. package/helpers/importWhenVisible.cjs +52 -0
  48. package/helpers/importWhenVisible.js +16 -18
  49. package/helpers/index.cjs +39 -0
  50. package/helpers/index.d.ts +4 -5
  51. package/helpers/index.js +10 -5
  52. package/helpers/utils.cjs +37 -0
  53. package/helpers/utils.js +7 -6
  54. package/index.cjs +36 -0
  55. package/index.d.ts +4 -21
  56. package/index.js +7 -5
  57. package/package.json +14 -3
  58. package/services/Service.cjs +73 -0
  59. package/services/Service.d.ts +22 -17
  60. package/services/Service.js +14 -28
  61. package/services/drag.cjs +192 -0
  62. package/services/drag.d.ts +4 -18
  63. package/services/drag.js +103 -156
  64. package/services/index.cjs +45 -0
  65. package/services/index.d.ts +13 -10
  66. package/services/index.js +16 -8
  67. package/services/key.cjs +99 -0
  68. package/services/key.d.ts +4 -13
  69. package/services/key.js +58 -77
  70. package/services/load.cjs +68 -0
  71. package/services/load.d.ts +3 -13
  72. package/services/load.js +31 -36
  73. package/services/pointer.cjs +157 -0
  74. package/services/pointer.d.ts +4 -13
  75. package/services/pointer.js +91 -121
  76. package/services/raf.cjs +79 -0
  77. package/services/raf.d.ts +3 -13
  78. package/services/raf.js +32 -52
  79. package/services/resize.cjs +104 -0
  80. package/services/resize.d.ts +3 -13
  81. package/services/resize.js +52 -52
  82. package/services/scroll.cjs +127 -0
  83. package/services/scroll.d.ts +3 -13
  84. package/services/scroll.js +75 -89
  85. package/utils/collide/boundingRectToCircle.cjs +36 -0
  86. package/utils/collide/boundingRectToCircle.d.ts +1 -1
  87. package/utils/collide/boundingRectToCircle.js +7 -10
  88. package/utils/collide/collideCircleCircle.cjs +36 -0
  89. package/utils/collide/collideCircleCircle.js +8 -7
  90. package/utils/collide/collideCircleRect.cjs +48 -0
  91. package/utils/collide/collideCircleRect.js +10 -12
  92. package/utils/collide/collidePointCircle.cjs +33 -0
  93. package/utils/collide/collidePointCircle.js +8 -5
  94. package/utils/collide/collidePointRect.cjs +30 -0
  95. package/utils/collide/collidePointRect.js +5 -2
  96. package/utils/collide/collideRectRect.cjs +30 -0
  97. package/utils/collide/collideRectRect.js +5 -2
  98. package/utils/collide/index.cjs +43 -0
  99. package/utils/collide/index.d.ts +6 -7
  100. package/utils/collide/index.js +14 -7
  101. package/utils/css/classes.cjs +46 -0
  102. package/utils/css/classes.js +13 -12
  103. package/utils/css/index.cjs +39 -0
  104. package/utils/css/index.d.ts +4 -5
  105. package/utils/css/index.js +10 -5
  106. package/utils/css/matrix.cjs +31 -0
  107. package/utils/css/matrix.js +6 -5
  108. package/utils/css/styles.cjs +49 -0
  109. package/utils/css/styles.js +13 -12
  110. package/utils/css/transition.cjs +119 -0
  111. package/utils/css/transition.js +62 -117
  112. package/utils/debounce.cjs +36 -0
  113. package/utils/debounce.js +7 -9
  114. package/utils/focusTrap.cjs +86 -0
  115. package/utils/focusTrap.js +30 -21
  116. package/utils/history.cjs +93 -0
  117. package/utils/history.js +28 -57
  118. package/utils/index.cjs +55 -0
  119. package/utils/index.d.ts +12 -35
  120. package/utils/index.js +30 -17
  121. package/utils/keyCodes.cjs +37 -0
  122. package/utils/keyCodes.js +5 -2
  123. package/utils/math/clamp.cjs +30 -0
  124. package/utils/math/clamp.js +5 -2
  125. package/utils/math/clamp01.cjs +36 -0
  126. package/utils/math/clamp01.js +6 -3
  127. package/utils/math/damp.cjs +30 -0
  128. package/utils/math/damp.js +5 -4
  129. package/utils/math/ease.cjs +90 -0
  130. package/utils/math/ease.d.ts +78 -0
  131. package/utils/math/ease.js +66 -0
  132. package/utils/math/index.cjs +46 -0
  133. package/utils/math/index.d.ts +8 -8
  134. package/utils/math/index.js +17 -8
  135. package/utils/math/inertiaFinalValue.cjs +39 -0
  136. package/utils/math/inertiaFinalValue.js +8 -10
  137. package/utils/math/lerp.cjs +30 -0
  138. package/utils/math/lerp.js +5 -2
  139. package/utils/math/map.cjs +30 -0
  140. package/utils/math/map.js +5 -2
  141. package/utils/math/round.cjs +30 -0
  142. package/utils/math/round.js +5 -3
  143. package/utils/memoize.cjs +45 -0
  144. package/utils/memoize.js +10 -19
  145. package/utils/nextFrame.cjs +42 -0
  146. package/utils/nextFrame.js +14 -9
  147. package/utils/object/autoBind.cjs +53 -0
  148. package/utils/object/autoBind.js +12 -22
  149. package/utils/object/getAllProperties.cjs +39 -0
  150. package/utils/object/getAllProperties.js +11 -14
  151. package/utils/object/index.cjs +37 -0
  152. package/utils/object/index.d.ts +3 -4
  153. package/utils/object/index.js +8 -4
  154. package/utils/object/isObject.cjs +30 -0
  155. package/utils/object/isObject.js +6 -3
  156. package/utils/scrollTo.cjs +84 -0
  157. package/utils/scrollTo.js +20 -40
  158. package/utils/string/index.cjs +51 -0
  159. package/utils/string/index.d.ts +10 -11
  160. package/utils/string/index.js +22 -11
  161. package/utils/string/withLeadingCharacters.cjs +36 -0
  162. package/utils/string/withLeadingCharacters.js +7 -4
  163. package/utils/string/withLeadingSlash.cjs +36 -0
  164. package/utils/string/withLeadingSlash.js +7 -4
  165. package/utils/string/withTrailingCharacters.cjs +36 -0
  166. package/utils/string/withTrailingCharacters.js +7 -4
  167. package/utils/string/withTrailingSlash.cjs +36 -0
  168. package/utils/string/withTrailingSlash.js +7 -4
  169. package/utils/string/withoutLeadingCharacters.cjs +30 -0
  170. package/utils/string/withoutLeadingCharacters.js +6 -3
  171. package/utils/string/withoutLeadingCharactersRecursive.cjs +41 -0
  172. package/utils/string/withoutLeadingCharactersRecursive.js +8 -7
  173. package/utils/string/withoutLeadingSlash.cjs +36 -0
  174. package/utils/string/withoutLeadingSlash.js +7 -4
  175. package/utils/string/withoutTrailingCharacters.cjs +30 -0
  176. package/utils/string/withoutTrailingCharacters.js +6 -3
  177. package/utils/string/withoutTrailingCharactersRecursive.cjs +41 -0
  178. package/utils/string/withoutTrailingCharactersRecursive.js +8 -7
  179. package/utils/string/withoutTrailingSlash.cjs +36 -0
  180. package/utils/string/withoutTrailingSlash.js +7 -4
  181. package/utils/throttle.cjs +38 -0
  182. package/utils/throttle.js +9 -9
  183. package/index.modern.js +0 -1
  184. package/index.umd.js +0 -1
@@ -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);
@@ -8,6 +8,8 @@
8
8
  */
9
9
  /**
10
10
  * Class options to manage options as data attributes on an HTML element.
11
+ *
12
+ * @todo Use `MutationObserver` to update values? Might be more performant.
11
13
  * @augments {OptionsInterface}
12
14
  */
13
15
  export default class OptionsManager {
@@ -1,28 +1,20 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- import deepmerge from 'deepmerge';
3
- import isObject from '../../utils/object/isObject.js';
4
- export default class OptionsManager {
1
+ import deepmerge from "deepmerge";
2
+ import isObject from "../../utils/object/isObject.js";
3
+ class OptionsManager {
4
+ __element;
5
+ __values = {};
6
+ static types = [String, Number, Boolean, Array, Object];
7
+ __defaultValues = {
8
+ String: "",
9
+ Number: 0,
10
+ Boolean: false,
11
+ Array: () => [],
12
+ Object: () => ({})
13
+ };
14
+ name = "Base";
15
+ debug = false;
16
+ log = false;
5
17
  constructor(element, schema, baseConfig) {
6
- var _baseConfig$debug, _baseConfig$log;
7
-
8
- _defineProperty(this, "__element", void 0);
9
-
10
- _defineProperty(this, "__values", {});
11
-
12
- _defineProperty(this, "__defaultValues", {
13
- String: '',
14
- Number: 0,
15
- Boolean: false,
16
- Array: () => [],
17
- Object: () => ({})
18
- });
19
-
20
- _defineProperty(this, "name", 'Base');
21
-
22
- _defineProperty(this, "debug", false);
23
-
24
- _defineProperty(this, "log", false);
25
-
26
18
  Object.defineProperties(this, {
27
19
  __element: {
28
20
  enumerable: false,
@@ -43,138 +35,104 @@ export default class OptionsManager {
43
35
  this.name = baseConfig.name;
44
36
  schema.debug = {
45
37
  type: Boolean,
46
- default: (_baseConfig$debug = baseConfig.debug) !== null && _baseConfig$debug !== void 0 ? _baseConfig$debug : false
38
+ default: baseConfig.debug ?? false
47
39
  };
48
40
  schema.log = {
49
41
  type: Boolean,
50
- default: (_baseConfig$log = baseConfig.log) !== null && _baseConfig$log !== void 0 ? _baseConfig$log : false
42
+ default: baseConfig.log ?? false
51
43
  };
52
- Object.entries(schema).forEach(_ref => {
53
- var [name, config] = _ref;
54
-
44
+ Object.entries(schema).forEach(([name, config]) => {
55
45
  this.__register(name, config);
56
46
  });
57
47
  return this;
58
48
  }
59
-
60
49
  __register(name, config) {
61
- var hasDefaultValue = !OptionsManager.types.includes(config);
62
- var type = hasDefaultValue ? config.type : config;
63
-
50
+ const hasDefaultValue = !OptionsManager.types.includes(config);
51
+ const type = hasDefaultValue ? config.type : config;
64
52
  if (!OptionsManager.types.includes(type)) {
65
- throw new Error("The \"".concat(name, "\" option has an invalid type. The allowed types are: String, Number, Boolean, Array and Object."));
53
+ throw new Error(`The "${name}" option has an invalid type. The allowed types are: String, Number, Boolean, Array and Object.`);
66
54
  }
67
-
68
- var defaultValue = hasDefaultValue ? config.default : this.__defaultValues[type.name];
69
-
70
- if ((type === Array || type === Object) && typeof defaultValue !== 'function') {
71
- throw new Error("The default value for options of type \"".concat(type.name, "\" must be returned by a function."));
55
+ const defaultValue = hasDefaultValue ? config.default : this.__defaultValues[type.name];
56
+ if ((type === Array || type === Object) && typeof defaultValue !== "function") {
57
+ throw new Error(`The default value for options of type "${type.name}" must be returned by a function.`);
72
58
  }
73
-
74
59
  Object.defineProperty(this, name, {
75
60
  get: () => {
76
61
  return this.get(name, type, defaultValue);
77
62
  },
78
- set: value => {
63
+ set: (value) => {
79
64
  this.set(name, type, value, defaultValue);
80
65
  },
81
66
  enumerable: true
82
67
  });
83
68
  }
84
-
85
69
  get(name, type, defaultValue) {
86
- var propertyName = OptionsManager.__getPropertyName(name);
87
-
88
- var hasProperty = this.__hasProperty(propertyName);
89
-
70
+ const propertyName = OptionsManager.__getPropertyName(name);
71
+ const hasProperty = this.__hasProperty(propertyName);
90
72
  if (type === Boolean) {
91
73
  if (defaultValue) {
92
- var negatedPropertyName = OptionsManager.__getPropertyName(name, 'No');
93
-
94
- var hasNegatedProperty = this.__hasProperty(negatedPropertyName);
95
-
74
+ const negatedPropertyName = OptionsManager.__getPropertyName(name, "No");
75
+ const hasNegatedProperty = this.__hasProperty(negatedPropertyName);
96
76
  return !hasNegatedProperty;
97
77
  }
98
-
99
78
  return hasProperty || defaultValue;
100
79
  }
101
-
102
- var value = this.__element.dataset[propertyName];
103
-
80
+ const value = this.__element.dataset[propertyName];
104
81
  if (type === Number) {
105
82
  return hasProperty ? Number(value) : defaultValue;
106
83
  }
107
-
108
84
  if (type === Array || type === Object) {
109
- var val = deepmerge(defaultValue(), hasProperty ? JSON.parse(value) : this.__defaultValues[type.name]());
110
-
85
+ const val = deepmerge(defaultValue(), hasProperty ? JSON.parse(value) : this.__defaultValues[type.name]());
111
86
  if (!this.__values[name]) {
112
87
  this.__values[name] = val;
113
88
  }
114
-
115
89
  return this.__values[name];
116
90
  }
117
-
118
91
  return hasProperty ? value : defaultValue;
119
92
  }
120
-
121
93
  set(name, type, value, defaultValue) {
122
- var propertyName = OptionsManager.__getPropertyName(name);
123
-
94
+ const propertyName = OptionsManager.__getPropertyName(name);
124
95
  if (value.constructor.name !== type.name) {
125
- var val = Array.isArray(value) || isObject(value) ? JSON.stringify(value) : value;
126
- throw new TypeError("The \"".concat(val, "\" value for the \"").concat(name, "\" option must be of type \"").concat(type.name, "\""));
96
+ const val = Array.isArray(value) || isObject(value) ? JSON.stringify(value) : value;
97
+ throw new TypeError(`The "${val}" value for the "${name}" option must be of type "${type.name}"`);
127
98
  }
128
-
129
99
  switch (type) {
130
100
  case Boolean:
131
101
  if (defaultValue) {
132
- var negatedPropertyName = OptionsManager.__getPropertyName(name, 'No');
133
-
102
+ const negatedPropertyName = OptionsManager.__getPropertyName(name, "No");
134
103
  if (value) {
135
104
  delete this.__element.dataset[negatedPropertyName];
136
105
  } else {
137
- this.__element.dataset[negatedPropertyName] = '';
106
+ this.__element.dataset[negatedPropertyName] = "";
138
107
  }
139
108
  } else if (value) {
140
- this.__element.dataset[propertyName] = '';
109
+ this.__element.dataset[propertyName] = "";
141
110
  } else {
142
111
  delete this.__element.dataset[propertyName];
143
112
  }
144
-
145
113
  break;
146
-
147
114
  case Array:
148
115
  case Object:
149
116
  this.__values[name] = value;
150
117
  break;
151
-
152
118
  default:
153
119
  this.__element.dataset[propertyName] = value;
154
120
  }
155
121
  }
156
-
157
122
  __hasProperty(prop) {
158
- return typeof this.__element.dataset[prop] !== 'undefined';
123
+ return typeof this.__element.dataset[prop] !== "undefined";
159
124
  }
160
-
161
- static __getPropertyName(name) {
162
- var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
163
- var key = name + prefix;
164
-
125
+ static __propertyNameCache = /* @__PURE__ */ new Map();
126
+ static __getPropertyName(name, prefix = "") {
127
+ const key = name + prefix;
165
128
  if (OptionsManager.__propertyNameCache.has(key)) {
166
129
  return OptionsManager.__propertyNameCache.get(key);
167
130
  }
168
-
169
- var propertyName = "option".concat(prefix).concat(name.replace(/^\w/, c => c.toUpperCase()));
170
-
131
+ const propertyName = `option${prefix}${name.replace(/^\w/, (c) => c.toUpperCase())}`;
171
132
  OptionsManager.__propertyNameCache.set(key, propertyName);
172
-
173
133
  return propertyName;
174
134
  }
175
-
176
135
  }
177
-
178
- _defineProperty(OptionsManager, "types", [String, Number, Boolean, Array, Object]);
179
-
180
- _defineProperty(OptionsManager, "__propertyNameCache", new Map());
136
+ export {
137
+ OptionsManager as default
138
+ };
@@ -0,0 +1,96 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __reExport = (target, module2, copyDefault, desc) => {
11
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
12
+ for (let key of __getOwnPropNames(module2))
13
+ if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
14
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
15
+ }
16
+ return target;
17
+ };
18
+ var __toCommonJS = /* @__PURE__ */ ((cache) => {
19
+ return (module2, temp) => {
20
+ return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
21
+ };
22
+ })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
23
+ var RefsManager_exports = {};
24
+ __export(RefsManager_exports, {
25
+ default: () => RefsManager
26
+ });
27
+ class RefsManager {
28
+ __element;
29
+ __refs;
30
+ __base;
31
+ __eventsManager;
32
+ constructor(base, element, refs, eventsManager) {
33
+ Object.defineProperties(this, {
34
+ __element: {
35
+ enumerable: false,
36
+ writable: false,
37
+ value: element
38
+ },
39
+ __refs: {
40
+ enumerable: false,
41
+ writable: false,
42
+ value: refs
43
+ },
44
+ __base: {
45
+ enumerable: false,
46
+ writable: false,
47
+ value: base
48
+ },
49
+ __eventsManager: {
50
+ enumerable: false,
51
+ writable: false,
52
+ value: eventsManager
53
+ }
54
+ });
55
+ }
56
+ registerAll() {
57
+ this.__refs.forEach((refName) => this.__register(refName));
58
+ }
59
+ unregisterAll() {
60
+ this.__refs.forEach((refName) => this.__unregister(refName));
61
+ }
62
+ __register(refName) {
63
+ const isMultiple = refName.endsWith("[]");
64
+ const propName = RefsManager.normalizeRefName(refName);
65
+ const refs = Array.from(this.__element.querySelectorAll(`[data-ref="${refName}"]`)).filter((ref) => this.__filterRefsBelongingToInstance(ref));
66
+ if (!isMultiple && refs.length > 1) {
67
+ console.warn(`[${this.__base.$options.name}]`, `The "${refName}" ref has been found multiple times.`, "Did you forgot to add the `[]` suffix to its name?");
68
+ }
69
+ if (!isMultiple && refs.length <= 1 && refs[0] === void 0) {
70
+ console.warn(`[${this.__base.$options.name}]`, `The "${refName}" ref is missing.`, `Is there an \`[data-ref="${refName}"]\` element in the component's scope?`);
71
+ return;
72
+ }
73
+ this.__eventsManager.bindRef(refName, refs);
74
+ Object.defineProperty(this, propName, {
75
+ value: isMultiple || refs.length > 1 ? refs : refs[0],
76
+ enumerable: true,
77
+ configurable: true
78
+ });
79
+ }
80
+ __unregister(refName) {
81
+ const propName = RefsManager.normalizeRefName(refName);
82
+ const refs = Array.isArray(this[propName]) ? this[propName] : [this[propName]];
83
+ this.__eventsManager.unbindRef(refName, refs);
84
+ }
85
+ static normalizeRefName(name) {
86
+ return name.endsWith("[]") ? name.replace(/\[\]$/, "") : name;
87
+ }
88
+ __filterRefsBelongingToInstance(ref) {
89
+ let ancestor = ref.parentElement;
90
+ while (ancestor && ancestor.dataset.component === void 0) {
91
+ ancestor = ancestor.parentElement;
92
+ }
93
+ return ancestor === null || ancestor === this.__element;
94
+ }
95
+ }
96
+ module.exports = __toCommonJS(RefsManager_exports);
@@ -4,6 +4,8 @@
4
4
  */
5
5
  /**
6
6
  * Refs Manager
7
+ *
8
+ * @todo Use `MutationObserver` to automatically update refs?
7
9
  */
8
10
  export default class RefsManager {
9
11
  /**
@@ -1,14 +1,9 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- export default class RefsManager {
1
+ class RefsManager {
2
+ __element;
3
+ __refs;
4
+ __base;
5
+ __eventsManager;
3
6
  constructor(base, element, refs, eventsManager) {
4
- _defineProperty(this, "__element", void 0);
5
-
6
- _defineProperty(this, "__refs", void 0);
7
-
8
- _defineProperty(this, "__base", void 0);
9
-
10
- _defineProperty(this, "__eventsManager", void 0);
11
-
12
7
  Object.defineProperties(this, {
13
8
  __element: {
14
9
  enumerable: false,
@@ -32,52 +27,46 @@ export default class RefsManager {
32
27
  }
33
28
  });
34
29
  }
35
-
36
30
  registerAll() {
37
- this.__refs.forEach(refName => this.__register(refName));
31
+ this.__refs.forEach((refName) => this.__register(refName));
38
32
  }
39
-
40
33
  unregisterAll() {
41
- this.__refs.forEach(refName => this.__unregister(refName));
34
+ this.__refs.forEach((refName) => this.__unregister(refName));
42
35
  }
43
-
44
36
  __register(refName) {
45
- var isMultiple = refName.endsWith('[]');
46
- var propName = RefsManager.normalizeRefName(refName);
47
- var refs = Array.from(this.__element.querySelectorAll("[data-ref=\"".concat(refName, "\"]"))).filter(ref => this.__filterRefsBelongingToInstance(ref));
48
-
37
+ const isMultiple = refName.endsWith("[]");
38
+ const propName = RefsManager.normalizeRefName(refName);
39
+ const refs = Array.from(this.__element.querySelectorAll(`[data-ref="${refName}"]`)).filter((ref) => this.__filterRefsBelongingToInstance(ref));
49
40
  if (!isMultiple && refs.length > 1) {
50
- console.warn("[".concat(this.__base.$options.name, "]"), "The \"".concat(refName, "\" ref has been found multiple times."), 'Did you forgot to add the `[]` suffix to its name?');
41
+ console.warn(`[${this.__base.$options.name}]`, `The "${refName}" ref has been found multiple times.`, "Did you forgot to add the `[]` suffix to its name?");
42
+ }
43
+ if (!isMultiple && refs.length <= 1 && refs[0] === void 0) {
44
+ console.warn(`[${this.__base.$options.name}]`, `The "${refName}" ref is missing.`, `Is there an \`[data-ref="${refName}"]\` element in the component's scope?`);
45
+ return;
51
46
  }
52
-
53
47
  this.__eventsManager.bindRef(refName, refs);
54
-
55
48
  Object.defineProperty(this, propName, {
56
49
  value: isMultiple || refs.length > 1 ? refs : refs[0],
57
50
  enumerable: true,
58
51
  configurable: true
59
52
  });
60
53
  }
61
-
62
54
  __unregister(refName) {
63
- var propName = RefsManager.normalizeRefName(refName);
64
- var refs = Array.isArray(this[propName]) ? this[propName] : [this[propName]];
65
-
55
+ const propName = RefsManager.normalizeRefName(refName);
56
+ const refs = Array.isArray(this[propName]) ? this[propName] : [this[propName]];
66
57
  this.__eventsManager.unbindRef(refName, refs);
67
58
  }
68
-
69
59
  static normalizeRefName(name) {
70
- return name.endsWith('[]') ? name.replace(/\[\]$/, '') : name;
60
+ return name.endsWith("[]") ? name.replace(/\[\]$/, "") : name;
71
61
  }
72
-
73
62
  __filterRefsBelongingToInstance(ref) {
74
- var ancestor = ref.parentElement;
75
-
76
- while (ancestor && ancestor.dataset.component === undefined) {
63
+ let ancestor = ref.parentElement;
64
+ while (ancestor && ancestor.dataset.component === void 0) {
77
65
  ancestor = ancestor.parentElement;
78
66
  }
79
-
80
67
  return ancestor === null || ancestor === this.__element;
81
68
  }
82
-
83
- }
69
+ }
70
+ export {
71
+ RefsManager as default
72
+ };