@studiometa/js-toolkit 2.0.0-alpha.1 → 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 (201) hide show
  1. package/Base/index.d.ts +29 -47
  2. package/Base/index.js +144 -171
  3. package/Base/managers/ChildrenManager.d.ts +6 -6
  4. package/Base/managers/ChildrenManager.js +95 -119
  5. package/Base/managers/EventsManager.d.ts +9 -9
  6. package/Base/managers/EventsManager.js +128 -161
  7. package/Base/managers/OptionsManager.d.ts +50 -5
  8. package/Base/managers/OptionsManager.js +115 -116
  9. package/Base/managers/RefsManager.js +62 -73
  10. package/Base/managers/ServicesManager.d.ts +14 -3
  11. package/Base/managers/ServicesManager.js +78 -77
  12. package/Base/utils.js +5 -8
  13. package/README.md +12 -70
  14. package/decorators/index.js +1 -2
  15. package/decorators/withBreakpointManager.d.ts +4 -4
  16. package/decorators/withBreakpointManager.js +37 -75
  17. package/decorators/withBreakpointObserver.d.ts +2 -2
  18. package/decorators/withBreakpointObserver.js +54 -77
  19. package/decorators/withDrag.d.ts +3 -3
  20. package/decorators/withDrag.js +17 -41
  21. package/decorators/withExtraConfig.d.ts +3 -3
  22. package/decorators/withExtraConfig.js +2 -24
  23. package/decorators/withIntersectionObserver.d.ts +2 -2
  24. package/decorators/withIntersectionObserver.js +17 -56
  25. package/decorators/withMountWhenInView.d.ts +3 -3
  26. package/decorators/withMountWhenInView.js +23 -51
  27. package/helpers/createApp.d.ts +3 -3
  28. package/helpers/createApp.js +10 -12
  29. package/helpers/importOnInteraction.d.ts +3 -3
  30. package/helpers/importOnInteraction.js +7 -8
  31. package/helpers/importWhenIdle.d.ts +3 -3
  32. package/helpers/importWhenIdle.js +7 -8
  33. package/helpers/importWhenVisible.d.ts +3 -3
  34. package/helpers/importWhenVisible.js +9 -16
  35. package/helpers/index.d.ts +1 -3
  36. package/helpers/index.js +1 -4
  37. package/helpers/utils.js +1 -2
  38. package/index.d.ts +14 -4
  39. package/index.js +4 -4
  40. package/index.modern.js +1 -2
  41. package/index.umd.js +1 -2
  42. package/package.json +4 -6
  43. package/services/Service.js +48 -67
  44. package/services/drag.js +143 -179
  45. package/services/index.js +1 -2
  46. package/services/key.js +55 -97
  47. package/services/load.d.ts +1 -1
  48. package/services/load.js +21 -50
  49. package/services/pointer.js +117 -156
  50. package/services/raf.js +36 -64
  51. package/services/resize.js +47 -86
  52. package/services/scroll.js +81 -120
  53. package/utils/collide/boundingRectToCircle.js +7 -6
  54. package/utils/collide/collideCircleCircle.js +1 -2
  55. package/utils/collide/collideCircleRect.js +1 -2
  56. package/utils/collide/collidePointCircle.js +1 -2
  57. package/utils/collide/collidePointRect.js +1 -2
  58. package/utils/collide/collideRectRect.js +1 -2
  59. package/utils/collide/index.js +1 -2
  60. package/utils/css/classes.js +2 -3
  61. package/utils/css/index.js +1 -2
  62. package/utils/css/matrix.js +1 -2
  63. package/utils/css/styles.js +3 -8
  64. package/utils/css/transition.js +67 -140
  65. package/utils/debounce.js +3 -4
  66. package/utils/focusTrap.js +4 -5
  67. package/utils/history.js +13 -20
  68. package/utils/index.d.ts +2 -1
  69. package/utils/index.js +2 -2
  70. package/utils/keyCodes.js +1 -2
  71. package/utils/math/clamp.js +1 -2
  72. package/utils/math/clamp01.js +1 -2
  73. package/utils/math/damp.js +1 -2
  74. package/utils/math/index.js +1 -2
  75. package/utils/math/inertiaFinalValue.js +1 -2
  76. package/utils/math/lerp.js +1 -2
  77. package/utils/math/map.js +1 -2
  78. package/utils/math/round.js +1 -2
  79. package/utils/memoize.d.ts +30 -0
  80. package/utils/memoize.js +30 -0
  81. package/utils/nextFrame.js +4 -9
  82. package/utils/object/autoBind.js +11 -19
  83. package/utils/object/getAllProperties.js +3 -11
  84. package/utils/object/index.js +1 -2
  85. package/utils/object/isObject.js +2 -4
  86. package/utils/string/index.js +1 -2
  87. package/utils/string/withLeadingCharacters.js +1 -2
  88. package/utils/string/withLeadingSlash.js +1 -2
  89. package/utils/string/withTrailingCharacters.js +1 -2
  90. package/utils/string/withTrailingSlash.js +1 -2
  91. package/utils/string/withoutLeadingCharacters.js +1 -2
  92. package/utils/string/withoutLeadingCharactersRecursive.js +1 -2
  93. package/utils/string/withoutLeadingSlash.js +1 -2
  94. package/utils/string/withoutTrailingCharacters.js +1 -2
  95. package/utils/string/withoutTrailingCharactersRecursive.js +1 -2
  96. package/utils/string/withoutTrailingSlash.js +1 -2
  97. package/utils/throttle.js +2 -3
  98. package/Base/index.js.map +0 -1
  99. package/Base/managers/ChildrenManager.js.map +0 -1
  100. package/Base/managers/EventsManager.js.map +0 -1
  101. package/Base/managers/OptionsManager.js.map +0 -1
  102. package/Base/managers/RefsManager.js.map +0 -1
  103. package/Base/managers/ServicesManager.js.map +0 -1
  104. package/Base/utils.js.map +0 -1
  105. package/components/Accordion/Accordion.d.ts +0 -83
  106. package/components/Accordion/Accordion.js +0 -121
  107. package/components/Accordion/Accordion.js.map +0 -1
  108. package/components/Accordion/AccordionItem.d.ts +0 -122
  109. package/components/Accordion/AccordionItem.js +0 -327
  110. package/components/Accordion/AccordionItem.js.map +0 -1
  111. package/components/Accordion/index.d.ts +0 -27
  112. package/components/Accordion/index.js +0 -39
  113. package/components/Accordion/index.js.map +0 -1
  114. package/components/Cursor.d.ts +0 -138
  115. package/components/Cursor.js +0 -167
  116. package/components/Cursor.js.map +0 -1
  117. package/components/Draggable.d.ts +0 -49
  118. package/components/Draggable.js +0 -77
  119. package/components/Draggable.js.map +0 -1
  120. package/components/Modal.d.ts +0 -158
  121. package/components/Modal.js +0 -270
  122. package/components/Modal.js.map +0 -1
  123. package/components/Tabs.d.ts +0 -108
  124. package/components/Tabs.js +0 -195
  125. package/components/Tabs.js.map +0 -1
  126. package/components/index.d.ts +0 -6
  127. package/components/index.js +0 -7
  128. package/components/index.js.map +0 -1
  129. package/decorators/index.js.map +0 -1
  130. package/decorators/withBreakpointManager.js.map +0 -1
  131. package/decorators/withBreakpointObserver.js.map +0 -1
  132. package/decorators/withDrag.js.map +0 -1
  133. package/decorators/withExtraConfig.js.map +0 -1
  134. package/decorators/withIntersectionObserver.js.map +0 -1
  135. package/decorators/withMountWhenInView.js.map +0 -1
  136. package/helpers/createApp.js.map +0 -1
  137. package/helpers/createBase.d.ts +0 -7
  138. package/helpers/createBase.js +0 -7
  139. package/helpers/createBase.js.map +0 -1
  140. package/helpers/defineComponent.d.ts +0 -11
  141. package/helpers/defineComponent.js +0 -68
  142. package/helpers/defineComponent.js.map +0 -1
  143. package/helpers/importOnInteraction.js.map +0 -1
  144. package/helpers/importWhenIdle.js.map +0 -1
  145. package/helpers/importWhenVisible.js.map +0 -1
  146. package/helpers/index.js.map +0 -1
  147. package/helpers/utils.js.map +0 -1
  148. package/index.js.map +0 -1
  149. package/index.modern.js.map +0 -1
  150. package/index.umd.js.map +0 -1
  151. package/services/Service.js.map +0 -1
  152. package/services/drag.js.map +0 -1
  153. package/services/index.js.map +0 -1
  154. package/services/key.js.map +0 -1
  155. package/services/load.js.map +0 -1
  156. package/services/pointer.js.map +0 -1
  157. package/services/raf.js.map +0 -1
  158. package/services/resize.js.map +0 -1
  159. package/services/scroll.js.map +0 -1
  160. package/utils/collide/boundingRectToCircle.js.map +0 -1
  161. package/utils/collide/collideCircleCircle.js.map +0 -1
  162. package/utils/collide/collideCircleRect.js.map +0 -1
  163. package/utils/collide/collidePointCircle.js.map +0 -1
  164. package/utils/collide/collidePointRect.js.map +0 -1
  165. package/utils/collide/collideRectRect.js.map +0 -1
  166. package/utils/collide/index.js.map +0 -1
  167. package/utils/css/classes.js.map +0 -1
  168. package/utils/css/index.js.map +0 -1
  169. package/utils/css/matrix.js.map +0 -1
  170. package/utils/css/styles.js.map +0 -1
  171. package/utils/css/transition.js.map +0 -1
  172. package/utils/debounce.js.map +0 -1
  173. package/utils/focusTrap.js.map +0 -1
  174. package/utils/history.js.map +0 -1
  175. package/utils/index.js.map +0 -1
  176. package/utils/keyCodes.js.map +0 -1
  177. package/utils/math/clamp.js.map +0 -1
  178. package/utils/math/clamp01.js.map +0 -1
  179. package/utils/math/damp.js.map +0 -1
  180. package/utils/math/index.js.map +0 -1
  181. package/utils/math/inertiaFinalValue.js.map +0 -1
  182. package/utils/math/lerp.js.map +0 -1
  183. package/utils/math/map.js.map +0 -1
  184. package/utils/math/round.js.map +0 -1
  185. package/utils/nextFrame.js.map +0 -1
  186. package/utils/object/autoBind.js.map +0 -1
  187. package/utils/object/getAllProperties.js.map +0 -1
  188. package/utils/object/index.js.map +0 -1
  189. package/utils/object/isObject.js.map +0 -1
  190. package/utils/string/index.js.map +0 -1
  191. package/utils/string/withLeadingCharacters.js.map +0 -1
  192. package/utils/string/withLeadingSlash.js.map +0 -1
  193. package/utils/string/withTrailingCharacters.js.map +0 -1
  194. package/utils/string/withTrailingSlash.js.map +0 -1
  195. package/utils/string/withoutLeadingCharacters.js.map +0 -1
  196. package/utils/string/withoutLeadingCharactersRecursive.js.map +0 -1
  197. package/utils/string/withoutLeadingSlash.js.map +0 -1
  198. package/utils/string/withoutTrailingCharacters.js.map +0 -1
  199. package/utils/string/withoutTrailingCharactersRecursive.js.map +0 -1
  200. package/utils/string/withoutTrailingSlash.js.map +0 -1
  201. package/utils/throttle.js.map +0 -1
