@ulu/frontend 0.1.0-beta.75 → 0.1.0-beta.76

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.
@@ -5250,8 +5250,8 @@
5250
5250
  <pre class="language-scss"><code class="language-scss"><span class="pjs-token pjs-property"><span class="pjs-token pjs-variable">$config</span></span><span class="pjs-token pjs-punctuation">:</span> <span class="pjs-token pjs-punctuation">(</span>
5251
5251
  <span class="pjs-token pjs-string">"backdrop-color"</span> <span class="pjs-token pjs-punctuation">:</span> <span class="pjs-token pjs-boolean">true</span><span class="pjs-token pjs-punctuation">,</span>
5252
5252
  <span class="pjs-token pjs-string">"backdrop-blur"</span> <span class="pjs-token pjs-punctuation">:</span> 4px<span class="pjs-token pjs-punctuation">,</span>
5253
- <span class="pjs-token pjs-string">"background-color"</span><span class="pjs-token pjs-punctuation">:</span> white<span class="pjs-token pjs-punctuation">,</span>
5254
- <span class="pjs-token pjs-string">"body-padding"</span><span class="pjs-token pjs-punctuation">:</span> 1rem<span class="pjs-token pjs-punctuation">,</span>
5253
+ <span class="pjs-token pjs-string">"background-color"</span> <span class="pjs-token pjs-punctuation">:</span> white<span class="pjs-token pjs-punctuation">,</span>
5254
+ <span class="pjs-token pjs-string">"body-padding"</span> <span class="pjs-token pjs-punctuation">:</span> 1rem<span class="pjs-token pjs-punctuation">,</span>
5255
5255
  <span class="pjs-token pjs-string">"border-radius"</span> <span class="pjs-token pjs-punctuation">:</span> <span class="pjs-token pjs-boolean">true</span><span class="pjs-token pjs-punctuation">,</span>
5256
5256
  <span class="pjs-token pjs-string">"box-shadow"</span> <span class="pjs-token pjs-punctuation">:</span> <span class="pjs-token pjs-boolean">true</span><span class="pjs-token pjs-punctuation">,</span>
5257
5257
  <span class="pjs-token pjs-string">"height"</span><span class="pjs-token pjs-punctuation">:</span> 340px<span class="pjs-token pjs-punctuation">,</span>
@@ -5272,6 +5272,10 @@
5272
5272
  <span class="pjs-token pjs-string">"header-border-bottom"</span><span class="pjs-token pjs-punctuation">:</span> none<span class="pjs-token pjs-punctuation">,</span>
5273
5273
  <span class="pjs-token pjs-string">"header-color"</span><span class="pjs-token pjs-punctuation">:</span> white<span class="pjs-token pjs-punctuation">,</span>
5274
5274
  <span class="pjs-token pjs-string">"header-padding"</span><span class="pjs-token pjs-punctuation">:</span> 1rem<span class="pjs-token pjs-punctuation">,</span>
5275
+ <span class="pjs-token pjs-string">"footer-padding"</span> <span class="pjs-token pjs-punctuation">:</span> <span class="pjs-token pjs-punctuation">(</span>0.5rem 1rem<span class="pjs-token pjs-punctuation">)</span><span class="pjs-token pjs-punctuation">,</span>
5276
+ <span class="pjs-token pjs-string">"footer-background-color"</span> <span class="pjs-token pjs-punctuation">:</span> #f6f6f6<span class="pjs-token pjs-punctuation">,</span>
5277
+ <span class="pjs-token pjs-string">"footer-border-top"</span> <span class="pjs-token pjs-punctuation">:</span> none<span class="pjs-token pjs-punctuation">,</span>
5278
+ <span class="pjs-token pjs-string">"footer-text-align"</span> <span class="pjs-token pjs-punctuation">:</span> right<span class="pjs-token pjs-punctuation">,</span>
5275
5279
  <span class="pjs-token pjs-string">"resizer-background-color"</span><span class="pjs-token pjs-punctuation">:</span> <span class="pjs-token pjs-function">rgb</span><span class="pjs-token pjs-punctuation">(</span>221<span class="pjs-token pjs-punctuation">,</span> 221<span class="pjs-token pjs-punctuation">,</span> 221<span class="pjs-token pjs-punctuation">)</span><span class="pjs-token pjs-punctuation">,</span>
5276
5280
  <span class="pjs-token pjs-string">"resizer-background-color-hover"</span><span class="pjs-token pjs-punctuation">:</span> <span class="pjs-token pjs-function">rgb</span><span class="pjs-token pjs-punctuation">(</span>192<span class="pjs-token pjs-punctuation">,</span> 192<span class="pjs-token pjs-punctuation">,</span> 192<span class="pjs-token pjs-punctuation">)</span><span class="pjs-token pjs-punctuation">,</span>
5277
5281
  <span class="pjs-token pjs-string">"resizer-color"</span><span class="pjs-token pjs-punctuation">:</span> <span class="pjs-token pjs-function">rgb</span><span class="pjs-token pjs-punctuation">(</span>99<span class="pjs-token pjs-punctuation">,</span> 99<span class="pjs-token pjs-punctuation">,</span> 99<span class="pjs-token pjs-punctuation">)</span><span class="pjs-token pjs-punctuation">,</span>
@@ -5294,8 +5298,8 @@
5294
5298
  <li><strong>File:</strong> _modal.scss</li>
5295
5299
  <li><strong>Group:</strong> modal</li>
5296
5300
  <li><strong>Type:</strong> variable</li>
5297
- <li><strong>Lines (comments):</strong> 31-67</li>
5298
- <li><strong>Lines (code):</strong> 69-109</li>
5301
+ <li><strong>Lines (comments):</strong> 31-71</li>
5302
+ <li><strong>Lines (code):</strong> 73-117</li>
5299
5303
  </ul>
5300
5304
  </details>
5301
5305
  <h4 id="map-properties" tabindex="-1">Map Properties</h4>
@@ -5448,6 +5452,30 @@
5448
5452
  <td style="text-align:left">The padding of the modal header.</td>
5449
5453
  </tr>
5450
5454
  <tr>
5455
+ <td style="text-align:left">footer-padding</td>
5456
+ <td style="text-align:left">Dimension</td>
5457
+ <td style="text-align:left">(0.5rem 1rem)</td>
5458
+ <td style="text-align:left">The padding of the modal footer.</td>
5459
+ </tr>
5460
+ <tr>
5461
+ <td style="text-align:left">footer-background-color</td>
5462
+ <td style="text-align:left">Color</td>
5463
+ <td style="text-align:left">(0.5rem 1rem)</td>
5464
+ <td style="text-align:left">The background color of the footer</td>
5465
+ </tr>
5466
+ <tr>
5467
+ <td style="text-align:left">footer-border-top</td>
5468
+ <td style="text-align:left">Color</td>
5469
+ <td style="text-align:left">(0.5rem 1rem)</td>
5470
+ <td style="text-align:left">The border between body and footer</td>
5471
+ </tr>
5472
+ <tr>
5473
+ <td style="text-align:left">footer-text-align</td>
5474
+ <td style="text-align:left">CssValue</td>
5475
+ <td style="text-align:left">right</td>
5476
+ <td style="text-align:left">Text alignment for footer</td>
5477
+ </tr>
5478
+ <tr>
5451
5479
  <td style="text-align:left">resizer-background-color</td>
5452
5480
  <td style="text-align:left">Color</td>
5453
5481
  <td style="text-align:left">rgb(221, 221, 221)</td>
@@ -5535,8 +5563,8 @@
5535
5563
  <li><strong>File:</strong> _modal.scss</li>
5536
5564
  <li><strong>Group:</strong> modal</li>
5537
5565
  <li><strong>Type:</strong> mixin</li>
5538
- <li><strong>Lines (comments):</strong> 111-114</li>
5539
- <li><strong>Lines (code):</strong> 116-118</li>
5566
+ <li><strong>Lines (comments):</strong> 119-122</li>
5567
+ <li><strong>Lines (code):</strong> 124-126</li>
5540
5568
  </ul>
5541
5569
  </details>
5542
5570
  <h4 id="examples" tabindex="-1">Examples</h4>
@@ -5575,8 +5603,8 @@
5575
5603
  <li><strong>File:</strong> _modal.scss</li>
5576
5604
  <li><strong>Group:</strong> modal</li>
5577
5605
  <li><strong>Type:</strong> mixin</li>
5578
- <li><strong>Lines (comments):</strong> 130-132</li>
5579
- <li><strong>Lines (code):</strong> 134-485</li>
5606
+ <li><strong>Lines (comments):</strong> 138-140</li>
5607
+ <li><strong>Lines (code):</strong> 142-500</li>
5580
5608
  </ul>
5581
5609
  </details>
5582
5610
  <h4 id="examples-1" tabindex="-1">Examples</h4>
@@ -5599,8 +5627,8 @@
5599
5627
  <li><strong>File:</strong> _modal.scss</li>
5600
5628
  <li><strong>Group:</strong> modal</li>
5601
5629
  <li><strong>Type:</strong> function</li>
5602
- <li><strong>Lines (comments):</strong> 120-123</li>
5603
- <li><strong>Lines (code):</strong> 125-128</li>
5630
+ <li><strong>Lines (comments):</strong> 128-131</li>
5631
+ <li><strong>Lines (code):</strong> 133-136</li>
5604
5632
  </ul>
5605
5633
  </details>
5606
5634
  <h4 id="examples-2" tabindex="-1">Examples</h4>
@@ -4,13 +4,13 @@
4
4
  */
5
5
 
6
6
  import { ComponentInitializer } from "../utils/system.js";
7
+ import { getElement } from "../utils/dom.js";
7
8
  import { wrapSettingString } from "../settings.js";
8
9
  import { getName } from "../events/index.js";
9
10
  import { createElementFromHtml } from "@ulu/utils/browser/dom.js";
10
11
  import { Resizer } from "./resizer.js";
11
12
  import { baseAttribute, closeAttribute, defaults as dialogDefaults } from "./dialog.js";
12
13
 
13
-
14
14
  /**
15
15
  * Modal Builder Component Initializer
16
16
  */
@@ -42,6 +42,8 @@ export const initializer = new ComponentInitializer({
42
42
  * @property {string} baseClass - The base CSS class for the modal elements. Defaults to `"modal"`.
43
43
  * @property {string} classCloseIcon - The class name for the close icon. Uses the wrapped setting string.
44
44
  * @property {string} classResizerIcon - The class name for the resizer icon. Uses the wrapped setting string.
45
+ * @property {string|Node} footerElement - Element or selector to use as the footer (will be moved to dialog on creation, used for DOM API)
46
+ * @property {string|Node} footerHtml - Markup to use in the footer
45
47
  * @property {boolean} debug - Enables debug logging. Defaults to `false`.
46
48
  * @property {function(object): string} templateCloseIcon - A function that returns the HTML for the close icon.
47
49
  * @property {function(object): string} templateCloseIcon.config - The resolved modal configuration object.
@@ -71,6 +73,8 @@ export const defaults = {
71
73
  noMinHeight: false,
72
74
  class: "",
73
75
  baseClass: "modal",
76
+ footerElement: null,
77
+ footerHtml: null,
74
78
  classCloseIcon: wrapSettingString("iconClassClose"),
75
79
  classResizerIcon: wrapSettingString("iconClassDragX"),
76
80
  debug: false,
@@ -89,7 +93,7 @@ export const defaults = {
89
93
  * @returns {String} Markup for modal
90
94
  */
91
95
  template(id, config) {
92
- const { baseClass, describedby } = config;
96
+ const { baseClass, describedby, footerElement, footerHtml } = config;
93
97
  const classes = [
94
98
  baseClass,
95
99
  `${ baseClass }--${ config.position }`,
@@ -102,6 +106,7 @@ export const defaults = {
102
106
  ...(config.class ? [config.class] : []),
103
107
  ];
104
108
  const labelledby = config.title ? `${ id }--title` : config.labelledby;
109
+ const hasFooter = footerElement || footerHtml;
105
110
  return `
106
111
  <dialog
107
112
  id="${ id }"
@@ -123,6 +128,7 @@ export const defaults = {
123
128
  </header>
124
129
  ` : "" }
125
130
  <div class="${ baseClass }__body" ${ initializer.getAttribute("body") }></div>
131
+ ${ footerHtml ? `<div class="${ baseClass }__footer">${ footerHtml }</div>`: "" }
126
132
  ${ config.hasResizer ?
127
133
  `<div class="${ baseClass }__resizer" ${ initializer.getAttribute("resizer") }>
128
134
  ${ config.templateResizerIcon(config) }
@@ -175,6 +181,8 @@ export function buildModal(content, options) {
175
181
  if (!content.id) {
176
182
  throw new Error("Missing ID on modal");
177
183
  }
184
+
185
+ const { footerHtml, footerElement } = config;
178
186
 
179
187
  const markup = config.template(content.id, config);
180
188
  const modal = createElementFromHtml(markup.trim());
@@ -193,6 +201,16 @@ export function buildModal(content, options) {
193
201
  // Add dialog options for other scripts
194
202
  modal.setAttribute(baseAttribute, JSON.stringify(dialogOptions));
195
203
 
204
+ // If they passed a footer element we need to move it in and
205
+ // make sure it has the class
206
+ if (config.footerElement) {
207
+ const footerElement = getElement(config.footerElement);
208
+ if (footerElement) {
209
+ footerElement.classList.add(`${ config.baseClass }__footer`);
210
+ body.after(footerElement);
211
+ }
212
+ }
213
+
196
214
  if (config.hasResizer) {
197
215
  new Resizer(modal, resizer, {
198
216
  fromLeft: config.position === "right"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ulu/frontend",
3
- "version": "0.1.0-beta.75",
3
+ "version": "0.1.0-beta.76",
4
4
  "description": "A versatile SCSS and JavaScript component library offering configurable, accessible components and flexible integration into any project, with SCSS modules suitable for modern JS frameworks.",
5
5
  "browser": "js/index.js",
6
6
  "main": "index.js",
@@ -53,6 +53,10 @@ $-fallbacks: (
53
53
  /// @prop {CssValue} header-border-bottom [none] Bottom-border on the modal header.
54
54
  /// @prop {Color} header-color [white] Type color of the header.
55
55
  /// @prop {Dimension} header-padding [1rem] The padding of the modal header.
56
+ /// @prop {Dimension} footer-padding [(0.5rem 1rem)] The padding of the modal footer.
57
+ /// @prop {Color} footer-background-color [(0.5rem 1rem)] The background color of the footer
58
+ /// @prop {Color} footer-border-top [(0.5rem 1rem)] The border between body and footer
59
+ /// @prop {CssValue} footer-text-align [right] Text alignment for footer
56
60
  /// @prop {Color} resizer-background-color [rgb(221, 221, 221)] The background color of the resizer.
57
61
  /// @prop {Color} resizer-background-color-hover [rgb(192, 192, 192)] The background color of the resizer when hovered or focused.
58
62
  /// @prop {Color} resizer-color [rgb(99, 99, 99)] The type color of the resizer.
@@ -69,8 +73,8 @@ $-fallbacks: (
69
73
  $config: (
70
74
  "backdrop-color" : true,
71
75
  "backdrop-blur" : 4px,
72
- "background-color": white,
73
- "body-padding": 1rem,
76
+ "background-color" : white,
77
+ "body-padding" : 1rem,
74
78
  "border-radius" : true,
75
79
  "box-shadow" : true,
76
80
  "height": 340px,
@@ -91,6 +95,10 @@ $config: (
91
95
  "header-border-bottom": none,
92
96
  "header-color": white,
93
97
  "header-padding": 1rem,
98
+ "footer-padding" : (0.5rem 1rem),
99
+ "footer-background-color" : #f6f6f6,
100
+ "footer-border-top" : none,
101
+ "footer-text-align" : right,
94
102
  "resizer-background-color": rgb(221, 221, 221),
95
103
  "resizer-background-color-hover": rgb(192, 192, 192),
96
104
  "resizer-color": rgb(99, 99, 99),
@@ -142,6 +150,7 @@ $config: (
142
150
  #{ $prefix } {
143
151
  // Required for click outside
144
152
  position: fixed;
153
+ flex-direction: column;
145
154
  // Important: If you use the margin layout system (ie. auto) on dialogs they
146
155
  // can't animate out correctly (thinking it jumps from dialog display system
147
156
  // to normal block and doesn't work. This ALSO affects the z-index (seems to move from top-layer to normal layer). Z-index is for close
@@ -165,9 +174,8 @@ $config: (
165
174
  box-sizing: border-box;
166
175
  animation: uluModalCenterOut get("animation-duration-exit") get("animation-timing-function");
167
176
  &[open] {
168
- animation: uluModalCenterIn get("animation-duration") get("animation-timing-function");
169
177
  display: flex;
170
- flex-direction: column;
178
+ animation: uluModalCenterIn get("animation-duration") get("animation-timing-function");
171
179
  }
172
180
  &::backdrop {
173
181
  background: color.get(get("backdrop-color"));
@@ -190,6 +198,13 @@ $config: (
190
198
  overflow: auto;
191
199
  padding: get("body-padding");
192
200
  }
201
+ #{ $prefix }__footer {
202
+ flex: 0;
203
+ padding: get("footer-padding");
204
+ background-color: color.get(get("footer-background-color"));
205
+ border-top: get("footer-border-top");
206
+ text-align: get("footer-text-align");
207
+ }
193
208
  #{ $prefix }__title {
194
209
  display: flex;
195
210
  align-items: baseline;
@@ -371,13 +386,13 @@ $config: (
371
386
  to {
372
387
  opacity: 1;
373
388
  transform: translate(-50%, -50%);
374
- display: block;
389
+ display: flex;
375
390
  }
376
391
  }
377
392
  @keyframes uluModalCenterOut {
378
393
  from {
379
394
  opacity: 1;
380
- display: block;
395
+ display: flex;
381
396
  transform: translate(-50%, -50%);
382
397
  }
383
398
  to {
@@ -395,13 +410,13 @@ $config: (
395
410
  to {
396
411
  opacity: 1;
397
412
  transform: translate(-50%, 0);
398
- display: block;
413
+ display: flex;
399
414
  }
400
415
  }
401
416
  @keyframes uluModalTopOut {
402
417
  from {
403
418
  opacity: 1;
404
- display: block;
419
+ display: flex;
405
420
  transform: translate(-50%, 0);
406
421
  }
407
422
  to {
@@ -419,13 +434,13 @@ $config: (
419
434
  to {
420
435
  opacity: 1;
421
436
  transform: translate(-50%, 0);
422
- display: block;
437
+ display: flex;
423
438
  }
424
439
  }
425
440
  @keyframes uluModalBottomOut {
426
441
  from {
427
442
  opacity: 1;
428
- display: block;
443
+ display: flex;
429
444
  transform: translate(-50%, 0);
430
445
  }
431
446
  to {
@@ -443,13 +458,13 @@ $config: (
443
458
  to {
444
459
  opacity: 1;
445
460
  transform: translateX(0);
446
- display: block;
461
+ display: flex;
447
462
  }
448
463
  }
449
464
  @keyframes uluModalLeftOut {
450
465
  from {
451
466
  opacity: 1;
452
- display: block;
467
+ display: flex;
453
468
  transform: translateX(0);
454
469
  }
455
470
  to {
@@ -467,13 +482,13 @@ $config: (
467
482
  to {
468
483
  opacity: 1;
469
484
  transform: translateX(0);
470
- display: block;
485
+ display: flex;
471
486
  }
472
487
  }
473
488
  @keyframes uluModalRightOut {
474
489
  from {
475
490
  opacity: 1;
476
- display: block;
491
+ display: flex;
477
492
  transform: translateX(0);
478
493
  }
479
494
  to {
@@ -20,5 +20,5 @@ export * as printDetails from "./print-details.js";
20
20
  export * as scrollSlider from "./scroll-slider.js";
21
21
  export * as themeToggle from "./theme-toggle.js";
22
22
  export * as detailsGroup from "./details-group.js";
23
- declare namespace ___Users_joescherben_Personal_Projects_ULU_frontend_js_ui_index_ { }
23
+ declare namespace ___Users_joe_Projects_Personal_Github_frontend_js_ui_index_ { }
24
24
  //# sourceMappingURL=index.d.ts.map
@@ -37,6 +37,8 @@ export namespace defaults {
37
37
  let _class: string;
38
38
  export { _class as class };
39
39
  export let baseClass: string;
40
+ export let footerElement: any;
41
+ export let footerHtml: any;
40
42
  export let classCloseIcon: any;
41
43
  export let classResizerIcon: any;
42
44
  export let debug: boolean;
@@ -125,6 +127,14 @@ export type DefaultModalOptions = {
125
127
  * - The class name for the resizer icon. Uses the wrapped setting string.
126
128
  */
127
129
  classResizerIcon: string;
130
+ /**
131
+ * - Element or selector to use as the footer (will be moved to dialog on creation, used for DOM API)
132
+ */
133
+ footerElement: string | Node;
134
+ /**
135
+ * - Markup to use in the footer
136
+ */
137
+ footerHtml: string | Node;
128
138
  /**
129
139
  * - Enables debug logging. Defaults to `false`.
130
140
  */
@@ -1 +1 @@
1
- {"version":3,"file":"modal-builder.d.ts","sourceRoot":"","sources":["../../js/ui/modal-builder.js"],"names":[],"mappings":"AA0IA;;GAEG;AACH,gDAEC;AAED;;;GAGG;AACH,6BAQC;AAED;;;;GAIG;AACH,oCAHW,IAAI;;EAmDd;AAvMD;;GAEG;AACH,+CAGG;;;;;;;;;;;;;;;;;;;;;;IAyDD,uDAGC;IACD,yDAGC;IACD;;;;;OAKG;IACH,0DA0CC;;;;;;;;;;;;WAzGW,MAAM,GAAC,IAAI;;;;eACX,MAAM,GAAC,IAAI;;;;gBACX,MAAM;;;;aACN,MAAM;;;;cACN,OAAO;;;;iBACP,OAAO;;;;iBACP,OAAO;;;;cACP,QAAQ,GAAC,UAAU,GAAC,YAAY,GAAC,WAAW,GAAC,aAAa,GAAC,eAAe,GAAC,cAAc;;;;eACzF,OAAO;;;;gBACP,OAAO;;;;UACP,SAAS,GAAC,OAAO,GAAC,OAAO,GAAC,YAAY;;;;WACtC,OAAO;;;;iBACP,OAAO;;;;WACP,MAAM;;;;eACN,MAAM;;;;oBACN,MAAM;;;;sBACN,MAAM;;;;WACN,OAAO;;;;8BACE,MAAM,KAAG,MAAM;;;;mBACf,MAAM,KAAG,MAAM;;qCAzCD,oBAAoB"}
1
+ {"version":3,"file":"modal-builder.d.ts","sourceRoot":"","sources":["../../js/ui/modal-builder.js"],"names":[],"mappings":"AAgJA;;GAEG;AACH,gDAEC;AAED;;;GAGG;AACH,6BAQC;AAED;;;;GAIG;AACH,oCAHW,IAAI;;EA+Dd;AAzND;;GAEG;AACH,+CAGG;;;;;;;;;;;;;;;;;;;;;;;;IA6DD,uDAGC;IACD,yDAGC;IACD;;;;;OAKG;IACH,0DA4CC;;;;;;;;;;;;WA/GW,MAAM,GAAC,IAAI;;;;eACX,MAAM,GAAC,IAAI;;;;gBACX,MAAM;;;;aACN,MAAM;;;;cACN,OAAO;;;;iBACP,OAAO;;;;iBACP,OAAO;;;;cACP,QAAQ,GAAC,UAAU,GAAC,YAAY,GAAC,WAAW,GAAC,aAAa,GAAC,eAAe,GAAC,cAAc;;;;eACzF,OAAO;;;;gBACP,OAAO;;;;UACP,SAAS,GAAC,OAAO,GAAC,OAAO,GAAC,YAAY;;;;WACtC,OAAO;;;;iBACP,OAAO;;;;WACP,MAAM;;;;eACN,MAAM;;;;oBACN,MAAM;;;;sBACN,MAAM;;;;mBACN,MAAM,GAAC,IAAI;;;;gBACX,MAAM,GAAC,IAAI;;;;WACX,OAAO;;;;8BACE,MAAM,KAAG,MAAM;;;;mBACf,MAAM,KAAG,MAAM;;qCA3CD,oBAAoB"}
@@ -6,5 +6,5 @@ export * as index from "./index.js";
6
6
  export * as pauseYoutubeVideo from "./pause-youtube-video.js";
7
7
  export * as fileSave from "./file-save.js";
8
8
  export * as fontAwesome from "./font-awesome.js";
9
- declare namespace ___Users_joescherben_Personal_Projects_ULU_frontend_js_utils_index_ { }
9
+ declare namespace ___Users_joe_Projects_Personal_Github_frontend_js_utils_index_ { }
10
10
  //# sourceMappingURL=index.d.ts.map