@deepseek-ai/dsh-client-ui-primitives 0.1.7-rc.2 → 0.2.0-rc.2
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/Menu.module.css +2 -2
- package/lib/MenuGroup.module.css +37 -0
- package/lib/Modal.module.css +5 -4
- package/lib/Switch.module.css +4 -0
- package/lib/TextShimmer.module.css +82 -21
- package/lib/Tooltip.module.css +1 -0
- package/lib/index.js +483 -283
- package/lib/types/DisclosureRow.d.ts +7 -3
- package/lib/types/Input.d.ts +4 -3
- package/lib/types/MenuGroup.d.ts +22 -0
- package/lib/types/TextShimmer.d.ts +14 -5
- package/lib/types/Tooltip.d.ts +10 -3
- package/lib/types/index.d.ts +2 -0
- package/lib/types/overlay-top-margin.d.ts +2 -8
- package/lib/types/useAnchoredMaxHeight.d.ts +2 -2
- package/lib/types/useAnchoredPosition.d.ts +1 -1
- package/package.json +4 -4
package/lib/index.js
CHANGED
|
@@ -18,18 +18,19 @@ import { createPortal } from "react-dom";
|
|
|
18
18
|
import css$12 from "./ShortcutKeys.module.css";
|
|
19
19
|
import css$13 from "./MenuSurface.module.css";
|
|
20
20
|
import css$14 from "./Menu.module.css";
|
|
21
|
-
import css$15 from "./
|
|
22
|
-
import css$16 from "./
|
|
23
|
-
import css$17 from "./
|
|
24
|
-
import css$18 from "./
|
|
25
|
-
import css$19 from "./
|
|
26
|
-
import css$20 from "./
|
|
21
|
+
import css$15 from "./MenuGroup.module.css";
|
|
22
|
+
import css$16 from "./Tooltip.module.css";
|
|
23
|
+
import css$17 from "./HoverCard.module.css";
|
|
24
|
+
import css$18 from "./Modal.module.css";
|
|
25
|
+
import css$19 from "./RiskConfirmation.module.css";
|
|
26
|
+
import css$20 from "./ConnectionIndicator.module.css";
|
|
27
|
+
import css$21 from "./FileTypeIcon.module.css";
|
|
27
28
|
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$
|
|
29
|
+
import css$22 from "./user-text.module.css";
|
|
29
30
|
import markdownCss from "./markdown/MarkdownText.module.css";
|
|
30
|
-
import css$
|
|
31
|
-
import css$
|
|
32
|
-
import css$
|
|
31
|
+
import css$23 from "./Toast.module.css";
|
|
32
|
+
import css$24 from "./settings-form/SettingsForm.module.css";
|
|
33
|
+
import css$25 from "./settings-form/fields.module.css";
|
|
33
34
|
import { createSnapshotStore } from "@deepseek-ai/dsh-client-store";
|
|
34
35
|
import { createCssVariablesTheme, createHighlighterCoreSync } from "shiki/core";
|
|
35
36
|
import { createJavaScriptRegexEngine, defaultJavaScriptRegexConstructor } from "shiki/engine/javascript";
|
|
@@ -37,14 +38,14 @@ import langTs from "@shikijs/langs/typescript";
|
|
|
37
38
|
import langBash from "@shikijs/langs/shellscript";
|
|
38
39
|
import langJson from "@shikijs/langs/json";
|
|
39
40
|
import { CODE_HIGHLIGHT_EXTENSIONS, languageForPath } from "@deepseek-ai/dsh-util-code-language";
|
|
40
|
-
import css$
|
|
41
|
+
import css$26 from "./JsonTree.module.css";
|
|
41
42
|
import Anser from "anser";
|
|
42
|
-
import css$
|
|
43
|
+
import css$27 from "./TerminalBlock.module.css";
|
|
43
44
|
import cardCss from "./CodeCard.module.css";
|
|
44
|
-
import css$
|
|
45
|
+
import css$28 from "./ReadBlock.module.css";
|
|
45
46
|
import { structuredPatch } from "diff";
|
|
46
|
-
import css$
|
|
47
|
-
import css$
|
|
47
|
+
import css$29 from "./DiffBlock.module.css";
|
|
48
|
+
import css$30 from "./SearchBlock.module.css";
|
|
48
49
|
import { fromMarkdown } from "mdast-util-from-markdown";
|
|
49
50
|
import { gfmFromMarkdown } from "mdast-util-gfm";
|
|
50
51
|
import { mathFromMarkdown } from "mdast-util-math";
|
|
@@ -56,13 +57,13 @@ import { classifyCharacter } from "micromark-util-classify-character";
|
|
|
56
57
|
import { codes, constants, types } from "micromark-util-symbol";
|
|
57
58
|
import { factorySpace } from "micromark-factory-space";
|
|
58
59
|
import { normalizeUri } from "micromark-util-sanitize-uri";
|
|
59
|
-
import css$
|
|
60
|
+
import css$31 from "./markdown/CodeBlock.module.css";
|
|
60
61
|
import katex from "katex";
|
|
61
|
-
import css$
|
|
62
|
-
import css$
|
|
62
|
+
import css$32 from "./ImageLightbox.module.css";
|
|
63
|
+
import css$33 from "./ImagePreview.module.css";
|
|
63
64
|
import "katex/dist/katex.min.css";
|
|
64
|
-
import css$
|
|
65
|
-
import css$
|
|
65
|
+
import css$34 from "./WebBlock.module.css";
|
|
66
|
+
import css$35 from "./markdown/JsonBlock.module.css";
|
|
66
67
|
//#region lib/types/icons/shared-artwork.js
|
|
67
68
|
/**
|
|
68
69
|
* Render new-conversation geometry — the bubble around a plus — for product icons.
|
|
@@ -938,15 +939,15 @@ const IconThinkOutlineArtwork = ({ size = 16, className, strokeWidth }) => jsxs(
|
|
|
938
939
|
strokeWidth,
|
|
939
940
|
children: [
|
|
940
941
|
jsx("path", {
|
|
941
|
-
d: "M10.
|
|
942
|
+
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
943
|
stroke: "currentColor"
|
|
943
944
|
}),
|
|
944
945
|
jsx("path", {
|
|
945
|
-
d: "M10.
|
|
946
|
+
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
947
|
stroke: "currentColor"
|
|
947
948
|
}),
|
|
948
949
|
jsx("path", {
|
|
949
|
-
d: "M8.
|
|
950
|
+
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
951
|
fill: "currentColor"
|
|
951
952
|
})
|
|
952
953
|
]
|
|
@@ -3094,20 +3095,55 @@ function StateDot({ state, size, className, appearance = "dot" }) {
|
|
|
3094
3095
|
}
|
|
3095
3096
|
//#endregion
|
|
3096
3097
|
//#region lib/types/TextShimmer.js
|
|
3097
|
-
/** Text
|
|
3098
|
+
/** Text activity animation shared by a row and its nested text fragments. */
|
|
3099
|
+
const DecorativeCopy = createContext(void 0);
|
|
3100
|
+
function TextContent({ children, className }) {
|
|
3101
|
+
const generated = useContext(DecorativeCopy) === true && typeof children === "string";
|
|
3102
|
+
return jsx("span", {
|
|
3103
|
+
className: clsx(css$1.text, className),
|
|
3104
|
+
"data-shimmer-text": generated ? children : void 0,
|
|
3105
|
+
children: generated ? null : children
|
|
3106
|
+
});
|
|
3107
|
+
}
|
|
3098
3108
|
/**
|
|
3099
|
-
* Render text with
|
|
3109
|
+
* Render text with one shared highlight while retaining selectable, accessible content.
|
|
3110
|
+
* Nested instances inherit the outer animation. Keep icons outside; mark decorative
|
|
3111
|
+
* separators with data-shimmer-decoration so their background follows the highlight.
|
|
3112
|
+
* Active children also render in an inert, clipped decoration; supply only presentation.
|
|
3100
3113
|
* @param props - localized text, running state, and owner styling.
|
|
3101
|
-
* @returns
|
|
3114
|
+
* @returns retained text and its optional decorative highlight.
|
|
3102
3115
|
*/
|
|
3103
|
-
const TextShimmer = memo(function TextShimmer({ children, active, className }) {
|
|
3104
|
-
|
|
3105
|
-
|
|
3106
|
-
className: clsx(css$1.root, className),
|
|
3107
|
-
style,
|
|
3108
|
-
"data-text-shimmer": active || void 0,
|
|
3116
|
+
const TextShimmer = memo(function TextShimmer({ children, active = false, className, contentClassName }) {
|
|
3117
|
+
if (useContext(DecorativeCopy) !== void 0) return jsx(TextContent, {
|
|
3118
|
+
className,
|
|
3109
3119
|
children
|
|
3110
3120
|
});
|
|
3121
|
+
const content = typeof children === "string" ? jsx(TextContent, { children }) : children;
|
|
3122
|
+
return jsxs("span", {
|
|
3123
|
+
className: clsx(css$1.root, className),
|
|
3124
|
+
"data-shimmer": active || void 0,
|
|
3125
|
+
children: [jsx(DecorativeCopy.Provider, {
|
|
3126
|
+
value: false,
|
|
3127
|
+
children: jsx("span", {
|
|
3128
|
+
className: clsx(css$1.content, contentClassName),
|
|
3129
|
+
children: content
|
|
3130
|
+
})
|
|
3131
|
+
}), active && jsx("span", {
|
|
3132
|
+
className: css$1.decoration,
|
|
3133
|
+
"aria-hidden": "true",
|
|
3134
|
+
inert: "",
|
|
3135
|
+
children: jsx("span", {
|
|
3136
|
+
className: css$1.sweep,
|
|
3137
|
+
children: jsx(DecorativeCopy.Provider, {
|
|
3138
|
+
value: true,
|
|
3139
|
+
children: jsx("span", {
|
|
3140
|
+
className: clsx(css$1.content, css$1.highlight, contentClassName),
|
|
3141
|
+
children: content
|
|
3142
|
+
})
|
|
3143
|
+
})
|
|
3144
|
+
})
|
|
3145
|
+
})]
|
|
3146
|
+
});
|
|
3111
3147
|
});
|
|
3112
3148
|
//#endregion
|
|
3113
3149
|
//#region lib/types/DisclosureRow.js
|
|
@@ -3117,7 +3153,7 @@ const TextShimmer = memo(function TextShimmer({ children, active, className }) {
|
|
|
3117
3153
|
* @param props - Visual content, controlled state, and interaction policy.
|
|
3118
3154
|
* @returns the disclosure row.
|
|
3119
3155
|
*/
|
|
3120
|
-
const DisclosureRow = memo(function DisclosureRow({ icon, title, open, expandable, onToggle, running = false, expandOnRowClick = false, previewChevron = expandable, keepContentWhenOpen = false, collapsedContent, children, className, rowClassName, leadingClassName, chevronClassName, titleClassName }) {
|
|
3156
|
+
const DisclosureRow = memo(function DisclosureRow({ icon, title, open, expandable, onToggle, running = false, expandOnRowClick = false, previewChevron = expandable, keepContentWhenOpen = false, collapsedContent, children, className, rowClassName, contentClassName, contentLayoutClassName, leadingClassName, chevronClassName, titleClassName }) {
|
|
3121
3157
|
const rowExpands = expandable && expandOnRowClick;
|
|
3122
3158
|
const toggleFromLeading = (event) => {
|
|
3123
3159
|
event.stopPropagation();
|
|
@@ -3145,24 +3181,25 @@ const DisclosureRow = memo(function DisclosureRow({ icon, title, open, expandabl
|
|
|
3145
3181
|
"aria-expanded": rowExpands ? open : void 0,
|
|
3146
3182
|
onClick: rowExpands ? onToggle : void 0,
|
|
3147
3183
|
onKeyDown: rowExpands ? toggleFromKeyboard : void 0,
|
|
3148
|
-
children: [
|
|
3149
|
-
|
|
3150
|
-
|
|
3151
|
-
|
|
3152
|
-
|
|
3153
|
-
|
|
3154
|
-
|
|
3155
|
-
|
|
3156
|
-
|
|
3157
|
-
|
|
3158
|
-
|
|
3159
|
-
|
|
3184
|
+
children: [expandable && !rowExpands ? jsx("button", {
|
|
3185
|
+
type: "button",
|
|
3186
|
+
className: clsx(css$2.leading, leadingClassName),
|
|
3187
|
+
"aria-label": title,
|
|
3188
|
+
"aria-expanded": open,
|
|
3189
|
+
onClick: toggleFromLeading,
|
|
3190
|
+
children: leading
|
|
3191
|
+
}) : jsx("span", {
|
|
3192
|
+
className: clsx(css$2.leading, leadingClassName),
|
|
3193
|
+
children: leading
|
|
3194
|
+
}), jsxs(TextShimmer, {
|
|
3195
|
+
active: running,
|
|
3196
|
+
className: contentClassName,
|
|
3197
|
+
contentClassName: contentLayoutClassName,
|
|
3198
|
+
children: [jsx(TextShimmer, {
|
|
3160
3199
|
className: clsx(css$2.title, titleClassName),
|
|
3161
|
-
active: running,
|
|
3162
3200
|
children: title
|
|
3163
|
-
}),
|
|
3164
|
-
|
|
3165
|
-
]
|
|
3201
|
+
}), (keepContentWhenOpen || !open) && collapsedContent]
|
|
3202
|
+
})]
|
|
3166
3203
|
}), open && children]
|
|
3167
3204
|
});
|
|
3168
3205
|
});
|
|
@@ -3486,37 +3523,35 @@ function Checkbox({ checked, onChange, label, disabled = false, title, className
|
|
|
3486
3523
|
/**
|
|
3487
3524
|
* Render a text input with an optional leading icon.
|
|
3488
3525
|
* @param props.icon - optional 16px leading icon node.
|
|
3526
|
+
* @param ref - the native input, cleared when it unmounts.
|
|
3489
3527
|
* @returns wrapper span containing the native input; input attributes pass through.
|
|
3490
3528
|
*/
|
|
3491
|
-
function Input({ icon, className, ...rest }) {
|
|
3529
|
+
const Input = forwardRef(function Input({ icon, className, ...rest }, ref) {
|
|
3492
3530
|
return jsxs("span", {
|
|
3493
3531
|
className: clsx(css$11.wrap, className),
|
|
3494
3532
|
children: [icon != null && jsx("span", {
|
|
3495
3533
|
className: css$11.icon,
|
|
3496
3534
|
children: icon
|
|
3497
3535
|
}), jsx("input", {
|
|
3536
|
+
ref,
|
|
3498
3537
|
className: css$11.input,
|
|
3499
3538
|
...rest
|
|
3500
3539
|
})]
|
|
3501
3540
|
});
|
|
3502
|
-
}
|
|
3541
|
+
});
|
|
3503
3542
|
//#endregion
|
|
3504
3543
|
//#region lib/types/overlay-top-margin.js
|
|
3505
|
-
/**
|
|
3506
|
-
* Overlay clearance from the window's top strip. On macOS desktop the frame
|
|
3507
|
-
* publishes `--dsh-frame-top-clearance` on the root element — the constant
|
|
3508
|
-
* step below the traffic-light strip, where clicks drag the window instead of
|
|
3509
|
-
* the overlay. JS-clamped overlays keep at least that much air above them.
|
|
3510
|
-
* Elsewhere the property is absent and the caller's own margin applies.
|
|
3511
|
-
*/
|
|
3544
|
+
/** Shared viewport inset for overlays, derived from the desktop frame's reserved top strip. */
|
|
3512
3545
|
/**
|
|
3513
3546
|
* Resolve the top margin an overlay keeps from the viewport edge.
|
|
3514
3547
|
* @param min - the overlay's own viewport margin in px, used as the floor.
|
|
3515
|
-
* @returns the larger of `min` and the frame
|
|
3548
|
+
* @returns the larger of `min` and the frame clearance plus 20px; fullscreen keeps only the 20px gap.
|
|
3516
3549
|
*/
|
|
3517
3550
|
function overlayTopMargin(min) {
|
|
3518
|
-
const
|
|
3519
|
-
|
|
3551
|
+
const root = document.documentElement;
|
|
3552
|
+
const clearance = Number.parseFloat(getComputedStyle(root).getPropertyValue("--dsh-frame-top-clearance"));
|
|
3553
|
+
if (Number.isNaN(clearance)) return min;
|
|
3554
|
+
return Math.max(min, (root.hasAttribute("data-fullscreen") ? 0 : clearance) + 20);
|
|
3520
3555
|
}
|
|
3521
3556
|
/**
|
|
3522
3557
|
* Delay a pointer-dismissed popup's close so the pointer can cross the gap
|
|
@@ -4238,6 +4273,125 @@ function Menu({ open, anchor, items = [], children, selectedId, selectedIds, onS
|
|
|
4238
4273
|
});
|
|
4239
4274
|
}
|
|
4240
4275
|
//#endregion
|
|
4276
|
+
//#region lib/types/MenuGroup.js
|
|
4277
|
+
/** Accessible menu groups with shared sticky-heading presentation and viewport observation. */
|
|
4278
|
+
/**
|
|
4279
|
+
* Render a named group with an instance-owned heading id and an inaccessible position sentinel.
|
|
4280
|
+
* @param props - Caller-localized label and optional menu rows.
|
|
4281
|
+
* @returns A section named by its direct heading, followed by the supplied children.
|
|
4282
|
+
*/
|
|
4283
|
+
function MenuGroup({ label, children }) {
|
|
4284
|
+
const headingId = useId();
|
|
4285
|
+
return jsxs("section", {
|
|
4286
|
+
role: "group",
|
|
4287
|
+
"aria-labelledby": headingId,
|
|
4288
|
+
"data-menu-group": "",
|
|
4289
|
+
className: css$15.group,
|
|
4290
|
+
children: [
|
|
4291
|
+
jsx("span", {
|
|
4292
|
+
"aria-hidden": "true",
|
|
4293
|
+
"data-menu-group-start": "",
|
|
4294
|
+
className: css$15.start
|
|
4295
|
+
}),
|
|
4296
|
+
jsx("div", {
|
|
4297
|
+
id: headingId,
|
|
4298
|
+
"data-menu-group-heading": "",
|
|
4299
|
+
className: css$15.heading,
|
|
4300
|
+
children: label
|
|
4301
|
+
}),
|
|
4302
|
+
children
|
|
4303
|
+
]
|
|
4304
|
+
});
|
|
4305
|
+
}
|
|
4306
|
+
/**
|
|
4307
|
+
* Update heading backgrounds asynchronously from native intersection and viewport-size observations.
|
|
4308
|
+
* Headings remain transparent until observations identify a section crossing the viewport top.
|
|
4309
|
+
* Without IntersectionObserver or ResizeObserver, CSS sticky headings remain transparent.
|
|
4310
|
+
* Group membership is captured at setup; dispose before observing changed groups or the same viewport again.
|
|
4311
|
+
* @param viewport - Unpadded, borderless scroll container with direct MenuGroup children.
|
|
4312
|
+
* @returns Cleanup owning both intersection observers and the viewport resize observer; disconnects
|
|
4313
|
+
* them, ignores queued callbacks, and clears managed data-stuck attributes. No valid groups acquires nothing.
|
|
4314
|
+
*/
|
|
4315
|
+
function observeStickyMenuGroups(viewport) {
|
|
4316
|
+
const groups = [...viewport.querySelectorAll(":scope > [data-menu-group]")].flatMap((section) => {
|
|
4317
|
+
const heading = section.querySelector(":scope > [data-menu-group-heading]");
|
|
4318
|
+
const start = section.querySelector(":scope > [data-menu-group-start]");
|
|
4319
|
+
return heading === null || start === null ? [] : [{
|
|
4320
|
+
section,
|
|
4321
|
+
heading,
|
|
4322
|
+
start,
|
|
4323
|
+
atTop: false,
|
|
4324
|
+
above: false,
|
|
4325
|
+
topTime: -Infinity,
|
|
4326
|
+
aboveTime: -Infinity
|
|
4327
|
+
}];
|
|
4328
|
+
});
|
|
4329
|
+
if (groups.length === 0 || typeof IntersectionObserver === "undefined" || typeof ResizeObserver === "undefined") return () => {};
|
|
4330
|
+
const sections = new Map(groups.map((group) => [group.section, group]));
|
|
4331
|
+
const starts = new Map(groups.map((group) => [group.start, group]));
|
|
4332
|
+
let disposed = false;
|
|
4333
|
+
let stripObserver;
|
|
4334
|
+
let viewportHeight;
|
|
4335
|
+
const render = (group) => {
|
|
4336
|
+
const stuck = group.atTop && group.above;
|
|
4337
|
+
if (group.heading.hasAttribute("data-stuck") !== stuck) group.heading.toggleAttribute("data-stuck", stuck);
|
|
4338
|
+
};
|
|
4339
|
+
const startObserver = new IntersectionObserver((entries) => {
|
|
4340
|
+
if (disposed) return;
|
|
4341
|
+
for (const entry of entries) {
|
|
4342
|
+
const group = starts.get(entry.target);
|
|
4343
|
+
if (!group || entry.rootBounds === null || entry.time < group.aboveTime) continue;
|
|
4344
|
+
group.above = entry.boundingClientRect.top < entry.rootBounds.top;
|
|
4345
|
+
group.aboveTime = entry.time;
|
|
4346
|
+
render(group);
|
|
4347
|
+
}
|
|
4348
|
+
}, {
|
|
4349
|
+
root: viewport,
|
|
4350
|
+
threshold: [0, 1]
|
|
4351
|
+
});
|
|
4352
|
+
for (const { start } of groups) startObserver.observe(start);
|
|
4353
|
+
const sizeObserver = new ResizeObserver((entries) => {
|
|
4354
|
+
if (disposed) return;
|
|
4355
|
+
for (const entry of entries) {
|
|
4356
|
+
if (entry.target !== viewport || entry.contentRect.height === viewportHeight) continue;
|
|
4357
|
+
viewportHeight = entry.contentRect.height;
|
|
4358
|
+
stripObserver?.disconnect();
|
|
4359
|
+
const observer = new IntersectionObserver((intersections) => {
|
|
4360
|
+
if (disposed || stripObserver !== observer) return;
|
|
4361
|
+
for (const intersection of intersections) {
|
|
4362
|
+
const group = sections.get(intersection.target);
|
|
4363
|
+
if (!group || intersection.rootBounds === null) continue;
|
|
4364
|
+
const top = intersection.rootBounds.top;
|
|
4365
|
+
if (intersection.time >= group.topTime) {
|
|
4366
|
+
group.atTop = intersection.isIntersecting && intersection.boundingClientRect.bottom > top;
|
|
4367
|
+
group.topTime = intersection.time;
|
|
4368
|
+
}
|
|
4369
|
+
if (intersection.time >= group.aboveTime) {
|
|
4370
|
+
group.above = intersection.boundingClientRect.top < top;
|
|
4371
|
+
group.aboveTime = intersection.time;
|
|
4372
|
+
}
|
|
4373
|
+
render(group);
|
|
4374
|
+
}
|
|
4375
|
+
}, {
|
|
4376
|
+
root: viewport,
|
|
4377
|
+
rootMargin: `0px 0px ${Math.min(1, viewportHeight) - viewportHeight}px 0px`,
|
|
4378
|
+
threshold: 0
|
|
4379
|
+
});
|
|
4380
|
+
stripObserver = observer;
|
|
4381
|
+
for (const { section } of groups) observer.observe(section);
|
|
4382
|
+
}
|
|
4383
|
+
});
|
|
4384
|
+
sizeObserver.observe(viewport);
|
|
4385
|
+
return () => {
|
|
4386
|
+
if (disposed) return;
|
|
4387
|
+
disposed = true;
|
|
4388
|
+
startObserver.disconnect();
|
|
4389
|
+
stripObserver?.disconnect();
|
|
4390
|
+
sizeObserver.disconnect();
|
|
4391
|
+
for (const { heading } of groups) if (heading.hasAttribute("data-stuck")) heading.removeAttribute("data-stuck");
|
|
4392
|
+
};
|
|
4393
|
+
}
|
|
4394
|
+
//#endregion
|
|
4241
4395
|
//#region lib/types/useAnchoredMaxHeight.js
|
|
4242
4396
|
/**
|
|
4243
4397
|
* Viewport-fit hook for bottom-anchored overlays (slash menu, popupSelect):
|
|
@@ -4247,7 +4401,7 @@ function Menu({ open, anchor, items = [], children, selectedId, selectedIds, onS
|
|
|
4247
4401
|
*/
|
|
4248
4402
|
/**
|
|
4249
4403
|
* Safe distance kept between the overlay and the viewport top edge (mirrors
|
|
4250
|
-
* the Menu portal margin); the frame's
|
|
4404
|
+
* the Menu portal margin); the frame's overlay inset widens it.
|
|
4251
4405
|
*/
|
|
4252
4406
|
const MARGIN = 12;
|
|
4253
4407
|
/**
|
|
@@ -4256,8 +4410,8 @@ const MARGIN = 12;
|
|
|
4256
4410
|
* @param cap - design max-height in px (the clamp never exceeds it).
|
|
4257
4411
|
* @param signal - re-measure trigger: pass the overlay's render state so anchor
|
|
4258
4412
|
* moves (composer growth) re-fit; resize/scroll re-fit while mounted.
|
|
4259
|
-
* @param margin - viewport top margin floor in px; the frame's
|
|
4260
|
-
*
|
|
4413
|
+
* @param margin - viewport top margin floor in px; the frame's overlay
|
|
4414
|
+
* inset widens it. Callers under fixed chrome (the conversation header)
|
|
4261
4415
|
* raise it past their chrome's height.
|
|
4262
4416
|
* @returns the max-height to apply inline, in px.
|
|
4263
4417
|
*/
|
|
@@ -4322,7 +4476,7 @@ function useAnchoredPosition(options) {
|
|
|
4322
4476
|
let left = align === "end" ? rect.right - width : rect.left;
|
|
4323
4477
|
let top = side === "top" ? rect.top - gap - height : rect.bottom + gap;
|
|
4324
4478
|
if (width > 0) left = Math.min(Math.max(left, margin), window.innerWidth - width - margin);
|
|
4325
|
-
if (height > 0) top = Math.min(Math.max(top, margin), window.innerHeight - height - margin);
|
|
4479
|
+
if (height > 0) top = Math.min(Math.max(top, overlayTopMargin(margin)), window.innerHeight - height - margin);
|
|
4326
4480
|
/* v8 ignore stop */
|
|
4327
4481
|
setPosition({
|
|
4328
4482
|
left,
|
|
@@ -4500,20 +4654,26 @@ const TooltipSuppression = createContext(null);
|
|
|
4500
4654
|
* bubble would overlap); default 'center'. Ignored for side 'right'.
|
|
4501
4655
|
* @param props.portal - render the bubble under document.body, so an ancestor's clipping or its
|
|
4502
4656
|
* stacking context (which confines the bubble's z-index to that context) cannot hide it.
|
|
4503
|
-
* @param props.delayMs - hover delay in milliseconds
|
|
4657
|
+
* @param props.delayMs - hover delay in milliseconds (default 0).
|
|
4658
|
+
* @param props.focusDelayMs - keyboard focus delay in milliseconds (default 0); blur, click,
|
|
4659
|
+
* mouse leave, disabling, and unmount cancel a pending show.
|
|
4504
4660
|
* @param props.gap - anchor-to-bubble distance in pixels for 'bottom'/'top' bubbles (default 8);
|
|
4505
4661
|
* ignored for side 'right'.
|
|
4506
4662
|
* @param props.disabled - suppress the bubble while true; the anchor renders identically so
|
|
4507
4663
|
* toggling never remounts it (which would cut its CSS transitions).
|
|
4508
4664
|
* @param props.maxWidth - bubble width cap in pixels, for labels long enough that the default
|
|
4509
4665
|
* half-viewport cap would render a slab wider than the surface the anchor sits on.
|
|
4666
|
+
* @param props.openOnClick - clicking also pins the bubble for reading; another click, Escape,
|
|
4667
|
+
* Tab, or an outside pointerdown dismisses it. Defaults to false for ordinary action tooltips.
|
|
4510
4668
|
* @param props.children - a single anchor element; its own ref (callback or object) is forwarded alongside the tooltip's.
|
|
4511
4669
|
* @returns the cloned anchor plus a fixed-position bubble, optionally portaled to the body.
|
|
4512
4670
|
* The bubble stays hidden until ResizeObserver supplies its size for viewport fitting; clicking the
|
|
4513
|
-
* anchor dismisses the bubble
|
|
4671
|
+
* anchor dismisses the bubble unless openOnClick is enabled, and focus arriving after a pointer
|
|
4514
4672
|
* interaction (a closing menu refocusing its trigger) never raises it.
|
|
4515
4673
|
*/
|
|
4516
|
-
function Tooltip({ label, shortcutKeys, side = "right", align = "center", delayMs = 0, gap = 8, disabled = false, portal = false, maxWidth, children }) {
|
|
4674
|
+
function Tooltip({ label, shortcutKeys, side = "right", align = "center", delayMs = 0, focusDelayMs = 0, gap = 8, disabled = false, portal = false, maxWidth, openOnClick = false, children }) {
|
|
4675
|
+
const id = useId();
|
|
4676
|
+
const [pinned, setPinned] = useState(false);
|
|
4517
4677
|
const anchor = useRef(null);
|
|
4518
4678
|
const childRef = children.ref;
|
|
4519
4679
|
const mergedRef = useCallback((el) => {
|
|
@@ -4586,6 +4746,7 @@ function Tooltip({ label, shortcutKeys, side = "right", align = "center", delayM
|
|
|
4586
4746
|
showTimer.current = null;
|
|
4587
4747
|
}, []);
|
|
4588
4748
|
useEffect(() => {
|
|
4749
|
+
if (pinned && (disabled || !openOnClick)) setPinned(false);
|
|
4589
4750
|
if (disabled) {
|
|
4590
4751
|
cancelShow();
|
|
4591
4752
|
triggers.current = {
|
|
@@ -4595,7 +4756,12 @@ function Tooltip({ label, shortcutKeys, side = "right", align = "center", delayM
|
|
|
4595
4756
|
setPos(null);
|
|
4596
4757
|
}
|
|
4597
4758
|
return cancelShow;
|
|
4598
|
-
}, [
|
|
4759
|
+
}, [
|
|
4760
|
+
cancelShow,
|
|
4761
|
+
disabled,
|
|
4762
|
+
openOnClick,
|
|
4763
|
+
pinned
|
|
4764
|
+
]);
|
|
4599
4765
|
const show = () => {
|
|
4600
4766
|
if (disabled) return;
|
|
4601
4767
|
const el = anchor.current;
|
|
@@ -4609,30 +4775,61 @@ function Tooltip({ label, shortcutKeys, side = "right", align = "center", delayM
|
|
|
4609
4775
|
});
|
|
4610
4776
|
announce(true);
|
|
4611
4777
|
};
|
|
4612
|
-
const
|
|
4778
|
+
const showAfterDelay = (delay) => {
|
|
4613
4779
|
cancelShow();
|
|
4614
|
-
if (
|
|
4780
|
+
if (delay <= 0) {
|
|
4615
4781
|
show();
|
|
4616
4782
|
return;
|
|
4617
4783
|
}
|
|
4618
4784
|
showTimer.current = setTimeout(() => {
|
|
4619
4785
|
showTimer.current = null;
|
|
4620
4786
|
show();
|
|
4621
|
-
},
|
|
4787
|
+
}, delay);
|
|
4622
4788
|
};
|
|
4623
|
-
const withdraw = () => {
|
|
4789
|
+
const withdraw = useCallback(() => {
|
|
4790
|
+
setPinned(false);
|
|
4624
4791
|
setPos(null);
|
|
4625
4792
|
announce(false);
|
|
4626
|
-
};
|
|
4793
|
+
}, [announce]);
|
|
4627
4794
|
const hide = () => {
|
|
4628
4795
|
cancelShow();
|
|
4629
|
-
if (!triggers.current.hover && !triggers.current.focus) withdraw();
|
|
4796
|
+
if (!triggers.current.hover && !triggers.current.focus && !pinned) withdraw();
|
|
4630
4797
|
};
|
|
4798
|
+
const dismiss = useCallback(() => {
|
|
4799
|
+
cancelShow();
|
|
4800
|
+
triggers.current = {
|
|
4801
|
+
hover: false,
|
|
4802
|
+
focus: false
|
|
4803
|
+
};
|
|
4804
|
+
withdraw();
|
|
4805
|
+
}, [cancelShow, withdraw]);
|
|
4806
|
+
useDismissOnOutsidePointer(anchor, openOnClick && visible, dismiss, bubble);
|
|
4807
|
+
useEffect(() => {
|
|
4808
|
+
if (!openOnClick || !visible) return;
|
|
4809
|
+
const onKeyDown = (event) => {
|
|
4810
|
+
if (event.key !== "Escape" && event.key !== "Tab") return;
|
|
4811
|
+
if (event.key === "Escape") {
|
|
4812
|
+
event.preventDefault();
|
|
4813
|
+
event.stopPropagation();
|
|
4814
|
+
}
|
|
4815
|
+
dismiss();
|
|
4816
|
+
};
|
|
4817
|
+
document.addEventListener("keydown", onKeyDown, true);
|
|
4818
|
+
return () => {
|
|
4819
|
+
document.removeEventListener("keydown", onKeyDown, true);
|
|
4820
|
+
};
|
|
4821
|
+
}, [
|
|
4822
|
+
dismiss,
|
|
4823
|
+
openOnClick,
|
|
4824
|
+
visible
|
|
4825
|
+
]);
|
|
4631
4826
|
const content = visible && !suppressed && jsxs("span", {
|
|
4632
4827
|
ref: bubble,
|
|
4633
|
-
|
|
4828
|
+
id: openOnClick ? id : void 0,
|
|
4829
|
+
className: css$16.bubble,
|
|
4634
4830
|
"data-side": side,
|
|
4635
4831
|
"data-portal": portal || void 0,
|
|
4832
|
+
"data-pinned": pinned || void 0,
|
|
4636
4833
|
"data-align": align,
|
|
4637
4834
|
"data-has-shortcut": shortcutKeys?.length ? true : void 0,
|
|
4638
4835
|
style: {
|
|
@@ -4644,7 +4841,7 @@ function Tooltip({ label, shortcutKeys, side = "right", align = "center", delayM
|
|
|
4644
4841
|
role: "tooltip",
|
|
4645
4842
|
"aria-label": shortcutKeys?.length ? [resolvedLabel, shortcutKeys.join(" ")].filter(Boolean).join(" ") : void 0,
|
|
4646
4843
|
children: [resolvedLabel && jsx("span", {
|
|
4647
|
-
className: css$
|
|
4844
|
+
className: css$16.label,
|
|
4648
4845
|
children: resolvedLabel
|
|
4649
4846
|
}), shortcutKeys !== void 0 && shortcutKeys.length > 0 && jsx(ShortcutKeys, {
|
|
4650
4847
|
keys: shortcutKeys,
|
|
@@ -4655,29 +4852,32 @@ function Tooltip({ label, shortcutKeys, side = "right", align = "center", delayM
|
|
|
4655
4852
|
value: setSuppressed,
|
|
4656
4853
|
children: [cloneElement(children, {
|
|
4657
4854
|
ref: mergedRef,
|
|
4855
|
+
"aria-describedby": openOnClick && visible ? [children.props["aria-describedby"], id].filter(Boolean).join(" ") : children.props["aria-describedby"],
|
|
4658
4856
|
onMouseEnter: (e) => {
|
|
4659
4857
|
children.props.onMouseEnter?.(e);
|
|
4660
4858
|
triggers.current.hover = true;
|
|
4661
|
-
|
|
4859
|
+
showAfterDelay(delayMs);
|
|
4662
4860
|
},
|
|
4663
4861
|
onMouseLeave: (e) => {
|
|
4664
4862
|
children.props.onMouseLeave?.(e);
|
|
4665
4863
|
triggers.current.hover = false;
|
|
4666
4864
|
cancelShow();
|
|
4667
|
-
withdraw();
|
|
4865
|
+
if (!pinned) withdraw();
|
|
4668
4866
|
},
|
|
4669
4867
|
onClick: (e) => {
|
|
4670
4868
|
children.props.onClick?.(e);
|
|
4671
4869
|
triggers.current.focus = false;
|
|
4672
4870
|
cancelShow();
|
|
4673
|
-
|
|
4871
|
+
if (openOnClick && !disabled && !pinned) {
|
|
4872
|
+
setPinned(true);
|
|
4873
|
+
show();
|
|
4874
|
+
} else withdraw();
|
|
4674
4875
|
},
|
|
4675
4876
|
onFocus: (e) => {
|
|
4676
4877
|
children.props.onFocus?.(e);
|
|
4677
4878
|
if (pointerModality()) return;
|
|
4678
4879
|
triggers.current.focus = true;
|
|
4679
|
-
|
|
4680
|
-
show();
|
|
4880
|
+
showAfterDelay(focusDelayMs);
|
|
4681
4881
|
},
|
|
4682
4882
|
onBlur: (e) => {
|
|
4683
4883
|
children.props.onBlur?.(e);
|
|
@@ -4909,7 +5109,7 @@ function HoverCard({ anchor, content, openDelayMs = 500, disabled = false, copyT
|
|
|
4909
5109
|
};
|
|
4910
5110
|
const card = open && pos !== null && !suppressed && jsx("div", {
|
|
4911
5111
|
ref: cardRef,
|
|
4912
|
-
className: clsx(css$
|
|
5112
|
+
className: clsx(css$17.card, variant === "preview" && css$17.preview, inline && css$17.media, copyable && css$17.copyable, copied && css$17.feedback),
|
|
4913
5113
|
"data-closing": closing || void 0,
|
|
4914
5114
|
style: {
|
|
4915
5115
|
...pos,
|
|
@@ -4932,14 +5132,14 @@ function HoverCard({ anchor, content, openDelayMs = 500, disabled = false, copyT
|
|
|
4932
5132
|
copy(copyText);
|
|
4933
5133
|
} : void 0,
|
|
4934
5134
|
children: copied ? jsx("span", {
|
|
4935
|
-
className: css$
|
|
5135
|
+
className: css$17.copied,
|
|
4936
5136
|
"aria-hidden": "true",
|
|
4937
5137
|
children: copiedLabel
|
|
4938
5138
|
}) : content
|
|
4939
5139
|
});
|
|
4940
5140
|
return jsxs("span", {
|
|
4941
5141
|
ref: rootRef,
|
|
4942
|
-
className: clsx(css$
|
|
5142
|
+
className: clsx(css$17.root, inline && css$17.inline),
|
|
4943
5143
|
onFocus: inline ? (event) => {
|
|
4944
5144
|
if (!disabled && event.target.matches(":focus-visible")) {
|
|
4945
5145
|
cancelClose();
|
|
@@ -4977,7 +5177,7 @@ function HoverCard({ anchor, content, openDelayMs = 500, disabled = false, copyT
|
|
|
4977
5177
|
children: anchor
|
|
4978
5178
|
}),
|
|
4979
5179
|
open && !suppressed && copyable && jsx("span", {
|
|
4980
|
-
className: css$
|
|
5180
|
+
className: css$17.status,
|
|
4981
5181
|
role: "status",
|
|
4982
5182
|
children: copied ? copiedLabel : ""
|
|
4983
5183
|
}),
|
|
@@ -5012,11 +5212,11 @@ function Modal({ open, onClose, title, closeLabel, description, children, footer
|
|
|
5012
5212
|
useModalLayer(dialog, open, onClose);
|
|
5013
5213
|
if (!open) return null;
|
|
5014
5214
|
return createPortal(jsxs("div", {
|
|
5015
|
-
className: css$
|
|
5215
|
+
className: css$18.root,
|
|
5016
5216
|
role: "presentation",
|
|
5017
5217
|
onKeyDownCapture,
|
|
5018
5218
|
children: [jsx("div", {
|
|
5019
|
-
className: css$
|
|
5219
|
+
className: css$18.mask,
|
|
5020
5220
|
style: backdropBlur ? void 0 : { backdropFilter: "none" },
|
|
5021
5221
|
"aria-hidden": "true",
|
|
5022
5222
|
onClick: onClose
|
|
@@ -5024,37 +5224,37 @@ function Modal({ open, onClose, title, closeLabel, description, children, footer
|
|
|
5024
5224
|
ref: dialog,
|
|
5025
5225
|
tabIndex: -1,
|
|
5026
5226
|
"data-shortcut-modal": shortcutModal,
|
|
5027
|
-
className: clsx(css$
|
|
5227
|
+
className: clsx(css$18.dialog, className),
|
|
5028
5228
|
role: "dialog",
|
|
5029
5229
|
"aria-modal": "true",
|
|
5030
5230
|
"aria-label": title,
|
|
5031
5231
|
children: headless ? children : jsxs(Fragment, { children: [jsxs("div", {
|
|
5032
|
-
className: clsx(css$
|
|
5232
|
+
className: clsx(css$18.content, contentClassName),
|
|
5033
5233
|
children: [
|
|
5034
5234
|
jsxs("div", {
|
|
5035
|
-
className: css$
|
|
5235
|
+
className: css$18.header,
|
|
5036
5236
|
children: [jsx("h2", {
|
|
5037
|
-
className: css$
|
|
5237
|
+
className: css$18.title,
|
|
5038
5238
|
children: title
|
|
5039
5239
|
}), jsx("button", {
|
|
5040
5240
|
type: "button",
|
|
5041
|
-
className: css$
|
|
5241
|
+
className: css$18.close,
|
|
5042
5242
|
"aria-label": closeLabel,
|
|
5043
5243
|
onClick: onClose,
|
|
5044
5244
|
children: jsx(IconCloseOutlineRegular, { size: 14 })
|
|
5045
5245
|
})]
|
|
5046
5246
|
}),
|
|
5047
5247
|
description !== void 0 && description !== "" && jsx("p", {
|
|
5048
|
-
className: css$
|
|
5248
|
+
className: css$18.description,
|
|
5049
5249
|
children: description
|
|
5050
5250
|
}),
|
|
5051
5251
|
children !== void 0 && jsx("div", {
|
|
5052
|
-
className: css$
|
|
5252
|
+
className: css$18.body,
|
|
5053
5253
|
children
|
|
5054
5254
|
})
|
|
5055
5255
|
]
|
|
5056
5256
|
}), footer !== void 0 && jsx("div", {
|
|
5057
|
-
className: css$
|
|
5257
|
+
className: css$18.footer,
|
|
5058
5258
|
children: footer
|
|
5059
5259
|
})] })
|
|
5060
5260
|
})]
|
|
@@ -5076,28 +5276,28 @@ function RiskConfirmation({ open, title, description, acknowledgeLabel, cancelLa
|
|
|
5076
5276
|
onClose: onCancel,
|
|
5077
5277
|
title,
|
|
5078
5278
|
closeLabel,
|
|
5079
|
-
className: css$
|
|
5080
|
-
contentClassName: css$
|
|
5279
|
+
className: css$19.confirmation ?? "",
|
|
5280
|
+
contentClassName: css$19.confirmationContent ?? "",
|
|
5081
5281
|
footer: jsxs(Fragment, { children: [jsx(Button, {
|
|
5082
5282
|
variant: "outline",
|
|
5083
|
-
className: css$
|
|
5283
|
+
className: css$19.modalAction,
|
|
5084
5284
|
onClick: onCancel,
|
|
5085
5285
|
children: cancelLabel
|
|
5086
5286
|
}), jsx(Button, {
|
|
5087
5287
|
variant: "primary",
|
|
5088
|
-
className: css$
|
|
5288
|
+
className: css$19.confirmAction,
|
|
5089
5289
|
disabled: disabled || !acknowledged,
|
|
5090
5290
|
onClick: onConfirm,
|
|
5091
5291
|
children: confirmLabel
|
|
5092
5292
|
})] }),
|
|
5093
5293
|
children: [jsxs("div", {
|
|
5094
|
-
className: css$
|
|
5294
|
+
className: css$19.warning,
|
|
5095
5295
|
children: [jsx(IconWarningOutlineRegular, {
|
|
5096
5296
|
size: 18,
|
|
5097
|
-
className: css$
|
|
5297
|
+
className: css$19.warningIcon
|
|
5098
5298
|
}), jsx("p", { children: description })]
|
|
5099
5299
|
}), jsxs("label", {
|
|
5100
|
-
className: css$
|
|
5300
|
+
className: css$19.acknowledgement,
|
|
5101
5301
|
children: [jsx("input", {
|
|
5102
5302
|
type: "checkbox",
|
|
5103
5303
|
checked: acknowledged,
|
|
@@ -5145,44 +5345,44 @@ function ConnectionIndicator({ state, disconnectedLabel, connectingLabel, recove
|
|
|
5145
5345
|
};
|
|
5146
5346
|
}, [state, rendered]);
|
|
5147
5347
|
if (rendered === void 0) return null;
|
|
5148
|
-
const leavingClass = leaving ? ` ${css$
|
|
5348
|
+
const leavingClass = leaving ? ` ${css$20.leaving}` : "";
|
|
5149
5349
|
if (rendered === "recovered") return jsxs("div", {
|
|
5150
|
-
className: `${css$
|
|
5350
|
+
className: `${css$20.indicator} ${css$20.success}${leavingClass}`,
|
|
5151
5351
|
role: "status",
|
|
5152
5352
|
"aria-label": recoveredLabel,
|
|
5153
5353
|
children: [jsx("span", {
|
|
5154
|
-
className: css$
|
|
5354
|
+
className: css$20.icon,
|
|
5155
5355
|
"aria-hidden": "true",
|
|
5156
5356
|
children: jsx(IconCheckOutlineRegular, { size: 14 })
|
|
5157
5357
|
}), jsx("span", {
|
|
5158
|
-
className: css$
|
|
5358
|
+
className: css$20.label,
|
|
5159
5359
|
children: recoveredLabel
|
|
5160
5360
|
})]
|
|
5161
5361
|
});
|
|
5162
5362
|
const connecting = rendered === "connecting";
|
|
5163
5363
|
return jsxs("button", {
|
|
5164
5364
|
type: "button",
|
|
5165
|
-
className: `${css$
|
|
5365
|
+
className: `${css$20.indicator} ${css$20.warning}${leavingClass}`,
|
|
5166
5366
|
"data-phase": rendered,
|
|
5167
5367
|
"aria-label": connecting ? restartActionLabel : reconnectActionLabel,
|
|
5168
5368
|
onClick: onReconnect,
|
|
5169
5369
|
children: [jsx("span", {
|
|
5170
|
-
className: css$
|
|
5370
|
+
className: css$20.icon,
|
|
5171
5371
|
"aria-hidden": "true",
|
|
5172
5372
|
children: connecting ? jsx(StateDot, { state: "ongoing" }) : jsx(IconRefreshOutlineRegular, { size: 14 })
|
|
5173
5373
|
}), jsx("span", {
|
|
5174
|
-
className: css$
|
|
5374
|
+
className: css$20.label,
|
|
5175
5375
|
children: connecting ? jsxs(Fragment, { children: [connectingLabel, jsxs("span", {
|
|
5176
|
-
className: css$
|
|
5376
|
+
className: css$20.dots,
|
|
5177
5377
|
"aria-hidden": "true",
|
|
5178
5378
|
children: [
|
|
5179
5379
|
jsx("span", { children: "." }),
|
|
5180
5380
|
jsx("span", {
|
|
5181
|
-
className: css$
|
|
5381
|
+
className: css$20.secondDot,
|
|
5182
5382
|
children: "."
|
|
5183
5383
|
}),
|
|
5184
5384
|
jsx("span", {
|
|
5185
|
-
className: css$
|
|
5385
|
+
className: css$20.thirdDot,
|
|
5186
5386
|
children: "."
|
|
5187
5387
|
})
|
|
5188
5388
|
]
|
|
@@ -6213,7 +6413,7 @@ function FileTypeIcon(props) {
|
|
|
6213
6413
|
type: resolvedType,
|
|
6214
6414
|
size,
|
|
6215
6415
|
className
|
|
6216
|
-
}) : glyph(resolvedType, size, clsx(css$
|
|
6416
|
+
}) : glyph(resolvedType, size, clsx(css$21.icon, css$21[resolvedType], className));
|
|
6217
6417
|
}
|
|
6218
6418
|
//#endregion
|
|
6219
6419
|
//#region lib/types/SiteGlyph.js
|
|
@@ -6542,7 +6742,7 @@ function projectUserText(text, sessionLabels, slashNames = [], slashKind = "skil
|
|
|
6542
6742
|
let cursor = 0;
|
|
6543
6743
|
const pushPlain = (from, to) => {
|
|
6544
6744
|
parts.push(jsx("span", {
|
|
6545
|
-
className: css$
|
|
6745
|
+
className: css$22.plainRun,
|
|
6546
6746
|
children: text.slice(from, to)
|
|
6547
6747
|
}, `t${from}`));
|
|
6548
6748
|
};
|
|
@@ -6555,14 +6755,14 @@ function projectUserText(text, sessionLabels, slashNames = [], slashKind = "skil
|
|
|
6555
6755
|
const contents = jsxs(Fragment, { children: [referenceKind !== void 0 && jsx(ReferenceIconRegular, {
|
|
6556
6756
|
kind: referenceKind,
|
|
6557
6757
|
size: 16,
|
|
6558
|
-
className: css$
|
|
6758
|
+
className: css$22.refIcon
|
|
6559
6759
|
}), displayLabel] });
|
|
6560
6760
|
const open = references === void 0 ? void 0 : referenceKind === "file" ? () => {
|
|
6561
6761
|
references.openFile(label.slice(1).replace(/^"|"$/gu, ""));
|
|
6562
6762
|
} : referenceKind === void 0 && slashKind === "skill" ? () => {
|
|
6563
6763
|
references.openSkill(label.slice(1));
|
|
6564
6764
|
} : void 0;
|
|
6565
|
-
const className = clsx(css$
|
|
6765
|
+
const className = clsx(css$22.refChip, referenceKind === void 0 && css$22.slashChip);
|
|
6566
6766
|
parts.push(open === void 0 ? jsx("span", {
|
|
6567
6767
|
className,
|
|
6568
6768
|
"data-ref-chip": referenceKind ?? slashKind,
|
|
@@ -6582,7 +6782,7 @@ function projectUserText(text, sessionLabels, slashNames = [], slashKind = "skil
|
|
|
6582
6782
|
cursor = end;
|
|
6583
6783
|
}
|
|
6584
6784
|
if (parts.length === 0) return jsx("span", {
|
|
6585
|
-
className: css$
|
|
6785
|
+
className: css$22.plainRun,
|
|
6586
6786
|
children: text
|
|
6587
6787
|
});
|
|
6588
6788
|
if (cursor < text.length) pushPlain(cursor, text.length);
|
|
@@ -6655,25 +6855,25 @@ function Toast({ text, icon, tone, anchor, holdMs = HOLD_MS, actions, onDone })
|
|
|
6655
6855
|
};
|
|
6656
6856
|
}, [anchor]);
|
|
6657
6857
|
return createPortal(jsxs("div", {
|
|
6658
|
-
className: css$
|
|
6858
|
+
className: css$23.toast,
|
|
6659
6859
|
role: "alert",
|
|
6660
6860
|
style: {
|
|
6661
6861
|
...left === null ? {} : { left },
|
|
6662
6862
|
"--dsh-toast-hold": `${String(holdMs)}ms`
|
|
6663
6863
|
},
|
|
6664
6864
|
children: [tone === "success" ? jsx("span", {
|
|
6665
|
-
className: `${css$
|
|
6865
|
+
className: `${css$23.icon} ${css$23.success}`,
|
|
6666
6866
|
"aria-hidden": true,
|
|
6667
6867
|
children: jsx(IconCheckCircleOutlineRegular, {})
|
|
6668
6868
|
}) : icon !== void 0 && jsx("span", {
|
|
6669
|
-
className: css$
|
|
6869
|
+
className: css$23.icon,
|
|
6670
6870
|
"aria-hidden": true,
|
|
6671
6871
|
children: icon
|
|
6672
6872
|
}), jsxs("span", {
|
|
6673
|
-
className: css$
|
|
6873
|
+
className: css$23.text,
|
|
6674
6874
|
children: [text, actions?.map((action) => jsxs(Fragment$1, { children: [action.prefix, jsx("button", {
|
|
6675
6875
|
type: "button",
|
|
6676
|
-
className: css$
|
|
6876
|
+
className: css$23.action,
|
|
6677
6877
|
onClick: action.onClick,
|
|
6678
6878
|
children: action.label
|
|
6679
6879
|
})] }, action.label))]
|
|
@@ -6723,29 +6923,29 @@ function SettingsForm(props) {
|
|
|
6723
6923
|
discard.current();
|
|
6724
6924
|
}, []);
|
|
6725
6925
|
if (!state.available) return jsx("p", {
|
|
6726
|
-
className: css$
|
|
6926
|
+
className: css$24.unavailable,
|
|
6727
6927
|
role: "status",
|
|
6728
6928
|
children: labels.unavailable
|
|
6729
6929
|
});
|
|
6730
6930
|
const blocked = !state.dirty || state.invalid || state.saving;
|
|
6731
6931
|
return jsxs("div", {
|
|
6732
|
-
className: css$
|
|
6932
|
+
className: css$24.form,
|
|
6733
6933
|
children: [
|
|
6734
6934
|
!state.writable ? jsx("p", {
|
|
6735
|
-
className: css$
|
|
6935
|
+
className: css$24.readOnly,
|
|
6736
6936
|
role: "status",
|
|
6737
6937
|
children: labels.readOnly
|
|
6738
6938
|
}) : null,
|
|
6739
6939
|
props.children,
|
|
6740
6940
|
jsxs("div", {
|
|
6741
|
-
className: css$
|
|
6941
|
+
className: css$24.footer,
|
|
6742
6942
|
children: [state.failed ? jsx("p", {
|
|
6743
|
-
className: css$
|
|
6943
|
+
className: css$24.failed,
|
|
6744
6944
|
role: "status",
|
|
6745
6945
|
children: labels.saveFailed
|
|
6746
6946
|
}) : null, jsx("button", {
|
|
6747
6947
|
type: "button",
|
|
6748
|
-
className: css$
|
|
6948
|
+
className: css$24.save,
|
|
6749
6949
|
disabled: blocked,
|
|
6750
6950
|
onClick: props.onSave,
|
|
6751
6951
|
children: state.saving ? labels.saving : labels.save
|
|
@@ -6777,19 +6977,19 @@ function SettingsValueField(props) {
|
|
|
6777
6977
|
const hasMessage = props.invalid || Boolean(props.hint);
|
|
6778
6978
|
const description = [hasMessage ? messageId : "", helpOpen ? helpId : ""].filter(Boolean).join(" ");
|
|
6779
6979
|
return jsxs("div", {
|
|
6780
|
-
className: css$
|
|
6980
|
+
className: css$25.field,
|
|
6781
6981
|
children: [
|
|
6782
6982
|
jsxs("div", {
|
|
6783
|
-
className: css$
|
|
6983
|
+
className: css$25.head,
|
|
6784
6984
|
children: [jsxs("div", {
|
|
6785
|
-
className: css$
|
|
6985
|
+
className: css$25.labelGroup,
|
|
6786
6986
|
children: [jsx("label", {
|
|
6787
|
-
className: css$
|
|
6987
|
+
className: css$25.label,
|
|
6788
6988
|
htmlFor: props.id,
|
|
6789
6989
|
children: props.label
|
|
6790
6990
|
}), props.help !== void 0 ? jsx("button", {
|
|
6791
6991
|
type: "button",
|
|
6792
|
-
className: css$
|
|
6992
|
+
className: css$25.helpButton,
|
|
6793
6993
|
"aria-label": props.help.label,
|
|
6794
6994
|
"aria-expanded": helpOpen,
|
|
6795
6995
|
"aria-controls": helpId,
|
|
@@ -6799,13 +6999,13 @@ function SettingsValueField(props) {
|
|
|
6799
6999
|
children: jsx(IconInfoOutlineRegular, { size: 12 })
|
|
6800
7000
|
}) : null]
|
|
6801
7001
|
}), props.overridden ? jsxs("span", {
|
|
6802
|
-
className: css$
|
|
7002
|
+
className: css$25.badges,
|
|
6803
7003
|
children: [jsx(Tag, {
|
|
6804
7004
|
tone: "neutral",
|
|
6805
7005
|
children: props.overriddenLabel
|
|
6806
7006
|
}), jsx("button", {
|
|
6807
7007
|
type: "button",
|
|
6808
|
-
className: css$
|
|
7008
|
+
className: css$25.reset,
|
|
6809
7009
|
disabled: props.disabled,
|
|
6810
7010
|
onClick: props.onReset,
|
|
6811
7011
|
children: props.resetLabel
|
|
@@ -6814,7 +7014,7 @@ function SettingsValueField(props) {
|
|
|
6814
7014
|
}),
|
|
6815
7015
|
jsx("input", {
|
|
6816
7016
|
id: props.id,
|
|
6817
|
-
className: css$
|
|
7017
|
+
className: css$25.input,
|
|
6818
7018
|
type: "text",
|
|
6819
7019
|
...props.numeric === true ? { inputMode: "numeric" } : {},
|
|
6820
7020
|
...props.invalid ? { "aria-invalid": true } : {},
|
|
@@ -6828,12 +7028,12 @@ function SettingsValueField(props) {
|
|
|
6828
7028
|
}),
|
|
6829
7029
|
hasMessage ? jsx("p", {
|
|
6830
7030
|
id: messageId,
|
|
6831
|
-
className: props.invalid ? css$
|
|
7031
|
+
className: props.invalid ? css$25.invalid : css$25.hint,
|
|
6832
7032
|
children: props.invalid ? props.invalidLabel : props.hint
|
|
6833
7033
|
}) : null,
|
|
6834
7034
|
props.help !== void 0 && helpOpen ? jsx("div", {
|
|
6835
7035
|
id: helpId,
|
|
6836
|
-
className: css$
|
|
7036
|
+
className: css$25.help,
|
|
6837
7037
|
role: "region",
|
|
6838
7038
|
"aria-label": props.help.label,
|
|
6839
7039
|
children: props.help.content
|
|
@@ -6851,16 +7051,16 @@ function SettingsValueField(props) {
|
|
|
6851
7051
|
*/
|
|
6852
7052
|
function SettingsSecretField(props) {
|
|
6853
7053
|
return jsxs("div", {
|
|
6854
|
-
className: css$
|
|
7054
|
+
className: css$25.field,
|
|
6855
7055
|
children: [
|
|
6856
7056
|
jsxs("div", {
|
|
6857
|
-
className: css$
|
|
7057
|
+
className: css$25.head,
|
|
6858
7058
|
children: [jsx("label", {
|
|
6859
|
-
className: css$
|
|
7059
|
+
className: css$25.label,
|
|
6860
7060
|
htmlFor: props.id,
|
|
6861
7061
|
children: props.label
|
|
6862
7062
|
}), jsx("span", {
|
|
6863
|
-
className: css$
|
|
7063
|
+
className: css$25.badges,
|
|
6864
7064
|
children: jsx(Tag, {
|
|
6865
7065
|
tone: props.configured ? "neutral" : "quiet",
|
|
6866
7066
|
children: props.stateLabel
|
|
@@ -6869,7 +7069,7 @@ function SettingsSecretField(props) {
|
|
|
6869
7069
|
}),
|
|
6870
7070
|
jsx("input", {
|
|
6871
7071
|
id: props.id,
|
|
6872
|
-
className: css$
|
|
7072
|
+
className: css$25.input,
|
|
6873
7073
|
type: "password",
|
|
6874
7074
|
autoComplete: "new-password",
|
|
6875
7075
|
value: props.text,
|
|
@@ -6879,7 +7079,7 @@ function SettingsSecretField(props) {
|
|
|
6879
7079
|
}
|
|
6880
7080
|
}),
|
|
6881
7081
|
jsx("p", {
|
|
6882
|
-
className: css$
|
|
7082
|
+
className: css$25.hint,
|
|
6883
7083
|
children: props.hint
|
|
6884
7084
|
})
|
|
6885
7085
|
]
|
|
@@ -7945,7 +8145,7 @@ function JsonCopyAction({ store, target, persistent, labels, onCopy, onClose })
|
|
|
7945
8145
|
const object = typeof target.value === "object" && target.value !== null;
|
|
7946
8146
|
const copyTitle = state === "copied" ? labels.copied : state === "failed" ? labels.copyFailed : object ? labels.copyPrettyJson : labels.copyValue;
|
|
7947
8147
|
return jsx("span", {
|
|
7948
|
-
className: css$
|
|
8148
|
+
className: css$26.copySlot,
|
|
7949
8149
|
children: (persistent || snapshot !== void 0) && jsx(Menu, {
|
|
7950
8150
|
open: snapshot?.menuOpen === true,
|
|
7951
8151
|
compact: true,
|
|
@@ -7954,7 +8154,7 @@ function JsonCopyAction({ store, target, persistent, labels, onCopy, onClose })
|
|
|
7954
8154
|
anchor: jsx("button", {
|
|
7955
8155
|
ref: buttonRef,
|
|
7956
8156
|
type: "button",
|
|
7957
|
-
className: css$
|
|
8157
|
+
className: css$26.actionButton,
|
|
7958
8158
|
"data-json-copy-button": true,
|
|
7959
8159
|
"data-state": state,
|
|
7960
8160
|
"aria-label": copyTitle,
|
|
@@ -7993,35 +8193,35 @@ function bracketOf(value) {
|
|
|
7993
8193
|
}
|
|
7994
8194
|
function previewPrimitive(value) {
|
|
7995
8195
|
if (value === null) return jsx("span", {
|
|
7996
|
-
className: css$
|
|
8196
|
+
className: css$26.keywordValue,
|
|
7997
8197
|
children: "null"
|
|
7998
8198
|
});
|
|
7999
8199
|
if (typeof value === "string") return jsx("span", {
|
|
8000
|
-
className: css$
|
|
8200
|
+
className: css$26.stringValue,
|
|
8001
8201
|
children: JSON.stringify(value)
|
|
8002
8202
|
});
|
|
8003
8203
|
if (typeof value === "number") return jsx("span", {
|
|
8004
|
-
className: css$
|
|
8204
|
+
className: css$26.numberValue,
|
|
8005
8205
|
children: String(value)
|
|
8006
8206
|
});
|
|
8007
8207
|
if (typeof value === "boolean") return jsx("span", {
|
|
8008
|
-
className: css$
|
|
8208
|
+
className: css$26.keywordValue,
|
|
8009
8209
|
children: String(value)
|
|
8010
8210
|
});
|
|
8011
8211
|
if (typeof value === "bigint") return jsx("span", {
|
|
8012
|
-
className: css$
|
|
8212
|
+
className: css$26.otherValue,
|
|
8013
8213
|
children: value.toString()
|
|
8014
8214
|
});
|
|
8015
8215
|
if (typeof value === "undefined") return jsx("span", {
|
|
8016
|
-
className: css$
|
|
8216
|
+
className: css$26.otherValue,
|
|
8017
8217
|
children: "undefined"
|
|
8018
8218
|
});
|
|
8019
8219
|
if (typeof value === "symbol") return jsx("span", {
|
|
8020
|
-
className: css$
|
|
8220
|
+
className: css$26.otherValue,
|
|
8021
8221
|
children: value.description ?? "Symbol"
|
|
8022
8222
|
});
|
|
8023
8223
|
if (typeof value === "function") return jsx("span", {
|
|
8024
|
-
className: css$
|
|
8224
|
+
className: css$26.otherValue,
|
|
8025
8225
|
children: value.name || "Function"
|
|
8026
8226
|
});
|
|
8027
8227
|
return null;
|
|
@@ -8035,71 +8235,71 @@ function previewValue(value, depth) {
|
|
|
8035
8235
|
const [open, close] = bracketOf(value);
|
|
8036
8236
|
return jsxs(Fragment, { children: [
|
|
8037
8237
|
jsx("span", {
|
|
8038
|
-
className: css$
|
|
8238
|
+
className: css$26.punctuation,
|
|
8039
8239
|
children: open
|
|
8040
8240
|
}),
|
|
8041
8241
|
depth >= PREVIEW_DEPTH_LIMIT ? jsx("span", {
|
|
8042
|
-
className: css$
|
|
8242
|
+
className: css$26.previewEllipsis,
|
|
8043
8243
|
children: "…"
|
|
8044
8244
|
}) : visible.map(([key, item], index) => jsxs("span", { children: [
|
|
8045
8245
|
index > 0 && jsx("span", {
|
|
8046
|
-
className: css$
|
|
8246
|
+
className: css$26.punctuation,
|
|
8047
8247
|
children: ", "
|
|
8048
8248
|
}),
|
|
8049
8249
|
!array && jsxs(Fragment, { children: [jsx("span", {
|
|
8050
|
-
className: css$
|
|
8250
|
+
className: css$26.previewProperty,
|
|
8051
8251
|
children: key
|
|
8052
8252
|
}), jsx("span", {
|
|
8053
|
-
className: css$
|
|
8253
|
+
className: css$26.punctuation,
|
|
8054
8254
|
children: ": "
|
|
8055
8255
|
})] }),
|
|
8056
8256
|
previewValue(item, depth + 1)
|
|
8057
8257
|
] }, key)),
|
|
8058
8258
|
depth < PREVIEW_DEPTH_LIMIT && entries.length > limit && jsx("span", {
|
|
8059
|
-
className: css$
|
|
8259
|
+
className: css$26.previewEllipsis,
|
|
8060
8260
|
children: ", …"
|
|
8061
8261
|
}),
|
|
8062
8262
|
jsx("span", {
|
|
8063
|
-
className: css$
|
|
8263
|
+
className: css$26.punctuation,
|
|
8064
8264
|
children: close
|
|
8065
8265
|
})
|
|
8066
8266
|
] });
|
|
8067
8267
|
}
|
|
8068
8268
|
function primitiveValue(value) {
|
|
8069
8269
|
if (value === null) return jsx("span", {
|
|
8070
|
-
className: css$
|
|
8270
|
+
className: css$26.keywordValue,
|
|
8071
8271
|
children: "null"
|
|
8072
8272
|
});
|
|
8073
8273
|
if (typeof value === "string") return jsx("span", {
|
|
8074
|
-
className: css$
|
|
8274
|
+
className: css$26.stringValue,
|
|
8075
8275
|
children: JSON.stringify(value)
|
|
8076
8276
|
});
|
|
8077
8277
|
if (typeof value === "boolean") return jsx("span", {
|
|
8078
|
-
className: css$
|
|
8278
|
+
className: css$26.keywordValue,
|
|
8079
8279
|
children: String(value)
|
|
8080
8280
|
});
|
|
8081
8281
|
if (typeof value === "number") return jsx("span", {
|
|
8082
|
-
className: css$
|
|
8282
|
+
className: css$26.numberValue,
|
|
8083
8283
|
children: String(value)
|
|
8084
8284
|
});
|
|
8085
8285
|
if (typeof value === "bigint") return jsx("span", {
|
|
8086
|
-
className: css$
|
|
8286
|
+
className: css$26.numberValue,
|
|
8087
8287
|
children: `${value.toString()}n`
|
|
8088
8288
|
});
|
|
8089
8289
|
if (value instanceof Date) return jsx("span", {
|
|
8090
|
-
className: css$
|
|
8290
|
+
className: css$26.otherValue,
|
|
8091
8291
|
children: value.toISOString()
|
|
8092
8292
|
});
|
|
8093
8293
|
if (typeof value === "function") return jsxs("span", {
|
|
8094
|
-
className: css$
|
|
8294
|
+
className: css$26.otherValue,
|
|
8095
8295
|
children: ["function() ", "{ }"]
|
|
8096
8296
|
});
|
|
8097
8297
|
if (typeof value === "undefined") return jsx("span", {
|
|
8098
|
-
className: css$
|
|
8298
|
+
className: css$26.otherValue,
|
|
8099
8299
|
children: "undefined"
|
|
8100
8300
|
});
|
|
8101
8301
|
return jsx("span", {
|
|
8102
|
-
className: css$
|
|
8302
|
+
className: css$26.otherValue,
|
|
8103
8303
|
children: value.toString()
|
|
8104
8304
|
});
|
|
8105
8305
|
}
|
|
@@ -8127,7 +8327,7 @@ function moveFocus(button, direction) {
|
|
|
8127
8327
|
function NodeField({ field, expandable, onToggle }) {
|
|
8128
8328
|
if (field === void 0) return null;
|
|
8129
8329
|
return jsxs("span", {
|
|
8130
|
-
className: clsx(css$
|
|
8330
|
+
className: clsx(css$26.label, expandable && css$26.clickableLabel),
|
|
8131
8331
|
onClick: expandable ? onToggle : void 0,
|
|
8132
8332
|
children: [fieldText(field), ":"]
|
|
8133
8333
|
});
|
|
@@ -8164,7 +8364,7 @@ function JsonString({ collapsedStringLines, stringWrapping, field, labels, lastE
|
|
|
8164
8364
|
if (!expanded) return;
|
|
8165
8365
|
const raw = rawRef.current;
|
|
8166
8366
|
const clips = [];
|
|
8167
|
-
const tree = raw.closest(`.${css$
|
|
8367
|
+
const tree = raw.closest(`.${css$26.root}`);
|
|
8168
8368
|
for (let parent = tree.parentElement; parent !== null; parent = parent.parentElement) if (/auto|scroll|hidden|clip/.test(getComputedStyle(parent).overflowY)) clips.push(parent);
|
|
8169
8369
|
const measure = () => {
|
|
8170
8370
|
let top = 0;
|
|
@@ -8193,33 +8393,33 @@ function JsonString({ collapsedStringLines, stringWrapping, field, labels, lastE
|
|
|
8193
8393
|
if (expanded) {
|
|
8194
8394
|
const fieldId = `${contentsId}-field`;
|
|
8195
8395
|
return jsxs("div", {
|
|
8196
|
-
className: css$
|
|
8396
|
+
className: css$26.stringField,
|
|
8197
8397
|
"data-expanded": true,
|
|
8198
8398
|
children: [
|
|
8199
8399
|
field !== void 0 && jsxs("span", {
|
|
8200
8400
|
id: fieldId,
|
|
8201
|
-
className: css$
|
|
8401
|
+
className: css$26.label,
|
|
8202
8402
|
children: [fieldText(field), ":"]
|
|
8203
8403
|
}),
|
|
8204
8404
|
jsx("pre", {
|
|
8205
8405
|
ref: rawRef,
|
|
8206
8406
|
id: contentsId,
|
|
8207
|
-
className: css$
|
|
8407
|
+
className: css$26.stringRaw,
|
|
8208
8408
|
"data-wrap": wrapped,
|
|
8209
8409
|
tabIndex: 0,
|
|
8210
8410
|
"aria-labelledby": field === void 0 ? void 0 : fieldId,
|
|
8211
8411
|
children: value
|
|
8212
8412
|
}),
|
|
8213
8413
|
!lastElement && jsx("span", {
|
|
8214
|
-
className: css$
|
|
8414
|
+
className: css$26.punctuation,
|
|
8215
8415
|
children: ","
|
|
8216
8416
|
}),
|
|
8217
8417
|
jsxs("div", {
|
|
8218
|
-
className: css$
|
|
8418
|
+
className: css$26.stringActions,
|
|
8219
8419
|
children: [
|
|
8220
8420
|
stringWrapping !== void 0 && jsx("button", {
|
|
8221
8421
|
type: "button",
|
|
8222
|
-
className: css$
|
|
8422
|
+
className: css$26.actionButton,
|
|
8223
8423
|
"aria-label": stringWrapping.label,
|
|
8224
8424
|
title: stringWrapping.label,
|
|
8225
8425
|
"aria-pressed": wrapped,
|
|
@@ -8233,7 +8433,7 @@ function JsonString({ collapsedStringLines, stringWrapping, field, labels, lastE
|
|
|
8233
8433
|
}),
|
|
8234
8434
|
jsx("button", {
|
|
8235
8435
|
type: "button",
|
|
8236
|
-
className: css$
|
|
8436
|
+
className: css$26.actionButton,
|
|
8237
8437
|
"aria-label": labels.collapseNode,
|
|
8238
8438
|
title: labels.collapseNode,
|
|
8239
8439
|
"aria-expanded": true,
|
|
@@ -8258,18 +8458,18 @@ function JsonString({ collapsedStringLines, stringWrapping, field, labels, lastE
|
|
|
8258
8458
|
});
|
|
8259
8459
|
}
|
|
8260
8460
|
return jsxs(Fragment, { children: [renderCopy?.(), jsx("span", {
|
|
8261
|
-
className: css$
|
|
8461
|
+
className: css$26.stringField,
|
|
8262
8462
|
"data-expanded": expanded,
|
|
8263
8463
|
children: jsxs("span", {
|
|
8264
8464
|
ref: contentRef,
|
|
8265
8465
|
id: contentsId,
|
|
8266
|
-
className: css$
|
|
8466
|
+
className: css$26.stringText,
|
|
8267
8467
|
children: [
|
|
8268
8468
|
truncated && jsx("span", {
|
|
8269
|
-
className: css$
|
|
8469
|
+
className: css$26.stringToggleSlot,
|
|
8270
8470
|
children: jsxs("button", {
|
|
8271
8471
|
type: "button",
|
|
8272
|
-
className: css$
|
|
8472
|
+
className: css$26.stringToggle,
|
|
8273
8473
|
"aria-label": labels.expandNode,
|
|
8274
8474
|
"aria-expanded": false,
|
|
8275
8475
|
"aria-controls": contentsId,
|
|
@@ -8284,12 +8484,12 @@ function JsonString({ collapsedStringLines, stringWrapping, field, labels, lastE
|
|
|
8284
8484
|
})
|
|
8285
8485
|
}),
|
|
8286
8486
|
field !== void 0 && jsxs("span", {
|
|
8287
|
-
className: css$
|
|
8487
|
+
className: css$26.label,
|
|
8288
8488
|
children: [fieldText(field), ":"]
|
|
8289
8489
|
}),
|
|
8290
8490
|
primitiveValue(value),
|
|
8291
8491
|
!lastElement && jsx("span", {
|
|
8292
|
-
className: css$
|
|
8492
|
+
className: css$26.punctuation,
|
|
8293
8493
|
children: ","
|
|
8294
8494
|
})
|
|
8295
8495
|
]
|
|
@@ -8320,7 +8520,7 @@ function JsonTreeNode({ collapsedStringLines, stringWrapping, field, initialExpa
|
|
|
8320
8520
|
}
|
|
8321
8521
|
};
|
|
8322
8522
|
const row = (children, ariaExpanded) => jsxs("div", {
|
|
8323
|
-
className: css$
|
|
8523
|
+
className: css$26.row,
|
|
8324
8524
|
role: "treeitem",
|
|
8325
8525
|
"aria-expanded": ariaExpanded,
|
|
8326
8526
|
onMouseOver: (event) => {
|
|
@@ -8355,7 +8555,7 @@ function JsonTreeNode({ collapsedStringLines, stringWrapping, field, initialExpa
|
|
|
8355
8555
|
}),
|
|
8356
8556
|
primitiveValue(value),
|
|
8357
8557
|
!lastElement && jsx("span", {
|
|
8358
|
-
className: css$
|
|
8558
|
+
className: css$26.punctuation,
|
|
8359
8559
|
children: ","
|
|
8360
8560
|
})
|
|
8361
8561
|
] }));
|
|
@@ -8367,22 +8567,22 @@ function JsonTreeNode({ collapsedStringLines, stringWrapping, field, initialExpa
|
|
|
8367
8567
|
onToggle: toggle
|
|
8368
8568
|
}),
|
|
8369
8569
|
jsx("span", {
|
|
8370
|
-
className: css$
|
|
8570
|
+
className: css$26.punctuation,
|
|
8371
8571
|
children: open
|
|
8372
8572
|
}),
|
|
8373
8573
|
jsx("span", {
|
|
8374
|
-
className: css$
|
|
8574
|
+
className: css$26.punctuation,
|
|
8375
8575
|
children: close
|
|
8376
8576
|
}),
|
|
8377
8577
|
!lastElement && jsx("span", {
|
|
8378
|
-
className: css$
|
|
8578
|
+
className: css$26.punctuation,
|
|
8379
8579
|
children: ","
|
|
8380
8580
|
})
|
|
8381
8581
|
] }));
|
|
8382
8582
|
return row(jsxs(Fragment, { children: [
|
|
8383
8583
|
jsx("span", {
|
|
8384
8584
|
ref: expanderRef,
|
|
8385
|
-
className: clsx(css$
|
|
8585
|
+
className: clsx(css$26.expander, expanded ? css$26.collapseIcon : css$26.expandIcon),
|
|
8386
8586
|
"data-json-expander": true,
|
|
8387
8587
|
role: "button",
|
|
8388
8588
|
"aria-label": expanded ? labels.collapseNode : labels.expandNode,
|
|
@@ -8396,7 +8596,7 @@ function JsonTreeNode({ collapsedStringLines, stringWrapping, field, initialExpa
|
|
|
8396
8596
|
onKeyDown: onExpanderKeyDown
|
|
8397
8597
|
}),
|
|
8398
8598
|
jsxs("span", {
|
|
8399
|
-
className: css$
|
|
8599
|
+
className: css$26.summary,
|
|
8400
8600
|
children: [
|
|
8401
8601
|
jsx(NodeField, {
|
|
8402
8602
|
field,
|
|
@@ -8404,11 +8604,11 @@ function JsonTreeNode({ collapsedStringLines, stringWrapping, field, initialExpa
|
|
|
8404
8604
|
onToggle: toggle
|
|
8405
8605
|
}),
|
|
8406
8606
|
jsx("span", {
|
|
8407
|
-
className: css$
|
|
8607
|
+
className: css$26.preview,
|
|
8408
8608
|
children: previewValue(value, 0)
|
|
8409
8609
|
}),
|
|
8410
8610
|
!lastElement && jsx("span", {
|
|
8411
|
-
className: css$
|
|
8611
|
+
className: css$26.punctuation,
|
|
8412
8612
|
children: ","
|
|
8413
8613
|
})
|
|
8414
8614
|
]
|
|
@@ -8416,7 +8616,7 @@ function JsonTreeNode({ collapsedStringLines, stringWrapping, field, initialExpa
|
|
|
8416
8616
|
expanded && jsx("ul", {
|
|
8417
8617
|
id: contentsId,
|
|
8418
8618
|
role: "group",
|
|
8419
|
-
className: css$
|
|
8619
|
+
className: css$26.children,
|
|
8420
8620
|
children: entries.map(([key, item], index) => jsx(JsonTreeNode, {
|
|
8421
8621
|
collapsedStringLines,
|
|
8422
8622
|
stringWrapping,
|
|
@@ -8548,17 +8748,17 @@ function JsonTree({ data, label, className, collapsedStringLines = 3, stringWrap
|
|
|
8548
8748
|
onClose: clearCopyTarget
|
|
8549
8749
|
}) : void 0;
|
|
8550
8750
|
return jsx("div", {
|
|
8551
|
-
className: clsx(css$
|
|
8751
|
+
className: clsx(css$26.root, className),
|
|
8552
8752
|
style: { "--json-tree-collapsed-lines": collapsedStringLines },
|
|
8553
8753
|
onMouseOver: handleRootMouseOver,
|
|
8554
8754
|
onMouseLeave: () => {
|
|
8555
8755
|
if (!copyStore.get()?.menuOpen) clearCopyTarget();
|
|
8556
8756
|
},
|
|
8557
8757
|
children: expandTopLevel ? jsxs("div", {
|
|
8558
|
-
className: css$
|
|
8758
|
+
className: css$26.expandedTopLevel,
|
|
8559
8759
|
children: [
|
|
8560
8760
|
jsxs("div", {
|
|
8561
|
-
className: clsx(css$
|
|
8761
|
+
className: clsx(css$26.row, css$26.topLevelBracket),
|
|
8562
8762
|
"data-json-root-row": true,
|
|
8563
8763
|
onMouseOver: (event) => {
|
|
8564
8764
|
event.stopPropagation();
|
|
@@ -8571,13 +8771,13 @@ function JsonTree({ data, label, className, collapsedStringLines = 3, stringWrap
|
|
|
8571
8771
|
path: [],
|
|
8572
8772
|
value: data
|
|
8573
8773
|
}), jsx("span", {
|
|
8574
|
-
className: css$
|
|
8774
|
+
className: css$26.punctuation,
|
|
8575
8775
|
children: rootOpen
|
|
8576
8776
|
})]
|
|
8577
8777
|
}),
|
|
8578
8778
|
jsx("div", {
|
|
8579
8779
|
"aria-label": label,
|
|
8580
|
-
className: clsx(css$
|
|
8780
|
+
className: clsx(css$26.container, css$26.expandedTopLevelContainer),
|
|
8581
8781
|
role: "tree",
|
|
8582
8782
|
children: rootEntries.map(([key, value], index) => jsx(JsonTreeNode, {
|
|
8583
8783
|
collapsedStringLines,
|
|
@@ -8595,16 +8795,16 @@ function JsonTree({ data, label, className, collapsedStringLines = 3, stringWrap
|
|
|
8595
8795
|
}, key))
|
|
8596
8796
|
}),
|
|
8597
8797
|
jsx("div", {
|
|
8598
|
-
className: clsx(css$
|
|
8798
|
+
className: clsx(css$26.row, css$26.topLevelBracket),
|
|
8599
8799
|
children: jsx("span", {
|
|
8600
|
-
className: css$
|
|
8800
|
+
className: css$26.punctuation,
|
|
8601
8801
|
children: rootClose
|
|
8602
8802
|
})
|
|
8603
8803
|
})
|
|
8604
8804
|
]
|
|
8605
8805
|
}) : jsx("div", {
|
|
8606
8806
|
"aria-label": label,
|
|
8607
|
-
className: css$
|
|
8807
|
+
className: css$26.container,
|
|
8608
8808
|
role: "tree",
|
|
8609
8809
|
children: jsx(JsonTreeNode, {
|
|
8610
8810
|
collapsedStringLines,
|
|
@@ -9167,67 +9367,67 @@ function TerminalBlock({ command, cwd, home, output, exitCode, signal, running =
|
|
|
9167
9367
|
const { hidden, capped, headLines, tailLines } = headTailCap(lines.length, maxLines, expanded);
|
|
9168
9368
|
const body = !running || !empty;
|
|
9169
9369
|
return jsxs("div", {
|
|
9170
|
-
className: clsx(css$
|
|
9370
|
+
className: clsx(css$27.block, className),
|
|
9171
9371
|
"data-terminal": "",
|
|
9172
9372
|
"data-running": running ? "" : void 0,
|
|
9173
9373
|
"data-body": body ? "" : void 0,
|
|
9174
9374
|
children: [jsxs("div", {
|
|
9175
|
-
className: css$
|
|
9375
|
+
className: css$27.header,
|
|
9176
9376
|
children: [
|
|
9177
9377
|
jsxs("div", {
|
|
9178
|
-
className: css$
|
|
9378
|
+
className: css$27.prompt,
|
|
9179
9379
|
children: [runStateDot && jsx("span", {
|
|
9180
|
-
className: css$
|
|
9380
|
+
className: css$27.runStateLabel,
|
|
9181
9381
|
children: state.label
|
|
9182
9382
|
}), commandLines.map((line, index) => jsxs("div", {
|
|
9183
|
-
className: css$
|
|
9383
|
+
className: css$27.promptLine,
|
|
9184
9384
|
children: [
|
|
9185
9385
|
index === 0 && runStateDot && jsx(StateDot, {
|
|
9186
9386
|
state: state.state,
|
|
9187
|
-
className: css$
|
|
9387
|
+
className: css$27.runState
|
|
9188
9388
|
}),
|
|
9189
9389
|
jsx("span", {
|
|
9190
|
-
className: css$
|
|
9390
|
+
className: css$27.cwd,
|
|
9191
9391
|
children: index > 0 || cwd === void 0 ? "$" : promptLabel(cwd, home)
|
|
9192
9392
|
}),
|
|
9193
9393
|
jsx("span", {
|
|
9194
|
-
className: css$
|
|
9394
|
+
className: css$27.command,
|
|
9195
9395
|
children: line
|
|
9196
9396
|
})
|
|
9197
9397
|
]
|
|
9198
9398
|
}, index))]
|
|
9199
9399
|
}),
|
|
9200
9400
|
status !== void 0 && jsx(Pill, {
|
|
9201
|
-
className: css$
|
|
9401
|
+
className: css$27.status,
|
|
9202
9402
|
children: status
|
|
9203
9403
|
}),
|
|
9204
9404
|
(copyText !== void 0 || !running && !empty) && jsx("button", {
|
|
9205
9405
|
type: "button",
|
|
9206
|
-
className: css$
|
|
9406
|
+
className: css$27.copyButton,
|
|
9207
9407
|
onClick: onCopy,
|
|
9208
9408
|
children: copied ? copy.copied : copy.copy
|
|
9209
9409
|
})
|
|
9210
9410
|
]
|
|
9211
9411
|
}), body && (empty ? jsx("div", {
|
|
9212
|
-
className: css$
|
|
9412
|
+
className: css$27.empty,
|
|
9213
9413
|
children: copy.noOutput
|
|
9214
9414
|
}) : jsxs("div", {
|
|
9215
|
-
className: css$
|
|
9415
|
+
className: css$27.output,
|
|
9216
9416
|
children: [
|
|
9217
9417
|
(capped ? lines.slice(0, headLines) : lines).map((line, index) => jsx("div", {
|
|
9218
|
-
className: css$
|
|
9418
|
+
className: css$27.line,
|
|
9219
9419
|
children: renderLine$1(line)
|
|
9220
9420
|
}, index)),
|
|
9221
9421
|
hidden > 0 && jsx("button", {
|
|
9222
9422
|
type: "button",
|
|
9223
|
-
className: css$
|
|
9423
|
+
className: css$27.expand,
|
|
9224
9424
|
"aria-expanded": expanded,
|
|
9225
9425
|
"aria-label": expanded ? copy.collapseAria : copy.expandAria(hidden),
|
|
9226
9426
|
onClick: onToggle,
|
|
9227
9427
|
children: expanded ? copy.collapse : copy.expand(hidden)
|
|
9228
9428
|
}),
|
|
9229
9429
|
capped && lines.slice(lines.length - tailLines).map((line, index) => jsx("div", {
|
|
9230
|
-
className: css$
|
|
9430
|
+
className: css$27.line,
|
|
9231
9431
|
children: renderLine$1(line)
|
|
9232
9432
|
}, index))
|
|
9233
9433
|
]
|
|
@@ -9430,13 +9630,13 @@ function ReadBlock({ label, labels, lines, totalLines, lang, maxLines = 16, clas
|
|
|
9430
9630
|
const tailLines = maxLines - headLines;
|
|
9431
9631
|
const windowed = lines.length < totalLines;
|
|
9432
9632
|
const rows = (slice) => slice.map(([line, spans]) => jsxs("div", {
|
|
9433
|
-
className: css$
|
|
9633
|
+
className: css$28.line,
|
|
9434
9634
|
children: [jsx("span", {
|
|
9435
|
-
className: css$
|
|
9635
|
+
className: css$28.gutter,
|
|
9436
9636
|
"aria-hidden": true,
|
|
9437
9637
|
children: line.number
|
|
9438
9638
|
}), jsx("span", {
|
|
9439
|
-
className: css$
|
|
9639
|
+
className: css$28.content,
|
|
9440
9640
|
children: spans === void 0 ? line.text : renderSpans(spans)
|
|
9441
9641
|
})]
|
|
9442
9642
|
}, line.number));
|
|
@@ -9444,7 +9644,7 @@ function ReadBlock({ label, labels, lines, totalLines, lang, maxLines = 16, clas
|
|
|
9444
9644
|
const paired = lines.map((line, index) => [line, highlighted?.[index]]);
|
|
9445
9645
|
return jsxs("div", {
|
|
9446
9646
|
ref: rootRef,
|
|
9447
|
-
className: clsx(cardCss.card, css$
|
|
9647
|
+
className: clsx(cardCss.card, css$28.block, className),
|
|
9448
9648
|
"data-read": "",
|
|
9449
9649
|
"data-code-wrap": wrapped,
|
|
9450
9650
|
style: gutterStyle,
|
|
@@ -9466,7 +9666,7 @@ function ReadBlock({ label, labels, lines, totalLines, lang, maxLines = 16, clas
|
|
|
9466
9666
|
children: [
|
|
9467
9667
|
rows(capped ? paired.slice(0, headLines) : paired),
|
|
9468
9668
|
hidden > 0 && jsx(FoldToggle, {
|
|
9469
|
-
className: css$
|
|
9669
|
+
className: css$28.expand,
|
|
9470
9670
|
expanded,
|
|
9471
9671
|
hidden,
|
|
9472
9672
|
labels,
|
|
@@ -9488,11 +9688,11 @@ function assertNever(value) {
|
|
|
9488
9688
|
}
|
|
9489
9689
|
/** The dim class per row kind (path/gap chrome vs the diff's own +/- colors). */
|
|
9490
9690
|
const ROW_CLASS = {
|
|
9491
|
-
path: css$
|
|
9492
|
-
del: css$
|
|
9493
|
-
add: css$
|
|
9494
|
-
context: css$
|
|
9495
|
-
gap: css$
|
|
9691
|
+
path: css$29.path,
|
|
9692
|
+
del: css$29.del,
|
|
9693
|
+
add: css$29.add,
|
|
9694
|
+
context: css$29.context,
|
|
9695
|
+
gap: css$29.gap
|
|
9496
9696
|
};
|
|
9497
9697
|
/** Bound synchronous edit-graph search; one replacement consumes two edits. */
|
|
9498
9698
|
const MAX_DIFF_EDIT_LENGTH = 256;
|
|
@@ -9626,7 +9826,7 @@ function DiffBlock({ diffs, labels, maxLines = 16, className }) {
|
|
|
9626
9826
|
const head = capped ? rows.slice(0, headLines) : rows;
|
|
9627
9827
|
const tail = capped ? rows.slice(rows.length - tailLines) : [];
|
|
9628
9828
|
return jsxs("div", {
|
|
9629
|
-
className: clsx(cardCss.card, css$
|
|
9829
|
+
className: clsx(cardCss.card, css$29.block, className),
|
|
9630
9830
|
"data-diff": "",
|
|
9631
9831
|
"data-code-wrap": wrapped,
|
|
9632
9832
|
children: [jsx(CodeToolbar, {
|
|
@@ -9641,21 +9841,21 @@ function DiffBlock({ diffs, labels, maxLines = 16, className }) {
|
|
|
9641
9841
|
setWrapped((value) => !value);
|
|
9642
9842
|
}
|
|
9643
9843
|
}), jsxs("div", {
|
|
9644
|
-
className: css$
|
|
9844
|
+
className: css$29.body,
|
|
9645
9845
|
children: [
|
|
9646
9846
|
head.map((row, index) => jsx("div", {
|
|
9647
|
-
className: clsx(css$
|
|
9847
|
+
className: clsx(css$29.line, ROW_CLASS[row.kind]),
|
|
9648
9848
|
children: row.text
|
|
9649
9849
|
}, index)),
|
|
9650
9850
|
hidden > 0 && jsx(FoldToggle, {
|
|
9651
|
-
className: css$
|
|
9851
|
+
className: css$29.expand,
|
|
9652
9852
|
expanded,
|
|
9653
9853
|
hidden,
|
|
9654
9854
|
labels,
|
|
9655
9855
|
onToggle
|
|
9656
9856
|
}),
|
|
9657
9857
|
tail.map((row, index) => jsx("div", {
|
|
9658
|
-
className: clsx(css$
|
|
9858
|
+
className: clsx(css$29.line, ROW_CLASS[row.kind]),
|
|
9659
9859
|
children: row.text
|
|
9660
9860
|
}, index))
|
|
9661
9861
|
]
|
|
@@ -9785,56 +9985,56 @@ function SearchBlock(props) {
|
|
|
9785
9985
|
const tail = tailHeader === void 0 ? naturalTail : naturalTail.slice(1);
|
|
9786
9986
|
const renderRow = (row) => {
|
|
9787
9987
|
if (row.type === "path") return jsx("div", {
|
|
9788
|
-
className: css$
|
|
9988
|
+
className: css$30.line,
|
|
9789
9989
|
children: row.path
|
|
9790
9990
|
});
|
|
9791
9991
|
if (row.type === "match") return jsxs("div", {
|
|
9792
|
-
className: css$
|
|
9992
|
+
className: css$30.line,
|
|
9793
9993
|
children: [jsxs("span", {
|
|
9794
|
-
className: css$
|
|
9994
|
+
className: css$30.lineNumber,
|
|
9795
9995
|
children: [row.lineNumber, ": "]
|
|
9796
9996
|
}), row.line]
|
|
9797
9997
|
});
|
|
9798
9998
|
return jsxs("button", {
|
|
9799
9999
|
type: "button",
|
|
9800
|
-
className: css$
|
|
10000
|
+
className: css$30.fileHeader,
|
|
9801
10001
|
"aria-expanded": !row.collapsed,
|
|
9802
10002
|
onClick: () => {
|
|
9803
10003
|
toggleFile(row.index);
|
|
9804
10004
|
},
|
|
9805
10005
|
children: [jsx("span", {
|
|
9806
|
-
className: css$
|
|
10006
|
+
className: css$30.filePath,
|
|
9807
10007
|
children: row.path
|
|
9808
10008
|
}), jsx("span", {
|
|
9809
|
-
className: css$
|
|
10009
|
+
className: css$30.fileCount,
|
|
9810
10010
|
children: row.count
|
|
9811
10011
|
})]
|
|
9812
10012
|
});
|
|
9813
10013
|
};
|
|
9814
10014
|
return jsxs("div", {
|
|
9815
|
-
className: clsx(css$
|
|
10015
|
+
className: clsx(css$30.block, className),
|
|
9816
10016
|
"data-search": props.kind,
|
|
9817
10017
|
children: [jsxs("div", {
|
|
9818
|
-
className: css$
|
|
10018
|
+
className: css$30.header,
|
|
9819
10019
|
children: [jsx("span", {
|
|
9820
|
-
className: css$
|
|
10020
|
+
className: css$30.summary,
|
|
9821
10021
|
children: summaryText(props, shown, truncated, total)
|
|
9822
10022
|
}), !empty && jsx("button", {
|
|
9823
10023
|
type: "button",
|
|
9824
|
-
className: css$
|
|
10024
|
+
className: css$30.copyButton,
|
|
9825
10025
|
onClick: onCopy,
|
|
9826
10026
|
children: copied ? props.labels.copied : props.labels.copy
|
|
9827
10027
|
})]
|
|
9828
10028
|
}), empty ? jsx("div", {
|
|
9829
|
-
className: css$
|
|
10029
|
+
className: css$30.empty,
|
|
9830
10030
|
children: props.labels.noResults
|
|
9831
10031
|
}) : jsxs("div", {
|
|
9832
|
-
className: css$
|
|
10032
|
+
className: css$30.body,
|
|
9833
10033
|
children: [
|
|
9834
10034
|
head.map((row) => jsx("div", { children: renderRow(row) }, rowKey(row))),
|
|
9835
10035
|
hidden > 0 && jsx("button", {
|
|
9836
10036
|
type: "button",
|
|
9837
|
-
className: css$
|
|
10037
|
+
className: css$30.expand,
|
|
9838
10038
|
"aria-expanded": expanded,
|
|
9839
10039
|
"aria-label": expanded ? props.labels.collapseAria : props.labels.expandAria(hidden),
|
|
9840
10040
|
onClick: onToggle,
|
|
@@ -10664,7 +10864,7 @@ function CodeBlock({ code, lang, streaming, className, contentRef, lineNumbers =
|
|
|
10664
10864
|
});
|
|
10665
10865
|
}, [copied, trimmed]);
|
|
10666
10866
|
const body = streamedBody !== void 0 ? streamedBody : html === void 0 ? jsx("pre", {
|
|
10667
|
-
className: css$
|
|
10867
|
+
className: css$31.plain,
|
|
10668
10868
|
children: jsx("code", { children: sourceLines === void 0 ? trimmed : sourceLines.map((line, index) => jsxs(Fragment$1, { children: [index > 0 && "\n", jsx("span", {
|
|
10669
10869
|
className: "line",
|
|
10670
10870
|
children: line
|
|
@@ -10672,12 +10872,12 @@ function CodeBlock({ code, lang, streaming, className, contentRef, lineNumbers =
|
|
|
10672
10872
|
}) : jsx("div", { dangerouslySetInnerHTML: { __html: html } });
|
|
10673
10873
|
return jsxs("div", {
|
|
10674
10874
|
ref: rootRef,
|
|
10675
|
-
className: clsx(css$
|
|
10875
|
+
className: clsx(css$31.block, "md-code-block", lineNumbers && css$31.numbered, toolbarLabels !== void 0 && css$31.card, className),
|
|
10676
10876
|
"data-line-numbers": lineNumbers || void 0,
|
|
10677
10877
|
"data-code-wrap": toolbarLabels === void 0 ? void 0 : wrapped,
|
|
10678
10878
|
style: sourceLines === void 0 ? void 0 : { "--dsl-code-block-line-number-width": `${Math.max(2, String(sourceLines.length).length)}ch` },
|
|
10679
10879
|
children: [showHeader && jsx("div", {
|
|
10680
|
-
className: css$
|
|
10880
|
+
className: css$31.bannerWrap,
|
|
10681
10881
|
children: toolbarLabels !== void 0 ? jsx(CodeToolbar, {
|
|
10682
10882
|
lang,
|
|
10683
10883
|
labels: toolbarLabels,
|
|
@@ -10690,16 +10890,16 @@ function CodeBlock({ code, lang, streaming, className, contentRef, lineNumbers =
|
|
|
10690
10890
|
setWrapped((value) => !value);
|
|
10691
10891
|
} : void 0
|
|
10692
10892
|
}) : jsxs("div", {
|
|
10693
|
-
className: css$
|
|
10893
|
+
className: css$31.banner,
|
|
10694
10894
|
"data-code-block-banner": true,
|
|
10695
10895
|
children: [jsx("div", {
|
|
10696
|
-
className: css$
|
|
10896
|
+
className: css$31.infostring,
|
|
10697
10897
|
children: lang ?? ""
|
|
10698
10898
|
}), jsx("div", {
|
|
10699
|
-
className: css$
|
|
10899
|
+
className: css$31.action,
|
|
10700
10900
|
children: jsx("button", {
|
|
10701
10901
|
type: "button",
|
|
10702
|
-
className: css$
|
|
10902
|
+
className: css$31.copyButton,
|
|
10703
10903
|
onClick: onCopy,
|
|
10704
10904
|
children: copied ? copiedLabel : copyLabel
|
|
10705
10905
|
})
|
|
@@ -10707,7 +10907,7 @@ function CodeBlock({ code, lang, streaming, className, contentRef, lineNumbers =
|
|
|
10707
10907
|
})
|
|
10708
10908
|
}), jsx("div", {
|
|
10709
10909
|
ref: contentRef,
|
|
10710
|
-
className: css$
|
|
10910
|
+
className: css$31.content,
|
|
10711
10911
|
"data-code-block-content": true,
|
|
10712
10912
|
children: body
|
|
10713
10913
|
})]
|
|
@@ -10897,25 +11097,25 @@ function ImageLightbox({ src, alt, labels, onClose }) {
|
|
|
10897
11097
|
};
|
|
10898
11098
|
}, [onClose]);
|
|
10899
11099
|
return createPortal(jsxs("div", {
|
|
10900
|
-
className: css$
|
|
11100
|
+
className: css$32.backdrop,
|
|
10901
11101
|
role: "dialog",
|
|
10902
11102
|
"aria-modal": "true",
|
|
10903
11103
|
"aria-label": labels.dialog,
|
|
10904
11104
|
children: [
|
|
10905
11105
|
jsx("div", {
|
|
10906
|
-
className: css$
|
|
11106
|
+
className: css$32.mask,
|
|
10907
11107
|
"aria-hidden": "true",
|
|
10908
11108
|
onMouseDown: onClose
|
|
10909
11109
|
}),
|
|
10910
11110
|
jsx("img", {
|
|
10911
|
-
className: css$
|
|
11111
|
+
className: css$32.image,
|
|
10912
11112
|
src,
|
|
10913
11113
|
alt
|
|
10914
11114
|
}),
|
|
10915
11115
|
jsx("button", {
|
|
10916
11116
|
ref: closeRef,
|
|
10917
11117
|
type: "button",
|
|
10918
|
-
className: css$
|
|
11118
|
+
className: css$32.close,
|
|
10919
11119
|
"aria-label": labels.close,
|
|
10920
11120
|
onClick: onClose,
|
|
10921
11121
|
children: jsx(IconCloseOutlineRegular, { size: 16 })
|
|
@@ -10942,14 +11142,14 @@ function ImagePreview({ src, alt, loadingLabel, failedLabel }) {
|
|
|
10942
11142
|
function Preview({ src, alt, loadingLabel, failedLabel }) {
|
|
10943
11143
|
const [state, setState] = useState("loading");
|
|
10944
11144
|
return jsxs("span", {
|
|
10945
|
-
className: css$
|
|
11145
|
+
className: css$33.frame,
|
|
10946
11146
|
children: [state !== "failed" && jsx("img", {
|
|
10947
11147
|
src,
|
|
10948
11148
|
alt,
|
|
10949
11149
|
loading: "lazy",
|
|
10950
11150
|
decoding: "async",
|
|
10951
11151
|
referrerPolicy: "no-referrer",
|
|
10952
|
-
className: css$
|
|
11152
|
+
className: css$33.image,
|
|
10953
11153
|
"data-ready": state === "ready" || void 0,
|
|
10954
11154
|
onLoad: () => {
|
|
10955
11155
|
setState("ready");
|
|
@@ -10958,7 +11158,7 @@ function Preview({ src, alt, loadingLabel, failedLabel }) {
|
|
|
10958
11158
|
setState("failed");
|
|
10959
11159
|
}
|
|
10960
11160
|
}), state !== "ready" && jsxs("span", {
|
|
10961
|
-
className: css$
|
|
11161
|
+
className: css$33.status,
|
|
10962
11162
|
role: "status",
|
|
10963
11163
|
children: [state === "loading" && jsx(IconLoadingOutlineRegular, { size: 16 }), jsx("span", { children: state === "loading" ? loadingLabel : failedLabel })]
|
|
10964
11164
|
})]
|
|
@@ -11697,7 +11897,7 @@ function SafeLink({ url, label, className }) {
|
|
|
11697
11897
|
children: [jsx(LinkIconMedium, {
|
|
11698
11898
|
kind: "url",
|
|
11699
11899
|
href,
|
|
11700
|
-
className: css$
|
|
11900
|
+
className: css$34.linkIcon
|
|
11701
11901
|
}), label]
|
|
11702
11902
|
});
|
|
11703
11903
|
}
|
|
@@ -11712,20 +11912,20 @@ function SafeLink({ url, label, className }) {
|
|
|
11712
11912
|
*/
|
|
11713
11913
|
function SourceItem({ source, ordinal }) {
|
|
11714
11914
|
return jsxs("li", {
|
|
11715
|
-
className: css$
|
|
11915
|
+
className: css$34.source,
|
|
11716
11916
|
value: ordinal,
|
|
11717
11917
|
children: [
|
|
11718
11918
|
jsx(SafeLink, {
|
|
11719
11919
|
url: source.url,
|
|
11720
11920
|
label: linkLabel(source.url, source.title),
|
|
11721
|
-
className: css$
|
|
11921
|
+
className: css$34.sourceLink
|
|
11722
11922
|
}),
|
|
11723
11923
|
source.snippet !== void 0 && source.snippet !== "" && jsx("div", {
|
|
11724
|
-
className: css$
|
|
11924
|
+
className: css$34.snippet,
|
|
11725
11925
|
children: source.snippet
|
|
11726
11926
|
}),
|
|
11727
11927
|
source.publishedAt !== void 0 && source.publishedAt !== "" && jsx("div", {
|
|
11728
|
-
className: css$
|
|
11928
|
+
className: css$34.published,
|
|
11729
11929
|
children: source.publishedAt
|
|
11730
11930
|
})
|
|
11731
11931
|
]
|
|
@@ -11740,28 +11940,28 @@ function SourceItem({ source, ordinal }) {
|
|
|
11740
11940
|
function WebSearchBlock({ answer, sources, truncated, labels, className }) {
|
|
11741
11941
|
const empty = (answer === void 0 || answer === "") && sources.length === 0;
|
|
11742
11942
|
return jsxs("div", {
|
|
11743
|
-
className: clsx(css$
|
|
11943
|
+
className: clsx(css$34.block, className),
|
|
11744
11944
|
"data-web": "search",
|
|
11745
11945
|
children: [
|
|
11746
11946
|
answer !== void 0 && answer !== "" && jsx("div", {
|
|
11747
|
-
className: css$
|
|
11947
|
+
className: css$34.answer,
|
|
11748
11948
|
children: jsx(MarkdownText, {
|
|
11749
11949
|
text: answer,
|
|
11750
11950
|
labels: labels.markdown
|
|
11751
11951
|
})
|
|
11752
11952
|
}),
|
|
11753
11953
|
empty ? jsx("div", {
|
|
11754
|
-
className: css$
|
|
11954
|
+
className: css$34.empty,
|
|
11755
11955
|
children: labels.noResults
|
|
11756
11956
|
}) : jsx("ol", {
|
|
11757
|
-
className: css$
|
|
11957
|
+
className: css$34.sources,
|
|
11758
11958
|
children: sources.map((source, index) => jsx(SourceItem, {
|
|
11759
11959
|
source,
|
|
11760
11960
|
ordinal: index + 1
|
|
11761
11961
|
}, index))
|
|
11762
11962
|
}),
|
|
11763
11963
|
truncated && jsx("div", {
|
|
11764
|
-
className: css$
|
|
11964
|
+
className: css$34.truncated,
|
|
11765
11965
|
children: labels.sourcesTruncated
|
|
11766
11966
|
})
|
|
11767
11967
|
]
|
|
@@ -11774,23 +11974,23 @@ function WebSearchBlock({ answer, sources, truncated, labels, className }) {
|
|
|
11774
11974
|
*/
|
|
11775
11975
|
function WebFetchBlock({ url, statusCode, truncated, labels, className }) {
|
|
11776
11976
|
return jsxs("div", {
|
|
11777
|
-
className: clsx(css$
|
|
11977
|
+
className: clsx(css$34.block, css$34.fetch, className),
|
|
11778
11978
|
"data-web": "fetch",
|
|
11779
11979
|
children: [jsx(SafeLink, {
|
|
11780
11980
|
url,
|
|
11781
11981
|
label: url,
|
|
11782
|
-
className: css$
|
|
11982
|
+
className: css$34.fetchUrl
|
|
11783
11983
|
}), jsxs("div", {
|
|
11784
|
-
className: css$
|
|
11984
|
+
className: css$34.fetchMeta,
|
|
11785
11985
|
children: [jsxs("span", {
|
|
11786
|
-
className: css$
|
|
11986
|
+
className: css$34.status,
|
|
11787
11987
|
children: [
|
|
11788
11988
|
labels.http,
|
|
11789
11989
|
" ",
|
|
11790
11990
|
statusCode
|
|
11791
11991
|
]
|
|
11792
11992
|
}), truncated && jsx("span", {
|
|
11793
|
-
className: css$
|
|
11993
|
+
className: css$34.truncated,
|
|
11794
11994
|
children: labels.contentTruncated
|
|
11795
11995
|
})]
|
|
11796
11996
|
})]
|
|
@@ -11824,10 +12024,10 @@ function JsonBlock({ label, payload, defaultOpen = false, truncatedLabel }) {
|
|
|
11824
12024
|
truncatedLabel
|
|
11825
12025
|
]);
|
|
11826
12026
|
return jsxs("div", {
|
|
11827
|
-
className: css$
|
|
12027
|
+
className: css$35.root,
|
|
11828
12028
|
children: [jsxs("button", {
|
|
11829
12029
|
type: "button",
|
|
11830
|
-
className: css$
|
|
12030
|
+
className: css$35.toggle,
|
|
11831
12031
|
onClick: () => {
|
|
11832
12032
|
setOpen((v) => !v);
|
|
11833
12033
|
},
|
|
@@ -11837,7 +12037,7 @@ function JsonBlock({ label, payload, defaultOpen = false, truncatedLabel }) {
|
|
|
11837
12037
|
label
|
|
11838
12038
|
]
|
|
11839
12039
|
}), open && jsx("pre", {
|
|
11840
|
-
className: css$
|
|
12040
|
+
className: css$35.body,
|
|
11841
12041
|
children: body
|
|
11842
12042
|
})]
|
|
11843
12043
|
});
|
|
@@ -12058,7 +12258,7 @@ const PluginArtworkSearch = ({ size = 36, className }) => {
|
|
|
12058
12258
|
children: [
|
|
12059
12259
|
jsx("path", {
|
|
12060
12260
|
d: "M26.5362 26.9865L22.3813 22.8317",
|
|
12061
|
-
stroke: "#
|
|
12261
|
+
stroke: "#658EFF",
|
|
12062
12262
|
strokeWidth: "3"
|
|
12063
12263
|
}),
|
|
12064
12264
|
jsx("g", {
|
|
@@ -12071,7 +12271,7 @@ const PluginArtworkSearch = ({ size = 36, className }) => {
|
|
|
12071
12271
|
width: "1917.88",
|
|
12072
12272
|
height: "1917.88",
|
|
12073
12273
|
children: jsx("div", { style: {
|
|
12074
|
-
background: "conic-gradient(from 90deg, rgb(65, 225, 172) 0deg, rgb(
|
|
12274
|
+
background: "conic-gradient(from 90deg, rgb(65, 225, 172) 0deg, rgb(101, 142, 255) 62.0619deg, rgb(65, 225, 172) 360deg)",
|
|
12075
12275
|
height: "100%",
|
|
12076
12276
|
width: "100%"
|
|
12077
12277
|
} })
|
|
@@ -12178,6 +12378,6 @@ function GuideArtworkFiles({ size = 36, className }) {
|
|
|
12178
12378
|
});
|
|
12179
12379
|
}
|
|
12180
12380
|
//#endregion
|
|
12181
|
-
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, projectUserText, rankByName, relativeTime, settingsNumberField, settingsTextField, useAnchoredMaxHeight, useAnchoredPosition, useCodeHighlighter, useDismissOnOutsidePointer, useModalLayer, writeClipboard };
|
|
12381
|
+
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, 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 };
|
|
12182
12382
|
|
|
12183
12383
|
//# sourceMappingURL=index.js.map
|