@appartmint/mint 5.0.3 → 5.0.4

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 (157) hide show
  1. package/dist/imports/abstract/attaches-events.cjs.js +1 -0
  2. package/dist/{js/imports → imports}/abstract/attaches-events.d.ts +0 -4
  3. package/dist/imports/abstract/attaches-events.esm.js +23 -0
  4. package/dist/imports/abstract/index.cjs.js +1 -0
  5. package/dist/{js/imports → imports}/abstract/index.d.ts +0 -1
  6. package/dist/imports/abstract/index.esm.js +2 -0
  7. package/dist/imports/components/grid.cjs.js +1 -0
  8. package/dist/imports/components/grid.d.ts +9 -0
  9. package/dist/imports/components/grid.esm.js +7 -0
  10. package/dist/imports/components/header.cjs.js +1 -0
  11. package/dist/{js/imports → imports}/components/header.d.ts +12 -13
  12. package/dist/imports/components/header.esm.js +31 -0
  13. package/dist/imports/components/index.cjs.js +1 -0
  14. package/dist/{js/imports → imports}/components/index.d.ts +0 -1
  15. package/dist/imports/components/index.esm.js +5 -0
  16. package/dist/imports/components/menu.cjs.js +1 -0
  17. package/dist/{js/imports → imports}/components/menu.d.ts +9 -7
  18. package/dist/imports/components/menu.esm.js +119 -0
  19. package/dist/imports/components/panel.cjs.js +1 -0
  20. package/dist/{js/imports → imports}/components/panel.d.ts +15 -4
  21. package/dist/imports/components/panel.esm.js +88 -0
  22. package/dist/imports/enums/index.cjs.js +1 -0
  23. package/dist/{js/imports → imports}/enums/index.d.ts +0 -1
  24. package/dist/imports/enums/index.esm.js +2 -0
  25. package/dist/imports/enums/side.cjs.js +1 -0
  26. package/dist/{js/imports → imports}/enums/side.d.ts +0 -1
  27. package/dist/imports/enums/side.esm.js +6 -0
  28. package/dist/imports/index.cjs.js +1 -0
  29. package/dist/{js/imports → imports}/index.d.ts +0 -1
  30. package/dist/imports/index.esm.js +23 -0
  31. package/dist/imports/models/color.cjs.js +1 -0
  32. package/dist/{js/imports → imports}/models/color.d.ts +1 -4
  33. package/dist/imports/models/color.esm.js +48 -0
  34. package/dist/imports/models/event.cjs.js +1 -0
  35. package/dist/{js/imports → imports}/models/event.d.ts +0 -1
  36. package/dist/imports/models/event.esm.js +0 -0
  37. package/dist/imports/models/file.cjs.js +1 -0
  38. package/dist/{js/imports → imports}/models/file.d.ts +2 -7
  39. package/dist/imports/models/file.esm.js +0 -0
  40. package/dist/imports/models/index.cjs.js +1 -0
  41. package/dist/{js/imports → imports}/models/index.d.ts +0 -1
  42. package/dist/imports/models/index.esm.js +3 -0
  43. package/dist/imports/models/item.cjs.js +1 -0
  44. package/dist/{js/imports → imports}/models/item.d.ts +5 -14
  45. package/dist/imports/models/item.esm.js +45 -0
  46. package/dist/imports/models/minify.cjs.js +1 -0
  47. package/dist/{js/imports → imports}/models/minify.d.ts +0 -1
  48. package/dist/imports/models/minify.esm.js +0 -0
  49. package/dist/imports/models/page.cjs.js +1 -0
  50. package/dist/{js/imports → imports}/models/page.d.ts +1 -5
  51. package/dist/imports/models/page.esm.js +0 -0
  52. package/dist/imports/models/primitive.cjs.js +1 -0
  53. package/dist/{js/imports → imports}/models/primitive.d.ts +0 -1
  54. package/dist/imports/models/primitive.esm.js +0 -0
  55. package/dist/imports/models/recaptcha.cjs.js +1 -0
  56. package/dist/{js/imports → imports}/models/recaptcha.d.ts +0 -1
  57. package/dist/imports/models/recaptcha.esm.js +0 -0
  58. package/dist/imports/util/async.cjs.js +1 -0
  59. package/dist/imports/util/async.d.ts +10 -0
  60. package/dist/imports/util/async.esm.js +6 -0
  61. package/dist/imports/util/display.cjs.js +1 -0
  62. package/dist/{js/imports → imports}/util/display.d.ts +4 -8
  63. package/dist/imports/util/display.esm.js +26 -0
  64. package/dist/imports/util/event.cjs.js +1 -0
  65. package/dist/{js/imports → imports}/util/event.d.ts +8 -11
  66. package/dist/imports/util/event.esm.js +31 -0
  67. package/dist/imports/util/icon.cjs.js +1 -0
  68. package/dist/imports/util/icon.d.ts +23 -0
  69. package/dist/imports/util/icon.esm.js +33 -0
  70. package/dist/imports/util/index.cjs.js +1 -0
  71. package/dist/{js/imports → imports}/util/index.d.ts +0 -1
  72. package/dist/imports/util/index.esm.js +13 -0
  73. package/dist/imports/util/list.cjs.js +1 -0
  74. package/dist/{js/imports → imports}/util/list.d.ts +5 -6
  75. package/dist/imports/util/list.esm.js +21 -0
  76. package/dist/imports/util/math.cjs.js +1 -0
  77. package/dist/{js/imports → imports}/util/math.d.ts +7 -8
  78. package/dist/imports/util/math.esm.js +16 -0
  79. package/dist/imports/util/object.cjs.js +1 -0
  80. package/dist/{js/imports → imports}/util/object.d.ts +16 -17
  81. package/dist/imports/util/object.esm.js +115 -0
  82. package/dist/imports/util/scroll.cjs.js +1 -0
  83. package/dist/{js/imports → imports}/util/scroll.d.ts +6 -7
  84. package/dist/imports/util/scroll.esm.js +26 -0
  85. package/dist/imports/util/selectors.cjs.js +8 -0
  86. package/dist/{js/imports → imports}/util/selectors.d.ts +26 -69
  87. package/dist/imports/util/selectors.esm.js +63 -0
  88. package/dist/imports/util/settings.cjs.js +1 -0
  89. package/dist/imports/util/settings.d.ts +38 -0
  90. package/dist/imports/util/settings.esm.js +43 -0
  91. package/dist/imports/util/text.cjs.js +8 -0
  92. package/dist/{js/imports → imports}/util/text.d.ts +13 -14
  93. package/dist/imports/util/text.esm.js +75 -0
  94. package/dist/imports/util/window.cjs.js +1 -0
  95. package/dist/{js/imports → imports}/util/window.d.ts +4 -5
  96. package/dist/imports/util/window.esm.js +13 -0
  97. package/dist/index.cjs.js +1 -0
  98. package/dist/{js/index.d.ts → index.d.ts} +0 -1
  99. package/dist/index.esm.js +22 -0
  100. package/dist/{css/mint.css → mint.css} +1 -4
  101. package/dist/mint.css.map +1 -0
  102. package/dist/mint.min.css +1 -0
  103. package/dist/mint.min.css.map +1 -0
  104. package/dist/noscript.css +5 -0
  105. package/dist/noscript.css.map +1 -0
  106. package/dist/noscript.min.css +1 -0
  107. package/dist/noscript.min.css.map +1 -0
  108. package/package.json +76 -67
  109. package/src/scss/imports/util/_vars.scss +12 -12
  110. package/dist/css/mint.css.map +0 -1
  111. package/dist/css/mint.min.css +0 -3
  112. package/dist/css/mint.min.css.map +0 -1
  113. package/dist/css/noscript.css +0 -8
  114. package/dist/css/noscript.css.map +0 -1
  115. package/dist/css/noscript.min.css +0 -3
  116. package/dist/css/noscript.min.css.map +0 -1
  117. package/dist/js/imports/abstract/attaches-events.d.ts.map +0 -1
  118. package/dist/js/imports/abstract/index.d.ts.map +0 -1
  119. package/dist/js/imports/components/grid.d.ts +0 -10
  120. package/dist/js/imports/components/grid.d.ts.map +0 -1
  121. package/dist/js/imports/components/header.d.ts.map +0 -1
  122. package/dist/js/imports/components/index.d.ts.map +0 -1
  123. package/dist/js/imports/components/menu.d.ts.map +0 -1
  124. package/dist/js/imports/components/panel.d.ts.map +0 -1
  125. package/dist/js/imports/enums/index.d.ts.map +0 -1
  126. package/dist/js/imports/enums/side.d.ts.map +0 -1
  127. package/dist/js/imports/index.d.ts.map +0 -1
  128. package/dist/js/imports/models/color.d.ts.map +0 -1
  129. package/dist/js/imports/models/event.d.ts.map +0 -1
  130. package/dist/js/imports/models/file.d.ts.map +0 -1
  131. package/dist/js/imports/models/index.d.ts.map +0 -1
  132. package/dist/js/imports/models/item.d.ts.map +0 -1
  133. package/dist/js/imports/models/minify.d.ts.map +0 -1
  134. package/dist/js/imports/models/page.d.ts.map +0 -1
  135. package/dist/js/imports/models/primitive.d.ts.map +0 -1
  136. package/dist/js/imports/models/recaptcha.d.ts.map +0 -1
  137. package/dist/js/imports/util/async.d.ts +0 -11
  138. package/dist/js/imports/util/async.d.ts.map +0 -1
  139. package/dist/js/imports/util/display.d.ts.map +0 -1
  140. package/dist/js/imports/util/event.d.ts.map +0 -1
  141. package/dist/js/imports/util/icon.d.ts +0 -29
  142. package/dist/js/imports/util/icon.d.ts.map +0 -1
  143. package/dist/js/imports/util/index.d.ts.map +0 -1
  144. package/dist/js/imports/util/list.d.ts.map +0 -1
  145. package/dist/js/imports/util/math.d.ts.map +0 -1
  146. package/dist/js/imports/util/object.d.ts.map +0 -1
  147. package/dist/js/imports/util/scroll.d.ts.map +0 -1
  148. package/dist/js/imports/util/selectors.d.ts.map +0 -1
  149. package/dist/js/imports/util/settings.d.ts +0 -39
  150. package/dist/js/imports/util/settings.d.ts.map +0 -1
  151. package/dist/js/imports/util/text.d.ts.map +0 -1
  152. package/dist/js/imports/util/window.d.ts.map +0 -1
  153. package/dist/js/index.d.ts.map +0 -1
  154. package/dist/js/index.js +0 -2455
  155. package/dist/js/index.js.map +0 -1
  156. package/dist/js/index.min.js +0 -2
  157. package/dist/js/index.min.js.map +0 -1
