@bysages/solid 0.4.4 → 0.5.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/README.md +2 -2
- package/dist/ai-NX47X8sz.mjs +365 -0
- package/dist/ai-prompt-input-CEnnpkgi.mjs +486 -0
- package/dist/{ai-response-CJ-uEAgj.mjs → ai-response-BM_DVIDY.mjs} +25 -27
- package/dist/{chevron-BHQrYKPM.mjs → chevron-DGKPHc2O.mjs} +2 -3
- package/dist/components/accordion/index.d.mts +1 -2
- package/dist/components/accordion/index.mjs +9 -16
- package/dist/components/affix/index.d.mts +1 -3
- package/dist/components/affix/index.mjs +19 -18
- package/dist/components/ai/index.d.mts +95 -2
- package/dist/components/ai/index.mjs +7 -69
- package/dist/components/ai-action/index.d.mts +0 -2
- package/dist/components/ai-action/index.mjs +4 -5
- package/dist/components/ai-attachments/index.d.mts +0 -2
- package/dist/components/ai-attachments/index.mjs +39 -52
- package/dist/components/ai-message/index.d.mts +2 -15
- package/dist/components/ai-message/index.mjs +18 -15
- package/dist/components/ai-prompt-input/index.d.mts +19 -15
- package/dist/components/ai-prompt-input/index.mjs +1 -168
- package/dist/components/ai-reasoning/index.d.mts +0 -2
- package/dist/components/ai-reasoning/index.mjs +8 -13
- package/dist/components/ai-response/index.d.mts +1 -3
- package/dist/components/ai-response/index.mjs +1 -2
- package/dist/components/ai-source/index.d.mts +0 -2
- package/dist/components/ai-source/index.mjs +25 -26
- package/dist/components/ai-suggestion/index.d.mts +0 -2
- package/dist/components/ai-suggestion/index.mjs +3 -4
- package/dist/components/ai-tool/index.d.mts +2 -25
- package/dist/components/ai-tool/index.mjs +75 -40
- package/dist/components/alert/index.d.mts +1 -2
- package/dist/components/alert/index.mjs +38 -33
- package/dist/components/angle-slider/index.d.mts +1 -2
- package/dist/components/angle-slider/index.mjs +6 -9
- package/dist/components/aspect-ratio/index.d.mts +1 -3
- package/dist/components/aspect-ratio/index.mjs +18 -17
- package/dist/components/autocomplete/index.d.mts +1 -2
- package/dist/components/autocomplete/index.mjs +6 -8
- package/dist/components/avatar/index.d.mts +1 -2
- package/dist/components/avatar/index.mjs +6 -7
- package/dist/components/avatar-group/index.d.mts +1 -3
- package/dist/components/avatar-group/index.mjs +15 -14
- package/dist/components/back-top/index.d.mts +1 -3
- package/dist/components/back-top/index.mjs +29 -34
- package/dist/components/badge/index.d.mts +1 -3
- package/dist/components/badge/index.mjs +18 -17
- package/dist/components/banner/index.d.mts +1 -2
- package/dist/components/banner/index.mjs +32 -31
- package/dist/components/bento/index.d.mts +1 -3
- package/dist/components/bento/index.mjs +30 -31
- package/dist/components/block-ui/index.d.mts +1 -3
- package/dist/components/block-ui/index.mjs +30 -33
- package/dist/components/breadcrumb/index.d.mts +1 -2
- package/dist/components/breadcrumb/index.mjs +8 -13
- package/dist/components/browser/index.d.mts +1 -3
- package/dist/components/browser/index.mjs +50 -51
- package/dist/components/button/index.d.mts +1 -3
- package/dist/components/button/index.mjs +31 -30
- package/dist/components/button-group/index.d.mts +1 -3
- package/dist/components/button-group/index.mjs +21 -20
- package/dist/components/calendar/index.d.mts +0 -2
- package/dist/components/calendar/index.mjs +73 -116
- package/dist/components/card/index.d.mts +1 -3
- package/dist/components/card/index.mjs +3 -4
- package/dist/components/carousel/index.d.mts +1 -2
- package/dist/components/carousel/index.mjs +6 -7
- package/dist/components/cascade-select/index.d.mts +1 -3
- package/dist/components/cascade-select/index.mjs +127 -167
- package/dist/components/checkbox/index.d.mts +1 -2
- package/dist/components/checkbox/index.mjs +7 -10
- package/dist/components/checkbox-group/index.d.mts +1 -2
- package/dist/components/checkbox-group/index.mjs +9 -12
- package/dist/components/chip/index.d.mts +1 -3
- package/dist/components/chip/index.mjs +22 -25
- package/dist/components/client-only/index.d.mts +0 -2
- package/dist/components/client-only/index.mjs +2 -3
- package/dist/components/clipboard/index.d.mts +1 -2
- package/dist/components/clipboard/index.mjs +10 -17
- package/dist/components/collapsible/index.d.mts +1 -2
- package/dist/components/collapsible/index.mjs +7 -14
- package/dist/components/collection/index.mjs +1 -2
- package/dist/components/color-picker/index.d.mts +1 -2
- package/dist/components/color-picker/index.mjs +10 -14
- package/dist/components/combobox/index.d.mts +1 -2
- package/dist/components/combobox/index.mjs +9 -14
- package/dist/components/command/index.d.mts +1 -2
- package/dist/components/command/index.mjs +63 -80
- package/dist/components/comment/index.d.mts +1 -3
- package/dist/components/comment/index.mjs +64 -80
- package/dist/components/config-provider/index.d.mts +1 -3
- package/dist/components/config-provider/index.mjs +10 -13
- package/dist/components/container/index.d.mts +1 -3
- package/dist/components/container/index.mjs +18 -17
- package/dist/components/data-view/index.d.mts +1 -3
- package/dist/components/data-view/index.mjs +81 -90
- package/dist/components/date-input/index.d.mts +1 -2
- package/dist/components/date-input/index.mjs +6 -9
- package/dist/components/date-picker/index.d.mts +1 -2
- package/dist/components/date-picker/index.mjs +11 -16
- package/dist/components/deferred-content/index.d.mts +1 -3
- package/dist/components/deferred-content/index.mjs +24 -25
- package/dist/components/descriptions/index.d.mts +1 -2
- package/dist/components/descriptions/index.mjs +40 -39
- package/dist/components/dialog/index.d.mts +11 -2
- package/dist/components/dialog/index.mjs +78 -40
- package/dist/components/dock/index.d.mts +1 -3
- package/dist/components/dock/index.mjs +29 -30
- package/dist/components/download-trigger/index.d.mts +0 -2
- package/dist/components/download-trigger/index.mjs +2 -3
- package/dist/components/drawer/index.d.mts +1 -2
- package/dist/components/drawer/index.mjs +9 -18
- package/dist/components/dynamic-input/index.d.mts +1 -3
- package/dist/components/dynamic-input/index.mjs +73 -77
- package/dist/components/editable/index.d.mts +1 -2
- package/dist/components/editable/index.mjs +7 -10
- package/dist/components/ellipsis/index.d.mts +1 -3
- package/dist/components/ellipsis/index.mjs +21 -20
- package/dist/components/empty/index.d.mts +1 -3
- package/dist/components/empty/index.mjs +3 -4
- package/dist/components/field/index.d.mts +1 -2
- package/dist/components/field/index.mjs +4 -5
- package/dist/components/fieldset/index.d.mts +1 -2
- package/dist/components/fieldset/index.mjs +6 -9
- package/dist/components/file-upload/index.d.mts +1 -2
- package/dist/components/file-upload/index.mjs +6 -7
- package/dist/components/float-button/index.d.mts +1 -2
- package/dist/components/float-button/index.mjs +41 -43
- package/dist/components/floating-panel/index.d.mts +1 -2
- package/dist/components/floating-panel/index.mjs +10 -21
- package/dist/components/focus-trap/index.d.mts +0 -2
- package/dist/components/focus-trap/index.mjs +2 -3
- package/dist/components/form/index.d.mts +0 -2
- package/dist/components/form/index.mjs +42 -58
- package/dist/components/format/index.d.mts +1 -3
- package/dist/components/format/index.mjs +1 -2
- package/dist/components/frame/index.d.mts +1 -2
- package/dist/components/frame/index.mjs +3 -4
- package/dist/components/grid/index.d.mts +1 -3
- package/dist/components/grid/index.mjs +23 -22
- package/dist/components/highlight/index.d.mts +1 -3
- package/dist/components/highlight/index.mjs +2 -3
- package/dist/components/hover-card/index.d.mts +1 -2
- package/dist/components/hover-card/index.mjs +12 -27
- package/dist/components/icon/index.d.mts +1 -3
- package/dist/components/icon/index.mjs +35 -36
- package/dist/components/image/index.d.mts +1 -3
- package/dist/components/image/index.mjs +48 -52
- package/dist/components/image-cropper/index.d.mts +1 -2
- package/dist/components/image-cropper/index.mjs +5 -6
- package/dist/components/image-viewer/index.d.mts +1 -1
- package/dist/components/image-viewer/index.mjs +1 -2
- package/dist/components/input/index.d.mts +1 -3
- package/dist/components/input/index.mjs +1 -2
- package/dist/components/input-group/index.d.mts +1 -2
- package/dist/components/input-group/index.mjs +19 -16
- package/dist/components/json-tree-view/index.d.mts +1 -2
- package/dist/components/json-tree-view/index.mjs +5 -6
- package/dist/components/kbd/index.d.mts +1 -3
- package/dist/components/kbd/index.mjs +12 -11
- package/dist/components/layout/index.d.mts +1 -2
- package/dist/components/layout/index.mjs +92 -84
- package/dist/components/link/index.d.mts +1 -3
- package/dist/components/link/index.mjs +15 -15
- package/dist/components/list/index.d.mts +1 -2
- package/dist/components/list/index.mjs +57 -61
- package/dist/components/listbox/index.d.mts +1 -2
- package/dist/components/listbox/index.mjs +8 -11
- package/dist/components/marquee/index.d.mts +1 -2
- package/dist/components/marquee/index.mjs +7 -8
- package/dist/components/masonry/index.d.mts +1 -3
- package/dist/components/masonry/index.mjs +19 -18
- package/dist/components/media-player/index.d.mts +1 -1
- package/dist/components/media-player/index.mjs +1 -2
- package/dist/components/mentions/index.d.mts +2 -2
- package/dist/components/mentions/index.mjs +1 -3
- package/dist/components/menu/index.d.mts +1 -2
- package/dist/components/menu/index.mjs +8 -17
- package/dist/components/menubar/index.d.mts +1 -2
- package/dist/components/menubar/index.mjs +66 -72
- package/dist/components/meter/index.d.mts +1 -2
- package/dist/components/meter/index.mjs +42 -43
- package/dist/components/navigation-menu/index.d.mts +1 -2
- package/dist/components/navigation-menu/index.mjs +7 -12
- package/dist/components/number-input/index.d.mts +1 -2
- package/dist/components/number-input/index.mjs +7 -10
- package/dist/components/order-list/index.d.mts +1 -3
- package/dist/components/order-list/index.mjs +86 -101
- package/dist/components/page-header/index.d.mts +1 -3
- package/dist/components/page-header/index.mjs +3 -4
- package/dist/components/pagination/index.d.mts +1 -2
- package/dist/components/pagination/index.mjs +31 -42
- package/dist/components/password-input/index.d.mts +1 -2
- package/dist/components/password-input/index.mjs +6 -7
- package/dist/components/pin-input/index.d.mts +1 -2
- package/dist/components/pin-input/index.mjs +6 -9
- package/dist/components/popconfirm/index.d.mts +2 -3
- package/dist/components/popconfirm/index.mjs +15 -23
- package/dist/components/popover/index.d.mts +2 -26
- package/dist/components/popover/index.mjs +10 -21
- package/dist/components/presence/index.d.mts +0 -2
- package/dist/components/presence/index.mjs +2 -3
- package/dist/components/progress/index.d.mts +1 -2
- package/dist/components/progress/index.mjs +14 -26
- package/dist/components/progress-group/index.d.mts +1 -3
- package/dist/components/progress-group/index.mjs +60 -68
- package/dist/components/qr-code/index.d.mts +1 -2
- package/dist/components/qr-code/index.mjs +5 -8
- package/dist/components/radio-group/index.d.mts +1 -2
- package/dist/components/radio-group/index.mjs +6 -9
- package/dist/components/rating-group/index.d.mts +1 -2
- package/dist/components/rating-group/index.mjs +7 -10
- package/dist/components/result/index.d.mts +1 -2
- package/dist/components/result/index.mjs +28 -29
- package/dist/components/scroll-area/index.d.mts +8 -3
- package/dist/components/scroll-area/index.mjs +19 -11
- package/dist/components/segment-group/index.d.mts +1 -2
- package/dist/components/segment-group/index.mjs +5 -8
- package/dist/components/select/index.d.mts +1 -1
- package/dist/components/select/index.mjs +1 -2
- package/dist/components/separator/index.d.mts +1 -3
- package/dist/components/separator/index.mjs +21 -20
- package/dist/components/signature-pad/index.d.mts +1 -2
- package/dist/components/signature-pad/index.mjs +7 -10
- package/dist/components/skeleton/index.d.mts +1 -3
- package/dist/components/skeleton/index.mjs +12 -11
- package/dist/components/slider/index.d.mts +1 -2
- package/dist/components/slider/index.mjs +6 -9
- package/dist/components/spinner/index.d.mts +1 -3
- package/dist/components/spinner/index.mjs +20 -19
- package/dist/components/split-button/index.d.mts +1 -2
- package/dist/components/split-button/index.mjs +92 -94
- package/dist/components/splitter/index.d.mts +1 -2
- package/dist/components/splitter/index.mjs +5 -8
- package/dist/components/spotlight/index.d.mts +1 -3
- package/dist/components/spotlight/index.mjs +22 -23
- package/dist/components/stack/index.d.mts +1 -3
- package/dist/components/stack/index.mjs +24 -23
- package/dist/components/stat/index.d.mts +1 -2
- package/dist/components/stat/index.mjs +15 -14
- package/dist/components/steps/index.d.mts +0 -2
- package/dist/components/steps/index.mjs +10 -17
- package/dist/components/swap/index.d.mts +1 -2
- package/dist/components/swap/index.mjs +5 -6
- package/dist/components/switch/index.d.mts +1 -2
- package/dist/components/switch/index.mjs +6 -9
- package/dist/components/table/index.d.mts +0 -2
- package/dist/components/table/index.mjs +233 -320
- package/dist/components/tabs/index.d.mts +8 -12
- package/dist/components/tabs/index.mjs +83 -34
- package/dist/components/tag/index.d.mts +1 -2
- package/dist/components/tag/index.mjs +46 -70
- package/dist/components/tags-input/index.d.mts +1 -2
- package/dist/components/tags-input/index.mjs +7 -10
- package/dist/components/terminal/index.d.mts +3 -3
- package/dist/components/terminal/index.mjs +61 -56
- package/dist/components/textarea/index.d.mts +1 -3
- package/dist/components/textarea/index.mjs +10 -11
- package/dist/components/timeline/index.d.mts +1 -2
- package/dist/components/timeline/index.mjs +15 -14
- package/dist/components/timer/index.d.mts +1 -2
- package/dist/components/timer/index.mjs +5 -6
- package/dist/components/toast/index.d.mts +0 -2
- package/dist/components/toast/index.mjs +5 -6
- package/dist/components/toc/index.d.mts +1 -1
- package/dist/components/toc/index.mjs +1 -2
- package/dist/components/toggle/index.d.mts +1 -2
- package/dist/components/toggle/index.mjs +5 -6
- package/dist/components/toggle-group/index.d.mts +1 -2
- package/dist/components/toggle-group/index.mjs +11 -16
- package/dist/components/toolbar/index.d.mts +1 -3
- package/dist/components/toolbar/index.mjs +27 -31
- package/dist/components/tooltip/index.d.mts +1 -2
- package/dist/components/tooltip/index.mjs +7 -16
- package/dist/components/tour/index.d.mts +0 -2
- package/dist/components/tour/index.mjs +11 -16
- package/dist/components/transfer/index.d.mts +1 -2
- package/dist/components/transfer/index.mjs +115 -126
- package/dist/components/tree-select/index.d.mts +2 -3
- package/dist/components/tree-select/index.mjs +24 -33
- package/dist/components/tree-view/index.d.mts +10 -4
- package/dist/components/tree-view/index.mjs +32 -23
- package/dist/components/typography/index.d.mts +2 -3
- package/dist/components/typography/index.mjs +4 -4
- package/dist/components/user/index.d.mts +1 -3
- package/dist/components/user/index.mjs +40 -57
- package/dist/components/virtual-list/index.d.mts +1 -3
- package/dist/components/virtual-list/index.mjs +39 -45
- package/dist/components/watermark/index.d.mts +1 -3
- package/dist/components/watermark/index.mjs +15 -22
- package/dist/{element-dGIhOTJ6.mjs → element-liigPBUh.mjs} +1 -2
- package/dist/{family-Cmd8HEyK.mjs → family-B5HtE0on.mjs} +1 -2
- package/dist/generative/index.d.mts +0 -2
- package/dist/generative/index.mjs +28 -53
- package/dist/{icon-DTqmJCd5.mjs → icon-DQqYA2fO.mjs} +11 -17
- package/dist/{id-2ygNzPHF.mjs → id-DGvz-2rQ.mjs} +1 -2
- package/dist/{image-viewer-19s75Hz_.mjs → image-viewer-TEia4PaY.mjs} +73 -101
- package/dist/{index-BU5U5w04.d.mts → index-B4WyTngM.d.mts} +0 -4
- package/dist/index-BRvSfkKs.d.mts +25 -0
- package/dist/{index-DhripUtf.d.mts → index-CTsFsYdA.d.mts} +0 -4
- package/dist/index-CutrHCzU.d.mts +153 -0
- package/dist/{index-wW28BYf1.d.mts → index-CwmZdzxT.d.mts} +0 -8
- package/dist/index-DK7YgaAU.d.mts +37 -0
- package/dist/index-Dms00480.d.mts +115 -0
- package/dist/{index-ID48LCMU.d.mts → index-Dv6mwzIr.d.mts} +3 -7
- package/dist/index.d.mts +13 -13
- package/dist/index.mjs +12 -12
- package/dist/{input-BL3N3L8g.mjs → input-2xfPP-7Z.mjs} +11 -13
- package/dist/{media-player-yF7KVUxM.mjs → media-player-LHnTiSiN.mjs} +248 -259
- package/dist/mentions-CvY9IGzc.mjs +438 -0
- package/dist/{select-DI7pFspF.mjs → select-NaNlrYUT.mjs} +72 -96
- package/dist/{toc-DRHr8_eD.mjs → toc-RnPG3w7q.mjs} +5 -7
- package/dist/{use-component-messages-C4SCVYjD.mjs → use-component-messages-DS9ppb4C.mjs} +1 -2
- package/package.json +13 -13
- package/dist/index-DEArHiFI.d.mts +0 -104
- package/dist/index-DVc1L_zt.d.mts +0 -10435
- package/dist/mentions-DKUG7eHt.mjs +0 -279
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
import { n as withSelfRoot, t as defineFamily } from "./family-B5HtE0on.mjs";
|
|
2
|
+
import { t as useElementId } from "./id-DGvz-2rQ.mjs";
|
|
3
|
+
import { Icon } from "./components/icon/index.mjs";
|
|
4
|
+
import { Popover as Popover$1 } from "./components/popover/index.mjs";
|
|
5
|
+
import { Portal, createComponent, delegateEvents, effect, insert, memo, mergeProps, setAttribute, spread, template } from "solid-js/web";
|
|
6
|
+
import { injectComponentStyle } from "@bysages/core/styling";
|
|
7
|
+
import { For, Show, createSignal, splitProps } from "solid-js";
|
|
8
|
+
import { Field } from "@ark-ui/solid/field";
|
|
9
|
+
import { Popover } from "@ark-ui/solid/popover";
|
|
10
|
+
// src/components/mentions/use-mentions.ts
|
|
11
|
+
/** The @-detection machinery behind a mention field: watch the caret,
|
|
12
|
+
* offer the matching candidates, and answer for the keys that drive
|
|
13
|
+
* them. The field element arrives as an accessor because hosts wrap it
|
|
14
|
+
* differently (a bare textarea, a field's own part).
|
|
15
|
+
*
|
|
16
|
+
* `onKeydown` answers whether the vessel consumed the key, so a host
|
|
17
|
+
* with its own Enter semantics — a composer that sends — can yield to
|
|
18
|
+
* the candidates first and act only when the vessel stands down. */
|
|
19
|
+
function useMentions(options, textarea, handlers) {
|
|
20
|
+
const [popupOpen, setPopupOpen] = createSignal(false);
|
|
21
|
+
const [matches, setMatches] = createSignal([]);
|
|
22
|
+
const [active, setActive] = createSignal(0);
|
|
23
|
+
const [anchorIndex, setAnchorIndex] = createSignal(0);
|
|
24
|
+
const [caretIndex, setCaretIndex] = createSignal(0);
|
|
25
|
+
const [activeTrigger, setActiveTrigger] = createSignal("@");
|
|
26
|
+
const triggers = () => {
|
|
27
|
+
const value = options().triggers ?? options().trigger ?? "@";
|
|
28
|
+
return (Array.isArray(value) ? value : [value]).filter((trigger) => trigger.length > 0);
|
|
29
|
+
};
|
|
30
|
+
const closePopup = () => {
|
|
31
|
+
setPopupOpen(false);
|
|
32
|
+
setMatches([]);
|
|
33
|
+
};
|
|
34
|
+
const moveActive = (delta) => {
|
|
35
|
+
const enabled = matches().map((entry, index) => ({
|
|
36
|
+
entry,
|
|
37
|
+
index
|
|
38
|
+
})).filter(({ entry }) => !entry.disabled);
|
|
39
|
+
if (enabled.length === 0) return;
|
|
40
|
+
const position = enabled.findIndex(({ index }) => index === active());
|
|
41
|
+
const next = position === -1 ? 0 : (position + delta + enabled.length) % enabled.length;
|
|
42
|
+
setActive(enabled[next]?.index ?? 0);
|
|
43
|
+
};
|
|
44
|
+
const detect = () => {
|
|
45
|
+
const text = handlers.getText();
|
|
46
|
+
const el = textarea();
|
|
47
|
+
const caret = handlers.getCaret?.() ?? el?.selectionStart ?? text.length;
|
|
48
|
+
setCaretIndex(caret);
|
|
49
|
+
const head = text.slice(0, caret);
|
|
50
|
+
const found = triggers().map((trigger) => ({
|
|
51
|
+
trigger,
|
|
52
|
+
anchor: head.lastIndexOf(trigger)
|
|
53
|
+
})).filter((candidate) => candidate.anchor !== -1).sort((left, right) => right.anchor - left.anchor || right.trigger.length - left.trigger.length)[0];
|
|
54
|
+
const token = found ? head.slice(found.anchor + found.trigger.length) : "";
|
|
55
|
+
if (!found || /\s/.test(token)) {
|
|
56
|
+
closePopup();
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const query = token.toLowerCase();
|
|
60
|
+
const roster = options().items.filter((entry) => entry.label.toLowerCase().startsWith(query) || entry.value.toLowerCase().startsWith(query));
|
|
61
|
+
setMatches(roster);
|
|
62
|
+
setActive(roster.findIndex((entry) => !entry.disabled));
|
|
63
|
+
setAnchorIndex(found.anchor);
|
|
64
|
+
setActiveTrigger(found.trigger);
|
|
65
|
+
setPopupOpen(roster.length > 0);
|
|
66
|
+
};
|
|
67
|
+
const insert = (entry) => {
|
|
68
|
+
if (entry.disabled) {
|
|
69
|
+
closePopup();
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (handlers.select?.(entry) === false) {
|
|
73
|
+
handlers.commit?.(entry);
|
|
74
|
+
closePopup();
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if (handlers.commit) {
|
|
78
|
+
handlers.commit(entry);
|
|
79
|
+
closePopup();
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const text = handlers.getText();
|
|
83
|
+
const trigger = activeTrigger();
|
|
84
|
+
const replacement = entry.insertText ?? trigger + entry.label;
|
|
85
|
+
const suffix = entry.insertText == null ? " " : "";
|
|
86
|
+
const next = text.slice(0, anchorIndex()) + replacement + suffix + text.slice(caretIndex());
|
|
87
|
+
handlers.setText(next);
|
|
88
|
+
closePopup();
|
|
89
|
+
queueMicrotask(() => {
|
|
90
|
+
const el = textarea();
|
|
91
|
+
if (!el) return;
|
|
92
|
+
const caret = anchorIndex() + replacement.length + suffix.length;
|
|
93
|
+
el.focus();
|
|
94
|
+
el.setSelectionRange(caret, caret);
|
|
95
|
+
});
|
|
96
|
+
};
|
|
97
|
+
/** Feed the field's input events through here — the vessel watches
|
|
98
|
+
* the text as it lands, from the element itself. */
|
|
99
|
+
const onInput = () => detect();
|
|
100
|
+
/** Arrows move, configured commit keys insert, Escape dismisses.
|
|
101
|
+
* Answers `true` when the vessel consumed the key. */
|
|
102
|
+
const onKeydown = (event) => {
|
|
103
|
+
if (!popupOpen() || matches().length === 0) return false;
|
|
104
|
+
if (event.key === "ArrowDown") {
|
|
105
|
+
event.preventDefault();
|
|
106
|
+
moveActive(1);
|
|
107
|
+
} else if (event.key === "ArrowUp") {
|
|
108
|
+
event.preventDefault();
|
|
109
|
+
moveActive(-1);
|
|
110
|
+
} else if ((options().commitKeys ?? ["Enter", " "]).includes(event.key)) {
|
|
111
|
+
const entry = matches()[active()];
|
|
112
|
+
if (!entry || entry.disabled) return false;
|
|
113
|
+
event.preventDefault();
|
|
114
|
+
insert(entry);
|
|
115
|
+
} else if (event.key === "Escape") closePopup();
|
|
116
|
+
else return false;
|
|
117
|
+
return true;
|
|
118
|
+
};
|
|
119
|
+
return {
|
|
120
|
+
open: popupOpen,
|
|
121
|
+
matches,
|
|
122
|
+
active,
|
|
123
|
+
setActive,
|
|
124
|
+
anchorIndex,
|
|
125
|
+
caretIndex,
|
|
126
|
+
activeTrigger,
|
|
127
|
+
insert,
|
|
128
|
+
close: closePopup,
|
|
129
|
+
onInput,
|
|
130
|
+
onKeydown
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
// src/components/mentions/index.tsx
|
|
134
|
+
var _tmpl$ = /*#__PURE__*/ template(`<span data-scope=mentions data-part=option-description>`);
|
|
135
|
+
var _tmpl$2 = /*#__PURE__*/ template(`<span data-scope=mentions data-part=option-kind>`);
|
|
136
|
+
var _tmpl$3 = /*#__PURE__*/ template(`<div role=option tabindex=-1 data-scope=mentions data-part=option><span data-scope=mentions data-part=option-main><span data-scope=mentions data-part=option-label>`);
|
|
137
|
+
var _tmpl$4 = /*#__PURE__*/ template(`<div>`);
|
|
138
|
+
var _tmpl$5 = /*#__PURE__*/ template(`<div role=group data-scope=mentions data-part=group><div data-scope=mentions data-part=group-label>`);
|
|
139
|
+
function groupMentions(matches) {
|
|
140
|
+
const ordered = [];
|
|
141
|
+
const byName = /* @__PURE__ */ new Map();
|
|
142
|
+
matches.forEach((entry, index) => {
|
|
143
|
+
const name = entry.group ?? "";
|
|
144
|
+
const group = byName.get(name);
|
|
145
|
+
if (group) group.entries.push({
|
|
146
|
+
entry,
|
|
147
|
+
index
|
|
148
|
+
});
|
|
149
|
+
else {
|
|
150
|
+
const next = {
|
|
151
|
+
name,
|
|
152
|
+
entries: [{
|
|
153
|
+
entry,
|
|
154
|
+
index
|
|
155
|
+
}]
|
|
156
|
+
};
|
|
157
|
+
byName.set(name, next);
|
|
158
|
+
ordered.push(next);
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
return ordered;
|
|
162
|
+
}
|
|
163
|
+
/** The vessel: the candidates themselves as a floating card. A host can
|
|
164
|
+
* render its field through the Anchor; the rectangle fallback keeps the
|
|
165
|
+
* textarea in the host's own anatomy. Shares the detection state with
|
|
166
|
+
* the host through `useMentions`. */
|
|
167
|
+
const MentionsVessel = withSelfRoot(function MentionsVessel(props) {
|
|
168
|
+
injectComponentStyle("mentions");
|
|
169
|
+
const id = useElementId("mentions-vessel", () => props.id);
|
|
170
|
+
const popupId = () => `${id()}:popup`;
|
|
171
|
+
const option = (entry, index) => {
|
|
172
|
+
const active = () => index() === (props.active ?? 0) && !entry.disabled;
|
|
173
|
+
return (() => {
|
|
174
|
+
var _el$ = _tmpl$3(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild;
|
|
175
|
+
_el$.$$keydown = (event) => {
|
|
176
|
+
if (event.key !== "Enter" && event.key !== " ") return;
|
|
177
|
+
event.preventDefault();
|
|
178
|
+
if (!entry.disabled) props.onInsert?.(entry);
|
|
179
|
+
};
|
|
180
|
+
_el$.$$mousedown = (event) => {
|
|
181
|
+
if (event.button !== 0) return;
|
|
182
|
+
event.preventDefault();
|
|
183
|
+
if (!entry.disabled) props.onInsert?.(entry);
|
|
184
|
+
};
|
|
185
|
+
_el$.addEventListener("mouseenter", () => {
|
|
186
|
+
if (!entry.disabled) props.onActiveChange?.(index());
|
|
187
|
+
});
|
|
188
|
+
insert(_el$, createComponent(Show, {
|
|
189
|
+
get when() {
|
|
190
|
+
return entry.icon;
|
|
191
|
+
},
|
|
192
|
+
get children() {
|
|
193
|
+
return createComponent(Icon, { get name() {
|
|
194
|
+
return entry.icon;
|
|
195
|
+
} });
|
|
196
|
+
}
|
|
197
|
+
}), _el$2);
|
|
198
|
+
insert(_el$3, () => entry.label);
|
|
199
|
+
insert(_el$2, createComponent(Show, {
|
|
200
|
+
get when() {
|
|
201
|
+
return entry.description;
|
|
202
|
+
},
|
|
203
|
+
get children() {
|
|
204
|
+
var _el$4 = _tmpl$();
|
|
205
|
+
insert(_el$4, () => entry.description);
|
|
206
|
+
return _el$4;
|
|
207
|
+
}
|
|
208
|
+
}), null);
|
|
209
|
+
insert(_el$, createComponent(Show, {
|
|
210
|
+
get when() {
|
|
211
|
+
return entry.kind;
|
|
212
|
+
},
|
|
213
|
+
get children() {
|
|
214
|
+
var _el$5 = _tmpl$2();
|
|
215
|
+
insert(_el$5, () => entry.kind);
|
|
216
|
+
return _el$5;
|
|
217
|
+
}
|
|
218
|
+
}), null);
|
|
219
|
+
effect((_p$) => {
|
|
220
|
+
var _v$ = `${popupId()}:option-${index()}`, _v$2 = active(), _v$3 = entry.disabled ? "true" : void 0, _v$4 = active() ? "" : void 0, _v$5 = entry.disabled ? "" : void 0;
|
|
221
|
+
_v$ !== _p$.e && setAttribute(_el$, "id", _p$.e = _v$);
|
|
222
|
+
_v$2 !== _p$.t && setAttribute(_el$, "aria-selected", _p$.t = _v$2);
|
|
223
|
+
_v$3 !== _p$.a && setAttribute(_el$, "aria-disabled", _p$.a = _v$3);
|
|
224
|
+
_v$4 !== _p$.o && setAttribute(_el$, "data-active", _p$.o = _v$4);
|
|
225
|
+
_v$5 !== _p$.i && setAttribute(_el$, "data-disabled", _p$.i = _v$5);
|
|
226
|
+
return _p$;
|
|
227
|
+
}, {
|
|
228
|
+
e: void 0,
|
|
229
|
+
t: void 0,
|
|
230
|
+
a: void 0,
|
|
231
|
+
o: void 0,
|
|
232
|
+
i: void 0
|
|
233
|
+
});
|
|
234
|
+
return _el$;
|
|
235
|
+
})();
|
|
236
|
+
};
|
|
237
|
+
return createComponent(Popover.Root, {
|
|
238
|
+
get id() {
|
|
239
|
+
return `${id()}:vessel`;
|
|
240
|
+
},
|
|
241
|
+
get ids() {
|
|
242
|
+
return { content: popupId() };
|
|
243
|
+
},
|
|
244
|
+
get open() {
|
|
245
|
+
return props.open ?? false;
|
|
246
|
+
},
|
|
247
|
+
onOpenChange: (details) => props.onOpenChange?.(details.open),
|
|
248
|
+
get positioning() {
|
|
249
|
+
return memo(() => !!props.children)() ? { placement: props.placement ?? "bottom-start" } : {
|
|
250
|
+
placement: props.placement ?? "bottom-start",
|
|
251
|
+
getAnchorRect: () => props.anchor?.getBoundingClientRect() ?? null
|
|
252
|
+
};
|
|
253
|
+
},
|
|
254
|
+
get children() {
|
|
255
|
+
return [memo(() => memo(() => !!props.children)() ? createComponent(Popover.Anchor, { asChild: (anchorProps) => typeof props.children === "function" ? props.children(anchorProps()) : props.children }) : null), createComponent(Portal, { get children() {
|
|
256
|
+
return createComponent(Popover.Positioner, { get children() {
|
|
257
|
+
return createComponent(Popover.Content, { asChild: (contentProps) => (() => {
|
|
258
|
+
var _el$6 = _tmpl$4();
|
|
259
|
+
spread(_el$6, mergeProps(contentProps, {
|
|
260
|
+
get id() {
|
|
261
|
+
return popupId();
|
|
262
|
+
},
|
|
263
|
+
"role": "listbox",
|
|
264
|
+
get ["aria-activedescendant"]() {
|
|
265
|
+
return memo(() => !!(props.matches?.[props.active ?? 0] && !props.matches?.[props.active ?? 0]?.disabled))() ? `${popupId()}:option-${props.active ?? 0}` : void 0;
|
|
266
|
+
},
|
|
267
|
+
"data-scope": "mentions",
|
|
268
|
+
"data-part": "popup",
|
|
269
|
+
get ["data-size"]() {
|
|
270
|
+
return props.size ?? "md";
|
|
271
|
+
}
|
|
272
|
+
}), false, true);
|
|
273
|
+
insert(_el$6, createComponent(For, {
|
|
274
|
+
get each() {
|
|
275
|
+
return groupMentions(props.matches ?? []);
|
|
276
|
+
},
|
|
277
|
+
children: (group, groupIndex) => {
|
|
278
|
+
const labelId = group.name ? `${popupId()}:group-${groupIndex()}` : void 0;
|
|
279
|
+
const options = createComponent(For, {
|
|
280
|
+
get each() {
|
|
281
|
+
return group.entries;
|
|
282
|
+
},
|
|
283
|
+
children: ({ entry, index }) => option(entry, () => index)
|
|
284
|
+
});
|
|
285
|
+
if (!group.name) return options;
|
|
286
|
+
return (() => {
|
|
287
|
+
var _el$7 = _tmpl$5(), _el$8 = _el$7.firstChild;
|
|
288
|
+
setAttribute(_el$7, "aria-labelledby", labelId);
|
|
289
|
+
setAttribute(_el$8, "id", labelId);
|
|
290
|
+
insert(_el$8, () => group.name);
|
|
291
|
+
insert(_el$7, options, null);
|
|
292
|
+
return _el$7;
|
|
293
|
+
})();
|
|
294
|
+
}
|
|
295
|
+
}));
|
|
296
|
+
return _el$6;
|
|
297
|
+
})() });
|
|
298
|
+
} });
|
|
299
|
+
} })];
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
});
|
|
303
|
+
/**
|
|
304
|
+
* @-mentions: a plain textarea that, when the text before the caret ends
|
|
305
|
+
* with a trigger character followed by a token, offers matching
|
|
306
|
+
* candidates in a small anchored vessel. Entries may carry descriptions,
|
|
307
|
+
* icons, groups and consumer metadata. Selecting reports the whole
|
|
308
|
+
* entry; by default it also replaces the token with the trigger that
|
|
309
|
+
* opened it plus the label. Arrows move, Enter inserts, Escape dismisses.
|
|
310
|
+
*
|
|
311
|
+
* The field is the shared `Field.Textarea` — field wiring (label ids,
|
|
312
|
+
* the invalid state, autoresize) rides on it for free — and the vessel
|
|
313
|
+
* anchors to the field as a whole (popover machinery), not to the caret
|
|
314
|
+
* coordinates; caret-precise positioning would need a second positioning
|
|
315
|
+
* system for no practical gain at typical field sizes. Composers that
|
|
316
|
+
* keep their own field anatomy (the AI prompt input) skip this shell and
|
|
317
|
+
* wire `useMentions` plus `MentionsVessel` themselves.
|
|
318
|
+
*/
|
|
319
|
+
function MentionsImpl(props) {
|
|
320
|
+
const [own, rest] = splitProps(props, [
|
|
321
|
+
"items",
|
|
322
|
+
"value",
|
|
323
|
+
"trigger",
|
|
324
|
+
"triggers",
|
|
325
|
+
"insertOnSelect",
|
|
326
|
+
"commitKeys",
|
|
327
|
+
"placement",
|
|
328
|
+
"placeholder",
|
|
329
|
+
"autoresize",
|
|
330
|
+
"invalid",
|
|
331
|
+
"size",
|
|
332
|
+
"onValueChange",
|
|
333
|
+
"onSelect"
|
|
334
|
+
]);
|
|
335
|
+
const [internal, setInternal] = createSignal("");
|
|
336
|
+
const [fieldEl, setFieldEl] = createSignal(null);
|
|
337
|
+
const hostId = useElementId("mentions", () => rest.id);
|
|
338
|
+
const popupId = () => `${hostId()}:vessel:popup`;
|
|
339
|
+
const value = () => own.value ?? internal();
|
|
340
|
+
const mentions = useMentions(() => ({
|
|
341
|
+
items: own.items ?? [],
|
|
342
|
+
trigger: own.trigger,
|
|
343
|
+
triggers: own.triggers,
|
|
344
|
+
commitKeys: own.commitKeys
|
|
345
|
+
}), fieldEl, {
|
|
346
|
+
getText: () => fieldEl()?.value ?? value(),
|
|
347
|
+
setText: (next) => {
|
|
348
|
+
setInternal(next);
|
|
349
|
+
own.onValueChange?.(next);
|
|
350
|
+
},
|
|
351
|
+
select: (entry) => {
|
|
352
|
+
own.onSelect?.(entry);
|
|
353
|
+
return own.insertOnSelect !== false;
|
|
354
|
+
}
|
|
355
|
+
});
|
|
356
|
+
const onInput = () => {
|
|
357
|
+
const node = fieldEl();
|
|
358
|
+
if (!node) return;
|
|
359
|
+
setInternal(node.value);
|
|
360
|
+
own.onValueChange?.(node.value);
|
|
361
|
+
mentions.onInput();
|
|
362
|
+
};
|
|
363
|
+
const field = (anchorProps) => createComponent(Field.Textarea, mergeProps(anchorProps, {
|
|
364
|
+
ref: (node) => setFieldEl(node),
|
|
365
|
+
get autoresize() {
|
|
366
|
+
return own.autoresize ?? false;
|
|
367
|
+
},
|
|
368
|
+
get ["aria-invalid"]() {
|
|
369
|
+
return own.invalid ? "true" : void 0;
|
|
370
|
+
},
|
|
371
|
+
get ["aria-expanded"]() {
|
|
372
|
+
return mentions.open();
|
|
373
|
+
},
|
|
374
|
+
get ["aria-controls"]() {
|
|
375
|
+
return memo(() => !!mentions.open())() ? popupId() : void 0;
|
|
376
|
+
},
|
|
377
|
+
rows: 3,
|
|
378
|
+
get placeholder() {
|
|
379
|
+
return own.placeholder;
|
|
380
|
+
},
|
|
381
|
+
get value() {
|
|
382
|
+
return value();
|
|
383
|
+
},
|
|
384
|
+
onInput,
|
|
385
|
+
onKeyDown: (event) => {
|
|
386
|
+
mentions.onKeydown(event);
|
|
387
|
+
},
|
|
388
|
+
"data-scope": "mentions",
|
|
389
|
+
"data-part": "textarea"
|
|
390
|
+
}));
|
|
391
|
+
return (() => {
|
|
392
|
+
var _el$9 = _tmpl$4();
|
|
393
|
+
spread(_el$9, mergeProps(rest, {
|
|
394
|
+
get id() {
|
|
395
|
+
return hostId();
|
|
396
|
+
},
|
|
397
|
+
"data-scope": "mentions",
|
|
398
|
+
"data-part": "root",
|
|
399
|
+
get ["data-size"]() {
|
|
400
|
+
return own.size ?? "md";
|
|
401
|
+
}
|
|
402
|
+
}), false, true);
|
|
403
|
+
insert(_el$9, createComponent(MentionsVessel, {
|
|
404
|
+
get open() {
|
|
405
|
+
return mentions.open();
|
|
406
|
+
},
|
|
407
|
+
get matches() {
|
|
408
|
+
return mentions.matches();
|
|
409
|
+
},
|
|
410
|
+
get active() {
|
|
411
|
+
return mentions.active();
|
|
412
|
+
},
|
|
413
|
+
get size() {
|
|
414
|
+
return own.size ?? "md";
|
|
415
|
+
},
|
|
416
|
+
get id() {
|
|
417
|
+
return `${hostId()}:vessel`;
|
|
418
|
+
},
|
|
419
|
+
get placement() {
|
|
420
|
+
return own.placement ?? "bottom-start";
|
|
421
|
+
},
|
|
422
|
+
get onInsert() {
|
|
423
|
+
return mentions.insert;
|
|
424
|
+
},
|
|
425
|
+
get onActiveChange() {
|
|
426
|
+
return mentions.setActive;
|
|
427
|
+
},
|
|
428
|
+
onOpenChange: (open) => {
|
|
429
|
+
if (!open) mentions.close();
|
|
430
|
+
},
|
|
431
|
+
children: field
|
|
432
|
+
}));
|
|
433
|
+
return _el$9;
|
|
434
|
+
})();
|
|
435
|
+
}
|
|
436
|
+
const Mentions = defineFamily(MentionsImpl, Popover$1);
|
|
437
|
+
delegateEvents(["mousedown", "keydown"]);
|
|
438
|
+
export { MentionsVessel as n, useMentions as r, Mentions as t };
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { t as defineFamily } from "./family-
|
|
2
|
-
import { r as iconNode } from "./icon-
|
|
3
|
-
import { t as useElementId } from "./id-
|
|
4
|
-
import { createComponent, effect, insert, memo, mergeProps,
|
|
1
|
+
import { t as defineFamily } from "./family-B5HtE0on.mjs";
|
|
2
|
+
import { r as iconNode } from "./icon-DQqYA2fO.mjs";
|
|
3
|
+
import { t as useElementId } from "./id-DGvz-2rQ.mjs";
|
|
4
|
+
import { createComponent, effect, insert, memo, mergeProps, spread, template, use } from "solid-js/web";
|
|
5
5
|
import { injectComponentStyle } from "@bysages/core/styling";
|
|
6
6
|
import { For, Show, createEffect, createSignal, onMount, splitProps } from "solid-js";
|
|
7
7
|
import { useFieldContext } from "@ark-ui/solid/field";
|
|
8
8
|
import { Select, createListCollection } from "@ark-ui/solid/select";
|
|
9
|
-
|
|
10
|
-
var _tmpl$ =
|
|
11
|
-
var _tmpl$2 =
|
|
12
|
-
var _tmpl$3 =
|
|
9
|
+
// src/components/select/native.tsx
|
|
10
|
+
var _tmpl$ = /*#__PURE__*/ template(`<option value disabled>`);
|
|
11
|
+
var _tmpl$2 = /*#__PURE__*/ template(`<span><select>`);
|
|
12
|
+
var _tmpl$3 = /*#__PURE__*/ template(`<option>`);
|
|
13
13
|
function NativeSelect(props) {
|
|
14
14
|
injectComponentStyle("select");
|
|
15
15
|
const field = useFieldContext();
|
|
@@ -34,89 +34,70 @@ function NativeSelect(props) {
|
|
|
34
34
|
const fieldProps = field?.().getInputProps() ?? {};
|
|
35
35
|
const empty = () => own.value == null || own.value === "";
|
|
36
36
|
const off = () => own.disabled || field?.().disabled;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
onChange: (event) => own.onValueChange?.(event.currentTarget.value)
|
|
73
|
-
}], true);
|
|
74
|
-
insert(_el$2, createComponent(Show, {
|
|
75
|
-
get when() {
|
|
76
|
-
return own.placeholder;
|
|
77
|
-
},
|
|
78
|
-
get children() {
|
|
79
|
-
var _el$3 = _tmpl$();
|
|
80
|
-
insert(_el$3, () => {
|
|
37
|
+
return (() => {
|
|
38
|
+
var _el$ = _tmpl$2(), _el$2 = _el$.firstChild;
|
|
39
|
+
spread(_el$, mergeProps(rest, {
|
|
40
|
+
"data-scope": "select",
|
|
41
|
+
"data-part": "native-root",
|
|
42
|
+
get ["data-size"]() {
|
|
43
|
+
return own.size ?? "md";
|
|
44
|
+
},
|
|
45
|
+
get ["data-invalid"]() {
|
|
46
|
+
return own.invalid || field?.().invalid ? "" : void 0;
|
|
47
|
+
},
|
|
48
|
+
get ["data-disabled"]() {
|
|
49
|
+
return off() ? "" : void 0;
|
|
50
|
+
},
|
|
51
|
+
get ["data-placeholder-shown"]() {
|
|
52
|
+
return empty() ? "" : void 0;
|
|
53
|
+
}
|
|
54
|
+
}), false, true);
|
|
55
|
+
use(setSelect, _el$2);
|
|
56
|
+
spread(_el$2, mergeProps(fieldProps, {
|
|
57
|
+
get ["aria-label"]() {
|
|
58
|
+
return own["aria-label"];
|
|
59
|
+
},
|
|
60
|
+
get ["aria-labelledby"]() {
|
|
61
|
+
return own["aria-labelledby"];
|
|
62
|
+
},
|
|
63
|
+
"data-scope": "select",
|
|
64
|
+
"data-part": "native",
|
|
65
|
+
get disabled() {
|
|
66
|
+
return off() || void 0;
|
|
67
|
+
},
|
|
68
|
+
"onChange": (event) => own.onValueChange?.(event.currentTarget.value)
|
|
69
|
+
}), false, true);
|
|
70
|
+
insert(_el$2, createComponent(Show, {
|
|
71
|
+
get when() {
|
|
81
72
|
return own.placeholder;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
return
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}, ({ e, t }, _p$) => {
|
|
104
|
-
_el$6.value = e;
|
|
105
|
-
t !== _p$?.t && setAttribute(_el$6, "disabled", t);
|
|
106
|
-
});
|
|
107
|
-
return _el$6;
|
|
108
|
-
})()
|
|
109
|
-
}), _el$5);
|
|
110
|
-
insert(_el$, () => {
|
|
111
|
-
return iconNode("chevron-down", {
|
|
73
|
+
},
|
|
74
|
+
get children() {
|
|
75
|
+
var _el$3 = _tmpl$();
|
|
76
|
+
insert(_el$3, () => own.placeholder);
|
|
77
|
+
effect(() => _el$3.hidden = empty() ? void 0 : true);
|
|
78
|
+
return _el$3;
|
|
79
|
+
}
|
|
80
|
+
}), null);
|
|
81
|
+
insert(_el$2, createComponent(For, {
|
|
82
|
+
get each() {
|
|
83
|
+
return own.options;
|
|
84
|
+
},
|
|
85
|
+
children: (option) => (() => {
|
|
86
|
+
var _el$4 = _tmpl$3();
|
|
87
|
+
insert(_el$4, () => option.label);
|
|
88
|
+
effect(() => _el$4.disabled = option.disabled);
|
|
89
|
+
effect(() => _el$4.value = option.value);
|
|
90
|
+
return _el$4;
|
|
91
|
+
})()
|
|
92
|
+
}), null);
|
|
93
|
+
insert(_el$, () => iconNode("chevron-down", {
|
|
112
94
|
"data-scope": "select",
|
|
113
95
|
"data-part": "native-icon"
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
|
|
96
|
+
}), null);
|
|
97
|
+
return _el$;
|
|
98
|
+
})();
|
|
117
99
|
}
|
|
118
|
-
|
|
119
|
-
//#region src/components/select/index.tsx
|
|
100
|
+
// src/components/select/index.tsx
|
|
120
101
|
function SelectRoot(props) {
|
|
121
102
|
const [own, rest] = splitProps(props, ["size"]);
|
|
122
103
|
const id = useElementId("select", () => rest.id);
|
|
@@ -124,7 +105,7 @@ function SelectRoot(props) {
|
|
|
124
105
|
get id() {
|
|
125
106
|
return id();
|
|
126
107
|
},
|
|
127
|
-
get "data-size"() {
|
|
108
|
+
get ["data-size"]() {
|
|
128
109
|
return own.size ?? "md";
|
|
129
110
|
}
|
|
130
111
|
}));
|
|
@@ -172,9 +153,7 @@ function SelectFacade(props) {
|
|
|
172
153
|
get defaultValue() {
|
|
173
154
|
return toArkValue(props.value ?? props.defaultValue);
|
|
174
155
|
}
|
|
175
|
-
}, () => {
|
|
176
|
-
return props.value === void 0 ? {} : { value: toArkValue(props.value) };
|
|
177
|
-
}, {
|
|
156
|
+
}, () => props.value === void 0 ? {} : { value: toArkValue(props.value) }, {
|
|
178
157
|
onValueChange: (details) => props.onValueChange?.(props.multiple ? details.value : details.value.at(0) ?? ""),
|
|
179
158
|
get children() {
|
|
180
159
|
return [
|
|
@@ -191,10 +170,8 @@ function SelectFacade(props) {
|
|
|
191
170
|
createComponent(Select.Control, { get children() {
|
|
192
171
|
return [
|
|
193
172
|
createComponent(Select.Trigger, {
|
|
194
|
-
get "aria-label"() {
|
|
195
|
-
return memo(() =>
|
|
196
|
-
return !!props.label;
|
|
197
|
-
})() ? void 0 : props.placeholder;
|
|
173
|
+
get ["aria-label"]() {
|
|
174
|
+
return memo(() => !!props.label)() ? void 0 : props.placeholder;
|
|
198
175
|
},
|
|
199
176
|
get children() {
|
|
200
177
|
return createComponent(Select.ValueText, { get placeholder() {
|
|
@@ -288,5 +265,4 @@ const Select$1 = defineFamily(SelectFacade, {
|
|
|
288
265
|
Root: SelectRoot
|
|
289
266
|
});
|
|
290
267
|
injectComponentStyle("select");
|
|
291
|
-
//#endregion
|
|
292
268
|
export { NativeSelect as n, Select$1 as t };
|
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
import { t as defineFamily } from "./family-
|
|
2
|
-
import { t as useElementId } from "./id-
|
|
3
|
-
import { createComponent, mergeProps } from "
|
|
1
|
+
import { t as defineFamily } from "./family-B5HtE0on.mjs";
|
|
2
|
+
import { t as useElementId } from "./id-DGvz-2rQ.mjs";
|
|
3
|
+
import { createComponent, mergeProps } from "solid-js/web";
|
|
4
4
|
import { injectComponentStyle } from "@bysages/core/styling";
|
|
5
5
|
import { For, createComponent as createComponent$1, mergeProps as mergeProps$1 } from "solid-js";
|
|
6
6
|
import { Toc } from "@ark-ui/solid/toc";
|
|
7
|
-
|
|
7
|
+
// src/components/toc/TocIndicator.tsx
|
|
8
8
|
/** The active stroke is decoration; hidden so the list reads as links
|
|
9
9
|
* alone. */
|
|
10
10
|
function TocIndicator(props) {
|
|
11
11
|
return createComponent(Toc.Indicator, mergeProps(props, { "aria-hidden": "true" }));
|
|
12
12
|
}
|
|
13
|
-
|
|
14
|
-
//#region src/components/toc/index.tsx
|
|
13
|
+
// src/components/toc/index.tsx
|
|
15
14
|
/** Ark's Toc, dressed in the paper-and-ink system: a quiet rail of links
|
|
16
15
|
* beside the scroll, one stroke of primary ink marking where the reader
|
|
17
16
|
* stands. The API is Ark's own — Root, Title, List, Item, Link, Indicator. */
|
|
@@ -84,5 +83,4 @@ const Toc$1 = defineFamily(TocFacade, {
|
|
|
84
83
|
Content: TocContent
|
|
85
84
|
});
|
|
86
85
|
injectComponentStyle("toc");
|
|
87
|
-
//#endregion
|
|
88
86
|
export { Toc$1 as t };
|