dsh-vscode-workbench 0.1.6 → 0.1.7
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/lib/client.js +96 -31
- package/lib/client.js.map +1 -1
- package/lib/types/client/Workbench.d.ts +3 -0
- package/package.json +1 -1
- package/src/client/Workbench.tsx +56 -2
- package/src/client/styles.ts +13 -3
package/lib/client.js
CHANGED
|
@@ -4475,6 +4475,73 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
4475
4475
|
};
|
|
4476
4476
|
//#endregion
|
|
4477
4477
|
//#region src/client/Workbench.tsx
|
|
4478
|
+
/** Calculate a panel width from a horizontal pointer movement. */
|
|
4479
|
+
function resizedPanelWidth(startWidth, startX, nextX, direction, min, max) {
|
|
4480
|
+
return Math.max(min, Math.min(max, Math.round(startWidth + (nextX - startX) * direction)));
|
|
4481
|
+
}
|
|
4482
|
+
function PanelResizer({ className, label, width, min, max, defaultWidth, direction, onWidth }) {
|
|
4483
|
+
const [dragging, setDragging] = (0, react.useState)(false);
|
|
4484
|
+
const stopDragging = (0, react.useRef)(() => {});
|
|
4485
|
+
(0, react.useEffect)(() => () => stopDragging.current(), []);
|
|
4486
|
+
const stop = () => stopDragging.current();
|
|
4487
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
4488
|
+
className,
|
|
4489
|
+
"data-dragging": dragging || void 0,
|
|
4490
|
+
role: "separator",
|
|
4491
|
+
"aria-label": label,
|
|
4492
|
+
"aria-orientation": "vertical",
|
|
4493
|
+
"aria-valuemin": min,
|
|
4494
|
+
"aria-valuemax": max,
|
|
4495
|
+
"aria-valuenow": Math.round(width),
|
|
4496
|
+
tabIndex: 0,
|
|
4497
|
+
title: `${label},双击恢复默认`,
|
|
4498
|
+
onDoubleClick: () => onWidth(defaultWidth),
|
|
4499
|
+
onKeyDown: (event) => {
|
|
4500
|
+
if (event.key === "Home") {
|
|
4501
|
+
event.preventDefault();
|
|
4502
|
+
onWidth(defaultWidth);
|
|
4503
|
+
return;
|
|
4504
|
+
}
|
|
4505
|
+
if (event.key !== "ArrowLeft" && event.key !== "ArrowRight") return;
|
|
4506
|
+
event.preventDefault();
|
|
4507
|
+
const pointerDelta = event.key === "ArrowRight" ? 10 : -10;
|
|
4508
|
+
onWidth(Math.max(min, Math.min(max, Math.round(width + pointerDelta * direction))));
|
|
4509
|
+
},
|
|
4510
|
+
onPointerDown: (event) => {
|
|
4511
|
+
if (event.button !== 0) return;
|
|
4512
|
+
event.preventDefault();
|
|
4513
|
+
stop();
|
|
4514
|
+
const startX = event.clientX;
|
|
4515
|
+
const startWidth = width;
|
|
4516
|
+
event.currentTarget.setPointerCapture?.(event.pointerId);
|
|
4517
|
+
const previousCursor = document.body.style.cursor;
|
|
4518
|
+
const previousUserSelect = document.body.style.userSelect;
|
|
4519
|
+
document.body.style.cursor = "ew-resize";
|
|
4520
|
+
document.body.style.userSelect = "none";
|
|
4521
|
+
setDragging(true);
|
|
4522
|
+
const move = (next) => onWidth(resizedPanelWidth(startWidth, startX, next.clientX, direction, min, max));
|
|
4523
|
+
const cleanup = (commit = false, nextX = startX) => {
|
|
4524
|
+
window.removeEventListener("pointermove", move);
|
|
4525
|
+
window.removeEventListener("pointerup", up);
|
|
4526
|
+
window.removeEventListener("pointercancel", cancel);
|
|
4527
|
+
window.removeEventListener("blur", cancel);
|
|
4528
|
+
document.body.style.cursor = previousCursor;
|
|
4529
|
+
document.body.style.userSelect = previousUserSelect;
|
|
4530
|
+
setDragging(false);
|
|
4531
|
+
stopDragging.current = () => {};
|
|
4532
|
+
if (!commit) return;
|
|
4533
|
+
onWidth(Math.max(min, Math.min(max, Math.round(startWidth + (nextX - startX) * direction))));
|
|
4534
|
+
};
|
|
4535
|
+
const up = (next) => cleanup(true, next.clientX);
|
|
4536
|
+
const cancel = () => cleanup();
|
|
4537
|
+
stopDragging.current = cancel;
|
|
4538
|
+
window.addEventListener("pointermove", move);
|
|
4539
|
+
window.addEventListener("pointerup", up);
|
|
4540
|
+
window.addEventListener("pointercancel", cancel);
|
|
4541
|
+
window.addEventListener("blur", cancel);
|
|
4542
|
+
}
|
|
4543
|
+
});
|
|
4544
|
+
}
|
|
4478
4545
|
function unloadedTab(path) {
|
|
4479
4546
|
return {
|
|
4480
4547
|
path,
|
|
@@ -5977,21 +6044,15 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
5977
6044
|
chatVisible && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("aside", {
|
|
5978
6045
|
className: "dvw-chat",
|
|
5979
6046
|
children: [
|
|
5980
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
6047
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(PanelResizer, {
|
|
5981
6048
|
className: "dvw-chat-resizer",
|
|
5982
|
-
|
|
5983
|
-
|
|
5984
|
-
|
|
5985
|
-
|
|
5986
|
-
|
|
5987
|
-
|
|
5988
|
-
|
|
5989
|
-
window.removeEventListener("pointermove", move);
|
|
5990
|
-
window.removeEventListener("pointerup", up);
|
|
5991
|
-
};
|
|
5992
|
-
window.addEventListener("pointermove", move);
|
|
5993
|
-
window.addEventListener("pointerup", up);
|
|
5994
|
-
}
|
|
6049
|
+
label: "拖动调整 DSH 对话栏宽度",
|
|
6050
|
+
width: chatWidth,
|
|
6051
|
+
min: 400,
|
|
6052
|
+
max: 720,
|
|
6053
|
+
defaultWidth: 420,
|
|
6054
|
+
direction: -1,
|
|
6055
|
+
onWidth: setChatWidth
|
|
5995
6056
|
}),
|
|
5996
6057
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("header", {
|
|
5997
6058
|
className: "dvw-chat-head",
|
|
@@ -6179,21 +6240,15 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
6179
6240
|
})
|
|
6180
6241
|
]
|
|
6181
6242
|
}),
|
|
6182
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
6243
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(PanelResizer, {
|
|
6183
6244
|
className: "dvw-side-resizer",
|
|
6184
|
-
|
|
6185
|
-
|
|
6186
|
-
|
|
6187
|
-
|
|
6188
|
-
|
|
6189
|
-
|
|
6190
|
-
|
|
6191
|
-
window.removeEventListener("pointermove", move);
|
|
6192
|
-
window.removeEventListener("pointerup", up);
|
|
6193
|
-
};
|
|
6194
|
-
window.addEventListener("pointermove", move);
|
|
6195
|
-
window.addEventListener("pointerup", up);
|
|
6196
|
-
}
|
|
6245
|
+
label: "拖动调整源码管理侧边栏宽度",
|
|
6246
|
+
width: sideWidth,
|
|
6247
|
+
min: 210,
|
|
6248
|
+
max: 640,
|
|
6249
|
+
defaultWidth: 210,
|
|
6250
|
+
direction: 1,
|
|
6251
|
+
onWidth: setSideWidth
|
|
6197
6252
|
}),
|
|
6198
6253
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("main", {
|
|
6199
6254
|
className: "dvw-main",
|
|
@@ -6441,7 +6496,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
6441
6496
|
body[data-ds-dark-theme] .dvw-overlay,.dvw-overlay[data-dvw-theme=dark]{color-scheme:dark}
|
|
6442
6497
|
.dvw-overlay[data-dvw-theme=dark]{--dvw-base:#151517;--dvw-surface-1:#232324;--dvw-surface-2:#2c2c2e;--dvw-surface-3:#353638;--dvw-text:#f9fafb;--dvw-text-2:#cfd3d6;--dvw-text-3:#adb2b8;--dvw-border:#ffffff1f;--dvw-border-soft:#ffffff29;--dvw-hover:#ffffff14;--dvw-active:#ffffff24;--dvw-accent:#679efe;--dvw-error:#f25a5a;--dvw-success:#22c55e;--dvw-warn:#f59e0b}
|
|
6443
6498
|
.dvw-overlay[data-dvw-theme=light]{--dvw-base:#fff;--dvw-surface-1:#fff;--dvw-surface-2:#fff;--dvw-surface-3:#fff;--dvw-text:#0f1115;--dvw-text-2:#61666b;--dvw-text-3:#81858c;--dvw-border:#0000001a;--dvw-border-soft:#0000001f;--dvw-hover:#2631480f;--dvw-active:#2631481a;--dvw-accent:#4176e6;--dvw-error:#ec1313;--dvw-success:#22c55e;--dvw-warn:#f59e0b;color-scheme:light}
|
|
6444
|
-
.dvw-overlay *{box-sizing:border-box}.dvw-activity{grid-row:1/3;background:var(--dvw-base);border-right:1px solid var(--dvw-border-soft);display:flex;flex-direction:column;align-items:center}.dvw-act{width:48px;height:48px;border:0;border-left:2px solid transparent;background:transparent;color:var(--dvw-text-3);font-size:22px;cursor:pointer}.dvw-act:hover,.dvw-act[data-active=true]{color:var(--dvw-text)}.dvw-act[data-active=true]{border-left-color:var(--dvw-accent)}.dvw-act.dsh{margin-top:auto}.dvw-side{grid-column:2;grid-row:1/3;min-width:0;width:100%;background:var(--dvw-surface-1);border-right:1px solid var(--dvw-border);display:flex;flex-direction:column}.dvw-side-resizer{grid-column:2;grid-row:1/3;justify-self:end;width:
|
|
6499
|
+
.dvw-overlay *{box-sizing:border-box}.dvw-activity{grid-row:1/3;background:var(--dvw-base);border-right:1px solid var(--dvw-border-soft);display:flex;flex-direction:column;align-items:center}.dvw-act{width:48px;height:48px;border:0;border-left:2px solid transparent;background:transparent;color:var(--dvw-text-3);font-size:22px;cursor:pointer}.dvw-act:hover,.dvw-act[data-active=true]{color:var(--dvw-text)}.dvw-act[data-active=true]{border-left-color:var(--dvw-accent)}.dvw-act.dsh{margin-top:auto}.dvw-side{grid-column:2;grid-row:1/3;min-width:0;width:100%;background:var(--dvw-surface-1);border-right:1px solid var(--dvw-border);display:flex;flex-direction:column}.dvw-side-resizer{grid-column:2;grid-row:1/3;justify-self:end;width:4px;height:100%;z-index:4;cursor:ew-resize;transform:translateX(2px);touch-action:none}.dvw-side-resizer:hover,.dvw-side-resizer:focus-visible,.dvw-side-resizer[data-dragging=true]{background:var(--dvw-accent)}.dvw-side-head{height:36px;display:flex;align-items:center;padding:0 12px;text-transform:uppercase;font-size:11px;letter-spacing:.4px}.dvw-toolbar{margin-left:auto;display:flex;gap:2px}.dvw-icon{border:0;background:transparent;color:var(--dvw-text-2);border-radius:4px;min-width:24px;height:24px;display:inline-grid;place-items:center;cursor:pointer}.dvw-icon:hover{background:var(--dvw-hover);color:var(--dvw-text)}.dvw-icon:disabled{opacity:.45;cursor:default}.dvw-file-picker{display:none}.dvw-tree,.dvw-results,.dvw-git{overflow:auto;flex:1}.dvw-tree[data-drop-target=true]{outline:1px dashed var(--dvw-accent);outline-offset:-3px}.dvw-tree-row{display:flex;align-items:center;height:24px;padding-right:6px;cursor:pointer;white-space:nowrap}.dvw-tree-row:hover{background:var(--dvw-hover)}.dvw-tree-row[data-selected=true],.dvw-tree-row[data-drop-target=true]{background:var(--dvw-active)}.dvw-chevron{width:16px;flex:none;text-align:center;color:var(--dvw-text-3)}.dvw-file-icon{width:18px;flex:none;color:var(--dvw-text-2)}.dvw-file-icon.folder{color:var(--dvw-accent)}.dvw-tree-name{overflow:hidden;text-overflow:ellipsis}.dvw-tree-rename,.dvw-tree-create-input{min-width:0;flex:1;height:20px;border:1px solid var(--dvw-accent);border-radius:0;background:var(--dvw-surface-1);color:var(--dvw-text);padding:0 3px;font:inherit;letter-spacing:0;outline:0}.dvw-tree-create-row{cursor:text}.dvw-tree-create-row:hover{background:transparent}.dvw-tree-create-input::placeholder{color:var(--dvw-text-3)}.dvw-tree-create-input[aria-invalid=true]{border-color:var(--dvw-error)}.dvw-tree-create-error{min-height:20px;padding-top:2px;padding-right:6px;padding-bottom:3px;color:var(--dvw-error);font-size:11px;line-height:15px;white-space:normal;overflow-wrap:anywhere}.dvw-tree-status{margin-left:auto;padding-left:6px;font-size:11px;font-weight:600;color:var(--dvw-warn)}.dvw-tree-status[data-status=M]{color:var(--dvw-warn)}.dvw-tree-status[data-status=A]{color:var(--dvw-success)}.dvw-tree-status[data-status=D]{color:var(--dvw-error)}.dvw-context-menu{position:fixed;z-index:40;min-width:148px;padding:4px;border:1px solid var(--dvw-border);border-radius:5px;background:var(--dvw-surface-3);box-shadow:0 6px 20px rgba(0,0,0,.3)}.dvw-context-menu button{width:100%;height:28px;border:0;border-radius:3px;background:transparent;color:var(--dvw-text);display:flex;align-items:center;gap:8px;padding:0 8px;text-align:left;font:inherit;cursor:pointer}.dvw-context-menu button:hover{background:var(--dvw-hover)}.dvw-context-menu .dvw-context-delete{color:var(--dvw-error)}
|
|
6445
6500
|
.dvw-main{grid-column:3;grid-row:1;display:flex;min-width:0;min-height:0;flex-direction:column;background:var(--dvw-surface-1)}.dvw-tabs{height:36px;background:var(--dvw-base);display:flex;overflow-x:auto}.dvw-tab{height:36px;min-width:110px;max-width:260px;border:0;border-right:1px solid var(--dvw-border-soft);background:var(--dvw-base);color:var(--dvw-text-2);padding:0 8px 0 12px;display:flex;align-items:center;gap:8px;cursor:pointer}.dvw-tab[data-active=true]{background:var(--dvw-surface-1);color:var(--dvw-text);border-top:1px solid var(--dvw-accent)}.dvw-tab-name{overflow:hidden;text-overflow:ellipsis;flex:1;text-align:left}.dvw-editor{position:relative;flex:1;min-height:0}.dvw-editor-toolbar{position:absolute;z-index:3;top:0;right:0;left:0;height:36px;display:flex;align-items:center;justify-content:flex-end;gap:4px;padding:0 10px;border-bottom:1px solid var(--dvw-border-soft);background:var(--dvw-surface-1)}.dvw-editor-body{position:absolute;inset:0;min-height:0}.dvw-editor-body[data-toolbar=true]{top:36px}.dvw-mode-button{height:27px;padding:0 10px;display:flex;align-items:center;gap:6px;border:1px solid transparent;border-radius:5px;background:transparent;color:var(--dvw-text-2);cursor:pointer}.dvw-mode-button:hover{background:var(--dvw-hover)}.dvw-mode-button[data-active=true]{border-color:var(--dvw-border);background:var(--dvw-active);color:var(--dvw-text)}.dvw-empty{height:100%;display:grid;place-items:center;color:var(--dvw-text-3);text-align:center}.dvw-empty strong{font-size:24px;color:var(--dvw-text-2)}.dvw-message{padding:12px;color:var(--dvw-warn)}
|
|
6446
6501
|
.dvw-bottom{grid-column:3;grid-row:2;height:260px;min-height:120px;border-top:1px solid var(--dvw-border);background:var(--dvw-base);display:flex;flex-direction:column}.dvw-bottom-head{height:35px;display:flex;align-items:center;gap:14px;padding:0 12px}.dvw-bottom-title{border:0;border-bottom:1px solid var(--dvw-text);background:transparent;color:var(--dvw-text);height:35px}.dvw-bottom-body{flex:1;min-height:0}.dvw-status{grid-column:1/4;grid-row:3;background:var(--dvw-accent);color:#fff;display:flex;align-items:center;padding:0 8px;gap:18px;font-size:12px}.dvw-theme-control{position:relative;margin-left:auto}.dvw-theme-trigger{height:22px;min-width:112px;display:flex;align-items:center;gap:7px;padding:0 8px;border:0;border-radius:5px;background:color-mix(in srgb,#000 17%,transparent);color:#fff;cursor:pointer}.dvw-theme-trigger:hover{background:color-mix(in srgb,#000 27%,transparent)}.dvw-theme-orb{width:13px;height:13px;border:2px solid #fff;border-radius:50%;background:linear-gradient(90deg,#17181c 50%,#fff 50%)}.dvw-theme-orb.dark{background:#17181c}.dvw-theme-orb.light{background:#fff}.dvw-theme-menu{position:absolute;right:0;bottom:29px;width:224px;padding:6px;border:1px solid var(--dvw-border);border-radius:10px;background:var(--dvw-surface-3);box-shadow:0 10px 35px rgba(0,0,0,.28);color:var(--dvw-text)}.dvw-theme-menu button{width:100%;min-height:48px;border:0;border-radius:7px;background:transparent;color:inherit;display:grid;grid-template-columns:30px 1fr 20px;align-items:center;text-align:left;padding:6px;cursor:pointer}.dvw-theme-menu button:hover,.dvw-theme-menu button[aria-checked=true]{background:var(--dvw-hover)}.dvw-theme-menu strong,.dvw-theme-menu small{display:block}.dvw-theme-menu small{color:var(--dvw-text-3);margin-top:2px}.dvw-theme-swatch{width:22px;height:22px;border-radius:6px;border:1px solid var(--dvw-border);background:linear-gradient(135deg,#17181c 0 50%,#fff 50%)}.dvw-theme-swatch.dark{background:#17181c}.dvw-theme-swatch.light{background:#fff}
|
|
6447
6502
|
.dvw-search-form{padding:8px;display:grid;gap:6px}.dvw-input,.dvw-textarea,.dvw-select{width:100%;border:1px solid var(--dvw-border);background:var(--dvw-surface-2);color:var(--dvw-text);padding:5px 7px;outline:none}.dvw-input:focus,.dvw-textarea:focus,.dvw-select:focus{border-color:var(--dvw-accent)}.dvw-options{display:flex;align-items:center;gap:8px;font-size:11px}.dvw-result-file{padding:5px 8px;font-weight:600}.dvw-result{padding:4px 8px 4px 20px;cursor:pointer;display:flex;gap:8px}.dvw-result:hover{background:var(--dvw-hover)}.dvw-line{color:var(--dvw-text-3);min-width:30px;text-align:right}.dvw-preview{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
@@ -6460,8 +6515,18 @@ body[data-ds-dark-theme] .dvw-overlay,.dvw-overlay[data-dvw-theme=dark]{color-sc
|
|
|
6460
6515
|
.dvw-chat-head{height:36px;display:flex;align-items:center;justify-content:space-between;padding:0 6px 0 12px;border-bottom:1px solid var(--dvw-border);background:var(--dvw-base);font-weight:600}
|
|
6461
6516
|
.dvw-chat-head>span{display:flex;align-items:center;gap:7px}.dvw-chat-body{height:calc(100% - 36px);background:var(--dvw-base)}
|
|
6462
6517
|
.dvw-dsh-mark{display:block}
|
|
6463
|
-
.dvw-chat-resizer{position:fixed;top:
|
|
6464
|
-
.dvw-chat-resizer:hover,.dvw-chat-resizer:
|
|
6518
|
+
.dvw-chat-resizer{position:fixed;top:36px;right:calc(var(--dvw-chat-width) - 2px);bottom:0;width:4px;z-index:4;cursor:ew-resize;touch-action:none}
|
|
6519
|
+
.dvw-chat-resizer:hover,.dvw-chat-resizer:focus-visible,.dvw-chat-resizer[data-dragging=true]{background:var(--dvw-accent)}
|
|
6520
|
+
.dvw-side-resizer,.dvw-chat-resizer{width:10px;cursor:ew-resize;touch-action:none;background:transparent}
|
|
6521
|
+
.dvw-side-resizer{position:relative;transform:translateX(5px);z-index:22}
|
|
6522
|
+
.dvw-chat-resizer{position:fixed;top:36px;right:calc(var(--dvw-chat-width) - 5px);z-index:22}
|
|
6523
|
+
.dvw-side-resizer::after,.dvw-chat-resizer::after{content:"";position:absolute;top:0;bottom:0;left:4px;width:2px;background:var(--dvw-border)}
|
|
6524
|
+
.dvw-chat-resizer::after{left:1px;width:6px}
|
|
6525
|
+
.dvw-side-resizer:hover,.dvw-side-resizer:focus-visible,.dvw-side-resizer[data-dragging=true],.dvw-chat-resizer:hover,.dvw-chat-resizer:focus-visible,.dvw-chat-resizer[data-dragging=true]{background:transparent}
|
|
6526
|
+
.dvw-side-resizer:hover::after,.dvw-side-resizer:focus-visible::after,.dvw-side-resizer[data-dragging=true]::after,.dvw-chat-resizer:hover::after,.dvw-chat-resizer:focus-visible::after,.dvw-chat-resizer[data-dragging=true]::after{background:var(--dvw-accent)}
|
|
6527
|
+
.dvw-side{border-right-color:transparent}.dvw-chat,[data-dvw-conversation-panel]{border-left-color:transparent!important}
|
|
6528
|
+
.dvw-side-resizer::after,.dvw-chat-resizer::after{background:transparent}.dvw-side-resizer::after{left:3px;width:3px}
|
|
6529
|
+
.dvw-side-resizer:hover::after,.dvw-side-resizer:focus-visible::after,.dvw-side-resizer[data-dragging=true]::after,.dvw-chat-resizer:hover::after,.dvw-chat-resizer:focus-visible::after,.dvw-chat-resizer[data-dragging=true]::after{background:var(--dvw-accent)}
|
|
6465
6530
|
.dvw-chat-toggle{position:absolute;z-index:5;top:6px;right:6px;border:1px solid var(--dvw-border);background:var(--dvw-base)}
|
|
6466
6531
|
.dvw-overlay:not([data-dvw-chat=true]) .dvw-tabs{padding-right:36px}
|
|
6467
6532
|
[data-dvw-conversation-panel]{position:fixed!important;top:36px!important;right:0!important;bottom:var(--dvw-status-height,24px)!important;left:auto!important;width:var(--dvw-chat-width)!important;height:auto!important;min-width:0!important;z-index:21!important;border-left:1px solid var(--dsw-alias-border-l2)!important;box-shadow:none!important}
|