@@ -1,270 +0,0 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
- import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
4
- import _createClass from "@babel/runtime/helpers/createClass";
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
- import _regeneratorRuntime from "@babel/runtime/regenerator";
10
-
11
- 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); }; }
12
-
13
- 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; } }
14
-
15
- import Base from '../Base/index.js';
16
- import transition from '../utils/css/transition.js';
17
- import { trap, untrap, saveActiveElement } from '../utils/focusTrap.js';
18
-
19
- var Modal = function (_Base) {
20
- _inherits(Modal, _Base);
21
-
22
- var _super = _createSuper(Modal);
23
-
24
- function Modal() {
25
- _classCallCheck(this, Modal);
26
-
27
- return _super.apply(this, arguments);
28
- }
29
-
30
- _createClass(Modal, [{
31
- key: "onOpenClick",
32
- get: function get() {
33
- return this.open;
34
- }
35
- }, {
36
- key: "onCloseClick",
37
- get: function get() {
38
- return this.close;
39
- }
40
- }, {
41
- key: "onOverlayClick",
42
- get: function get() {
43
- return this.close;
44
- }
45
- }, {
46
- key: "mounted",
47
- value: function mounted() {
48
- this.isOpen = false;
49
- this.close();
50
-
51
- if (this.$options.move) {
52
- var target = document.querySelector(this.$options.move) || document.body;
53
- var refsBackup = this.$refs;
54
- this.refModalPlaceholder = document.createComment('');
55
- this.refModalParentBackup = this.$refs.modal.parentElement || this.$el;
56
- this.refModalParentBackup.insertBefore(this.refModalPlaceholder, this.$refs.modal);
57
- this.refModalUnbindGetRefFilter = this.$on('get:refs', function (refs) {
58
- Object.entries(refsBackup).forEach(function (_ref) {
59
- var _ref2 = _slicedToArray(_ref, 2),
60
- key = _ref2[0],
61
- ref = _ref2[1];
62
-
63
- if (!refs[key]) {
64
- refs[key] = ref;
65
- }
66
- });
67
- });
68
- target.appendChild(this.$refs.modal);
69
- }
70
-
71
- return this;
72
- }
73
- }, {
74
- key: "destroyed",
75
- value: function destroyed() {
76
- this.close();
77
-
78
- if (this.$options.move && this.refModalParentBackup) {
79
- this.refModalParentBackup.insertBefore(this.$refs.modal, this.refModalPlaceholder);
80
- this.refModalUnbindGetRefFilter();
81
- this.refModalPlaceholder.remove();
82
- delete this.refModalPlaceholder;
83
- delete this.refModalParentBackup;
84
- delete this.refModalUnbindGetRefFilter;
85
- }
86
-
87
- return this;
88
- }
89
- }, {
90
- key: "keyed",
91
- value: function keyed(_ref3) {
92
- var event = _ref3.event,
93
- isUp = _ref3.isUp,
94
- isDown = _ref3.isDown,
95
- ESC = _ref3.ESC;
96
-
97
- if (!this.isOpen) {
98
- return;
99
- }
100
-
101
- if (isDown) {
102
- trap(this.$refs.modal, event);
103
- }
104
-
105
- if (ESC && isUp) {
106
- this.close();
107
- }
108
- }
109
- }, {
110
- key: "open",
111
- value: function () {
112
- var _open = _asyncToGenerator(_regeneratorRuntime.mark(function _callee() {
113
- var _this = this;
114
-
115
- var refs;
116
- return _regeneratorRuntime.wrap(function _callee$(_context) {
117
- while (1) {
118
- switch (_context.prev = _context.next) {
119
- case 0:
120
- if (!this.isOpen) {
121
- _context.next = 2;
122
- break;
123
- }
124
-
125
- return _context.abrupt("return", Promise.resolve(this));
126
-
127
- case 2:
128
- this.$refs.modal.setAttribute('aria-hidden', 'false');
129
- document.documentElement.style.overflow = 'hidden';
130
- this.isOpen = true;
131
- this.$emit('open');
132
- refs = this.$refs;
133
- return _context.abrupt("return", Promise.all(Object.entries(this.$options.styles).map(function (_ref4) {
134
- var _ref5 = _slicedToArray(_ref4, 2),
135
- refName = _ref5[0],
136
- _ref5$ = _ref5[1];
137
-
138
- _ref5$ = _ref5$ === void 0 ? {
139
- open: '',
140
- active: '',
141
- closed: ''
142
- } : _ref5$;
143
- var open = _ref5$.open,
144
- active = _ref5$.active,
145
- closed = _ref5$.closed;
146
- return transition(refs[refName], {
147
- from: closed,
148
- active: active,
149
- to: open
150
- }, 'keep');
151
- })).then(function () {
152
- if (_this.$options.autofocus && _this.$refs.modal.querySelector(_this.$options.autofocus)) {
153
- saveActiveElement();
154
-
155
- var autofocusElement = _this.$refs.modal.querySelector(_this.$options.autofocus);
156
-
157
- autofocusElement.focus();
158
- }
159
-
160
- return Promise.resolve(_this);
161
- }));
162
-
163
- case 8:
164
- case "end":
165
- return _context.stop();
166
- }
167
- }
168
- }, _callee, this);
169
- }));
170
-
171
- function open() {
172
- return _open.apply(this, arguments);
173
- }
174
-
175
- return open;
176
- }()
177
- }, {
178
- key: "close",
179
- value: function () {
180
- var _close = _asyncToGenerator(_regeneratorRuntime.mark(function _callee2() {
181
- var _this2 = this;
182
-
183
- var refs;
184
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
185
- while (1) {
186
- switch (_context2.prev = _context2.next) {
187
- case 0:
188
- if (this.isOpen) {
189
- _context2.next = 2;
190
- break;
191
- }
192
-
193
- return _context2.abrupt("return", Promise.resolve(this));
194
-
195
- case 2:
196
- this.$refs.modal.setAttribute('aria-hidden', 'true');
197
- document.documentElement.style.overflow = '';
198
- this.isOpen = false;
199
- untrap();
200
- this.$emit('close');
201
- refs = this.$refs;
202
- return _context2.abrupt("return", Promise.all(Object.entries(this.$options.styles).map(function (_ref6) {
203
- var _ref7 = _slicedToArray(_ref6, 2),
204
- refName = _ref7[0],
205
- _ref7$ = _ref7[1];
206
-
207
- _ref7$ = _ref7$ === void 0 ? {
208
- open: '',
209
- active: '',
210
- closed: ''
211
- } : _ref7$;
212
- var open = _ref7$.open,
213
- active = _ref7$.active,
214
- closed = _ref7$.closed;
215
- return transition(refs[refName], {
216
- from: open,
217
- active: active,
218
- to: closed
219
- }, 'keep');
220
- })).then(function () {
221
- return Promise.resolve(_this2);
222
- }));
223
-
224
- case 9:
225
- case "end":
226
- return _context2.stop();
227
- }
228
- }
229
- }, _callee2, this);
230
- }));
231
-
232
- function close() {
233
- return _close.apply(this, arguments);
234
- }
235
-
236
- return close;
237
- }()
238
- }]);
239
-
240
- return Modal;
241
- }(Base);
242
-
243
- _defineProperty(Modal, "config", {
244
- name: 'Modal',
245
- refs: ['close', 'container', 'content', 'modal', 'open', 'overlay'],
246
- options: {
247
- move: String,
248
- autofocus: {
249
- type: String,
250
- default: '[autofocus]'
251
- },
252
- styles: {
253
- type: Object,
254
- default: function _default() {
255
- return {
256
- modal: {
257
- closed: {
258
- opacity: '0',
259
- pointerEvents: 'none',
260
- visibility: 'hidden'
261
- }
262
- }
263
- };
264
- }
265
- }
266
- }
267
- });
268
-
269
- export { Modal as default };
270
- //# sourceMappingURL=Modal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../packages/js-toolkit/components/Modal.js"],"names":["Base","transition","trap","untrap","saveActiveElement","Modal","open","close","isOpen","$options","move","target","document","querySelector","body","refsBackup","$refs","refModalPlaceholder","createComment","refModalParentBackup","modal","parentElement","$el","insertBefore","refModalUnbindGetRefFilter","$on","refs","Object","entries","forEach","key","ref","appendChild","remove","event","isUp","isDown","ESC","Promise","resolve","setAttribute","documentElement","style","overflow","$emit","all","styles","map","refName","active","closed","from","to","then","autofocus","autofocusElement","focus","name","options","String","type","default","opacity","pointerEvents","visibility"],"mappings":"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","sourcesContent":["import Base from '../Base/index.js';\nimport transition from '../utils/css/transition.js';\nimport { trap, untrap, saveActiveElement } from '../utils/focusTrap.js';\n\n/**\n * @typedef {Object} ModalRefs\n * @property {HTMLElement} close\n * @property {HTMLElement} container\n * @property {HTMLElement} content\n * @property {HTMLElement} modal\n * @property {HTMLElement} open\n * @property {HTMLElement} overlay\n */\n\n/**\n * @typedef {import('../utils/css/styles.js').CssStyleObject} CssStyleObject\n * @typedef {Partial<Record<'open'|'active'|'closed', string|CssStyleObject>>} ModalStates\n * @typedef {Partial<Record<keyof ModalRefs, ModalStates>>} ModalStylesOption\n */\n\n/**\n * @typedef {Object} ModalOptions\n * @property {String} move A selector where to move the modal to.\n * @property {String} autofocus A selector for the element to set the focus to when the modal opens.\n * @property {ModalStylesOption} styles The styles for the different state of the modal.\n */\n\n/**\n * @typedef {Object} ModalPrivateInterface\n * @property {ModalRefs} $refs\n * @property {ModalOptions} $options\n * @property {Boolean} isOpen\n * @property {Comment} refModalPlaceholder\n * @property {HTMLElement} refModalParentBackup\n * @property {Function} refModalUnbindGetRefFilter\n */\n\n/**\n * @typedef {Modal & ModalPrivateInterface} ModalInterface\n */\n\n/**\n * Modal class.\n */\nexport default class Modal extends Base {\n /**\n * Modal options.\n */\n static config = {\n name: 'Modal',\n refs: ['close', 'container', 'content', 'modal', 'open', 'overlay'],\n options: {\n move: String,\n autofocus: { type: String, default: '[autofocus]' },\n styles: {\n type: Object,\n /**\n * @return {ModalStylesOption}\n */\n default: () => ({\n modal: {\n closed: {\n opacity: '0',\n pointerEvents: 'none',\n visibility: 'hidden',\n },\n },\n }),\n },\n },\n };\n\n /**\n * Open the modal on click on the `open` ref.\n *\n * @return {Function} The component's `open` method.\n */\n get onOpenClick() {\n return this.open;\n }\n\n /**\n * Close the modal on click on the `close` ref.\n *\n * @return {Function} The component's `close` method.\n */\n get onCloseClick() {\n return this.close;\n }\n\n /**\n * Close the modal on click on the `overlay` ref.\n *\n * @return {Function} The component's `close` method.\n */\n get onOverlayClick() {\n return this.close;\n }\n\n /**\n * Initialize the component's behaviours.\n *\n * @this {ModalInterface}\n */\n mounted() {\n this.isOpen = false;\n this.close();\n\n if (this.$options.move) {\n const target = document.querySelector(this.$options.move) || document.body;\n const refsBackup = this.$refs;\n\n this.refModalPlaceholder = document.createComment('');\n this.refModalParentBackup = this.$refs.modal.parentElement || this.$el;\n this.refModalParentBackup.insertBefore(this.refModalPlaceholder, this.$refs.modal);\n\n this.refModalUnbindGetRefFilter = this.$on(\n 'get:refs',\n /**\n * @param {ModalRefs} refs\n */\n // @ts-ignore\n (refs) => {\n Object.entries(refsBackup).forEach(([key, ref]) => {\n if (!refs[key]) {\n refs[key] = ref;\n }\n });\n }\n );\n target.appendChild(this.$refs.modal);\n }\n\n return this;\n }\n\n /**\n * Unbind all events on destroy.\n *\n * @this {ModalInterface}\n * @return {Modal} The Modal instance.\n */\n destroyed() {\n this.close();\n\n if (this.$options.move && this.refModalParentBackup) {\n this.refModalParentBackup.insertBefore(this.$refs.modal, this.refModalPlaceholder);\n this.refModalUnbindGetRefFilter();\n this.refModalPlaceholder.remove();\n delete this.refModalPlaceholder;\n delete this.refModalParentBackup;\n delete this.refModalUnbindGetRefFilter;\n }\n\n return this;\n }\n\n /**\n * Close the modal on `ESC` and trap the tabulation.\n *\n * @this {ModalInterface}\n * @param {Object} options\n * @param {KeyboardEvent} options.event The original keyboard event\n * @param {Boolean} options.isUp Is it a keyup event?\n * @param {Boolean} options.isDown Is it a keydown event?\n * @param {Boolean} options.ESC Is it the ESC key?\n */\n keyed({ event, isUp, isDown, ESC }) {\n if (!this.isOpen) {\n return;\n }\n\n if (isDown) {\n trap(this.$refs.modal, event);\n }\n\n if (ESC && isUp) {\n this.close();\n }\n }\n\n /**\n * Open the modal.\n *\n * @this {ModalInterface}\n * @return {Promise<ModalInterface>} The Modal instance.\n */\n async open() {\n if (this.isOpen) {\n return Promise.resolve(this);\n }\n\n this.$refs.modal.setAttribute('aria-hidden', 'false');\n document.documentElement.style.overflow = 'hidden';\n\n this.isOpen = true;\n this.$emit('open');\n\n /** @type {ModalRefs} */\n const refs = this.$refs;\n\n return Promise.all(\n Object.entries(this.$options.styles).map(\n ([refName, { open, active, closed } = { open: '', active: '', closed: '' }]) =>\n transition(\n refs[refName],\n {\n from: closed,\n active,\n to: open,\n },\n 'keep'\n )\n )\n ).then(() => {\n if (this.$options.autofocus && this.$refs.modal.querySelector(this.$options.autofocus)) {\n saveActiveElement();\n /** @type {HTMLElement} */\n const autofocusElement = this.$refs.modal.querySelector(this.$options.autofocus);\n autofocusElement.focus();\n }\n return Promise.resolve(this);\n });\n }\n\n /**\n * Close the modal.\n *\n * @this {ModalInterface}\n * @return {Promise<ModalInterface>} The Modal instance.\n */\n async close() {\n if (!this.isOpen) {\n return Promise.resolve(this);\n }\n\n this.$refs.modal.setAttribute('aria-hidden', 'true');\n document.documentElement.style.overflow = '';\n\n this.isOpen = false;\n untrap();\n this.$emit('close');\n\n /** @type {ModalRefs} */\n const refs = this.$refs;\n\n return Promise.all(\n Object.entries(this.$options.styles).map(\n ([refName, { open, active, closed } = { open: '', active: '', closed: '' }]) =>\n transition(\n refs[refName],\n {\n from: open,\n active,\n to: closed,\n },\n 'keep'\n )\n )\n ).then(() => Promise.resolve(this));\n }\n}\n"],"file":"Modal.js"}
@@ -1,108 +0,0 @@
1
- /**
2
- * @typedef {import('../Base').BaseOptions} BaseOptions
3
- */
4
- /**
5
- * @typedef {Object} TabItem
6
- * @property {HTMLElement} btn
7
- * @property {HTMLElement} content
8
- * @property {Boolean} isEnabled
9
- */
10
- /**
11
- * @typedef {Object} TabsRefs
12
- * @property {HTMLElement[]} btn
13
- * @property {HTMLElement[]} content
14
- */
15
- /**
16
- * @typedef {import('../utils/css/styles.js').CssStyleObject} CssStyleObject
17
- * @typedef {Partial<Record<'open'|'active'|'closed', string|CssStyleObject>>} TabsStates
18
- * @typedef {Partial<Record<keyof TabsRefs, TabsStates>>} TabsStylesOption
19
- */
20
- /**
21
- * @typedef {Object} TabsOptions
22
- * @property {TabsStylesOption} styles
23
- */
24
- /**
25
- * @typedef {Object} TabsPrivateInterface
26
- * @property {TabsOptions} $options
27
- * @property {TabsRefs} $refs
28
- * @property {Array<TabItem>} items
29
- */
30
- /**
31
- * @typedef {Tabs & TabsPrivateInterface} TabsInterface
32
- */
33
- /**
34
- * Tabs class.
35
- */
36
- export default class Tabs extends Base {
37
- /**
38
- * Tabs config.
39
- */
40
- static config: {
41
- name: string;
42
- refs: string[];
43
- options: {
44
- styles: {
45
- type: ObjectConstructor;
46
- /**
47
- * @return {TabsStylesOption}
48
- */
49
- default: () => TabsStylesOption;
50
- };
51
- };
52
- };
53
- /**
54
- * Initialize the component's behaviours.
55
- * @this {TabsInterface}
56
- * @return {void}
57
- */
58
- mounted(): void;
59
- items: any;
60
- /**
61
- * Switch tab on button click.
62
- *
63
- * @this {TabsInterface}
64
- * @param {Event} event The click event object.
65
- * @param {Number} index The index of the clicked button.
66
- * @return {void}
67
- */
68
- onBtnClick(event: Event, index: number): void;
69
- /**
70
- * Enable the given tab and its associated content.
71
- *
72
- * @this {TabsInterface}
73
- * @param {TabItem} item The item to enable.
74
- * @return {Promise<TabsInterface>} Tabs instance.
75
- */
76
- enableItem(item: TabItem): Promise<TabsInterface>;
77
- /**
78
- * Disable the given tab and its associated content.
79
- *
80
- * @this {TabsInterface}
81
- * @param {TabItem} item The item to disable.
82
- * @return {Promise<TabsInterface>} The Tabs instance.
83
- */
84
- disableItem(item: TabItem): Promise<TabsInterface>;
85
- }
86
- export type BaseOptions = import('../Base').BaseOptions;
87
- export type TabItem = {
88
- btn: HTMLElement;
89
- content: HTMLElement;
90
- isEnabled: boolean;
91
- };
92
- export type TabsRefs = {
93
- btn: HTMLElement[];
94
- content: HTMLElement[];
95
- };
96
- export type CssStyleObject = import('../utils/css/styles.js').CssStyleObject;
97
- export type TabsStates = Partial<Record<'open' | 'active' | 'closed', string | CssStyleObject>>;
98
- export type TabsStylesOption = Partial<Record<keyof TabsRefs, TabsStates>>;
99
- export type TabsOptions = {
100
- styles: TabsStylesOption;
101
- };
102
- export type TabsPrivateInterface = {
103
- $options: TabsOptions;
104
- $refs: TabsRefs;
105
- items: Array<TabItem>;
106
- };
107
- export type TabsInterface = Tabs & TabsPrivateInterface;
108
- import Base from "../Base/index.js";
@@ -1,195 +0,0 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
- import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
3
- import _createClass from "@babel/runtime/helpers/createClass";
4
- import _inherits from "@babel/runtime/helpers/inherits";
5
- import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
6
- import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
7
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
8
- import _regeneratorRuntime from "@babel/runtime/regenerator";
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 Base from '../Base/index.js';
15
- import transition from '../utils/css/transition.js';
16
-
17
- var Tabs = function (_Base) {
18
- _inherits(Tabs, _Base);
19
-
20
- var _super = _createSuper(Tabs);
21
-
22
- function Tabs() {
23
- _classCallCheck(this, Tabs);
24
-
25
- return _super.apply(this, arguments);
26
- }
27
-
28
- _createClass(Tabs, [{
29
- key: "mounted",
30
- value: function mounted() {
31
- var _this = this;
32
-
33
- this.items = this.$refs.btn.map(function (btn, index) {
34
- var id = "".concat(_this.$id, "-").concat(index);
35
- var content = _this.$refs.content[index];
36
- btn.setAttribute('id', id);
37
- content.setAttribute('aria-labelledby', id);
38
- var item = {
39
- btn: btn,
40
- content: content,
41
- isEnabled: index > 0
42
- };
43
-
44
- if (index > 0) {
45
- _this.disableItem(item);
46
- } else {
47
- _this.enableItem(item);
48
- }
49
-
50
- return item;
51
- });
52
- }
53
- }, {
54
- key: "onBtnClick",
55
- value: function onBtnClick(event, index) {
56
- var _this2 = this;
57
-
58
- this.items.forEach(function (item, i) {
59
- if (i !== index) {
60
- _this2.disableItem(item);
61
- }
62
- });
63
- this.enableItem(this.items[index]);
64
- }
65
- }, {
66
- key: "enableItem",
67
- value: function () {
68
- var _enableItem = _asyncToGenerator(_regeneratorRuntime.mark(function _callee(item) {
69
- var _this3 = this;
70
-
71
- var btn, content, btnStyles, contentStyles;
72
- return _regeneratorRuntime.wrap(function _callee$(_context) {
73
- while (1) {
74
- switch (_context.prev = _context.next) {
75
- case 0:
76
- if (!(!item || item.isEnabled)) {
77
- _context.next = 2;
78
- break;
79
- }
80
-
81
- return _context.abrupt("return", Promise.resolve(this));
82
-
83
- case 2:
84
- item.isEnabled = true;
85
- btn = item.btn, content = item.content;
86
- btnStyles = this.$options.styles.btn || {};
87
- contentStyles = this.$options.styles.content || {};
88
- content.setAttribute('aria-hidden', 'false');
89
- this.$emit('enable', item);
90
- return _context.abrupt("return", Promise.all([transition(btn, {
91
- from: btnStyles.closed,
92
- active: btnStyles.active,
93
- to: btnStyles.open
94
- }, 'keep'), transition(content, {
95
- from: contentStyles.closed,
96
- active: contentStyles.active,
97
- to: contentStyles.open
98
- }, 'keep')]).then(function () {
99
- return Promise.resolve(_this3);
100
- }));
101
-
102
- case 9:
103
- case "end":
104
- return _context.stop();
105
- }
106
- }
107
- }, _callee, this);
108
- }));
109
-
110
- function enableItem(_x) {
111
- return _enableItem.apply(this, arguments);
112
- }
113
-
114
- return enableItem;
115
- }()
116
- }, {
117
- key: "disableItem",
118
- value: function () {
119
- var _disableItem = _asyncToGenerator(_regeneratorRuntime.mark(function _callee2(item) {
120
- var _this4 = this;
121
-
122
- var btn, content, btnStyles, contentStyles;
123
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
124
- while (1) {
125
- switch (_context2.prev = _context2.next) {
126
- case 0:
127
- if (!(!item || !item.isEnabled)) {
128
- _context2.next = 2;
129
- break;
130
- }
131
-
132
- return _context2.abrupt("return", Promise.resolve(this));
133
-
134
- case 2:
135
- item.isEnabled = false;
136
- btn = item.btn, content = item.content;
137
- btnStyles = this.$options.styles.btn || {};
138
- contentStyles = this.$options.styles.content || {};
139
- content.setAttribute('aria-hidden', 'true');
140
- this.$emit('disable', item);
141
- return _context2.abrupt("return", Promise.all([transition(btn, {
142
- from: btnStyles.open,
143
- active: btnStyles.active,
144
- to: btnStyles.closed
145
- }, 'keep'), transition(content, {
146
- from: contentStyles.open,
147
- active: contentStyles.active,
148
- to: contentStyles.closed
149
- }, 'keep')]).then(function () {
150
- return Promise.resolve(_this4);
151
- }));
152
-
153
- case 9:
154
- case "end":
155
- return _context2.stop();
156
- }
157
- }
158
- }, _callee2, this);
159
- }));
160
-
161
- function disableItem(_x2) {
162
- return _disableItem.apply(this, arguments);
163
- }
164
-
165
- return disableItem;
166
- }()
167
- }]);
168
-
169
- return Tabs;
170
- }(Base);
171
-
172
- _defineProperty(Tabs, "config", {
173
- name: 'Tabs',
174
- refs: ['btn[]', 'content[]'],
175
- options: {
176
- styles: {
177
- type: Object,
178
- default: function _default() {
179
- return {
180
- content: {
181
- closed: {
182
- position: 'absolute',
183
- opacity: '0',
184
- pointerEvents: 'none',
185
- visibility: 'hidden'
186
- }
187
- }
188
- };
189
- }
190
- }
191
- }
192
- });
193
-
194
- export { Tabs as default };
195
- //# sourceMappingURL=Tabs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../packages/js-toolkit/components/Tabs.js"],"names":["Base","transition","Tabs","items","$refs","btn","map","index","id","$id","content","setAttribute","item","isEnabled","disableItem","enableItem","event","forEach","i","Promise","resolve","btnStyles","$options","styles","contentStyles","$emit","all","from","closed","active","to","open","then","name","refs","options","type","Object","default","position","opacity","pointerEvents","visibility"],"mappings":"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","sourcesContent":["import Base from '../Base/index.js';\nimport transition from '../utils/css/transition.js';\n\n/**\n * @typedef {import('../Base').BaseOptions} BaseOptions\n */\n\n/**\n * @typedef {Object} TabItem\n * @property {HTMLElement} btn\n * @property {HTMLElement} content\n * @property {Boolean} isEnabled\n */\n\n/**\n * @typedef {Object} TabsRefs\n * @property {HTMLElement[]} btn\n * @property {HTMLElement[]} content\n */\n\n/**\n * @typedef {import('../utils/css/styles.js').CssStyleObject} CssStyleObject\n * @typedef {Partial<Record<'open'|'active'|'closed', string|CssStyleObject>>} TabsStates\n * @typedef {Partial<Record<keyof TabsRefs, TabsStates>>} TabsStylesOption\n */\n\n/**\n * @typedef {Object} TabsOptions\n * @property {TabsStylesOption} styles\n */\n\n/**\n * @typedef {Object} TabsPrivateInterface\n * @property {TabsOptions} $options\n * @property {TabsRefs} $refs\n * @property {Array<TabItem>} items\n */\n\n/**\n * @typedef {Tabs & TabsPrivateInterface} TabsInterface\n */\n\n/**\n * Tabs class.\n */\nexport default class Tabs extends Base {\n /**\n * Tabs config.\n */\n static config = {\n name: 'Tabs',\n refs: ['btn[]', 'content[]'],\n options: {\n styles: {\n type: Object,\n /**\n * @return {TabsStylesOption}\n */\n default: () => ({\n content: {\n closed: {\n position: 'absolute',\n opacity: '0',\n pointerEvents: 'none',\n visibility: 'hidden',\n },\n },\n }),\n },\n },\n };\n\n /**\n * Initialize the component's behaviours.\n * @this {TabsInterface}\n * @return {void}\n */\n mounted() {\n this.items = this.$refs.btn.map((btn, index) => {\n const id = `${this.$id}-${index}`;\n const content = this.$refs.content[index];\n btn.setAttribute('id', id);\n content.setAttribute('aria-labelledby', id);\n\n const item = { btn, content, isEnabled: index > 0 };\n if (index > 0) {\n this.disableItem(item);\n } else {\n this.enableItem(item);\n }\n return item;\n });\n }\n\n /**\n * Switch tab on button click.\n *\n * @this {TabsInterface}\n * @param {Event} event The click event object.\n * @param {Number} index The index of the clicked button.\n * @return {void}\n */\n onBtnClick(event, index) {\n this.items.forEach((item, i) => {\n if (i !== index) {\n this.disableItem(item);\n }\n });\n\n this.enableItem(this.items[index]);\n }\n\n /**\n * Enable the given tab and its associated content.\n *\n * @this {TabsInterface}\n * @param {TabItem} item The item to enable.\n * @return {Promise<TabsInterface>} Tabs instance.\n */\n async enableItem(item) {\n if (!item || item.isEnabled) {\n return Promise.resolve(this);\n }\n\n item.isEnabled = true;\n const { btn, content } = item;\n const btnStyles = this.$options.styles.btn || {};\n const contentStyles = this.$options.styles.content || {};\n\n content.setAttribute('aria-hidden', 'false');\n this.$emit('enable', item);\n\n return Promise.all([\n transition(\n btn,\n {\n from: btnStyles.closed,\n active: btnStyles.active,\n to: btnStyles.open,\n },\n 'keep'\n ),\n transition(\n content,\n {\n from: contentStyles.closed,\n active: contentStyles.active,\n to: contentStyles.open,\n },\n 'keep'\n ),\n ]).then(() => Promise.resolve(this));\n }\n\n /**\n * Disable the given tab and its associated content.\n *\n * @this {TabsInterface}\n * @param {TabItem} item The item to disable.\n * @return {Promise<TabsInterface>} The Tabs instance.\n */\n async disableItem(item) {\n if (!item || !item.isEnabled) {\n return Promise.resolve(this);\n }\n\n item.isEnabled = false;\n const { btn, content } = item;\n const btnStyles = this.$options.styles.btn || {};\n const contentStyles = this.$options.styles.content || {};\n\n content.setAttribute('aria-hidden', 'true');\n this.$emit('disable', item);\n\n return Promise.all([\n transition(\n btn,\n {\n from: btnStyles.open,\n active: btnStyles.active,\n to: btnStyles.closed,\n },\n 'keep'\n ),\n transition(\n content,\n {\n from: contentStyles.open,\n active: contentStyles.active,\n to: contentStyles.closed,\n },\n 'keep'\n ),\n ]).then(() => Promise.resolve(this));\n }\n}\n"],"file":"Tabs.js"}
@@ -1,6 +0,0 @@
1
- import Accordion from "./Accordion/index.js";
2
- import Cursor from "./Cursor.js";
3
- import Draggable from "./Draggable.js";
4
- import Modal from "./Modal.js";
5
- import Tabs from "./Tabs.js";
6
- export { Accordion, Cursor, Draggable, Modal, Tabs };
@@ -1,7 +0,0 @@
1
- import Accordion from './Accordion/index.js';
2
- import Cursor from './Cursor.js';
3
- import Draggable from './Draggable.js';
4
- import Modal from './Modal.js';
5
- import Tabs from './Tabs.js';
6
- export { Accordion, Cursor, Draggable, Modal, Tabs };
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../packages/js-toolkit/components/index.js"],"names":["Accordion","Cursor","Draggable","Modal","Tabs"],"mappings":"AAAA,OAAOA,SAAP,MAAsB,sBAAtB;AACA,OAAOC,MAAP,MAAmB,aAAnB;AACA,OAAOC,SAAP,MAAsB,gBAAtB;AACA,OAAOC,KAAP,MAAkB,YAAlB;AACA,OAAOC,IAAP,MAAiB,WAAjB;AAEA,SAASJ,SAAT,EAAoBC,MAApB,EAA4BC,SAA5B,EAAuCC,KAAvC,EAA8CC,IAA9C","sourcesContent":["import Accordion from './Accordion/index.js';\nimport Cursor from './Cursor.js';\nimport Draggable from './Draggable.js';\nimport Modal from './Modal.js';\nimport Tabs from './Tabs.js';\n\nexport { Accordion, Cursor, Draggable, Modal, Tabs };\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../packages/js-toolkit/decorators/index.js"],"names":["withBreakpointManager","withBreakpointObserver","withDrag","withExtraConfig","withIntersectionObserver","withMountWhenInView"],"mappings":"AAAA,OAAOA,qBAAP,MAAkC,4BAAlC;AACA,OAAOC,sBAAP,MAAmC,6BAAnC;AACA,OAAOC,QAAP,MAAqB,eAArB;AACA,OAAOC,eAAP,MAA4B,sBAA5B;AACA,OAAOC,wBAAP,MAAqC,+BAArC;AACA,OAAOC,mBAAP,MAAgC,0BAAhC;AAEA,SACEL,qBADF,EAEEC,sBAFF,EAGEC,QAHF,EAIEC,eAJF,EAKEC,wBALF,EAMEC,mBANF","sourcesContent":["import withBreakpointManager from './withBreakpointManager.js';\nimport withBreakpointObserver from './withBreakpointObserver.js';\nimport withDrag from './withDrag.js';\nimport withExtraConfig from './withExtraConfig.js';\nimport withIntersectionObserver from './withIntersectionObserver.js';\nimport withMountWhenInView from './withMountWhenInView.js';\n\nexport {\n withBreakpointManager,\n withBreakpointObserver,\n withDrag,\n withExtraConfig,\n withIntersectionObserver,\n withMountWhenInView,\n};\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../packages/js-toolkit/decorators/withBreakpointManager.js"],"names":["useResize","testBreakpoints","breakpoints","props","breakpoint","forEach","breakpointKeys","instance","includes","$isMounted","setTimeout","$mount","$destroy","mountComponents","map","bk","ComponentClass","child","$el","Object","defineProperty","get","$parent","instances","WeakMap","withBreakpointManager","BaseClass","Array","isArray","Error","length","add","element","has","set","$id"],"mappings":"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","sourcesContent":["import useResize from '../services/resize.js';\n\n/**\n * @typedef {import('../Base').default} Base\n * @typedef {import('../Base').BaseComponent} BaseComponent\n */\n\n/**\n * Test the breakpoins of the given Base instance and return the hook to call.\n *\n * @param {Array<[String[], Base]>} breakpoints The breakpoints's data.\n */\nfunction testBreakpoints(breakpoints) {\n const { breakpoint } = useResize().props();\n breakpoints.forEach(([breakpointKeys, instance]) => {\n if (breakpointKeys.includes(breakpoint) && !instance.$isMounted) {\n setTimeout(() => instance.$mount(), 0);\n } else if (!breakpointKeys.includes(breakpoint) && instance.$isMounted) {\n instance.$destroy();\n }\n });\n}\n\n/**\n * Prepare the components.\n * @param {Base} instance\n * @param {Array<[String, BaseComponent]>} breakpoints\n * @return {Array<[String, Base]>}\n */\nfunction mountComponents(instance, breakpoints) {\n return breakpoints.map(([bk, ComponentClass]) => {\n const child = new ComponentClass(instance.$el);\n Object.defineProperty(child, '$parent', { get: () => instance.$parent });\n return [bk, child];\n });\n}\n\n/**\n * A cache object to hold each Base sub-instances.\n * @type {Object}\n */\nconst instances = new WeakMap();\n\n/**\n * BreakpointManager class.\n * @template {BaseComponent} T\n * @param {T} BaseClass\n * @param {Array<[String, BaseComponent]>} breakpoints\n * @return {T}\n */\nexport default function withBreakpointManager(BaseClass, breakpoints) {\n if (!Array.isArray(breakpoints)) {\n throw new Error('[withBreakpointManager] The `breakpoints` parameter must be an array.');\n }\n\n if (breakpoints.length < 2) {\n throw new Error('[withBreakpointManager] You must define at least 2 breakpoints.');\n }\n\n const { add, props } = useResize();\n\n // Do nothing if no breakpoint has been defined.\n // @see https://js-toolkit.meta.fr/services/resize.html#breakpoint\n if (!props().breakpoint) {\n throw new Error(`The \\`BreakpointManager\\` class requires breakpoints to be defined.`);\n }\n\n // @ts-ignore\n return class extends BaseClass {\n /**\n * Watch for the document resize to test the breakpoints.\n * @param {HTMLElement} element The component's root element.\n */\n constructor(element) {\n super(element);\n\n if (!instances.has(this)) {\n instances.set(this, mountComponents(this, breakpoints));\n }\n\n add(`BreakpointManager-${this.$id}`, () => {\n testBreakpoints(instances.get(this));\n });\n\n this.instances = instances.get(this);\n\n return this;\n }\n\n /**\n * Override the default $mount method to prevent component's from being\n * mounted when they should not.\n *\n * @return {this}\n */\n $mount() {\n super.$mount();\n\n testBreakpoints(instances.get(this));\n\n return this;\n }\n\n /**\n * Destroy all instances when the main one is destroyed.\n *\n * @return {this}\n */\n $destroy() {\n if (Array.isArray(instances.get(this))) {\n instances.get(this).forEach(([, instance]) => {\n instance.$destroy();\n });\n }\n\n return super.$destroy();\n }\n };\n}\n"],"file":"withBreakpointManager.js"}