@k2b/ui 0.11.0 → 0.12.0
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/dist/browser/content/FileView.js +203 -136
- package/dist/browser/content/FileView.js.map +1 -1
- package/dist/browser/content/markdown-title.js +52 -0
- package/dist/browser/content/markdown-title.js.map +1 -0
- package/dist/browser/feedback/index.js.map +1 -1
- package/dist/browser/feedback/prompts.js +18 -19
- package/dist/browser/feedback/prompts.js.map +1 -1
- package/dist/browser/feedback/toast.js +363 -122
- package/dist/browser/feedback/toast.js.map +1 -1
- package/dist/browser/inputs/DatePicker.js +263 -222
- package/dist/browser/inputs/DatePicker.js.map +1 -1
- package/dist/browser/inputs/MultiSelectInput.js +139 -105
- package/dist/browser/inputs/MultiSelectInput.js.map +1 -1
- package/dist/browser/inputs/NumberInput.js +209 -122
- package/dist/browser/inputs/NumberInput.js.map +1 -1
- package/dist/browser/inputs/Select.js +184 -92
- package/dist/browser/inputs/Select.js.map +1 -1
- package/dist/browser/inputs/index.js.map +1 -1
- package/dist/browser/intl/messages.js +4 -0
- package/dist/browser/intl/messages.js.map +1 -1
- package/dist/browser/layout/DetailPanel.js +2 -1
- package/dist/browser/layout/DetailPanel.js.map +1 -1
- package/dist/browser/layout/Navigation.js +1 -0
- package/dist/browser/layout/Navigation.js.map +1 -1
- package/dist/browser/layout/PanelDialog.js +1 -0
- package/dist/browser/layout/PanelDialog.js.map +1 -1
- package/dist/browser/layout/Settings.js +2 -2
- package/dist/browser/layout/Settings.js.map +1 -1
- package/dist/ssr/content/FileView.js +141 -81
- package/dist/ssr/content/FileView.js.map +1 -1
- package/dist/ssr/content/markdown-title.js +52 -0
- package/dist/ssr/content/markdown-title.js.map +1 -0
- package/dist/ssr/feedback/index.js.map +1 -1
- package/dist/ssr/feedback/prompts.js +1 -1
- package/dist/ssr/feedback/prompts.js.map +1 -1
- package/dist/ssr/feedback/toast.js +363 -122
- package/dist/ssr/feedback/toast.js.map +1 -1
- package/dist/ssr/inputs/DatePicker.js +78 -52
- package/dist/ssr/inputs/DatePicker.js.map +1 -1
- package/dist/ssr/inputs/MultiSelectInput.js +52 -32
- package/dist/ssr/inputs/MultiSelectInput.js.map +1 -1
- package/dist/ssr/inputs/NumberInput.js +93 -40
- package/dist/ssr/inputs/NumberInput.js.map +1 -1
- package/dist/ssr/inputs/Select.js +108 -29
- package/dist/ssr/inputs/Select.js.map +1 -1
- package/dist/ssr/inputs/index.js.map +1 -1
- package/dist/ssr/intl/messages.js +4 -0
- package/dist/ssr/intl/messages.js.map +1 -1
- package/dist/ssr/layout/DetailPanel.js +2 -1
- package/dist/ssr/layout/DetailPanel.js.map +1 -1
- package/dist/ssr/layout/Navigation.js +1 -0
- package/dist/ssr/layout/Navigation.js.map +1 -1
- package/dist/ssr/layout/PanelDialog.js +1 -0
- package/dist/ssr/layout/PanelDialog.js.map +1 -1
- package/dist/ssr/layout/Settings.js +2 -2
- package/dist/ssr/layout/Settings.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/types/content/FileView.d.ts +11 -1
- package/dist/types/content/markdown-title.d.ts +9 -0
- package/dist/types/feedback/index.d.ts +1 -1
- package/dist/types/feedback/toast.d.ts +7 -0
- package/dist/types/inputs/DatePicker.d.ts +11 -2
- package/dist/types/inputs/MultiSelectInput.d.ts +5 -1
- package/dist/types/inputs/NumberInput.d.ts +14 -0
- package/dist/types/inputs/Select.d.ts +10 -0
- package/dist/types/inputs/index.d.ts +1 -1
- package/dist/types/intl/messages.d.ts +2 -0
- package/dist/types/layout/Settings.d.ts +2 -2
- package/package.json +1 -1
|
@@ -25,16 +25,17 @@ var _tmpl$ = /*#__PURE__*/_$template(`<span class=k2b-multi-select-trigger__more
|
|
|
25
25
|
_tmpl$7 = /*#__PURE__*/_$template(`<div class=k2b-choice-status><i class="ti ti-loader-2 k2b-spin"aria-hidden=true></i><span>`),
|
|
26
26
|
_tmpl$8 = /*#__PURE__*/_$template(`<div class=k2b-choice-control><div class=k2b-multi-select-trigger role=combobox aria-haspopup=listbox><!$><!/><!$><!/></div><!$><!/><div popover=manual class=k2b-choice-popover role=group><!$><!/><!$><!/><div class=k2b-choice-options role=listbox aria-multiselectable=true><!$><!/><!$><!/><!$><!/></div></div><!$><!/>`),
|
|
27
27
|
_tmpl$9 = /*#__PURE__*/_$template(`<span class=k2b-choice-trigger__value data-placeholder=true>`),
|
|
28
|
-
_tmpl$0 = /*#__PURE__*/_$template(`<
|
|
29
|
-
_tmpl$1 = /*#__PURE__*/_$template(`<span
|
|
30
|
-
_tmpl$10 = /*#__PURE__*/_$template(`<span
|
|
31
|
-
_tmpl$11 = /*#__PURE__*/_$template(`<
|
|
32
|
-
_tmpl$12 = /*#__PURE__*/_$template(`<div class=k2b-choice-status>`),
|
|
33
|
-
_tmpl$13 = /*#__PURE__*/_$template(`<
|
|
34
|
-
_tmpl$14 = /*#__PURE__*/_$template(`<span class=k2b-choice-
|
|
35
|
-
_tmpl$15 = /*#__PURE__*/_$template(`<
|
|
36
|
-
_tmpl$16 = /*#__PURE__*/_$template(`<
|
|
37
|
-
_tmpl$17 = /*#__PURE__*/_$template(`<
|
|
28
|
+
_tmpl$0 = /*#__PURE__*/_$template(`<button type=button tabindex=-1><i class="ti ti-x"aria-hidden=true>`),
|
|
29
|
+
_tmpl$1 = /*#__PURE__*/_$template(`<span class=k2b-choice-pill><!$><!/><!$><!/>`),
|
|
30
|
+
_tmpl$10 = /*#__PURE__*/_$template(`<span>`),
|
|
31
|
+
_tmpl$11 = /*#__PURE__*/_$template(`<span class=k2b-choice-pill__content>`),
|
|
32
|
+
_tmpl$12 = /*#__PURE__*/_$template(`<div class=k2b-choice-status data-tone=danger><span></span><button type=button>`),
|
|
33
|
+
_tmpl$13 = /*#__PURE__*/_$template(`<div class=k2b-choice-status>`),
|
|
34
|
+
_tmpl$14 = /*#__PURE__*/_$template(`<button type=button class=k2b-choice-option role=option><span class=k2b-choice-option__checkbox aria-hidden=true><i class="ti ti-check"></i></span><!$><!/><span class=k2b-choice-option__content>`),
|
|
35
|
+
_tmpl$15 = /*#__PURE__*/_$template(`<span class=k2b-choice-dot aria-hidden=true>`),
|
|
36
|
+
_tmpl$16 = /*#__PURE__*/_$template(`<strong>`),
|
|
37
|
+
_tmpl$17 = /*#__PURE__*/_$template(`<small>`),
|
|
38
|
+
_tmpl$18 = /*#__PURE__*/_$template(`<input type=hidden>`);
|
|
38
39
|
import { createEffect, createMemo, createSignal, For, onCleanup, onMount, Show } from "solid-js";
|
|
39
40
|
import { colorTintStyle, normalizeHexColor } from "../internal/color";
|
|
40
41
|
import { createFieldMeta, Field, fieldControlAria } from "../internal/field";
|
|
@@ -98,7 +99,8 @@ export function MultiSelectInput(props) {
|
|
|
98
99
|
value,
|
|
99
100
|
label: value
|
|
100
101
|
}));
|
|
101
|
-
const
|
|
102
|
+
const plain = () => props.appearance === "plain";
|
|
103
|
+
const hasClearAction = () => Boolean(props.clearable && selected().length > 0 && !props.disabled && !plain());
|
|
102
104
|
const selectedValues = createMemo(() => new Set(values()));
|
|
103
105
|
const popover = createChoicePopover(() => Boolean(props.disabled));
|
|
104
106
|
const focusedOption = () => visibleOptions()[focusedIndex()];
|
|
@@ -115,6 +117,12 @@ export function MultiSelectInput(props) {
|
|
|
115
117
|
const fitValues = () => {
|
|
116
118
|
const values = valuesRef;
|
|
117
119
|
if (!values?.isConnected) return;
|
|
120
|
+
// Plain pills wrap, so every one stays visible.
|
|
121
|
+
if (plain()) {
|
|
122
|
+
values.style.width = "";
|
|
123
|
+
setVisibleCount(Number.POSITIVE_INFINITY);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
118
126
|
// Measuring releases a truncated first pill to its natural width; the
|
|
119
127
|
// browser paints only the final state.
|
|
120
128
|
values.dataset.measuring = "true";
|
|
@@ -286,11 +294,20 @@ export function MultiSelectInput(props) {
|
|
|
286
294
|
return selected().length > 0;
|
|
287
295
|
},
|
|
288
296
|
get fallback() {
|
|
289
|
-
return (
|
|
297
|
+
return [_$createComponent(Show, {
|
|
298
|
+
get when() {
|
|
299
|
+
return props.placeholderIcon;
|
|
300
|
+
},
|
|
301
|
+
children: icon => (() => {
|
|
302
|
+
var _el$42 = _$getNextElement(_tmpl$3);
|
|
303
|
+
_$effect(() => _$className(_el$42, `${icon()} k2b-choice-trigger__placeholder-icon`));
|
|
304
|
+
return _el$42;
|
|
305
|
+
})()
|
|
306
|
+
}), (() => {
|
|
290
307
|
var _el$41 = _$getNextElement(_tmpl$9);
|
|
291
308
|
_$insert(_el$41, () => props.placeholder ?? messages().select);
|
|
292
309
|
return _el$41;
|
|
293
|
-
})();
|
|
310
|
+
})()];
|
|
294
311
|
},
|
|
295
312
|
get children() {
|
|
296
313
|
var _el$3 = _$getNextElement(_tmpl$2),
|
|
@@ -305,11 +322,12 @@ export function MultiSelectInput(props) {
|
|
|
305
322
|
return selected();
|
|
306
323
|
},
|
|
307
324
|
children: (option, index) => (() => {
|
|
308
|
-
var _el$
|
|
309
|
-
_el$
|
|
310
|
-
[_el$
|
|
311
|
-
_el$
|
|
312
|
-
|
|
325
|
+
var _el$43 = _$getNextElement(_tmpl$1),
|
|
326
|
+
_el$45 = _el$43.firstChild,
|
|
327
|
+
[_el$46, _co$11] = _$getNextMarker(_el$45.nextSibling),
|
|
328
|
+
_el$47 = _el$46.nextSibling,
|
|
329
|
+
[_el$48, _co$12] = _$getNextMarker(_el$47.nextSibling);
|
|
330
|
+
_$insert(_el$43, _$createComponent(Show, {
|
|
313
331
|
get when() {
|
|
314
332
|
return props.renderValue;
|
|
315
333
|
},
|
|
@@ -319,54 +337,67 @@ export function MultiSelectInput(props) {
|
|
|
319
337
|
return option.icon;
|
|
320
338
|
},
|
|
321
339
|
children: icon => (() => {
|
|
322
|
-
var _el$
|
|
323
|
-
_$effect(() => _$className(_el$
|
|
324
|
-
return _el$
|
|
340
|
+
var _el$50 = _$getNextElement(_tmpl$3);
|
|
341
|
+
_$effect(() => _$className(_el$50, icon()));
|
|
342
|
+
return _el$50;
|
|
325
343
|
})()
|
|
326
344
|
}), (() => {
|
|
327
|
-
var _el$
|
|
328
|
-
_$insert(_el$
|
|
329
|
-
return _el$
|
|
345
|
+
var _el$49 = _$getNextElement(_tmpl$10);
|
|
346
|
+
_$insert(_el$49, () => option.label);
|
|
347
|
+
return _el$49;
|
|
330
348
|
})()];
|
|
331
349
|
},
|
|
332
350
|
children: render => (() => {
|
|
333
|
-
var _el$
|
|
334
|
-
_$insert(_el$
|
|
335
|
-
return _el$
|
|
351
|
+
var _el$51 = _$getNextElement(_tmpl$11);
|
|
352
|
+
_$insert(_el$51, () => render()(option));
|
|
353
|
+
return _el$51;
|
|
336
354
|
})()
|
|
337
|
-
}), _el$
|
|
338
|
-
_el$43
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
355
|
+
}), _el$46, _co$11);
|
|
356
|
+
_$insert(_el$43, _$createComponent(Show, {
|
|
357
|
+
get when() {
|
|
358
|
+
return !plain();
|
|
359
|
+
},
|
|
360
|
+
get children() {
|
|
361
|
+
var _el$44 = _$getNextElement(_tmpl$0);
|
|
362
|
+
_el$44.$$click = event => {
|
|
363
|
+
event.stopPropagation();
|
|
364
|
+
remove(option.value);
|
|
365
|
+
};
|
|
366
|
+
_$effect(_p$ => {
|
|
367
|
+
var _v$9 = messages().removeNamed({
|
|
368
|
+
name: option.label
|
|
369
|
+
}),
|
|
370
|
+
_v$0 = props.disabled;
|
|
371
|
+
_v$9 !== _p$.e && _$setAttribute(_el$44, "aria-label", _p$.e = _v$9);
|
|
372
|
+
_v$0 !== _p$.t && _$setProperty(_el$44, "disabled", _p$.t = _v$0);
|
|
373
|
+
return _p$;
|
|
374
|
+
}, {
|
|
375
|
+
e: undefined,
|
|
376
|
+
t: undefined
|
|
377
|
+
});
|
|
378
|
+
_$runHydrationEvents();
|
|
379
|
+
return _el$44;
|
|
380
|
+
}
|
|
381
|
+
}), _el$48, _co$12);
|
|
342
382
|
_$effect(_p$ => {
|
|
343
|
-
var _v$
|
|
344
|
-
_v$
|
|
345
|
-
_v$
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
_v$10 = props.disabled;
|
|
350
|
-
_p$.e = _$style(_el$42, _v$8, _p$.e);
|
|
351
|
-
_v$9 !== _p$.t && _$setAttribute(_el$42, "title", _p$.t = _v$9);
|
|
352
|
-
_v$0 !== _p$.a && _$setAttribute(_el$42, "data-hidden", _p$.a = _v$0);
|
|
353
|
-
_v$1 !== _p$.o && _$setAttribute(_el$43, "aria-label", _p$.o = _v$1);
|
|
354
|
-
_v$10 !== _p$.i && _$setProperty(_el$43, "disabled", _p$.i = _v$10);
|
|
383
|
+
var _v$1 = colorTintStyle(option.color),
|
|
384
|
+
_v$10 = option.label,
|
|
385
|
+
_v$11 = index() >= visibleCount() ? "true" : undefined;
|
|
386
|
+
_p$.e = _$style(_el$43, _v$1, _p$.e);
|
|
387
|
+
_v$10 !== _p$.t && _$setAttribute(_el$43, "title", _p$.t = _v$10);
|
|
388
|
+
_v$11 !== _p$.a && _$setAttribute(_el$43, "data-hidden", _p$.a = _v$11);
|
|
355
389
|
return _p$;
|
|
356
390
|
}, {
|
|
357
391
|
e: undefined,
|
|
358
392
|
t: undefined,
|
|
359
|
-
a: undefined
|
|
360
|
-
o: undefined,
|
|
361
|
-
i: undefined
|
|
393
|
+
a: undefined
|
|
362
394
|
});
|
|
363
|
-
|
|
364
|
-
return _el$42;
|
|
395
|
+
return _el$43;
|
|
365
396
|
})()
|
|
366
397
|
}), _el$1, _co$2);
|
|
367
398
|
_$insert(_el$3, _$createComponent(Show, {
|
|
368
399
|
get when() {
|
|
369
|
-
return selected().length > 1;
|
|
400
|
+
return _$memo(() => selected().length > 1)() && !plain();
|
|
370
401
|
},
|
|
371
402
|
get children() {
|
|
372
403
|
var _el$4 = _$getNextElement(_tmpl$),
|
|
@@ -493,14 +524,14 @@ export function MultiSelectInput(props) {
|
|
|
493
524
|
return asyncOptions.error();
|
|
494
525
|
},
|
|
495
526
|
children: message => (() => {
|
|
496
|
-
var _el$
|
|
497
|
-
_el$
|
|
498
|
-
_el$
|
|
499
|
-
_$insert(_el$
|
|
500
|
-
_$addEventListener(_el$
|
|
501
|
-
_$insert(_el$
|
|
527
|
+
var _el$52 = _$getNextElement(_tmpl$12),
|
|
528
|
+
_el$53 = _el$52.firstChild,
|
|
529
|
+
_el$54 = _el$53.nextSibling;
|
|
530
|
+
_$insert(_el$53, message);
|
|
531
|
+
_$addEventListener(_el$54, "click", asyncOptions.retry, true);
|
|
532
|
+
_$insert(_el$54, () => props.retryLabel ?? messages().retry);
|
|
502
533
|
_$runHydrationEvents();
|
|
503
|
-
return _el$
|
|
534
|
+
return _el$52;
|
|
504
535
|
})()
|
|
505
536
|
}), _el$28, _co$6);
|
|
506
537
|
_$insert(_el$23, _$createComponent(Show, {
|
|
@@ -525,24 +556,24 @@ export function MultiSelectInput(props) {
|
|
|
525
556
|
return _$memo(() => !!!asyncOptions.loading())() && !asyncOptions.error();
|
|
526
557
|
},
|
|
527
558
|
get children() {
|
|
528
|
-
var _el$
|
|
529
|
-
_$insert(_el$
|
|
559
|
+
var _el$55 = _$getNextElement(_tmpl$13);
|
|
560
|
+
_$insert(_el$55, (() => {
|
|
530
561
|
var _c$ = _$memo(() => !!(isAsync() || query()));
|
|
531
562
|
return () => _c$() ? props.noResultsLabel ?? messages().noResults : props.emptyLabel ?? messages().noOptions;
|
|
532
563
|
})());
|
|
533
|
-
return _el$
|
|
564
|
+
return _el$55;
|
|
534
565
|
}
|
|
535
566
|
});
|
|
536
567
|
},
|
|
537
568
|
children: (option, index) => (() => {
|
|
538
|
-
var _el$
|
|
539
|
-
_el$
|
|
540
|
-
_el$
|
|
541
|
-
[_el$
|
|
542
|
-
_el$
|
|
543
|
-
_el$
|
|
544
|
-
_el$
|
|
545
|
-
_$insert(_el$
|
|
569
|
+
var _el$56 = _$getNextElement(_tmpl$14),
|
|
570
|
+
_el$57 = _el$56.firstChild,
|
|
571
|
+
_el$59 = _el$57.nextSibling,
|
|
572
|
+
[_el$60, _co$13] = _$getNextMarker(_el$59.nextSibling),
|
|
573
|
+
_el$58 = _el$60.nextSibling;
|
|
574
|
+
_el$56.$$click = () => toggleOption(option);
|
|
575
|
+
_el$56.$$pointermove = () => !option.disabled && setFocusedIndex(index());
|
|
576
|
+
_$insert(_el$56, _$createComponent(Show, {
|
|
546
577
|
get when() {
|
|
547
578
|
return option.icon;
|
|
548
579
|
},
|
|
@@ -552,60 +583,60 @@ export function MultiSelectInput(props) {
|
|
|
552
583
|
return normalizeHexColor(option.color);
|
|
553
584
|
},
|
|
554
585
|
children: color => (() => {
|
|
555
|
-
var _el$
|
|
556
|
-
_$effect(_$p => _$setStyleProperty(_el$
|
|
557
|
-
return _el$
|
|
586
|
+
var _el$61 = _$getNextElement(_tmpl$15);
|
|
587
|
+
_$effect(_$p => _$setStyleProperty(_el$61, "background", color()));
|
|
588
|
+
return _el$61;
|
|
558
589
|
})()
|
|
559
590
|
});
|
|
560
591
|
},
|
|
561
592
|
children: icon => (() => {
|
|
562
|
-
var _el$
|
|
593
|
+
var _el$62 = _$getNextElement(_tmpl$3);
|
|
563
594
|
_$effect(_p$ => {
|
|
564
|
-
var _v$
|
|
565
|
-
_v$
|
|
566
|
-
_v$
|
|
567
|
-
_p$.t = _$style(_el$
|
|
595
|
+
var _v$17 = icon(),
|
|
596
|
+
_v$18 = iconColor(option.color);
|
|
597
|
+
_v$17 !== _p$.e && _$className(_el$62, _p$.e = _v$17);
|
|
598
|
+
_p$.t = _$style(_el$62, _v$18, _p$.t);
|
|
568
599
|
return _p$;
|
|
569
600
|
}, {
|
|
570
601
|
e: undefined,
|
|
571
602
|
t: undefined
|
|
572
603
|
});
|
|
573
|
-
return _el$
|
|
604
|
+
return _el$62;
|
|
574
605
|
})()
|
|
575
|
-
}), _el$
|
|
576
|
-
_$insert(_el$
|
|
606
|
+
}), _el$60, _co$13);
|
|
607
|
+
_$insert(_el$58, _$createComponent(Show, {
|
|
577
608
|
get when() {
|
|
578
609
|
return props.renderOption;
|
|
579
610
|
},
|
|
580
611
|
get fallback() {
|
|
581
612
|
return [(() => {
|
|
582
|
-
var _el$
|
|
583
|
-
_$insert(_el$
|
|
584
|
-
return _el$
|
|
613
|
+
var _el$63 = _$getNextElement(_tmpl$16);
|
|
614
|
+
_$insert(_el$63, () => option.label);
|
|
615
|
+
return _el$63;
|
|
585
616
|
})(), _$createComponent(Show, {
|
|
586
617
|
get when() {
|
|
587
618
|
return option.description;
|
|
588
619
|
},
|
|
589
620
|
children: description => (() => {
|
|
590
|
-
var _el$
|
|
591
|
-
_$insert(_el$
|
|
592
|
-
return _el$
|
|
621
|
+
var _el$64 = _$getNextElement(_tmpl$17);
|
|
622
|
+
_$insert(_el$64, description);
|
|
623
|
+
return _el$64;
|
|
593
624
|
})()
|
|
594
625
|
})];
|
|
595
626
|
},
|
|
596
627
|
children: render => render()(option)
|
|
597
628
|
}));
|
|
598
629
|
_$effect(_p$ => {
|
|
599
|
-
var _v$
|
|
600
|
-
_v$
|
|
601
|
-
_v$
|
|
602
|
-
_v$
|
|
603
|
-
_v$
|
|
604
|
-
_v$
|
|
605
|
-
_v$
|
|
606
|
-
_v$
|
|
607
|
-
_v$
|
|
608
|
-
_v$
|
|
630
|
+
var _v$12 = `${listboxId}-${index()}`,
|
|
631
|
+
_v$13 = option.label,
|
|
632
|
+
_v$14 = isSelected(option.value),
|
|
633
|
+
_v$15 = index() === focusedIndex() ? "true" : undefined,
|
|
634
|
+
_v$16 = option.disabled;
|
|
635
|
+
_v$12 !== _p$.e && _$setAttribute(_el$56, "id", _p$.e = _v$12);
|
|
636
|
+
_v$13 !== _p$.t && _$setAttribute(_el$56, "aria-label", _p$.t = _v$13);
|
|
637
|
+
_v$14 !== _p$.a && _$setAttribute(_el$56, "aria-selected", _p$.a = _v$14);
|
|
638
|
+
_v$15 !== _p$.o && _$setAttribute(_el$56, "data-focused", _p$.o = _v$15);
|
|
639
|
+
_v$16 !== _p$.i && _$setProperty(_el$56, "disabled", _p$.i = _v$16);
|
|
609
640
|
return _p$;
|
|
610
641
|
}, {
|
|
611
642
|
e: undefined,
|
|
@@ -615,7 +646,7 @@ export function MultiSelectInput(props) {
|
|
|
615
646
|
i: undefined
|
|
616
647
|
});
|
|
617
648
|
_$runHydrationEvents();
|
|
618
|
-
return _el$
|
|
649
|
+
return _el$56;
|
|
619
650
|
})()
|
|
620
651
|
}), _el$32, _co$8);
|
|
621
652
|
_$insert(_el$, _$createComponent(Show, {
|
|
@@ -623,21 +654,24 @@ export function MultiSelectInput(props) {
|
|
|
623
654
|
return props.name;
|
|
624
655
|
},
|
|
625
656
|
children: name => (() => {
|
|
626
|
-
var _el$
|
|
627
|
-
_$effect(() => _$setAttribute(_el$
|
|
628
|
-
_$effect(() => _$setProperty(_el$
|
|
629
|
-
return _el$
|
|
657
|
+
var _el$65 = _$getNextElement(_tmpl$18);
|
|
658
|
+
_$effect(() => _$setAttribute(_el$65, "name", name()));
|
|
659
|
+
_$effect(() => _$setProperty(_el$65, "value", values().join(",")));
|
|
660
|
+
return _el$65;
|
|
630
661
|
})()
|
|
631
662
|
}), _el$40, _co$10);
|
|
632
663
|
_$effect(_p$ => {
|
|
633
|
-
var _v$6 =
|
|
634
|
-
_v$7 =
|
|
635
|
-
|
|
636
|
-
_v$
|
|
664
|
+
var _v$6 = props.appearance ?? "field",
|
|
665
|
+
_v$7 = error() ? "true" : undefined,
|
|
666
|
+
_v$8 = typeof props.label === "string" ? props.label : props["aria-label"] ?? messages().options;
|
|
667
|
+
_v$6 !== _p$.e && _$setAttribute(_el$, "data-appearance", _p$.e = _v$6);
|
|
668
|
+
_v$7 !== _p$.t && _$setAttribute(_el$, "data-invalid", _p$.t = _v$7);
|
|
669
|
+
_v$8 !== _p$.a && _$setAttribute(_el$18, "aria-label", _p$.a = _v$8);
|
|
637
670
|
return _p$;
|
|
638
671
|
}, {
|
|
639
672
|
e: undefined,
|
|
640
|
-
t: undefined
|
|
673
|
+
t: undefined,
|
|
674
|
+
a: undefined
|
|
641
675
|
});
|
|
642
676
|
_$runHydrationEvents();
|
|
643
677
|
return _el$;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["inputs/MultiSelectInput.tsx"],"sourcesContent":["import { createEffect, createMemo, createSignal, For, type JSX, onCleanup, onMount, Show } from \"solid-js\";\nimport { colorTintStyle, normalizeHexColor } from \"../internal/color\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { ChoiceGroups } from \"./ChoiceGroups\";\nimport {\n type ChoiceOption,\n createChoiceLoader,\n createChoicePopover,\n filterChoiceOptions,\n fitChoicePills,\n nextEnabledChoiceIndex,\n} from \"./choice\";\nimport type { ValueFieldProps } from \"./field-contract\";\nimport { commitFieldValue, resolveMaybeAccessor } from \"./field-contract\";\nimport type { SelectGroup } from \"./Select\";\n\nexport type MultiSelectOption =\n | string\n | { id: string; label?: string; description?: string; icon?: string; color?: string; groups?: readonly string[] }\n | ChoiceOption<string>;\ntype NormalizedOption = ChoiceOption<string>;\nexport type MultiSelectFetchDataFn = (query: string, signal: AbortSignal, group: string | null) => Promise<MultiSelectOption[]>;\n\nexport type MultiSelectInputProps = ValueFieldProps<string[]> & {\n options?: MultiSelectOption[];\n fetchData?: MultiSelectFetchDataFn;\n selectedOptions?: () => MultiSelectOption[];\n placeholder?: string;\n icon?: string;\n activeIcon?: string;\n fetchDebounceMs?: number;\n debounceMs?: number;\n loadOptions?: (query: string, signal: AbortSignal, group: string | null) => Promise<readonly ChoiceOption<string>[]>;\n groups?: readonly SelectGroup[];\n defaultGroup?: string;\n groupsAriaLabel?: string;\n allGroupLabel?: string;\n searchable?: boolean;\n clearable?: boolean;\n name?: string;\n renderOption?: (option: ChoiceOption<string>) => JSX.Element;\n renderValue?: (option: ChoiceOption<string>) => JSX.Element;\n searchPlaceholder?: string;\n loadingLabel?: string;\n noResultsLabel?: string;\n emptyLabel?: string;\n retryLabel?: string;\n clearLabel?: string;\n};\n\n/** Cloud tints the option icon with the option color instead of adding a dot. */\nconst iconColor = (color: string | undefined): JSX.CSSProperties | undefined => {\n const normalized = normalizeHexColor(color);\n return normalized ? { color: normalized } : undefined;\n};\n\nconst normalize = (option: MultiSelectOption): NormalizedOption =>\n typeof option === \"string\"\n ? { value: option, label: option }\n : \"value\" in option\n ? option\n : { ...option, value: option.id, label: option.label || option.id };\n\nexport function MultiSelectInput(props: MultiSelectInputProps): JSX.Element {\n const messages = useUiMessages();\n const meta = createFieldMeta(props.id);\n const listboxId = `${meta.controlId}-listbox`;\n const [query, setQuery] = createSignal(\"\");\n const [focusedIndex, setFocusedIndex] = createSignal(-1);\n const [cache, setCache] = createSignal<Record<string, NormalizedOption>>({});\n const [selectedGroup, setSelectedGroup] = createSignal<string | null>(props.defaultGroup ?? null);\n let searchRef: HTMLInputElement | undefined;\n\n const values = () => resolveMaybeAccessor(props.value) ?? [];\n const error = () => resolveMaybeAccessor(props.error);\n const activeGroup = createMemo(() => {\n const current = selectedGroup();\n return current && props.groups?.some((group) => group.value === current) ? current : null;\n });\n const groupChoices = createMemo(() => [{ value: null, label: props.allGroupLabel ?? messages().all }, ...(props.groups ?? [])]);\n const asyncOptions = createChoiceLoader(\n () =>\n props.fetchData\n ? async (query, signal) => (await props.fetchData!(query, signal, activeGroup())).map(normalize)\n : props.loadOptions\n ? (query, signal) => props.loadOptions!(query, signal, activeGroup())\n : undefined,\n () => props.fetchDebounceMs ?? props.debounceMs ?? 200,\n );\n const isAsync = () => Boolean(props.fetchData || props.loadOptions);\n const sourceOptions = createMemo(() => (isAsync() ? asyncOptions.options() : (props.options ?? []).map(normalize)));\n const groupedOptions = createMemo(() => {\n const group = activeGroup();\n return !isAsync() && group ? sourceOptions().filter((option) => option.groups?.includes(group)) : sourceOptions();\n });\n // Cloud's multi-select always renders its search field, and filters a static\n // option list client-side while a remote loader filters server-side.\n const searchable = () => isAsync() || (props.searchable ?? true);\n const visibleOptions = createMemo(() =>\n isAsync() ? groupedOptions() : filterChoiceOptions(groupedOptions(), searchable() ? query() : \"\"),\n );\n const optionByValue = createMemo(() => {\n const options = new Map<string, NormalizedOption>();\n for (const option of Object.values(cache())) options.set(option.value, option);\n for (const option of (props.selectedOptions?.() ?? []).map(normalize)) options.set(option.value, option);\n for (const option of sourceOptions()) options.set(option.value, option);\n return options;\n });\n const selected = createMemo(() => values().map((value) => optionByValue().get(value) ?? ({ value, label: value } as NormalizedOption)));\n const hasClearAction = () => Boolean(props.clearable && selected().length > 0 && !props.disabled);\n const selectedValues = createMemo(() => new Set(values()));\n const popover = createChoicePopover(() => Boolean(props.disabled));\n const focusedOption = () => visibleOptions()[focusedIndex()];\n\n // Pills that do not fit the trigger collapse into a \"+N\" summary. Until the\n // browser measures them (server HTML, hidden containers) every pill stays.\n let valuesRef: HTMLSpanElement | undefined;\n let moreRef: HTMLSpanElement | undefined;\n const [visibleCount, setVisibleCount] = createSignal(Number.POSITIVE_INFINITY);\n const hiddenOptions = createMemo(() => selected().slice(visibleCount()));\n // While every pill fits, the invisible summary carries the largest count it\n // could show, so measuring it reserves enough room for the real one.\n const moreCount = () => hiddenOptions().length || selected().length - 1;\n const fitValues = () => {\n const values = valuesRef;\n if (!values?.isConnected) return;\n // Measuring releases a truncated first pill to its natural width; the\n // browser paints only the final state.\n values.dataset.measuring = \"true\";\n const pills = Array.from(\n values.querySelectorAll<HTMLElement>(\":scope > .k2b-choice-pill\"),\n (pill) => pill.getBoundingClientRect().width,\n );\n const fit = fitChoicePills(\n values.getBoundingClientRect().width,\n pills,\n Number.parseFloat(getComputedStyle(values).columnGap) || 0,\n moreRef?.isConnected ? moreRef.getBoundingClientRect().width : 0,\n );\n delete values.dataset.measuring;\n // Hidden pills leave the flow. While any are hidden the strip keeps the\n // whole row as its preferred width, so a container sized by its content\n // does not shrink with the collapse and grows back once it has room. The\n // strip still flexes to the trigger's width.\n values.style.width = fit.visible < pills.length ? `${fit.rowWidth}px` : \"\";\n setVisibleCount(fit.visible);\n };\n const resizeObserver = typeof ResizeObserver === \"undefined\" ? undefined : new ResizeObserver(() => fitValues());\n onCleanup(() => resizeObserver?.disconnect());\n createEffect(() => {\n selected();\n fitValues();\n });\n onMount(() => {\n if (\"fonts\" in document) void document.fonts.ready.then(fitValues);\n });\n\n const emit = (next: readonly string[]) => {\n const unique = [...new Set(next)];\n commitFieldValue(props, unique);\n };\n const isSelected = (value: string) => selectedValues().has(value);\n const focusFirst = () => setFocusedIndex(nextEnabledChoiceIndex(visibleOptions(), -1, 1));\n const chooseGroup = (group: string | null) => {\n if (group === activeGroup()) return;\n setSelectedGroup(group);\n focusFirst();\n if (isAsync()) asyncOptions.load(query(), true);\n };\n const open = () => {\n if (props.disabled) return;\n setQuery(\"\");\n if (isAsync()) asyncOptions.load(\"\", true);\n focusFirst();\n popover.show();\n if (searchable()) queueMicrotask(() => searchRef?.focus());\n };\n const close = (restoreFocus = false) => {\n asyncOptions.cancel();\n setQuery(\"\");\n setFocusedIndex(-1);\n popover.hide(restoreFocus);\n };\n const toggleOption = (option: NormalizedOption) => {\n if (option.disabled) return;\n setCache({ ...cache(), [option.value]: option });\n emit(isSelected(option.value) ? values().filter((value) => value !== option.value) : [...values(), option.value]);\n };\n const remove = (value: string) => emit(values().filter((item) => item !== value));\n const move = (direction: 1 | -1) => {\n setFocusedIndex(nextEnabledChoiceIndex(visibleOptions(), focusedIndex(), direction));\n };\n const handleKeyDown = (event: KeyboardEvent) => {\n const inToolbar = Boolean((event.target as HTMLElement | null)?.closest?.(\".k2b-choice-toolbar\"));\n if (inToolbar && event.key !== \"Escape\" && event.key !== \"Tab\") return;\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n if (!popover.open()) open();\n else move(event.key === \"ArrowDown\" ? 1 : -1);\n return;\n }\n if ((event.key === \"Enter\" || event.key === \" \") && !popover.open()) {\n event.preventDefault();\n open();\n return;\n }\n if (event.key === \"Enter\" && popover.open()) {\n const option = focusedOption();\n if (option) {\n event.preventDefault();\n toggleOption(option);\n }\n return;\n }\n if (event.key === \"Backspace\" && popover.open() && !query() && values().length > 0) {\n event.preventDefault();\n const last = values().at(-1);\n if (last) remove(last);\n return;\n }\n if (event.key === \"Escape\" && popover.open()) {\n event.preventDefault();\n close(true);\n } else if (event.key === \"Tab\" && popover.open()) {\n close();\n }\n };\n\n return (\n <Field\n class={props.class}\n label={props.label}\n description={props.description}\n error={error()}\n meta={meta}\n labelFor={false}\n required={props.required}\n disabled={props.disabled}\n >\n <div class=\"k2b-choice-control\" data-invalid={error() ? \"true\" : undefined}>\n <div\n ref={(element) => {\n popover.setTrigger(element);\n resizeObserver?.observe(element);\n }}\n id={meta.controlId}\n class=\"k2b-multi-select-trigger\"\n role=\"combobox\"\n tabIndex={props.disabled ? -1 : 0}\n aria-haspopup=\"listbox\"\n aria-expanded={popover.open()}\n aria-controls={listboxId}\n aria-activedescendant={focusedOption() ? `${listboxId}-${focusedIndex()}` : undefined}\n {...fieldControlAria(meta, props)}\n aria-disabled={props.disabled}\n data-disabled={props.disabled ? \"true\" : undefined}\n onClick={() => (popover.open() ? close() : open())}\n onKeyDown={handleKeyDown}\n >\n <Show\n when={selected().length > 0}\n fallback={\n <span class=\"k2b-choice-trigger__value\" data-placeholder=\"true\">\n {props.placeholder ?? messages().select}\n </span>\n }\n >\n <span\n ref={valuesRef}\n class=\"k2b-multi-select-trigger__values\"\n data-overflowing={hiddenOptions().length > 0 ? \"true\" : undefined}\n >\n <For each={selected()}>\n {(option, index) => (\n <span\n class=\"k2b-choice-pill\"\n style={colorTintStyle(option.color)}\n title={option.label}\n data-hidden={index() >= visibleCount() ? \"true\" : undefined}\n >\n <Show\n when={props.renderValue}\n fallback={\n <>\n <Show when={option.icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>\n <span>{option.label}</span>\n </>\n }\n >\n {(render) => <span class=\"k2b-choice-pill__content\">{render()(option)}</span>}\n </Show>\n <button\n type=\"button\"\n aria-label={messages().removeNamed({ name: option.label })}\n disabled={props.disabled}\n tabIndex={-1}\n onClick={(event) => {\n event.stopPropagation();\n remove(option.value);\n }}\n >\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </span>\n )}\n </For>\n <Show when={selected().length > 1}>\n <span\n ref={(element) => {\n moreRef = element;\n resizeObserver?.observe(element);\n onCleanup(() => resizeObserver?.unobserve(element));\n }}\n class=\"k2b-multi-select-trigger__more\"\n title={\n hiddenOptions()\n .map((option) => option.label)\n .join(\", \") || undefined\n }\n data-hidden={hiddenOptions().length === 0 ? \"true\" : undefined}\n >\n <span aria-hidden=\"true\">+{moreCount()}</span>\n <span class=\"k2b-sr-only\">{messages().moreSelected({ count: moreCount() })}</span>\n </span>\n </Show>\n </span>\n </Show>\n <Show when={!hasClearAction()}>\n <i\n class={`${popover.open() ? (props.activeIcon ?? \"ti ti-chevron-up\") : (props.icon ?? \"ti ti-chevron-down\")} k2b-multi-select-trigger__chevron`}\n aria-hidden=\"true\"\n />\n </Show>\n </div>\n <Show when={hasClearAction()}>\n <button\n type=\"button\"\n class=\"k2b-choice-control__clear k2b-input-clear-action\"\n aria-label={props.clearLabel ?? messages().clearSelection}\n onClick={(event) => {\n event.stopPropagation();\n emit([]);\n popover.trigger()?.focus();\n }}\n >\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n\n <div\n ref={popover.setPopover}\n popover=\"manual\"\n class=\"k2b-choice-popover\"\n role=\"group\"\n onKeyDown={handleKeyDown}\n aria-label={typeof props.label === \"string\" ? props.label : (props[\"aria-label\"] ?? messages().options)}\n >\n <Show when={searchable()}>\n <div class=\"k2b-choice-search\">\n <i class=\"ti ti-search\" aria-hidden=\"true\" />\n <input\n ref={searchRef}\n type=\"search\"\n value={query()}\n placeholder={props.searchPlaceholder ?? messages().search}\n aria-label={props.searchPlaceholder ?? messages().searchOptions}\n aria-controls={listboxId}\n aria-activedescendant={focusedOption() ? `${listboxId}-${focusedIndex()}` : undefined}\n onInput={(event) => {\n const next = event.currentTarget.value;\n setQuery(next);\n if (isAsync()) asyncOptions.load(next);\n focusFirst();\n }}\n />\n </div>\n </Show>\n <Show when={(props.groups?.length ?? 0) > 0}>\n <div class=\"k2b-choice-toolbar\">\n <ChoiceGroups\n choices={groupChoices()}\n value={activeGroup()}\n onValueChange={chooseGroup}\n ariaLabel={props.groupsAriaLabel ?? messages().filterOptions}\n controls={listboxId}\n />\n </div>\n </Show>\n <div id={listboxId} class=\"k2b-choice-options\" role=\"listbox\" aria-multiselectable=\"true\">\n <Show when={asyncOptions.error()}>\n {(message) => (\n <div class=\"k2b-choice-status\" data-tone=\"danger\">\n <span>{message()}</span>\n <button type=\"button\" onClick={asyncOptions.retry}>\n {props.retryLabel ?? messages().retry}\n </button>\n </div>\n )}\n </Show>\n <Show when={asyncOptions.loading() && visibleOptions().length === 0}>\n <div class=\"k2b-choice-status\">\n <i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\" />\n <span>{props.loadingLabel ?? messages().loading}</span>\n </div>\n </Show>\n <For\n each={asyncOptions.error() ? [] : visibleOptions()}\n fallback={\n <Show when={!asyncOptions.loading() && !asyncOptions.error()}>\n <div class=\"k2b-choice-status\">\n {isAsync() || query() ? (props.noResultsLabel ?? messages().noResults) : (props.emptyLabel ?? messages().noOptions)}\n </div>\n </Show>\n }\n >\n {(option, index) => (\n <button\n type=\"button\"\n id={`${listboxId}-${index()}`}\n class=\"k2b-choice-option\"\n role=\"option\"\n aria-label={option.label}\n aria-selected={isSelected(option.value)}\n data-focused={index() === focusedIndex() ? \"true\" : undefined}\n disabled={option.disabled}\n onPointerMove={() => !option.disabled && setFocusedIndex(index())}\n onClick={() => toggleOption(option)}\n >\n <span class=\"k2b-choice-option__checkbox\" aria-hidden=\"true\">\n <i class=\"ti ti-check\" />\n </span>\n <Show\n when={option.icon}\n fallback={\n <Show when={normalizeHexColor(option.color)}>\n {(color) => <span class=\"k2b-choice-dot\" style={{ background: color() }} aria-hidden=\"true\" />}\n </Show>\n }\n >\n {(icon) => <i class={icon()} style={iconColor(option.color)} aria-hidden=\"true\" />}\n </Show>\n <span class=\"k2b-choice-option__content\">\n <Show\n when={props.renderOption}\n fallback={\n <>\n <strong>{option.label}</strong>\n <Show when={option.description}>{(description) => <small>{description()}</small>}</Show>\n </>\n }\n >\n {(render) => render()(option)}\n </Show>\n </span>\n </button>\n )}\n </For>\n </div>\n </div>\n <Show when={props.name}>{(name) => <input type=\"hidden\" name={name()} value={values().join(\",\")} />}</Show>\n </div>\n </Field>\n );\n}\n\nexport default MultiSelectInput;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,EAAY,SAAS,EAAE,OAAO,EAAE,IAAI,QAAQ,UAAU;AAC1G,SAAS,cAAc,EAAE,iBAAiB,QAAQ,mBAAmB;AACrE,SAAS,eAAe,EAAE,KAAK,EAAE,gBAAgB,QAAQ,mBAAmB;AAC5E,SAAS,aAAa,QAAQ,kBAAkB;AAChD,SAAS,YAAY,QAAQ,gBAAgB;AAC7C,SAEE,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,sBAAsB,QACjB,UAAU;AAEjB,SAAS,gBAAgB,EAAE,oBAAoB,QAAQ,kBAAkB;AAqCzE;AACA,MAAM,SAAS,GAAI,KAAyB,IAAoC;EAC9E,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC;EAC3C,OAAO,UAAU,GAAG;IAAE,KAAK,EAAE;EAAW,CAAC,GAAG,SAAS;AACvD,CAAC;AAED,MAAM,SAAS,GAAI,MAAyB,IAC1C,OAAO,MAAM,KAAK,QAAQ,GACtB;EAAE,KAAK,EAAE,MAAM;EAAE,KAAK,EAAE;AAAO,CAAC,GAChC,OAAO,IAAI,MAAM,GACf,MAAM,GACN;EAAE,GAAG,MAAM;EAAE,KAAK,EAAE,MAAM,CAAC,EAAE;EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC;AAAG,CAAC;AAEzE,OAAO,SAAS,gBAAgB,CAAC,KAA4B,EAAe;EAC1E,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC;EAChC,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;EACtC,MAAM,SAAS,GAAG,GAAG,IAAI,CAAC,SAAS,UAAU;EAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC;EAC1C,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;EACxD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,YAAY,CAAmC,CAAC,CAAC,CAAC;EAC5E,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,YAAY,CAAgB,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC;EACjG,IAAI,SAAuC;EAE3C,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;EAC5D,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC;EACrD,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM;IACnC,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC;IAC/B,OAAO,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,CAAE,KAAK,IAAK,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,GAAG,OAAO,GAAG,IAAI;EAC3F,CAAC,CAAC;EACF,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC;IAAE,KAAK,EAAE,IAAI;IAAE,KAAK,EAAE,KAAK,CAAC,aAAa,IAAI,QAAQ,CAAC,CAAC,CAAC;EAAI,CAAC,EAAE,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;EAC/H,MAAM,YAAY,GAAG,kBAAkB,CACrC,MACE,KAAK,CAAC,SAAS,GACX,OAAO,KAAK,EAAE,MAAM,KAAK,CAAC,MAAM,KAAK,CAAC,SAAS,CAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,GAC9F,KAAK,CAAC,WAAW,GACf,CAAC,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,WAAW,CAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GACnE,SAAS,EACjB,MAAM,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,UAAU,IAAI,GACrD,CAAC;EACD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,WAAW,CAAC;EACnE,MAAM,aAAa,GAAG,UAAU,CAAC,MAAO,OAAO,CAAC,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,CAAC,SAAS,CAAE,CAAC;EACnH,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM;IACtC,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC;IAC3B,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,CAAE,MAAM,IAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC;EACnH,CAAC,CAAC;EACF;EACA;EACA,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC;EAChE,MAAM,cAAc,GAAG,UAAU,CAAC,MAChC,OAAO,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,EAAE,CAClG,CAAC;EACD,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM;IACrC,MAAM,OAAO,GAAG,IAAI,GAAG,CAA2B,CAAC;IACnD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC;IAC9E,KAAK,MAAM,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC;IACxG,KAAK,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC;IACvE,OAAO,OAAO;EAChB,CAAC,CAAC;EACF,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,CAAE,KAAK,IAAK,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAK;IAAE,KAAK;IAAE,KAAK,EAAE;EAAM,CAAsB,CAAC,CAAC;EACvI,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;EACjG,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAC1D,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;EAClE,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;;EAE5D;EACA;EACA,IAAI,SAAsC;EAC1C,IAAI,OAAoC;EACxC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,iBAAiB,CAAC;EAC9E,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;EACxE;EACA;EACA,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;EACvE,MAAM,SAAS,GAAG,MAAM;IACtB,MAAM,MAAM,GAAG,SAAS;IACxB,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE;IAC1B;IACA;IACA,MAAM,CAAC,OAAO,CAAC,SAAS,GAAG,MAAM;IACjC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CACtB,MAAM,CAAC,gBAAgB,CAAc,2BAA2B,CAAC,EAChE,IAAI,IAAK,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,KACzC,CAAC;IACD,MAAM,GAAG,GAAG,cAAc,CACxB,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAK,EACpC,KAAK,EACL,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAC1D,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAK,GAAG,CACjE,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS;IAC/B;IACA;IACA;IACA;IACA,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,EAAE;IAC1E,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;EAC9B,CAAC;EACD,MAAM,cAAc,GAAG,OAAO,cAAc,KAAK,WAAW,GAAG,SAAS,GAAG,IAAI,cAAc,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC;EAChH,SAAS,CAAC,MAAM,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;EAC7C,YAAY,CAAC,MAAM;IACjB,QAAQ,CAAC,CAAC;IACV,SAAS,CAAC,CAAC;EACb,CAAC,CAAC;EACF,OAAO,CAAC,MAAM;IACZ,IAAI,OAAO,IAAI,QAAQ,EAAE,KAAK,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;EACpE,CAAC,CAAC;EAEF,MAAM,IAAI,GAAI,IAAuB,IAAK;IACxC,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC;EACjC,CAAC;EACD,MAAM,UAAU,GAAI,KAAa,IAAK,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;EACjE,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACzF,MAAM,WAAW,GAAI,KAAoB,IAAK;IAC5C,IAAI,KAAK,KAAK,WAAW,CAAC,CAAC,EAAE;IAC7B,gBAAgB,CAAC,KAAK,CAAC;IACvB,UAAU,CAAC,CAAC;IACZ,IAAI,OAAO,CAAC,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;EACjD,CAAC;EACD,MAAM,IAAI,GAAG,MAAM;IACjB,IAAI,KAAK,CAAC,QAAQ,EAAE;IACpB,QAAQ,CAAC,EAAE,CAAC;IACZ,IAAI,OAAO,CAAC,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;IAC1C,UAAU,CAAC,CAAC;IACZ,OAAO,CAAC,IAAI,CAAC,CAAC;IACd,IAAI,UAAU,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;EAC5D,CAAC;EACD,MAAM,KAAK,GAAG,CAAC,YAAY,GAAG,KAAK,KAAK;IACtC,YAAY,CAAC,MAAM,CAAC,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC;IACZ,eAAe,CAAC,CAAC,CAAC,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;EAC5B,CAAC;EACD,MAAM,YAAY,GAAI,MAAwB,IAAK;IACjD,IAAI,MAAM,CAAC,QAAQ,EAAE;IACrB,QAAQ,CAAC;MAAE,GAAG,KAAK,CAAC,CAAC;MAAE,CAAC,MAAM,CAAC,KAAK,GAAG;IAAO,CAAC,CAAC;IAChD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAE,KAAK,IAAK,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;EACnH,CAAC;EACD,MAAM,MAAM,GAAI,KAAa,IAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAE,IAAI,IAAK,IAAI,KAAK,KAAK,CAAC,CAAC;EACjF,MAAM,IAAI,GAAI,SAAiB,IAAK;IAClC,eAAe,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;EACtF,CAAC;EACD,MAAM,aAAa,GAAI,KAAoB,IAAK;IAC9C,MAAM,SAAS,GAAG,OAAO,CAAE,KAAK,CAAC,MAAM,EAAyB,OAAO,GAAG,qBAAqB,CAAC,CAAC;IACjG,IAAI,SAAS,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;IAChE,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;MACxD,KAAK,CAAC,cAAc,CAAC,CAAC;MACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,KACvB,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;MAC7C;IACF;IACA,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;MACnE,KAAK,CAAC,cAAc,CAAC,CAAC;MACtB,IAAI,CAAC,CAAC;MACN;IACF;IACA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;MAC3C,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC;MAC9B,IAAI,MAAM,EAAE;QACV,KAAK,CAAC,cAAc,CAAC,CAAC;QACtB,YAAY,CAAC,MAAM,CAAC;MACtB;MACA;IACF;IACA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;MAClF,KAAK,CAAC,cAAc,CAAC,CAAC;MACtB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;MAC5B,IAAI,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;MACtB;IACF;IACA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;MAC5C,KAAK,CAAC,cAAc,CAAC,CAAC;MACtB,KAAK,CAAC,IAAI,CAAC;IACb,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;MAChD,KAAK,CAAC,CAAC;IACT;EACF,CAAC;EAED,yBACG,KAAK;IAAA;MAAA,OACG,KAAK,CAAC,KAAK;IAAA;IAAA,IAClB,KAAK;MAAA,OAAE,KAAK,CAAC,KAAK;IAAA;IAAA,IAClB,WAAW;MAAA,OAAE,KAAK,CAAC,WAAW;IAAA;IAAA,IAC9B,KAAK;MAAA,OAAE,KAAK,CAAC,CAAC;IAAA;IACd,IAAI,EAAE,IAAI;IACV,QAAQ,EAAE,KAAK;IAAA,IACf,QAAQ;MAAA,OAAE,KAAK,CAAC,QAAQ;IAAA;IAAA,IACxB,QAAQ;MAAA,OAAE,KAAK,CAAC,QAAQ;IAAA;IAAA;MAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;MAAA,MAId,OAAO,IAAK;QAChB,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;QAC3B,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC;MAClC,CAAC;MAAA,uCAOc,SAAS;MAAA;QAAA,IANxB,EAAE;UAAA,OAAE,IAAI,CAAC,SAAS;QAAA;QAAA,IAGlB,QAAQ;UAAA,OAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC;QAAA;QAAA;UAAA,OAElB,OAAO,CAAC,IAAI,CAAC,CAAC;QAAA;QAAA;UAAA,OAEN,4BAAa,CAAC,CAAC,MAAG,GAAG,SAAS,IAAI,YAAY,CAAC,CAAC,EAAE,GAAG,SAAS;QAAA;MAAA,SACjF,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC;QAAA;UAAA,OAClB,KAAK,CAAC,QAAQ;QAAA;QAAA;UAAA,OACd,KAAK,CAAC,QAAQ,GAAG,MAAM,GAAG,SAAS;QAAA;QAAA,WACzC,MAAO,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAE;QAAA,aACvC;MAAa;MAAA,kCAEvB,IAAI;QAAA,IACH,IAAI;UAAA,OAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;QAAA;QAAA,IAC3B,QAAQ;UAAA;YAAA;YAAA,uBAEH,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM;YAAA;UAAA;QAAA;QAAA;UAAA;YAAA;YAAA;YAAA;YAAA;UAAA,YAKpC,SAAS;UAAA,oDAAT,SAAS;UAAA,kCAIb,GAAG;YAAA,IAAC,IAAI;cAAA,OAAE,QAAQ,CAAC,CAAC;YAAA;YAAA,UAClB,CAAC,MAAM,EAAE,KAAK;cAAA;gBAAA;gBAAA;gBAAA;cAAA,mCAOV,IAAI;gBAAA,IACH,IAAI;kBAAA,OAAE,KAAK,CAAC,WAAW;gBAAA;gBAAA,IACvB,QAAQ;kBAAA,0BAEH,IAAI;oBAAA,IAAC,IAAI;sBAAA,OAAE,MAAM,CAAC,IAAI;oBAAA;oBAAA,UAAI,IAAI;sBAAA;sBAAA,mCAAe,IAAI,CAAC,CAAC;sBAAA;oBAAA;kBAAuB;oBAAA;oBAAA,uBACpE,MAAM,CAAC,KAAK;oBAAA;kBAAA;gBAAA;gBAAA,UAIrB,MAAM;kBAAA;kBAAA,uBAA6C,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;kBAAA;gBAAA;cAAQ;cAAA,iBAOnE,KAAK,IAAK;gBAClB,KAAK,CAAC,eAAe,CAAC,CAAC;gBACvB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;cACtB,CAAC;cAAA;gBAAA,WAvBI,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC;kBAAA,OAC5B,MAAM,CAAC,KAAK;kBAAA,OACN,KAAK,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS;kBAAA,OAe7C,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;oBAAE,IAAI,EAAE,MAAM,CAAC;kBAAM,CAAC,CAAC;kBAAA,QAChD,KAAK,CAAC,QAAQ;gBAAA;gBAAA;gBAAA;gBAAA;gBAAA;gBAAA;cAAA;gBAAA;gBAAA;gBAAA;gBAAA;gBAAA;cAAA;cAAA;cAAA;YAAA;UAU7B;UAAA,kCAEF,IAAI;YAAA,IAAC,IAAI;cAAA,OAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;YAAA;YAAA;cAAA;gBAAA;gBAAA;gBAAA;gBAAA;gBAAA;cAAA,MAEvB,OAAO,IAAK;gBAChB,OAAO,GAAG,OAAO;gBACjB,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC;gBAChC,SAAS,CAAC,MAAM,cAAc,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;cACrD,CAAC;cAAA,gBAS0B,SAAS;cAAA,sBACT,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC;gBAAE,KAAK,EAAE,SAAS,CAAC;cAAE,CAAC,CAAC;cAAA;gBAAA,UAPxE,aAAa,CAAC,CAAC,CACZ,GAAG,CAAE,MAAM,IAAK,MAAM,CAAC,KAAK,CAAC,CAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS;kBAAA,OAEf,aAAa,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,MAAM,GAAG,SAAS;gBAAA;gBAAA;gBAAA;cAAA;gBAAA;gBAAA;cAAA;cAAA;YAAA;UAAA;UAAA,yDAjDhD,aAAa,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS;UAAA;QAAA;MAAA;MAAA,kCAyDpE,IAAI;QAAA,IAAC,IAAI;UAAA,OAAE,CAAC,cAAc,CAAC,CAAC;QAAA;QAAA;UAAA;UAAA,mCAElB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAI,KAAK,CAAC,UAAU,IAAI,kBAAkB,GAAK,KAAK,CAAC,IAAI,IAAI,oBAAqB,oCAAoC;UAAA;QAAA;MAAA;MAAA,iCAKnJ,IAAI;QAAA,IAAC,IAAI;UAAA,OAAE,cAAc,CAAC,CAAC;QAAA;QAAA;UAAA;UAAA,iBAKd,KAAK,IAAK;YAClB,KAAK,CAAC,eAAe,CAAC,CAAC;YACvB,IAAI,CAAC,EAAE,CAAC;YACR,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;UAC5B,CAAC;UAAA,oDALW,KAAK,CAAC,UAAU,IAAI,QAAQ,CAAC,CAAC,CAAC,cAAc;UAAA;UAAA;QAAA;MAAA;MAAA,mBAgBhD,aAAa;MAAA,aAJnB,OAAO,CAAC,UAAU;MAAA,uDAAlB,OAAO,CAAC,UAAU;MAAA,mCAOtB,IAAI;QAAA,IAAC,IAAI;UAAA,OAAE,UAAU,CAAC,CAAC;QAAA;QAAA;UAAA;YAAA;YAAA;UAAA,iBAWR,KAAK,IAAK;YAClB,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK;YACtC,QAAQ,CAAC,IAAI,CAAC;YACd,IAAI,OAAO,CAAC,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YACtC,UAAU,CAAC,CAAC;UACd,CAAC;UAAA,aAZI,SAAS;UAAA,uDAAT,SAAS;UAAA,wCAKC,SAAS;UAAA;YAAA,WAFX,KAAK,CAAC,iBAAiB,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM;cAAA,OAC7C,KAAK,CAAC,iBAAiB,IAAI,QAAQ,CAAC,CAAC,CAAC,aAAa;cAAA,OAExC,aAAa,CAAC,CAAC,GAAG,GAAG,SAAS,IAAI,YAAY,CAAC,CAAC,EAAE,GAAG,SAAS;YAAA;YAAA;YAAA;YAAA;UAAA;YAAA;YAAA;YAAA;UAAA;UAAA,8CAJ9E,KAAK,CAAC,CAAC;UAAA;UAAA;QAAA;MAAA;MAAA,mCAcnB,IAAI;QAAA,IAAC,IAAI;UAAA,OAAE,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC;QAAA;QAAA;UAAA;UAAA,mCAEtC,YAAY;YAAA,IACX,OAAO;cAAA,OAAE,YAAY,CAAC,CAAC;YAAA;YAAA,IACvB,KAAK;cAAA,OAAE,WAAW,CAAC,CAAC;YAAA;YACpB,aAAa,EAAE,WAAW;YAAA,IAC1B,SAAS;cAAA,OAAE,KAAK,CAAC,eAAe,IAAI,QAAQ,CAAC,CAAC,CAAC,aAAa;YAAA;YAC5D,QAAQ,EAAE;UAAS;UAAA;QAAA;MAAA;MAAA,6BAIhB,SAAS;MAAA,mCACf,IAAI;QAAA,IAAC,IAAI;UAAA,OAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAAA;QAAA,UAC5B,OAAO;UAAA;YAAA;YAAA;UAAA,iBAEE,OAAO;UAAA,oCACiB,YAAY,CAAC,KAAK;UAAA,uBAC9C,KAAK,CAAC,UAAU,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK;UAAA;UAAA;QAAA;MAG1C;MAAA,mCAEF,IAAI;QAAA,IAAC,IAAI;UAAA,OAAE,2BAAY,CAAC,OAAO,CAAC,CAAC,OAAI,cAAc,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC;QAAA;QAAA;UAAA;YAAA;YAAA;UAAA,uBAGxD,KAAK,CAAC,YAAY,IAAI,QAAQ,CAAC,CAAC,CAAC,OAAO;UAAA;QAAA;MAAA;MAAA,mCAGlD,GAAG;QAAA,IACF,IAAI;UAAA,OAAE,2BAAY,CAAC,KAAK,CAAC,CAAC,MAAG,EAAE,GAAG,cAAc,CAAC,CAAC;QAAA;QAAA,IAClD,QAAQ;UAAA,yBACL,IAAI;YAAA,IAAC,IAAI;cAAA,OAAE,gBAAC,YAAY,CAAC,OAAO,CAAC,CAAC,OAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAAA;YAAA;cAAA;cAAA;gBAAA,0BAEvD,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;gBAAA,aAApB,QAAwB,KAAK,CAAC,cAAc,IAAI,QAAQ,CAAC,CAAC,CAAC,SAAS,GAAK,KAAK,CAAC,UAAU,IAAI,QAAQ,CAAC,CAAC,CAAC,SAAU;cAAA;cAAA;YAAA;UAAA;QAAA;QAAA,UAKxH,CAAC,MAAM,EAAE,KAAK;UAAA;YAAA;YAAA;YAAA;YAAA;UAAA,iBAWF,MAAM,YAAY,CAAC,MAAM,CAAC;UAAA,uBADpB,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;UAAA,mCAMhE,IAAI;YAAA,IACH,IAAI;cAAA,OAAE,MAAM,CAAC,IAAI;YAAA;YAAA,IACjB,QAAQ;cAAA,yBACL,IAAI;gBAAA,IAAC,IAAI;kBAAA,OAAE,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC;gBAAA;gBAAA,UACvC,KAAK;kBAAA;kBAAA,yDAAuD,KAAK,CAAC,CAAC;kBAAA;gBAAA;cAAyB;YAAA;YAAA,UAIhG,IAAI;cAAA;cAAA;gBAAA,YAAe,IAAI,CAAC,CAAC;kBAAA,QAAS,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;gBAAA;gBAAA;gBAAA;cAAA;gBAAA;gBAAA;cAAA;cAAA;YAAA;UAAuB;UAAA,mCAGjF,IAAI;YAAA,IACH,IAAI;cAAA,OAAE,KAAK,CAAC,YAAY;YAAA;YAAA,IACxB,QAAQ;cAAA;gBAAA;gBAAA,uBAEK,MAAM,CAAC,KAAK;gBAAA;cAAA,wBACpB,IAAI;gBAAA,IAAC,IAAI;kBAAA,OAAE,MAAM,CAAC,WAAW;gBAAA;gBAAA,UAAI,WAAW;kBAAA;kBAAA,iBAAa,WAAW;kBAAA;gBAAA;cAAW;YAAA;YAAA,UAIlF,MAAM,IAAK,MAAM,CAAC,CAAC,CAAC,MAAM;UAAC;UAAA;YAAA,YAjC7B,GAAG,SAAS,IAAI,KAAK,CAAC,CAAC,EAAE;cAAA,QAGjB,MAAM,CAAC,KAAK;cAAA,QACT,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;cAAA,QACzB,KAAK,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS;cAAA,QACnD,MAAM,CAAC,QAAQ;YAAA;YAAA;YAAA;YAAA;YAAA;YAAA;UAAA;YAAA;YAAA;YAAA;YAAA;YAAA;UAAA;UAAA;UAAA;QAAA;MA+B5B;MAAA,iCAIN,IAAI;QAAA,IAAC,IAAI;UAAA,OAAE,KAAK,CAAC,IAAI;QAAA;QAAA,UAAI,IAAI;UAAA;UAAA,8CAAgC,IAAI,CAAC,CAAC;UAAA,8CAAS,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;UAAA;QAAA;MAAI;MAAA;QAAA,WA5NvD,KAAK,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS;UAAA,OAoH1D,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,GAAG,KAAK,CAAC,KAAK,GAAI,KAAK,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,OAAQ;QAAA;QAAA;QAAA;MAAA;QAAA;QAAA;MAAA;MAAA;MAAA;IAAA;EAAA;AA4GjH;AAEA,eAAe,gBAAgB;AAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["inputs/MultiSelectInput.tsx"],"sourcesContent":["import { createEffect, createMemo, createSignal, For, type JSX, onCleanup, onMount, Show } from \"solid-js\";\nimport { colorTintStyle, normalizeHexColor } from \"../internal/color\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { ChoiceGroups } from \"./ChoiceGroups\";\nimport {\n type ChoiceOption,\n createChoiceLoader,\n createChoicePopover,\n filterChoiceOptions,\n fitChoicePills,\n nextEnabledChoiceIndex,\n} from \"./choice\";\nimport type { ValueFieldProps } from \"./field-contract\";\nimport { commitFieldValue, resolveMaybeAccessor } from \"./field-contract\";\nimport type { ChoiceAppearance, SelectGroup } from \"./Select\";\n\nexport type MultiSelectOption =\n | string\n | { id: string; label?: string; description?: string; icon?: string; color?: string; groups?: readonly string[] }\n | ChoiceOption<string>;\ntype NormalizedOption = ChoiceOption<string>;\nexport type MultiSelectFetchDataFn = (query: string, signal: AbortSignal, group: string | null) => Promise<MultiSelectOption[]>;\n\nexport type MultiSelectInputProps = ValueFieldProps<string[]> & {\n options?: MultiSelectOption[];\n fetchData?: MultiSelectFetchDataFn;\n selectedOptions?: () => MultiSelectOption[];\n placeholder?: string;\n icon?: string;\n activeIcon?: string;\n fetchDebounceMs?: number;\n debounceMs?: number;\n loadOptions?: (query: string, signal: AbortSignal, group: string | null) => Promise<readonly ChoiceOption<string>[]>;\n groups?: readonly SelectGroup[];\n defaultGroup?: string;\n groupsAriaLabel?: string;\n allGroupLabel?: string;\n searchable?: boolean;\n clearable?: boolean;\n name?: string;\n renderOption?: (option: ChoiceOption<string>) => JSX.Element;\n renderValue?: (option: ChoiceOption<string>) => JSX.Element;\n searchPlaceholder?: string;\n loadingLabel?: string;\n noResultsLabel?: string;\n emptyLabel?: string;\n retryLabel?: string;\n clearLabel?: string;\n /** `plain` shows the selection as wrapping pills without a box; options are removed in the list. */\n appearance?: ChoiceAppearance;\n /** Icon class shown before the placeholder while nothing is selected. */\n placeholderIcon?: string;\n};\n\n/** Cloud tints the option icon with the option color instead of adding a dot. */\nconst iconColor = (color: string | undefined): JSX.CSSProperties | undefined => {\n const normalized = normalizeHexColor(color);\n return normalized ? { color: normalized } : undefined;\n};\n\nconst normalize = (option: MultiSelectOption): NormalizedOption =>\n typeof option === \"string\"\n ? { value: option, label: option }\n : \"value\" in option\n ? option\n : { ...option, value: option.id, label: option.label || option.id };\n\nexport function MultiSelectInput(props: MultiSelectInputProps): JSX.Element {\n const messages = useUiMessages();\n const meta = createFieldMeta(props.id);\n const listboxId = `${meta.controlId}-listbox`;\n const [query, setQuery] = createSignal(\"\");\n const [focusedIndex, setFocusedIndex] = createSignal(-1);\n const [cache, setCache] = createSignal<Record<string, NormalizedOption>>({});\n const [selectedGroup, setSelectedGroup] = createSignal<string | null>(props.defaultGroup ?? null);\n let searchRef: HTMLInputElement | undefined;\n\n const values = () => resolveMaybeAccessor(props.value) ?? [];\n const error = () => resolveMaybeAccessor(props.error);\n const activeGroup = createMemo(() => {\n const current = selectedGroup();\n return current && props.groups?.some((group) => group.value === current) ? current : null;\n });\n const groupChoices = createMemo(() => [{ value: null, label: props.allGroupLabel ?? messages().all }, ...(props.groups ?? [])]);\n const asyncOptions = createChoiceLoader(\n () =>\n props.fetchData\n ? async (query, signal) => (await props.fetchData!(query, signal, activeGroup())).map(normalize)\n : props.loadOptions\n ? (query, signal) => props.loadOptions!(query, signal, activeGroup())\n : undefined,\n () => props.fetchDebounceMs ?? props.debounceMs ?? 200,\n );\n const isAsync = () => Boolean(props.fetchData || props.loadOptions);\n const sourceOptions = createMemo(() => (isAsync() ? asyncOptions.options() : (props.options ?? []).map(normalize)));\n const groupedOptions = createMemo(() => {\n const group = activeGroup();\n return !isAsync() && group ? sourceOptions().filter((option) => option.groups?.includes(group)) : sourceOptions();\n });\n // Cloud's multi-select always renders its search field, and filters a static\n // option list client-side while a remote loader filters server-side.\n const searchable = () => isAsync() || (props.searchable ?? true);\n const visibleOptions = createMemo(() =>\n isAsync() ? groupedOptions() : filterChoiceOptions(groupedOptions(), searchable() ? query() : \"\"),\n );\n const optionByValue = createMemo(() => {\n const options = new Map<string, NormalizedOption>();\n for (const option of Object.values(cache())) options.set(option.value, option);\n for (const option of (props.selectedOptions?.() ?? []).map(normalize)) options.set(option.value, option);\n for (const option of sourceOptions()) options.set(option.value, option);\n return options;\n });\n const selected = createMemo(() => values().map((value) => optionByValue().get(value) ?? ({ value, label: value } as NormalizedOption)));\n const plain = () => props.appearance === \"plain\";\n const hasClearAction = () => Boolean(props.clearable && selected().length > 0 && !props.disabled && !plain());\n const selectedValues = createMemo(() => new Set(values()));\n const popover = createChoicePopover(() => Boolean(props.disabled));\n const focusedOption = () => visibleOptions()[focusedIndex()];\n\n // Pills that do not fit the trigger collapse into a \"+N\" summary. Until the\n // browser measures them (server HTML, hidden containers) every pill stays.\n let valuesRef: HTMLSpanElement | undefined;\n let moreRef: HTMLSpanElement | undefined;\n const [visibleCount, setVisibleCount] = createSignal(Number.POSITIVE_INFINITY);\n const hiddenOptions = createMemo(() => selected().slice(visibleCount()));\n // While every pill fits, the invisible summary carries the largest count it\n // could show, so measuring it reserves enough room for the real one.\n const moreCount = () => hiddenOptions().length || selected().length - 1;\n const fitValues = () => {\n const values = valuesRef;\n if (!values?.isConnected) return;\n // Plain pills wrap, so every one stays visible.\n if (plain()) {\n values.style.width = \"\";\n setVisibleCount(Number.POSITIVE_INFINITY);\n return;\n }\n // Measuring releases a truncated first pill to its natural width; the\n // browser paints only the final state.\n values.dataset.measuring = \"true\";\n const pills = Array.from(\n values.querySelectorAll<HTMLElement>(\":scope > .k2b-choice-pill\"),\n (pill) => pill.getBoundingClientRect().width,\n );\n const fit = fitChoicePills(\n values.getBoundingClientRect().width,\n pills,\n Number.parseFloat(getComputedStyle(values).columnGap) || 0,\n moreRef?.isConnected ? moreRef.getBoundingClientRect().width : 0,\n );\n delete values.dataset.measuring;\n // Hidden pills leave the flow. While any are hidden the strip keeps the\n // whole row as its preferred width, so a container sized by its content\n // does not shrink with the collapse and grows back once it has room. The\n // strip still flexes to the trigger's width.\n values.style.width = fit.visible < pills.length ? `${fit.rowWidth}px` : \"\";\n setVisibleCount(fit.visible);\n };\n const resizeObserver = typeof ResizeObserver === \"undefined\" ? undefined : new ResizeObserver(() => fitValues());\n onCleanup(() => resizeObserver?.disconnect());\n createEffect(() => {\n selected();\n fitValues();\n });\n onMount(() => {\n if (\"fonts\" in document) void document.fonts.ready.then(fitValues);\n });\n\n const emit = (next: readonly string[]) => {\n const unique = [...new Set(next)];\n commitFieldValue(props, unique);\n };\n const isSelected = (value: string) => selectedValues().has(value);\n const focusFirst = () => setFocusedIndex(nextEnabledChoiceIndex(visibleOptions(), -1, 1));\n const chooseGroup = (group: string | null) => {\n if (group === activeGroup()) return;\n setSelectedGroup(group);\n focusFirst();\n if (isAsync()) asyncOptions.load(query(), true);\n };\n const open = () => {\n if (props.disabled) return;\n setQuery(\"\");\n if (isAsync()) asyncOptions.load(\"\", true);\n focusFirst();\n popover.show();\n if (searchable()) queueMicrotask(() => searchRef?.focus());\n };\n const close = (restoreFocus = false) => {\n asyncOptions.cancel();\n setQuery(\"\");\n setFocusedIndex(-1);\n popover.hide(restoreFocus);\n };\n const toggleOption = (option: NormalizedOption) => {\n if (option.disabled) return;\n setCache({ ...cache(), [option.value]: option });\n emit(isSelected(option.value) ? values().filter((value) => value !== option.value) : [...values(), option.value]);\n };\n const remove = (value: string) => emit(values().filter((item) => item !== value));\n const move = (direction: 1 | -1) => {\n setFocusedIndex(nextEnabledChoiceIndex(visibleOptions(), focusedIndex(), direction));\n };\n const handleKeyDown = (event: KeyboardEvent) => {\n const inToolbar = Boolean((event.target as HTMLElement | null)?.closest?.(\".k2b-choice-toolbar\"));\n if (inToolbar && event.key !== \"Escape\" && event.key !== \"Tab\") return;\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n if (!popover.open()) open();\n else move(event.key === \"ArrowDown\" ? 1 : -1);\n return;\n }\n if ((event.key === \"Enter\" || event.key === \" \") && !popover.open()) {\n event.preventDefault();\n open();\n return;\n }\n if (event.key === \"Enter\" && popover.open()) {\n const option = focusedOption();\n if (option) {\n event.preventDefault();\n toggleOption(option);\n }\n return;\n }\n if (event.key === \"Backspace\" && popover.open() && !query() && values().length > 0) {\n event.preventDefault();\n const last = values().at(-1);\n if (last) remove(last);\n return;\n }\n if (event.key === \"Escape\" && popover.open()) {\n event.preventDefault();\n close(true);\n } else if (event.key === \"Tab\" && popover.open()) {\n close();\n }\n };\n\n return (\n <Field\n class={props.class}\n label={props.label}\n description={props.description}\n error={error()}\n meta={meta}\n labelFor={false}\n required={props.required}\n disabled={props.disabled}\n >\n <div class=\"k2b-choice-control\" data-appearance={props.appearance ?? \"field\"} data-invalid={error() ? \"true\" : undefined}>\n <div\n ref={(element) => {\n popover.setTrigger(element);\n resizeObserver?.observe(element);\n }}\n id={meta.controlId}\n class=\"k2b-multi-select-trigger\"\n role=\"combobox\"\n tabIndex={props.disabled ? -1 : 0}\n aria-haspopup=\"listbox\"\n aria-expanded={popover.open()}\n aria-controls={listboxId}\n aria-activedescendant={focusedOption() ? `${listboxId}-${focusedIndex()}` : undefined}\n {...fieldControlAria(meta, props)}\n aria-disabled={props.disabled}\n data-disabled={props.disabled ? \"true\" : undefined}\n onClick={() => (popover.open() ? close() : open())}\n onKeyDown={handleKeyDown}\n >\n <Show\n when={selected().length > 0}\n fallback={\n <>\n <Show when={props.placeholderIcon}>\n {(icon) => <i class={`${icon()} k2b-choice-trigger__placeholder-icon`} aria-hidden=\"true\" />}\n </Show>\n <span class=\"k2b-choice-trigger__value\" data-placeholder=\"true\">\n {props.placeholder ?? messages().select}\n </span>\n </>\n }\n >\n <span\n ref={valuesRef}\n class=\"k2b-multi-select-trigger__values\"\n data-overflowing={hiddenOptions().length > 0 ? \"true\" : undefined}\n >\n <For each={selected()}>\n {(option, index) => (\n <span\n class=\"k2b-choice-pill\"\n style={colorTintStyle(option.color)}\n title={option.label}\n data-hidden={index() >= visibleCount() ? \"true\" : undefined}\n >\n <Show\n when={props.renderValue}\n fallback={\n <>\n <Show when={option.icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>\n <span>{option.label}</span>\n </>\n }\n >\n {(render) => <span class=\"k2b-choice-pill__content\">{render()(option)}</span>}\n </Show>\n <Show when={!plain()}>\n <button\n type=\"button\"\n aria-label={messages().removeNamed({ name: option.label })}\n disabled={props.disabled}\n tabIndex={-1}\n onClick={(event) => {\n event.stopPropagation();\n remove(option.value);\n }}\n >\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n </span>\n )}\n </For>\n <Show when={selected().length > 1 && !plain()}>\n <span\n ref={(element) => {\n moreRef = element;\n resizeObserver?.observe(element);\n onCleanup(() => resizeObserver?.unobserve(element));\n }}\n class=\"k2b-multi-select-trigger__more\"\n title={\n hiddenOptions()\n .map((option) => option.label)\n .join(\", \") || undefined\n }\n data-hidden={hiddenOptions().length === 0 ? \"true\" : undefined}\n >\n <span aria-hidden=\"true\">+{moreCount()}</span>\n <span class=\"k2b-sr-only\">{messages().moreSelected({ count: moreCount() })}</span>\n </span>\n </Show>\n </span>\n </Show>\n <Show when={!hasClearAction()}>\n <i\n class={`${popover.open() ? (props.activeIcon ?? \"ti ti-chevron-up\") : (props.icon ?? \"ti ti-chevron-down\")} k2b-multi-select-trigger__chevron`}\n aria-hidden=\"true\"\n />\n </Show>\n </div>\n <Show when={hasClearAction()}>\n <button\n type=\"button\"\n class=\"k2b-choice-control__clear k2b-input-clear-action\"\n aria-label={props.clearLabel ?? messages().clearSelection}\n onClick={(event) => {\n event.stopPropagation();\n emit([]);\n popover.trigger()?.focus();\n }}\n >\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n\n <div\n ref={popover.setPopover}\n popover=\"manual\"\n class=\"k2b-choice-popover\"\n role=\"group\"\n onKeyDown={handleKeyDown}\n aria-label={typeof props.label === \"string\" ? props.label : (props[\"aria-label\"] ?? messages().options)}\n >\n <Show when={searchable()}>\n <div class=\"k2b-choice-search\">\n <i class=\"ti ti-search\" aria-hidden=\"true\" />\n <input\n ref={searchRef}\n type=\"search\"\n value={query()}\n placeholder={props.searchPlaceholder ?? messages().search}\n aria-label={props.searchPlaceholder ?? messages().searchOptions}\n aria-controls={listboxId}\n aria-activedescendant={focusedOption() ? `${listboxId}-${focusedIndex()}` : undefined}\n onInput={(event) => {\n const next = event.currentTarget.value;\n setQuery(next);\n if (isAsync()) asyncOptions.load(next);\n focusFirst();\n }}\n />\n </div>\n </Show>\n <Show when={(props.groups?.length ?? 0) > 0}>\n <div class=\"k2b-choice-toolbar\">\n <ChoiceGroups\n choices={groupChoices()}\n value={activeGroup()}\n onValueChange={chooseGroup}\n ariaLabel={props.groupsAriaLabel ?? messages().filterOptions}\n controls={listboxId}\n />\n </div>\n </Show>\n <div id={listboxId} class=\"k2b-choice-options\" role=\"listbox\" aria-multiselectable=\"true\">\n <Show when={asyncOptions.error()}>\n {(message) => (\n <div class=\"k2b-choice-status\" data-tone=\"danger\">\n <span>{message()}</span>\n <button type=\"button\" onClick={asyncOptions.retry}>\n {props.retryLabel ?? messages().retry}\n </button>\n </div>\n )}\n </Show>\n <Show when={asyncOptions.loading() && visibleOptions().length === 0}>\n <div class=\"k2b-choice-status\">\n <i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\" />\n <span>{props.loadingLabel ?? messages().loading}</span>\n </div>\n </Show>\n <For\n each={asyncOptions.error() ? [] : visibleOptions()}\n fallback={\n <Show when={!asyncOptions.loading() && !asyncOptions.error()}>\n <div class=\"k2b-choice-status\">\n {isAsync() || query() ? (props.noResultsLabel ?? messages().noResults) : (props.emptyLabel ?? messages().noOptions)}\n </div>\n </Show>\n }\n >\n {(option, index) => (\n <button\n type=\"button\"\n id={`${listboxId}-${index()}`}\n class=\"k2b-choice-option\"\n role=\"option\"\n aria-label={option.label}\n aria-selected={isSelected(option.value)}\n data-focused={index() === focusedIndex() ? \"true\" : undefined}\n disabled={option.disabled}\n onPointerMove={() => !option.disabled && setFocusedIndex(index())}\n onClick={() => toggleOption(option)}\n >\n <span class=\"k2b-choice-option__checkbox\" aria-hidden=\"true\">\n <i class=\"ti ti-check\" />\n </span>\n <Show\n when={option.icon}\n fallback={\n <Show when={normalizeHexColor(option.color)}>\n {(color) => <span class=\"k2b-choice-dot\" style={{ background: color() }} aria-hidden=\"true\" />}\n </Show>\n }\n >\n {(icon) => <i class={icon()} style={iconColor(option.color)} aria-hidden=\"true\" />}\n </Show>\n <span class=\"k2b-choice-option__content\">\n <Show\n when={props.renderOption}\n fallback={\n <>\n <strong>{option.label}</strong>\n <Show when={option.description}>{(description) => <small>{description()}</small>}</Show>\n </>\n }\n >\n {(render) => render()(option)}\n </Show>\n </span>\n </button>\n )}\n </For>\n </div>\n </div>\n <Show when={props.name}>{(name) => <input type=\"hidden\" name={name()} value={values().join(\",\")} />}</Show>\n </div>\n </Field>\n );\n}\n\nexport default MultiSelectInput;\n"],"mappings":"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","ignoreList":[]}
|