@deepseek-ai/dsh-client-ui-primitives 0.2.0-rc.1 → 0.2.1-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.i18n.yaml +8 -8
- package/README.md +16 -8
- package/README.zh.md +16 -8
- package/lib/DisclosureRow.module.css +14 -2
- package/lib/InlineEditor.module.css +23 -0
- package/lib/MenuGroup.module.css +37 -0
- package/lib/index.js +451 -261
- package/lib/types/DisclosureRow.d.ts +1 -1
- package/lib/types/InlineEditor.d.ts +23 -0
- package/lib/types/Input.d.ts +4 -3
- package/lib/types/MenuGroup.d.ts +22 -0
- package/lib/types/index.d.ts +2 -0
- package/package.json +6 -6
package/lib/index.js
CHANGED
|
@@ -14,22 +14,24 @@ import css$8 from "./Switch.module.css";
|
|
|
14
14
|
import css$9 from "./SegmentedControl.module.css";
|
|
15
15
|
import css$10 from "./Checkbox.module.css";
|
|
16
16
|
import css$11 from "./Input.module.css";
|
|
17
|
+
import css$12 from "./InlineEditor.module.css";
|
|
17
18
|
import { createPortal } from "react-dom";
|
|
18
|
-
import css$
|
|
19
|
-
import css$
|
|
20
|
-
import css$
|
|
21
|
-
import css$
|
|
22
|
-
import css$
|
|
23
|
-
import css$
|
|
24
|
-
import css$
|
|
25
|
-
import css$
|
|
26
|
-
import css$
|
|
19
|
+
import css$13 from "./ShortcutKeys.module.css";
|
|
20
|
+
import css$14 from "./MenuSurface.module.css";
|
|
21
|
+
import css$15 from "./Menu.module.css";
|
|
22
|
+
import css$16 from "./MenuGroup.module.css";
|
|
23
|
+
import css$17 from "./Tooltip.module.css";
|
|
24
|
+
import css$18 from "./HoverCard.module.css";
|
|
25
|
+
import css$19 from "./Modal.module.css";
|
|
26
|
+
import css$20 from "./RiskConfirmation.module.css";
|
|
27
|
+
import css$21 from "./ConnectionIndicator.module.css";
|
|
28
|
+
import css$22 from "./FileTypeIcon.module.css";
|
|
27
29
|
import { siAliexpress, siApple, siBaidu, siBilibili, siCsdn, siDuckduckgo, siEbay, siFacebook, siGithub, siGitlab, siGoogle, siInstagram, siJuejin, siMdnwebdocs, siNetflix, siNpm, siPypi, siQq, siQuora, siReddit, siSinaweibo, siSpotify, siStackoverflow, siTaobao, siTelegram, siTiktok, siV2ex, siWechat, siWhatsapp, siWikipedia, siX, siYcombinator, siYoutube, siZhihu } from "simple-icons";
|
|
28
|
-
import css$
|
|
30
|
+
import css$23 from "./user-text.module.css";
|
|
29
31
|
import markdownCss from "./markdown/MarkdownText.module.css";
|
|
30
|
-
import css$
|
|
31
|
-
import css$
|
|
32
|
-
import css$
|
|
32
|
+
import css$24 from "./Toast.module.css";
|
|
33
|
+
import css$25 from "./settings-form/SettingsForm.module.css";
|
|
34
|
+
import css$26 from "./settings-form/fields.module.css";
|
|
33
35
|
import { createSnapshotStore } from "@deepseek-ai/dsh-client-store";
|
|
34
36
|
import { createCssVariablesTheme, createHighlighterCoreSync } from "shiki/core";
|
|
35
37
|
import { createJavaScriptRegexEngine, defaultJavaScriptRegexConstructor } from "shiki/engine/javascript";
|
|
@@ -37,14 +39,14 @@ import langTs from "@shikijs/langs/typescript";
|
|
|
37
39
|
import langBash from "@shikijs/langs/shellscript";
|
|
38
40
|
import langJson from "@shikijs/langs/json";
|
|
39
41
|
import { CODE_HIGHLIGHT_EXTENSIONS, languageForPath } from "@deepseek-ai/dsh-util-code-language";
|
|
40
|
-
import css$
|
|
42
|
+
import css$27 from "./JsonTree.module.css";
|
|
41
43
|
import Anser from "anser";
|
|
42
|
-
import css$
|
|
44
|
+
import css$28 from "./TerminalBlock.module.css";
|
|
43
45
|
import cardCss from "./CodeCard.module.css";
|
|
44
|
-
import css$
|
|
46
|
+
import css$29 from "./ReadBlock.module.css";
|
|
45
47
|
import { structuredPatch } from "diff";
|
|
46
|
-
import css$
|
|
47
|
-
import css$
|
|
48
|
+
import css$30 from "./DiffBlock.module.css";
|
|
49
|
+
import css$31 from "./SearchBlock.module.css";
|
|
48
50
|
import { fromMarkdown } from "mdast-util-from-markdown";
|
|
49
51
|
import { gfmFromMarkdown } from "mdast-util-gfm";
|
|
50
52
|
import { mathFromMarkdown } from "mdast-util-math";
|
|
@@ -56,13 +58,13 @@ import { classifyCharacter } from "micromark-util-classify-character";
|
|
|
56
58
|
import { codes, constants, types } from "micromark-util-symbol";
|
|
57
59
|
import { factorySpace } from "micromark-factory-space";
|
|
58
60
|
import { normalizeUri } from "micromark-util-sanitize-uri";
|
|
59
|
-
import css$
|
|
61
|
+
import css$32 from "./markdown/CodeBlock.module.css";
|
|
60
62
|
import katex from "katex";
|
|
61
|
-
import css$
|
|
62
|
-
import css$
|
|
63
|
+
import css$33 from "./ImageLightbox.module.css";
|
|
64
|
+
import css$34 from "./ImagePreview.module.css";
|
|
63
65
|
import "katex/dist/katex.min.css";
|
|
64
|
-
import css$
|
|
65
|
-
import css$
|
|
66
|
+
import css$35 from "./WebBlock.module.css";
|
|
67
|
+
import css$36 from "./markdown/JsonBlock.module.css";
|
|
66
68
|
//#region lib/types/icons/shared-artwork.js
|
|
67
69
|
/**
|
|
68
70
|
* Render new-conversation geometry — the bubble around a plus — for product icons.
|
|
@@ -938,15 +940,15 @@ const IconThinkOutlineArtwork = ({ size = 16, className, strokeWidth }) => jsxs(
|
|
|
938
940
|
strokeWidth,
|
|
939
941
|
children: [
|
|
940
942
|
jsx("path", {
|
|
941
|
-
d: "M10.
|
|
943
|
+
d: "M10.2854 5.71481C12.9673 8.39663 14.1182 11.5938 12.8562 12.8559C11.5942 14.1179 8.39706 12.9669 5.71518 10.2851C3.03333 7.60323 1.88236 4.40608 3.14441 3.14403C4.40644 1.882 7.6036 3.03297 10.2854 5.71481Z",
|
|
942
944
|
stroke: "currentColor"
|
|
943
945
|
}),
|
|
944
946
|
jsx("path", {
|
|
945
|
-
d: "M10.
|
|
947
|
+
d: "M10.2854 10.2851C7.6036 12.9669 4.40644 14.1179 3.14441 12.8559C1.88236 11.5938 3.03333 8.39663 5.71518 5.71481C8.39706 3.03297 11.5942 1.882 12.8562 3.14403C14.1182 4.40608 12.9673 7.60323 10.2854 10.2851Z",
|
|
946
948
|
stroke: "currentColor"
|
|
947
949
|
}),
|
|
948
950
|
jsx("path", {
|
|
949
|
-
d: "M8.
|
|
951
|
+
d: "M8.86291 8.0002C8.86291 8.47549 8.47762 8.86087 8.00224 8.86087C7.52694 8.86087 7.1416 8.47549 7.1416 8.0002C7.1416 7.52485 7.52694 7.13953 8.00224 7.13953C8.47762 7.13953 8.86291 7.52485 8.86291 8.0002Z",
|
|
950
952
|
fill: "currentColor"
|
|
951
953
|
})
|
|
952
954
|
]
|
|
@@ -3039,12 +3041,24 @@ const IconMicrophoneOutlineMedium = (props) => jsx(IconMicrophoneOutlineArtwork,
|
|
|
3039
3041
|
//#region lib/types/StateDot.js
|
|
3040
3042
|
/**
|
|
3041
3043
|
* Pin the loader's CSS animations to document time zero. A CSS animation starts
|
|
3042
|
-
* when its element is inserted
|
|
3043
|
-
*
|
|
3044
|
+
* when its element is inserted and restarts when the element is moved or shown
|
|
3045
|
+
* again, so loaders started at different moments rotate out of phase; one shared
|
|
3046
|
+
* start time keeps every visible loader in step. Mount pins the first start; the
|
|
3047
|
+
* element's own `animationstart` listener pins each restart.
|
|
3044
3048
|
* @param element - the mounted loader, or null on unmount.
|
|
3045
3049
|
*/
|
|
3046
3050
|
function syncSpinner(element) {
|
|
3047
3051
|
if (element === null) return;
|
|
3052
|
+
pinSpinner(element);
|
|
3053
|
+
element.addEventListener("animationstart", () => {
|
|
3054
|
+
pinSpinner(element);
|
|
3055
|
+
});
|
|
3056
|
+
}
|
|
3057
|
+
/**
|
|
3058
|
+
* Set every CSS animation in the loader's subtree to start at document time zero.
|
|
3059
|
+
* @param element - the mounted loader.
|
|
3060
|
+
*/
|
|
3061
|
+
function pinSpinner(element) {
|
|
3048
3062
|
const spinner = element;
|
|
3049
3063
|
for (const animation of spinner.getAnimations?.({ subtree: true }) ?? []) animation.startTime = 0;
|
|
3050
3064
|
}
|
|
@@ -3183,6 +3197,7 @@ const DisclosureRow = memo(function DisclosureRow({ icon, title, open, expandabl
|
|
|
3183
3197
|
children: [expandable && !rowExpands ? jsx("button", {
|
|
3184
3198
|
type: "button",
|
|
3185
3199
|
className: clsx(css$2.leading, leadingClassName),
|
|
3200
|
+
"aria-label": title,
|
|
3186
3201
|
"aria-expanded": open,
|
|
3187
3202
|
onClick: toggleFromLeading,
|
|
3188
3203
|
children: leading
|
|
@@ -3521,19 +3536,75 @@ function Checkbox({ checked, onChange, label, disabled = false, title, className
|
|
|
3521
3536
|
/**
|
|
3522
3537
|
* Render a text input with an optional leading icon.
|
|
3523
3538
|
* @param props.icon - optional 16px leading icon node.
|
|
3539
|
+
* @param ref - the native input, cleared when it unmounts.
|
|
3524
3540
|
* @returns wrapper span containing the native input; input attributes pass through.
|
|
3525
3541
|
*/
|
|
3526
|
-
function Input({ icon, className, ...rest }) {
|
|
3542
|
+
const Input = forwardRef(function Input({ icon, className, ...rest }, ref) {
|
|
3527
3543
|
return jsxs("span", {
|
|
3528
3544
|
className: clsx(css$11.wrap, className),
|
|
3529
3545
|
children: [icon != null && jsx("span", {
|
|
3530
3546
|
className: css$11.icon,
|
|
3531
3547
|
children: icon
|
|
3532
3548
|
}), jsx("input", {
|
|
3549
|
+
ref,
|
|
3533
3550
|
className: css$11.input,
|
|
3534
3551
|
...rest
|
|
3535
3552
|
})]
|
|
3536
3553
|
});
|
|
3554
|
+
});
|
|
3555
|
+
//#endregion
|
|
3556
|
+
//#region lib/types/InlineEditor.js
|
|
3557
|
+
/** Multi-line inline editor for short saved-on-Enter drafts such as queued messages and goals. */
|
|
3558
|
+
/**
|
|
3559
|
+
* Render an autofocused textarea that grows with its text up to six lines, then scrolls.
|
|
3560
|
+
* A textarea rather than an input: HTML strips newlines from single-line input values.
|
|
3561
|
+
* Enter saves, Shift+Enter breaks the line, Enter during IME composition does nothing,
|
|
3562
|
+
* and Escape cancels.
|
|
3563
|
+
* @param props.value - current draft text.
|
|
3564
|
+
* @param props.label - localized accessible name.
|
|
3565
|
+
* @param props.onChange - receives the edited text.
|
|
3566
|
+
* @param props.onSave - called for a plain Enter.
|
|
3567
|
+
* @param props.onCancel - called for Escape.
|
|
3568
|
+
* @param props.className - extra class for the editor's placement.
|
|
3569
|
+
* @returns the textarea.
|
|
3570
|
+
*/
|
|
3571
|
+
function InlineEditor({ value, label, onChange, onSave, onCancel, className }) {
|
|
3572
|
+
const ref = useRef(null);
|
|
3573
|
+
useLayoutEffect(() => {
|
|
3574
|
+
const node = ref.current;
|
|
3575
|
+
const fit = () => {
|
|
3576
|
+
node.style.height = "auto";
|
|
3577
|
+
node.style.height = `${node.scrollHeight + node.offsetHeight - node.clientHeight}px`;
|
|
3578
|
+
};
|
|
3579
|
+
fit();
|
|
3580
|
+
const observer = new ResizeObserver(fit);
|
|
3581
|
+
observer.observe(node);
|
|
3582
|
+
return () => {
|
|
3583
|
+
observer.disconnect();
|
|
3584
|
+
};
|
|
3585
|
+
}, [value]);
|
|
3586
|
+
const onKeyDown = (event) => {
|
|
3587
|
+
if (event.key === "Escape") {
|
|
3588
|
+
onCancel();
|
|
3589
|
+
return;
|
|
3590
|
+
}
|
|
3591
|
+
const composing = event.nativeEvent.isComposing || Reflect.get(event.nativeEvent, "keyCode") === 229;
|
|
3592
|
+
if (event.key !== "Enter" || event.shiftKey || composing) return;
|
|
3593
|
+
event.preventDefault();
|
|
3594
|
+
onSave();
|
|
3595
|
+
};
|
|
3596
|
+
return jsx("textarea", {
|
|
3597
|
+
ref,
|
|
3598
|
+
autoFocus: true,
|
|
3599
|
+
rows: 1,
|
|
3600
|
+
className: clsx(css$12.editor, className),
|
|
3601
|
+
"aria-label": label,
|
|
3602
|
+
value,
|
|
3603
|
+
onChange: (event) => {
|
|
3604
|
+
onChange(event.currentTarget.value);
|
|
3605
|
+
},
|
|
3606
|
+
onKeyDown
|
|
3607
|
+
});
|
|
3537
3608
|
}
|
|
3538
3609
|
//#endregion
|
|
3539
3610
|
//#region lib/types/overlay-top-margin.js
|
|
@@ -3758,9 +3829,9 @@ function useModalLayer(dialog, open, onClose) {
|
|
|
3758
3829
|
*/
|
|
3759
3830
|
function ShortcutKeys({ keys, variant = "plain", className }) {
|
|
3760
3831
|
return jsx("span", {
|
|
3761
|
-
className: clsx(css$
|
|
3832
|
+
className: clsx(css$13.keys, variant === "tooltip" && css$13.tooltip, variant === "tooltip" && keys.includes("+") && css$13.joined, className),
|
|
3762
3833
|
children: keys.map((key, index) => jsx("kbd", {
|
|
3763
|
-
className: key === "+" ? css$
|
|
3834
|
+
className: key === "+" ? css$13.separator : css$13.key,
|
|
3764
3835
|
children: key
|
|
3765
3836
|
}, index))
|
|
3766
3837
|
});
|
|
@@ -3786,20 +3857,20 @@ const MenuSurface = forwardRef(function MenuSurface({ compact = false, className
|
|
|
3786
3857
|
...props,
|
|
3787
3858
|
ref,
|
|
3788
3859
|
"data-menu-material": "translucent",
|
|
3789
|
-
className: clsx(css$
|
|
3860
|
+
className: clsx(css$14.surface, compact && css$14.compact, className),
|
|
3790
3861
|
style: {
|
|
3791
3862
|
...style,
|
|
3792
3863
|
...anchorStyle
|
|
3793
3864
|
},
|
|
3794
3865
|
children: [jsx("div", {
|
|
3795
3866
|
"aria-hidden": "true",
|
|
3796
|
-
className: css$
|
|
3867
|
+
className: css$14.material
|
|
3797
3868
|
}), children]
|
|
3798
3869
|
}), createPortal(jsx("div", {
|
|
3799
3870
|
ref: backingRef,
|
|
3800
3871
|
"aria-hidden": "true",
|
|
3801
3872
|
"data-menu-backing": "",
|
|
3802
|
-
className: clsx(css$
|
|
3873
|
+
className: clsx(css$14.backing, compact && css$14.compact),
|
|
3803
3874
|
style: {
|
|
3804
3875
|
...anchorStyle,
|
|
3805
3876
|
visibility: style?.visibility
|
|
@@ -3825,32 +3896,32 @@ const MenuSurface = forwardRef(function MenuSurface({ compact = false, className
|
|
|
3825
3896
|
*/
|
|
3826
3897
|
function MenuItemButton({ children, shortcut, icon, disabled = false, danger = false, separatorBefore = false, onSelect }) {
|
|
3827
3898
|
return jsxs("div", {
|
|
3828
|
-
className: css$
|
|
3899
|
+
className: css$15.itemWrap,
|
|
3829
3900
|
children: [separatorBefore && jsx("div", {
|
|
3830
|
-
className: css$
|
|
3901
|
+
className: css$15.separator,
|
|
3831
3902
|
role: "separator"
|
|
3832
3903
|
}), jsxs("button", {
|
|
3833
3904
|
type: "button",
|
|
3834
3905
|
role: "menuitem",
|
|
3835
|
-
className: clsx(css$
|
|
3906
|
+
className: clsx(css$15.item, danger && css$15.danger),
|
|
3836
3907
|
disabled,
|
|
3837
3908
|
"aria-keyshortcuts": shortcut?.aria,
|
|
3838
3909
|
onClick: onSelect,
|
|
3839
3910
|
children: [
|
|
3840
3911
|
icon !== void 0 && jsx("span", {
|
|
3841
|
-
className: css$
|
|
3912
|
+
className: css$15.itemIcon,
|
|
3842
3913
|
children: icon
|
|
3843
3914
|
}),
|
|
3844
3915
|
jsx("span", {
|
|
3845
|
-
className: css$
|
|
3916
|
+
className: css$15.itemLabel,
|
|
3846
3917
|
children
|
|
3847
3918
|
}),
|
|
3848
3919
|
shortcut !== void 0 && jsx("span", {
|
|
3849
3920
|
"aria-hidden": "true",
|
|
3850
|
-
className: css$
|
|
3921
|
+
className: css$15.shortcut,
|
|
3851
3922
|
children: jsx(ShortcutKeys, {
|
|
3852
3923
|
keys: shortcut.keys,
|
|
3853
|
-
className: css$
|
|
3924
|
+
className: css$15.shortcutKeys
|
|
3854
3925
|
})
|
|
3855
3926
|
})
|
|
3856
3927
|
]
|
|
@@ -4137,11 +4208,11 @@ function Menu({ open, anchor, items = [], children, selectedId, selectedIds, onS
|
|
|
4137
4208
|
const scrollable = !items.some((entry) => !isSeparator(entry) && !isLabel(entry) && entry.submenu !== void 0 && entry.submenu.length > 0);
|
|
4138
4209
|
const renderEntry = (entry) => {
|
|
4139
4210
|
if (isSeparator(entry)) return jsx("div", {
|
|
4140
|
-
className: css$
|
|
4211
|
+
className: css$15.separator,
|
|
4141
4212
|
role: "separator"
|
|
4142
4213
|
}, entry.id);
|
|
4143
4214
|
if (isLabel(entry)) return jsx("div", {
|
|
4144
|
-
className: css$
|
|
4215
|
+
className: css$15.label,
|
|
4145
4216
|
role: "presentation",
|
|
4146
4217
|
children: entry.text
|
|
4147
4218
|
}, entry.id);
|
|
@@ -4149,7 +4220,7 @@ function Menu({ open, anchor, items = [], children, selectedId, selectedIds, onS
|
|
|
4149
4220
|
const subOpen = hasSub && openSubmenuId === entry.id;
|
|
4150
4221
|
const selected = entry.id === selectedId || selectedIds?.includes(entry.id) === true;
|
|
4151
4222
|
return jsxs("div", {
|
|
4152
|
-
className: css$
|
|
4223
|
+
className: css$15.itemWrap,
|
|
4153
4224
|
onMouseEnter: hasSub ? () => {
|
|
4154
4225
|
setOpenSubmenuId(entry.id);
|
|
4155
4226
|
} : void 0,
|
|
@@ -4159,7 +4230,7 @@ function Menu({ open, anchor, items = [], children, selectedId, selectedIds, onS
|
|
|
4159
4230
|
children: [jsxs("button", {
|
|
4160
4231
|
type: "button",
|
|
4161
4232
|
role: "menuitem",
|
|
4162
|
-
className: clsx(css$
|
|
4233
|
+
className: clsx(css$15.item, selected && (selection === "fill" ? css$15.selectedFill : css$15.selected), entry.danger === true && css$15.danger),
|
|
4163
4234
|
disabled: entry.disabled,
|
|
4164
4235
|
"aria-keyshortcuts": entry.shortcut?.aria,
|
|
4165
4236
|
"aria-haspopup": hasSub ? "menu" : void 0,
|
|
@@ -4176,31 +4247,31 @@ function Menu({ open, anchor, items = [], children, selectedId, selectedIds, onS
|
|
|
4176
4247
|
},
|
|
4177
4248
|
children: [
|
|
4178
4249
|
entry.icon !== void 0 && jsx("span", {
|
|
4179
|
-
className: css$
|
|
4250
|
+
className: css$15.itemIcon,
|
|
4180
4251
|
children: entry.icon
|
|
4181
4252
|
}),
|
|
4182
4253
|
jsx("span", {
|
|
4183
|
-
className: css$
|
|
4254
|
+
className: css$15.itemLabel,
|
|
4184
4255
|
children: entry.label
|
|
4185
4256
|
}),
|
|
4186
4257
|
entry.shortcut !== void 0 && jsx("span", {
|
|
4187
4258
|
"aria-hidden": "true",
|
|
4188
|
-
className: css$
|
|
4259
|
+
className: css$15.shortcut,
|
|
4189
4260
|
children: jsx(ShortcutKeys, {
|
|
4190
4261
|
keys: entry.shortcut.keys,
|
|
4191
|
-
className: css$
|
|
4262
|
+
className: css$15.shortcutKeys
|
|
4192
4263
|
})
|
|
4193
4264
|
}),
|
|
4194
|
-
selected && selection === "check" && jsx(IconCheckOutlineRegular, { className: css$
|
|
4265
|
+
selected && selection === "check" && jsx(IconCheckOutlineRegular, { className: css$15.check })
|
|
4195
4266
|
]
|
|
4196
4267
|
}), subOpen && entry.submenu !== void 0 && jsx(MenuSurface, {
|
|
4197
4268
|
compact,
|
|
4198
|
-
className: clsx(css$
|
|
4269
|
+
className: clsx(css$15.submenu, compact && css$15.compactList),
|
|
4199
4270
|
role: "menu",
|
|
4200
4271
|
children: entry.submenu.map((sub) => jsxs("button", {
|
|
4201
4272
|
type: "button",
|
|
4202
4273
|
role: "menuitem",
|
|
4203
|
-
className: css$
|
|
4274
|
+
className: css$15.item,
|
|
4204
4275
|
disabled: sub.disabled,
|
|
4205
4276
|
"aria-keyshortcuts": sub.shortcut?.aria,
|
|
4206
4277
|
onClick: () => {
|
|
@@ -4209,19 +4280,19 @@ function Menu({ open, anchor, items = [], children, selectedId, selectedIds, onS
|
|
|
4209
4280
|
},
|
|
4210
4281
|
children: [
|
|
4211
4282
|
sub.icon !== void 0 && jsx("span", {
|
|
4212
|
-
className: css$
|
|
4283
|
+
className: css$15.itemIcon,
|
|
4213
4284
|
children: sub.icon
|
|
4214
4285
|
}),
|
|
4215
4286
|
jsx("span", {
|
|
4216
|
-
className: css$
|
|
4287
|
+
className: css$15.itemLabel,
|
|
4217
4288
|
children: sub.label
|
|
4218
4289
|
}),
|
|
4219
4290
|
sub.shortcut !== void 0 && jsx("span", {
|
|
4220
4291
|
"aria-hidden": "true",
|
|
4221
|
-
className: css$
|
|
4292
|
+
className: css$15.shortcut,
|
|
4222
4293
|
children: jsx(ShortcutKeys, {
|
|
4223
4294
|
keys: sub.shortcut.keys,
|
|
4224
|
-
className: css$
|
|
4295
|
+
className: css$15.shortcutKeys
|
|
4225
4296
|
})
|
|
4226
4297
|
})
|
|
4227
4298
|
]
|
|
@@ -4238,7 +4309,7 @@ function Menu({ open, anchor, items = [], children, selectedId, selectedIds, onS
|
|
|
4238
4309
|
const list = open && jsxs(MenuSurface, {
|
|
4239
4310
|
compact,
|
|
4240
4311
|
ref: listRef,
|
|
4241
|
-
className: clsx(css$
|
|
4312
|
+
className: clsx(css$15.list, listClassName, dense && css$15.denseList, compact && css$15.compactList, scrollable && css$15.scrollable, portal && css$15.portal, side === "top" && !portal && css$15.sideTop, align === "end" && !portal && css$15.alignEnd),
|
|
4242
4313
|
style: portal ? fixedPos ?? MEASURE_STYLE : void 0,
|
|
4243
4314
|
role: "menu",
|
|
4244
4315
|
onClick: (e) => {
|
|
@@ -4249,18 +4320,18 @@ function Menu({ open, anchor, items = [], children, selectedId, selectedIds, onS
|
|
|
4249
4320
|
onMouseOver: collapseSubmenuFrom,
|
|
4250
4321
|
onFocus: collapseSubmenuFrom,
|
|
4251
4322
|
children: [jsxs("div", {
|
|
4252
|
-
className: css$
|
|
4323
|
+
className: css$15.viewport,
|
|
4253
4324
|
role: "presentation",
|
|
4254
4325
|
children: [items.map(renderEntry), children]
|
|
4255
4326
|
}), footer !== void 0 && footer.length > 0 && jsx("div", {
|
|
4256
|
-
className: css$
|
|
4327
|
+
className: css$15.footer,
|
|
4257
4328
|
role: "presentation",
|
|
4258
4329
|
children: footer.map(renderEntry)
|
|
4259
4330
|
})]
|
|
4260
4331
|
});
|
|
4261
4332
|
return jsxs("span", {
|
|
4262
4333
|
ref: rootRef,
|
|
4263
|
-
className: clsx(css$
|
|
4334
|
+
className: clsx(css$15.root, className),
|
|
4264
4335
|
onPointerEnter: closeOnPointerLeave ? cancelClose : void 0,
|
|
4265
4336
|
onPointerLeave: closeOnPointerLeave ? () => {
|
|
4266
4337
|
if (open) armClose();
|
|
@@ -4269,6 +4340,125 @@ function Menu({ open, anchor, items = [], children, selectedId, selectedIds, onS
|
|
|
4269
4340
|
});
|
|
4270
4341
|
}
|
|
4271
4342
|
//#endregion
|
|
4343
|
+
//#region lib/types/MenuGroup.js
|
|
4344
|
+
/** Accessible menu groups with shared sticky-heading presentation and viewport observation. */
|
|
4345
|
+
/**
|
|
4346
|
+
* Render a named group with an instance-owned heading id and an inaccessible position sentinel.
|
|
4347
|
+
* @param props - Caller-localized label and optional menu rows.
|
|
4348
|
+
* @returns A section named by its direct heading, followed by the supplied children.
|
|
4349
|
+
*/
|
|
4350
|
+
function MenuGroup({ label, children }) {
|
|
4351
|
+
const headingId = useId();
|
|
4352
|
+
return jsxs("section", {
|
|
4353
|
+
role: "group",
|
|
4354
|
+
"aria-labelledby": headingId,
|
|
4355
|
+
"data-menu-group": "",
|
|
4356
|
+
className: css$16.group,
|
|
4357
|
+
children: [
|
|
4358
|
+
jsx("span", {
|
|
4359
|
+
"aria-hidden": "true",
|
|
4360
|
+
"data-menu-group-start": "",
|
|
4361
|
+
className: css$16.start
|
|
4362
|
+
}),
|
|
4363
|
+
jsx("div", {
|
|
4364
|
+
id: headingId,
|
|
4365
|
+
"data-menu-group-heading": "",
|
|
4366
|
+
className: css$16.heading,
|
|
4367
|
+
children: label
|
|
4368
|
+
}),
|
|
4369
|
+
children
|
|
4370
|
+
]
|
|
4371
|
+
});
|
|
4372
|
+
}
|
|
4373
|
+
/**
|
|
4374
|
+
* Update heading backgrounds asynchronously from native intersection and viewport-size observations.
|
|
4375
|
+
* Headings remain transparent until observations identify a section crossing the viewport top.
|
|
4376
|
+
* Without IntersectionObserver or ResizeObserver, CSS sticky headings remain transparent.
|
|
4377
|
+
* Group membership is captured at setup; dispose before observing changed groups or the same viewport again.
|
|
4378
|
+
* @param viewport - Unpadded, borderless scroll container with direct MenuGroup children.
|
|
4379
|
+
* @returns Cleanup owning both intersection observers and the viewport resize observer; disconnects
|
|
4380
|
+
* them, ignores queued callbacks, and clears managed data-stuck attributes. No valid groups acquires nothing.
|
|
4381
|
+
*/
|
|
4382
|
+
function observeStickyMenuGroups(viewport) {
|
|
4383
|
+
const groups = [...viewport.querySelectorAll(":scope > [data-menu-group]")].flatMap((section) => {
|
|
4384
|
+
const heading = section.querySelector(":scope > [data-menu-group-heading]");
|
|
4385
|
+
const start = section.querySelector(":scope > [data-menu-group-start]");
|
|
4386
|
+
return heading === null || start === null ? [] : [{
|
|
4387
|
+
section,
|
|
4388
|
+
heading,
|
|
4389
|
+
start,
|
|
4390
|
+
atTop: false,
|
|
4391
|
+
above: false,
|
|
4392
|
+
topTime: -Infinity,
|
|
4393
|
+
aboveTime: -Infinity
|
|
4394
|
+
}];
|
|
4395
|
+
});
|
|
4396
|
+
if (groups.length === 0 || typeof IntersectionObserver === "undefined" || typeof ResizeObserver === "undefined") return () => {};
|
|
4397
|
+
const sections = new Map(groups.map((group) => [group.section, group]));
|
|
4398
|
+
const starts = new Map(groups.map((group) => [group.start, group]));
|
|
4399
|
+
let disposed = false;
|
|
4400
|
+
let stripObserver;
|
|
4401
|
+
let viewportHeight;
|
|
4402
|
+
const render = (group) => {
|
|
4403
|
+
const stuck = group.atTop && group.above;
|
|
4404
|
+
if (group.heading.hasAttribute("data-stuck") !== stuck) group.heading.toggleAttribute("data-stuck", stuck);
|
|
4405
|
+
};
|
|
4406
|
+
const startObserver = new IntersectionObserver((entries) => {
|
|
4407
|
+
if (disposed) return;
|
|
4408
|
+
for (const entry of entries) {
|
|
4409
|
+
const group = starts.get(entry.target);
|
|
4410
|
+
if (!group || entry.rootBounds === null || entry.time < group.aboveTime) continue;
|
|
4411
|
+
group.above = entry.boundingClientRect.top < entry.rootBounds.top;
|
|
4412
|
+
group.aboveTime = entry.time;
|
|
4413
|
+
render(group);
|
|
4414
|
+
}
|
|
4415
|
+
}, {
|
|
4416
|
+
root: viewport,
|
|
4417
|
+
threshold: [0, 1]
|
|
4418
|
+
});
|
|
4419
|
+
for (const { start } of groups) startObserver.observe(start);
|
|
4420
|
+
const sizeObserver = new ResizeObserver((entries) => {
|
|
4421
|
+
if (disposed) return;
|
|
4422
|
+
for (const entry of entries) {
|
|
4423
|
+
if (entry.target !== viewport || entry.contentRect.height === viewportHeight) continue;
|
|
4424
|
+
viewportHeight = entry.contentRect.height;
|
|
4425
|
+
stripObserver?.disconnect();
|
|
4426
|
+
const observer = new IntersectionObserver((intersections) => {
|
|
4427
|
+
if (disposed || stripObserver !== observer) return;
|
|
4428
|
+
for (const intersection of intersections) {
|
|
4429
|
+
const group = sections.get(intersection.target);
|
|
4430
|
+
if (!group || intersection.rootBounds === null) continue;
|
|
4431
|
+
const top = intersection.rootBounds.top;
|
|
4432
|
+
if (intersection.time >= group.topTime) {
|
|
4433
|
+
group.atTop = intersection.isIntersecting && intersection.boundingClientRect.bottom > top;
|
|
4434
|
+
group.topTime = intersection.time;
|
|
4435
|
+
}
|
|
4436
|
+
if (intersection.time >= group.aboveTime) {
|
|
4437
|
+
group.above = intersection.boundingClientRect.top < top;
|
|
4438
|
+
group.aboveTime = intersection.time;
|
|
4439
|
+
}
|
|
4440
|
+
render(group);
|
|
4441
|
+
}
|
|
4442
|
+
}, {
|
|
4443
|
+
root: viewport,
|
|
4444
|
+
rootMargin: `0px 0px ${Math.min(1, viewportHeight) - viewportHeight}px 0px`,
|
|
4445
|
+
threshold: 0
|
|
4446
|
+
});
|
|
4447
|
+
stripObserver = observer;
|
|
4448
|
+
for (const { section } of groups) observer.observe(section);
|
|
4449
|
+
}
|
|
4450
|
+
});
|
|
4451
|
+
sizeObserver.observe(viewport);
|
|
4452
|
+
return () => {
|
|
4453
|
+
if (disposed) return;
|
|
4454
|
+
disposed = true;
|
|
4455
|
+
startObserver.disconnect();
|
|
4456
|
+
stripObserver?.disconnect();
|
|
4457
|
+
sizeObserver.disconnect();
|
|
4458
|
+
for (const { heading } of groups) if (heading.hasAttribute("data-stuck")) heading.removeAttribute("data-stuck");
|
|
4459
|
+
};
|
|
4460
|
+
}
|
|
4461
|
+
//#endregion
|
|
4272
4462
|
//#region lib/types/useAnchoredMaxHeight.js
|
|
4273
4463
|
/**
|
|
4274
4464
|
* Viewport-fit hook for bottom-anchored overlays (slash menu, popupSelect):
|
|
@@ -4703,7 +4893,7 @@ function Tooltip({ label, shortcutKeys, side = "right", align = "center", delayM
|
|
|
4703
4893
|
const content = visible && !suppressed && jsxs("span", {
|
|
4704
4894
|
ref: bubble,
|
|
4705
4895
|
id: openOnClick ? id : void 0,
|
|
4706
|
-
className: css$
|
|
4896
|
+
className: css$17.bubble,
|
|
4707
4897
|
"data-side": side,
|
|
4708
4898
|
"data-portal": portal || void 0,
|
|
4709
4899
|
"data-pinned": pinned || void 0,
|
|
@@ -4718,7 +4908,7 @@ function Tooltip({ label, shortcutKeys, side = "right", align = "center", delayM
|
|
|
4718
4908
|
role: "tooltip",
|
|
4719
4909
|
"aria-label": shortcutKeys?.length ? [resolvedLabel, shortcutKeys.join(" ")].filter(Boolean).join(" ") : void 0,
|
|
4720
4910
|
children: [resolvedLabel && jsx("span", {
|
|
4721
|
-
className: css$
|
|
4911
|
+
className: css$17.label,
|
|
4722
4912
|
children: resolvedLabel
|
|
4723
4913
|
}), shortcutKeys !== void 0 && shortcutKeys.length > 0 && jsx(ShortcutKeys, {
|
|
4724
4914
|
keys: shortcutKeys,
|
|
@@ -4986,7 +5176,7 @@ function HoverCard({ anchor, content, openDelayMs = 500, disabled = false, copyT
|
|
|
4986
5176
|
};
|
|
4987
5177
|
const card = open && pos !== null && !suppressed && jsx("div", {
|
|
4988
5178
|
ref: cardRef,
|
|
4989
|
-
className: clsx(css$
|
|
5179
|
+
className: clsx(css$18.card, variant === "preview" && css$18.preview, inline && css$18.media, copyable && css$18.copyable, copied && css$18.feedback),
|
|
4990
5180
|
"data-closing": closing || void 0,
|
|
4991
5181
|
style: {
|
|
4992
5182
|
...pos,
|
|
@@ -5009,14 +5199,14 @@ function HoverCard({ anchor, content, openDelayMs = 500, disabled = false, copyT
|
|
|
5009
5199
|
copy(copyText);
|
|
5010
5200
|
} : void 0,
|
|
5011
5201
|
children: copied ? jsx("span", {
|
|
5012
|
-
className: css$
|
|
5202
|
+
className: css$18.copied,
|
|
5013
5203
|
"aria-hidden": "true",
|
|
5014
5204
|
children: copiedLabel
|
|
5015
5205
|
}) : content
|
|
5016
5206
|
});
|
|
5017
5207
|
return jsxs("span", {
|
|
5018
5208
|
ref: rootRef,
|
|
5019
|
-
className: clsx(css$
|
|
5209
|
+
className: clsx(css$18.root, inline && css$18.inline),
|
|
5020
5210
|
onFocus: inline ? (event) => {
|
|
5021
5211
|
if (!disabled && event.target.matches(":focus-visible")) {
|
|
5022
5212
|
cancelClose();
|
|
@@ -5054,7 +5244,7 @@ function HoverCard({ anchor, content, openDelayMs = 500, disabled = false, copyT
|
|
|
5054
5244
|
children: anchor
|
|
5055
5245
|
}),
|
|
5056
5246
|
open && !suppressed && copyable && jsx("span", {
|
|
5057
|
-
className: css$
|
|
5247
|
+
className: css$18.status,
|
|
5058
5248
|
role: "status",
|
|
5059
5249
|
children: copied ? copiedLabel : ""
|
|
5060
5250
|
}),
|
|
@@ -5089,11 +5279,11 @@ function Modal({ open, onClose, title, closeLabel, description, children, footer
|
|
|
5089
5279
|
useModalLayer(dialog, open, onClose);
|
|
5090
5280
|
if (!open) return null;
|
|
5091
5281
|
return createPortal(jsxs("div", {
|
|
5092
|
-
className: css$
|
|
5282
|
+
className: css$19.root,
|
|
5093
5283
|
role: "presentation",
|
|
5094
5284
|
onKeyDownCapture,
|
|
5095
5285
|
children: [jsx("div", {
|
|
5096
|
-
className: css$
|
|
5286
|
+
className: css$19.mask,
|
|
5097
5287
|
style: backdropBlur ? void 0 : { backdropFilter: "none" },
|
|
5098
5288
|
"aria-hidden": "true",
|
|
5099
5289
|
onClick: onClose
|
|
@@ -5101,37 +5291,37 @@ function Modal({ open, onClose, title, closeLabel, description, children, footer
|
|
|
5101
5291
|
ref: dialog,
|
|
5102
5292
|
tabIndex: -1,
|
|
5103
5293
|
"data-shortcut-modal": shortcutModal,
|
|
5104
|
-
className: clsx(css$
|
|
5294
|
+
className: clsx(css$19.dialog, className),
|
|
5105
5295
|
role: "dialog",
|
|
5106
5296
|
"aria-modal": "true",
|
|
5107
5297
|
"aria-label": title,
|
|
5108
5298
|
children: headless ? children : jsxs(Fragment, { children: [jsxs("div", {
|
|
5109
|
-
className: clsx(css$
|
|
5299
|
+
className: clsx(css$19.content, contentClassName),
|
|
5110
5300
|
children: [
|
|
5111
5301
|
jsxs("div", {
|
|
5112
|
-
className: css$
|
|
5302
|
+
className: css$19.header,
|
|
5113
5303
|
children: [jsx("h2", {
|
|
5114
|
-
className: css$
|
|
5304
|
+
className: css$19.title,
|
|
5115
5305
|
children: title
|
|
5116
5306
|
}), jsx("button", {
|
|
5117
5307
|
type: "button",
|
|
5118
|
-
className: css$
|
|
5308
|
+
className: css$19.close,
|
|
5119
5309
|
"aria-label": closeLabel,
|
|
5120
5310
|
onClick: onClose,
|
|
5121
5311
|
children: jsx(IconCloseOutlineRegular, { size: 14 })
|
|
5122
5312
|
})]
|
|
5123
5313
|
}),
|
|
5124
5314
|
description !== void 0 && description !== "" && jsx("p", {
|
|
5125
|
-
className: css$
|
|
5315
|
+
className: css$19.description,
|
|
5126
5316
|
children: description
|
|
5127
5317
|
}),
|
|
5128
5318
|
children !== void 0 && jsx("div", {
|
|
5129
|
-
className: css$
|
|
5319
|
+
className: css$19.body,
|
|
5130
5320
|
children
|
|
5131
5321
|
})
|
|
5132
5322
|
]
|
|
5133
5323
|
}), footer !== void 0 && jsx("div", {
|
|
5134
|
-
className: css$
|
|
5324
|
+
className: css$19.footer,
|
|
5135
5325
|
children: footer
|
|
5136
5326
|
})] })
|
|
5137
5327
|
})]
|
|
@@ -5153,28 +5343,28 @@ function RiskConfirmation({ open, title, description, acknowledgeLabel, cancelLa
|
|
|
5153
5343
|
onClose: onCancel,
|
|
5154
5344
|
title,
|
|
5155
5345
|
closeLabel,
|
|
5156
|
-
className: css$
|
|
5157
|
-
contentClassName: css$
|
|
5346
|
+
className: css$20.confirmation ?? "",
|
|
5347
|
+
contentClassName: css$20.confirmationContent ?? "",
|
|
5158
5348
|
footer: jsxs(Fragment, { children: [jsx(Button, {
|
|
5159
5349
|
variant: "outline",
|
|
5160
|
-
className: css$
|
|
5350
|
+
className: css$20.modalAction,
|
|
5161
5351
|
onClick: onCancel,
|
|
5162
5352
|
children: cancelLabel
|
|
5163
5353
|
}), jsx(Button, {
|
|
5164
5354
|
variant: "primary",
|
|
5165
|
-
className: css$
|
|
5355
|
+
className: css$20.confirmAction,
|
|
5166
5356
|
disabled: disabled || !acknowledged,
|
|
5167
5357
|
onClick: onConfirm,
|
|
5168
5358
|
children: confirmLabel
|
|
5169
5359
|
})] }),
|
|
5170
5360
|
children: [jsxs("div", {
|
|
5171
|
-
className: css$
|
|
5361
|
+
className: css$20.warning,
|
|
5172
5362
|
children: [jsx(IconWarningOutlineRegular, {
|
|
5173
5363
|
size: 18,
|
|
5174
|
-
className: css$
|
|
5364
|
+
className: css$20.warningIcon
|
|
5175
5365
|
}), jsx("p", { children: description })]
|
|
5176
5366
|
}), jsxs("label", {
|
|
5177
|
-
className: css$
|
|
5367
|
+
className: css$20.acknowledgement,
|
|
5178
5368
|
children: [jsx("input", {
|
|
5179
5369
|
type: "checkbox",
|
|
5180
5370
|
checked: acknowledged,
|
|
@@ -5222,44 +5412,44 @@ function ConnectionIndicator({ state, disconnectedLabel, connectingLabel, recove
|
|
|
5222
5412
|
};
|
|
5223
5413
|
}, [state, rendered]);
|
|
5224
5414
|
if (rendered === void 0) return null;
|
|
5225
|
-
const leavingClass = leaving ? ` ${css$
|
|
5415
|
+
const leavingClass = leaving ? ` ${css$21.leaving}` : "";
|
|
5226
5416
|
if (rendered === "recovered") return jsxs("div", {
|
|
5227
|
-
className: `${css$
|
|
5417
|
+
className: `${css$21.indicator} ${css$21.success}${leavingClass}`,
|
|
5228
5418
|
role: "status",
|
|
5229
5419
|
"aria-label": recoveredLabel,
|
|
5230
5420
|
children: [jsx("span", {
|
|
5231
|
-
className: css$
|
|
5421
|
+
className: css$21.icon,
|
|
5232
5422
|
"aria-hidden": "true",
|
|
5233
5423
|
children: jsx(IconCheckOutlineRegular, { size: 14 })
|
|
5234
5424
|
}), jsx("span", {
|
|
5235
|
-
className: css$
|
|
5425
|
+
className: css$21.label,
|
|
5236
5426
|
children: recoveredLabel
|
|
5237
5427
|
})]
|
|
5238
5428
|
});
|
|
5239
5429
|
const connecting = rendered === "connecting";
|
|
5240
5430
|
return jsxs("button", {
|
|
5241
5431
|
type: "button",
|
|
5242
|
-
className: `${css$
|
|
5432
|
+
className: `${css$21.indicator} ${css$21.warning}${leavingClass}`,
|
|
5243
5433
|
"data-phase": rendered,
|
|
5244
5434
|
"aria-label": connecting ? restartActionLabel : reconnectActionLabel,
|
|
5245
5435
|
onClick: onReconnect,
|
|
5246
5436
|
children: [jsx("span", {
|
|
5247
|
-
className: css$
|
|
5437
|
+
className: css$21.icon,
|
|
5248
5438
|
"aria-hidden": "true",
|
|
5249
5439
|
children: connecting ? jsx(StateDot, { state: "ongoing" }) : jsx(IconRefreshOutlineRegular, { size: 14 })
|
|
5250
5440
|
}), jsx("span", {
|
|
5251
|
-
className: css$
|
|
5441
|
+
className: css$21.label,
|
|
5252
5442
|
children: connecting ? jsxs(Fragment, { children: [connectingLabel, jsxs("span", {
|
|
5253
|
-
className: css$
|
|
5443
|
+
className: css$21.dots,
|
|
5254
5444
|
"aria-hidden": "true",
|
|
5255
5445
|
children: [
|
|
5256
5446
|
jsx("span", { children: "." }),
|
|
5257
5447
|
jsx("span", {
|
|
5258
|
-
className: css$
|
|
5448
|
+
className: css$21.secondDot,
|
|
5259
5449
|
children: "."
|
|
5260
5450
|
}),
|
|
5261
5451
|
jsx("span", {
|
|
5262
|
-
className: css$
|
|
5452
|
+
className: css$21.thirdDot,
|
|
5263
5453
|
children: "."
|
|
5264
5454
|
})
|
|
5265
5455
|
]
|
|
@@ -6290,7 +6480,7 @@ function FileTypeIcon(props) {
|
|
|
6290
6480
|
type: resolvedType,
|
|
6291
6481
|
size,
|
|
6292
6482
|
className
|
|
6293
|
-
}) : glyph(resolvedType, size, clsx(css$
|
|
6483
|
+
}) : glyph(resolvedType, size, clsx(css$22.icon, css$22[resolvedType], className));
|
|
6294
6484
|
}
|
|
6295
6485
|
//#endregion
|
|
6296
6486
|
//#region lib/types/SiteGlyph.js
|
|
@@ -6619,7 +6809,7 @@ function projectUserText(text, sessionLabels, slashNames = [], slashKind = "skil
|
|
|
6619
6809
|
let cursor = 0;
|
|
6620
6810
|
const pushPlain = (from, to) => {
|
|
6621
6811
|
parts.push(jsx("span", {
|
|
6622
|
-
className: css$
|
|
6812
|
+
className: css$23.plainRun,
|
|
6623
6813
|
children: text.slice(from, to)
|
|
6624
6814
|
}, `t${from}`));
|
|
6625
6815
|
};
|
|
@@ -6632,14 +6822,14 @@ function projectUserText(text, sessionLabels, slashNames = [], slashKind = "skil
|
|
|
6632
6822
|
const contents = jsxs(Fragment, { children: [referenceKind !== void 0 && jsx(ReferenceIconRegular, {
|
|
6633
6823
|
kind: referenceKind,
|
|
6634
6824
|
size: 16,
|
|
6635
|
-
className: css$
|
|
6825
|
+
className: css$23.refIcon
|
|
6636
6826
|
}), displayLabel] });
|
|
6637
6827
|
const open = references === void 0 ? void 0 : referenceKind === "file" ? () => {
|
|
6638
6828
|
references.openFile(label.slice(1).replace(/^"|"$/gu, ""));
|
|
6639
6829
|
} : referenceKind === void 0 && slashKind === "skill" ? () => {
|
|
6640
6830
|
references.openSkill(label.slice(1));
|
|
6641
6831
|
} : void 0;
|
|
6642
|
-
const className = clsx(css$
|
|
6832
|
+
const className = clsx(css$23.refChip, referenceKind === void 0 && css$23.slashChip);
|
|
6643
6833
|
parts.push(open === void 0 ? jsx("span", {
|
|
6644
6834
|
className,
|
|
6645
6835
|
"data-ref-chip": referenceKind ?? slashKind,
|
|
@@ -6659,7 +6849,7 @@ function projectUserText(text, sessionLabels, slashNames = [], slashKind = "skil
|
|
|
6659
6849
|
cursor = end;
|
|
6660
6850
|
}
|
|
6661
6851
|
if (parts.length === 0) return jsx("span", {
|
|
6662
|
-
className: css$
|
|
6852
|
+
className: css$23.plainRun,
|
|
6663
6853
|
children: text
|
|
6664
6854
|
});
|
|
6665
6855
|
if (cursor < text.length) pushPlain(cursor, text.length);
|
|
@@ -6732,25 +6922,25 @@ function Toast({ text, icon, tone, anchor, holdMs = HOLD_MS, actions, onDone })
|
|
|
6732
6922
|
};
|
|
6733
6923
|
}, [anchor]);
|
|
6734
6924
|
return createPortal(jsxs("div", {
|
|
6735
|
-
className: css$
|
|
6925
|
+
className: css$24.toast,
|
|
6736
6926
|
role: "alert",
|
|
6737
6927
|
style: {
|
|
6738
6928
|
...left === null ? {} : { left },
|
|
6739
6929
|
"--dsh-toast-hold": `${String(holdMs)}ms`
|
|
6740
6930
|
},
|
|
6741
6931
|
children: [tone === "success" ? jsx("span", {
|
|
6742
|
-
className: `${css$
|
|
6932
|
+
className: `${css$24.icon} ${css$24.success}`,
|
|
6743
6933
|
"aria-hidden": true,
|
|
6744
6934
|
children: jsx(IconCheckCircleOutlineRegular, {})
|
|
6745
6935
|
}) : icon !== void 0 && jsx("span", {
|
|
6746
|
-
className: css$
|
|
6936
|
+
className: css$24.icon,
|
|
6747
6937
|
"aria-hidden": true,
|
|
6748
6938
|
children: icon
|
|
6749
6939
|
}), jsxs("span", {
|
|
6750
|
-
className: css$
|
|
6940
|
+
className: css$24.text,
|
|
6751
6941
|
children: [text, actions?.map((action) => jsxs(Fragment$1, { children: [action.prefix, jsx("button", {
|
|
6752
6942
|
type: "button",
|
|
6753
|
-
className: css$
|
|
6943
|
+
className: css$24.action,
|
|
6754
6944
|
onClick: action.onClick,
|
|
6755
6945
|
children: action.label
|
|
6756
6946
|
})] }, action.label))]
|
|
@@ -6800,29 +6990,29 @@ function SettingsForm(props) {
|
|
|
6800
6990
|
discard.current();
|
|
6801
6991
|
}, []);
|
|
6802
6992
|
if (!state.available) return jsx("p", {
|
|
6803
|
-
className: css$
|
|
6993
|
+
className: css$25.unavailable,
|
|
6804
6994
|
role: "status",
|
|
6805
6995
|
children: labels.unavailable
|
|
6806
6996
|
});
|
|
6807
6997
|
const blocked = !state.dirty || state.invalid || state.saving;
|
|
6808
6998
|
return jsxs("div", {
|
|
6809
|
-
className: css$
|
|
6999
|
+
className: css$25.form,
|
|
6810
7000
|
children: [
|
|
6811
7001
|
!state.writable ? jsx("p", {
|
|
6812
|
-
className: css$
|
|
7002
|
+
className: css$25.readOnly,
|
|
6813
7003
|
role: "status",
|
|
6814
7004
|
children: labels.readOnly
|
|
6815
7005
|
}) : null,
|
|
6816
7006
|
props.children,
|
|
6817
7007
|
jsxs("div", {
|
|
6818
|
-
className: css$
|
|
7008
|
+
className: css$25.footer,
|
|
6819
7009
|
children: [state.failed ? jsx("p", {
|
|
6820
|
-
className: css$
|
|
7010
|
+
className: css$25.failed,
|
|
6821
7011
|
role: "status",
|
|
6822
7012
|
children: labels.saveFailed
|
|
6823
7013
|
}) : null, jsx("button", {
|
|
6824
7014
|
type: "button",
|
|
6825
|
-
className: css$
|
|
7015
|
+
className: css$25.save,
|
|
6826
7016
|
disabled: blocked,
|
|
6827
7017
|
onClick: props.onSave,
|
|
6828
7018
|
children: state.saving ? labels.saving : labels.save
|
|
@@ -6854,19 +7044,19 @@ function SettingsValueField(props) {
|
|
|
6854
7044
|
const hasMessage = props.invalid || Boolean(props.hint);
|
|
6855
7045
|
const description = [hasMessage ? messageId : "", helpOpen ? helpId : ""].filter(Boolean).join(" ");
|
|
6856
7046
|
return jsxs("div", {
|
|
6857
|
-
className: css$
|
|
7047
|
+
className: css$26.field,
|
|
6858
7048
|
children: [
|
|
6859
7049
|
jsxs("div", {
|
|
6860
|
-
className: css$
|
|
7050
|
+
className: css$26.head,
|
|
6861
7051
|
children: [jsxs("div", {
|
|
6862
|
-
className: css$
|
|
7052
|
+
className: css$26.labelGroup,
|
|
6863
7053
|
children: [jsx("label", {
|
|
6864
|
-
className: css$
|
|
7054
|
+
className: css$26.label,
|
|
6865
7055
|
htmlFor: props.id,
|
|
6866
7056
|
children: props.label
|
|
6867
7057
|
}), props.help !== void 0 ? jsx("button", {
|
|
6868
7058
|
type: "button",
|
|
6869
|
-
className: css$
|
|
7059
|
+
className: css$26.helpButton,
|
|
6870
7060
|
"aria-label": props.help.label,
|
|
6871
7061
|
"aria-expanded": helpOpen,
|
|
6872
7062
|
"aria-controls": helpId,
|
|
@@ -6876,13 +7066,13 @@ function SettingsValueField(props) {
|
|
|
6876
7066
|
children: jsx(IconInfoOutlineRegular, { size: 12 })
|
|
6877
7067
|
}) : null]
|
|
6878
7068
|
}), props.overridden ? jsxs("span", {
|
|
6879
|
-
className: css$
|
|
7069
|
+
className: css$26.badges,
|
|
6880
7070
|
children: [jsx(Tag, {
|
|
6881
7071
|
tone: "neutral",
|
|
6882
7072
|
children: props.overriddenLabel
|
|
6883
7073
|
}), jsx("button", {
|
|
6884
7074
|
type: "button",
|
|
6885
|
-
className: css$
|
|
7075
|
+
className: css$26.reset,
|
|
6886
7076
|
disabled: props.disabled,
|
|
6887
7077
|
onClick: props.onReset,
|
|
6888
7078
|
children: props.resetLabel
|
|
@@ -6891,7 +7081,7 @@ function SettingsValueField(props) {
|
|
|
6891
7081
|
}),
|
|
6892
7082
|
jsx("input", {
|
|
6893
7083
|
id: props.id,
|
|
6894
|
-
className: css$
|
|
7084
|
+
className: css$26.input,
|
|
6895
7085
|
type: "text",
|
|
6896
7086
|
...props.numeric === true ? { inputMode: "numeric" } : {},
|
|
6897
7087
|
...props.invalid ? { "aria-invalid": true } : {},
|
|
@@ -6905,12 +7095,12 @@ function SettingsValueField(props) {
|
|
|
6905
7095
|
}),
|
|
6906
7096
|
hasMessage ? jsx("p", {
|
|
6907
7097
|
id: messageId,
|
|
6908
|
-
className: props.invalid ? css$
|
|
7098
|
+
className: props.invalid ? css$26.invalid : css$26.hint,
|
|
6909
7099
|
children: props.invalid ? props.invalidLabel : props.hint
|
|
6910
7100
|
}) : null,
|
|
6911
7101
|
props.help !== void 0 && helpOpen ? jsx("div", {
|
|
6912
7102
|
id: helpId,
|
|
6913
|
-
className: css$
|
|
7103
|
+
className: css$26.help,
|
|
6914
7104
|
role: "region",
|
|
6915
7105
|
"aria-label": props.help.label,
|
|
6916
7106
|
children: props.help.content
|
|
@@ -6928,16 +7118,16 @@ function SettingsValueField(props) {
|
|
|
6928
7118
|
*/
|
|
6929
7119
|
function SettingsSecretField(props) {
|
|
6930
7120
|
return jsxs("div", {
|
|
6931
|
-
className: css$
|
|
7121
|
+
className: css$26.field,
|
|
6932
7122
|
children: [
|
|
6933
7123
|
jsxs("div", {
|
|
6934
|
-
className: css$
|
|
7124
|
+
className: css$26.head,
|
|
6935
7125
|
children: [jsx("label", {
|
|
6936
|
-
className: css$
|
|
7126
|
+
className: css$26.label,
|
|
6937
7127
|
htmlFor: props.id,
|
|
6938
7128
|
children: props.label
|
|
6939
7129
|
}), jsx("span", {
|
|
6940
|
-
className: css$
|
|
7130
|
+
className: css$26.badges,
|
|
6941
7131
|
children: jsx(Tag, {
|
|
6942
7132
|
tone: props.configured ? "neutral" : "quiet",
|
|
6943
7133
|
children: props.stateLabel
|
|
@@ -6946,7 +7136,7 @@ function SettingsSecretField(props) {
|
|
|
6946
7136
|
}),
|
|
6947
7137
|
jsx("input", {
|
|
6948
7138
|
id: props.id,
|
|
6949
|
-
className: css$
|
|
7139
|
+
className: css$26.input,
|
|
6950
7140
|
type: "password",
|
|
6951
7141
|
autoComplete: "new-password",
|
|
6952
7142
|
value: props.text,
|
|
@@ -6956,7 +7146,7 @@ function SettingsSecretField(props) {
|
|
|
6956
7146
|
}
|
|
6957
7147
|
}),
|
|
6958
7148
|
jsx("p", {
|
|
6959
|
-
className: css$
|
|
7149
|
+
className: css$26.hint,
|
|
6960
7150
|
children: props.hint
|
|
6961
7151
|
})
|
|
6962
7152
|
]
|
|
@@ -8022,7 +8212,7 @@ function JsonCopyAction({ store, target, persistent, labels, onCopy, onClose })
|
|
|
8022
8212
|
const object = typeof target.value === "object" && target.value !== null;
|
|
8023
8213
|
const copyTitle = state === "copied" ? labels.copied : state === "failed" ? labels.copyFailed : object ? labels.copyPrettyJson : labels.copyValue;
|
|
8024
8214
|
return jsx("span", {
|
|
8025
|
-
className: css$
|
|
8215
|
+
className: css$27.copySlot,
|
|
8026
8216
|
children: (persistent || snapshot !== void 0) && jsx(Menu, {
|
|
8027
8217
|
open: snapshot?.menuOpen === true,
|
|
8028
8218
|
compact: true,
|
|
@@ -8031,7 +8221,7 @@ function JsonCopyAction({ store, target, persistent, labels, onCopy, onClose })
|
|
|
8031
8221
|
anchor: jsx("button", {
|
|
8032
8222
|
ref: buttonRef,
|
|
8033
8223
|
type: "button",
|
|
8034
|
-
className: css$
|
|
8224
|
+
className: css$27.actionButton,
|
|
8035
8225
|
"data-json-copy-button": true,
|
|
8036
8226
|
"data-state": state,
|
|
8037
8227
|
"aria-label": copyTitle,
|
|
@@ -8070,35 +8260,35 @@ function bracketOf(value) {
|
|
|
8070
8260
|
}
|
|
8071
8261
|
function previewPrimitive(value) {
|
|
8072
8262
|
if (value === null) return jsx("span", {
|
|
8073
|
-
className: css$
|
|
8263
|
+
className: css$27.keywordValue,
|
|
8074
8264
|
children: "null"
|
|
8075
8265
|
});
|
|
8076
8266
|
if (typeof value === "string") return jsx("span", {
|
|
8077
|
-
className: css$
|
|
8267
|
+
className: css$27.stringValue,
|
|
8078
8268
|
children: JSON.stringify(value)
|
|
8079
8269
|
});
|
|
8080
8270
|
if (typeof value === "number") return jsx("span", {
|
|
8081
|
-
className: css$
|
|
8271
|
+
className: css$27.numberValue,
|
|
8082
8272
|
children: String(value)
|
|
8083
8273
|
});
|
|
8084
8274
|
if (typeof value === "boolean") return jsx("span", {
|
|
8085
|
-
className: css$
|
|
8275
|
+
className: css$27.keywordValue,
|
|
8086
8276
|
children: String(value)
|
|
8087
8277
|
});
|
|
8088
8278
|
if (typeof value === "bigint") return jsx("span", {
|
|
8089
|
-
className: css$
|
|
8279
|
+
className: css$27.otherValue,
|
|
8090
8280
|
children: value.toString()
|
|
8091
8281
|
});
|
|
8092
8282
|
if (typeof value === "undefined") return jsx("span", {
|
|
8093
|
-
className: css$
|
|
8283
|
+
className: css$27.otherValue,
|
|
8094
8284
|
children: "undefined"
|
|
8095
8285
|
});
|
|
8096
8286
|
if (typeof value === "symbol") return jsx("span", {
|
|
8097
|
-
className: css$
|
|
8287
|
+
className: css$27.otherValue,
|
|
8098
8288
|
children: value.description ?? "Symbol"
|
|
8099
8289
|
});
|
|
8100
8290
|
if (typeof value === "function") return jsx("span", {
|
|
8101
|
-
className: css$
|
|
8291
|
+
className: css$27.otherValue,
|
|
8102
8292
|
children: value.name || "Function"
|
|
8103
8293
|
});
|
|
8104
8294
|
return null;
|
|
@@ -8112,71 +8302,71 @@ function previewValue(value, depth) {
|
|
|
8112
8302
|
const [open, close] = bracketOf(value);
|
|
8113
8303
|
return jsxs(Fragment, { children: [
|
|
8114
8304
|
jsx("span", {
|
|
8115
|
-
className: css$
|
|
8305
|
+
className: css$27.punctuation,
|
|
8116
8306
|
children: open
|
|
8117
8307
|
}),
|
|
8118
8308
|
depth >= PREVIEW_DEPTH_LIMIT ? jsx("span", {
|
|
8119
|
-
className: css$
|
|
8309
|
+
className: css$27.previewEllipsis,
|
|
8120
8310
|
children: "…"
|
|
8121
8311
|
}) : visible.map(([key, item], index) => jsxs("span", { children: [
|
|
8122
8312
|
index > 0 && jsx("span", {
|
|
8123
|
-
className: css$
|
|
8313
|
+
className: css$27.punctuation,
|
|
8124
8314
|
children: ", "
|
|
8125
8315
|
}),
|
|
8126
8316
|
!array && jsxs(Fragment, { children: [jsx("span", {
|
|
8127
|
-
className: css$
|
|
8317
|
+
className: css$27.previewProperty,
|
|
8128
8318
|
children: key
|
|
8129
8319
|
}), jsx("span", {
|
|
8130
|
-
className: css$
|
|
8320
|
+
className: css$27.punctuation,
|
|
8131
8321
|
children: ": "
|
|
8132
8322
|
})] }),
|
|
8133
8323
|
previewValue(item, depth + 1)
|
|
8134
8324
|
] }, key)),
|
|
8135
8325
|
depth < PREVIEW_DEPTH_LIMIT && entries.length > limit && jsx("span", {
|
|
8136
|
-
className: css$
|
|
8326
|
+
className: css$27.previewEllipsis,
|
|
8137
8327
|
children: ", …"
|
|
8138
8328
|
}),
|
|
8139
8329
|
jsx("span", {
|
|
8140
|
-
className: css$
|
|
8330
|
+
className: css$27.punctuation,
|
|
8141
8331
|
children: close
|
|
8142
8332
|
})
|
|
8143
8333
|
] });
|
|
8144
8334
|
}
|
|
8145
8335
|
function primitiveValue(value) {
|
|
8146
8336
|
if (value === null) return jsx("span", {
|
|
8147
|
-
className: css$
|
|
8337
|
+
className: css$27.keywordValue,
|
|
8148
8338
|
children: "null"
|
|
8149
8339
|
});
|
|
8150
8340
|
if (typeof value === "string") return jsx("span", {
|
|
8151
|
-
className: css$
|
|
8341
|
+
className: css$27.stringValue,
|
|
8152
8342
|
children: JSON.stringify(value)
|
|
8153
8343
|
});
|
|
8154
8344
|
if (typeof value === "boolean") return jsx("span", {
|
|
8155
|
-
className: css$
|
|
8345
|
+
className: css$27.keywordValue,
|
|
8156
8346
|
children: String(value)
|
|
8157
8347
|
});
|
|
8158
8348
|
if (typeof value === "number") return jsx("span", {
|
|
8159
|
-
className: css$
|
|
8349
|
+
className: css$27.numberValue,
|
|
8160
8350
|
children: String(value)
|
|
8161
8351
|
});
|
|
8162
8352
|
if (typeof value === "bigint") return jsx("span", {
|
|
8163
|
-
className: css$
|
|
8353
|
+
className: css$27.numberValue,
|
|
8164
8354
|
children: `${value.toString()}n`
|
|
8165
8355
|
});
|
|
8166
8356
|
if (value instanceof Date) return jsx("span", {
|
|
8167
|
-
className: css$
|
|
8357
|
+
className: css$27.otherValue,
|
|
8168
8358
|
children: value.toISOString()
|
|
8169
8359
|
});
|
|
8170
8360
|
if (typeof value === "function") return jsxs("span", {
|
|
8171
|
-
className: css$
|
|
8361
|
+
className: css$27.otherValue,
|
|
8172
8362
|
children: ["function() ", "{ }"]
|
|
8173
8363
|
});
|
|
8174
8364
|
if (typeof value === "undefined") return jsx("span", {
|
|
8175
|
-
className: css$
|
|
8365
|
+
className: css$27.otherValue,
|
|
8176
8366
|
children: "undefined"
|
|
8177
8367
|
});
|
|
8178
8368
|
return jsx("span", {
|
|
8179
|
-
className: css$
|
|
8369
|
+
className: css$27.otherValue,
|
|
8180
8370
|
children: value.toString()
|
|
8181
8371
|
});
|
|
8182
8372
|
}
|
|
@@ -8204,7 +8394,7 @@ function moveFocus(button, direction) {
|
|
|
8204
8394
|
function NodeField({ field, expandable, onToggle }) {
|
|
8205
8395
|
if (field === void 0) return null;
|
|
8206
8396
|
return jsxs("span", {
|
|
8207
|
-
className: clsx(css$
|
|
8397
|
+
className: clsx(css$27.label, expandable && css$27.clickableLabel),
|
|
8208
8398
|
onClick: expandable ? onToggle : void 0,
|
|
8209
8399
|
children: [fieldText(field), ":"]
|
|
8210
8400
|
});
|
|
@@ -8241,7 +8431,7 @@ function JsonString({ collapsedStringLines, stringWrapping, field, labels, lastE
|
|
|
8241
8431
|
if (!expanded) return;
|
|
8242
8432
|
const raw = rawRef.current;
|
|
8243
8433
|
const clips = [];
|
|
8244
|
-
const tree = raw.closest(`.${css$
|
|
8434
|
+
const tree = raw.closest(`.${css$27.root}`);
|
|
8245
8435
|
for (let parent = tree.parentElement; parent !== null; parent = parent.parentElement) if (/auto|scroll|hidden|clip/.test(getComputedStyle(parent).overflowY)) clips.push(parent);
|
|
8246
8436
|
const measure = () => {
|
|
8247
8437
|
let top = 0;
|
|
@@ -8270,33 +8460,33 @@ function JsonString({ collapsedStringLines, stringWrapping, field, labels, lastE
|
|
|
8270
8460
|
if (expanded) {
|
|
8271
8461
|
const fieldId = `${contentsId}-field`;
|
|
8272
8462
|
return jsxs("div", {
|
|
8273
|
-
className: css$
|
|
8463
|
+
className: css$27.stringField,
|
|
8274
8464
|
"data-expanded": true,
|
|
8275
8465
|
children: [
|
|
8276
8466
|
field !== void 0 && jsxs("span", {
|
|
8277
8467
|
id: fieldId,
|
|
8278
|
-
className: css$
|
|
8468
|
+
className: css$27.label,
|
|
8279
8469
|
children: [fieldText(field), ":"]
|
|
8280
8470
|
}),
|
|
8281
8471
|
jsx("pre", {
|
|
8282
8472
|
ref: rawRef,
|
|
8283
8473
|
id: contentsId,
|
|
8284
|
-
className: css$
|
|
8474
|
+
className: css$27.stringRaw,
|
|
8285
8475
|
"data-wrap": wrapped,
|
|
8286
8476
|
tabIndex: 0,
|
|
8287
8477
|
"aria-labelledby": field === void 0 ? void 0 : fieldId,
|
|
8288
8478
|
children: value
|
|
8289
8479
|
}),
|
|
8290
8480
|
!lastElement && jsx("span", {
|
|
8291
|
-
className: css$
|
|
8481
|
+
className: css$27.punctuation,
|
|
8292
8482
|
children: ","
|
|
8293
8483
|
}),
|
|
8294
8484
|
jsxs("div", {
|
|
8295
|
-
className: css$
|
|
8485
|
+
className: css$27.stringActions,
|
|
8296
8486
|
children: [
|
|
8297
8487
|
stringWrapping !== void 0 && jsx("button", {
|
|
8298
8488
|
type: "button",
|
|
8299
|
-
className: css$
|
|
8489
|
+
className: css$27.actionButton,
|
|
8300
8490
|
"aria-label": stringWrapping.label,
|
|
8301
8491
|
title: stringWrapping.label,
|
|
8302
8492
|
"aria-pressed": wrapped,
|
|
@@ -8310,7 +8500,7 @@ function JsonString({ collapsedStringLines, stringWrapping, field, labels, lastE
|
|
|
8310
8500
|
}),
|
|
8311
8501
|
jsx("button", {
|
|
8312
8502
|
type: "button",
|
|
8313
|
-
className: css$
|
|
8503
|
+
className: css$27.actionButton,
|
|
8314
8504
|
"aria-label": labels.collapseNode,
|
|
8315
8505
|
title: labels.collapseNode,
|
|
8316
8506
|
"aria-expanded": true,
|
|
@@ -8335,18 +8525,18 @@ function JsonString({ collapsedStringLines, stringWrapping, field, labels, lastE
|
|
|
8335
8525
|
});
|
|
8336
8526
|
}
|
|
8337
8527
|
return jsxs(Fragment, { children: [renderCopy?.(), jsx("span", {
|
|
8338
|
-
className: css$
|
|
8528
|
+
className: css$27.stringField,
|
|
8339
8529
|
"data-expanded": expanded,
|
|
8340
8530
|
children: jsxs("span", {
|
|
8341
8531
|
ref: contentRef,
|
|
8342
8532
|
id: contentsId,
|
|
8343
|
-
className: css$
|
|
8533
|
+
className: css$27.stringText,
|
|
8344
8534
|
children: [
|
|
8345
8535
|
truncated && jsx("span", {
|
|
8346
|
-
className: css$
|
|
8536
|
+
className: css$27.stringToggleSlot,
|
|
8347
8537
|
children: jsxs("button", {
|
|
8348
8538
|
type: "button",
|
|
8349
|
-
className: css$
|
|
8539
|
+
className: css$27.stringToggle,
|
|
8350
8540
|
"aria-label": labels.expandNode,
|
|
8351
8541
|
"aria-expanded": false,
|
|
8352
8542
|
"aria-controls": contentsId,
|
|
@@ -8361,12 +8551,12 @@ function JsonString({ collapsedStringLines, stringWrapping, field, labels, lastE
|
|
|
8361
8551
|
})
|
|
8362
8552
|
}),
|
|
8363
8553
|
field !== void 0 && jsxs("span", {
|
|
8364
|
-
className: css$
|
|
8554
|
+
className: css$27.label,
|
|
8365
8555
|
children: [fieldText(field), ":"]
|
|
8366
8556
|
}),
|
|
8367
8557
|
primitiveValue(value),
|
|
8368
8558
|
!lastElement && jsx("span", {
|
|
8369
|
-
className: css$
|
|
8559
|
+
className: css$27.punctuation,
|
|
8370
8560
|
children: ","
|
|
8371
8561
|
})
|
|
8372
8562
|
]
|
|
@@ -8397,7 +8587,7 @@ function JsonTreeNode({ collapsedStringLines, stringWrapping, field, initialExpa
|
|
|
8397
8587
|
}
|
|
8398
8588
|
};
|
|
8399
8589
|
const row = (children, ariaExpanded) => jsxs("div", {
|
|
8400
|
-
className: css$
|
|
8590
|
+
className: css$27.row,
|
|
8401
8591
|
role: "treeitem",
|
|
8402
8592
|
"aria-expanded": ariaExpanded,
|
|
8403
8593
|
onMouseOver: (event) => {
|
|
@@ -8432,7 +8622,7 @@ function JsonTreeNode({ collapsedStringLines, stringWrapping, field, initialExpa
|
|
|
8432
8622
|
}),
|
|
8433
8623
|
primitiveValue(value),
|
|
8434
8624
|
!lastElement && jsx("span", {
|
|
8435
|
-
className: css$
|
|
8625
|
+
className: css$27.punctuation,
|
|
8436
8626
|
children: ","
|
|
8437
8627
|
})
|
|
8438
8628
|
] }));
|
|
@@ -8444,22 +8634,22 @@ function JsonTreeNode({ collapsedStringLines, stringWrapping, field, initialExpa
|
|
|
8444
8634
|
onToggle: toggle
|
|
8445
8635
|
}),
|
|
8446
8636
|
jsx("span", {
|
|
8447
|
-
className: css$
|
|
8637
|
+
className: css$27.punctuation,
|
|
8448
8638
|
children: open
|
|
8449
8639
|
}),
|
|
8450
8640
|
jsx("span", {
|
|
8451
|
-
className: css$
|
|
8641
|
+
className: css$27.punctuation,
|
|
8452
8642
|
children: close
|
|
8453
8643
|
}),
|
|
8454
8644
|
!lastElement && jsx("span", {
|
|
8455
|
-
className: css$
|
|
8645
|
+
className: css$27.punctuation,
|
|
8456
8646
|
children: ","
|
|
8457
8647
|
})
|
|
8458
8648
|
] }));
|
|
8459
8649
|
return row(jsxs(Fragment, { children: [
|
|
8460
8650
|
jsx("span", {
|
|
8461
8651
|
ref: expanderRef,
|
|
8462
|
-
className: clsx(css$
|
|
8652
|
+
className: clsx(css$27.expander, expanded ? css$27.collapseIcon : css$27.expandIcon),
|
|
8463
8653
|
"data-json-expander": true,
|
|
8464
8654
|
role: "button",
|
|
8465
8655
|
"aria-label": expanded ? labels.collapseNode : labels.expandNode,
|
|
@@ -8473,7 +8663,7 @@ function JsonTreeNode({ collapsedStringLines, stringWrapping, field, initialExpa
|
|
|
8473
8663
|
onKeyDown: onExpanderKeyDown
|
|
8474
8664
|
}),
|
|
8475
8665
|
jsxs("span", {
|
|
8476
|
-
className: css$
|
|
8666
|
+
className: css$27.summary,
|
|
8477
8667
|
children: [
|
|
8478
8668
|
jsx(NodeField, {
|
|
8479
8669
|
field,
|
|
@@ -8481,11 +8671,11 @@ function JsonTreeNode({ collapsedStringLines, stringWrapping, field, initialExpa
|
|
|
8481
8671
|
onToggle: toggle
|
|
8482
8672
|
}),
|
|
8483
8673
|
jsx("span", {
|
|
8484
|
-
className: css$
|
|
8674
|
+
className: css$27.preview,
|
|
8485
8675
|
children: previewValue(value, 0)
|
|
8486
8676
|
}),
|
|
8487
8677
|
!lastElement && jsx("span", {
|
|
8488
|
-
className: css$
|
|
8678
|
+
className: css$27.punctuation,
|
|
8489
8679
|
children: ","
|
|
8490
8680
|
})
|
|
8491
8681
|
]
|
|
@@ -8493,7 +8683,7 @@ function JsonTreeNode({ collapsedStringLines, stringWrapping, field, initialExpa
|
|
|
8493
8683
|
expanded && jsx("ul", {
|
|
8494
8684
|
id: contentsId,
|
|
8495
8685
|
role: "group",
|
|
8496
|
-
className: css$
|
|
8686
|
+
className: css$27.children,
|
|
8497
8687
|
children: entries.map(([key, item], index) => jsx(JsonTreeNode, {
|
|
8498
8688
|
collapsedStringLines,
|
|
8499
8689
|
stringWrapping,
|
|
@@ -8625,17 +8815,17 @@ function JsonTree({ data, label, className, collapsedStringLines = 3, stringWrap
|
|
|
8625
8815
|
onClose: clearCopyTarget
|
|
8626
8816
|
}) : void 0;
|
|
8627
8817
|
return jsx("div", {
|
|
8628
|
-
className: clsx(css$
|
|
8818
|
+
className: clsx(css$27.root, className),
|
|
8629
8819
|
style: { "--json-tree-collapsed-lines": collapsedStringLines },
|
|
8630
8820
|
onMouseOver: handleRootMouseOver,
|
|
8631
8821
|
onMouseLeave: () => {
|
|
8632
8822
|
if (!copyStore.get()?.menuOpen) clearCopyTarget();
|
|
8633
8823
|
},
|
|
8634
8824
|
children: expandTopLevel ? jsxs("div", {
|
|
8635
|
-
className: css$
|
|
8825
|
+
className: css$27.expandedTopLevel,
|
|
8636
8826
|
children: [
|
|
8637
8827
|
jsxs("div", {
|
|
8638
|
-
className: clsx(css$
|
|
8828
|
+
className: clsx(css$27.row, css$27.topLevelBracket),
|
|
8639
8829
|
"data-json-root-row": true,
|
|
8640
8830
|
onMouseOver: (event) => {
|
|
8641
8831
|
event.stopPropagation();
|
|
@@ -8648,13 +8838,13 @@ function JsonTree({ data, label, className, collapsedStringLines = 3, stringWrap
|
|
|
8648
8838
|
path: [],
|
|
8649
8839
|
value: data
|
|
8650
8840
|
}), jsx("span", {
|
|
8651
|
-
className: css$
|
|
8841
|
+
className: css$27.punctuation,
|
|
8652
8842
|
children: rootOpen
|
|
8653
8843
|
})]
|
|
8654
8844
|
}),
|
|
8655
8845
|
jsx("div", {
|
|
8656
8846
|
"aria-label": label,
|
|
8657
|
-
className: clsx(css$
|
|
8847
|
+
className: clsx(css$27.container, css$27.expandedTopLevelContainer),
|
|
8658
8848
|
role: "tree",
|
|
8659
8849
|
children: rootEntries.map(([key, value], index) => jsx(JsonTreeNode, {
|
|
8660
8850
|
collapsedStringLines,
|
|
@@ -8672,16 +8862,16 @@ function JsonTree({ data, label, className, collapsedStringLines = 3, stringWrap
|
|
|
8672
8862
|
}, key))
|
|
8673
8863
|
}),
|
|
8674
8864
|
jsx("div", {
|
|
8675
|
-
className: clsx(css$
|
|
8865
|
+
className: clsx(css$27.row, css$27.topLevelBracket),
|
|
8676
8866
|
children: jsx("span", {
|
|
8677
|
-
className: css$
|
|
8867
|
+
className: css$27.punctuation,
|
|
8678
8868
|
children: rootClose
|
|
8679
8869
|
})
|
|
8680
8870
|
})
|
|
8681
8871
|
]
|
|
8682
8872
|
}) : jsx("div", {
|
|
8683
8873
|
"aria-label": label,
|
|
8684
|
-
className: css$
|
|
8874
|
+
className: css$27.container,
|
|
8685
8875
|
role: "tree",
|
|
8686
8876
|
children: jsx(JsonTreeNode, {
|
|
8687
8877
|
collapsedStringLines,
|
|
@@ -9244,67 +9434,67 @@ function TerminalBlock({ command, cwd, home, output, exitCode, signal, running =
|
|
|
9244
9434
|
const { hidden, capped, headLines, tailLines } = headTailCap(lines.length, maxLines, expanded);
|
|
9245
9435
|
const body = !running || !empty;
|
|
9246
9436
|
return jsxs("div", {
|
|
9247
|
-
className: clsx(css$
|
|
9437
|
+
className: clsx(css$28.block, className),
|
|
9248
9438
|
"data-terminal": "",
|
|
9249
9439
|
"data-running": running ? "" : void 0,
|
|
9250
9440
|
"data-body": body ? "" : void 0,
|
|
9251
9441
|
children: [jsxs("div", {
|
|
9252
|
-
className: css$
|
|
9442
|
+
className: css$28.header,
|
|
9253
9443
|
children: [
|
|
9254
9444
|
jsxs("div", {
|
|
9255
|
-
className: css$
|
|
9445
|
+
className: css$28.prompt,
|
|
9256
9446
|
children: [runStateDot && jsx("span", {
|
|
9257
|
-
className: css$
|
|
9447
|
+
className: css$28.runStateLabel,
|
|
9258
9448
|
children: state.label
|
|
9259
9449
|
}), commandLines.map((line, index) => jsxs("div", {
|
|
9260
|
-
className: css$
|
|
9450
|
+
className: css$28.promptLine,
|
|
9261
9451
|
children: [
|
|
9262
9452
|
index === 0 && runStateDot && jsx(StateDot, {
|
|
9263
9453
|
state: state.state,
|
|
9264
|
-
className: css$
|
|
9454
|
+
className: css$28.runState
|
|
9265
9455
|
}),
|
|
9266
9456
|
jsx("span", {
|
|
9267
|
-
className: css$
|
|
9457
|
+
className: css$28.cwd,
|
|
9268
9458
|
children: index > 0 || cwd === void 0 ? "$" : promptLabel(cwd, home)
|
|
9269
9459
|
}),
|
|
9270
9460
|
jsx("span", {
|
|
9271
|
-
className: css$
|
|
9461
|
+
className: css$28.command,
|
|
9272
9462
|
children: line
|
|
9273
9463
|
})
|
|
9274
9464
|
]
|
|
9275
9465
|
}, index))]
|
|
9276
9466
|
}),
|
|
9277
9467
|
status !== void 0 && jsx(Pill, {
|
|
9278
|
-
className: css$
|
|
9468
|
+
className: css$28.status,
|
|
9279
9469
|
children: status
|
|
9280
9470
|
}),
|
|
9281
9471
|
(copyText !== void 0 || !running && !empty) && jsx("button", {
|
|
9282
9472
|
type: "button",
|
|
9283
|
-
className: css$
|
|
9473
|
+
className: css$28.copyButton,
|
|
9284
9474
|
onClick: onCopy,
|
|
9285
9475
|
children: copied ? copy.copied : copy.copy
|
|
9286
9476
|
})
|
|
9287
9477
|
]
|
|
9288
9478
|
}), body && (empty ? jsx("div", {
|
|
9289
|
-
className: css$
|
|
9479
|
+
className: css$28.empty,
|
|
9290
9480
|
children: copy.noOutput
|
|
9291
9481
|
}) : jsxs("div", {
|
|
9292
|
-
className: css$
|
|
9482
|
+
className: css$28.output,
|
|
9293
9483
|
children: [
|
|
9294
9484
|
(capped ? lines.slice(0, headLines) : lines).map((line, index) => jsx("div", {
|
|
9295
|
-
className: css$
|
|
9485
|
+
className: css$28.line,
|
|
9296
9486
|
children: renderLine$1(line)
|
|
9297
9487
|
}, index)),
|
|
9298
9488
|
hidden > 0 && jsx("button", {
|
|
9299
9489
|
type: "button",
|
|
9300
|
-
className: css$
|
|
9490
|
+
className: css$28.expand,
|
|
9301
9491
|
"aria-expanded": expanded,
|
|
9302
9492
|
"aria-label": expanded ? copy.collapseAria : copy.expandAria(hidden),
|
|
9303
9493
|
onClick: onToggle,
|
|
9304
9494
|
children: expanded ? copy.collapse : copy.expand(hidden)
|
|
9305
9495
|
}),
|
|
9306
9496
|
capped && lines.slice(lines.length - tailLines).map((line, index) => jsx("div", {
|
|
9307
|
-
className: css$
|
|
9497
|
+
className: css$28.line,
|
|
9308
9498
|
children: renderLine$1(line)
|
|
9309
9499
|
}, index))
|
|
9310
9500
|
]
|
|
@@ -9507,13 +9697,13 @@ function ReadBlock({ label, labels, lines, totalLines, lang, maxLines = 16, clas
|
|
|
9507
9697
|
const tailLines = maxLines - headLines;
|
|
9508
9698
|
const windowed = lines.length < totalLines;
|
|
9509
9699
|
const rows = (slice) => slice.map(([line, spans]) => jsxs("div", {
|
|
9510
|
-
className: css$
|
|
9700
|
+
className: css$29.line,
|
|
9511
9701
|
children: [jsx("span", {
|
|
9512
|
-
className: css$
|
|
9702
|
+
className: css$29.gutter,
|
|
9513
9703
|
"aria-hidden": true,
|
|
9514
9704
|
children: line.number
|
|
9515
9705
|
}), jsx("span", {
|
|
9516
|
-
className: css$
|
|
9706
|
+
className: css$29.content,
|
|
9517
9707
|
children: spans === void 0 ? line.text : renderSpans(spans)
|
|
9518
9708
|
})]
|
|
9519
9709
|
}, line.number));
|
|
@@ -9521,7 +9711,7 @@ function ReadBlock({ label, labels, lines, totalLines, lang, maxLines = 16, clas
|
|
|
9521
9711
|
const paired = lines.map((line, index) => [line, highlighted?.[index]]);
|
|
9522
9712
|
return jsxs("div", {
|
|
9523
9713
|
ref: rootRef,
|
|
9524
|
-
className: clsx(cardCss.card, css$
|
|
9714
|
+
className: clsx(cardCss.card, css$29.block, className),
|
|
9525
9715
|
"data-read": "",
|
|
9526
9716
|
"data-code-wrap": wrapped,
|
|
9527
9717
|
style: gutterStyle,
|
|
@@ -9543,7 +9733,7 @@ function ReadBlock({ label, labels, lines, totalLines, lang, maxLines = 16, clas
|
|
|
9543
9733
|
children: [
|
|
9544
9734
|
rows(capped ? paired.slice(0, headLines) : paired),
|
|
9545
9735
|
hidden > 0 && jsx(FoldToggle, {
|
|
9546
|
-
className: css$
|
|
9736
|
+
className: css$29.expand,
|
|
9547
9737
|
expanded,
|
|
9548
9738
|
hidden,
|
|
9549
9739
|
labels,
|
|
@@ -9565,11 +9755,11 @@ function assertNever(value) {
|
|
|
9565
9755
|
}
|
|
9566
9756
|
/** The dim class per row kind (path/gap chrome vs the diff's own +/- colors). */
|
|
9567
9757
|
const ROW_CLASS = {
|
|
9568
|
-
path: css$
|
|
9569
|
-
del: css$
|
|
9570
|
-
add: css$
|
|
9571
|
-
context: css$
|
|
9572
|
-
gap: css$
|
|
9758
|
+
path: css$30.path,
|
|
9759
|
+
del: css$30.del,
|
|
9760
|
+
add: css$30.add,
|
|
9761
|
+
context: css$30.context,
|
|
9762
|
+
gap: css$30.gap
|
|
9573
9763
|
};
|
|
9574
9764
|
/** Bound synchronous edit-graph search; one replacement consumes two edits. */
|
|
9575
9765
|
const MAX_DIFF_EDIT_LENGTH = 256;
|
|
@@ -9703,7 +9893,7 @@ function DiffBlock({ diffs, labels, maxLines = 16, className }) {
|
|
|
9703
9893
|
const head = capped ? rows.slice(0, headLines) : rows;
|
|
9704
9894
|
const tail = capped ? rows.slice(rows.length - tailLines) : [];
|
|
9705
9895
|
return jsxs("div", {
|
|
9706
|
-
className: clsx(cardCss.card, css$
|
|
9896
|
+
className: clsx(cardCss.card, css$30.block, className),
|
|
9707
9897
|
"data-diff": "",
|
|
9708
9898
|
"data-code-wrap": wrapped,
|
|
9709
9899
|
children: [jsx(CodeToolbar, {
|
|
@@ -9718,21 +9908,21 @@ function DiffBlock({ diffs, labels, maxLines = 16, className }) {
|
|
|
9718
9908
|
setWrapped((value) => !value);
|
|
9719
9909
|
}
|
|
9720
9910
|
}), jsxs("div", {
|
|
9721
|
-
className: css$
|
|
9911
|
+
className: css$30.body,
|
|
9722
9912
|
children: [
|
|
9723
9913
|
head.map((row, index) => jsx("div", {
|
|
9724
|
-
className: clsx(css$
|
|
9914
|
+
className: clsx(css$30.line, ROW_CLASS[row.kind]),
|
|
9725
9915
|
children: row.text
|
|
9726
9916
|
}, index)),
|
|
9727
9917
|
hidden > 0 && jsx(FoldToggle, {
|
|
9728
|
-
className: css$
|
|
9918
|
+
className: css$30.expand,
|
|
9729
9919
|
expanded,
|
|
9730
9920
|
hidden,
|
|
9731
9921
|
labels,
|
|
9732
9922
|
onToggle
|
|
9733
9923
|
}),
|
|
9734
9924
|
tail.map((row, index) => jsx("div", {
|
|
9735
|
-
className: clsx(css$
|
|
9925
|
+
className: clsx(css$30.line, ROW_CLASS[row.kind]),
|
|
9736
9926
|
children: row.text
|
|
9737
9927
|
}, index))
|
|
9738
9928
|
]
|
|
@@ -9862,56 +10052,56 @@ function SearchBlock(props) {
|
|
|
9862
10052
|
const tail = tailHeader === void 0 ? naturalTail : naturalTail.slice(1);
|
|
9863
10053
|
const renderRow = (row) => {
|
|
9864
10054
|
if (row.type === "path") return jsx("div", {
|
|
9865
|
-
className: css$
|
|
10055
|
+
className: css$31.line,
|
|
9866
10056
|
children: row.path
|
|
9867
10057
|
});
|
|
9868
10058
|
if (row.type === "match") return jsxs("div", {
|
|
9869
|
-
className: css$
|
|
10059
|
+
className: css$31.line,
|
|
9870
10060
|
children: [jsxs("span", {
|
|
9871
|
-
className: css$
|
|
10061
|
+
className: css$31.lineNumber,
|
|
9872
10062
|
children: [row.lineNumber, ": "]
|
|
9873
10063
|
}), row.line]
|
|
9874
10064
|
});
|
|
9875
10065
|
return jsxs("button", {
|
|
9876
10066
|
type: "button",
|
|
9877
|
-
className: css$
|
|
10067
|
+
className: css$31.fileHeader,
|
|
9878
10068
|
"aria-expanded": !row.collapsed,
|
|
9879
10069
|
onClick: () => {
|
|
9880
10070
|
toggleFile(row.index);
|
|
9881
10071
|
},
|
|
9882
10072
|
children: [jsx("span", {
|
|
9883
|
-
className: css$
|
|
10073
|
+
className: css$31.filePath,
|
|
9884
10074
|
children: row.path
|
|
9885
10075
|
}), jsx("span", {
|
|
9886
|
-
className: css$
|
|
10076
|
+
className: css$31.fileCount,
|
|
9887
10077
|
children: row.count
|
|
9888
10078
|
})]
|
|
9889
10079
|
});
|
|
9890
10080
|
};
|
|
9891
10081
|
return jsxs("div", {
|
|
9892
|
-
className: clsx(css$
|
|
10082
|
+
className: clsx(css$31.block, className),
|
|
9893
10083
|
"data-search": props.kind,
|
|
9894
10084
|
children: [jsxs("div", {
|
|
9895
|
-
className: css$
|
|
10085
|
+
className: css$31.header,
|
|
9896
10086
|
children: [jsx("span", {
|
|
9897
|
-
className: css$
|
|
10087
|
+
className: css$31.summary,
|
|
9898
10088
|
children: summaryText(props, shown, truncated, total)
|
|
9899
10089
|
}), !empty && jsx("button", {
|
|
9900
10090
|
type: "button",
|
|
9901
|
-
className: css$
|
|
10091
|
+
className: css$31.copyButton,
|
|
9902
10092
|
onClick: onCopy,
|
|
9903
10093
|
children: copied ? props.labels.copied : props.labels.copy
|
|
9904
10094
|
})]
|
|
9905
10095
|
}), empty ? jsx("div", {
|
|
9906
|
-
className: css$
|
|
10096
|
+
className: css$31.empty,
|
|
9907
10097
|
children: props.labels.noResults
|
|
9908
10098
|
}) : jsxs("div", {
|
|
9909
|
-
className: css$
|
|
10099
|
+
className: css$31.body,
|
|
9910
10100
|
children: [
|
|
9911
10101
|
head.map((row) => jsx("div", { children: renderRow(row) }, rowKey(row))),
|
|
9912
10102
|
hidden > 0 && jsx("button", {
|
|
9913
10103
|
type: "button",
|
|
9914
|
-
className: css$
|
|
10104
|
+
className: css$31.expand,
|
|
9915
10105
|
"aria-expanded": expanded,
|
|
9916
10106
|
"aria-label": expanded ? props.labels.collapseAria : props.labels.expandAria(hidden),
|
|
9917
10107
|
onClick: onToggle,
|
|
@@ -10741,7 +10931,7 @@ function CodeBlock({ code, lang, streaming, className, contentRef, lineNumbers =
|
|
|
10741
10931
|
});
|
|
10742
10932
|
}, [copied, trimmed]);
|
|
10743
10933
|
const body = streamedBody !== void 0 ? streamedBody : html === void 0 ? jsx("pre", {
|
|
10744
|
-
className: css$
|
|
10934
|
+
className: css$32.plain,
|
|
10745
10935
|
children: jsx("code", { children: sourceLines === void 0 ? trimmed : sourceLines.map((line, index) => jsxs(Fragment$1, { children: [index > 0 && "\n", jsx("span", {
|
|
10746
10936
|
className: "line",
|
|
10747
10937
|
children: line
|
|
@@ -10749,12 +10939,12 @@ function CodeBlock({ code, lang, streaming, className, contentRef, lineNumbers =
|
|
|
10749
10939
|
}) : jsx("div", { dangerouslySetInnerHTML: { __html: html } });
|
|
10750
10940
|
return jsxs("div", {
|
|
10751
10941
|
ref: rootRef,
|
|
10752
|
-
className: clsx(css$
|
|
10942
|
+
className: clsx(css$32.block, "md-code-block", lineNumbers && css$32.numbered, toolbarLabels !== void 0 && css$32.card, className),
|
|
10753
10943
|
"data-line-numbers": lineNumbers || void 0,
|
|
10754
10944
|
"data-code-wrap": toolbarLabels === void 0 ? void 0 : wrapped,
|
|
10755
10945
|
style: sourceLines === void 0 ? void 0 : { "--dsl-code-block-line-number-width": `${Math.max(2, String(sourceLines.length).length)}ch` },
|
|
10756
10946
|
children: [showHeader && jsx("div", {
|
|
10757
|
-
className: css$
|
|
10947
|
+
className: css$32.bannerWrap,
|
|
10758
10948
|
children: toolbarLabels !== void 0 ? jsx(CodeToolbar, {
|
|
10759
10949
|
lang,
|
|
10760
10950
|
labels: toolbarLabels,
|
|
@@ -10767,16 +10957,16 @@ function CodeBlock({ code, lang, streaming, className, contentRef, lineNumbers =
|
|
|
10767
10957
|
setWrapped((value) => !value);
|
|
10768
10958
|
} : void 0
|
|
10769
10959
|
}) : jsxs("div", {
|
|
10770
|
-
className: css$
|
|
10960
|
+
className: css$32.banner,
|
|
10771
10961
|
"data-code-block-banner": true,
|
|
10772
10962
|
children: [jsx("div", {
|
|
10773
|
-
className: css$
|
|
10963
|
+
className: css$32.infostring,
|
|
10774
10964
|
children: lang ?? ""
|
|
10775
10965
|
}), jsx("div", {
|
|
10776
|
-
className: css$
|
|
10966
|
+
className: css$32.action,
|
|
10777
10967
|
children: jsx("button", {
|
|
10778
10968
|
type: "button",
|
|
10779
|
-
className: css$
|
|
10969
|
+
className: css$32.copyButton,
|
|
10780
10970
|
onClick: onCopy,
|
|
10781
10971
|
children: copied ? copiedLabel : copyLabel
|
|
10782
10972
|
})
|
|
@@ -10784,7 +10974,7 @@ function CodeBlock({ code, lang, streaming, className, contentRef, lineNumbers =
|
|
|
10784
10974
|
})
|
|
10785
10975
|
}), jsx("div", {
|
|
10786
10976
|
ref: contentRef,
|
|
10787
|
-
className: css$
|
|
10977
|
+
className: css$32.content,
|
|
10788
10978
|
"data-code-block-content": true,
|
|
10789
10979
|
children: body
|
|
10790
10980
|
})]
|
|
@@ -10974,25 +11164,25 @@ function ImageLightbox({ src, alt, labels, onClose }) {
|
|
|
10974
11164
|
};
|
|
10975
11165
|
}, [onClose]);
|
|
10976
11166
|
return createPortal(jsxs("div", {
|
|
10977
|
-
className: css$
|
|
11167
|
+
className: css$33.backdrop,
|
|
10978
11168
|
role: "dialog",
|
|
10979
11169
|
"aria-modal": "true",
|
|
10980
11170
|
"aria-label": labels.dialog,
|
|
10981
11171
|
children: [
|
|
10982
11172
|
jsx("div", {
|
|
10983
|
-
className: css$
|
|
11173
|
+
className: css$33.mask,
|
|
10984
11174
|
"aria-hidden": "true",
|
|
10985
11175
|
onMouseDown: onClose
|
|
10986
11176
|
}),
|
|
10987
11177
|
jsx("img", {
|
|
10988
|
-
className: css$
|
|
11178
|
+
className: css$33.image,
|
|
10989
11179
|
src,
|
|
10990
11180
|
alt
|
|
10991
11181
|
}),
|
|
10992
11182
|
jsx("button", {
|
|
10993
11183
|
ref: closeRef,
|
|
10994
11184
|
type: "button",
|
|
10995
|
-
className: css$
|
|
11185
|
+
className: css$33.close,
|
|
10996
11186
|
"aria-label": labels.close,
|
|
10997
11187
|
onClick: onClose,
|
|
10998
11188
|
children: jsx(IconCloseOutlineRegular, { size: 16 })
|
|
@@ -11019,14 +11209,14 @@ function ImagePreview({ src, alt, loadingLabel, failedLabel }) {
|
|
|
11019
11209
|
function Preview({ src, alt, loadingLabel, failedLabel }) {
|
|
11020
11210
|
const [state, setState] = useState("loading");
|
|
11021
11211
|
return jsxs("span", {
|
|
11022
|
-
className: css$
|
|
11212
|
+
className: css$34.frame,
|
|
11023
11213
|
children: [state !== "failed" && jsx("img", {
|
|
11024
11214
|
src,
|
|
11025
11215
|
alt,
|
|
11026
11216
|
loading: "lazy",
|
|
11027
11217
|
decoding: "async",
|
|
11028
11218
|
referrerPolicy: "no-referrer",
|
|
11029
|
-
className: css$
|
|
11219
|
+
className: css$34.image,
|
|
11030
11220
|
"data-ready": state === "ready" || void 0,
|
|
11031
11221
|
onLoad: () => {
|
|
11032
11222
|
setState("ready");
|
|
@@ -11035,7 +11225,7 @@ function Preview({ src, alt, loadingLabel, failedLabel }) {
|
|
|
11035
11225
|
setState("failed");
|
|
11036
11226
|
}
|
|
11037
11227
|
}), state !== "ready" && jsxs("span", {
|
|
11038
|
-
className: css$
|
|
11228
|
+
className: css$34.status,
|
|
11039
11229
|
role: "status",
|
|
11040
11230
|
children: [state === "loading" && jsx(IconLoadingOutlineRegular, { size: 16 }), jsx("span", { children: state === "loading" ? loadingLabel : failedLabel })]
|
|
11041
11231
|
})]
|
|
@@ -11774,7 +11964,7 @@ function SafeLink({ url, label, className }) {
|
|
|
11774
11964
|
children: [jsx(LinkIconMedium, {
|
|
11775
11965
|
kind: "url",
|
|
11776
11966
|
href,
|
|
11777
|
-
className: css$
|
|
11967
|
+
className: css$35.linkIcon
|
|
11778
11968
|
}), label]
|
|
11779
11969
|
});
|
|
11780
11970
|
}
|
|
@@ -11789,20 +11979,20 @@ function SafeLink({ url, label, className }) {
|
|
|
11789
11979
|
*/
|
|
11790
11980
|
function SourceItem({ source, ordinal }) {
|
|
11791
11981
|
return jsxs("li", {
|
|
11792
|
-
className: css$
|
|
11982
|
+
className: css$35.source,
|
|
11793
11983
|
value: ordinal,
|
|
11794
11984
|
children: [
|
|
11795
11985
|
jsx(SafeLink, {
|
|
11796
11986
|
url: source.url,
|
|
11797
11987
|
label: linkLabel(source.url, source.title),
|
|
11798
|
-
className: css$
|
|
11988
|
+
className: css$35.sourceLink
|
|
11799
11989
|
}),
|
|
11800
11990
|
source.snippet !== void 0 && source.snippet !== "" && jsx("div", {
|
|
11801
|
-
className: css$
|
|
11991
|
+
className: css$35.snippet,
|
|
11802
11992
|
children: source.snippet
|
|
11803
11993
|
}),
|
|
11804
11994
|
source.publishedAt !== void 0 && source.publishedAt !== "" && jsx("div", {
|
|
11805
|
-
className: css$
|
|
11995
|
+
className: css$35.published,
|
|
11806
11996
|
children: source.publishedAt
|
|
11807
11997
|
})
|
|
11808
11998
|
]
|
|
@@ -11817,28 +12007,28 @@ function SourceItem({ source, ordinal }) {
|
|
|
11817
12007
|
function WebSearchBlock({ answer, sources, truncated, labels, className }) {
|
|
11818
12008
|
const empty = (answer === void 0 || answer === "") && sources.length === 0;
|
|
11819
12009
|
return jsxs("div", {
|
|
11820
|
-
className: clsx(css$
|
|
12010
|
+
className: clsx(css$35.block, className),
|
|
11821
12011
|
"data-web": "search",
|
|
11822
12012
|
children: [
|
|
11823
12013
|
answer !== void 0 && answer !== "" && jsx("div", {
|
|
11824
|
-
className: css$
|
|
12014
|
+
className: css$35.answer,
|
|
11825
12015
|
children: jsx(MarkdownText, {
|
|
11826
12016
|
text: answer,
|
|
11827
12017
|
labels: labels.markdown
|
|
11828
12018
|
})
|
|
11829
12019
|
}),
|
|
11830
12020
|
empty ? jsx("div", {
|
|
11831
|
-
className: css$
|
|
12021
|
+
className: css$35.empty,
|
|
11832
12022
|
children: labels.noResults
|
|
11833
12023
|
}) : jsx("ol", {
|
|
11834
|
-
className: css$
|
|
12024
|
+
className: css$35.sources,
|
|
11835
12025
|
children: sources.map((source, index) => jsx(SourceItem, {
|
|
11836
12026
|
source,
|
|
11837
12027
|
ordinal: index + 1
|
|
11838
12028
|
}, index))
|
|
11839
12029
|
}),
|
|
11840
12030
|
truncated && jsx("div", {
|
|
11841
|
-
className: css$
|
|
12031
|
+
className: css$35.truncated,
|
|
11842
12032
|
children: labels.sourcesTruncated
|
|
11843
12033
|
})
|
|
11844
12034
|
]
|
|
@@ -11851,23 +12041,23 @@ function WebSearchBlock({ answer, sources, truncated, labels, className }) {
|
|
|
11851
12041
|
*/
|
|
11852
12042
|
function WebFetchBlock({ url, statusCode, truncated, labels, className }) {
|
|
11853
12043
|
return jsxs("div", {
|
|
11854
|
-
className: clsx(css$
|
|
12044
|
+
className: clsx(css$35.block, css$35.fetch, className),
|
|
11855
12045
|
"data-web": "fetch",
|
|
11856
12046
|
children: [jsx(SafeLink, {
|
|
11857
12047
|
url,
|
|
11858
12048
|
label: url,
|
|
11859
|
-
className: css$
|
|
12049
|
+
className: css$35.fetchUrl
|
|
11860
12050
|
}), jsxs("div", {
|
|
11861
|
-
className: css$
|
|
12051
|
+
className: css$35.fetchMeta,
|
|
11862
12052
|
children: [jsxs("span", {
|
|
11863
|
-
className: css$
|
|
12053
|
+
className: css$35.status,
|
|
11864
12054
|
children: [
|
|
11865
12055
|
labels.http,
|
|
11866
12056
|
" ",
|
|
11867
12057
|
statusCode
|
|
11868
12058
|
]
|
|
11869
12059
|
}), truncated && jsx("span", {
|
|
11870
|
-
className: css$
|
|
12060
|
+
className: css$35.truncated,
|
|
11871
12061
|
children: labels.contentTruncated
|
|
11872
12062
|
})]
|
|
11873
12063
|
})]
|
|
@@ -11901,10 +12091,10 @@ function JsonBlock({ label, payload, defaultOpen = false, truncatedLabel }) {
|
|
|
11901
12091
|
truncatedLabel
|
|
11902
12092
|
]);
|
|
11903
12093
|
return jsxs("div", {
|
|
11904
|
-
className: css$
|
|
12094
|
+
className: css$36.root,
|
|
11905
12095
|
children: [jsxs("button", {
|
|
11906
12096
|
type: "button",
|
|
11907
|
-
className: css$
|
|
12097
|
+
className: css$36.toggle,
|
|
11908
12098
|
onClick: () => {
|
|
11909
12099
|
setOpen((v) => !v);
|
|
11910
12100
|
},
|
|
@@ -11914,7 +12104,7 @@ function JsonBlock({ label, payload, defaultOpen = false, truncatedLabel }) {
|
|
|
11914
12104
|
label
|
|
11915
12105
|
]
|
|
11916
12106
|
}), open && jsx("pre", {
|
|
11917
|
-
className: css$
|
|
12107
|
+
className: css$36.body,
|
|
11918
12108
|
children: body
|
|
11919
12109
|
})]
|
|
11920
12110
|
});
|
|
@@ -12255,6 +12445,6 @@ function GuideArtworkFiles({ size = 36, className }) {
|
|
|
12255
12445
|
});
|
|
12256
12446
|
}
|
|
12257
12447
|
//#endregion
|
|
12258
|
-
export { BrandWordmark, Button, CODE_HIGHLIGHT_EXTENSIONS, Checkbox, CodeBlock, ConnectionIndicator, DEFAULT_DIFF_MAX_LINES, DEFAULT_READ_MAX_LINES, DEFAULT_SEARCH_MAX_LINES, DEFAULT_TERMINAL_MAX_LINES, DiffBlock, DisclosureRow, FISH_LOGO_PATH, FISH_LOGO_VIEWBOX, FileTypeIcon, FishLogo, GuideArtworkBrowser, GuideArtworkFiles, HoverCard, ICON_MEDIUM_STROKE, ICON_REGULAR_STROKE, IconAgentPresetOutlineMedium, IconAgentPresetOutlineRegular, IconAlarmClockOutlineMedium, IconAlarmClockOutlineRegular, IconApiOutlineMedium, IconApiOutlineRegular, IconArchiveCheckOutlineMedium, IconArchiveCheckOutlineRegular, IconArchiveOffOutlineMedium, IconArchiveOffOutlineRegular, IconArchiveOutlineMedium, IconArchiveOutlineRegular, IconBranchOutlineMedium, IconBranchOutlineRegular, IconBrowseOutlineMedium, IconBrowseOutlineRegular, IconCheckCircleFillMedium, IconCheckCircleFillRegular, IconCheckCircleOutlineMedium, IconCheckCircleOutlineRegular, IconCheckOutlineMedium, IconCheckOutlineRegular, IconChecklistOutlineMedium, IconChecklistOutlineRegular, IconChevronDownOutlineMedium, IconChevronDownOutlineRegular, IconChevronLeftOutlineMedium, IconChevronLeftOutlineRegular, IconChevronRightOutlineMedium, IconChevronRightOutlineRegular, IconChevronUpOutlineMedium, IconChevronUpOutlineRegular, IconChevronsUpDownOutlineMedium, IconChevronsUpDownOutlineRegular, IconClockOutlineMedium, IconClockOutlineRegular, IconCloseCircleFillMedium, IconCloseCircleFillRegular, IconCloseFillMedium, IconCloseFillRegular, IconCloseOutlineMedium, IconCloseOutlineRegular, IconCodeOutlineMedium, IconCodeOutlineRegular, IconCompactOutlineMedium, IconCompactOutlineRegular, IconCompareSplitOutlineMedium, IconCompareSplitOutlineRegular, IconContextInjectionOutlineMedium, IconContextInjectionOutlineRegular, IconCopyOutlineMedium, IconCopyOutlineRegular, IconCordisPluginOutlineMedium, IconCordisPluginOutlineRegular, IconDarkOutlineMedium, IconDarkOutlineRegular, IconDataOutlineMedium, IconDataOutlineRegular, IconDatabaseOutlineMedium, IconDatabaseOutlineRegular, IconDeliverDocMedium, IconDeliverDocRegular, IconDislikeFillMedium, IconDislikeFillRegular, IconDislikeOutlineMedium, IconDislikeOutlineRegular, IconDownloadOutlineMedium, IconDownloadOutlineRegular, IconEditOutlineMedium, IconEditOutlineRegular, IconEllipsisOutlineMedium, IconEllipsisOutlineRegular, IconEnhanceOutlineMedium, IconEnhanceOutlineRegular, IconFlatListOutlineMedium, IconFlatListOutlineRegular, IconFolderCloseMedium, IconFolderCloseRegular, IconFolderOpenMedium, IconFolderOpenOutlineMedium, IconFolderOpenOutlineRegular, IconFolderOpenRegular, IconFollowsystemOutlineMedium, IconFollowsystemOutlineRegular, IconFullscreenOutlineMedium, IconFullscreenOutlineRegular, IconGaugeOutlineMedium, IconGaugeOutlineRegular, IconGlobeOutlineMedium, IconGlobeOutlineRegular, IconGoalOutlineMedium, IconGoalOutlineRegular, IconInfoOutlineMedium, IconInfoOutlineRegular, IconInspectOutlineMedium, IconInspectOutlineRegular, IconLightOutlineMedium, IconLightOutlineRegular, IconLikeFillMedium, IconLikeFillRegular, IconLikeOutlineMedium, IconLikeOutlineRegular, IconLinkOutlineMedium, IconLinkOutlineRegular, IconListPenOutlineMedium, IconListPenOutlineRegular, IconLoadingOutlineMedium, IconLoadingOutlineRegular, IconMicrophoneOutlineMedium, IconMicrophoneOutlineRegular, IconNewChatOutlineMedium, IconNewChatOutlineRegular, IconNowrapFillMedium, IconNowrapFillRegular, IconPanelLeftOutlineMedium, IconPanelLeftOutlineRegular, IconPaperPlaneOutlineMedium, IconPaperPlaneOutlineRegular, IconPaperclipOutlineMedium, IconPaperclipOutlineRegular, IconPauseOutlineMedium, IconPauseOutlineRegular, IconPersonalizationOutlineMedium, IconPersonalizationOutlineRegular, IconPinFillMedium, IconPinFillRegular, IconPinOutlineMedium, IconPinOutlineRegular, IconPlanOutlineMedium, IconPlanOutlineRegular, IconPlayOutlineMedium, IconPlayOutlineRegular, IconPluginPinwheelOutlineMedium, IconPluginPinwheelOutlineRegular, IconPlusOutlineMedium, IconPlusOutlineRegular, IconProjectAddOutlineMedium, IconProjectAddOutlineRegular, IconQuestionOutlineMedium, IconQuestionOutlineRegular, IconQueueOutlineMedium, IconQueueOutlineRegular, IconRefreshOutlineMedium, IconRefreshOutlineRegular, IconRightUpOutlineMedium, IconRightUpOutlineRegular, IconSearchOutlineMedium, IconSearchOutlineRegular, IconSendOutlineMedium, IconSendOutlineRegular, IconSettingsOutlineMedium, IconSettingsOutlineRegular, IconShareOutlineMedium, IconShareOutlineRegular, IconShieldOutlineMedium, IconShieldOutlineRegular, IconSkillOutlineMedium, IconSkillOutlineRegular, IconSlidersTwoOutlineMedium, IconSlidersTwoOutlineRegular, IconSparkleMedium, IconSparkleRegular, IconStopFillMedium, IconStopFillRegular, IconThinkOutlineMedium, IconThinkOutlineRegular, IconTrashOutlineMedium, IconTrashOutlineRegular, IconTreeCornerMedium, IconTreeCornerRegular, IconTriangleRightFillMedium, IconTriangleRightFillRegular, IconUnarchiveOutlineMedium, IconUnarchiveOutlineRegular, IconUserOutlineMedium, IconUserOutlineRegular, IconUsersOutlineMedium, IconUsersOutlineRegular, IconWarningOutlineMedium, IconWarningOutlineRegular, IconWarningTriangleOutlineMedium, IconWarningTriangleOutlineRegular, IconWorkspaceTreeOutlineMedium, IconWorkspaceTreeOutlineRegular, IconWrapFillMedium, IconWrapFillRegular, IconWrapLinesOutlineMedium, IconWrapLinesOutlineRegular, ImageLightbox, Input, JsonBlock, JsonTree, LinkIconMedium, LinkIconRegular, MarkdownDelegateProvider, MarkdownText, Menu, MenuItemButton, MenuSurface, Modal, PathLabel, PermissionIconFullAccessMedium, PermissionIconFullAccessRegular, PermissionIconReadOnlyMedium, PermissionIconReadOnlyRegular, PermissionIconWorkspaceWriteMedium, PermissionIconWorkspaceWriteRegular, Pill, PluginArtworkDefault, PluginArtworkLoop, PluginArtworkSearch, PluginArtworkSubagent, PluginArtworkTerminal, ReadBlock, ReferenceIconMedium, ReferenceIconRegular, RiskConfirmation, SHIELD_OUTLINE_PATH, SearchBlock, SegmentedControl, SegmentedTabs, SettingsForm, SettingsFormModel, SettingsSecretField, SettingsValueField, ShortcutKeys, StateDot, Switch, Tag, TerminalBlock, TextShimmer, Toast, Tooltip, WebBlock, classifyFileType, classifyLinkPath, closeTopModal, diffTotals, extractMarkdownPlainText, fileExtension, fileSizeText, focusWithoutRing, isBehindModal, isDarwinDesktop, languageForPath, modalSelector, observeComposition, pointerModality, projectUserText, rankByName, relativeTime, settingsNumberField, settingsTextField, useAnchoredMaxHeight, useAnchoredPosition, useCodeHighlighter, useDismissOnOutsidePointer, useModalLayer, writeClipboard };
|
|
12448
|
+
export { BrandWordmark, Button, CODE_HIGHLIGHT_EXTENSIONS, Checkbox, CodeBlock, ConnectionIndicator, DEFAULT_DIFF_MAX_LINES, DEFAULT_READ_MAX_LINES, DEFAULT_SEARCH_MAX_LINES, DEFAULT_TERMINAL_MAX_LINES, DiffBlock, DisclosureRow, FISH_LOGO_PATH, FISH_LOGO_VIEWBOX, FileTypeIcon, FishLogo, GuideArtworkBrowser, GuideArtworkFiles, HoverCard, ICON_MEDIUM_STROKE, ICON_REGULAR_STROKE, IconAgentPresetOutlineMedium, IconAgentPresetOutlineRegular, IconAlarmClockOutlineMedium, IconAlarmClockOutlineRegular, IconApiOutlineMedium, IconApiOutlineRegular, IconArchiveCheckOutlineMedium, IconArchiveCheckOutlineRegular, IconArchiveOffOutlineMedium, IconArchiveOffOutlineRegular, IconArchiveOutlineMedium, IconArchiveOutlineRegular, IconBranchOutlineMedium, IconBranchOutlineRegular, IconBrowseOutlineMedium, IconBrowseOutlineRegular, IconCheckCircleFillMedium, IconCheckCircleFillRegular, IconCheckCircleOutlineMedium, IconCheckCircleOutlineRegular, IconCheckOutlineMedium, IconCheckOutlineRegular, IconChecklistOutlineMedium, IconChecklistOutlineRegular, IconChevronDownOutlineMedium, IconChevronDownOutlineRegular, IconChevronLeftOutlineMedium, IconChevronLeftOutlineRegular, IconChevronRightOutlineMedium, IconChevronRightOutlineRegular, IconChevronUpOutlineMedium, IconChevronUpOutlineRegular, IconChevronsUpDownOutlineMedium, IconChevronsUpDownOutlineRegular, IconClockOutlineMedium, IconClockOutlineRegular, IconCloseCircleFillMedium, IconCloseCircleFillRegular, IconCloseFillMedium, IconCloseFillRegular, IconCloseOutlineMedium, IconCloseOutlineRegular, IconCodeOutlineMedium, IconCodeOutlineRegular, IconCompactOutlineMedium, IconCompactOutlineRegular, IconCompareSplitOutlineMedium, IconCompareSplitOutlineRegular, IconContextInjectionOutlineMedium, IconContextInjectionOutlineRegular, IconCopyOutlineMedium, IconCopyOutlineRegular, IconCordisPluginOutlineMedium, IconCordisPluginOutlineRegular, IconDarkOutlineMedium, IconDarkOutlineRegular, IconDataOutlineMedium, IconDataOutlineRegular, IconDatabaseOutlineMedium, IconDatabaseOutlineRegular, IconDeliverDocMedium, IconDeliverDocRegular, IconDislikeFillMedium, IconDislikeFillRegular, IconDislikeOutlineMedium, IconDislikeOutlineRegular, IconDownloadOutlineMedium, IconDownloadOutlineRegular, IconEditOutlineMedium, IconEditOutlineRegular, IconEllipsisOutlineMedium, IconEllipsisOutlineRegular, IconEnhanceOutlineMedium, IconEnhanceOutlineRegular, IconFlatListOutlineMedium, IconFlatListOutlineRegular, IconFolderCloseMedium, IconFolderCloseRegular, IconFolderOpenMedium, IconFolderOpenOutlineMedium, IconFolderOpenOutlineRegular, IconFolderOpenRegular, IconFollowsystemOutlineMedium, IconFollowsystemOutlineRegular, IconFullscreenOutlineMedium, IconFullscreenOutlineRegular, IconGaugeOutlineMedium, IconGaugeOutlineRegular, IconGlobeOutlineMedium, IconGlobeOutlineRegular, IconGoalOutlineMedium, IconGoalOutlineRegular, IconInfoOutlineMedium, IconInfoOutlineRegular, IconInspectOutlineMedium, IconInspectOutlineRegular, IconLightOutlineMedium, IconLightOutlineRegular, IconLikeFillMedium, IconLikeFillRegular, IconLikeOutlineMedium, IconLikeOutlineRegular, IconLinkOutlineMedium, IconLinkOutlineRegular, IconListPenOutlineMedium, IconListPenOutlineRegular, IconLoadingOutlineMedium, IconLoadingOutlineRegular, IconMicrophoneOutlineMedium, IconMicrophoneOutlineRegular, IconNewChatOutlineMedium, IconNewChatOutlineRegular, IconNowrapFillMedium, IconNowrapFillRegular, IconPanelLeftOutlineMedium, IconPanelLeftOutlineRegular, IconPaperPlaneOutlineMedium, IconPaperPlaneOutlineRegular, IconPaperclipOutlineMedium, IconPaperclipOutlineRegular, IconPauseOutlineMedium, IconPauseOutlineRegular, IconPersonalizationOutlineMedium, IconPersonalizationOutlineRegular, IconPinFillMedium, IconPinFillRegular, IconPinOutlineMedium, IconPinOutlineRegular, IconPlanOutlineMedium, IconPlanOutlineRegular, IconPlayOutlineMedium, IconPlayOutlineRegular, IconPluginPinwheelOutlineMedium, IconPluginPinwheelOutlineRegular, IconPlusOutlineMedium, IconPlusOutlineRegular, IconProjectAddOutlineMedium, IconProjectAddOutlineRegular, IconQuestionOutlineMedium, IconQuestionOutlineRegular, IconQueueOutlineMedium, IconQueueOutlineRegular, IconRefreshOutlineMedium, IconRefreshOutlineRegular, IconRightUpOutlineMedium, IconRightUpOutlineRegular, IconSearchOutlineMedium, IconSearchOutlineRegular, IconSendOutlineMedium, IconSendOutlineRegular, IconSettingsOutlineMedium, IconSettingsOutlineRegular, IconShareOutlineMedium, IconShareOutlineRegular, IconShieldOutlineMedium, IconShieldOutlineRegular, IconSkillOutlineMedium, IconSkillOutlineRegular, IconSlidersTwoOutlineMedium, IconSlidersTwoOutlineRegular, IconSparkleMedium, IconSparkleRegular, IconStopFillMedium, IconStopFillRegular, IconThinkOutlineMedium, IconThinkOutlineRegular, IconTrashOutlineMedium, IconTrashOutlineRegular, IconTreeCornerMedium, IconTreeCornerRegular, IconTriangleRightFillMedium, IconTriangleRightFillRegular, IconUnarchiveOutlineMedium, IconUnarchiveOutlineRegular, IconUserOutlineMedium, IconUserOutlineRegular, IconUsersOutlineMedium, IconUsersOutlineRegular, IconWarningOutlineMedium, IconWarningOutlineRegular, IconWarningTriangleOutlineMedium, IconWarningTriangleOutlineRegular, IconWorkspaceTreeOutlineMedium, IconWorkspaceTreeOutlineRegular, IconWrapFillMedium, IconWrapFillRegular, IconWrapLinesOutlineMedium, IconWrapLinesOutlineRegular, ImageLightbox, InlineEditor, Input, JsonBlock, JsonTree, LinkIconMedium, LinkIconRegular, MarkdownDelegateProvider, MarkdownText, Menu, MenuGroup, MenuItemButton, MenuSurface, Modal, PathLabel, PermissionIconFullAccessMedium, PermissionIconFullAccessRegular, PermissionIconReadOnlyMedium, PermissionIconReadOnlyRegular, PermissionIconWorkspaceWriteMedium, PermissionIconWorkspaceWriteRegular, Pill, PluginArtworkDefault, PluginArtworkLoop, PluginArtworkSearch, PluginArtworkSubagent, PluginArtworkTerminal, ReadBlock, ReferenceIconMedium, ReferenceIconRegular, RiskConfirmation, SHIELD_OUTLINE_PATH, SearchBlock, SegmentedControl, SegmentedTabs, SettingsForm, SettingsFormModel, SettingsSecretField, SettingsValueField, ShortcutKeys, StateDot, Switch, Tag, TerminalBlock, TextShimmer, Toast, Tooltip, WebBlock, classifyFileType, classifyLinkPath, closeTopModal, diffTotals, extractMarkdownPlainText, fileExtension, fileSizeText, focusWithoutRing, isBehindModal, isDarwinDesktop, languageForPath, modalSelector, observeComposition, observeStickyMenuGroups, pointerModality, projectUserText, rankByName, relativeTime, settingsNumberField, settingsTextField, useAnchoredMaxHeight, useAnchoredPosition, useCodeHighlighter, useDismissOnOutsidePointer, useModalLayer, writeClipboard };
|
|
12259
12449
|
|
|
12260
12450
|
//# sourceMappingURL=index.js.map
|