@seekbuddy/dsh-ui 0.2.0-beta.0 → 0.2.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +34 -0
- package/README.md +1 -1
- package/README.zh.md +1 -1
- package/THIRD_PARTY_NOTICES.md +1 -1
- package/UPSTREAM.md +7 -4
- package/dist/blocks.js +170 -135
- package/dist/chunks/{chunk-VIH56PDF.js → chunk-6SGSJ5KW.js} +2 -2
- package/dist/chunks/{chunk-QJKAQ6PO.js → chunk-7NH2UOZO.js} +2 -2
- package/dist/chunks/{chunk-KETGFAOH.js → chunk-7SKW4S35.js} +2 -2
- package/dist/chunks/chunk-ENKPNYOB.js +26 -0
- package/dist/chunks/{chunk-WUL523OW.js → chunk-EWAZFWLW.js} +1 -1
- package/dist/chunks/{chunk-5JXG4BHW.js → chunk-FFJ6TCCF.js} +1 -1
- package/dist/chunks/{chunk-R6AUJQ3G.js → chunk-FZXK4LTI.js} +1 -1
- package/dist/chunks/chunk-JA3XDLIA.js +1115 -0
- package/dist/chunks/{chunk-TUK6UGXM.js → chunk-L7XALG4J.js} +1 -1
- package/dist/chunks/{chunk-AY44MQMD.js → chunk-OCAQFVT3.js} +180 -60
- package/dist/chunks/{chunk-CI73NXA5.js → chunk-RAXDA2PT.js} +4 -4
- package/dist/chunks/{chunk-5XDVPALS.js → chunk-SN6RSUWC.js} +1 -1
- package/dist/chunks/{chunk-CTQPGUZP.js → chunk-SNVSQWCU.js} +1 -1
- package/dist/chunks/{chunk-ZZNL5PWF.js → chunk-SO3DCAWG.js} +2 -2
- package/dist/chunks/{chunk-IOBKTEKP.js → chunk-UAEFKTV3.js} +1 -1
- package/dist/chunks/{chunk-NE62SYOZ.js → chunk-UGEORMLD.js} +2 -2
- package/dist/chunks/{chunk-TQU54HSM.js → chunk-W6FLI3AK.js} +1 -1
- package/dist/chunks/{chunk-TZ7HRE6D.js → chunk-WX46TSKP.js} +1 -1
- package/dist/chunks/{chunk-XX6MSZLS.js → chunk-XL33IPCV.js} +1 -1
- package/dist/chunks/chunk-XW4L4ZGL.js +967 -0
- package/dist/chunks/chunk-YOBY6PSL.js +850 -0
- package/dist/icons.js +58 -2
- package/dist/index.js +810 -317
- package/dist/markdown.js +84 -7
- package/dist/meta.json +1038 -339
- package/dist/root-inputs.json +20 -1
- package/dist/seekbuddy-card.js +1 -1
- package/dist/seekbuddy-empty.js +2 -2
- package/dist/seekbuddy-internal/Message.js +2 -2
- package/dist/seekbuddy-internal/Pagination.js +1 -1
- package/dist/seekbuddy-internal/StatusBadge.js +1 -1
- package/dist/seekbuddy-internal/Switch.js +1 -1
- package/dist/seekbuddy-internal/Upload.js +1 -1
- package/dist/seekbuddy-internal/date/Calendar.js +1 -1
- package/dist/seekbuddy-internal/date/DatePicker.js +2 -2
- package/dist/seekbuddy-internal/date/DateRangePicker.js +2 -2
- package/dist/seekbuddy-internal/date/TimePicker.js +1 -1
- package/dist/seekbuddy-internal/date/fields.js +5 -5
- package/dist/seekbuddy-spinner.js +1 -1
- package/dist/seekbuddy-tabs.js +1 -1
- package/dist/seekbuddy-timeline.js +2 -2
- package/dist/seekbuddy.js +15 -15
- package/dist/tokens.css +60 -20
- package/dist/types/AnimatedRows.d.ts +45 -0
- package/dist/types/Button.d.ts +1 -1
- package/dist/types/CommandText.d.ts +15 -0
- package/dist/types/DetailDocument.d.ts +77 -0
- package/dist/types/DisclosureRow.d.ts +4 -2
- package/dist/types/DraggableImage.d.ts +18 -0
- package/dist/types/HoverCard.d.ts +11 -3
- package/dist/types/HoverCardGroup.d.ts +24 -0
- package/dist/types/ImageLightbox.d.ts +4 -1
- package/dist/types/InlineEditor.d.ts +22 -0
- package/dist/types/Menu.d.ts +30 -9
- package/dist/types/MenuSurface.d.ts +9 -0
- package/dist/types/PermissionIcon.d.ts +12 -0
- package/dist/types/QuotePreview.d.ts +23 -0
- package/dist/types/SegmentedTabs.d.ts +3 -1
- package/dist/types/TerminalBlock.d.ts +10 -2
- package/dist/types/Tooltip.d.ts +21 -15
- package/dist/types/UserMessageBubble.d.ts +10 -0
- package/dist/types/ZoomControls.d.ts +26 -0
- package/dist/types/blocks.d.ts +2 -0
- package/dist/types/document-zoom.d.ts +16 -0
- package/dist/types/file-drag-actions.d.ts +36 -0
- package/dist/types/focus.d.ts +7 -0
- package/dist/types/icons/artwork.d.ts +421 -0
- package/dist/types/icons/index.d.ts +205 -192
- package/dist/types/icons/shared-artwork.d.ts +6 -12
- package/dist/types/icons.d.ts +1 -1
- package/dist/types/image-drag.d.ts +16 -0
- package/dist/types/index.d.ts +21 -3
- package/dist/types/markdown/MarkdownDelegate.d.ts +26 -3
- package/dist/types/markdown/MarkdownText.d.ts +12 -5
- package/dist/types/markdown/file-link.d.ts +13 -3
- package/dist/types/markdown/highlight.d.ts +22 -0
- package/dist/types/markdown/quote-text.d.ts +7 -0
- package/dist/types/markdown/render.d.ts +9 -4
- package/dist/types/markdown/windows-path-destinations.d.ts +10 -0
- package/dist/types/markdown.d.ts +5 -2
- package/dist/types/overlay-top-margin.d.ts +9 -2
- package/dist/types/tooltip-placement.d.ts +34 -0
- package/dist/types/use-clipboard-copy.d.ts +13 -0
- package/dist/types/useAnchoredPosition.d.ts +22 -22
- package/dist/types/useRowDragPreview.d.ts +19 -0
- package/dist/types/user-text.d.ts +26 -31
- package/package.json +2 -2
- package/dist/chunks/chunk-3HCOU44R.js +0 -697
- package/dist/chunks/chunk-LA3QDZYN.js +0 -2777
- package/dist/chunks/chunk-OQPH36OI.js +0 -754
- package/dist/types/use-copy-feedback.d.ts +0 -13
package/dist/blocks.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Menu,
|
|
3
3
|
Pill,
|
|
4
|
-
|
|
5
|
-
} from "./chunks/chunk-
|
|
4
|
+
useClipboardCopy
|
|
5
|
+
} from "./chunks/chunk-YOBY6PSL.js";
|
|
6
6
|
import {
|
|
7
7
|
CodeCard_module_default,
|
|
8
8
|
CodeToolbar,
|
|
@@ -17,15 +17,16 @@ import {
|
|
|
17
17
|
highlightLines,
|
|
18
18
|
subscribeGrammarLoaded,
|
|
19
19
|
useViewportHighlighting
|
|
20
|
-
} from "./chunks/chunk-
|
|
20
|
+
} from "./chunks/chunk-OCAQFVT3.js";
|
|
21
21
|
import {
|
|
22
|
+
StateDot,
|
|
22
23
|
writeClipboard
|
|
23
|
-
} from "./chunks/chunk-
|
|
24
|
+
} from "./chunks/chunk-JA3XDLIA.js";
|
|
24
25
|
import {
|
|
25
26
|
IconCheckOutlineRegular,
|
|
26
27
|
IconCopyOutlineRegular,
|
|
27
28
|
IconWrapLinesOutlineRegular
|
|
28
|
-
} from "./chunks/chunk-
|
|
29
|
+
} from "./chunks/chunk-XW4L4ZGL.js";
|
|
29
30
|
import "./chunks/chunk-ZA47FP7C.js";
|
|
30
31
|
|
|
31
32
|
// src/JsonTree.tsx
|
|
@@ -37,10 +38,10 @@ var id = "@seekbuddy/dsh-ui/JsonTree.module.css";
|
|
|
37
38
|
if (typeof document !== "undefined" && !document.querySelector('style[data-dsh-ui-primitives="' + id + '"]')) {
|
|
38
39
|
const element = document.createElement("style");
|
|
39
40
|
element.setAttribute("data-dsh-ui-primitives", id);
|
|
40
|
-
element.textContent = '.vOc5Ca_root{--json-tree-property:#881391;--json-tree-string:#c41a16;--json-tree-number:#1c00cf;--json-tree-keyword:#1c00cf;--json-tree-punctuation:#202124;--json-tree-icon:#5f6368;--json-tree-hover:#3c40430a;min-width:0;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-1);font:12px/16px var(--ds-font-family-code);overscroll-behavior-x:contain;overscroll-behavior-y:auto;position:relative;overflow:auto}body[data-ds-dark-theme] .vOc5Ca_root{--json-tree-property:#5db0d7;--json-tree-string:#f28b82;--json-tree-number:#99c8ff;--json-tree-keyword:#99c8ff;--json-tree-punctuation:#e8eaed;--json-tree-icon:#9aa0a6;--json-tree-hover:#e8eaed0d}.vOc5Ca_container{box-sizing:border-box;white-space:pre;width:100%;min-width:0;margin:0;padding:6px 8px 8px}.vOc5Ca_expandedTopLevel{box-sizing:border-box;width:100%;min-width:0;padding:6px 8px 8px 14px}.vOc5Ca_expandedTopLevel:has(>.vOc5Ca_topLevelBracket[data-json-root-row]:hover)
|
|
41
|
+
element.textContent = '.vOc5Ca_root{--json-tree-property:#881391;--json-tree-string:#c41a16;--json-tree-number:#1c00cf;--json-tree-keyword:#1c00cf;--json-tree-punctuation:#202124;--json-tree-icon:#5f6368;--json-tree-hover:#3c40430a;min-width:0;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-1);font:12px/16px var(--ds-font-family-code);overscroll-behavior-x:contain;overscroll-behavior-y:auto;position:relative;overflow:auto}body[data-ds-dark-theme] .vOc5Ca_root{--json-tree-property:#5db0d7;--json-tree-string:#f28b82;--json-tree-number:#99c8ff;--json-tree-keyword:#99c8ff;--json-tree-punctuation:#e8eaed;--json-tree-icon:#9aa0a6;--json-tree-hover:#e8eaed0d}.vOc5Ca_container{box-sizing:border-box;white-space:pre;width:100%;min-width:0;margin:0;padding:6px 8px 8px}.vOc5Ca_expandedTopLevel{box-sizing:border-box;width:100%;min-width:0;padding:6px 8px 8px 14px}.vOc5Ca_expandedTopLevel:has(>.vOc5Ca_topLevelBracket[data-json-root-row][data-json-copy-active]){background:var(--json-tree-hover)}@media (hover:hover){.vOc5Ca_expandedTopLevel:has(>.vOc5Ca_topLevelBracket[data-json-root-row]:hover){background:var(--json-tree-hover)}}.vOc5Ca_expandedTopLevelContainer{padding:0}.vOc5Ca_row.vOc5Ca_topLevelBracket{margin-left:0;padding-left:0}.vOc5Ca_children{margin:0;padding:0;list-style:none}.vOc5Ca_row{box-sizing:border-box;overflow-wrap:anywhere;white-space:pre-wrap;min-width:0;min-height:16px;margin:0;padding:0 0 0 10px;list-style:none;position:relative}.vOc5Ca_row:not(.vOc5Ca_topLevelBracket)[data-json-copy-active]:after,.vOc5Ca_row:has(>.vOc5Ca_expander:focus-visible):after{z-index:0;height:var(--json-tree-row-height,16px);background:var(--json-tree-hover);content:"";pointer-events:none;position:absolute;top:0;left:0;right:0}@media (hover:hover){.vOc5Ca_row:not(.vOc5Ca_topLevelBracket):hover:not(:has(.vOc5Ca_row:hover)):after{z-index:0;height:var(--json-tree-row-height,16px);background:var(--json-tree-hover);content:"";pointer-events:none;position:absolute;top:0;left:0;right:0}}.vOc5Ca_row>span:not(.vOc5Ca_expander,.vOc5Ca_copySlot){z-index:1;position:relative}.vOc5Ca_label{color:var(--json-tree-property);margin-right:3px;font-weight:400}.vOc5Ca_clickableLabel{cursor:pointer}.vOc5Ca_stringValue{color:var(--json-tree-string)}.vOc5Ca_stringField{z-index:1;display:flow-root;position:relative}.vOc5Ca_stringText{max-height:calc(var(--json-tree-collapsed-lines) * 16px);text-indent:-12px;word-break:break-all;padding-left:12px;display:block;overflow:hidden}.vOc5Ca_stringRaw{color:var(--dsw-alias-label-primary);font:inherit;overflow-wrap:normal;white-space:pre;word-break:normal;margin:4px 0 0 12px;overflow:auto}.vOc5Ca_stringActions{justify-content:flex-end;align-items:center;gap:4px;width:fit-content;height:16px;display:flex;position:absolute;top:1px;right:4px}.vOc5Ca_stringRaw[data-wrap=true]{overflow-wrap:anywhere;white-space:pre-wrap;word-break:break-all}.vOc5Ca_stringActions>.vOc5Ca_copySlot{opacity:1;pointer-events:auto}.vOc5Ca_stringToggleSlot{float:right;height:calc(var(--json-tree-collapsed-lines) * 16px);shape-outside:inset(calc((var(--json-tree-collapsed-lines) - 1) * 16px) 0 0);pointer-events:none;align-items:flex-end;margin-left:2px;display:flex}.vOc5Ca_stringToggle{color:var(--dsw-alias-label-secondary);font:inherit;text-indent:0;white-space:nowrap;cursor:pointer;pointer-events:auto;background:0 0;border:0;align-items:baseline;gap:2px;margin:0;padding:0;display:inline-flex}@media (hover:hover){.vOc5Ca_stringToggle:hover{color:var(--dsw-alias-label-primary)}}.vOc5Ca_stringToggle:focus-visible{outline:1px solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:1px}.vOc5Ca_row:has(>.vOc5Ca_stringField){--json-tree-row-height:100%}.vOc5Ca_summary{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.vOc5Ca_numberValue{color:var(--json-tree-number)}.vOc5Ca_keywordValue{color:var(--json-tree-keyword)}.vOc5Ca_otherValue{color:var(--dsw-alias-label-secondary)}.vOc5Ca_punctuation,.vOc5Ca_preview,.vOc5Ca_previewProperty{color:var(--json-tree-punctuation)}.vOc5Ca_previewEllipsis{color:var(--dsw-alias-label-tertiary)}.vOc5Ca_copySlot{opacity:0;pointer-events:none;width:20px;height:16px;display:inline-flex}.vOc5Ca_row>.vOc5Ca_copySlot{z-index:2;position:absolute;top:0;right:0}.vOc5Ca_row:has(>.vOc5Ca_stringField)>.vOc5Ca_copySlot{top:auto;bottom:0}.vOc5Ca_row:has(>.vOc5Ca_copySlot)>.vOc5Ca_stringField .vOc5Ca_stringToggleSlot{padding-right:24px}.vOc5Ca_row[data-json-copy-active]>.vOc5Ca_copySlot,.vOc5Ca_copySlot:focus-within{opacity:1;pointer-events:auto}@media (hover:hover){.vOc5Ca_row:hover:not(:has(.vOc5Ca_row:hover))>.vOc5Ca_copySlot{opacity:1;pointer-events:auto}}.vOc5Ca_actionButton{box-sizing:border-box;border-radius:var(--dsw-radius-xs);width:20px;height:16px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;margin:0;padding:0;display:inline-flex}@media (hover:hover){.vOc5Ca_actionButton:hover{color:var(--dsw-alias-label-primary)}}.vOc5Ca_actionButton[aria-pressed=true]{color:var(--dsw-alias-state-business-primary)}.vOc5Ca_actionButton:focus-visible{outline:1px solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:-1px}.vOc5Ca_actionButton[data-state=failed]{color:var(--dsw-alias-state-error-primary)}.vOc5Ca_expander{z-index:2;box-sizing:border-box;width:8px;height:16px;color:var(--json-tree-icon);cursor:pointer;user-select:none;justify-content:flex-start;align-items:center;margin:0;display:inline-flex;position:absolute;top:0;left:0}.vOc5Ca_expander:before{content:"";transform-origin:33.333%;border-top:4px solid #0000;border-bottom:4px solid #0000;border-left:6px solid;width:0;height:0;transform:scale(.75)}.vOc5Ca_collapseIcon:before{transform:rotate(90deg)scale(.75)}@media (hover:hover){.vOc5Ca_expander:hover{color:var(--dsw-alias-label-primary)}}.vOc5Ca_expander:focus-visible{outline:none}.vOc5Ca_collapsedContent{color:var(--json-tree-punctuation);cursor:pointer;margin:0 1px}.vOc5Ca_collapsedContent:after{content:"\u2026"}@media (hover:none){.vOc5Ca_copySlot{opacity:1;pointer-events:auto}.vOc5Ca_row:has(>.vOc5Ca_copySlot){padding-right:24px}}';
|
|
41
42
|
document.head.appendChild(element);
|
|
42
43
|
}
|
|
43
|
-
var JsonTree_module_default = { "
|
|
44
|
+
var JsonTree_module_default = { "container": "vOc5Ca_container", "collapseIcon": "vOc5Ca_collapseIcon", "row": "vOc5Ca_row", "stringToggle": "vOc5Ca_stringToggle", "previewProperty": "vOc5Ca_previewProperty", "expander": "vOc5Ca_expander", "label": "vOc5Ca_label", "clickableLabel": "vOc5Ca_clickableLabel", "summary": "vOc5Ca_summary", "numberValue": "vOc5Ca_numberValue", "actionButton": "vOc5Ca_actionButton", "copySlot": "vOc5Ca_copySlot", "expandedTopLevelContainer": "vOc5Ca_expandedTopLevelContainer", "expandedTopLevel": "vOc5Ca_expandedTopLevel", "keywordValue": "vOc5Ca_keywordValue", "preview": "vOc5Ca_preview", "stringRaw": "vOc5Ca_stringRaw", "topLevelBracket": "vOc5Ca_topLevelBracket", "collapsedContent": "vOc5Ca_collapsedContent", "root": "vOc5Ca_root", "stringText": "vOc5Ca_stringText", "children": "vOc5Ca_children", "stringValue": "vOc5Ca_stringValue", "stringActions": "vOc5Ca_stringActions", "punctuation": "vOc5Ca_punctuation", "stringToggleSlot": "vOc5Ca_stringToggleSlot", "stringField": "vOc5Ca_stringField", "previewEllipsis": "vOc5Ca_previewEllipsis", "otherValue": "vOc5Ca_otherValue" };
|
|
44
45
|
|
|
45
46
|
// src/JsonTree.tsx
|
|
46
47
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -69,18 +70,18 @@ function createCopyStore() {
|
|
|
69
70
|
set(next) {
|
|
70
71
|
const previous = current?.id;
|
|
71
72
|
current = next;
|
|
72
|
-
for (const
|
|
73
|
-
if (
|
|
74
|
-
for (const listener of listeners.get(
|
|
73
|
+
for (const id8 of /* @__PURE__ */ new Set([previous, next?.id])) {
|
|
74
|
+
if (id8 === void 0) continue;
|
|
75
|
+
for (const listener of listeners.get(id8) ?? []) listener();
|
|
75
76
|
}
|
|
76
77
|
},
|
|
77
|
-
subscribe(
|
|
78
|
-
let row = listeners.get(
|
|
79
|
-
if (row === void 0) listeners.set(
|
|
78
|
+
subscribe(id8, listener) {
|
|
79
|
+
let row = listeners.get(id8);
|
|
80
|
+
if (row === void 0) listeners.set(id8, row = /* @__PURE__ */ new Set());
|
|
80
81
|
row.add(listener);
|
|
81
82
|
return () => {
|
|
82
83
|
row.delete(listener);
|
|
83
|
-
if (row.size === 0) listeners.delete(
|
|
84
|
+
if (row.size === 0) listeners.delete(id8);
|
|
84
85
|
};
|
|
85
86
|
}
|
|
86
87
|
};
|
|
@@ -93,11 +94,11 @@ function JsonCopyAction({
|
|
|
93
94
|
onCopy,
|
|
94
95
|
onClose
|
|
95
96
|
}) {
|
|
96
|
-
const
|
|
97
|
-
const subscribe = useCallback((listener) => store.subscribe(
|
|
97
|
+
const id8 = pathId(target.path);
|
|
98
|
+
const subscribe = useCallback((listener) => store.subscribe(id8, listener), [id8, store]);
|
|
98
99
|
const getSnapshot = () => {
|
|
99
100
|
const current = store.get();
|
|
100
|
-
return current?.id ===
|
|
101
|
+
return current?.id === id8 ? current : void 0;
|
|
101
102
|
};
|
|
102
103
|
const snapshot = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
|
|
103
104
|
const buttonRef = useRef(null);
|
|
@@ -125,7 +126,7 @@ function JsonCopyAction({
|
|
|
125
126
|
onContextMenu: (event) => {
|
|
126
127
|
event.preventDefault();
|
|
127
128
|
event.stopPropagation();
|
|
128
|
-
store.set({ id:
|
|
129
|
+
store.set({ id: id8, target, state, menuOpen: true });
|
|
129
130
|
},
|
|
130
131
|
children: state === "copied" ? /* @__PURE__ */ jsx(IconCheckOutlineRegular, { size: 12 }) : /* @__PURE__ */ jsx(IconCopyOutlineRegular, { size: 12 })
|
|
131
132
|
}
|
|
@@ -716,8 +717,8 @@ function JsonTree({
|
|
|
716
717
|
}
|
|
717
718
|
|
|
718
719
|
// src/TerminalBlock.tsx
|
|
719
|
-
import { useCallback as
|
|
720
|
-
import
|
|
720
|
+
import { useCallback as useCallback2, useMemo, useState as useState3 } from "react";
|
|
721
|
+
import clsx3 from "clsx";
|
|
721
722
|
|
|
722
723
|
// src/ansi.ts
|
|
723
724
|
import Anser from "anser";
|
|
@@ -952,36 +953,67 @@ function headTailCap(total, maxLines, expanded) {
|
|
|
952
953
|
return { hidden, capped: hidden > 0 && !expanded, headLines, tailLines: maxLines - headLines };
|
|
953
954
|
}
|
|
954
955
|
|
|
955
|
-
// src/use-copy-feedback.ts
|
|
956
|
-
import { useCallback as useCallback2, useState as useState2 } from "react";
|
|
957
|
-
var COPIED_FEEDBACK_MS = 1e3;
|
|
958
|
-
function useCopyFeedback(text) {
|
|
959
|
-
const [copied, setCopied] = useState2(false);
|
|
960
|
-
const onCopy = useCallback2(() => {
|
|
961
|
-
if (copied) return;
|
|
962
|
-
void writeClipboard(text).then((ok) => {
|
|
963
|
-
if (!ok) return;
|
|
964
|
-
setCopied(true);
|
|
965
|
-
window.setTimeout(() => {
|
|
966
|
-
setCopied(false);
|
|
967
|
-
}, COPIED_FEEDBACK_MS);
|
|
968
|
-
});
|
|
969
|
-
}, [copied, text]);
|
|
970
|
-
return { copied, onCopy };
|
|
971
|
-
}
|
|
972
|
-
|
|
973
956
|
// .build/css/TerminalBlock.module.mjs
|
|
974
957
|
var id2 = "@seekbuddy/dsh-ui/TerminalBlock.module.css";
|
|
975
958
|
if (typeof document !== "undefined" && !document.querySelector('style[data-dsh-ui-primitives="' + id2 + '"]')) {
|
|
976
959
|
const element = document.createElement("style");
|
|
977
960
|
element.setAttribute("data-dsh-ui-primitives", id2);
|
|
978
|
-
element.textContent = ".OBf4Nq_block{--dsl-terminal-radius:var(--dsw-radius-lg);--dsl-terminal-line-height:22px;--dsl-terminal-font:var(--dsw-font-markdown-code-block);--dsl-terminal-gutter:30px;padding-left:var(--dsl-terminal-gutter);color:var(--dsw-alias-label-primary);background:var(--dsw-alias-markdown-code-block);border-radius:var(--dsl-terminal-radius);margin:16px 0;position:relative;overflow:hidden}.OBf4Nq_header{margin-left:calc(-1 * var(--dsl-terminal-gutter));padding:9px 14px 9px var(--dsl-terminal-gutter);border-top-left-radius:var(--dsl-terminal-radius);border-top-right-radius:var(--dsl-terminal-radius);align-items:flex-start;gap:12px;max-height:150px;display:flex;overflow-y:auto}.OBf4Nq_header::-webkit-scrollbar-thumb{border-radius:var(--dsw-radius-sm);background-clip:padding-box;border:2px solid #0000}.OBf4Nq_header::-webkit-scrollbar-track{margin:6px}.OBf4Nq_block[data-body] .OBf4Nq_header{border-bottom:.5px solid var(--dsw-alias-border-l2)}.OBf4Nq_prompt{min-width:0;font:var(--dsl-terminal-font);flex-direction:column;flex:1;display:flex}.OBf4Nq_promptLine{min-width:0;line-height:var(--dsl-terminal-line-height);align-items:baseline;gap:8px;display:flex;position:relative}.OBf4Nq_runState{left:calc(-1 * var(--dsl-terminal-gutter) + 8px);position:absolute;
|
|
961
|
+
element.textContent = ".OBf4Nq_block{--dsl-terminal-radius:var(--dsw-radius-lg);--dsl-terminal-line-height:22px;--dsl-terminal-font:var(--dsw-font-markdown-code-block);--dsl-terminal-gutter:30px;padding-left:var(--dsl-terminal-gutter);color:var(--dsw-alias-label-primary);background:var(--dsw-alias-markdown-code-block);border-radius:var(--dsl-terminal-radius);margin:16px 0;position:relative;overflow:hidden}.OBf4Nq_header{margin-left:calc(-1 * var(--dsl-terminal-gutter));padding:9px 14px 9px var(--dsl-terminal-gutter);border-top-left-radius:var(--dsl-terminal-radius);border-top-right-radius:var(--dsl-terminal-radius);align-items:flex-start;gap:12px;max-height:150px;display:flex;overflow-y:auto}.OBf4Nq_header::-webkit-scrollbar-thumb{border-radius:var(--dsw-radius-sm);background-clip:padding-box;border:2px solid #0000}.OBf4Nq_header::-webkit-scrollbar-track{margin:6px}.OBf4Nq_block[data-body] .OBf4Nq_header{border-bottom:.5px solid var(--dsw-alias-border-l2)}.OBf4Nq_prompt{min-width:0;font:var(--dsl-terminal-font);flex-direction:column;flex:1;display:flex}.OBf4Nq_promptLine{min-width:0;line-height:var(--dsl-terminal-line-height);align-items:baseline;gap:8px;display:flex;position:relative}.OBf4Nq_runState{left:calc(-1 * var(--dsl-terminal-gutter) + 8px);top:calc(var(--dsl-terminal-line-height) / 2);position:absolute;transform:translateY(-50%)}.OBf4Nq_runStateLabel{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.OBf4Nq_cwd{color:var(--dsw-alias-label-tertiary);flex:none}.OBf4Nq_command{--dsl-command-whitespace:var(--dsl-terminal-command-whitespace,pre);color:var(--dsw-alias-label-primary)}.OBf4Nq_status{height:var(--dsl-terminal-line-height);color:var(--dsw-alias-state-error-primary);flex:none;position:sticky;top:0}.OBf4Nq_copyButton{background-color:var(--dsw-alias-markdown-code-block);color:var(--dsw-alias-label-secondary);cursor:pointer;font:var(--dsw-font-xs-13);line-height:var(--dsl-terminal-line-height);border:none;flex:none;margin:0;padding:0;position:sticky;top:0}.OBf4Nq_output{max-height:var(--dsl-terminal-output-max-height,none);font:var(--dsl-terminal-font);padding:12px 14px 12px 0;overflow:auto}.OBf4Nq_output::-webkit-scrollbar-thumb{border-radius:var(--dsw-radius-sm);background-clip:padding-box;border:2px solid #0000}.OBf4Nq_output::-webkit-scrollbar-track{margin:6px}.OBf4Nq_line{min-height:var(--dsl-terminal-line-height);white-space:var(--dsl-terminal-line-whitespace,pre);overflow-wrap:anywhere}.OBf4Nq_expand{width:100%;color:var(--dsw-alias-label-tertiary);cursor:pointer;font:inherit;text-align:left;background-color:#0000;border:none;padding:0;display:block}@media (hover:hover){.OBf4Nq_expand:hover{color:var(--dsw-alias-label-secondary)}}.OBf4Nq_empty{font:var(--dsl-terminal-font);color:var(--dsw-alias-label-tertiary);padding:12px 14px 12px 0}";
|
|
962
|
+
document.head.appendChild(element);
|
|
963
|
+
}
|
|
964
|
+
var TerminalBlock_module_default = { "prompt": "OBf4Nq_prompt", "promptLine": "OBf4Nq_promptLine", "runState": "OBf4Nq_runState", "command": "OBf4Nq_command", "status": "OBf4Nq_status", "cwd": "OBf4Nq_cwd", "runStateLabel": "OBf4Nq_runStateLabel", "output": "OBf4Nq_output", "expand": "OBf4Nq_expand", "copyButton": "OBf4Nq_copyButton", "empty": "OBf4Nq_empty", "line": "OBf4Nq_line", "block": "OBf4Nq_block", "header": "OBf4Nq_header" };
|
|
965
|
+
|
|
966
|
+
// src/CommandText.tsx
|
|
967
|
+
import { useLayoutEffect as useLayoutEffect2, useRef as useRef2, useState as useState2 } from "react";
|
|
968
|
+
import clsx2 from "clsx";
|
|
969
|
+
|
|
970
|
+
// .build/css/CommandText.module.mjs
|
|
971
|
+
var id3 = "@seekbuddy/dsh-ui/CommandText.module.css";
|
|
972
|
+
if (typeof document !== "undefined" && !document.querySelector('style[data-dsh-ui-primitives="' + id3 + '"]')) {
|
|
973
|
+
const element = document.createElement("style");
|
|
974
|
+
element.setAttribute("data-dsh-ui-primitives", id3);
|
|
975
|
+
element.textContent = "._7k6xxG_text{min-width:0;white-space:var(--dsl-command-whitespace,pre);overflow-wrap:anywhere;display:block;overflow-x:auto}._7k6xxG_text:focus-visible{outline:var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:-2px}";
|
|
979
976
|
document.head.appendChild(element);
|
|
980
977
|
}
|
|
981
|
-
var
|
|
978
|
+
var CommandText_module_default = { "text": "_7k6xxG_text" };
|
|
979
|
+
|
|
980
|
+
// src/CommandText.tsx
|
|
981
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
982
|
+
function CommandText({ text, label, className }) {
|
|
983
|
+
const ref = useRef2(null);
|
|
984
|
+
const [overflow, setOverflow] = useState2(false);
|
|
985
|
+
useLayoutEffect2(() => {
|
|
986
|
+
const element = ref.current;
|
|
987
|
+
if (element === null) return void 0;
|
|
988
|
+
const measure = () => {
|
|
989
|
+
setOverflow(element.scrollWidth > element.clientWidth);
|
|
990
|
+
};
|
|
991
|
+
measure();
|
|
992
|
+
const observer = typeof ResizeObserver === "undefined" ? void 0 : new ResizeObserver(measure);
|
|
993
|
+
observer?.observe(element);
|
|
994
|
+
const fonts = "fonts" in element.ownerDocument ? element.ownerDocument.fonts : void 0;
|
|
995
|
+
fonts?.addEventListener("loadingdone", measure);
|
|
996
|
+
return () => {
|
|
997
|
+
observer?.disconnect();
|
|
998
|
+
fonts?.removeEventListener("loadingdone", measure);
|
|
999
|
+
};
|
|
1000
|
+
}, [text]);
|
|
1001
|
+
return /* @__PURE__ */ jsx2(
|
|
1002
|
+
"span",
|
|
1003
|
+
{
|
|
1004
|
+
ref,
|
|
1005
|
+
className: clsx2(CommandText_module_default.text, className),
|
|
1006
|
+
"data-command-text": true,
|
|
1007
|
+
tabIndex: overflow ? 0 : void 0,
|
|
1008
|
+
role: overflow ? "group" : void 0,
|
|
1009
|
+
"aria-label": overflow ? label : void 0,
|
|
1010
|
+
children: text
|
|
1011
|
+
}
|
|
1012
|
+
);
|
|
1013
|
+
}
|
|
982
1014
|
|
|
983
1015
|
// src/TerminalBlock.tsx
|
|
984
|
-
import { jsx as
|
|
1016
|
+
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
985
1017
|
var DEFAULT_TERMINAL_MAX_LINES = 16;
|
|
986
1018
|
function promptLabel(cwd, home) {
|
|
987
1019
|
const trimmed = cwd.replace(/[/\\]+$/, "");
|
|
@@ -1002,7 +1034,7 @@ function runState(running, exitCode, signal, labels) {
|
|
|
1002
1034
|
}
|
|
1003
1035
|
function renderLine(line) {
|
|
1004
1036
|
return line.map(
|
|
1005
|
-
(span, index) => span.style === void 0 ? span.text : /* @__PURE__ */
|
|
1037
|
+
(span, index) => span.style === void 0 ? span.text : /* @__PURE__ */ jsx3("span", { style: span.style, children: span.text }, index)
|
|
1006
1038
|
);
|
|
1007
1039
|
}
|
|
1008
1040
|
function TerminalBlock({
|
|
@@ -1013,6 +1045,7 @@ function TerminalBlock({
|
|
|
1013
1045
|
exitCode,
|
|
1014
1046
|
signal,
|
|
1015
1047
|
running = false,
|
|
1048
|
+
background = false,
|
|
1016
1049
|
maxLines = DEFAULT_TERMINAL_MAX_LINES,
|
|
1017
1050
|
copyText: copyText4,
|
|
1018
1051
|
runStateDot = true,
|
|
@@ -1028,42 +1061,43 @@ function TerminalBlock({
|
|
|
1028
1061
|
return terminated ? parsed.slice(0, -1) : parsed;
|
|
1029
1062
|
}, [text]);
|
|
1030
1063
|
const [expanded, setExpanded] = useState3(false);
|
|
1031
|
-
const { copied, onCopy } =
|
|
1032
|
-
const onToggle =
|
|
1064
|
+
const { copied, onCopy } = useClipboardCopy(copyText4 ?? text);
|
|
1065
|
+
const onToggle = useCallback2(() => {
|
|
1033
1066
|
setExpanded((value) => !value);
|
|
1034
1067
|
}, []);
|
|
1035
|
-
const status = statusText(exitCode, signal, copy);
|
|
1068
|
+
const status = background ? void 0 : statusText(exitCode, signal, copy);
|
|
1036
1069
|
const state = runState(running, exitCode, signal, copy);
|
|
1070
|
+
const showState = runStateDot && (!background || running);
|
|
1037
1071
|
const commandLines = useMemo(() => {
|
|
1038
1072
|
const body2 = command.endsWith("\n") ? command.slice(0, -1) : command;
|
|
1039
1073
|
return body2.split("\n");
|
|
1040
1074
|
}, [command]);
|
|
1041
1075
|
const empty = lines.every((line) => line.every((span) => span.text.trim() === ""));
|
|
1042
1076
|
const { hidden, capped, headLines, tailLines } = headTailCap(lines.length, maxLines, expanded);
|
|
1043
|
-
const body = !running || !empty;
|
|
1077
|
+
const body = !background && (!running || !empty);
|
|
1044
1078
|
return /* @__PURE__ */ jsxs2(
|
|
1045
1079
|
"div",
|
|
1046
1080
|
{
|
|
1047
|
-
className:
|
|
1081
|
+
className: clsx3(TerminalBlock_module_default.block, className),
|
|
1048
1082
|
"data-terminal": "",
|
|
1049
1083
|
"data-running": running ? "" : void 0,
|
|
1050
1084
|
"data-body": body ? "" : void 0,
|
|
1051
1085
|
children: [
|
|
1052
1086
|
/* @__PURE__ */ jsxs2("div", { className: TerminalBlock_module_default.header, children: [
|
|
1053
1087
|
/* @__PURE__ */ jsxs2("div", { className: TerminalBlock_module_default.prompt, children: [
|
|
1054
|
-
|
|
1088
|
+
showState && /* @__PURE__ */ jsx3("span", { className: TerminalBlock_module_default.runStateLabel, children: state.label }),
|
|
1055
1089
|
commandLines.map((line, index) => /* @__PURE__ */ jsxs2("div", { className: TerminalBlock_module_default.promptLine, children: [
|
|
1056
|
-
index === 0 &&
|
|
1057
|
-
/* @__PURE__ */
|
|
1058
|
-
/* @__PURE__ */
|
|
1090
|
+
index === 0 && showState && /* @__PURE__ */ jsx3(StateDot, { state: state.state, className: TerminalBlock_module_default.runState }),
|
|
1091
|
+
/* @__PURE__ */ jsx3("span", { className: TerminalBlock_module_default.cwd, children: index > 0 || cwd === void 0 ? "$" : promptLabel(cwd, home) }),
|
|
1092
|
+
/* @__PURE__ */ jsx3(CommandText, { className: TerminalBlock_module_default.command, text: line, label: copy.commandLine(index + 1) })
|
|
1059
1093
|
] }, index))
|
|
1060
1094
|
] }),
|
|
1061
|
-
status !== void 0 && /* @__PURE__ */
|
|
1062
|
-
(copyText4 !== void 0 || !running && !empty) && /* @__PURE__ */
|
|
1095
|
+
status !== void 0 && /* @__PURE__ */ jsx3(Pill, { className: TerminalBlock_module_default.status, children: status }),
|
|
1096
|
+
(copyText4 !== void 0 || !background && !running && !empty) && /* @__PURE__ */ jsx3("button", { type: "button", className: TerminalBlock_module_default.copyButton, onClick: onCopy, children: copied ? copy.copied : copy.copy })
|
|
1063
1097
|
] }),
|
|
1064
|
-
body && (empty ? /* @__PURE__ */
|
|
1065
|
-
(capped ? lines.slice(0, headLines) : lines).map((line, index) => /* @__PURE__ */
|
|
1066
|
-
hidden > 0 && /* @__PURE__ */
|
|
1098
|
+
body && (empty ? /* @__PURE__ */ jsx3("div", { className: TerminalBlock_module_default.empty, children: copy.noOutput }) : /* @__PURE__ */ jsxs2("div", { className: TerminalBlock_module_default.output, children: [
|
|
1099
|
+
(capped ? lines.slice(0, headLines) : lines).map((line, index) => /* @__PURE__ */ jsx3("div", { className: TerminalBlock_module_default.line, children: renderLine(line) }, index)),
|
|
1100
|
+
hidden > 0 && /* @__PURE__ */ jsx3(
|
|
1067
1101
|
"button",
|
|
1068
1102
|
{
|
|
1069
1103
|
type: "button",
|
|
@@ -1074,7 +1108,7 @@ function TerminalBlock({
|
|
|
1074
1108
|
children: expanded ? copy.collapse : copy.expand(hidden)
|
|
1075
1109
|
}
|
|
1076
1110
|
),
|
|
1077
|
-
capped && lines.slice(lines.length - tailLines).map((line, index) => /* @__PURE__ */
|
|
1111
|
+
capped && lines.slice(lines.length - tailLines).map((line, index) => /* @__PURE__ */ jsx3("div", { className: TerminalBlock_module_default.line, children: renderLine(line) }, index))
|
|
1078
1112
|
] }))
|
|
1079
1113
|
]
|
|
1080
1114
|
}
|
|
@@ -1082,13 +1116,13 @@ function TerminalBlock({
|
|
|
1082
1116
|
}
|
|
1083
1117
|
|
|
1084
1118
|
// src/ReadBlock.tsx
|
|
1085
|
-
import { useCallback as
|
|
1086
|
-
import
|
|
1119
|
+
import { useCallback as useCallback3, useMemo as useMemo2, useRef as useRef3, useState as useState4, useSyncExternalStore as useSyncExternalStore2 } from "react";
|
|
1120
|
+
import clsx4 from "clsx";
|
|
1087
1121
|
|
|
1088
1122
|
// src/FoldToggle.tsx
|
|
1089
|
-
import { jsx as
|
|
1123
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
1090
1124
|
function FoldToggle({ className, expanded, hidden, labels, onToggle }) {
|
|
1091
|
-
return /* @__PURE__ */
|
|
1125
|
+
return /* @__PURE__ */ jsx4(
|
|
1092
1126
|
"button",
|
|
1093
1127
|
{
|
|
1094
1128
|
type: "button",
|
|
@@ -1102,20 +1136,20 @@ function FoldToggle({ className, expanded, hidden, labels, onToggle }) {
|
|
|
1102
1136
|
}
|
|
1103
1137
|
|
|
1104
1138
|
// .build/css/ReadBlock.module.mjs
|
|
1105
|
-
var
|
|
1106
|
-
if (typeof document !== "undefined" && !document.querySelector('style[data-dsh-ui-primitives="' +
|
|
1139
|
+
var id4 = "@seekbuddy/dsh-ui/ReadBlock.module.css";
|
|
1140
|
+
if (typeof document !== "undefined" && !document.querySelector('style[data-dsh-ui-primitives="' + id4 + '"]')) {
|
|
1107
1141
|
const element = document.createElement("style");
|
|
1108
|
-
element.setAttribute("data-dsh-ui-primitives",
|
|
1109
|
-
element.textContent = ".Lq5Aja_line{white-space:pre;min-height:1lh;display:flex}.Lq5Aja_gutter{width:var(--dsl-read-gutter);text-align:right;color:var(--dsw-alias-label-tertiary);user-select:none;flex:none;margin-right:12px}.Lq5Aja_content{min-width:0;color:var(--dsw-alias-label-primary)}.Lq5Aja_block[data-code-wrap=true] .Lq5Aja_line{white-space:pre-wrap}.Lq5Aja_block[data-code-wrap=true] .Lq5Aja_content{overflow-wrap:anywhere}.Lq5Aja_expand{width:100%;padding:0 0 0 calc(var(--dsl-read-gutter) + 12px);color:var(--dsw-alias-label-tertiary);cursor:pointer;font:inherit;text-align:left;background:0 0;border:none;display:block}.Lq5Aja_expand:hover{color:var(--dsw-alias-label-secondary)}";
|
|
1142
|
+
element.setAttribute("data-dsh-ui-primitives", id4);
|
|
1143
|
+
element.textContent = ".Lq5Aja_line{white-space:pre;min-height:1lh;display:flex}.Lq5Aja_gutter{width:var(--dsl-read-gutter);text-align:right;color:var(--dsw-alias-label-tertiary);user-select:none;flex:none;margin-right:12px}.Lq5Aja_content{min-width:0;color:var(--dsw-alias-label-primary)}.Lq5Aja_block[data-code-wrap=true] .Lq5Aja_line{white-space:pre-wrap}.Lq5Aja_block[data-code-wrap=true] .Lq5Aja_content{overflow-wrap:anywhere}.Lq5Aja_expand{width:100%;padding:0 0 0 calc(var(--dsl-read-gutter) + 12px);color:var(--dsw-alias-label-tertiary);cursor:pointer;font:inherit;text-align:left;background:0 0;border:none;display:block}@media (hover:hover){.Lq5Aja_expand:hover{color:var(--dsw-alias-label-secondary)}}";
|
|
1110
1144
|
document.head.appendChild(element);
|
|
1111
1145
|
}
|
|
1112
|
-
var ReadBlock_module_default = { "
|
|
1146
|
+
var ReadBlock_module_default = { "block": "Lq5Aja_block", "line": "Lq5Aja_line", "expand": "Lq5Aja_expand", "content": "Lq5Aja_content", "gutter": "Lq5Aja_gutter" };
|
|
1113
1147
|
|
|
1114
1148
|
// src/ReadBlock.tsx
|
|
1115
|
-
import { jsx as
|
|
1149
|
+
import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
1116
1150
|
var DEFAULT_READ_MAX_LINES = 16;
|
|
1117
1151
|
function renderSpans(spans) {
|
|
1118
|
-
return spans.map((span, index) => /* @__PURE__ */
|
|
1152
|
+
return spans.map((span, index) => /* @__PURE__ */ jsx5("span", { style: span.style, children: span.text }, index));
|
|
1119
1153
|
}
|
|
1120
1154
|
function ReadBlock({
|
|
1121
1155
|
label,
|
|
@@ -1126,7 +1160,7 @@ function ReadBlock({
|
|
|
1126
1160
|
maxLines = DEFAULT_READ_MAX_LINES,
|
|
1127
1161
|
className
|
|
1128
1162
|
}) {
|
|
1129
|
-
const rootRef =
|
|
1163
|
+
const rootRef = useRef3(null);
|
|
1130
1164
|
const highlighting = useViewportHighlighting(rootRef, lang);
|
|
1131
1165
|
const raw = useMemo2(() => lines.map((line) => line.text).join("\n"), [lines]);
|
|
1132
1166
|
const loaded = useSyncExternalStore2(subscribeGrammarLoaded, grammarLoadCount, grammarLoadCount);
|
|
@@ -1137,7 +1171,7 @@ function ReadBlock({
|
|
|
1137
1171
|
const [expanded, setExpanded] = useState4(false);
|
|
1138
1172
|
const [copied, setCopied] = useState4(false);
|
|
1139
1173
|
const [wrapped, setWrapped] = useState4(false);
|
|
1140
|
-
const onCopy =
|
|
1174
|
+
const onCopy = useCallback3(() => {
|
|
1141
1175
|
if (copied) return;
|
|
1142
1176
|
void writeClipboard(raw).then((ok) => {
|
|
1143
1177
|
if (!ok) return;
|
|
@@ -1147,7 +1181,7 @@ function ReadBlock({
|
|
|
1147
1181
|
}, 1e3);
|
|
1148
1182
|
});
|
|
1149
1183
|
}, [copied, raw]);
|
|
1150
|
-
const onToggle =
|
|
1184
|
+
const onToggle = useCallback3(() => {
|
|
1151
1185
|
setExpanded((value) => !value);
|
|
1152
1186
|
}, []);
|
|
1153
1187
|
const hidden = lines.length - maxLines;
|
|
@@ -1156,8 +1190,8 @@ function ReadBlock({
|
|
|
1156
1190
|
const tailLines = maxLines - headLines;
|
|
1157
1191
|
const windowed = lines.length < totalLines;
|
|
1158
1192
|
const rows = (slice) => slice.map(([line, spans]) => /* @__PURE__ */ jsxs3("div", { className: ReadBlock_module_default.line, children: [
|
|
1159
|
-
/* @__PURE__ */
|
|
1160
|
-
/* @__PURE__ */
|
|
1193
|
+
/* @__PURE__ */ jsx5("span", { className: ReadBlock_module_default.gutter, "aria-hidden": true, children: line.number }),
|
|
1194
|
+
/* @__PURE__ */ jsx5("span", { className: ReadBlock_module_default.content, children: spans === void 0 ? line.text : renderSpans(spans) })
|
|
1161
1195
|
] }, line.number));
|
|
1162
1196
|
const gutterDigits = lines.reduce((digits, line) => Math.max(digits, String(line.number).length), 3);
|
|
1163
1197
|
const gutterStyle = { "--dsl-read-gutter": `${gutterDigits}ch` };
|
|
@@ -1169,12 +1203,12 @@ function ReadBlock({
|
|
|
1169
1203
|
"div",
|
|
1170
1204
|
{
|
|
1171
1205
|
ref: rootRef,
|
|
1172
|
-
className:
|
|
1206
|
+
className: clsx4(CodeCard_module_default.card, ReadBlock_module_default.block, className),
|
|
1173
1207
|
"data-read": "",
|
|
1174
1208
|
"data-code-wrap": wrapped,
|
|
1175
1209
|
style: gutterStyle,
|
|
1176
1210
|
children: [
|
|
1177
|
-
/* @__PURE__ */
|
|
1211
|
+
/* @__PURE__ */ jsx5(
|
|
1178
1212
|
CodeToolbar,
|
|
1179
1213
|
{
|
|
1180
1214
|
lang,
|
|
@@ -1193,7 +1227,7 @@ function ReadBlock({
|
|
|
1193
1227
|
),
|
|
1194
1228
|
/* @__PURE__ */ jsxs3("div", { className: CodeCard_module_default.body, children: [
|
|
1195
1229
|
rows(capped ? paired.slice(0, headLines) : paired),
|
|
1196
|
-
hidden > 0 && /* @__PURE__ */
|
|
1230
|
+
hidden > 0 && /* @__PURE__ */ jsx5(FoldToggle, { className: ReadBlock_module_default.expand, expanded, hidden, labels, onToggle }),
|
|
1197
1231
|
capped && rows(paired.slice(paired.length - tailLines))
|
|
1198
1232
|
] })
|
|
1199
1233
|
]
|
|
@@ -1202,30 +1236,30 @@ function ReadBlock({
|
|
|
1202
1236
|
}
|
|
1203
1237
|
|
|
1204
1238
|
// src/DiffBlock.tsx
|
|
1205
|
-
import { useCallback as
|
|
1206
|
-
import
|
|
1239
|
+
import { useCallback as useCallback5, useMemo as useMemo3, useState as useState5 } from "react";
|
|
1240
|
+
import clsx5 from "clsx";
|
|
1207
1241
|
import { structuredPatch } from "diff";
|
|
1208
1242
|
|
|
1209
1243
|
// src/code-highlighting.ts
|
|
1210
|
-
import { useCallback as
|
|
1244
|
+
import { useCallback as useCallback4, useSyncExternalStore as useSyncExternalStore3 } from "react";
|
|
1211
1245
|
import { CODE_HIGHLIGHT_EXTENSIONS, languageForPath } from "@deepseek-ai/dsh-util-code-language";
|
|
1212
1246
|
function useCodeHighlighter(language) {
|
|
1213
1247
|
const loaded = useSyncExternalStore3(subscribeGrammarLoaded, grammarLoadCount, grammarLoadCount);
|
|
1214
|
-
return
|
|
1248
|
+
return useCallback4((code) => highlightLines(code, language), [language, loaded]);
|
|
1215
1249
|
}
|
|
1216
1250
|
|
|
1217
1251
|
// .build/css/DiffBlock.module.mjs
|
|
1218
|
-
var
|
|
1219
|
-
if (typeof document !== "undefined" && !document.querySelector('style[data-dsh-ui-primitives="' +
|
|
1252
|
+
var id5 = "@seekbuddy/dsh-ui/DiffBlock.module.css";
|
|
1253
|
+
if (typeof document !== "undefined" && !document.querySelector('style[data-dsh-ui-primitives="' + id5 + '"]')) {
|
|
1220
1254
|
const element = document.createElement("style");
|
|
1221
|
-
element.setAttribute("data-dsh-ui-primitives",
|
|
1222
|
-
element.textContent = '.tEQPFa_block{overflow:hidden}.tEQPFa_body{font:var(--dsw-font-markdown-code-block);grid-template-columns:minmax(max-content,1fr);padding:6px 0 20px;display:grid;overflow-x:auto}.tEQPFa_line{box-sizing:border-box;white-space:pre;min-height:1lh;padding:0 22px}.tEQPFa_block[data-code-wrap=true] .tEQPFa_body{grid-template-columns:minmax(0,1fr)}.tEQPFa_block[data-code-wrap=true] .tEQPFa_line{white-space:pre-wrap;overflow-wrap:anywhere}.tEQPFa_path{color:var(--dsw-alias-label-secondary);font-weight:500}.tEQPFa_gap{color:var(--dsw-alias-label-tertiary)}.tEQPFa_del:before{content:"- "}.tEQPFa_del{color:var(--dsw-alias-state-error-primary);background:var(--dsw-alias-code-diff-deleted);box-shadow:inset 3px 0 0 var(--dsw-alias-state-error-primary)}.tEQPFa_add:before{content:"+ "}.tEQPFa_add{color:var(--dsw-alias-state-success-primary);background:var(--dsw-alias-code-diff-added);box-shadow:inset 3px 0 0 var(--dsw-alias-state-success-primary)}.tEQPFa_context{color:var(--dsw-alias-label-secondary)}.tEQPFa_context:before{content:" "}.tEQPFa_expand{width:100%;color:var(--dsw-alias-label-tertiary);cursor:pointer;font:inherit;text-align:left;background:0 0;border:none;padding:0 22px;display:block}.tEQPFa_expand:hover{color:var(--dsw-alias-label-secondary)}';
|
|
1255
|
+
element.setAttribute("data-dsh-ui-primitives", id5);
|
|
1256
|
+
element.textContent = '.tEQPFa_block{overflow:hidden}.tEQPFa_body{font:var(--dsw-font-markdown-code-block);grid-template-columns:minmax(max-content,1fr);padding:6px 0 20px;display:grid;overflow-x:auto}.tEQPFa_line{box-sizing:border-box;white-space:pre;min-height:1lh;padding:0 22px}.tEQPFa_block[data-code-wrap=true] .tEQPFa_body{grid-template-columns:minmax(0,1fr)}.tEQPFa_block[data-code-wrap=true] .tEQPFa_line{white-space:pre-wrap;overflow-wrap:anywhere}.tEQPFa_path{color:var(--dsw-alias-label-secondary);font-weight:500}.tEQPFa_gap{color:var(--dsw-alias-label-tertiary)}.tEQPFa_del:before{content:"- "}.tEQPFa_del{color:var(--dsw-alias-state-error-primary);background:var(--dsw-alias-code-diff-deleted);box-shadow:inset 3px 0 0 var(--dsw-alias-state-error-primary)}.tEQPFa_add:before{content:"+ "}.tEQPFa_add{color:var(--dsw-alias-state-success-primary);background:var(--dsw-alias-code-diff-added);box-shadow:inset 3px 0 0 var(--dsw-alias-state-success-primary)}.tEQPFa_context{color:var(--dsw-alias-label-secondary)}.tEQPFa_context:before{content:" "}.tEQPFa_expand{width:100%;color:var(--dsw-alias-label-tertiary);cursor:pointer;font:inherit;text-align:left;background:0 0;border:none;padding:0 22px;display:block}@media (hover:hover){.tEQPFa_expand:hover{color:var(--dsw-alias-label-secondary)}}';
|
|
1223
1257
|
document.head.appendChild(element);
|
|
1224
1258
|
}
|
|
1225
|
-
var DiffBlock_module_default = { "
|
|
1259
|
+
var DiffBlock_module_default = { "add": "tEQPFa_add", "expand": "tEQPFa_expand", "block": "tEQPFa_block", "gap": "tEQPFa_gap", "line": "tEQPFa_line", "del": "tEQPFa_del", "context": "tEQPFa_context", "path": "tEQPFa_path", "body": "tEQPFa_body" };
|
|
1226
1260
|
|
|
1227
1261
|
// src/DiffBlock.tsx
|
|
1228
|
-
import { jsx as
|
|
1262
|
+
import { jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
1229
1263
|
var DEFAULT_DIFF_MAX_LINES = 16;
|
|
1230
1264
|
function assertNever(value) {
|
|
1231
1265
|
throw new Error(`unreachable diff row kind: ${String(value)}`);
|
|
@@ -1309,7 +1343,7 @@ function DiffBlock({ diffs, labels, maxLines = DEFAULT_DIFF_MAX_LINES, className
|
|
|
1309
1343
|
const [wrapped, setWrapped] = useState5(false);
|
|
1310
1344
|
const firstLanguage = diffs[0] === void 0 ? void 0 : languageForPath(diffs[0].path);
|
|
1311
1345
|
const language = diffs.every((diff) => languageForPath(diff.path) === firstLanguage) ? firstLanguage : void 0;
|
|
1312
|
-
const onCopy =
|
|
1346
|
+
const onCopy = useCallback5(() => {
|
|
1313
1347
|
if (copied) return;
|
|
1314
1348
|
void writeClipboard(copyText2(rows)).then((ok) => {
|
|
1315
1349
|
if (!ok) return;
|
|
@@ -1319,7 +1353,7 @@ function DiffBlock({ diffs, labels, maxLines = DEFAULT_DIFF_MAX_LINES, className
|
|
|
1319
1353
|
}, 1e3);
|
|
1320
1354
|
});
|
|
1321
1355
|
}, [copied, rows]);
|
|
1322
|
-
const onToggle =
|
|
1356
|
+
const onToggle = useCallback5(() => {
|
|
1323
1357
|
setExpanded((value) => !value);
|
|
1324
1358
|
}, []);
|
|
1325
1359
|
if (rows.length === 0) return null;
|
|
@@ -1329,8 +1363,8 @@ function DiffBlock({ diffs, labels, maxLines = DEFAULT_DIFF_MAX_LINES, className
|
|
|
1329
1363
|
const tailLines = maxLines - headLines;
|
|
1330
1364
|
const head = capped ? rows.slice(0, headLines) : rows;
|
|
1331
1365
|
const tail = capped ? rows.slice(rows.length - tailLines) : [];
|
|
1332
|
-
return /* @__PURE__ */ jsxs4("div", { className:
|
|
1333
|
-
/* @__PURE__ */
|
|
1366
|
+
return /* @__PURE__ */ jsxs4("div", { className: clsx5(CodeCard_module_default.card, DiffBlock_module_default.block, className), "data-diff": "", "data-code-wrap": wrapped, children: [
|
|
1367
|
+
/* @__PURE__ */ jsx6(
|
|
1334
1368
|
CodeToolbar,
|
|
1335
1369
|
{
|
|
1336
1370
|
lang: language,
|
|
@@ -1346,29 +1380,29 @@ function DiffBlock({ diffs, labels, maxLines = DEFAULT_DIFF_MAX_LINES, className
|
|
|
1346
1380
|
}
|
|
1347
1381
|
),
|
|
1348
1382
|
/* @__PURE__ */ jsxs4("div", { className: DiffBlock_module_default.body, children: [
|
|
1349
|
-
head.map((row, index) => /* @__PURE__ */
|
|
1350
|
-
hidden > 0 && /* @__PURE__ */
|
|
1351
|
-
tail.map((row, index) => /* @__PURE__ */
|
|
1383
|
+
head.map((row, index) => /* @__PURE__ */ jsx6("div", { className: clsx5(DiffBlock_module_default.line, ROW_CLASS[row.kind]), children: row.text }, index)),
|
|
1384
|
+
hidden > 0 && /* @__PURE__ */ jsx6(FoldToggle, { className: DiffBlock_module_default.expand, expanded, hidden, labels, onToggle }),
|
|
1385
|
+
tail.map((row, index) => /* @__PURE__ */ jsx6("div", { className: clsx5(DiffBlock_module_default.line, ROW_CLASS[row.kind]), children: row.text }, index))
|
|
1352
1386
|
] })
|
|
1353
1387
|
] });
|
|
1354
1388
|
}
|
|
1355
1389
|
|
|
1356
1390
|
// src/SearchBlock.tsx
|
|
1357
|
-
import { useCallback as
|
|
1358
|
-
import
|
|
1391
|
+
import { useCallback as useCallback6, useState as useState6 } from "react";
|
|
1392
|
+
import clsx6 from "clsx";
|
|
1359
1393
|
|
|
1360
1394
|
// .build/css/SearchBlock.module.mjs
|
|
1361
|
-
var
|
|
1362
|
-
if (typeof document !== "undefined" && !document.querySelector('style[data-dsh-ui-primitives="' +
|
|
1395
|
+
var id6 = "@seekbuddy/dsh-ui/SearchBlock.module.css";
|
|
1396
|
+
if (typeof document !== "undefined" && !document.querySelector('style[data-dsh-ui-primitives="' + id6 + '"]')) {
|
|
1363
1397
|
const element = document.createElement("style");
|
|
1364
|
-
element.setAttribute("data-dsh-ui-primitives",
|
|
1365
|
-
element.textContent = "._-soDW_block{--dsl-search-radius:var(--dsw-radius-lg);--dsl-search-line-height:22px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-markdown-code-block);border-radius:var(--dsl-search-radius);margin:16px 0;position:relative}._-soDW_header{background:var(--dsw-alias-markdown-code-block-banner);border-top-left-radius:var(--dsl-search-radius);border-top-right-radius:var(--dsl-search-radius);align-items:center;gap:12px;padding:9px 14px;display:flex}._-soDW_summary{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:var(--dsw-font-xs-13);color:var(--dsw-alias-label-secondary);flex:1;overflow:hidden}._-soDW_copyButton{color:var(--dsw-alias-label-secondary);cursor:pointer;font:var(--dsw-font-xs-13);background-color:#0000;border:none;flex:none;margin:0;padding:0}._-soDW_body{font:var(--dsw-font-markdown-code-block);padding:8px 14px 12px 0;overflow:auto hidden}._-soDW_line{min-height:var(--dsl-search-line-height);white-space:pre;padding-left:14px}._-soDW_lineNumber{color:var(--dsw-alias-label-tertiary)}._-soDW_fileHeader{width:100%;min-height:var(--dsl-search-line-height);cursor:pointer;font:inherit;text-align:left;background-color:#0000;border:none;align-items:baseline;gap:8px;padding:0 14px;display:flex}._-soDW_filePath{min-width:0;color:var(--dsw-alias-label-primary);white-space:pre;font-weight:600}._-soDW_fileCount{color:var(--dsw-alias-label-tertiary);flex:none}._-soDW_expand{width:100%;color:var(--dsw-alias-label-tertiary);cursor:pointer;font:inherit;text-align:left;background-color:#0000;border:none;padding:0 14px;display:block}._-soDW_expand:hover{color:var(--dsw-alias-label-secondary)}._-soDW_empty{font:var(--dsw-font-markdown-code-block);color:var(--dsw-alias-label-tertiary);padding:12px 14px}";
|
|
1398
|
+
element.setAttribute("data-dsh-ui-primitives", id6);
|
|
1399
|
+
element.textContent = "._-soDW_block{--dsl-search-radius:var(--dsw-radius-lg);--dsl-search-line-height:22px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-markdown-code-block);border-radius:var(--dsl-search-radius);margin:16px 0;position:relative}._-soDW_header{background:var(--dsw-alias-markdown-code-block-banner);border-top-left-radius:var(--dsl-search-radius);border-top-right-radius:var(--dsl-search-radius);align-items:center;gap:12px;padding:9px 14px;display:flex}._-soDW_summary{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:var(--dsw-font-xs-13);color:var(--dsw-alias-label-secondary);flex:1;overflow:hidden}._-soDW_copyButton{color:var(--dsw-alias-label-secondary);cursor:pointer;font:var(--dsw-font-xs-13);background-color:#0000;border:none;flex:none;margin:0;padding:0}._-soDW_body{font:var(--dsw-font-markdown-code-block);padding:8px 14px 12px 0;overflow:auto hidden}._-soDW_line{min-height:var(--dsl-search-line-height);white-space:pre;padding-left:14px}._-soDW_lineNumber{color:var(--dsw-alias-label-tertiary)}._-soDW_fileHeader{width:100%;min-height:var(--dsl-search-line-height);cursor:pointer;font:inherit;text-align:left;background-color:#0000;border:none;align-items:baseline;gap:8px;padding:0 14px;display:flex}._-soDW_filePath{min-width:0;color:var(--dsw-alias-label-primary);white-space:pre;font-weight:600}._-soDW_fileCount{color:var(--dsw-alias-label-tertiary);flex:none}._-soDW_expand{width:100%;color:var(--dsw-alias-label-tertiary);cursor:pointer;font:inherit;text-align:left;background-color:#0000;border:none;padding:0 14px;display:block}@media (hover:hover){._-soDW_expand:hover{color:var(--dsw-alias-label-secondary)}}._-soDW_empty{font:var(--dsw-font-markdown-code-block);color:var(--dsw-alias-label-tertiary);padding:12px 14px}";
|
|
1366
1400
|
document.head.appendChild(element);
|
|
1367
1401
|
}
|
|
1368
|
-
var SearchBlock_module_default = { "
|
|
1402
|
+
var SearchBlock_module_default = { "copyButton": "_-soDW_copyButton", "fileCount": "_-soDW_fileCount", "line": "_-soDW_line", "body": "_-soDW_body", "empty": "_-soDW_empty", "header": "_-soDW_header", "filePath": "_-soDW_filePath", "expand": "_-soDW_expand", "block": "_-soDW_block", "summary": "_-soDW_summary", "fileHeader": "_-soDW_fileHeader", "lineNumber": "_-soDW_lineNumber" };
|
|
1369
1403
|
|
|
1370
1404
|
// src/SearchBlock.tsx
|
|
1371
|
-
import { jsx as
|
|
1405
|
+
import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
1372
1406
|
var DEFAULT_SEARCH_MAX_LINES = 16;
|
|
1373
1407
|
function copyText3(props) {
|
|
1374
1408
|
if (props.kind === "paths") return props.paths.join("\n");
|
|
@@ -1416,11 +1450,11 @@ function SearchBlock(props) {
|
|
|
1416
1450
|
const rows = toRows(props, collapsed);
|
|
1417
1451
|
const shown = shownCount(props);
|
|
1418
1452
|
const empty = rows.length === 0;
|
|
1419
|
-
const { copied, onCopy } =
|
|
1420
|
-
const onToggle =
|
|
1453
|
+
const { copied, onCopy } = useClipboardCopy(copyText3(props));
|
|
1454
|
+
const onToggle = useCallback6(() => {
|
|
1421
1455
|
setExpanded((value) => !value);
|
|
1422
1456
|
}, []);
|
|
1423
|
-
const toggleFile =
|
|
1457
|
+
const toggleFile = useCallback6((index) => {
|
|
1424
1458
|
setCollapsed((prev) => {
|
|
1425
1459
|
const next = new Set(prev);
|
|
1426
1460
|
if (next.has(index)) next.delete(index);
|
|
@@ -1437,7 +1471,7 @@ function SearchBlock(props) {
|
|
|
1437
1471
|
) : void 0;
|
|
1438
1472
|
const tail = tailHeader === void 0 ? naturalTail : naturalTail.slice(1);
|
|
1439
1473
|
const renderRow = (row) => {
|
|
1440
|
-
if (row.type === "path") return /* @__PURE__ */
|
|
1474
|
+
if (row.type === "path") return /* @__PURE__ */ jsx7("div", { className: SearchBlock_module_default.line, children: row.path });
|
|
1441
1475
|
if (row.type === "match") {
|
|
1442
1476
|
return /* @__PURE__ */ jsxs5("div", { className: SearchBlock_module_default.line, children: [
|
|
1443
1477
|
/* @__PURE__ */ jsxs5("span", { className: SearchBlock_module_default.lineNumber, children: [
|
|
@@ -1457,20 +1491,20 @@ function SearchBlock(props) {
|
|
|
1457
1491
|
toggleFile(row.index);
|
|
1458
1492
|
},
|
|
1459
1493
|
children: [
|
|
1460
|
-
/* @__PURE__ */
|
|
1461
|
-
/* @__PURE__ */
|
|
1494
|
+
/* @__PURE__ */ jsx7("span", { className: SearchBlock_module_default.filePath, children: row.path }),
|
|
1495
|
+
/* @__PURE__ */ jsx7("span", { className: SearchBlock_module_default.fileCount, children: row.count })
|
|
1462
1496
|
]
|
|
1463
1497
|
}
|
|
1464
1498
|
);
|
|
1465
1499
|
};
|
|
1466
|
-
return /* @__PURE__ */ jsxs5("div", { className:
|
|
1500
|
+
return /* @__PURE__ */ jsxs5("div", { className: clsx6(SearchBlock_module_default.block, className), "data-search": props.kind, children: [
|
|
1467
1501
|
/* @__PURE__ */ jsxs5("div", { className: SearchBlock_module_default.header, children: [
|
|
1468
|
-
/* @__PURE__ */
|
|
1469
|
-
!empty && /* @__PURE__ */
|
|
1502
|
+
/* @__PURE__ */ jsx7("span", { className: SearchBlock_module_default.summary, children: summaryText(props, shown, truncated, total) }),
|
|
1503
|
+
!empty && /* @__PURE__ */ jsx7("button", { type: "button", className: SearchBlock_module_default.copyButton, onClick: onCopy, children: copied ? props.labels.copied : props.labels.copy })
|
|
1470
1504
|
] }),
|
|
1471
|
-
empty ? /* @__PURE__ */
|
|
1472
|
-
head.map((row) => /* @__PURE__ */
|
|
1473
|
-
hidden > 0 && /* @__PURE__ */
|
|
1505
|
+
empty ? /* @__PURE__ */ jsx7("div", { className: SearchBlock_module_default.empty, children: props.labels.noResults }) : /* @__PURE__ */ jsxs5("div", { className: SearchBlock_module_default.body, children: [
|
|
1506
|
+
head.map((row) => /* @__PURE__ */ jsx7("div", { children: renderRow(row) }, rowKey(row))),
|
|
1507
|
+
hidden > 0 && /* @__PURE__ */ jsx7(
|
|
1474
1508
|
"button",
|
|
1475
1509
|
{
|
|
1476
1510
|
type: "button",
|
|
@@ -1481,27 +1515,27 @@ function SearchBlock(props) {
|
|
|
1481
1515
|
children: expanded ? props.labels.collapse : props.labels.expand(hidden)
|
|
1482
1516
|
}
|
|
1483
1517
|
),
|
|
1484
|
-
tailHeader !== void 0 && /* @__PURE__ */
|
|
1485
|
-
tail.map((row) => /* @__PURE__ */
|
|
1518
|
+
tailHeader !== void 0 && /* @__PURE__ */ jsx7("div", { children: renderRow(tailHeader) }, `tailHeader:${rowKey(tailHeader)}`),
|
|
1519
|
+
tail.map((row) => /* @__PURE__ */ jsx7("div", { children: renderRow(row) }, rowKey(row)))
|
|
1486
1520
|
] })
|
|
1487
1521
|
] });
|
|
1488
1522
|
}
|
|
1489
1523
|
|
|
1490
1524
|
// src/WebBlock.tsx
|
|
1491
|
-
import
|
|
1525
|
+
import clsx7 from "clsx";
|
|
1492
1526
|
|
|
1493
1527
|
// .build/css/WebBlock.module.mjs
|
|
1494
|
-
var
|
|
1495
|
-
if (typeof document !== "undefined" && !document.querySelector('style[data-dsh-ui-primitives="' +
|
|
1528
|
+
var id7 = "@seekbuddy/dsh-ui/WebBlock.module.css";
|
|
1529
|
+
if (typeof document !== "undefined" && !document.querySelector('style[data-dsh-ui-primitives="' + id7 + '"]')) {
|
|
1496
1530
|
const element = document.createElement("style");
|
|
1497
|
-
element.setAttribute("data-dsh-ui-primitives",
|
|
1498
|
-
element.textContent = ".MTeYQa_block{--dsl-web-radius:var(--dsw-radius-lg);color:var(--dsw-alias-label-primary);background:var(--dsw-alias-markdown-code-block);border-radius:var(--dsl-web-radius);margin:16px 0;padding:12px 14px}.MTeYQa_answer{margin-bottom:8px}.MTeYQa_answer>div>:first-child{margin-top:0}.MTeYQa_answer>div>:last-child{margin-bottom:0}.MTeYQa_sources{flex-direction:column;gap:10px;max-height:320px;margin:0;padding-left:2.5em;display:flex;overflow-y:auto}.MTeYQa_source{min-width:0}.MTeYQa_sourceLink{color:var(--dsw-alias-link);word-break:break-word;font-size:14px;font-weight:500;line-height:20px;text-decoration:none}.MTeYQa_linkIcon{vertical-align:-.25em;width:1.1em;height:1.1em;margin-right:5px}.MTeYQa_sourceLink:
|
|
1531
|
+
element.setAttribute("data-dsh-ui-primitives", id7);
|
|
1532
|
+
element.textContent = ".MTeYQa_block{--dsl-web-radius:var(--dsw-radius-lg);color:var(--dsw-alias-label-primary);background:var(--dsw-alias-markdown-code-block);border-radius:var(--dsl-web-radius);margin:16px 0;padding:12px 14px}.MTeYQa_answer{margin-bottom:8px}.MTeYQa_answer>div>:first-child{margin-top:0}.MTeYQa_answer>div>:last-child{margin-bottom:0}.MTeYQa_sources{flex-direction:column;gap:10px;max-height:320px;margin:0;padding-left:2.5em;display:flex;overflow-y:auto}.MTeYQa_source{min-width:0}.MTeYQa_sourceLink{color:var(--dsw-alias-link);word-break:break-word;font-size:14px;font-weight:500;line-height:20px;text-decoration:none}.MTeYQa_linkIcon{vertical-align:-.25em;width:1.1em;height:1.1em;margin-right:5px}.MTeYQa_sourceLink:focus-visible{text-underline-offset:3px;text-decoration:underline dotted}@media (hover:hover){.MTeYQa_sourceLink:hover{text-underline-offset:3px;text-decoration:underline dotted}}.MTeYQa_snippet{color:var(--dsw-alias-label-secondary);word-break:break-word;margin-top:2px;font-size:13px;line-height:19px}.MTeYQa_published{color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-xs-13);margin-top:2px}.MTeYQa_truncated{color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-xs-13);margin-top:8px}.MTeYQa_empty{color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xs-13)}.MTeYQa_fetch{flex-direction:column;gap:6px;display:flex}.MTeYQa_fetchUrl{color:var(--dsw-alias-link);font-family:var(--ds-font-family-code);word-break:break-all;font-size:13px;font-weight:500;line-height:19px;text-decoration:none}.MTeYQa_fetchUrl:focus-visible{text-underline-offset:3px;text-decoration:underline dotted}@media (hover:hover){.MTeYQa_fetchUrl:hover{text-underline-offset:3px;text-decoration:underline dotted}}.MTeYQa_fetchMeta{align-items:baseline;gap:12px;display:flex}.MTeYQa_status{color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xs-13)}.MTeYQa_fetch .MTeYQa_truncated{margin-top:0}";
|
|
1499
1533
|
document.head.appendChild(element);
|
|
1500
1534
|
}
|
|
1501
|
-
var WebBlock_module_default = { "
|
|
1535
|
+
var WebBlock_module_default = { "answer": "MTeYQa_answer", "sources": "MTeYQa_sources", "source": "MTeYQa_source", "empty": "MTeYQa_empty", "fetch": "MTeYQa_fetch", "fetchUrl": "MTeYQa_fetchUrl", "fetchMeta": "MTeYQa_fetchMeta", "status": "MTeYQa_status", "linkIcon": "MTeYQa_linkIcon", "truncated": "MTeYQa_truncated", "block": "MTeYQa_block", "published": "MTeYQa_published", "snippet": "MTeYQa_snippet", "sourceLink": "MTeYQa_sourceLink" };
|
|
1502
1536
|
|
|
1503
1537
|
// src/WebBlock.tsx
|
|
1504
|
-
import { jsx as
|
|
1538
|
+
import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
1505
1539
|
function safeHref(url) {
|
|
1506
1540
|
try {
|
|
1507
1541
|
const { protocol } = new URL(url);
|
|
@@ -1521,45 +1555,46 @@ function linkLabel(url, title) {
|
|
|
1521
1555
|
}
|
|
1522
1556
|
function SafeLink({ url, label, className }) {
|
|
1523
1557
|
const href = safeHref(url);
|
|
1524
|
-
if (href === void 0) return /* @__PURE__ */
|
|
1558
|
+
if (href === void 0) return /* @__PURE__ */ jsx8("span", { className, children: label });
|
|
1525
1559
|
return /* @__PURE__ */ jsxs6("a", { className, href, target: "_blank", rel: "noopener noreferrer", children: [
|
|
1526
|
-
/* @__PURE__ */
|
|
1560
|
+
/* @__PURE__ */ jsx8(LinkIconMedium, { kind: "url", href, className: WebBlock_module_default.linkIcon }),
|
|
1527
1561
|
label
|
|
1528
1562
|
] });
|
|
1529
1563
|
}
|
|
1530
1564
|
function SourceItem({ source, ordinal }) {
|
|
1531
1565
|
return /* @__PURE__ */ jsxs6("li", { className: WebBlock_module_default.source, value: ordinal, children: [
|
|
1532
|
-
/* @__PURE__ */
|
|
1533
|
-
source.snippet !== void 0 && source.snippet !== "" && /* @__PURE__ */
|
|
1534
|
-
source.publishedAt !== void 0 && source.publishedAt !== "" && /* @__PURE__ */
|
|
1566
|
+
/* @__PURE__ */ jsx8(SafeLink, { url: source.url, label: linkLabel(source.url, source.title), className: WebBlock_module_default.sourceLink }),
|
|
1567
|
+
source.snippet !== void 0 && source.snippet !== "" && /* @__PURE__ */ jsx8("div", { className: WebBlock_module_default.snippet, children: source.snippet }),
|
|
1568
|
+
source.publishedAt !== void 0 && source.publishedAt !== "" && /* @__PURE__ */ jsx8("div", { className: WebBlock_module_default.published, children: source.publishedAt })
|
|
1535
1569
|
] });
|
|
1536
1570
|
}
|
|
1537
1571
|
function WebSearchBlock({ answer, sources, truncated, labels, className }) {
|
|
1538
1572
|
const empty = (answer === void 0 || answer === "") && sources.length === 0;
|
|
1539
|
-
return /* @__PURE__ */ jsxs6("div", { className:
|
|
1540
|
-
answer !== void 0 && answer !== "" && /* @__PURE__ */
|
|
1541
|
-
empty ? /* @__PURE__ */
|
|
1542
|
-
truncated && /* @__PURE__ */
|
|
1573
|
+
return /* @__PURE__ */ jsxs6("div", { className: clsx7(WebBlock_module_default.block, className), "data-web": "search", children: [
|
|
1574
|
+
answer !== void 0 && answer !== "" && /* @__PURE__ */ jsx8("div", { className: WebBlock_module_default.answer, children: /* @__PURE__ */ jsx8(MarkdownText, { text: answer, labels: labels.markdown }) }),
|
|
1575
|
+
empty ? /* @__PURE__ */ jsx8("div", { className: WebBlock_module_default.empty, children: labels.noResults }) : /* @__PURE__ */ jsx8("ol", { className: WebBlock_module_default.sources, children: sources.map((source, index) => /* @__PURE__ */ jsx8(SourceItem, { source, ordinal: index + 1 }, index)) }),
|
|
1576
|
+
truncated && /* @__PURE__ */ jsx8("div", { className: WebBlock_module_default.truncated, children: labels.sourcesTruncated })
|
|
1543
1577
|
] });
|
|
1544
1578
|
}
|
|
1545
1579
|
function WebFetchBlock({ url, statusCode, truncated, labels, className }) {
|
|
1546
|
-
return /* @__PURE__ */ jsxs6("div", { className:
|
|
1547
|
-
/* @__PURE__ */
|
|
1580
|
+
return /* @__PURE__ */ jsxs6("div", { className: clsx7(WebBlock_module_default.block, WebBlock_module_default.fetch, className), "data-web": "fetch", children: [
|
|
1581
|
+
/* @__PURE__ */ jsx8(SafeLink, { url, label: url, className: WebBlock_module_default.fetchUrl }),
|
|
1548
1582
|
/* @__PURE__ */ jsxs6("div", { className: WebBlock_module_default.fetchMeta, children: [
|
|
1549
1583
|
/* @__PURE__ */ jsxs6("span", { className: WebBlock_module_default.status, children: [
|
|
1550
1584
|
labels.http,
|
|
1551
1585
|
" ",
|
|
1552
1586
|
statusCode
|
|
1553
1587
|
] }),
|
|
1554
|
-
truncated && /* @__PURE__ */
|
|
1588
|
+
truncated && /* @__PURE__ */ jsx8("span", { className: WebBlock_module_default.truncated, children: labels.contentTruncated })
|
|
1555
1589
|
] })
|
|
1556
1590
|
] });
|
|
1557
1591
|
}
|
|
1558
1592
|
function WebBlock(props) {
|
|
1559
|
-
return props.kind === "search" ? /* @__PURE__ */
|
|
1593
|
+
return props.kind === "search" ? /* @__PURE__ */ jsx8(WebSearchBlock, { ...props }) : /* @__PURE__ */ jsx8(WebFetchBlock, { ...props });
|
|
1560
1594
|
}
|
|
1561
1595
|
export {
|
|
1562
1596
|
CODE_HIGHLIGHT_EXTENSIONS,
|
|
1597
|
+
CommandText,
|
|
1563
1598
|
DEFAULT_DIFF_MAX_LINES,
|
|
1564
1599
|
DEFAULT_READ_MAX_LINES,
|
|
1565
1600
|
DEFAULT_SEARCH_MAX_LINES,
|