package/dist/js/index.js DELETED
@@ -1,2455 +0,0 @@
1
- /******/ var __webpack_modules__ = ({
2
-
3
- /***/ "./src/ts/imports/abstract/attaches-events.ts"
4
- /*!****************************************************!*\
5
- !*** ./src/ts/imports/abstract/attaches-events.ts ***!
6
- \****************************************************/
7
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
8
-
9
- __webpack_require__.r(__webpack_exports__);
10
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
11
- /* harmony export */ MintAttachesEvents: () => (/* binding */ MintAttachesEvents)
12
- /* harmony export */ });
13
- /**
14
- * Imports
15
- */
16
- /**
17
- * Attaches Events
18
- * @remarks Extended by classes that attach and detach events
19
- */
20
- class MintAttachesEvents {
21
- /**
22
- * Event handlers
23
- */
24
- events = [];
25
- /**
26
- * Attach event to the given element
27
- * @param element - Element to attach event to
28
- * @param event - Event to attach
29
- * @param handler - Handler to attach
30
- */
31
- attachEvent(element, event, handler) {
32
- if (element) {
33
- let oldElement = this.events.find(e => e.el === element);
34
- if (oldElement) {
35
- oldElement.handlers.push(handler);
36
- oldElement.events.push(event);
37
- }
38
- else {
39
- this.events.push({
40
- el: element,
41
- handlers: [handler],
42
- events: [event]
43
- });
44
- }
45
- element.addEventListener(event, handler);
46
- }
47
- }
48
- /**
49
- * Detach events
50
- */
51
- detachEvents() {
52
- this.events.forEach(event => {
53
- event.handlers.forEach((handler, index) => {
54
- event.el?.removeEventListener(event.events[index], handler);
55
- });
56
- });
57
- this.events = [];
58
- }
59
- }
60
-
61
-
62
- /***/ },
63
-
64
- /***/ "./src/ts/imports/abstract/index.ts"
65
- /*!******************************************!*\
66
- !*** ./src/ts/imports/abstract/index.ts ***!
67
- \******************************************/
68
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
69
-
70
- __webpack_require__.r(__webpack_exports__);
71
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
72
- /* harmony export */ MintAttachesEvents: () => (/* reexport safe */ _attaches_events__WEBPACK_IMPORTED_MODULE_0__.MintAttachesEvents)
73
- /* harmony export */ });
74
- /* harmony import */ var _attaches_events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./attaches-events */ "./src/ts/imports/abstract/attaches-events.ts");
75
- /**
76
- * Forward all abstract exports
77
- */
78
-
79
-
80
-
81
- /***/ },
82
-
83
- /***/ "./src/ts/imports/components/grid.ts"
84
- /*!*******************************************!*\
85
- !*** ./src/ts/imports/components/grid.ts ***!
86
- \*******************************************/
87
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
88
-
89
- __webpack_require__.r(__webpack_exports__);
90
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
91
- /* harmony export */ MintGrid: () => (/* binding */ MintGrid)
92
- /* harmony export */ });
93
- /* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/math */ "./src/ts/imports/util/math.ts");
94
- /**
95
- * Imports
96
- */
97
-
98
- /**
99
- * Grid Component
100
- */
101
- class MintGrid {
102
- /**
103
- * Get a valid grid number
104
- */
105
- static gridNum(num) {
106
- return _util_math__WEBPACK_IMPORTED_MODULE_0__.MintMath.clamp(num, 1, 4);
107
- }
108
- }
109
-
110
-
111
- /***/ },
112
-
113
- /***/ "./src/ts/imports/components/header.ts"
114
- /*!*********************************************!*\
115
- !*** ./src/ts/imports/components/header.ts ***!
116
- \*********************************************/
117
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
118
-
119
- __webpack_require__.r(__webpack_exports__);
120
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
121
- /* harmony export */ MintHeader: () => (/* binding */ MintHeader)
122
- /* harmony export */ });
123
- /* harmony import */ var _panel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./panel */ "./src/ts/imports/components/panel.ts");
124
- /* harmony import */ var _menu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./menu */ "./src/ts/imports/components/menu.ts");
125
- /**
126
- * Imports
127
- */
128
- // Mint
129
-
130
-
131
- /**
132
- * Main header functionality
133
- * @public
134
- */
135
- class MintHeader {
136
- /**
137
- * Navbar settings
138
- */
139
- settings = {
140
- id: 'mint-menu',
141
- wrapperId: 'mint-wrapper',
142
- title: 'menu',
143
- fixed: true
144
- };
145
- /**
146
- * Frequently-referenced elements
147
- */
148
- el = {};
149
- /**
150
- * Navigation functionality
151
- */
152
- panel;
153
- menu;
154
- /**
155
- * Initializes and closes the menu
156
- */
157
- constructor(settings) {
158
- this.settings = { ...this.settings, ...settings };
159
- this.panel = new _panel__WEBPACK_IMPORTED_MODULE_0__.MintPanel(this.settings);
160
- this.menu = new _menu__WEBPACK_IMPORTED_MODULE_1__.MintMenu(this.settings);
161
- this.attachElements();
162
- this.addClasses();
163
- }
164
- /**
165
- * Detach events
166
- */
167
- detachEvents() {
168
- this.panel?.detachEvents();
169
- this.menu?.detachEvents();
170
- }
171
- /**
172
- * Adds elements to {@link el | `this.el`}
173
- */
174
- attachElements() {
175
- this.el.body = document.querySelector('body');
176
- }
177
- /**
178
- * Adds classes that inform the styles based on settings
179
- */
180
- addClasses() {
181
- if (this.settings.fixed) {
182
- this.el.body?.classList.add('mint-fixed');
183
- }
184
- }
185
- }
186
-
187
-
188
- /***/ },
189
-
190
- /***/ "./src/ts/imports/components/index.ts"
191
- /*!********************************************!*\
192
- !*** ./src/ts/imports/components/index.ts ***!
193
- \********************************************/
194
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
195
-
196
- __webpack_require__.r(__webpack_exports__);
197
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
198
- /* harmony export */ MintGrid: () => (/* reexport safe */ _grid__WEBPACK_IMPORTED_MODULE_0__.MintGrid),
199
- /* harmony export */ MintHeader: () => (/* reexport safe */ _header__WEBPACK_IMPORTED_MODULE_1__.MintHeader),
200
- /* harmony export */ MintMenu: () => (/* reexport safe */ _menu__WEBPACK_IMPORTED_MODULE_2__.MintMenu),
201
- /* harmony export */ MintPanel: () => (/* reexport safe */ _panel__WEBPACK_IMPORTED_MODULE_3__.MintPanel)
202
- /* harmony export */ });
203
- /* harmony import */ var _grid__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./grid */ "./src/ts/imports/components/grid.ts");
204
- /* harmony import */ var _header__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./header */ "./src/ts/imports/components/header.ts");
205
- /* harmony import */ var _menu__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./menu */ "./src/ts/imports/components/menu.ts");
206
- /* harmony import */ var _panel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./panel */ "./src/ts/imports/components/panel.ts");
207
- /**
208
- * Forward all exports from the components directory
209
- */
210
-
211
-
212
-
213
-
214
-
215
-
216
- /***/ },
217
-
218
- /***/ "./src/ts/imports/components/menu.ts"
219
- /*!*******************************************!*\
220
- !*** ./src/ts/imports/components/menu.ts ***!
221
- \*******************************************/
222
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
223
-
224
- __webpack_require__.r(__webpack_exports__);
225
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
226
- /* harmony export */ MintMenu: () => (/* binding */ MintMenu)
227
- /* harmony export */ });
228
- /* harmony import */ var _abstract__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../abstract */ "./src/ts/imports/abstract/index.ts");
229
- /* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ "./src/ts/imports/util/index.ts");
230
- /**
231
- * Imports
232
- */
233
- // Mint
234
-
235
-
236
- /**
237
- * Menu (dropdown) functionality
238
- * @public
239
- */
240
- class MintMenu extends _abstract__WEBPACK_IMPORTED_MODULE_0__.MintAttachesEvents {
241
- /**
242
- * Tray settings
243
- */
244
- settings = {};
245
- /**
246
- * Frequently-referenced elements
247
- */
248
- el = {};
249
- /**
250
- * Initializes and closes the tray
251
- */
252
- constructor(settings) {
253
- super();
254
- this.settings = { ...this.settings, ...settings };
255
- if (!this.settings.wrapperId) {
256
- throw new Error('Wrapper ID is required');
257
- }
258
- this.attachElements();
259
- this.attachEvents();
260
- requestAnimationFrame(() => {
261
- this.closeAllMenus();
262
- });
263
- }
264
- /**
265
- * Adds elements to {@link el | `this.el`}
266
- */
267
- attachElements() {
268
- this.el.wrapper = document.getElementById(this.settings.wrapperId);
269
- }
270
- /**
271
- * Adds events to the dom
272
- */
273
- attachEvents() {
274
- this.attachEvent(window, 'scroll', _util__WEBPACK_IMPORTED_MODULE_1__.MintEvent.throttleEvent(this.eHandleScroll.bind(this), _util__WEBPACK_IMPORTED_MODULE_1__.MintSettings.delay.default, { trailing: false }));
275
- const focusables = this.el.wrapper?.querySelectorAll(_util__WEBPACK_IMPORTED_MODULE_1__.MintSelectors.focusable);
276
- focusables?.forEach((focusable) => {
277
- this.attachEvent(focusable, 'keydown', _util__WEBPACK_IMPORTED_MODULE_1__.MintEvent.throttleEvent(this.eHandleKeypress.bind(this)));
278
- });
279
- const menuButtons = this.el.wrapper?.querySelectorAll(_util__WEBPACK_IMPORTED_MODULE_1__.MintSelectors.controls());
280
- menuButtons?.forEach((menuButton) => {
281
- this.attachEvent(menuButton, 'click', _util__WEBPACK_IMPORTED_MODULE_1__.MintEvent.throttleEvent(this.eToggleMenu.bind(this), _util__WEBPACK_IMPORTED_MODULE_1__.MintSettings.delay.slow, { trailing: false }));
282
- });
283
- }
284
- /**
285
- * Sets the state of the provided button's menu
286
- * @param button - Button element to set
287
- * @param open - `true` to open the menu or `false` to close it
288
- */
289
- setMenu(button, open = false) {
290
- let ariaExpanded = open ? 'true' : 'false', menu = button?.nextElementSibling;
291
- if (button && menu) {
292
- button.setAttribute('aria-expanded', ariaExpanded);
293
- if (open) {
294
- _util__WEBPACK_IMPORTED_MODULE_1__.MintDisplay.show(menu);
295
- }
296
- else {
297
- _util__WEBPACK_IMPORTED_MODULE_1__.MintDisplay.hide(menu);
298
- this.closeSubMenus(button);
299
- }
300
- }
301
- }
302
- /**
303
- * Toggles the state of the provided button's menu
304
- * @param button - Button element to toggle
305
- */
306
- toggleMenu(button) {
307
- this.setMenu(button, button?.getAttribute('aria-expanded')?.toLowerCase() !== 'true');
308
- }
309
- /**
310
- * Closes all submenus of the provided button's menu
311
- * @param button - Button element of the parent menu
312
- */
313
- closeSubMenus(button) {
314
- let menu = button?.nextElementSibling, subMenus = menu?.querySelectorAll(_util__WEBPACK_IMPORTED_MODULE_1__.MintSelectors.subMenuButtons);
315
- subMenus.forEach((child) => {
316
- // setMenu calls this function, so ignore subsub menus
317
- if (child.parentElement?.parentElement === menu) {
318
- this.setMenu(child);
319
- }
320
- });
321
- }
322
- /**
323
- * Closes all sibling menus of the provided button's menu
324
- * @param button - Button element of the sibling menus
325
- */
326
- closeSiblingMenus(button) {
327
- let menu = button?.parentElement, siblingMenus = menu?.parentElement?.querySelectorAll(_util__WEBPACK_IMPORTED_MODULE_1__.MintSelectors.subMenuButtons);
328
- siblingMenus.forEach((child) => {
329
- if (child !== button) {
330
- this.setMenu(child);
331
- }
332
- });
333
- }
334
- /**
335
- * Closes all submenus of the menu
336
- */
337
- closeAllMenus() {
338
- let menuButtons = this.el.wrapper?.querySelectorAll(_util__WEBPACK_IMPORTED_MODULE_1__.MintSelectors.subMenuButtons);
339
- menuButtons?.forEach((menuButton) => {
340
- this.setMenu(menuButton);
341
- });
342
- }
343
- /**
344
- * Opens the menu closest to the document's focus
345
- */
346
- openClosestMenu() {
347
- let activeButton = document.activeElement, activeMenu = activeButton?.nextElementSibling, showing = activeButton?.getAttribute('aria-expanded')?.toLowerCase() === 'true';
348
- if (activeButton?.getAttribute('aria-controls') === this.settings.wrapperId) {
349
- activeMenu = this.el.wrapper;
350
- }
351
- if (activeButton?.getAttribute('aria-controls') && activeMenu && !showing) {
352
- activeButton.click();
353
- let firstFocusable = activeMenu.querySelector(_util__WEBPACK_IMPORTED_MODULE_1__.MintSelectors.focusable);
354
- firstFocusable?.focus();
355
- }
356
- }
357
- /**
358
- * Closes the menu closest to the document's focus
359
- */
360
- closeClosestMenu() {
361
- let activeElement = document.activeElement, activeMenu = activeElement?.closest(_util__WEBPACK_IMPORTED_MODULE_1__.MintSelectors.subMenu), activeButton = activeMenu?.previousElementSibling;
362
- if (activeElement?.getAttribute('aria-controls') && activeElement?.getAttribute('aria-expanded')?.toLowerCase() === 'true') {
363
- activeButton = activeElement;
364
- }
365
- if (activeButton?.getAttribute('aria-expanded')?.toLowerCase() === 'true') {
366
- activeButton?.click();
367
- activeButton?.focus();
368
- }
369
- }
370
- /**
371
- * Toggles the menu closest to the document's focus
372
- */
373
- toggleClosestMenu() {
374
- if (document.activeElement?.getAttribute('aria-expanded')?.toLowerCase() === 'true') {
375
- this.closeClosestMenu();
376
- }
377
- else {
378
- this.openClosestMenu();
379
- }
380
- }
381
- /**
382
- * Closes all submenus when the page is scrolled
383
- */
384
- eHandleScroll() {
385
- this.closeAllMenus();
386
- }
387
- /**
388
- * Handles keypresses on menu buttons
389
- * @param e - Keyboard event
390
- */
391
- eHandleButtonKeypress(e) {
392
- let target = e.target, subMenu = target?.closest('li');
393
- switch (e.key.toLowerCase()) {
394
- case 'escape':
395
- if (subMenu?.classList.contains('mint-open')) {
396
- this.setMenu(subMenu);
397
- }
398
- break;
399
- case 'arrowleft':
400
- this.closeClosestMenu();
401
- break;
402
- case 'arrowright':
403
- this.openClosestMenu();
404
- break;
405
- case 'enter':
406
- case 'space':
407
- target?.click();
408
- break;
409
- }
410
- }
411
- /**
412
- * Handles keypresses on menu links
413
- * @param e - Keyboard event
414
- */
415
- eHandleLinkKeypress(e) {
416
- let target = e.target;
417
- switch (e.key.toLowerCase()) {
418
- case 'escape':
419
- case 'arrowleft':
420
- this.closeClosestMenu();
421
- break;
422
- case 'arrowright':
423
- this.openClosestMenu();
424
- break;
425
- case 'enter':
426
- case 'space':
427
- target?.click();
428
- break;
429
- }
430
- }
431
- /**
432
- * Handles keypresses on the menu
433
- * @param e - Keyboard event
434
- */
435
- eHandleKeypress(e) {
436
- if (e.key.toLowerCase() !== 'tab') {
437
- e.preventDefault();
438
- }
439
- const target = e.target;
440
- switch (target?.tagName.toLowerCase()) {
441
- case 'a':
442
- this.eHandleLinkKeypress(e);
443
- break;
444
- case 'button':
445
- this.eHandleButtonKeypress(e);
446
- break;
447
- }
448
- }
449
- /**
450
- * Toggles the clicked submenu
451
- * @param e - Mouse event
452
- */
453
- eToggleMenu(e) {
454
- let target = e.target;
455
- this.closeSiblingMenus(target);
456
- this.toggleMenu(target);
457
- }
458
- }
459
- ;
460
-
461
-
462
- /***/ },
463
-
464
- /***/ "./src/ts/imports/components/panel.ts"
465
- /*!********************************************!*\
466
- !*** ./src/ts/imports/components/panel.ts ***!
467
- \********************************************/
468
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
469
-
470
- __webpack_require__.r(__webpack_exports__);
471
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
472
- /* harmony export */ MintPanel: () => (/* binding */ MintPanel)
473
- /* harmony export */ });
474
- /* harmony import */ var _enums_side__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums/side */ "./src/ts/imports/enums/side.ts");
475
- /* harmony import */ var _abstract__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../abstract */ "./src/ts/imports/abstract/index.ts");
476
- /* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util */ "./src/ts/imports/util/index.ts");
477
- /**
478
- * Imports
479
- */
480
-
481
-
482
-
483
- /**
484
- * Panel (sidebar) functionality
485
- * @public
486
- */
487
- class MintPanel extends _abstract__WEBPACK_IMPORTED_MODULE_1__.MintAttachesEvents {
488
- /**
489
- * Panel settings
490
- */
491
- settings = {
492
- title: 'panel',
493
- from: _enums_side__WEBPACK_IMPORTED_MODULE_0__.EMintSide.Top,
494
- fixed: true
495
- };
496
- /**
497
- * Frequently-referenced elements
498
- */
499
- el = {};
500
- /**
501
- * Initializes and closes the panel
502
- */
503
- constructor(settings) {
504
- super();
505
- this.settings = { ...this.settings, ...settings };
506
- if (!this.settings.id || !this.settings.wrapperId) {
507
- throw new Error('Panel ID and wrapper ID are required');
508
- }
509
- this.attachElements();
510
- this.attachEvents();
511
- this.addClasses();
512
- requestAnimationFrame(() => {
513
- this.setPanel();
514
- });
515
- }
516
- /**
517
- * Adds elements to {@link el | `this.el`}
518
- */
519
- attachElements() {
520
- this.el.html = document.querySelector('html');
521
- this.el.main = document.querySelector('main');
522
- this.el.panel = document.getElementById(this.settings.id);
523
- this.el.wrapper = document.getElementById(this.settings.wrapperId);
524
- this.el.toggleButton = this.el.panel?.querySelector(_util__WEBPACK_IMPORTED_MODULE_2__.MintSelectors.controls(this.settings.wrapperId)) || null;
525
- }
526
- /**
527
- * Adds events to the dom
528
- */
529
- attachEvents() {
530
- this.attachEvent(window, 'resize', _util__WEBPACK_IMPORTED_MODULE_2__.MintEvent.throttleEvent(this.eHandleResize.bind(this), _util__WEBPACK_IMPORTED_MODULE_2__.MintSettings.delay.default));
531
- this.attachEvent(this.el.main, 'click', _util__WEBPACK_IMPORTED_MODULE_2__.MintEvent.throttleEvent(this.eClose.bind(this), _util__WEBPACK_IMPORTED_MODULE_2__.MintSettings.delay.default, { trailing: false }));
532
- this.attachEvent(this.el.wrapper, 'transitionend', this.eTransitionEnd.bind(this));
533
- const focusables = _util__WEBPACK_IMPORTED_MODULE_2__.MintSelectors.getFocusables(this.el.panel);
534
- focusables?.forEach(focusable => {
535
- this.attachEvent(focusable, 'keydown', _util__WEBPACK_IMPORTED_MODULE_2__.MintEvent.throttleEvent(this.eWrapTab.bind(this)));
536
- });
537
- const toggleButtons = this.el.panel?.querySelectorAll(_util__WEBPACK_IMPORTED_MODULE_2__.MintSelectors.controls(this.settings.wrapperId));
538
- toggleButtons?.forEach(toggleButton => {
539
- this.attachEvent(toggleButton, 'click', _util__WEBPACK_IMPORTED_MODULE_2__.MintEvent.throttleEvent(this.eToggle.bind(this), _util__WEBPACK_IMPORTED_MODULE_2__.MintSettings.delay.slow, { trailing: false }));
540
- });
541
- }
542
- /**
543
- * Adds classes that inform the styles based on settings
544
- */
545
- addClasses() {
546
- this.el.panel?.classList.add('mint-panel');
547
- this.el.wrapper?.classList.add('mint-panel-wrapper');
548
- this.el.toggleButton?.classList.add('mint-panel-toggle');
549
- if (this.settings.from) {
550
- this.el.panel?.classList.remove('mint-top', 'mint-right', 'mint-bottom', 'mint-left');
551
- this.el.panel?.classList.add(`mint-${_enums_side__WEBPACK_IMPORTED_MODULE_0__.EMintSide[this.settings.from].toLowerCase()}`);
552
- }
553
- if (this.settings.tray) {
554
- this.el.panel?.classList.add('mint-tray');
555
- }
556
- }
557
- /**
558
- * Sets the state of the panel
559
- * @param open - `true` to open the panel or `false` to close it
560
- */
561
- setPanel(open = false) {
562
- let ariaExpanded = open ? 'true' : 'false', ariaLabel = open ? `close ${this.settings.title}` : `open ${this.settings.title}`;
563
- this.el.toggleButton?.setAttribute('aria-expanded', ariaExpanded);
564
- setTimeout(() => {
565
- this.el.toggleButton?.setAttribute('aria-label', ariaLabel);
566
- }, _util__WEBPACK_IMPORTED_MODULE_2__.MintSettings.delay.fast);
567
- if (open) {
568
- this.closeOtherPanels();
569
- if (this.settings.fixed !== true) {
570
- window.scroll({
571
- top: 0,
572
- left: 0,
573
- behavior: 'smooth'
574
- });
575
- }
576
- setTimeout(() => {
577
- if (this.el.html) {
578
- let isMobile = _util__WEBPACK_IMPORTED_MODULE_2__.MintWindow.width() <= _util__WEBPACK_IMPORTED_MODULE_2__.MintSettings.break.sm, overflow = 'auto';
579
- if (this.settings.tray) {
580
- if (isMobile) {
581
- overflow = 'hidden';
582
- }
583
- }
584
- else {
585
- overflow = 'hidden';
586
- }
587
- this.el.html.style.overflow = overflow;
588
- }
589
- }, this.settings.from === _enums_side__WEBPACK_IMPORTED_MODULE_0__.EMintSide.Left ? _util__WEBPACK_IMPORTED_MODULE_2__.MintSettings.delay.default : _util__WEBPACK_IMPORTED_MODULE_2__.MintSettings.delay.instant);
590
- if (this.el.wrapper) {
591
- this.el.wrapper.style.display = 'flex';
592
- }
593
- requestAnimationFrame(() => {
594
- this.el.wrapper?.classList.add('mint-open');
595
- });
596
- }
597
- else {
598
- if (this.el.html) {
599
- this.el.html.style.overflow = 'auto';
600
- }
601
- requestAnimationFrame(() => {
602
- this.el.wrapper?.classList.remove('mint-open');
603
- });
604
- }
605
- }
606
- /**
607
- * Toggles the state of the panel
608
- */
609
- togglePanel() {
610
- this.setPanel(this.el.toggleButton?.getAttribute('aria-expanded')?.toLowerCase() === 'false');
611
- }
612
- /**
613
- * Closes other panels
614
- */
615
- closeOtherPanels() {
616
- const openPanelSelector = `.mint-panel-toggle[aria-expanded="true"]:not([aria-controls="${this.settings.wrapperId}"])`;
617
- const toggleBtn = document.querySelector(openPanelSelector);
618
- toggleBtn?.click();
619
- }
620
- /**
621
- * Closes the panel when the window resizes
622
- */
623
- eHandleResize() {
624
- const isMobile = _util__WEBPACK_IMPORTED_MODULE_2__.MintWindow.width() <= _util__WEBPACK_IMPORTED_MODULE_2__.MintSettings.break.sm;
625
- let closeMenu = true;
626
- if (this.el.panel?.classList.contains('mint-tray')) {
627
- closeMenu = false;
628
- }
629
- else if (!this.el.panel?.classList.contains('mint-expand')) {
630
- closeMenu = false;
631
- }
632
- if (!isMobile && closeMenu) {
633
- this.setPanel(false);
634
- }
635
- const isOpen = this.el.toggleButton?.getAttribute('aria-expanded')?.toLowerCase() === 'true';
636
- let overflow = 'auto';
637
- if (isOpen) {
638
- if (this.settings.tray) {
639
- if (isMobile) {
640
- overflow = 'hidden';
641
- }
642
- }
643
- else {
644
- overflow = 'hidden';
645
- }
646
- }
647
- if (this.el.html) {
648
- this.el.html.style.overflow = overflow;
649
- }
650
- }
651
- /**
652
- * Sends the focus to the toggle button after tabbing past the last focusable element
653
- * @param e - Keyboard event
654
- */
655
- eWrapTab(e) {
656
- const focusables = _util__WEBPACK_IMPORTED_MODULE_2__.MintSelectors.getFocusables(this.el.panel), lastFocusable = focusables?.[focusables?.length - 1], wrapTab = focusables?.length > 1 && document.activeElement === lastFocusable, isTab = e.key.toLowerCase() === 'tab' && !e.shiftKey;
657
- if (isTab && wrapTab) {
658
- this.el.toggleButton?.focus();
659
- if (document.activeElement === this.el.toggleButton) {
660
- e.preventDefault();
661
- }
662
- }
663
- }
664
- /**
665
- * Toggles the panel
666
- */
667
- eToggle() {
668
- this.togglePanel();
669
- }
670
- /**
671
- * Closes the panel
672
- */
673
- eClose() {
674
- this.setPanel(false);
675
- }
676
- /**
677
- * Runs after the panel transitions
678
- */
679
- eTransitionEnd() {
680
- if (this.el.wrapper?.classList.contains('mint-open') === false) {
681
- this.el.wrapper.style.display = 'none';
682
- }
683
- }
684
- }
685
-
686
-
687
- /***/ },
688
-
689
- /***/ "./src/ts/imports/enums/index.ts"
690
- /*!***************************************!*\
691
- !*** ./src/ts/imports/enums/index.ts ***!
692
- \***************************************/
693
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
694
-
695
- __webpack_require__.r(__webpack_exports__);
696
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
697
- /* harmony export */ EMintSide: () => (/* reexport safe */ _side__WEBPACK_IMPORTED_MODULE_0__.EMintSide)
698
- /* harmony export */ });
699
- /* harmony import */ var _side__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./side */ "./src/ts/imports/enums/side.ts");
700
- /**
701
- * Forward all exports from the enums directory
702
- */
703
-
704
-
705
-
706
- /***/ },
707
-
708
- /***/ "./src/ts/imports/enums/side.ts"
709
- /*!**************************************!*\
710
- !*** ./src/ts/imports/enums/side.ts ***!
711
- \**************************************/
712
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
713
-
714
- __webpack_require__.r(__webpack_exports__);
715
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
716
- /* harmony export */ EMintSide: () => (/* binding */ EMintSide)
717
- /* harmony export */ });
718
- /**
719
- * Side Enum
720
- */
721
- var EMintSide;
722
- (function (EMintSide) {
723
- EMintSide[EMintSide["Top"] = 0] = "Top";
724
- EMintSide[EMintSide["Right"] = 1] = "Right";
725
- EMintSide[EMintSide["Bottom"] = 2] = "Bottom";
726
- EMintSide[EMintSide["Left"] = 3] = "Left";
727
- })(EMintSide || (EMintSide = {}));
728
- ;
729
-
730
-
731
- /***/ },
732
-
733
- /***/ "./src/ts/imports/index.ts"
734
- /*!*********************************!*\
735
- !*** ./src/ts/imports/index.ts ***!
736
- \*********************************/
737
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
738
-
739
- __webpack_require__.r(__webpack_exports__);
740
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
741
- /* harmony export */ EMintSide: () => (/* reexport safe */ _enums__WEBPACK_IMPORTED_MODULE_2__.EMintSide),
742
- /* harmony export */ MintAsync: () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_4__.MintAsync),
743
- /* harmony export */ MintAttachesEvents: () => (/* reexport safe */ _abstract__WEBPACK_IMPORTED_MODULE_0__.MintAttachesEvents),
744
- /* harmony export */ MintDisplay: () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_4__.MintDisplay),
745
- /* harmony export */ MintEvent: () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_4__.MintEvent),
746
- /* harmony export */ MintGrid: () => (/* reexport safe */ _components__WEBPACK_IMPORTED_MODULE_1__.MintGrid),
747
- /* harmony export */ MintHeader: () => (/* reexport safe */ _components__WEBPACK_IMPORTED_MODULE_1__.MintHeader),
748
- /* harmony export */ MintIcon: () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_4__.MintIcon),
749
- /* harmony export */ MintItem: () => (/* reexport safe */ _models__WEBPACK_IMPORTED_MODULE_3__.MintItem),
750
- /* harmony export */ MintList: () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_4__.MintList),
751
- /* harmony export */ MintMath: () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_4__.MintMath),
752
- /* harmony export */ MintMenu: () => (/* reexport safe */ _components__WEBPACK_IMPORTED_MODULE_1__.MintMenu),
753
- /* harmony export */ MintObject: () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_4__.MintObject),
754
- /* harmony export */ MintPanel: () => (/* reexport safe */ _components__WEBPACK_IMPORTED_MODULE_1__.MintPanel),
755
- /* harmony export */ MintScroll: () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_4__.MintScroll),
756
- /* harmony export */ MintSelectors: () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_4__.MintSelectors),
757
- /* harmony export */ MintSettings: () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_4__.MintSettings),
758
- /* harmony export */ MintText: () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_4__.MintText),
759
- /* harmony export */ MintWindow: () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_4__.MintWindow),
760
- /* harmony export */ mintColor: () => (/* reexport safe */ _models__WEBPACK_IMPORTED_MODULE_3__.mintColor)
761
- /* harmony export */ });
762
- /* harmony import */ var _abstract__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./abstract */ "./src/ts/imports/abstract/index.ts");
763
- /* harmony import */ var _components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components */ "./src/ts/imports/components/index.ts");
764
- /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./enums */ "./src/ts/imports/enums/index.ts");
765
- /* harmony import */ var _models__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./models */ "./src/ts/imports/models/index.ts");
766
- /* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ "./src/ts/imports/util/index.ts");
767
- /**
768
- * Forward all imports exports
769
- */
770
-
771
-
772
-
773
-
774
-
775
-
776
-
777
- /***/ },
778
-
779
- /***/ "./src/ts/imports/models/color.ts"
780
- /*!****************************************!*\
781
- !*** ./src/ts/imports/models/color.ts ***!
782
- \****************************************/
783
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
784
-
785
- __webpack_require__.r(__webpack_exports__);
786
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
787
- /* harmony export */ mintColor: () => (/* binding */ mintColor)
788
- /* harmony export */ });
789
- class mintColor {
790
- static hexBase = 16;
791
- static hexMax = 'FF';
792
- r;
793
- g;
794
- b;
795
- a;
796
- constructor(args) {
797
- this.r = typeof args.r === 'number' ? Math.max(Math.min(args.r, mintColor.hexBase ** 2 - 1), 0) : 0;
798
- this.g = typeof args.g === 'number' ? Math.max(Math.min(args.g, mintColor.hexBase ** 2 - 1), 0) : 0;
799
- this.b = typeof args.b === 'number' ? Math.max(Math.min(args.b, mintColor.hexBase ** 2 - 1), 0) : 0;
800
- this.a = typeof args.a === 'number' ? Math.max(Math.min(args.a, 1), 0) : 1;
801
- if (typeof args.color === 'string') {
802
- this.stringConstructor(args.color);
803
- }
804
- }
805
- stringConstructor(str) {
806
- if (str.startsWith('#')) {
807
- this.hexConstructor(str);
808
- }
809
- else {
810
- if (~str.indexOf('linear-gradient')) {
811
- str = str.substring(str.indexOf('linear-gradient'), str.length);
812
- }
813
- this.rgbConstructor(str);
814
- }
815
- }
816
- hexConstructor(hex) {
817
- switch (hex.length) {
818
- case 1:
819
- case 5:
820
- case 6:
821
- return;
822
- case 2:
823
- hex = '#' + hex[1] + hex[1] + hex[1] + hex[1] + hex[1] + hex[1] + mintColor.hexMax;
824
- break;
825
- case 3:
826
- hex = '#' + hex[1] + hex[1] + hex[1] + hex[2] + hex[2] + hex[2] + mintColor.hexMax;
827
- break;
828
- case 4:
829
- hex = '#' + hex[1] + hex[1] + hex[2] + hex[2] + hex[3] + hex[3] + mintColor.hexMax;
830
- break;
831
- case 7:
832
- hex += mintColor.hexMax;
833
- break;
834
- case 8:
835
- hex += hex[hex.length - 1];
836
- break;
837
- default:
838
- hex = hex.substring(0, 9);
839
- }
840
- this.r = parseInt(hex.substring(1, 3), mintColor.hexBase);
841
- this.g = parseInt(hex.substring(3, 5), mintColor.hexBase);
842
- this.b = parseInt(hex.substring(5, 7), mintColor.hexBase);
843
- this.a = parseInt(hex.substring(7, 9), mintColor.hexBase) / mintColor.hexBase ** 2;
844
- }
845
- rgbConstructor(rgb) {
846
- let match = rgb.match(/rgba?\((\d{1,3}), ?(\d{1,3}), ?(\d{1,3})\)?(?:, ?(\d(?:\.\d*)?)\))?/);
847
- if (match) {
848
- this.r = parseInt(match[1]);
849
- this.g = parseInt(match[2]);
850
- this.b = parseInt(match[3]);
851
- this.a = parseFloat(match[4]);
852
- }
853
- }
854
- getBrightness() {
855
- if (this.a === 0) {
856
- return 262;
857
- }
858
- if (!isNaN(this.r) && !isNaN(this.g) && !isNaN(this.b)) {
859
- return Math.round((this.r * 299 + this.g * 587 + this.b * 144) / 1000);
860
- }
861
- return -1;
862
- }
863
- }
864
-
865
-
866
- /***/ },
867
-
868
- /***/ "./src/ts/imports/models/event.ts"
869
- /*!****************************************!*\
870
- !*** ./src/ts/imports/models/event.ts ***!
871
- \****************************************/
872
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
873
-
874
- __webpack_require__.r(__webpack_exports__);
875
-
876
-
877
-
878
- /***/ },
879
-
880
- /***/ "./src/ts/imports/models/file.ts"
881
- /*!***************************************!*\
882
- !*** ./src/ts/imports/models/file.ts ***!
883
- \***************************************/
884
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
885
-
886
- __webpack_require__.r(__webpack_exports__);
887
-
888
-
889
-
890
- /***/ },
891
-
892
- /***/ "./src/ts/imports/models/index.ts"
893
- /*!****************************************!*\
894
- !*** ./src/ts/imports/models/index.ts ***!
895
- \****************************************/
896
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
897
-
898
- __webpack_require__.r(__webpack_exports__);
899
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
900
- /* harmony export */ MintItem: () => (/* reexport safe */ _item__WEBPACK_IMPORTED_MODULE_3__.MintItem),
901
- /* harmony export */ mintColor: () => (/* reexport safe */ _color__WEBPACK_IMPORTED_MODULE_0__.mintColor)
902
- /* harmony export */ });
903
- /* harmony import */ var _color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./color */ "./src/ts/imports/models/color.ts");
904
- /* harmony import */ var _event__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./event */ "./src/ts/imports/models/event.ts");
905
- /* harmony import */ var _file__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./file */ "./src/ts/imports/models/file.ts");
906
- /* harmony import */ var _item__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./item */ "./src/ts/imports/models/item.ts");
907
- /* harmony import */ var _minify__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./minify */ "./src/ts/imports/models/minify.ts");
908
- /* harmony import */ var _page__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./page */ "./src/ts/imports/models/page.ts");
909
- /* harmony import */ var _primitive__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./primitive */ "./src/ts/imports/models/primitive.ts");
910
- /* harmony import */ var _recaptcha__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./recaptcha */ "./src/ts/imports/models/recaptcha.ts");
911
-
912
-
913
-
914
-
915
-
916
-
917
-
918
-
919
-
920
-
921
- /***/ },
922
-
923
- /***/ "./src/ts/imports/models/item.ts"
924
- /*!***************************************!*\
925
- !*** ./src/ts/imports/models/item.ts ***!
926
- \***************************************/
927
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
928
-
929
- __webpack_require__.r(__webpack_exports__);
930
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
931
- /* harmony export */ MintItem: () => (/* binding */ MintItem),
932
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
933
- /* harmony export */ });
934
- /**
935
- * A generic item
936
- *
937
- * @remarks
938
- * - this class must be convertable with JSON
939
- * - only add strings, numbers, booleans, arrays, and objects
940
- */
941
- class MintItem {
942
- /**
943
- * Item settings
944
- */
945
- version = 0;
946
- priority = 0;
947
- price = 0;
948
- level = 0;
949
- size = 0;
950
- num = 0;
951
- width = 0;
952
- height = 0;
953
- active = false;
954
- centered = false;
955
- disabled = false;
956
- private = false;
957
- /**
958
- * Item properties
959
- */
960
- id;
961
- slug;
962
- name;
963
- title;
964
- subtitle;
965
- description;
966
- category;
967
- type;
968
- unit;
969
- logo;
970
- icon;
971
- position;
972
- transform;
973
- date;
974
- /**
975
- * Item links
976
- */
977
- src;
978
- href;
979
- target;
980
- routerLink;
981
- /**
982
- * Item data
983
- */
984
- attr = {};
985
- params = {};
986
- options = {};
987
- lists = {};
988
- /**
989
- * Item lists
990
- */
991
- paragraphs = [];
992
- classes = [];
993
- items = [];
994
- images = [];
995
- buttons = [];
996
- /**
997
- * Item functions
998
- */
999
- click;
1000
- }
1001
- ;
1002
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MintItem);
1003
-
1004
-
1005
- /***/ },
1006
-
1007
- /***/ "./src/ts/imports/models/minify.ts"
1008
- /*!*****************************************!*\
1009
- !*** ./src/ts/imports/models/minify.ts ***!
1010
- \*****************************************/
1011
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1012
-
1013
- __webpack_require__.r(__webpack_exports__);
1014
-
1015
-
1016
-
1017
- /***/ },
1018
-
1019
- /***/ "./src/ts/imports/models/page.ts"
1020
- /*!***************************************!*\
1021
- !*** ./src/ts/imports/models/page.ts ***!
1022
- \***************************************/
1023
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1024
-
1025
- __webpack_require__.r(__webpack_exports__);
1026
-
1027
-
1028
-
1029
- /***/ },
1030
-
1031
- /***/ "./src/ts/imports/models/primitive.ts"
1032
- /*!********************************************!*\
1033
- !*** ./src/ts/imports/models/primitive.ts ***!
1034
- \********************************************/
1035
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1036
-
1037
- __webpack_require__.r(__webpack_exports__);
1038
-
1039
-
1040
-
1041
- /***/ },
1042
-
1043
- /***/ "./src/ts/imports/models/recaptcha.ts"
1044
- /*!********************************************!*\
1045
- !*** ./src/ts/imports/models/recaptcha.ts ***!
1046
- \********************************************/
1047
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1048
-
1049
- __webpack_require__.r(__webpack_exports__);
1050
- ;
1051
-
1052
-
1053
-
1054
- /***/ },
1055
-
1056
- /***/ "./src/ts/imports/util/async.ts"
1057
- /*!**************************************!*\
1058
- !*** ./src/ts/imports/util/async.ts ***!
1059
- \**************************************/
1060
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1061
-
1062
- __webpack_require__.r(__webpack_exports__);
1063
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1064
- /* harmony export */ MintAsync: () => (/* binding */ MintAsync),
1065
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1066
- /* harmony export */ });
1067
- /**
1068
- * Handles asynchronous operations
1069
- */
1070
- class MintAsync {
1071
- /**
1072
- * Wait n milliseconds
1073
- */
1074
- static wait(ms) {
1075
- return new Promise((resolve) => setTimeout(resolve, ms));
1076
- }
1077
- }
1078
- ;
1079
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MintAsync);
1080
-
1081
-
1082
- /***/ },
1083
-
1084
- /***/ "./src/ts/imports/util/display.ts"
1085
- /*!****************************************!*\
1086
- !*** ./src/ts/imports/util/display.ts ***!
1087
- \****************************************/
1088
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1089
-
1090
- __webpack_require__.r(__webpack_exports__);
1091
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1092
- /* harmony export */ MintDisplay: () => (/* binding */ MintDisplay),
1093
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1094
- /* harmony export */ });
1095
- /* harmony import */ var _enums_side__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums/side */ "./src/ts/imports/enums/side.ts");
1096
- /* harmony import */ var _settings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./settings */ "./src/ts/imports/util/settings.ts");
1097
- /**
1098
- * Imports
1099
- */
1100
-
1101
-
1102
- /**
1103
- * Handles the display of elements
1104
- */
1105
- class MintDisplay {
1106
- /**
1107
- * Sets the element's height to its `innerHeight`, then to `auto` after a delay
1108
- * @param el - the element whose height will be set
1109
- * @param delay - the amount of time in milliseconds that the show animation will be active
1110
- * @param from - the side that the element is animating from
1111
- */
1112
- static show(el, delay = _settings__WEBPACK_IMPORTED_MODULE_1__.MintSettings.delay.default, from = _enums_side__WEBPACK_IMPORTED_MODULE_0__.EMintSide.Top) {
1113
- if (el) {
1114
- el.style.display = '';
1115
- requestAnimationFrame(() => {
1116
- if (from === _enums_side__WEBPACK_IMPORTED_MODULE_0__.EMintSide.Top || from === _enums_side__WEBPACK_IMPORTED_MODULE_0__.EMintSide.Bottom) {
1117
- el.style.height = `${el.scrollHeight}px`;
1118
- }
1119
- else {
1120
- el.style.width = `${el.scrollWidth}px`;
1121
- }
1122
- setTimeout(() => {
1123
- if (from === _enums_side__WEBPACK_IMPORTED_MODULE_0__.EMintSide.Top || from === _enums_side__WEBPACK_IMPORTED_MODULE_0__.EMintSide.Bottom) {
1124
- el.style.height = 'auto';
1125
- }
1126
- else {
1127
- el.style.width = 'auto';
1128
- }
1129
- }, delay);
1130
- });
1131
- }
1132
- }
1133
- /**
1134
- * Sets the element's height to 0
1135
- * @param el - the element whose height will be set
1136
- * @param delay - the amount of time in milliseconds that the show animation will be active
1137
- * @param from - the side that the element is animating from
1138
- */
1139
- static hide(el, delay = _settings__WEBPACK_IMPORTED_MODULE_1__.MintSettings.delay.default, from = _enums_side__WEBPACK_IMPORTED_MODULE_0__.EMintSide.Top) {
1140
- if (el) {
1141
- let height = el.scrollHeight, width = el.scrollWidth, transition = el.style.transition;
1142
- el.style.transition = '';
1143
- requestAnimationFrame(() => {
1144
- if (from === _enums_side__WEBPACK_IMPORTED_MODULE_0__.EMintSide.Top || from === _enums_side__WEBPACK_IMPORTED_MODULE_0__.EMintSide.Bottom) {
1145
- el.style.height = `${height}px`;
1146
- }
1147
- else {
1148
- el.style.width = `${width}px`;
1149
- }
1150
- el.style.transition = transition;
1151
- requestAnimationFrame(() => {
1152
- if (from === _enums_side__WEBPACK_IMPORTED_MODULE_0__.EMintSide.Top || from === _enums_side__WEBPACK_IMPORTED_MODULE_0__.EMintSide.Bottom) {
1153
- el.style.height = '0';
1154
- }
1155
- else {
1156
- el.style.width = '0';
1157
- }
1158
- });
1159
- });
1160
- setTimeout(() => {
1161
- el.style.display = 'none';
1162
- }, delay);
1163
- }
1164
- }
1165
- }
1166
- ;
1167
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MintDisplay);
1168
-
1169
-
1170
- /***/ },
1171
-
1172
- /***/ "./src/ts/imports/util/event.ts"
1173
- /*!**************************************!*\
1174
- !*** ./src/ts/imports/util/event.ts ***!
1175
- \**************************************/
1176
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1177
-
1178
- __webpack_require__.r(__webpack_exports__);
1179
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1180
- /* harmony export */ MintEvent: () => (/* binding */ MintEvent),
1181
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1182
- /* harmony export */ });
1183
- /* harmony import */ var _settings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./settings */ "./src/ts/imports/util/settings.ts");
1184
-
1185
- /**
1186
- * Event helper functions
1187
- */
1188
- class MintEvent {
1189
- /**
1190
- * Ensures that a function `func` is run only after not being called for `wait` milliseconds
1191
- * @param func - the function to debounce
1192
- * @param wait - the amount of time to wait before running the function
1193
- * @returns - the debounced function
1194
- */
1195
- static debounce(func, wait = _settings__WEBPACK_IMPORTED_MODULE_0__["default"].delay.default) {
1196
- let timer;
1197
- return function (...args) {
1198
- if (timer) {
1199
- clearTimeout(timer);
1200
- }
1201
- timer = setTimeout(func, wait, ...args);
1202
- };
1203
- }
1204
- /**
1205
- * Ensures that a function `func` is run only after not being called for `wait` milliseconds
1206
- * @param func - the function to debounce
1207
- * @param wait - the amount of time to wait before running the function
1208
- * @returns - the debounced function as an EventListener
1209
- */
1210
- static debounceEvent(func, wait = _settings__WEBPACK_IMPORTED_MODULE_0__["default"].delay.default) {
1211
- return MintEvent.debounce(func, wait);
1212
- }
1213
- /**
1214
- * Ensures that a function `func` is called at most every `wait` milliseconds with optional leading and trailing calls
1215
- * @param func - the function to throttle
1216
- * @param wait - the amount of time between function calls
1217
- * @param options - leading and trailing options: default = \{ leading: true, trailing, true \}
1218
- * @returns - the throttled function
1219
- */
1220
- static throttle(func, wait = _settings__WEBPACK_IMPORTED_MODULE_0__["default"].delay.default, options) {
1221
- let context, args, result, timeout, previous = 0, later = function () {
1222
- previous = options?.leading === false ? 0 : new Date().getTime();
1223
- timeout = 0;
1224
- result = func.apply(context, args);
1225
- if (!timeout) {
1226
- context = args = null;
1227
- }
1228
- }, throttled = function () {
1229
- let now = new Date().getTime();
1230
- if (!previous && options?.leading === false) {
1231
- previous = now;
1232
- }
1233
- let remaining = wait - now + previous;
1234
- context = this;
1235
- args = arguments;
1236
- if (remaining <= 0 || remaining > wait) {
1237
- if (timeout) {
1238
- clearTimeout(timeout);
1239
- timeout = 0;
1240
- }
1241
- previous = now;
1242
- result = func.apply(context, args);
1243
- if (!timeout) {
1244
- context = args = null;
1245
- }
1246
- }
1247
- else if (!timeout && options?.trailing !== false) {
1248
- timeout = window.setTimeout(later, remaining);
1249
- }
1250
- return result;
1251
- };
1252
- return throttled;
1253
- }
1254
- /**
1255
- * Ensures that a function `func` is called at most every `wait` milliseconds with optional leading and trailing calls
1256
- * @param func - the function to throttle
1257
- * @param wait - the amount of time between function calls
1258
- * @param options - leading and trailing options: default = \{ leading: true, trailing, true \}
1259
- * @returns - the throttled function as an EventListener
1260
- */
1261
- static throttleEvent(func, wait = _settings__WEBPACK_IMPORTED_MODULE_0__["default"].delay.default, options) {
1262
- return MintEvent.throttle(func, wait, options);
1263
- }
1264
- }
1265
- ;
1266
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MintEvent);
1267
-
1268
-
1269
- /***/ },
1270
-
1271
- /***/ "./src/ts/imports/util/icon.ts"
1272
- /*!*************************************!*\
1273
- !*** ./src/ts/imports/util/icon.ts ***!
1274
- \*************************************/
1275
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1276
-
1277
- __webpack_require__.r(__webpack_exports__);
1278
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1279
- /* harmony export */ MintIcon: () => (/* binding */ MintIcon),
1280
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1281
- /* harmony export */ });
1282
- /* harmony import */ var _object__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./object */ "./src/ts/imports/util/object.ts");
1283
- /**
1284
- * Imports
1285
- */
1286
-
1287
- /**
1288
- * Icon helper functions
1289
- */
1290
- class MintIcon {
1291
- /**
1292
- * Default icons
1293
- */
1294
- static icons = {
1295
- 'a[href^="mailto:"]': 'far fa-envelope',
1296
- 'a[href^="tel:"]': 'fas fa-phone-flip',
1297
- 'a[href^="sms:"]': 'far fa-message',
1298
- 'a[href^="https://maps"]': 'fas fa-map-location-dot',
1299
- 'a[href^="http"]': 'fas fa-up-right-from-square'
1300
- };
1301
- /**
1302
- * Appends the given icon to the given selector if there is not already an icon appended
1303
- */
1304
- static append(icon, selector) {
1305
- let items = document.querySelectorAll(selector);
1306
- items.forEach((item) => {
1307
- let iconElement = document.createElement('i');
1308
- iconElement.classList.add(...icon.split(' '));
1309
- if (!item.querySelector('i')) {
1310
- item.appendChild(iconElement);
1311
- }
1312
- if (iconElement.classList.contains('fa-up-right-from-square')) {
1313
- item.setAttribute('target', '_blank');
1314
- }
1315
- });
1316
- }
1317
- /**
1318
- * Updates the icons
1319
- * @param icons - the icons to update
1320
- */
1321
- static update(icons) {
1322
- let activeIcons = _object__WEBPACK_IMPORTED_MODULE_0__["default"].removeValues({
1323
- ...this.icons,
1324
- ...icons
1325
- }, [false]);
1326
- Object.keys(activeIcons).forEach((selector) => {
1327
- this.append(activeIcons[selector], selector);
1328
- });
1329
- }
1330
- /**
1331
- * Removes the given icon from the given selector
1332
- * @param icon - the icon to remove
1333
- */
1334
- static remove(icon, selector) {
1335
- let items = document.querySelectorAll(selector);
1336
- items.forEach((item) => {
1337
- let iconElement = item.querySelector('i');
1338
- if (iconElement) {
1339
- iconElement.remove();
1340
- }
1341
- });
1342
- }
1343
- }
1344
- ;
1345
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MintIcon);
1346
-
1347
-
1348
- /***/ },
1349
-
1350
- /***/ "./src/ts/imports/util/index.ts"
1351
- /*!**************************************!*\
1352
- !*** ./src/ts/imports/util/index.ts ***!
1353
- \**************************************/
1354
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1355
-
1356
- __webpack_require__.r(__webpack_exports__);
1357
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1358
- /* harmony export */ MintAsync: () => (/* reexport safe */ _async__WEBPACK_IMPORTED_MODULE_0__.MintAsync),
1359
- /* harmony export */ MintDisplay: () => (/* reexport safe */ _display__WEBPACK_IMPORTED_MODULE_1__.MintDisplay),
1360
- /* harmony export */ MintEvent: () => (/* reexport safe */ _event__WEBPACK_IMPORTED_MODULE_2__.MintEvent),
1361
- /* harmony export */ MintIcon: () => (/* reexport safe */ _icon__WEBPACK_IMPORTED_MODULE_3__.MintIcon),
1362
- /* harmony export */ MintList: () => (/* reexport safe */ _list__WEBPACK_IMPORTED_MODULE_4__.MintList),
1363
- /* harmony export */ MintMath: () => (/* reexport safe */ _math__WEBPACK_IMPORTED_MODULE_5__.MintMath),
1364
- /* harmony export */ MintObject: () => (/* reexport safe */ _object__WEBPACK_IMPORTED_MODULE_6__.MintObject),
1365
- /* harmony export */ MintScroll: () => (/* reexport safe */ _scroll__WEBPACK_IMPORTED_MODULE_7__.MintScroll),
1366
- /* harmony export */ MintSelectors: () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_8__.MintSelectors),
1367
- /* harmony export */ MintSettings: () => (/* reexport safe */ _settings__WEBPACK_IMPORTED_MODULE_9__.MintSettings),
1368
- /* harmony export */ MintText: () => (/* reexport safe */ _text__WEBPACK_IMPORTED_MODULE_10__.MintText),
1369
- /* harmony export */ MintWindow: () => (/* reexport safe */ _window__WEBPACK_IMPORTED_MODULE_11__.MintWindow)
1370
- /* harmony export */ });
1371
- /* harmony import */ var _async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./async */ "./src/ts/imports/util/async.ts");
1372
- /* harmony import */ var _display__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./display */ "./src/ts/imports/util/display.ts");
1373
- /* harmony import */ var _event__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./event */ "./src/ts/imports/util/event.ts");
1374
- /* harmony import */ var _icon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./icon */ "./src/ts/imports/util/icon.ts");
1375
- /* harmony import */ var _list__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./list */ "./src/ts/imports/util/list.ts");
1376
- /* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./math */ "./src/ts/imports/util/math.ts");
1377
- /* harmony import */ var _object__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./object */ "./src/ts/imports/util/object.ts");
1378
- /* harmony import */ var _scroll__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./scroll */ "./src/ts/imports/util/scroll.ts");
1379
- /* harmony import */ var _selectors__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./selectors */ "./src/ts/imports/util/selectors.ts");
1380
- /* harmony import */ var _settings__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./settings */ "./src/ts/imports/util/settings.ts");
1381
- /* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./text */ "./src/ts/imports/util/text.ts");
1382
- /* harmony import */ var _window__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./window */ "./src/ts/imports/util/window.ts");
1383
- /**
1384
- * Forward all exports from the util directory
1385
- */
1386
-
1387
-
1388
-
1389
-
1390
-
1391
-
1392
-
1393
-
1394
-
1395
-
1396
-
1397
-
1398
-
1399
-
1400
- /***/ },
1401
-
1402
- /***/ "./src/ts/imports/util/list.ts"
1403
- /*!*************************************!*\
1404
- !*** ./src/ts/imports/util/list.ts ***!
1405
- \*************************************/
1406
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1407
-
1408
- __webpack_require__.r(__webpack_exports__);
1409
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1410
- /* harmony export */ MintList: () => (/* binding */ MintList),
1411
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1412
- /* harmony export */ });
1413
- /**
1414
- * List functions for the util library
1415
- */
1416
- class MintList {
1417
- /**
1418
- * Returns a copy of the provided list with the items in random order
1419
- * @param list - the list to shuffle
1420
- * @returns - the shuffled list
1421
- */
1422
- static shuffleCopy(list) {
1423
- let copy = [...list];
1424
- for (let i = copy.length - 1; i > 0; i--) {
1425
- const j = Math.floor(Math.random() * (i + 1));
1426
- [copy[i], copy[j]] = [copy[j], copy[i]];
1427
- }
1428
- return copy;
1429
- }
1430
- /**
1431
- * Filters the array in place based on a test condition and returns the filtered array.
1432
- * This method modifies the original array by removing elements that do not pass the test implemented by the provided function.
1433
- *
1434
- * @template T The type of elements in the array.
1435
- * @param {T[]} list The array to filter, which will be modified in place.
1436
- * @param {(item: T) => boolean} test A function that tests each element of the array. Return `true` to keep the element, `false` otherwise.
1437
- * @returns {T[]} The original array with only the elements that passed the test.
1438
- */
1439
- static filter(list, test) {
1440
- let newLength = 0;
1441
- for (let i = 0; i < list.length; i++) {
1442
- if (test(list[i])) {
1443
- list[newLength++] = list[i];
1444
- }
1445
- }
1446
- list.length = newLength;
1447
- return list;
1448
- }
1449
- /**
1450
- * Returns a copy of the provided list with unique items
1451
- * @param list - the list to unique
1452
- * @returns - the unique list
1453
- */
1454
- static unique(list) {
1455
- return [...new Set(list)];
1456
- }
1457
- }
1458
- ;
1459
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MintList);
1460
-
1461
-
1462
- /***/ },
1463
-
1464
- /***/ "./src/ts/imports/util/math.ts"
1465
- /*!*************************************!*\
1466
- !*** ./src/ts/imports/util/math.ts ***!
1467
- \*************************************/
1468
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1469
-
1470
- __webpack_require__.r(__webpack_exports__);
1471
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1472
- /* harmony export */ MintMath: () => (/* binding */ MintMath)
1473
- /* harmony export */ });
1474
- /**
1475
- * Math functions for the util library
1476
- */
1477
- class MintMath {
1478
- /**
1479
- * Get a random integer between min and max
1480
- * @param max Maximum value to return
1481
- * @param min Minimum value to return (default is 0)
1482
- * @returns a random integer between min and max
1483
- */
1484
- static randomInt(max, min = 0) {
1485
- min = Math.ceil(min);
1486
- max = Math.floor(max);
1487
- return Math.floor(Math.random() * (max - min) + min);
1488
- }
1489
- /**
1490
- * Return a number between min and max
1491
- * @param num - the number to clamp
1492
- * @param min - the minimum value
1493
- * @param max - the maximum value
1494
- * @returns a number between min and max
1495
- */
1496
- static clamp(num, min, max) {
1497
- return Math.max(Math.min(num ?? min, max), min);
1498
- }
1499
- /**
1500
- * Return a valid header number
1501
- * @param num - the number to validate
1502
- * @returns a valid header number
1503
- */
1504
- static headerMin = 1;
1505
- static headerMax = 6;
1506
- static headerLevel(num) {
1507
- return this.clamp(num, this.headerMin, this.headerMax);
1508
- }
1509
- }
1510
-
1511
-
1512
- /***/ },
1513
-
1514
- /***/ "./src/ts/imports/util/object.ts"
1515
- /*!***************************************!*\
1516
- !*** ./src/ts/imports/util/object.ts ***!
1517
- \***************************************/
1518
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1519
-
1520
- __webpack_require__.r(__webpack_exports__);
1521
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1522
- /* harmony export */ MintObject: () => (/* binding */ MintObject),
1523
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1524
- /* harmony export */ });
1525
- /**
1526
- * Object functions for the util library
1527
- */
1528
- class MintObject {
1529
- /**
1530
- * Returns true if the provided objects have the same entries
1531
- */
1532
- static isSimilar(obj1, obj2) {
1533
- let keys = Object.keys(obj1);
1534
- if (keys.length !== Object.keys(obj2).length) {
1535
- return false;
1536
- }
1537
- let isSimilar = true;
1538
- keys.forEach((key) => {
1539
- if (obj1[key] !== obj2[key]) {
1540
- isSimilar = false;
1541
- }
1542
- });
1543
- return isSimilar;
1544
- }
1545
- /**
1546
- * Returns true if the first object has at least the same
1547
- * entries as the second object
1548
- * @param superset - the object to check
1549
- * @param subset - the object whose entries are required
1550
- * @returns - true if the first object is a superset of the second
1551
- */
1552
- static isSuperset(superset, subset) {
1553
- let isSuperset = true;
1554
- // Base case - if the objects are equal, it is a superset
1555
- if (superset === subset) {
1556
- return isSuperset;
1557
- }
1558
- // If the subset isn't an object or array, and doesn't
1559
- // satisfy the base case, it isn't a superset
1560
- try {
1561
- if (Object.keys(subset).length === 0) {
1562
- return !isSuperset;
1563
- }
1564
- }
1565
- // If the subset is null or undefined, and doesn't satisfy
1566
- // the base case, it isn't a superset
1567
- // TODO: Check if other exceptions could occur
1568
- catch (e) {
1569
- return !isSuperset;
1570
- }
1571
- // If the children of the subset are subsets of the
1572
- // respective children of the superset, it is a superset
1573
- Object.keys(subset).forEach((key) => {
1574
- isSuperset = isSuperset && MintObject.isSuperset(superset[key], subset[key]);
1575
- });
1576
- return isSuperset;
1577
- }
1578
- /**
1579
- * Removes object entries by key
1580
- * @see mintObject.removeKeys
1581
- * @param object - the object to remove entries from
1582
- * @param keys - the keys to remove
1583
- */
1584
- static remove(object, keys) {
1585
- return this.removeKeys(object, keys);
1586
- }
1587
- /**
1588
- * Removes object entries by key
1589
- * @param object - the object to remove entries from
1590
- * @param keys - the keys to remove
1591
- */
1592
- static removeKeys(object, keys) {
1593
- return Object.keys(object).reduce((obj, key) => {
1594
- if (!keys.includes(key)) {
1595
- obj[key] = object[key];
1596
- }
1597
- return obj;
1598
- }, {});
1599
- }
1600
- /**
1601
- * Removes object entries by value
1602
- */
1603
- static removeValues(object, values) {
1604
- return Object.keys(object).reduce((obj, key) => {
1605
- if (!values.includes(object[key])) {
1606
- obj[key] = object[key];
1607
- }
1608
- return obj;
1609
- }, {});
1610
- }
1611
- /**
1612
- * Sorts an object's entries alphabetically by key
1613
- */
1614
- static sort(object, compareFn) {
1615
- return this.sortKeys(object, compareFn);
1616
- }
1617
- /**
1618
- * Sorts an object's entries alphabetically by key
1619
- */
1620
- static sortKeys(object, compareFn) {
1621
- return Object.keys(object).sort(compareFn).reduce((obj, key) => {
1622
- obj[key] = object[key];
1623
- return obj;
1624
- }, {});
1625
- }
1626
- /**
1627
- * Sorts an object's entries alphabetically by value
1628
- */
1629
- static sortValues(object, compareFn) {
1630
- return Object.keys(object).sort((a, b) => compareFn(object[a], object[b])).reduce((obj, key) => {
1631
- obj[key] = object[key];
1632
- return obj;
1633
- }, {});
1634
- }
1635
- /**
1636
- * @see mintObject.filterKeys
1637
- */
1638
- static filter(object, keys) {
1639
- return this.filterKeys(object, keys);
1640
- }
1641
- /**
1642
- * Filters an object by its keys
1643
- * @param object - the object to filter
1644
- * @param keys - the keys to keep
1645
- * @returns - the filtered object
1646
- */
1647
- static filterKeys(object, keys) {
1648
- return keys.reduce((obj, key) => {
1649
- obj[key] = object[key];
1650
- return obj;
1651
- }, {});
1652
- }
1653
- /**
1654
- * Filters an object by its values
1655
- * @param object - the object to filter
1656
- * @param values - the values to keep
1657
- * @returns - the filtered object
1658
- */
1659
- static filterValues(object, values) {
1660
- return Object.keys(object).reduce((obj, key) => {
1661
- if (values.includes(object[key])) {
1662
- obj[key] = object[key];
1663
- }
1664
- return obj;
1665
- }, {});
1666
- }
1667
- /**
1668
- * Update two sets of objects
1669
- * @param original - the original object
1670
- * @param update - the object to update the original with
1671
- * @returns - the original objects with updated data from the update
1672
- */
1673
- static updateArray(original, update, key = 'id') {
1674
- // If there are no originals, push the updates
1675
- if (!update?.length) {
1676
- update?.forEach((object) => original.push(object));
1677
- // If there are existing objects
1678
- }
1679
- else {
1680
- // Create a dictionary of the updated objects
1681
- const updateObjects = update.reduce((objects, object) => ({
1682
- ...objects,
1683
- [object?.[key] ?? '']: object
1684
- }), {});
1685
- // Remove any objects that aren't in the updated objects
1686
- const missingObjects = original.filter((object) => !updateObjects[object?.[key] ?? '']);
1687
- missingObjects?.forEach((object) => {
1688
- const index = original.indexOf(object);
1689
- if (typeof index == 'number' && index !== -1) {
1690
- original.splice(index, 1);
1691
- }
1692
- });
1693
- // Update the existing objects with updates
1694
- original.forEach((object) => {
1695
- if (updateObjects[object?.[key] ?? '']) {
1696
- Object.assign(object, updateObjects[object?.[key] ?? '']);
1697
- }
1698
- });
1699
- }
1700
- // Push any new objects
1701
- const newObjects = update?.filter((object) => !original.some((existingObject) => existingObject?.[key] === object?.[key]));
1702
- newObjects?.forEach(newObject => original.push(newObject));
1703
- }
1704
- /**
1705
- * Get an object's key by value
1706
- */
1707
- static getKeyByValue(object, value) {
1708
- return Object.keys(object).find((key) => object[key] === value);
1709
- }
1710
- /**
1711
- * Create a deep copy of an object
1712
- */
1713
- static deepClone(object) {
1714
- // Only clone objects
1715
- if (typeof object !== 'object' || object === null) {
1716
- return object;
1717
- }
1718
- // Track object references to avoid circular references
1719
- const seen = new WeakMap();
1720
- const stack = [[object, Array.isArray(object) ? [] : {}]];
1721
- // Run clone tasks
1722
- while (stack.length) {
1723
- const [source, clone, key] = stack.pop();
1724
- if (key !== undefined) {
1725
- const value = source[key];
1726
- // Bind functions
1727
- if (typeof value === 'function') {
1728
- clone[key] = value.bind(clone);
1729
- continue;
1730
- }
1731
- // Primitives
1732
- if (typeof value !== 'object' || value === null) {
1733
- clone[key] = value;
1734
- continue;
1735
- }
1736
- // Circular references
1737
- if (seen.has(value)) {
1738
- clone[key] = seen.get(value);
1739
- continue;
1740
- }
1741
- // Object / Array
1742
- clone[key] = Array.isArray(value) ? [] : {};
1743
- seen.set(value, clone[key]);
1744
- stack.push([value, clone[key]]);
1745
- // No key, process full object
1746
- }
1747
- else {
1748
- seen.set(source, clone);
1749
- if (Array.isArray(source)) {
1750
- source.forEach((_, index) => {
1751
- stack.push([source, clone, index]);
1752
- });
1753
- continue;
1754
- }
1755
- Object.keys(source).forEach((key) => {
1756
- stack.push([source, clone, key]);
1757
- });
1758
- }
1759
- }
1760
- return seen.get(object);
1761
- }
1762
- }
1763
- ;
1764
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MintObject);
1765
-
1766
-
1767
- /***/ },
1768
-
1769
- /***/ "./src/ts/imports/util/scroll.ts"
1770
- /*!***************************************!*\
1771
- !*** ./src/ts/imports/util/scroll.ts ***!
1772
- \***************************************/
1773
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1774
-
1775
- __webpack_require__.r(__webpack_exports__);
1776
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1777
- /* harmony export */ MintScroll: () => (/* binding */ MintScroll),
1778
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1779
- /* harmony export */ });
1780
- /* harmony import */ var _event__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./event */ "./src/ts/imports/util/event.ts");
1781
- /**
1782
- * Imports
1783
- */
1784
-
1785
- /**
1786
- * Scroll functions
1787
- */
1788
- class MintScroll {
1789
- /**
1790
- * Scroll to the top of the page
1791
- */
1792
- static toTop() {
1793
- window.scrollTo(0, 0);
1794
- }
1795
- ;
1796
- /**
1797
- * Scroll to the bottom of the page
1798
- */
1799
- static toBottom() {
1800
- window.scrollTo(0, document.body.scrollHeight);
1801
- }
1802
- ;
1803
- /**
1804
- * Show visible elements
1805
- */
1806
- static showElements() {
1807
- requestAnimationFrame(() => {
1808
- let elements = document.querySelectorAll('.mint-fall-in:not(.mint-show)'), elementsToShow = [];
1809
- for (let i = 0; i < elements.length; i++) {
1810
- if (elements[i].getBoundingClientRect().top < 0) {
1811
- elements[i].classList.add('mint-show');
1812
- }
1813
- else if (elements[i].getBoundingClientRect().top < window.innerHeight * 3 / 4) {
1814
- elementsToShow.push(elements[i]);
1815
- }
1816
- }
1817
- for (let i = 0; i < elementsToShow.length; i++) {
1818
- setTimeout(() => {
1819
- elementsToShow[i].classList.add('mint-show');
1820
- }, i * 100);
1821
- }
1822
- });
1823
- }
1824
- /**
1825
- * Show visible elements on scroll
1826
- */
1827
- static showElementsOnScroll() {
1828
- window.addEventListener('scroll', _event__WEBPACK_IMPORTED_MODULE_0__["default"].throttleEvent(this.showElements, 200));
1829
- }
1830
- }
1831
- ;
1832
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MintScroll);
1833
-
1834
-
1835
- /***/ },
1836
-
1837
- /***/ "./src/ts/imports/util/selectors.ts"
1838
- /*!******************************************!*\
1839
- !*** ./src/ts/imports/util/selectors.ts ***!
1840
- \******************************************/
1841
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1842
-
1843
- __webpack_require__.r(__webpack_exports__);
1844
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1845
- /* harmony export */ MintSelectors: () => (/* binding */ MintSelectors),
1846
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1847
- /* harmony export */ });
1848
- /**
1849
- * CSS-selector helpers
1850
- * @public
1851
- */
1852
- class MintSelectors {
1853
- /**
1854
- * The library name that will be added as a prefix
1855
- */
1856
- static lib = 'mint';
1857
- /**
1858
- * The prefix built from the library name
1859
- */
1860
- static pre = `${this.lib}-`;
1861
- /**
1862
- * CSS-selector for disabled elements
1863
- */
1864
- static disabled = '[disabled]';
1865
- /**
1866
- * CSS-selector for elements with an aria-controls attribute
1867
- */
1868
- static hasControls = '[aria-controls]';
1869
- /**
1870
- * CSS-selector for elements with an aria-expanded attribute
1871
- */
1872
- static hasExpanded = '[aria-expanded]';
1873
- /**
1874
- * CSS-selector for elements with an href attribute
1875
- */
1876
- static hasLink = '[href]';
1877
- /**
1878
- * CSS-selector for elements with a routerLink attribute
1879
- */
1880
- static hasRouterLink = '[routerLink]';
1881
- /**
1882
- * CSS-selector for elements with an id attribute
1883
- */
1884
- static hasId = '[id]';
1885
- /**
1886
- * CSS-selector for elements that aren't tabbable (i.e. tabindex is negative)
1887
- */
1888
- static notTabbable = '[tabindex^="-"]';
1889
- /**
1890
- * CSS-selector for elements that are tabbable (i.e. tabindex isn't negative)
1891
- */
1892
- static tabbable = `[tabindex]${this.neg(this.notTabbable)}`;
1893
- /**
1894
- * CSS-selector for elements that can receive focus
1895
- */
1896
- static focusable = `input${this.neg(this.disabled)}${this.neg(this.notTabbable)},
1897
- select${this.neg(this.disabled)}${this.neg(this.notTabbable)},
1898
- textarea${this.neg(this.disabled)}${this.neg(this.notTabbable)},
1899
- button${this.neg(this.disabled)}${this.neg(this.notTabbable)},
1900
- object${this.neg(this.disabled)}${this.neg(this.notTabbable)},
1901
- a${this.hasLink}, a${this.hasRouterLink},
1902
- area${this.hasLink},
1903
- ${this.tabbable}`.replace(/\s/g, '');
1904
- /**
1905
- * CSS-selector for submenu buttons
1906
- */
1907
- static subMenuButtons = `button${this.hasControls}`;
1908
- /**
1909
- * CSS-selector for submenus
1910
- */
1911
- static subMenu = `${this.subMenuButtons} + ul${this.hasId}`;
1912
- /**
1913
- * Adds the library prefix to the beginning of the provided string
1914
- * @param base - the string to be prefixed
1915
- * @returns - the provided string prefixed with the library name
1916
- */
1917
- static prefix(base) {
1918
- base = base.toLowerCase();
1919
- return base.startsWith(this.pre) ? base : `${this.pre}${base}`;
1920
- }
1921
- /**
1922
- * Adds two dashes to the beginning of the provided string
1923
- * @param base - the string to be prefixed
1924
- * @returns - the provided string prefixed with two dashes
1925
- */
1926
- static cssPrefix(base) {
1927
- return `--${this.prefix(base.replace(/^-+/, ''))}`;
1928
- }
1929
- /**
1930
- * Turns the provided string into a CSS variable call
1931
- * @param base - the name of the CSS variable to call
1932
- * @returns - the CSS variable call for the provided string
1933
- */
1934
- static cssVar(base) {
1935
- return `var(${this.cssPrefix(base)})`;
1936
- }
1937
- /**
1938
- * Negates the provided CSS selector
1939
- * @param base - the CSS selector to negate
1940
- * @returns - the negated CSS selector
1941
- */
1942
- static neg(base) {
1943
- return `:not(${base})`;
1944
- }
1945
- /**
1946
- * Generates a class CSS selector
1947
- * @param base - the name of the class to generate
1948
- * @returns - the generated CSS selector
1949
- */
1950
- static class(base) {
1951
- return `.${this.prefix(base)}`;
1952
- }
1953
- /**
1954
- * Generates an id CSS selector
1955
- * @param base - the name of the id to generate
1956
- * @returns - the generated CSS selector
1957
- */
1958
- static id(base) {
1959
- return `#${this.prefix(base)}`;
1960
- }
1961
- /**
1962
- * Generates an aria-controls CSS selector
1963
- * @param id - the id of the controlled element
1964
- * @returns - the generated CSS selector
1965
- */
1966
- static controls(id) {
1967
- return id ? `[aria-controls="${this.prefix(id)}"]` : this.hasControls;
1968
- }
1969
- /**
1970
- * Generates an aria-expanded CSS selector
1971
- * @param bool - whether the element is expanded or not
1972
- * @returns - the generated CSS selector
1973
- */
1974
- static expanded(bool) {
1975
- return typeof bool === 'boolean' ? `[aria-expanded="${bool}"]` : this.hasExpanded;
1976
- }
1977
- /**
1978
- * Returns a NodeList of HTMLElements within the given element that are focusable
1979
- * @param el - the element whose focusable children will be returned
1980
- * @returns - the elements within the given element that are focusable
1981
- */
1982
- static getFocusables(el) {
1983
- let focusables;
1984
- if (el) {
1985
- focusables = Array.from(el.querySelectorAll(this.focusable));
1986
- }
1987
- else {
1988
- focusables = Array.from(document.querySelectorAll(this.focusable));
1989
- }
1990
- return focusables.filter((el) => this.isFocusable(el));
1991
- }
1992
- /**
1993
- * Returns true if an element is focusable and false if not,
1994
- * based on styles (i.e. a parent has display: none;)
1995
- * NOTE: Still need to determine what other styles may make an element un-focusable
1996
- * @param el - the element
1997
- * @returns - true if the element is focusable; false if not
1998
- */
1999
- static isFocusable(el) {
2000
- let current = el;
2001
- do {
2002
- if (window.getComputedStyle(current).getPropertyValue('display').toLowerCase() === 'none') {
2003
- return false;
2004
- }
2005
- current = current.parentElement;
2006
- } while (current);
2007
- return true;
2008
- }
2009
- }
2010
- ;
2011
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MintSelectors);
2012
-
2013
-
2014
- /***/ },
2015
-
2016
- /***/ "./src/ts/imports/util/settings.ts"
2017
- /*!*****************************************!*\
2018
- !*** ./src/ts/imports/util/settings.ts ***!
2019
- \*****************************************/
2020
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2021
-
2022
- __webpack_require__.r(__webpack_exports__);
2023
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2024
- /* harmony export */ MintSettings: () => (/* binding */ MintSettings),
2025
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2026
- /* harmony export */ });
2027
- /**
2028
- * Settings management
2029
- * @public
2030
- */
2031
- class MintSettings {
2032
- /**
2033
- * Value added to all delay variables
2034
- */
2035
- static delayBase = 0;
2036
- /**
2037
- * Value multiplied by delay variable index
2038
- */
2039
- static delayStep = 100;
2040
- /**
2041
- * Delay variables
2042
- */
2043
- static delay = {
2044
- instant: this.delayBase + this.delayStep * 0,
2045
- fast: this.delayBase + this.delayStep * 1,
2046
- medFast: this.delayBase + this.delayStep * 2,
2047
- default: this.delayBase + this.delayStep * 3,
2048
- medSlow: this.delayBase + this.delayStep * 4,
2049
- slow: this.delayBase + this.delayStep * 5
2050
- };
2051
- /**
2052
- * Breakpoint variables
2053
- */
2054
- static break = {
2055
- z: 0,
2056
- xs: 480,
2057
- sm: 768,
2058
- md: 1024,
2059
- lg: 1200,
2060
- xl: 1440
2061
- };
2062
- /**
2063
- * Update the provided settings variables
2064
- * @param settings - Object of settings variables to update
2065
- */
2066
- static set(settings) {
2067
- let newDelay = false;
2068
- if (typeof settings.delayBase === 'number') {
2069
- this.delayBase = settings.delayBase;
2070
- newDelay = true;
2071
- }
2072
- if (typeof settings.delayStep === 'number') {
2073
- this.delayStep = settings.delayStep;
2074
- newDelay = true;
2075
- }
2076
- if (newDelay) {
2077
- this.setDelay();
2078
- }
2079
- if (settings.delay && Object.keys(settings.delay).length) {
2080
- if (Object.values(settings.delay).reduce((prev, next) => prev && typeof next === 'number', true)) {
2081
- this.delay = { ...this.delay, ...settings.delay };
2082
- }
2083
- }
2084
- if (settings.break && Object.keys(settings.break).length) {
2085
- if (Object.values(settings.break).reduce((prev, next) => prev && typeof next === 'number', true)) {
2086
- this.break = { ...this.break, ...settings.break };
2087
- }
2088
- }
2089
- }
2090
- /**
2091
- * Updates the delay variables based on `this.delayBase` and `this.delayStep`
2092
- */
2093
- static setDelay() {
2094
- this.delay = {
2095
- instant: this.delayBase + this.delayStep * 0,
2096
- fast: this.delayBase + this.delayStep * 1,
2097
- medFast: this.delayBase + this.delayStep * 2,
2098
- default: this.delayBase + this.delayStep * 3,
2099
- medSlow: this.delayBase + this.delayStep * 4,
2100
- slow: this.delayBase + this.delayStep * 5
2101
- };
2102
- }
2103
- }
2104
- ;
2105
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MintSettings);
2106
-
2107
-
2108
- /***/ },
2109
-
2110
- /***/ "./src/ts/imports/util/text.ts"
2111
- /*!*************************************!*\
2112
- !*** ./src/ts/imports/util/text.ts ***!
2113
- \*************************************/
2114
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2115
-
2116
- __webpack_require__.r(__webpack_exports__);
2117
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2118
- /* harmony export */ MintText: () => (/* binding */ MintText)
2119
- /* harmony export */ });
2120
- /**
2121
- * Functions for analyzing and manipulating text.
2122
- */
2123
- class MintText {
2124
- /**
2125
- * Shorten a string to the given length
2126
- */
2127
- static truncate(text, length = 100) {
2128
- return text.length > length ? text.slice(0, length).trim() + '...' : text;
2129
- }
2130
- /**
2131
- * Generate a slug from a string
2132
- * @param text - The string to slugify
2133
- * @returns The slugified string
2134
- */
2135
- static slug(text) {
2136
- return text?.trim()
2137
- .toLowerCase()
2138
- .replace(/'/g, '')
2139
- .replace(/[^\w/-]+/g, '-')
2140
- .replace(/-+/g, '-')
2141
- .replace(/^-+|-+$/g, '')
2142
- .replace(/^\/+|\/+$/g, '') ?? '';
2143
- }
2144
- /**
2145
- * Generate a title from a slug
2146
- * @param slug - The slug to generate a title from
2147
- * @returns The title
2148
- */
2149
- static unslug(slug) {
2150
- return this.titleCase(slug.replace(/[-/]+/g, ' '));
2151
- }
2152
- /**
2153
- * Format a phone number
2154
- * @param phone - The phone number to format
2155
- * @returns The formatted phone number
2156
- */
2157
- static phone(phone) {
2158
- const given = phone?.toString().trim() ?? '';
2159
- if (given === '(' || given === '') {
2160
- return given;
2161
- }
2162
- let numbers = given.replace(/\D/g, '') ?? '', formatted = '';
2163
- if (numbers.length > 10) {
2164
- formatted += `+${numbers.slice(0, numbers.length - 10)} `;
2165
- numbers = numbers.slice(numbers.length - 10);
2166
- }
2167
- for (var i = 0; i < numbers.length; i++) {
2168
- switch (i) {
2169
- case 0:
2170
- formatted += '(';
2171
- break;
2172
- case 3:
2173
- formatted += ') ';
2174
- break;
2175
- case 6:
2176
- formatted += '-';
2177
- break;
2178
- }
2179
- formatted += numbers[i];
2180
- }
2181
- switch (given[given.length - 1]) {
2182
- case ')':
2183
- if (i === 3) {
2184
- formatted += ') ';
2185
- }
2186
- break;
2187
- case '-':
2188
- if (i === 6) {
2189
- formatted += '-';
2190
- }
2191
- break;
2192
- }
2193
- return formatted;
2194
- }
2195
- /**
2196
- * Pluralize the given word
2197
- */
2198
- static plural(word) {
2199
- if (word.endsWith('ies') ||
2200
- word.endsWith('es') ||
2201
- (word.endsWith('s') && !word.endsWith('us') && !word.endsWith('is') && !word.endsWith('ss'))) {
2202
- return word;
2203
- }
2204
- if (word.endsWith('y') && !['a', 'e', 'i', 'o', 'u'].includes(word.charAt(word.length - 2))) {
2205
- return word.slice(0, -1) + 'ies';
2206
- }
2207
- if (word.endsWith('s') || word.endsWith('sh') || word.endsWith('ch') || word.endsWith('x') || word.endsWith('z')) {
2208
- return word + 'es';
2209
- }
2210
- return word + 's';
2211
- }
2212
- /**
2213
- * Capitalize the first letter of the given word
2214
- */
2215
- static titleCase(text) {
2216
- return text
2217
- .toLowerCase()
2218
- .replace(/(?:^|\s)\S/g, a => a.toUpperCase());
2219
- }
2220
- /**
2221
- * Copies the provided text to the clipboard
2222
- * @param text - the text to copy
2223
- * @returns - true if the text was successfully copied to the clipboard; else false
2224
- */
2225
- static copyText(text) {
2226
- let textArea = document.createElement('textarea');
2227
- if (!text || !textArea) {
2228
- return false;
2229
- }
2230
- textArea.value = text;
2231
- textArea.style.cssText = `
2232
- position: fixed;
2233
- top: 0;
2234
- left: 0;
2235
- transform: translate(-100%, -100%);
2236
- opacity: 0;
2237
- z-index: -1;
2238
- `;
2239
- document.body.appendChild(textArea);
2240
- textArea.select();
2241
- textArea.setSelectionRange(0, 99999);
2242
- navigator.clipboard.writeText(textArea.value);
2243
- document.body.removeChild(textArea);
2244
- return true;
2245
- }
2246
- /**
2247
- * Tests the validity of an email address
2248
- * @see {@link https://stackoverflow.com/questions/201323/how-can-i-validate-an-email-address-using-a-regular-expression}
2249
- * @param text - the string to test
2250
- * @returns - true if the given string is an email address; false if not
2251
- */
2252
- static isEmail(text) {
2253
- return null !== text.match(/(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/);
2254
- }
2255
- /**
2256
- * Generate a random string [a-z0-9]
2257
- */
2258
- static generateId(length = 10) {
2259
- return Math.random().toString(36).substring(2, length + 2);
2260
- }
2261
- /**
2262
- * Check if the given string is an image url
2263
- */
2264
- static isImage(src) {
2265
- return !!src?.match(/\.(jpe?g|png|webp|gif|svg)$/i);
2266
- }
2267
- /**
2268
- * Check if the given string is a video url
2269
- */
2270
- static isVideo(src) {
2271
- return !!src?.match(/\.(mp4|webm|ogg)$/i);
2272
- }
2273
- }
2274
-
2275
-
2276
- /***/ },
2277
-
2278
- /***/ "./src/ts/imports/util/window.ts"
2279
- /*!***************************************!*\
2280
- !*** ./src/ts/imports/util/window.ts ***!
2281
- \***************************************/
2282
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2283
-
2284
- __webpack_require__.r(__webpack_exports__);
2285
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2286
- /* harmony export */ MintWindow: () => (/* binding */ MintWindow)
2287
- /* harmony export */ });
2288
- /**
2289
- * Functions related to the browser window.
2290
- */
2291
- class MintWindow {
2292
- /**
2293
- * Returns the width of the window, including fractional pixels
2294
- * @returns the width of the window
2295
- */
2296
- static width() {
2297
- const decimal = document.body.getBoundingClientRect().width % 1;
2298
- return window.innerWidth + decimal;
2299
- }
2300
- /**
2301
- * Returns the height of the window, including fractional pixels
2302
- * @returns the height of the window
2303
- */
2304
- static height() {
2305
- const decimal = document.body.getBoundingClientRect().height % 1;
2306
- return window.innerHeight + decimal;
2307
- }
2308
- }
2309
- ;
2310
-
2311
-
2312
- /***/ }
2313
-
2314
- /******/ });
2315
- /************************************************************************/
2316
- /******/ // The module cache
2317
- /******/ const __webpack_module_cache__ = {};
2318
- /******/
2319
- /******/ // The require function
2320
- /******/ function __webpack_require__(moduleId) {
2321
- /******/ // Check if module is in cache
2322
- /******/ const cachedModule = __webpack_module_cache__[moduleId];
2323
- /******/ if (cachedModule !== undefined) {
2324
- /******/ return cachedModule.exports;
2325
- /******/ }
2326
- /******/ // Create a new module (and put it into the cache)
2327
- /******/ const module = __webpack_module_cache__[moduleId] = {
2328
- /******/ // no module.id needed
2329
- /******/ // no module.loaded needed
2330
- /******/ exports: {}
2331
- /******/ };
2332
- /******/
2333
- /******/ // Execute the module function
2334
- /******/ if (!(moduleId in __webpack_modules__)) {
2335
- /******/ delete __webpack_module_cache__[moduleId];
2336
- /******/ const e = new Error("Cannot find module '" + moduleId + "'");
2337
- /******/ e.code = 'MODULE_NOT_FOUND';
2338
- /******/ throw e;
2339
- /******/ }
2340
- /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
2341
- /******/
2342
- /******/ // Return the exports of the module
2343
- /******/ return module.exports;
2344
- /******/ }
2345
- /******/
2346
- /************************************************************************/
2347
- /******/ /* webpack/runtime/define property getters */
2348
- /******/ (() => {
2349
- /******/ // define getter/value functions for harmony exports
2350
- /******/ __webpack_require__.d = (exports, definition) => {
2351
- /******/ if(Array.isArray(definition)) {
2352
- /******/ var i = 0;
2353
- /******/ while(i < definition.length) {
2354
- /******/ var key = definition[i++];
2355
- /******/ var binding = definition[i++];
2356
- /******/ if(!__webpack_require__.o(exports, key)) {
2357
- /******/ if(binding === 0) {
2358
- /******/ Object.defineProperty(exports, key, { enumerable: true, value: definition[i++] });
2359
- /******/ } else {
2360
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: binding });
2361
- /******/ }
2362
- /******/ } else if(binding === 0) { i++; }
2363
- /******/ }
2364
- /******/ } else {
2365
- /******/ for(var key in definition) {
2366
- /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
2367
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
2368
- /******/ }
2369
- /******/ }
2370
- /******/ }
2371
- /******/ };
2372
- /******/ })();
2373
- /******/
2374
- /******/ /* webpack/runtime/hasOwnProperty shorthand */
2375
- /******/ (() => {
2376
- /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
2377
- /******/ })();
2378
- /******/
2379
- /******/ /* webpack/runtime/make namespace object */
2380
- /******/ (() => {
2381
- /******/ // define __esModule on exports
2382
- /******/ __webpack_require__.r = (exports) => {
2383
- /******/ if(Symbol.toStringTag) {
2384
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2385
- /******/ }
2386
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
2387
- /******/ };
2388
- /******/ })();
2389
- /******/
2390
- /************************************************************************/
2391
- let __webpack_exports__ = {};
2392
- // This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk.
2393
- (() => {
2394
- /*!*************************!*\
2395
- !*** ./src/ts/index.ts ***!
2396
- \*************************/
2397
- __webpack_require__.r(__webpack_exports__);
2398
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2399
- /* harmony export */ EMintSide: () => (/* reexport safe */ _imports__WEBPACK_IMPORTED_MODULE_0__.EMintSide),
2400
- /* harmony export */ MintAsync: () => (/* reexport safe */ _imports__WEBPACK_IMPORTED_MODULE_0__.MintAsync),
2401
- /* harmony export */ MintAttachesEvents: () => (/* reexport safe */ _imports__WEBPACK_IMPORTED_MODULE_0__.MintAttachesEvents),
2402
- /* harmony export */ MintDisplay: () => (/* reexport safe */ _imports__WEBPACK_IMPORTED_MODULE_0__.MintDisplay),
2403
- /* harmony export */ MintEvent: () => (/* reexport safe */ _imports__WEBPACK_IMPORTED_MODULE_0__.MintEvent),
2404
- /* harmony export */ MintGrid: () => (/* reexport safe */ _imports__WEBPACK_IMPORTED_MODULE_0__.MintGrid),
2405
- /* harmony export */ MintHeader: () => (/* reexport safe */ _imports__WEBPACK_IMPORTED_MODULE_0__.MintHeader),
2406
- /* harmony export */ MintIcon: () => (/* reexport safe */ _imports__WEBPACK_IMPORTED_MODULE_0__.MintIcon),
2407
- /* harmony export */ MintItem: () => (/* reexport safe */ _imports__WEBPACK_IMPORTED_MODULE_0__.MintItem),
2408
- /* harmony export */ MintList: () => (/* reexport safe */ _imports__WEBPACK_IMPORTED_MODULE_0__.MintList),
2409
- /* harmony export */ MintMath: () => (/* reexport safe */ _imports__WEBPACK_IMPORTED_MODULE_0__.MintMath),
2410
- /* harmony export */ MintMenu: () => (/* reexport safe */ _imports__WEBPACK_IMPORTED_MODULE_0__.MintMenu),
2411
- /* harmony export */ MintObject: () => (/* reexport safe */ _imports__WEBPACK_IMPORTED_MODULE_0__.MintObject),
2412
- /* harmony export */ MintPanel: () => (/* reexport safe */ _imports__WEBPACK_IMPORTED_MODULE_0__.MintPanel),
2413
- /* harmony export */ MintScroll: () => (/* reexport safe */ _imports__WEBPACK_IMPORTED_MODULE_0__.MintScroll),
2414
- /* harmony export */ MintSelectors: () => (/* reexport safe */ _imports__WEBPACK_IMPORTED_MODULE_0__.MintSelectors),
2415
- /* harmony export */ MintSettings: () => (/* reexport safe */ _imports__WEBPACK_IMPORTED_MODULE_0__.MintSettings),
2416
- /* harmony export */ MintText: () => (/* reexport safe */ _imports__WEBPACK_IMPORTED_MODULE_0__.MintText),
2417
- /* harmony export */ MintWindow: () => (/* reexport safe */ _imports__WEBPACK_IMPORTED_MODULE_0__.MintWindow),
2418
- /* harmony export */ mintColor: () => (/* reexport safe */ _imports__WEBPACK_IMPORTED_MODULE_0__.mintColor)
2419
- /* harmony export */ });
2420
- /* harmony import */ var _imports__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./imports */ "./src/ts/imports/index.ts");
2421
- /**
2422
- * A library for building responsive web applications.
2423
- *
2424
- * @packageDocumentation
2425
- */
2426
- /**
2427
- * Exports
2428
- */
2429
-
2430
-
2431
- })();
2432
-
2433
- const __webpack_exports__EMintSide = __webpack_exports__.EMintSide;
2434
- const __webpack_exports__MintAsync = __webpack_exports__.MintAsync;
2435
- const __webpack_exports__MintAttachesEvents = __webpack_exports__.MintAttachesEvents;
2436
- const __webpack_exports__MintDisplay = __webpack_exports__.MintDisplay;
2437
- const __webpack_exports__MintEvent = __webpack_exports__.MintEvent;
2438
- const __webpack_exports__MintGrid = __webpack_exports__.MintGrid;
2439
- const __webpack_exports__MintHeader = __webpack_exports__.MintHeader;
2440
- const __webpack_exports__MintIcon = __webpack_exports__.MintIcon;
2441
- const __webpack_exports__MintItem = __webpack_exports__.MintItem;
2442
- const __webpack_exports__MintList = __webpack_exports__.MintList;
2443
- const __webpack_exports__MintMath = __webpack_exports__.MintMath;
2444
- const __webpack_exports__MintMenu = __webpack_exports__.MintMenu;
2445
- const __webpack_exports__MintObject = __webpack_exports__.MintObject;
2446
- const __webpack_exports__MintPanel = __webpack_exports__.MintPanel;
2447
- const __webpack_exports__MintScroll = __webpack_exports__.MintScroll;
2448
- const __webpack_exports__MintSelectors = __webpack_exports__.MintSelectors;
2449
- const __webpack_exports__MintSettings = __webpack_exports__.MintSettings;
2450
- const __webpack_exports__MintText = __webpack_exports__.MintText;
2451
- const __webpack_exports__MintWindow = __webpack_exports__.MintWindow;
2452
- const __webpack_exports__mintColor = __webpack_exports__.mintColor;
2453
- export { __webpack_exports__EMintSide as EMintSide, __webpack_exports__MintAsync as MintAsync, __webpack_exports__MintAttachesEvents as MintAttachesEvents, __webpack_exports__MintDisplay as MintDisplay, __webpack_exports__MintEvent as MintEvent, __webpack_exports__MintGrid as MintGrid, __webpack_exports__MintHeader as MintHeader, __webpack_exports__MintIcon as MintIcon, __webpack_exports__MintItem as MintItem, __webpack_exports__MintList as MintList, __webpack_exports__MintMath as MintMath, __webpack_exports__MintMenu as MintMenu, __webpack_exports__MintObject as MintObject, __webpack_exports__MintPanel as MintPanel, __webpack_exports__MintScroll as MintScroll, __webpack_exports__MintSelectors as MintSelectors, __webpack_exports__MintSettings as MintSettings, __webpack_exports__MintText as MintText, __webpack_exports__MintWindow as MintWindow, __webpack_exports__mintColor as mintColor };
2454
-
2455
- //# sourceMappingURL=index.js.map