@ibobbyts/svelte-ui-utils 0.4.0 → 0.4.1
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.
- package/README.md +12 -0
- package/dist/dropdown/Dropdown.svelte +102 -0
- package/dist/dropdown/Dropdown.svelte.d.ts +2 -0
- package/dist/dropdown/Dropdown.svelte.d.ts.map +1 -1
- package/dist/dropdown/types.d.ts +2 -0
- package/dist/dropdown/types.d.ts.map +1 -1
- package/dist/dropdown-search/DropdownSearch.svelte +18 -1
- package/dist/dropdown-search/DropdownSearch.svelte.d.ts.map +1 -1
- package/dist/style.css +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -393,6 +393,18 @@ use `menuAlign="right"` to align their right edges instead. `fitContent` sizes
|
|
|
393
393
|
the menu to its longest option while keeping the selected edge aligned.
|
|
394
394
|
`DataTable` uses this same component for its page-size picker.
|
|
395
395
|
|
|
396
|
+
For keyboard typeahead, an option may provide `searchText` separately from its
|
|
397
|
+
display `label`. Typeahead matches the beginning of `searchText` or `label`,
|
|
398
|
+
while the label remains the only text shown in the trigger and menu:
|
|
399
|
+
|
|
400
|
+
```svelte
|
|
401
|
+
<Dropdown
|
|
402
|
+
value="cn"
|
|
403
|
+
options={[{ label: '中国', searchText: 'China', value: 'cn' }]}
|
|
404
|
+
ariaLabel="Country"
|
|
405
|
+
/>
|
|
406
|
+
```
|
|
407
|
+
|
|
396
408
|
Set `multiselect={true}` to control the component with a `DropdownValue[]`.
|
|
397
409
|
Each option then shows a checkbox, selecting or deselecting an option keeps the
|
|
398
410
|
menu open, and `onChange` receives the complete selected-value array in option
|
|
@@ -27,6 +27,8 @@
|
|
|
27
27
|
export let fitViewport = true;
|
|
28
28
|
export let fitContent = true;
|
|
29
29
|
export let disabled = false;
|
|
30
|
+
export let name: string | undefined = undefined;
|
|
31
|
+
export let required = false;
|
|
30
32
|
export let width: string | undefined = undefined;
|
|
31
33
|
export let minWidth: string | undefined = undefined;
|
|
32
34
|
export let maxWidth: string | undefined = undefined;
|
|
@@ -51,6 +53,12 @@
|
|
|
51
53
|
let portalMenuWidth: string | undefined = undefined;
|
|
52
54
|
let removeOpenViewportListeners: (() => void) | undefined = undefined;
|
|
53
55
|
let removeOutsidePointerListener: (() => void) | undefined = undefined;
|
|
56
|
+
let typeaheadBuffer = '';
|
|
57
|
+
let typeaheadTimer: ReturnType<typeof setTimeout> | undefined;
|
|
58
|
+
let typeaheadGeneration = 0;
|
|
59
|
+
// Keep the buffer long enough for users to type multi-character aliases
|
|
60
|
+
// while the menu is rendering a large option list.
|
|
61
|
+
const typeaheadTimeoutMs = 1000;
|
|
54
62
|
|
|
55
63
|
$: resolvedOptions = optionGroups === undefined ? options : optionGroups.flatMap((group) => group.options);
|
|
56
64
|
$: selectedValues = normalizeSelectedValues(multiselect && Array.isArray(value) ? value : []);
|
|
@@ -131,6 +139,70 @@
|
|
|
131
139
|
activeValue = enabledOptions[nextIndex]?.value ?? activeValue;
|
|
132
140
|
}
|
|
133
141
|
|
|
142
|
+
function clearTypeaheadBuffer() {
|
|
143
|
+
typeaheadBuffer = '';
|
|
144
|
+
typeaheadGeneration += 1;
|
|
145
|
+
if (typeaheadTimer !== undefined) {
|
|
146
|
+
clearTimeout(typeaheadTimer);
|
|
147
|
+
typeaheadTimer = undefined;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
function scheduleTypeaheadReset() {
|
|
152
|
+
const generation = ++typeaheadGeneration;
|
|
153
|
+
if (typeaheadTimer !== undefined) {
|
|
154
|
+
clearTimeout(typeaheadTimer);
|
|
155
|
+
}
|
|
156
|
+
typeaheadTimer = setTimeout(() => {
|
|
157
|
+
if (generation !== typeaheadGeneration) {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
typeaheadBuffer = '';
|
|
161
|
+
typeaheadTimer = undefined;
|
|
162
|
+
}, typeaheadTimeoutMs);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
function scrollActiveOptionIntoView() {
|
|
166
|
+
void tick().then(() => {
|
|
167
|
+
if (!open || typeof document === 'undefined') {
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
const activeElement = Array.from(
|
|
171
|
+
menuElement?.querySelectorAll<HTMLElement>('.suu-dropdown__option') ?? []
|
|
172
|
+
).find((element) => element.dataset.value === String(activeValue));
|
|
173
|
+
activeElement?.scrollIntoView?.({ block: 'nearest' });
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
function handleTypeahead(key: string) {
|
|
178
|
+
const normalizedKey = key.startsWith('Key') && key.length === 4
|
|
179
|
+
? key.slice(3).toLocaleLowerCase()
|
|
180
|
+
: key.toLocaleLowerCase();
|
|
181
|
+
const nextBuffer = `${typeaheadBuffer}${normalizedKey}`;
|
|
182
|
+
const findMatch = (prefix: string) =>
|
|
183
|
+
resolvedOptions.find(
|
|
184
|
+
(option) =>
|
|
185
|
+
!option.disabled &&
|
|
186
|
+
[option.searchText, option.label]
|
|
187
|
+
.filter((text): text is string => text !== undefined)
|
|
188
|
+
.some((text) => text.toLocaleLowerCase().startsWith(prefix))
|
|
189
|
+
);
|
|
190
|
+
const match = findMatch(nextBuffer) ?? findMatch(normalizedKey);
|
|
191
|
+
|
|
192
|
+
typeaheadBuffer = match ? (findMatch(nextBuffer) ? nextBuffer : normalizedKey) : nextBuffer;
|
|
193
|
+
scheduleTypeaheadReset();
|
|
194
|
+
if (!match) {
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
if (!open) {
|
|
199
|
+
updateResolvedPlacement();
|
|
200
|
+
open = true;
|
|
201
|
+
}
|
|
202
|
+
activeValue = match.value;
|
|
203
|
+
scrollActiveOptionIntoView();
|
|
204
|
+
}
|
|
205
|
+
|
|
134
206
|
function selectOption(option: DropdownOption) {
|
|
135
207
|
if (option.disabled) {
|
|
136
208
|
return;
|
|
@@ -144,11 +216,13 @@
|
|
|
144
216
|
nextSelected.add(option.value);
|
|
145
217
|
}
|
|
146
218
|
const nextValues = normalizeSelectedValues([...nextSelected]);
|
|
219
|
+
clearTypeaheadBuffer();
|
|
147
220
|
void (onChange as DropdownMultiChangeHandler | undefined)?.(nextValues);
|
|
148
221
|
return;
|
|
149
222
|
}
|
|
150
223
|
|
|
151
224
|
open = false;
|
|
225
|
+
clearTypeaheadBuffer();
|
|
152
226
|
void (onChange as DropdownChangeHandler | undefined)?.(option.value);
|
|
153
227
|
buttonElement?.focus();
|
|
154
228
|
}
|
|
@@ -160,6 +234,7 @@
|
|
|
160
234
|
if (!open) {
|
|
161
235
|
updateResolvedPlacement();
|
|
162
236
|
}
|
|
237
|
+
clearTypeaheadBuffer();
|
|
163
238
|
open = !open;
|
|
164
239
|
activeValue = initialActiveValue();
|
|
165
240
|
}
|
|
@@ -179,6 +254,7 @@
|
|
|
179
254
|
event.preventDefault();
|
|
180
255
|
open = false;
|
|
181
256
|
}
|
|
257
|
+
clearTypeaheadBuffer();
|
|
182
258
|
return;
|
|
183
259
|
}
|
|
184
260
|
|
|
@@ -193,6 +269,18 @@
|
|
|
193
269
|
return;
|
|
194
270
|
}
|
|
195
271
|
|
|
272
|
+
if (
|
|
273
|
+
((event.key.length === 1 && event.key !== ' ') ||
|
|
274
|
+
(event.key.startsWith('Key') && event.key.length === 4)) &&
|
|
275
|
+
!event.ctrlKey &&
|
|
276
|
+
!event.metaKey &&
|
|
277
|
+
!event.altKey
|
|
278
|
+
) {
|
|
279
|
+
event.preventDefault();
|
|
280
|
+
handleTypeahead(event.key);
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
|
|
196
284
|
if ((event.key === 'Enter' || event.key === ' ') && open) {
|
|
197
285
|
event.preventDefault();
|
|
198
286
|
const index = activeOptionIndex(activeValue);
|
|
@@ -366,6 +454,7 @@
|
|
|
366
454
|
onDestroy(() => {
|
|
367
455
|
disableOpenViewportTracking();
|
|
368
456
|
disableOutsidePointerDismissal();
|
|
457
|
+
clearTypeaheadBuffer();
|
|
369
458
|
});
|
|
370
459
|
</script>
|
|
371
460
|
|
|
@@ -402,6 +491,19 @@
|
|
|
402
491
|
<span class="suu-dropdown__chevron" aria-hidden="true"></span>
|
|
403
492
|
</button>
|
|
404
493
|
|
|
494
|
+
{#if name !== undefined && !multiselect}
|
|
495
|
+
<input
|
|
496
|
+
class="suu-visually-hidden"
|
|
497
|
+
type="text"
|
|
498
|
+
name={name}
|
|
499
|
+
value={String(value)}
|
|
500
|
+
required={required}
|
|
501
|
+
disabled={disabled}
|
|
502
|
+
tabindex="-1"
|
|
503
|
+
aria-label={ariaLabel}
|
|
504
|
+
/>
|
|
505
|
+
{/if}
|
|
506
|
+
|
|
405
507
|
{#if open}
|
|
406
508
|
<div
|
|
407
509
|
bind:this={menuElement}
|
|
@@ -24,6 +24,8 @@ declare const Dropdown: $$__sveltets_2_IsomorphicComponent<{
|
|
|
24
24
|
fitViewport?: boolean;
|
|
25
25
|
fitContent?: boolean;
|
|
26
26
|
disabled?: boolean;
|
|
27
|
+
name?: string | undefined;
|
|
28
|
+
required?: boolean;
|
|
27
29
|
width?: string | undefined;
|
|
28
30
|
minWidth?: string | undefined;
|
|
29
31
|
maxWidth?: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dropdown.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/dropdown/Dropdown.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAER,iBAAiB,EAGjB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,8BAA8B,EAC9B,iBAAiB,EACjB,2BAA2B,EAE5B,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"Dropdown.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/dropdown/Dropdown.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAER,iBAAiB,EAGjB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,8BAA8B,EAC9B,iBAAiB,EACjB,2BAA2B,EAE5B,MAAM,YAAY,CAAC;AA+ftB,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,QAAQ;SAVqb,MAAM,GAAG,SAAS;YAAU,iBAAiB;;cAA8C,cAAc,EAAE;mBAAiB,mBAAmB,EAAE,GAAG,SAAS;gBAAc,MAAM,GAAG,SAAS;gBAAc,iBAAiB;gBAAc,iBAAiB;;;;WAAuG,MAAM,GAAG,SAAS;;YAAsC,MAAM,GAAG,SAAS;eAAa,MAAM,GAAG,SAAS;eAAa,MAAM,GAAG,SAAS;gBAAc,MAAM,GAAG,SAAS;;eAAqC,8BAA8B,GAAG,SAAS;qBAAmB,2BAA2B,GAAG,SAAS;;;kBAUz/B,CAAC;AAC5E,KAAK,QAAQ,GAAG,YAAY,CAAC,OAAO,QAAQ,CAAC,CAAC;AAChD,eAAe,QAAQ,CAAC"}
|
package/dist/dropdown/types.d.ts
CHANGED
|
@@ -5,6 +5,8 @@ export type DropdownPlacement = 'auto' | 'up' | 'down';
|
|
|
5
5
|
export type DropdownMenuAlign = 'left' | 'right';
|
|
6
6
|
export interface DropdownOption {
|
|
7
7
|
label: string;
|
|
8
|
+
/** Optional text used for keyboard typeahead matching instead of (or in addition to) the label. */
|
|
9
|
+
searchText?: string;
|
|
8
10
|
value: DropdownValue;
|
|
9
11
|
disabled?: boolean;
|
|
10
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/dropdown/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;AAE5C,MAAM,MAAM,kBAAkB,GAAG,aAAa,EAAE,CAAC;AAEjD,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,kBAAkB,CAAC;AAEnE,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;AAEvD,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEjD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AAED,MAAM,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnF,MAAM,MAAM,0BAA0B,GAAG,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE7F,MAAM,MAAM,8BAA8B,GAAG;IAC5C,cAAc,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D,CAAC,gBAAgB,CAAC,CAAC;AAEpB,MAAM,MAAM,2BAA2B,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/dropdown/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;AAE5C,MAAM,MAAM,kBAAkB,GAAG,aAAa,EAAE,CAAC;AAEjD,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,kBAAkB,CAAC;AAEnE,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;AAEvD,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEjD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,mGAAmG;IACnG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AAED,MAAM,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnF,MAAM,MAAM,0BAA0B,GAAG,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE7F,MAAM,MAAM,8BAA8B,GAAG;IAC5C,cAAc,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D,CAAC,gBAAgB,CAAC,CAAC;AAEpB,MAAM,MAAM,2BAA2B,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC"}
|
|
@@ -561,7 +561,24 @@
|
|
|
561
561
|
if (searchOnExternalValueChange && normalizeDropdownSearchValue(value)) {
|
|
562
562
|
handleExternalValue(value);
|
|
563
563
|
}
|
|
564
|
-
|
|
564
|
+
|
|
565
|
+
const visibilityObserver =
|
|
566
|
+
typeof IntersectionObserver === 'undefined'
|
|
567
|
+
? undefined
|
|
568
|
+
: new IntersectionObserver(([entry]) => {
|
|
569
|
+
if (!entry?.isIntersecting) {
|
|
570
|
+
focused = false;
|
|
571
|
+
showingFocusOptions = false;
|
|
572
|
+
}
|
|
573
|
+
});
|
|
574
|
+
if (inputElement && visibilityObserver) {
|
|
575
|
+
visibilityObserver.observe(inputElement);
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
return () => {
|
|
579
|
+
formElement?.removeEventListener('reset', handleFormReset);
|
|
580
|
+
visibilityObserver?.disconnect();
|
|
581
|
+
};
|
|
565
582
|
});
|
|
566
583
|
</script>
|
|
567
584
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownSearch.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/dropdown-search/DropdownSearch.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAM5D,OAAO,KAAK,EACR,0BAA0B,EAC1B,yBAAyB,EACzB,kBAAkB,EAClB,6BAA6B,EAC7B,yBAAyB,EACzB,qCAAqC,EACrC,wCAAwC,EACxC,oBAAoB,EACrB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"DropdownSearch.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/dropdown-search/DropdownSearch.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAM5D,OAAO,KAAK,EACR,0BAA0B,EAC1B,yBAAyB,EACzB,kBAAkB,EAClB,6BAA6B,EAC7B,yBAAyB,EACzB,qCAAqC,EACrC,wCAAwC,EACxC,oBAAoB,EACrB,MAAM,YAAY,CAAC;AA0oBtB,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,cAAc;;mBAdihC,kBAAkB,GAAG,IAAI;oBAAkB,kBAAkB,EAAE;aAAW,oBAAoB;;;;;;;;;mBAAyR,kBAAkB,EAAE;iBAAe,MAAM,GAAG,SAAS;iBAAe,yBAAyB;SAAO,MAAM,GAAG,SAAS;WAAS,MAAM,GAAG,SAAS;gBAAc,MAAM,GAAG,SAAS;gBAAc,MAAM,GAAG,SAAS;;eAAyC,UAAU;oBAAkB,MAAM,GAAG,SAAS;kBAAgB,MAAM,GAAG,SAAS;iBAAe,MAAM,GAAG,SAAS;;YAA4E,MAAM,GAAG,SAAS;eAAa,MAAM,GAAG,SAAS;eAAa,MAAM,GAAG,SAAS;;8BAA8E,qCAAqC,GAChhE,SAAS;mBAAiB,6BAA6B;eAAe,CAAC,CAAC,MAAM,EAAE,0BAA0B,KAAK,IAAI,CAAC,GACpH,SAAS;eAAa,CAAC,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,CAAC,GAAG,SAAS;iBAAe,CAAC,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,CAAC,GAAG,SAAS;4BAA4B,wCAAwC,GACzM,SAAS;qBAAqB,CAAC,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC,GACtE,SAAS;kBAAgB,CAAC,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,SAAS;cAAY,CAAC,CAAC,MAAM,EAAE,yBAAyB,KAAK,IAAI,CAAC,GAAG,SAAS;;;;;kBAU1C,CAAC;AAClF,KAAK,cAAc,GAAG,YAAY,CAAC,OAAO,cAAc,CAAC,CAAC;AAC5D,eAAe,cAAc,CAAC"}
|
package/dist/style.css
CHANGED
package/package.json
CHANGED