@dsh-workbench/core 0.1.8 → 0.1.10
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/client.js +983 -391
- package/dist/client/client.body.js +983 -391
- package/dist/client/index.js +984 -392
- package/dist/host/index.js +366 -106
- package/dist/types/app/client.d.ts +140 -12
- package/dist/types/app/layouts/env-gate/__tests__/gate-deadline.test.d.ts +1 -0
- package/dist/types/app/layouts/env-gate/gate-deadline.d.ts +4 -0
- package/dist/types/app/layouts/rightbar/MarketStates.d.ts +7 -0
- package/dist/types/app/layouts/rightbar/MarketView.d.ts +2 -1
- package/dist/types/app/layouts/rightbar/SharedSection.d.ts +11 -0
- package/dist/types/app/layouts/rightbar/__tests__/market-change.test.d.ts +1 -0
- package/dist/types/app/layouts/rightbar/__tests__/market-live.test.d.ts +1 -0
- package/dist/types/app/layouts/rightbar/__tests__/market-settle.test.d.ts +1 -0
- package/dist/types/app/layouts/rightbar/board-plan.d.ts +2 -0
- package/dist/types/app/layouts/rightbar/market-change.d.ts +4 -0
- package/dist/types/app/layouts/rightbar/market-rows.d.ts +3 -1
- package/dist/types/app/layouts/rightbar/market-settle.d.ts +2 -0
- package/dist/types/app/layouts/rightbar/market-view-text.d.ts +10 -0
- package/dist/types/app/layouts/sidebar/ProjectSwitcher.d.ts +2 -2
- package/dist/types/app/layouts/sidebar/Sidebar.d.ts +1 -1
- package/dist/types/app/layouts/sidebar/WorkspaceRenameDialog.d.ts +8 -0
- package/dist/types/app/layouts/sidebar/WorkspaceRowAction.d.ts +7 -0
- package/dist/types/app/layouts/sidebar/WorkspaceRowLabel.d.ts +8 -0
- package/dist/types/app/layouts/sidebar/WorkspaceSearchField.d.ts +9 -0
- package/dist/types/app/layouts/sidebar/__tests__/workspace-name.test.d.ts +1 -0
- package/dist/types/app/layouts/sidebar/workspace-items.d.ts +11 -0
- package/dist/types/app/layouts/sidebar/workspace-name.d.ts +16 -0
- package/dist/types/app/units/__tests__/registry.test.d.ts +1 -0
- package/dist/types/app/units/fixture-unit-mock.d.ts +3 -1
- package/dist/types/modules/panels/__tests__/market-registries.test.d.ts +1 -0
- package/dist/types/modules/panels/model/market.d.ts +2 -0
- package/dist/types/shared/api/host/__tests__/profile-registries.test.d.ts +1 -0
- package/dist/types/shared/api/host/mount-units.d.ts +13 -6
- package/dist/types/shared/api/host/profile-registries.d.ts +21 -0
- package/dist/types/shared/hooks/mock-mode.d.ts +1 -0
- package/docs/OPERATIONS.md +2 -0
- package/package.json +2 -2
package/client.js
CHANGED
|
@@ -146,6 +146,14 @@ window.__ModuleLoader__.load({
|
|
|
146
146
|
}] : [],
|
|
147
147
|
...capability.command === void 0 || sourceUnknown ? [] : [copyAction(t, capability.command)]
|
|
148
148
|
];
|
|
149
|
+
if (capability.status === "failed") return {
|
|
150
|
+
id: "unit-mount-failed",
|
|
151
|
+
severity: "block",
|
|
152
|
+
title: t("env.unit.failed"),
|
|
153
|
+
hint: t("env.unit.failedHint"),
|
|
154
|
+
...capability.detail === void 0 ? {} : { detail: capability.detail },
|
|
155
|
+
actions: [retryAction(t)]
|
|
156
|
+
};
|
|
149
157
|
if (capability.status === "missing-plugin") return {
|
|
150
158
|
id: "unit-missing-plugin",
|
|
151
159
|
severity: "block",
|
|
@@ -482,6 +490,7 @@ window.__ModuleLoader__.load({
|
|
|
482
490
|
var react = require("react");
|
|
483
491
|
var h = react.createElement;
|
|
484
492
|
var Fragment = react.Fragment;
|
|
493
|
+
var Component = react.Component;
|
|
485
494
|
var useState = react.useState;
|
|
486
495
|
var useEffect = react.useEffect;
|
|
487
496
|
var useLayoutEffect = react.useLayoutEffect;
|
|
@@ -524,6 +533,46 @@ window.__ModuleLoader__.load({
|
|
|
524
533
|
}));
|
|
525
534
|
}
|
|
526
535
|
//#endregion
|
|
536
|
+
//#region ../shared/dist/components/Note.js
|
|
537
|
+
function Note({ tone = "muted", as, children }) {
|
|
538
|
+
const className = tone === "problem" ? "wb-problem" : "wb-note";
|
|
539
|
+
return as === "span" ? h("span", { className }, children) : h("p", { className }, children);
|
|
540
|
+
}
|
|
541
|
+
//#endregion
|
|
542
|
+
//#region ../shared/dist/components/CardBoundary.js
|
|
543
|
+
function errorReasonOf(error) {
|
|
544
|
+
if (error instanceof Error) return error.message;
|
|
545
|
+
return typeof error === "string" ? error : JSON.stringify(error) ?? String(error);
|
|
546
|
+
}
|
|
547
|
+
var CardBoundary = class extends Component {
|
|
548
|
+
state = { reason: null };
|
|
549
|
+
static getDerivedStateFromError(error) {
|
|
550
|
+
return { reason: errorReasonOf(error) };
|
|
551
|
+
}
|
|
552
|
+
componentDidCatch(error) {
|
|
553
|
+
console.error(`[dsh-workbench] 模块 ${this.props.unit} 渲染失败:${errorReasonOf(error)}`, error);
|
|
554
|
+
}
|
|
555
|
+
componentDidUpdate(previous) {
|
|
556
|
+
if (previous.resetKey !== this.props.resetKey && this.state.reason !== null) this.setState({ reason: null });
|
|
557
|
+
}
|
|
558
|
+
retry = () => {
|
|
559
|
+
this.setState({ reason: null });
|
|
560
|
+
};
|
|
561
|
+
render() {
|
|
562
|
+
const { reason } = this.state;
|
|
563
|
+
if (reason === null) return this.props.children;
|
|
564
|
+
return h(Note, { tone: "problem" }, h("span", null, this.props.t("panels.cardBroken", {
|
|
565
|
+
unit: this.props.unit,
|
|
566
|
+
reason
|
|
567
|
+
})), " ", h(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
568
|
+
type: "button",
|
|
569
|
+
variant: "outline",
|
|
570
|
+
size: "sm",
|
|
571
|
+
onClick: this.retry
|
|
572
|
+
}, this.props.t("panels.cardRetry")));
|
|
573
|
+
}
|
|
574
|
+
};
|
|
575
|
+
//#endregion
|
|
527
576
|
//#region ../shared/dist/components/ApprovalDetail.js
|
|
528
577
|
function callOf(snapshot, callId) {
|
|
529
578
|
if (callId === void 0) return void 0;
|
|
@@ -554,10 +603,17 @@ window.__ModuleLoader__.load({
|
|
|
554
603
|
};
|
|
555
604
|
const command = typeof args.command === "string" ? args.command : "";
|
|
556
605
|
const owner = (props.units ?? []).find((face) => face.approval?.tools.includes(input.tool) === true);
|
|
557
|
-
if (owner?.approval !== void 0)
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
606
|
+
if (owner?.approval !== void 0) {
|
|
607
|
+
const Render = owner.approval.render;
|
|
608
|
+
return h(CardBoundary, {
|
|
609
|
+
unit: owner.manifest.id,
|
|
610
|
+
resetKey: props.callId ?? "",
|
|
611
|
+
t
|
|
612
|
+
}, h(Render, {
|
|
613
|
+
input,
|
|
614
|
+
t
|
|
615
|
+
}));
|
|
616
|
+
}
|
|
561
617
|
if (command === "") return null;
|
|
562
618
|
return h(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
|
|
563
619
|
code: command,
|
|
@@ -720,12 +776,6 @@ window.__ModuleLoader__.load({
|
|
|
720
776
|
}, mock.label)));
|
|
721
777
|
}
|
|
722
778
|
//#endregion
|
|
723
|
-
//#region ../shared/dist/components/Note.js
|
|
724
|
-
function Note({ tone = "muted", as, children }) {
|
|
725
|
-
const className = tone === "problem" ? "wb-problem" : "wb-note";
|
|
726
|
-
return as === "span" ? h("span", { className }, children) : h("p", { className }, children);
|
|
727
|
-
}
|
|
728
|
-
//#endregion
|
|
729
779
|
//#region ../shared/dist/components/ResourceStates.js
|
|
730
780
|
function SkeletonRows({ rows = 4 }) {
|
|
731
781
|
return h("div", {
|
|
@@ -936,6 +986,20 @@ window.__ModuleLoader__.load({
|
|
|
936
986
|
"project.none": "No project",
|
|
937
987
|
"project.empty": "No projects yet. Use “Add project” below.",
|
|
938
988
|
"project.add": "Add project…",
|
|
989
|
+
"project.search.label": "Search workspaces",
|
|
990
|
+
"project.search.placeholder": "Search workspaces (folder / name / path)",
|
|
991
|
+
"project.search.empty": "No workspace matches “{query}”.",
|
|
992
|
+
"project.rename.row": "Rename “{name}”",
|
|
993
|
+
"project.rename.current": "Give this workspace a display name…",
|
|
994
|
+
"project.rename.title": "Give “{name}” a display name",
|
|
995
|
+
"project.rename.description": "Shown after the folder name. It renames the workspace itself.",
|
|
996
|
+
"project.rename.field": "Display name",
|
|
997
|
+
"project.rename.placeholder": "e.g. Workbench shell",
|
|
998
|
+
"project.rename.hint": "Empty = folder name only",
|
|
999
|
+
"project.rename.save": "Save",
|
|
1000
|
+
"project.rename.saving": "Saving…",
|
|
1001
|
+
"project.rename.cancel": "Cancel",
|
|
1002
|
+
"project.rename.failed": "Rename failed. Try again.",
|
|
939
1003
|
"session.new": "New session",
|
|
940
1004
|
"session.new.label": "Start a session in the current project",
|
|
941
1005
|
"session.empty": "No sessions in this project yet.",
|
|
@@ -964,6 +1028,7 @@ window.__ModuleLoader__.load({
|
|
|
964
1028
|
"panels.dragHint": "Drag to reorder",
|
|
965
1029
|
"panels.unknownStep": "No suite provides this view",
|
|
966
1030
|
"panels.labelWithHint": "{label} ({hint})",
|
|
1031
|
+
"panels.dep.failed": "⚠ failed to start",
|
|
967
1032
|
"panels.dep.missingPlugin": "⚠ not ready yet",
|
|
968
1033
|
"panels.dep.missingCommands": "⚠ needs an update",
|
|
969
1034
|
"panels.dep.unchecked": "⚠ cannot check",
|
|
@@ -1008,7 +1073,7 @@ window.__ModuleLoader__.load({
|
|
|
1008
1073
|
"panels.market.empty": "No modules available",
|
|
1009
1074
|
"panels.market.installedSection": "Installed",
|
|
1010
1075
|
"panels.market.moduleOutdated": "update available",
|
|
1011
|
-
"panels.market.moduleRestartHint": "
|
|
1076
|
+
"panels.market.moduleRestartHint": "installed but not active — restart dsh once to bring it up",
|
|
1012
1077
|
"panels.market.restartNeeded": "The new version is installed — restart once to pick it up.",
|
|
1013
1078
|
"panels.market.foot": "After installing, enable it in the panel page of that project.",
|
|
1014
1079
|
"panels.market.recheck": "Check for updates",
|
|
@@ -1157,6 +1222,8 @@ window.__ModuleLoader__.load({
|
|
|
1157
1222
|
"blocker.exec.hint": "Make sure opencli is installed and on PATH (which opencli).",
|
|
1158
1223
|
"blocker.unknown.title": "Something went wrong",
|
|
1159
1224
|
"panels.reading": "Reading the panel setup…",
|
|
1225
|
+
"panels.cardBroken": "This module will not render: {unit} ({reason})",
|
|
1226
|
+
"panels.cardRetry": "Retry",
|
|
1160
1227
|
"panels.empty": "No modules on the panel yet",
|
|
1161
1228
|
"panels.emptyHint": "You can also just tell the agent: “add a module to the panel”.",
|
|
1162
1229
|
"env.title": "Preparing the workbench",
|
|
@@ -1195,6 +1262,8 @@ window.__ModuleLoader__.load({
|
|
|
1195
1262
|
"env.step.warm": "Warming up site sessions",
|
|
1196
1263
|
"env.warm.done": "{n} site(s) warmed up",
|
|
1197
1264
|
"env.warm.short": "Not warmed this time — harmless; the panel heals on first read",
|
|
1265
|
+
"env.unit.failed": "This module cannot start",
|
|
1266
|
+
"env.unit.failedHint": "It failed while assembling itself; other modules are unaffected.",
|
|
1198
1267
|
"env.unit.missingPlugin": "This module is not ready yet",
|
|
1199
1268
|
"env.unit.missingCommandsHint": "Updating it should fix this.",
|
|
1200
1269
|
"env.unit.unchecked": "Cannot check: no shell channel",
|
|
@@ -1228,6 +1297,20 @@ window.__ModuleLoader__.load({
|
|
|
1228
1297
|
"project.none": "未选择项目",
|
|
1229
1298
|
"project.empty": "还没有项目。用下面的「添加项目」选一个目录。",
|
|
1230
1299
|
"project.add": "添加项目…",
|
|
1300
|
+
"project.search.label": "搜索工作区",
|
|
1301
|
+
"project.search.placeholder": "搜索工作区(目录名 / 中文名 / 路径)",
|
|
1302
|
+
"project.search.empty": "没有匹配「{query}」的工作区。",
|
|
1303
|
+
"project.rename.row": "改「{name}」的中文名",
|
|
1304
|
+
"project.rename.current": "改当前工作区的中文名…",
|
|
1305
|
+
"project.rename.title": "给「{name}」配一个中文名",
|
|
1306
|
+
"project.rename.description": "显示在目录名后面。改的是工作区本身的名字。",
|
|
1307
|
+
"project.rename.field": "中文名",
|
|
1308
|
+
"project.rename.placeholder": "例如:工作台外壳",
|
|
1309
|
+
"project.rename.hint": "留空 = 只显示目录名",
|
|
1310
|
+
"project.rename.save": "保存",
|
|
1311
|
+
"project.rename.saving": "保存中…",
|
|
1312
|
+
"project.rename.cancel": "取消",
|
|
1313
|
+
"project.rename.failed": "改名失败了,再试一次。",
|
|
1231
1314
|
"session.new": "新会话",
|
|
1232
1315
|
"session.new.label": "在当前项目新建会话",
|
|
1233
1316
|
"session.empty": "这个项目还没有会话。",
|
|
@@ -1256,6 +1339,7 @@ window.__ModuleLoader__.load({
|
|
|
1256
1339
|
"panels.dragHint": "拖动调整顺序",
|
|
1257
1340
|
"panels.unknownStep": "这一层没有套件提供",
|
|
1258
1341
|
"panels.labelWithHint": "{label}({hint})",
|
|
1342
|
+
"panels.dep.failed": "⚠ 起不来",
|
|
1259
1343
|
"panels.dep.missingPlugin": "⚠ 还没装好",
|
|
1260
1344
|
"panels.dep.missingCommands": "⚠ 需要更新",
|
|
1261
1345
|
"panels.dep.unchecked": "⚠ 检测不了",
|
|
@@ -1300,7 +1384,7 @@ window.__ModuleLoader__.load({
|
|
|
1300
1384
|
"panels.market.empty": "暂无可用模块",
|
|
1301
1385
|
"panels.market.installedSection": "已装",
|
|
1302
1386
|
"panels.market.moduleOutdated": "有新版",
|
|
1303
|
-
"panels.market.moduleRestartHint": "
|
|
1387
|
+
"panels.market.moduleRestartHint": "装好了但还没生效 —— 重启一次 dsh 就会出来",
|
|
1304
1388
|
"panels.market.restartNeeded": "新版装好了,重启一次才生效。",
|
|
1305
1389
|
"panels.market.foot": "装好后到那个项目的面板页勾选它,模块才会出现。",
|
|
1306
1390
|
"panels.market.recheck": "重新检查更新",
|
|
@@ -1449,6 +1533,8 @@ window.__ModuleLoader__.load({
|
|
|
1449
1533
|
"blocker.exec.hint": "确认 opencli 已安装且在 PATH 里(which opencli)。",
|
|
1450
1534
|
"blocker.unknown.title": "出了点问题",
|
|
1451
1535
|
"panels.reading": "正在读取面板配置…",
|
|
1536
|
+
"panels.cardBroken": "这个模块起不来:{unit}({reason})",
|
|
1537
|
+
"panels.cardRetry": "重试",
|
|
1452
1538
|
"panels.empty": "面板里还没有模块",
|
|
1453
1539
|
"panels.emptyHint": "也可以直接跟 agent 说:「把某个模块加到面板」。",
|
|
1454
1540
|
"env.title": "准备工作台",
|
|
@@ -1487,6 +1573,8 @@ window.__ModuleLoader__.load({
|
|
|
1487
1573
|
"env.step.warm": "预热站点登录态",
|
|
1488
1574
|
"env.warm.done": "已预热 {n} 个站点",
|
|
1489
1575
|
"env.warm.short": "这次没热上 —— 不影响用,面板第一次读取会自己补",
|
|
1576
|
+
"env.unit.failed": "这个模块起不来",
|
|
1577
|
+
"env.unit.failedHint": "它自己装配时报了错,别的模块不受影响。",
|
|
1490
1578
|
"env.unit.missingPlugin": "这个模块还没装好",
|
|
1491
1579
|
"env.unit.missingCommandsHint": "更新之后就能用了。",
|
|
1492
1580
|
"env.unit.unchecked": "检测不了:拿不到执行通道",
|
|
@@ -1545,6 +1633,31 @@ window.__ModuleLoader__.load({
|
|
|
1545
1633
|
en
|
|
1546
1634
|
};
|
|
1547
1635
|
}
|
|
1636
|
+
function reasonOf(error) {
|
|
1637
|
+
if (error instanceof Error) return error.message;
|
|
1638
|
+
return typeof error === "string" ? error : String(error);
|
|
1639
|
+
}
|
|
1640
|
+
function mergeMessagesSkipping(base, contributions) {
|
|
1641
|
+
let dictionaries = base;
|
|
1642
|
+
const accepted = [];
|
|
1643
|
+
const problems = [];
|
|
1644
|
+
for (const item of contributions) {
|
|
1645
|
+
if (item.messages === void 0) continue;
|
|
1646
|
+
try {
|
|
1647
|
+
dictionaries = mergeMessages(base, [...accepted, item]);
|
|
1648
|
+
accepted.push(item);
|
|
1649
|
+
} catch (error) {
|
|
1650
|
+
problems.push({
|
|
1651
|
+
unit: item.unit,
|
|
1652
|
+
reason: reasonOf(error)
|
|
1653
|
+
});
|
|
1654
|
+
}
|
|
1655
|
+
}
|
|
1656
|
+
return {
|
|
1657
|
+
dictionaries,
|
|
1658
|
+
problems
|
|
1659
|
+
};
|
|
1660
|
+
}
|
|
1548
1661
|
//#endregion
|
|
1549
1662
|
//#region ../shared/dist/lib/blocker-action.js
|
|
1550
1663
|
function blockerPending(busy, running) {
|
|
@@ -1620,9 +1733,11 @@ window.__ModuleLoader__.load({
|
|
|
1620
1733
|
CODING_ISSUES_SERVICE: () => CODING_ISSUES_SERVICE,
|
|
1621
1734
|
CONTEXT_MARKER_NAME: () => CONTEXT_MARKER_NAME,
|
|
1622
1735
|
Card: () => Card,
|
|
1736
|
+
CardBoundary: () => CardBoundary,
|
|
1623
1737
|
CardHead: () => CardHead,
|
|
1624
1738
|
CenteredState: () => CenteredState,
|
|
1625
1739
|
ChoiceGroup: () => ChoiceGroup,
|
|
1740
|
+
Component: () => Component,
|
|
1626
1741
|
DEFAULT_WORKSPACE_TITLE: () => DEFAULT_WORKSPACE_TITLE,
|
|
1627
1742
|
EVENTS_PATH: () => EVENTS_PATH,
|
|
1628
1743
|
EmptyState: () => EmptyState,
|
|
@@ -1682,6 +1797,7 @@ window.__ModuleLoader__.load({
|
|
|
1682
1797
|
dictionaries: () => dictionaries,
|
|
1683
1798
|
en: () => en,
|
|
1684
1799
|
encodeRef: () => encodeRef,
|
|
1800
|
+
errorReasonOf: () => errorReasonOf,
|
|
1685
1801
|
excerpt: () => excerpt,
|
|
1686
1802
|
factOfRoute: () => factOfRoute,
|
|
1687
1803
|
gateOf: () => gateOf,
|
|
@@ -1693,6 +1809,7 @@ window.__ModuleLoader__.load({
|
|
|
1693
1809
|
longTaskRunsOf: () => longTaskRunsOf,
|
|
1694
1810
|
markerBody: () => markerBody,
|
|
1695
1811
|
mergeMessages: () => mergeMessages,
|
|
1812
|
+
mergeMessagesSkipping: () => mergeMessagesSkipping,
|
|
1696
1813
|
parseFactFrame: () => parseFactFrame,
|
|
1697
1814
|
parseJsonLoose: () => parseJsonLoose,
|
|
1698
1815
|
parseLocalTimestamp: () => parseLocalTimestamp,
|
|
@@ -1852,10 +1969,10 @@ window.__ModuleLoader__.load({
|
|
|
1852
1969
|
}
|
|
1853
1970
|
var CAPABILITY_FACT = "capability";
|
|
1854
1971
|
var shared = null;
|
|
1855
|
-
var current = null;
|
|
1972
|
+
var current$1 = null;
|
|
1856
1973
|
var listeners$2 = /* @__PURE__ */ new Set();
|
|
1857
1974
|
function capabilityValue() {
|
|
1858
|
-
return current;
|
|
1975
|
+
return current$1;
|
|
1859
1976
|
}
|
|
1860
1977
|
function subscribeCapabilities(listener) {
|
|
1861
1978
|
listeners$2.add(listener);
|
|
@@ -1869,8 +1986,8 @@ window.__ModuleLoader__.load({
|
|
|
1869
1986
|
...probe$2,
|
|
1870
1987
|
checkedAt: Date.now()
|
|
1871
1988
|
});
|
|
1872
|
-
if (next === current) return;
|
|
1873
|
-
current = next;
|
|
1989
|
+
if (next === current$1) return;
|
|
1990
|
+
current$1 = next;
|
|
1874
1991
|
for (const listener of [...listeners$2]) listener();
|
|
1875
1992
|
}
|
|
1876
1993
|
function beginProbe() {
|
|
@@ -1979,10 +2096,16 @@ window.__ModuleLoader__.load({
|
|
|
1979
2096
|
}
|
|
1980
2097
|
//#endregion
|
|
1981
2098
|
//#region src/shared/hooks/mock-mode.ts
|
|
1982
|
-
var mock_mode_exports = /* @__PURE__ */ __exportAll({
|
|
2099
|
+
var mock_mode_exports = /* @__PURE__ */ __exportAll({
|
|
2100
|
+
crashModeOn: () => crashModeOn,
|
|
2101
|
+
mockModeOn: () => mockModeOn
|
|
2102
|
+
});
|
|
1983
2103
|
function mockModeOn(search) {
|
|
1984
2104
|
return /(?:^|[?&])(?:wbMock|wbMarketMock)=1(?:&|$)/.test(search);
|
|
1985
2105
|
}
|
|
2106
|
+
function crashModeOn(search) {
|
|
2107
|
+
return /(?:^|[?&])wbCrash=1(?:&|$)/.test(search);
|
|
2108
|
+
}
|
|
1986
2109
|
//#endregion
|
|
1987
2110
|
//#region src/shared/hooks/use-fixture-pick.ts
|
|
1988
2111
|
var use_fixture_pick_exports = /* @__PURE__ */ __exportAll({ useFixturePick: () => useFixturePick });
|
|
@@ -2044,6 +2167,14 @@ window.__ModuleLoader__.load({
|
|
|
2044
2167
|
return input.now - input.checkedAt >= input.staleMs;
|
|
2045
2168
|
}
|
|
2046
2169
|
//#endregion
|
|
2170
|
+
//#region src/app/layouts/rightbar/market-settle.ts
|
|
2171
|
+
var MODULE_SETTLE_MS = 15e3;
|
|
2172
|
+
function holdBack(installed, roster, active, previous) {
|
|
2173
|
+
const pending = installed.filter((unit) => !roster.has(unit));
|
|
2174
|
+
const fresh = previous === null ? [] : pending.filter((unit) => !previous.has(unit));
|
|
2175
|
+
return pending.filter((unit) => active.has(unit) || fresh.includes(unit));
|
|
2176
|
+
}
|
|
2177
|
+
//#endregion
|
|
2047
2178
|
//#region src/app/layouts/rightbar/market-mock.ts
|
|
2048
2179
|
function installable(manifest) {
|
|
2049
2180
|
return {
|
|
@@ -2568,7 +2699,11 @@ window.__ModuleLoader__.load({
|
|
|
2568
2699
|
let manifestsCache;
|
|
2569
2700
|
function notify() {
|
|
2570
2701
|
revision += 1;
|
|
2571
|
-
for (const listener of listeners)
|
|
2702
|
+
for (const listener of [...listeners]) try {
|
|
2703
|
+
listener();
|
|
2704
|
+
} catch (error) {
|
|
2705
|
+
console.warn(`[dsh-workbench] 套件注册的订阅者报错(不影响其它订阅者与这次注册):${String(error)}`);
|
|
2706
|
+
}
|
|
2572
2707
|
}
|
|
2573
2708
|
return {
|
|
2574
2709
|
register(face) {
|
|
@@ -2603,6 +2738,7 @@ window.__ModuleLoader__.load({
|
|
|
2603
2738
|
//#endregion
|
|
2604
2739
|
//#region src/app/units/fixture-unit-mock.tsx
|
|
2605
2740
|
var FIXTURE_UNIT_ID = "wb-fixture";
|
|
2741
|
+
var CRASH_UNIT_ID = "wb-fixture-crash";
|
|
2606
2742
|
var KEY = {
|
|
2607
2743
|
cardTitle: `${FIXTURE_UNIT_ID}.cardTitle`,
|
|
2608
2744
|
cardMeta: `${FIXTURE_UNIT_ID}.cardMeta`,
|
|
@@ -2656,6 +2792,39 @@ window.__ModuleLoader__.load({
|
|
|
2656
2792
|
messages,
|
|
2657
2793
|
card: FixtureCard
|
|
2658
2794
|
};
|
|
2795
|
+
var CRASH_KEY = {
|
|
2796
|
+
cardTitle: `${CRASH_UNIT_ID}.cardTitle`,
|
|
2797
|
+
cardMeta: `${CRASH_UNIT_ID}.cardMeta`
|
|
2798
|
+
};
|
|
2799
|
+
var crashMessages = {
|
|
2800
|
+
zh: {
|
|
2801
|
+
[CRASH_KEY.cardTitle]: "崩溃的卡片",
|
|
2802
|
+
[CRASH_KEY.cardMeta]: "夹具:渲染时抛错"
|
|
2803
|
+
},
|
|
2804
|
+
en: {
|
|
2805
|
+
[CRASH_KEY.cardTitle]: "Crashing card",
|
|
2806
|
+
[CRASH_KEY.cardMeta]: "Fixture: throws while rendering"
|
|
2807
|
+
}
|
|
2808
|
+
};
|
|
2809
|
+
var crashManifest = {
|
|
2810
|
+
id: CRASH_UNIT_ID,
|
|
2811
|
+
kind: "board",
|
|
2812
|
+
card: {
|
|
2813
|
+
titleKey: CRASH_KEY.cardTitle,
|
|
2814
|
+
order: 899,
|
|
2815
|
+
enabledByDefault: true
|
|
2816
|
+
},
|
|
2817
|
+
tools: [],
|
|
2818
|
+
host: { inject: [] }
|
|
2819
|
+
};
|
|
2820
|
+
function CrashingCard() {
|
|
2821
|
+
throw new Error("夹具:这张卡片按 wbCrash=1 故意渲染失败(守「一张卡片崩溃不带走面板」)");
|
|
2822
|
+
}
|
|
2823
|
+
var CRASH_FACE = {
|
|
2824
|
+
manifest: crashManifest,
|
|
2825
|
+
messages: crashMessages,
|
|
2826
|
+
card: CrashingCard
|
|
2827
|
+
};
|
|
2659
2828
|
var SAMPLE_ROSTER = [manifest];
|
|
2660
2829
|
function hasCard(roster) {
|
|
2661
2830
|
return roster.some((item) => item.card !== null);
|
|
@@ -2663,8 +2832,9 @@ window.__ModuleLoader__.load({
|
|
|
2663
2832
|
function fixtureRoster(roster) {
|
|
2664
2833
|
return hasCard(roster) ? roster : SAMPLE_ROSTER;
|
|
2665
2834
|
}
|
|
2666
|
-
function fixtureSeed(roster, all) {
|
|
2667
|
-
|
|
2835
|
+
function fixtureSeed(roster, all, crash = false) {
|
|
2836
|
+
const base = hasCard(roster) ? all : [toBoardModule(FIXTURE_FACE)];
|
|
2837
|
+
return crash ? [toBoardModule(CRASH_FACE), ...base] : base;
|
|
2668
2838
|
}
|
|
2669
2839
|
//#endregion
|
|
2670
2840
|
//#region src/app/layouts/rightbar/market-rows.ts
|
|
@@ -2684,7 +2854,17 @@ window.__ModuleLoader__.load({
|
|
|
2684
2854
|
unchecked: "idle",
|
|
2685
2855
|
unknown: "idle"
|
|
2686
2856
|
};
|
|
2687
|
-
function
|
|
2857
|
+
function mergeTitles(known, manifests) {
|
|
2858
|
+
let next = null;
|
|
2859
|
+
for (const manifest of manifests) {
|
|
2860
|
+
const titleKey = manifest.card?.titleKey;
|
|
2861
|
+
if (titleKey === void 0 || known.has(manifest.id)) continue;
|
|
2862
|
+
next ??= new Map(known);
|
|
2863
|
+
next.set(manifest.id, titleKey);
|
|
2864
|
+
}
|
|
2865
|
+
return next ?? known;
|
|
2866
|
+
}
|
|
2867
|
+
function installedRows(modules, manifests, listed, known) {
|
|
2688
2868
|
const titles = new Map(manifests.map((manifest) => [manifest.id, manifest.card?.titleKey]));
|
|
2689
2869
|
const rows = [];
|
|
2690
2870
|
for (const module of modules) {
|
|
@@ -2693,8 +2873,9 @@ window.__ModuleLoader__.load({
|
|
|
2693
2873
|
const outdated = latest !== void 0 && latest !== module.installed;
|
|
2694
2874
|
rows.push({
|
|
2695
2875
|
id: module.unit,
|
|
2696
|
-
titleKey: titles.get(module.unit) ?? module.pkg,
|
|
2876
|
+
titleKey: titles.get(module.unit) ?? known?.get(module.unit) ?? module.pkg,
|
|
2697
2877
|
state: outdated ? "outdated" : "installed",
|
|
2878
|
+
hint: "panels.market.moduleRestartHint",
|
|
2698
2879
|
pkg: module.pkg,
|
|
2699
2880
|
canInstall: false,
|
|
2700
2881
|
canUpdate: outdated,
|
|
@@ -2753,6 +2934,12 @@ window.__ModuleLoader__.load({
|
|
|
2753
2934
|
function isOnMachine(state) {
|
|
2754
2935
|
return state === "installed" || state === "outdated";
|
|
2755
2936
|
}
|
|
2937
|
+
function liveManifests(manifests, capabilities, installed) {
|
|
2938
|
+
if (capabilities === null || installed === null) return manifests;
|
|
2939
|
+
const gone = new Set(marketRows(manifests, capabilities).filter((row) => !installed.has(row.id) && marketActions$1(row).length === 0 && (row.state === "unknown" || row.state === "unchecked")).map((row) => row.id));
|
|
2940
|
+
if (gone.size === 0) return manifests;
|
|
2941
|
+
return manifests.filter((manifest) => !gone.has(manifest.id));
|
|
2942
|
+
}
|
|
2756
2943
|
function marketHasUpdates(rows, shared = []) {
|
|
2757
2944
|
return rows.some((row) => row.state === "outdated" || row.moduleUpdate !== void 0) || shared.some((row) => row.state === "outdated" || row.state === "unsatisfied");
|
|
2758
2945
|
}
|
|
@@ -2882,6 +3069,7 @@ window.__ModuleLoader__.load({
|
|
|
2882
3069
|
...bucket.installed === void 0 ? {} : { installed: bucket.installed },
|
|
2883
3070
|
...bucket.latest === void 0 ? {} : { latest: bucket.latest }
|
|
2884
3071
|
};
|
|
3072
|
+
const detail = bucket.purpose === void 0 && bucket.command === void 0 ? void 0 : `${bucket.label}${bucket.purpose === void 0 ? "" : ` —— ${bucket.purpose}`}${bucket.command === void 0 ? "" : ` · ${bucket.command}`}`;
|
|
2885
3073
|
rows.push({
|
|
2886
3074
|
id: `${bucket.kind}:${bucket.name}`,
|
|
2887
3075
|
label: bucket.label,
|
|
@@ -2889,7 +3077,7 @@ window.__ModuleLoader__.load({
|
|
|
2889
3077
|
state,
|
|
2890
3078
|
canUpdate: state === "outdated" || state === "unsatisfied",
|
|
2891
3079
|
...version === void 0 ? {} : { version },
|
|
2892
|
-
detail
|
|
3080
|
+
...detail === void 0 ? {} : { detail }
|
|
2893
3081
|
});
|
|
2894
3082
|
}
|
|
2895
3083
|
return rows;
|
|
@@ -2946,15 +3134,188 @@ window.__ModuleLoader__.load({
|
|
|
2946
3134
|
clear
|
|
2947
3135
|
};
|
|
2948
3136
|
}
|
|
2949
|
-
|
|
2950
|
-
|
|
2951
|
-
|
|
2952
|
-
|
|
3137
|
+
//#endregion
|
|
3138
|
+
//#region src/app/layouts/market/add-module-text.ts
|
|
3139
|
+
var GUIDE_ITEMS = [
|
|
3140
|
+
{
|
|
3141
|
+
titleKey: "panels.market.add.guideIdTitle",
|
|
3142
|
+
exampleKey: "panels.market.add.guideIdExample",
|
|
3143
|
+
hintKey: "panels.market.add.guideIdHint"
|
|
3144
|
+
},
|
|
3145
|
+
{
|
|
3146
|
+
titleKey: "panels.market.add.guideGitTitle",
|
|
3147
|
+
exampleKey: "panels.market.add.guideGitExample",
|
|
3148
|
+
hintKey: "panels.market.add.guideGitHint"
|
|
3149
|
+
},
|
|
3150
|
+
{
|
|
3151
|
+
titleKey: "panels.market.add.guidePathTitle",
|
|
3152
|
+
exampleKey: "panels.market.add.guidePathExample",
|
|
3153
|
+
hintKey: "panels.market.add.guidePathHint"
|
|
3154
|
+
}
|
|
3155
|
+
];
|
|
3156
|
+
function hostOf(url) {
|
|
3157
|
+
try {
|
|
3158
|
+
return new URL(url).host;
|
|
3159
|
+
} catch {
|
|
3160
|
+
return url;
|
|
3161
|
+
}
|
|
3162
|
+
}
|
|
3163
|
+
var OFFICIAL_NPM_HOST = "registry.npmjs.org";
|
|
3164
|
+
var KNOWN_HOSTS = {
|
|
3165
|
+
[OFFICIAL_NPM_HOST]: "panels.market.add.registryOfficial",
|
|
3166
|
+
"registry.npmmirror.com": "panels.market.add.registryMirror"
|
|
3167
|
+
};
|
|
3168
|
+
function registryNameKey(host) {
|
|
3169
|
+
return KNOWN_HOSTS[host];
|
|
3170
|
+
}
|
|
3171
|
+
function normalizeRegistry(url) {
|
|
3172
|
+
const parsed = new URL(url);
|
|
3173
|
+
if (!parsed.pathname.endsWith("/")) parsed.pathname += "/";
|
|
3174
|
+
return parsed.href;
|
|
3175
|
+
}
|
|
3176
|
+
function registryKey(url, resolved) {
|
|
3177
|
+
const target = url ?? resolved;
|
|
3178
|
+
if (target === null) return "";
|
|
3179
|
+
try {
|
|
3180
|
+
return normalizeRegistry(target);
|
|
3181
|
+
} catch {
|
|
3182
|
+
return target;
|
|
3183
|
+
}
|
|
3184
|
+
}
|
|
3185
|
+
function registryOptions(registries) {
|
|
3186
|
+
const resolved = registries === null ? null : registries.resolved;
|
|
3187
|
+
const entries = [
|
|
3188
|
+
registries === null ? null : registries.registry,
|
|
3189
|
+
...registries === null ? [] : registries.fallbackRegistries,
|
|
3190
|
+
null
|
|
3191
|
+
];
|
|
3192
|
+
const offered = [];
|
|
3193
|
+
const keys = /* @__PURE__ */ new Set();
|
|
3194
|
+
for (const entry of entries) {
|
|
3195
|
+
const key = registryKey(entry, resolved);
|
|
3196
|
+
if (keys.has(key)) continue;
|
|
3197
|
+
keys.add(key);
|
|
3198
|
+
const url = entry ?? resolved;
|
|
3199
|
+
if (url === null) {
|
|
3200
|
+
offered.push({
|
|
3201
|
+
choice: {
|
|
3202
|
+
kind: "default",
|
|
3203
|
+
value: ""
|
|
3204
|
+
},
|
|
3205
|
+
host: OFFICIAL_NPM_HOST,
|
|
3206
|
+
nameKey: "panels.market.add.registryDefault"
|
|
3207
|
+
});
|
|
3208
|
+
continue;
|
|
3209
|
+
}
|
|
3210
|
+
const host = hostOf(url);
|
|
3211
|
+
const nameKey = registryNameKey(host);
|
|
3212
|
+
offered.push({
|
|
3213
|
+
choice: entry === null ? {
|
|
3214
|
+
kind: "default",
|
|
3215
|
+
value: ""
|
|
3216
|
+
} : {
|
|
3217
|
+
kind: "url",
|
|
3218
|
+
value: entry
|
|
3219
|
+
},
|
|
3220
|
+
host,
|
|
3221
|
+
...nameKey === void 0 ? {} : { nameKey }
|
|
3222
|
+
});
|
|
3223
|
+
}
|
|
3224
|
+
offered.push({ choice: {
|
|
3225
|
+
kind: "custom",
|
|
3226
|
+
value: ""
|
|
3227
|
+
} });
|
|
3228
|
+
return offered;
|
|
3229
|
+
}
|
|
3230
|
+
function customRegistryAllowed(value) {
|
|
3231
|
+
return /^https?:\/\//.test(value.trim());
|
|
3232
|
+
}
|
|
3233
|
+
function registryOf(choice, custom) {
|
|
3234
|
+
if (choice.kind === "custom") return customRegistryAllowed(custom) ? custom.trim() : void 0;
|
|
3235
|
+
return choice.value === "" ? void 0 : choice.value;
|
|
3236
|
+
}
|
|
3237
|
+
function registryName(option, t) {
|
|
3238
|
+
if (option.choice.kind === "custom") return t("panels.market.add.registryCustom");
|
|
3239
|
+
if (option.nameKey !== void 0) return t(option.nameKey);
|
|
3240
|
+
return option.host ?? t("panels.market.add.registryDefault");
|
|
3241
|
+
}
|
|
3242
|
+
function optionLabel(option, t) {
|
|
3243
|
+
if (option.choice.kind === "custom") return t("panels.market.add.registryCustom");
|
|
3244
|
+
if (option.host === void 0) return t("panels.market.add.registryDefault");
|
|
3245
|
+
return option.nameKey === void 0 ? option.host : t("panels.market.add.registryWithHost", {
|
|
3246
|
+
name: t(option.nameKey),
|
|
3247
|
+
host: option.host
|
|
3248
|
+
});
|
|
3249
|
+
}
|
|
3250
|
+
var PROBLEM_KEYS = {
|
|
3251
|
+
"invalid-spec": "panels.market.add.problemInvalid",
|
|
3252
|
+
"already-installed": "panels.market.add.problemInstalled",
|
|
3253
|
+
"not-found": "panels.market.add.problemNotFound",
|
|
3254
|
+
"not-a-package": "panels.market.add.problemNotPackage",
|
|
3255
|
+
"not-a-bundle": "panels.market.add.problemNotBundle",
|
|
3256
|
+
network: "panels.market.add.problemNetwork",
|
|
3257
|
+
unknown: "panels.market.add.problemUnknown"
|
|
3258
|
+
};
|
|
3259
|
+
function problemKey(problem) {
|
|
3260
|
+
return PROBLEM_KEYS[problem] ?? PROBLEM_KEYS.unknown;
|
|
3261
|
+
}
|
|
3262
|
+
var FAILURE_KEYS = {
|
|
3263
|
+
network: "panels.market.add.failureNetwork",
|
|
3264
|
+
"spec-host": "panels.market.add.failureNetworkHost",
|
|
3265
|
+
"not-found": "panels.market.add.failureNotFound",
|
|
3266
|
+
"no-matching-version": "panels.market.add.failureNoMatchingVersion",
|
|
3267
|
+
"disk-full": "panels.market.add.failureDiskFull",
|
|
3268
|
+
permission: "panels.market.add.failurePermission",
|
|
3269
|
+
"build-blocked": "panels.market.add.failureBuildBlocked",
|
|
3270
|
+
integrity: "panels.market.add.failureIntegrity",
|
|
3271
|
+
timeout: "panels.market.add.failureTimeout",
|
|
3272
|
+
"pnpm-missing": "panels.market.add.failurePnpmMissing",
|
|
3273
|
+
"operation-error": "panels.market.add.failureGeneric",
|
|
3274
|
+
"incompatible-version": "panels.market.add.failureGeneric",
|
|
3275
|
+
"not-bundle": "panels.market.add.failureGeneric",
|
|
3276
|
+
"invalid-spec": "panels.market.add.failureGeneric",
|
|
3277
|
+
"bundle-in-use": "panels.market.add.failureGeneric",
|
|
3278
|
+
"not-removable": "panels.market.add.failureGeneric",
|
|
3279
|
+
"stop-profile": "panels.market.add.failureGeneric",
|
|
3280
|
+
"stale-approval": "panels.market.add.failureGeneric"
|
|
3281
|
+
};
|
|
3282
|
+
function failureCode(change) {
|
|
3283
|
+
if (change.failedAt === "spec-host") return "spec-host";
|
|
3284
|
+
return change.errorCode ?? change.packageResult?.kind ?? change.application;
|
|
3285
|
+
}
|
|
3286
|
+
function failureReasonKey(code) {
|
|
3287
|
+
return FAILURE_KEYS[code];
|
|
3288
|
+
}
|
|
3289
|
+
function failureReason(code, application, t) {
|
|
3290
|
+
const key = failureReasonKey(code);
|
|
3291
|
+
if (key !== void 0) return t(key);
|
|
3292
|
+
if (code === application) return t("panels.market.add.reason.unknown");
|
|
3293
|
+
return code;
|
|
3294
|
+
}
|
|
3295
|
+
var SUPPLY_KEYS = {
|
|
3296
|
+
"pending-restart": "panels.market.add.supplyPending",
|
|
3297
|
+
failed: "panels.market.add.supplyFailed",
|
|
3298
|
+
"not-a-module": "panels.market.add.notModule",
|
|
3299
|
+
"no-needs": void 0
|
|
2953
3300
|
};
|
|
3301
|
+
function supplyKey(state) {
|
|
3302
|
+
return SUPPLY_KEYS[state];
|
|
3303
|
+
}
|
|
2954
3304
|
//#endregion
|
|
2955
|
-
//#region src/
|
|
2956
|
-
|
|
2957
|
-
|
|
3305
|
+
//#region src/app/layouts/rightbar/market-change.ts
|
|
3306
|
+
var SHIPPED = [
|
|
3307
|
+
"applied",
|
|
3308
|
+
"restart-required",
|
|
3309
|
+
"overridden"
|
|
3310
|
+
];
|
|
3311
|
+
function changeOf(value) {
|
|
3312
|
+
const change = value?.change;
|
|
3313
|
+
if (typeof change !== "object" || change === null) return void 0;
|
|
3314
|
+
return typeof change.application === "string" ? change : void 0;
|
|
3315
|
+
}
|
|
3316
|
+
function changeFailure(change, t) {
|
|
3317
|
+
if (change === void 0 || SHIPPED.includes(change.application)) return void 0;
|
|
3318
|
+
return failureReason(failureCode(change), change.application, t);
|
|
2958
3319
|
}
|
|
2959
3320
|
var MarketPage_module_default = {
|
|
2960
3321
|
marketList: "_marketList_7yq35_1",
|
|
@@ -2989,7 +3350,18 @@ window.__ModuleLoader__.load({
|
|
|
2989
3350
|
marketEmptyTitle: "_marketEmptyTitle_7yq35_267"
|
|
2990
3351
|
};
|
|
2991
3352
|
//#endregion
|
|
2992
|
-
//#region src/app/layouts/rightbar/
|
|
3353
|
+
//#region src/app/layouts/rightbar/MarketStates.tsx
|
|
3354
|
+
function MarketChecking({ t }) {
|
|
3355
|
+
return /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketEmpty }, /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketChecking }, /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
|
|
3356
|
+
state: "ongoing",
|
|
3357
|
+
size: 14
|
|
3358
|
+
}), t("panels.market.checking")));
|
|
3359
|
+
}
|
|
3360
|
+
function MarketEmpty({ t }) {
|
|
3361
|
+
return /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketEmpty }, /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketEmptyTitle }, t("panels.market.empty")));
|
|
3362
|
+
}
|
|
3363
|
+
//#endregion
|
|
3364
|
+
//#region src/app/layouts/rightbar/market-view-text.ts
|
|
2993
3365
|
var PROGRESS_KEY = {
|
|
2994
3366
|
install: "panels.market.installing",
|
|
2995
3367
|
update: "panels.market.updating",
|
|
@@ -3006,18 +3378,80 @@ window.__ModuleLoader__.load({
|
|
|
3006
3378
|
uninstall: "panels.market.uninstall",
|
|
3007
3379
|
"update-dependency": "panels.market.update"
|
|
3008
3380
|
};
|
|
3009
|
-
|
|
3381
|
+
//#endregion
|
|
3382
|
+
//#region src/app/layouts/rightbar/SharedSection.tsx
|
|
3383
|
+
function SharedLine({ t, row, pending, failure, onAct }) {
|
|
3010
3384
|
const running = pending !== null && pending.id === row.id ? pending : null;
|
|
3011
3385
|
const locked = pending !== null;
|
|
3012
|
-
const actions =
|
|
3013
|
-
const stateText = t(
|
|
3386
|
+
const actions = sharedActions(row);
|
|
3387
|
+
const stateText = t(SHARED_STATE_KEY[row.state]);
|
|
3388
|
+
const version = row.version;
|
|
3389
|
+
const name = /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketName }, row.label, version === void 0 ? null : /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketVersion }, version.installed !== void 0 && version.latest !== void 0 && version.installed !== version.latest ? t("panels.market.versionArrow", {
|
|
3390
|
+
from: version.installed,
|
|
3391
|
+
to: version.latest
|
|
3392
|
+
}) : version.installed ?? version.latest ?? ""));
|
|
3393
|
+
return /* @__PURE__ */ h("li", { className: MarketPage_module_default.marketRow }, /* @__PURE__ */ h("span", {
|
|
3394
|
+
className: MarketPage_module_default.marketIcon,
|
|
3395
|
+
"aria-hidden": "true"
|
|
3396
|
+
}, /* @__PURE__ */ h(IconModules, { size: 18 })), /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketMain }, row.detail === void 0 ? name : /* @__PURE__ */ h(Tip, { label: row.detail }, name), /* @__PURE__ */ h("span", {
|
|
3397
|
+
className: MarketPage_module_default.marketDesc,
|
|
3398
|
+
role: "img",
|
|
3399
|
+
"aria-label": stateText
|
|
3400
|
+
}, row.state === "checking" ? /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
|
|
3401
|
+
state: "ongoing",
|
|
3402
|
+
size: 14
|
|
3403
|
+
}) : /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
|
|
3404
|
+
state: SHARED_DOT[row.state],
|
|
3405
|
+
size: 9
|
|
3406
|
+
}), stateText, /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketUsedBy }, t("panels.market.sharedUsedBy", { modules: row.usedByKeys.map((key) => t(key)).join(t("panels.market.listSeparator")) })))), /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketEnd }, running !== null ? /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketProgress }, /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
|
|
3407
|
+
state: "ongoing",
|
|
3408
|
+
size: 14
|
|
3409
|
+
}), t(PROGRESS_KEY[running.action])) : actions.length === 0 ? null : /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketActions }, actions.map((action) => /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
3410
|
+
key: action,
|
|
3411
|
+
type: "button",
|
|
3412
|
+
size: "sm",
|
|
3413
|
+
variant: "outline",
|
|
3414
|
+
disabled: locked,
|
|
3415
|
+
onClick: () => onAct(action)
|
|
3416
|
+
}, t(ACTION_LABEL_KEY[action]))))), failure === null ? null : /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketFailure }, failure));
|
|
3417
|
+
}
|
|
3418
|
+
function SharedSection({ t, rows, pending, failureOf, act }) {
|
|
3419
|
+
if (rows.length === 0) return null;
|
|
3420
|
+
return /* @__PURE__ */ h("section", { className: MarketPage_module_default.marketSection }, /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketSectionHead }, /* @__PURE__ */ h("h2", { className: MarketPage_module_default.marketSectionTitle }, t("panels.market.sectionShared")), /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketSectionCount }, rows.length)), /* @__PURE__ */ h("ul", { className: MarketPage_module_default.marketList }, rows.map((row) => /* @__PURE__ */ h(SharedLine, {
|
|
3421
|
+
key: row.id,
|
|
3422
|
+
t,
|
|
3423
|
+
row,
|
|
3424
|
+
pending,
|
|
3425
|
+
failure: failureOf(row.id),
|
|
3426
|
+
onAct: (action) => void act(row.id, action)
|
|
3427
|
+
}))));
|
|
3428
|
+
}
|
|
3429
|
+
var PanelFoot_module_default = {
|
|
3430
|
+
foot: "_foot_1us83_1",
|
|
3431
|
+
footText: "_footText_1us83_12",
|
|
3432
|
+
footTextMd: "_footTextMd_1us83_17"
|
|
3433
|
+
};
|
|
3434
|
+
//#endregion
|
|
3435
|
+
//#region src/shared/components/PanelFoot.tsx
|
|
3436
|
+
function PanelFoot({ text, size = "sm", children }) {
|
|
3437
|
+
return /* @__PURE__ */ h("footer", { className: PanelFoot_module_default.foot }, /* @__PURE__ */ h("span", { className: size === "md" ? PanelFoot_module_default.footTextMd : PanelFoot_module_default.footText }, text), children ?? null);
|
|
3438
|
+
}
|
|
3439
|
+
//#endregion
|
|
3440
|
+
//#region src/app/layouts/rightbar/MarketView.tsx
|
|
3441
|
+
var CONFIRM_UNINSTALL = ["uninstall", "remove-bundle"];
|
|
3442
|
+
var CONFIRM_REMOVE = ["remove-bundle"];
|
|
3443
|
+
function MarketLine({ t, row, pending, failure, onAct }) {
|
|
3444
|
+
const running = pending !== null && pending.id === row.id ? pending : null;
|
|
3445
|
+
const locked = pending !== null;
|
|
3446
|
+
const actions = marketActions$1(row);
|
|
3447
|
+
const stateText = t(row.moduleUpdate === void 0 ? MARKET_STATE_KEY[row.state] : "panels.market.moduleOutdated");
|
|
3014
3448
|
return /* @__PURE__ */ h("li", { className: MarketPage_module_default.marketRow }, /* @__PURE__ */ h("span", {
|
|
3015
3449
|
className: MarketPage_module_default.marketIcon,
|
|
3016
3450
|
"aria-hidden": "true"
|
|
3017
3451
|
}, /* @__PURE__ */ h(IconModules, { size: 18 })), /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketMain }, /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketName }, t(row.titleKey), row.version === void 0 ? null : /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketVersion }, row.version.installed !== void 0 && row.version.latest !== void 0 && row.version.installed !== row.version.latest ? t("panels.market.versionArrow", {
|
|
3018
3452
|
from: row.version.installed,
|
|
3019
3453
|
to: row.version.latest
|
|
3020
|
-
}) : row.version.installed ?? row.version.latest ?? "")), /* @__PURE__ */ h(
|
|
3454
|
+
}) : row.version.installed ?? row.version.latest ?? "")), /* @__PURE__ */ h("span", {
|
|
3021
3455
|
className: MarketPage_module_default.marketDesc,
|
|
3022
3456
|
role: "img",
|
|
3023
3457
|
"aria-label": stateText
|
|
@@ -3027,7 +3461,7 @@ window.__ModuleLoader__.load({
|
|
|
3027
3461
|
}) : /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
|
|
3028
3462
|
state: MARKET_DOT[row.state],
|
|
3029
3463
|
size: 9
|
|
3030
|
-
}), stateText, row.hint === void 0 ? null : /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketUsedBy }, t(row.hint))))
|
|
3464
|
+
}), stateText, row.hint === void 0 ? null : /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketUsedBy }, t(row.hint)))), /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketEnd }, running !== null ? /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketProgress }, /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
|
|
3031
3465
|
state: "ongoing",
|
|
3032
3466
|
size: 14
|
|
3033
3467
|
}), t(PROGRESS_KEY[running.action])) : actions.length === 0 ? null : /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketActions }, actions.map((action) => {
|
|
@@ -3045,40 +3479,6 @@ window.__ModuleLoader__.load({
|
|
|
3045
3479
|
}, t(ACTION_LABEL_KEY[action]));
|
|
3046
3480
|
}))), row.note === void 0 ? null : /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketNote }, t(row.note.key, row.note.params)), failure === null ? null : /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketFailure }, failure));
|
|
3047
3481
|
}
|
|
3048
|
-
function SharedLine({ t, row, pending, failure, onAct }) {
|
|
3049
|
-
const running = pending !== null && pending.id === row.id ? pending : null;
|
|
3050
|
-
const locked = pending !== null;
|
|
3051
|
-
const actions = sharedActions(row);
|
|
3052
|
-
const stateText = t(SHARED_STATE_KEY[row.state]);
|
|
3053
|
-
const version = row.version;
|
|
3054
|
-
return /* @__PURE__ */ h("li", { className: MarketPage_module_default.marketRow }, /* @__PURE__ */ h("span", {
|
|
3055
|
-
className: MarketPage_module_default.marketIcon,
|
|
3056
|
-
"aria-hidden": "true"
|
|
3057
|
-
}, /* @__PURE__ */ h(IconModules, { size: 18 })), /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketMain }, /* @__PURE__ */ h(Tip, { label: row.detail ?? "" }, /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketName }, row.label, version === void 0 ? null : /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketVersion }, version.installed !== void 0 && version.latest !== void 0 && version.installed !== version.latest ? t("panels.market.versionArrow", {
|
|
3058
|
-
from: version.installed,
|
|
3059
|
-
to: version.latest
|
|
3060
|
-
}) : version.installed ?? version.latest ?? ""))), /* @__PURE__ */ h(Tip, { label: stateText }, /* @__PURE__ */ h("span", {
|
|
3061
|
-
className: MarketPage_module_default.marketDesc,
|
|
3062
|
-
role: "img",
|
|
3063
|
-
"aria-label": stateText
|
|
3064
|
-
}, row.state === "checking" ? /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
|
|
3065
|
-
state: "ongoing",
|
|
3066
|
-
size: 14
|
|
3067
|
-
}) : /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
|
|
3068
|
-
state: SHARED_DOT[row.state],
|
|
3069
|
-
size: 9
|
|
3070
|
-
}), stateText, /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketUsedBy }, t("panels.market.sharedUsedBy", { modules: row.usedByKeys.map((key) => t(key)).join(t("panels.market.listSeparator")) }))))), /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketEnd }, running !== null ? /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketProgress }, /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
|
|
3071
|
-
state: "ongoing",
|
|
3072
|
-
size: 14
|
|
3073
|
-
}), t(PROGRESS_KEY[running.action])) : actions.length === 0 ? null : /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketActions }, actions.map((action) => /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
3074
|
-
key: action,
|
|
3075
|
-
type: "button",
|
|
3076
|
-
size: "sm",
|
|
3077
|
-
variant: "outline",
|
|
3078
|
-
disabled: locked,
|
|
3079
|
-
onClick: () => onAct(action)
|
|
3080
|
-
}, t(ACTION_LABEL_KEY[action]))))), failure === null ? null : /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketFailure }, failure));
|
|
3081
|
-
}
|
|
3082
3482
|
function ConfirmUninstall({ t, name, onConfirm, onCancel }) {
|
|
3083
3483
|
const [acknowledged, setAcknowledged] = useState(false);
|
|
3084
3484
|
return /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.RiskConfirmation, {
|
|
@@ -3095,7 +3495,7 @@ window.__ModuleLoader__.load({
|
|
|
3095
3495
|
onConfirm
|
|
3096
3496
|
});
|
|
3097
3497
|
}
|
|
3098
|
-
function MarketSection({ t, titleKey, rows, pending, failureOf, act,
|
|
3498
|
+
function MarketSection({ t, titleKey, rows, pending, failureOf, act, confirmActions, onConfirming }) {
|
|
3099
3499
|
if (rows.length === 0) return null;
|
|
3100
3500
|
return /* @__PURE__ */ h("section", { className: MarketPage_module_default.marketSection }, /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketSectionHead }, /* @__PURE__ */ h("h2", { className: MarketPage_module_default.marketSectionTitle }, t(titleKey)), /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketSectionCount }, rows.length)), /* @__PURE__ */ h("ul", { className: MarketPage_module_default.marketList }, rows.map((row) => /* @__PURE__ */ h(MarketLine, {
|
|
3101
3501
|
key: row.id,
|
|
@@ -3103,29 +3503,50 @@ window.__ModuleLoader__.load({
|
|
|
3103
3503
|
row,
|
|
3104
3504
|
pending,
|
|
3105
3505
|
failure: failureOf(row.id),
|
|
3106
|
-
onAct: (action) => action
|
|
3506
|
+
onAct: (action) => confirmActions.includes(action) ? onConfirming(row.id) : void act(row.id, action)
|
|
3107
3507
|
}))));
|
|
3108
3508
|
}
|
|
3109
|
-
function MarketView({ t, manifests, capabilities, freshness, onChanged, updates, installed, installedRead, mock }) {
|
|
3110
|
-
const
|
|
3509
|
+
function MarketView({ t, manifests, capabilities, freshness, onChanged, updates, installed, installedRead, settling, mock }) {
|
|
3510
|
+
const [titles, setTitles] = useState(/* @__PURE__ */ new Map());
|
|
3511
|
+
useEffect(() => {
|
|
3512
|
+
if (mock === void 0) setTitles((known) => mergeTitles(known, manifests));
|
|
3513
|
+
}, [manifests, mock]);
|
|
3514
|
+
const catalog = mock?.manifests ?? manifests;
|
|
3111
3515
|
const effective = mock === void 0 ? capabilities : mock.capabilities;
|
|
3516
|
+
const source = liveManifests(catalog, effective, mock === void 0 && installed !== void 0 ? new Set(installed.map((item) => item.unit)) : null);
|
|
3112
3517
|
const rows = marketRows(source, effective, mock?.updates ?? updates ?? {});
|
|
3113
3518
|
const shared = sharedRows(source, effective);
|
|
3114
|
-
const installedList = installedRows(mock?.installed ?? installed ?? [], source, new Set(rows.map((row) => row.id)));
|
|
3115
|
-
const rowById = new Map([...rows, ...installedList].map((row) => [row.id, row]));
|
|
3116
3519
|
const [pending, setPending] = useState(mock?.pending ?? null);
|
|
3117
3520
|
const provision = useHostWrite({
|
|
3118
3521
|
channel: "provision",
|
|
3119
3522
|
networkText: t("panels.failed")
|
|
3120
3523
|
});
|
|
3121
3524
|
const [confirming, setConfirming] = useState(mock?.confirming ?? null);
|
|
3122
|
-
const confirmingRow = confirming === null ? void 0 : rowById.get(confirming);
|
|
3123
3525
|
const [failed, setFailed] = useState(mock?.failure ?? null);
|
|
3526
|
+
const removing = pending !== null && pending.action === "remove-bundle" && failed?.id !== pending.id ? pending.id : null;
|
|
3527
|
+
const installedList = installedRows((mock?.installed ?? installed ?? []).filter((module) => !(settling?.has(module.unit) ?? false) && module.unit !== removing), source, new Set(rows.map((row) => row.id)), titles);
|
|
3528
|
+
const pendingRow = removing === null || pending === null || rows.some((row) => row.id === removing) ? void 0 : {
|
|
3529
|
+
id: removing,
|
|
3530
|
+
titleKey: pending.titleKey ?? titles.get(removing) ?? removing,
|
|
3531
|
+
state: "installed",
|
|
3532
|
+
canInstall: false,
|
|
3533
|
+
canUpdate: false,
|
|
3534
|
+
canUninstall: true,
|
|
3535
|
+
...pending.pkg === void 0 ? {} : { pkg: pending.pkg },
|
|
3536
|
+
...pending.version === void 0 ? {} : { version: { installed: pending.version } }
|
|
3537
|
+
};
|
|
3538
|
+
const shown = pendingRow === void 0 ? rows : [...rows, pendingRow];
|
|
3539
|
+
const rowById = new Map([...shown, ...installedList].map((row) => [row.id, row]));
|
|
3540
|
+
const confirmingRow = confirming === null ? void 0 : rowById.get(confirming);
|
|
3124
3541
|
const act = async (id, action) => {
|
|
3125
3542
|
if (mock !== void 0) return;
|
|
3543
|
+
const row = rowById.get(id);
|
|
3126
3544
|
setPending({
|
|
3127
3545
|
id,
|
|
3128
|
-
action
|
|
3546
|
+
action,
|
|
3547
|
+
...row?.titleKey === void 0 ? {} : { titleKey: row.titleKey },
|
|
3548
|
+
...row?.pkg === void 0 ? {} : { pkg: row.pkg },
|
|
3549
|
+
...row?.version?.installed === void 0 ? {} : { version: row.version.installed }
|
|
3129
3550
|
});
|
|
3130
3551
|
setConfirming(null);
|
|
3131
3552
|
setFailed(null);
|
|
@@ -3142,20 +3563,23 @@ window.__ModuleLoader__.load({
|
|
|
3142
3563
|
});
|
|
3143
3564
|
setPending(null);
|
|
3144
3565
|
if (!outcome.ok) {
|
|
3566
|
+
onChanged();
|
|
3145
3567
|
setFailed({
|
|
3146
3568
|
id,
|
|
3147
3569
|
message: t("panels.market.failed", { reason: outcome.message })
|
|
3148
3570
|
});
|
|
3149
3571
|
return;
|
|
3150
3572
|
}
|
|
3573
|
+
const reason = changeFailure(changeOf(outcome.value), t);
|
|
3151
3574
|
onChanged();
|
|
3575
|
+
if (reason !== void 0) setFailed({
|
|
3576
|
+
id,
|
|
3577
|
+
message: t("panels.market.failed", { reason })
|
|
3578
|
+
});
|
|
3152
3579
|
};
|
|
3153
|
-
if (!(freshness.loaded && installedRead !== false)
|
|
3154
|
-
|
|
3155
|
-
|
|
3156
|
-
}), t("panels.market.checking")));
|
|
3157
|
-
if (rows.length === 0 && installedList.length === 0) return /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketEmpty }, /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketEmptyTitle }, t("panels.market.empty")));
|
|
3158
|
-
return /* @__PURE__ */ h(Fragment, null, marketSections(rows).map((section) => /* @__PURE__ */ h(MarketSection, {
|
|
3580
|
+
if (!(freshness.loaded && installedRead !== false) || (settling?.size ?? 0) > 0 && shown.length === 0 && installedList.length === 0) return /* @__PURE__ */ h(MarketChecking, { t });
|
|
3581
|
+
if (shown.length === 0 && installedList.length === 0) return /* @__PURE__ */ h(MarketEmpty, { t });
|
|
3582
|
+
return /* @__PURE__ */ h(Fragment, null, marketSections(shown).map((section) => /* @__PURE__ */ h(MarketSection, {
|
|
3159
3583
|
key: section.id,
|
|
3160
3584
|
t,
|
|
3161
3585
|
titleKey: section.titleKey,
|
|
@@ -3163,7 +3587,7 @@ window.__ModuleLoader__.load({
|
|
|
3163
3587
|
pending,
|
|
3164
3588
|
failureOf: (id) => failed?.id === id ? failed.message : null,
|
|
3165
3589
|
act,
|
|
3166
|
-
|
|
3590
|
+
confirmActions: CONFIRM_UNINSTALL,
|
|
3167
3591
|
onConfirming: setConfirming
|
|
3168
3592
|
})), /* @__PURE__ */ h(MarketSection, {
|
|
3169
3593
|
t,
|
|
@@ -3172,268 +3596,100 @@ window.__ModuleLoader__.load({
|
|
|
3172
3596
|
pending,
|
|
3173
3597
|
failureOf: (id) => failed?.id === id ? failed.message : null,
|
|
3174
3598
|
act,
|
|
3175
|
-
|
|
3599
|
+
confirmActions: CONFIRM_REMOVE,
|
|
3176
3600
|
onConfirming: setConfirming
|
|
3177
3601
|
}), /* @__PURE__ */ h(PanelFoot, {
|
|
3178
|
-
size: "md",
|
|
3179
|
-
text: t("panels.market.foot")
|
|
3180
|
-
}),
|
|
3181
|
-
|
|
3182
|
-
|
|
3183
|
-
|
|
3184
|
-
|
|
3185
|
-
|
|
3186
|
-
|
|
3187
|
-
|
|
3188
|
-
|
|
3189
|
-
t,
|
|
3190
|
-
|
|
3191
|
-
|
|
3192
|
-
|
|
3193
|
-
|
|
3194
|
-
|
|
3195
|
-
|
|
3196
|
-
|
|
3197
|
-
|
|
3198
|
-
}));
|
|
3199
|
-
}
|
|
3200
|
-
//#endregion
|
|
3201
|
-
//#region src/shared/api/bundle-install.ts
|
|
3202
|
-
var BUNDLE_REGISTRIES_ROUTE = "bundle-registries";
|
|
3203
|
-
var BUNDLE_INSPECT_ROUTE = "bundle-inspect";
|
|
3204
|
-
var MODULE_VERSIONS_ROUTE = "module-versions";
|
|
3205
|
-
//#endregion
|
|
3206
|
-
//#region src/shared/hooks/bundle-queries.ts
|
|
3207
|
-
function readBundleRegistries() {
|
|
3208
|
-
return apiGet(BUNDLE_REGISTRIES_ROUTE);
|
|
3209
|
-
}
|
|
3210
|
-
function readBundleInspection(spec, registry) {
|
|
3211
|
-
return apiGet(BUNDLE_INSPECT_ROUTE, {
|
|
3212
|
-
spec,
|
|
3213
|
-
...registry === void 0 || registry === "" ? {} : { registry }
|
|
3214
|
-
});
|
|
3215
|
-
}
|
|
3216
|
-
function readModuleVersions(force = false) {
|
|
3217
|
-
return apiGet(MODULE_VERSIONS_ROUTE, force ? { force: "1" } : void 0);
|
|
3218
|
-
}
|
|
3219
|
-
var AddModule_module_default = {
|
|
3220
|
-
wide: "_wide_1coeb_1",
|
|
3221
|
-
dialog: "_dialog_1coeb_8",
|
|
3222
|
-
content: "_content_1coeb_13",
|
|
3223
|
-
stack: "_stack_1coeb_18",
|
|
3224
|
-
body: "_body_1coeb_25",
|
|
3225
|
-
field: "_field_1coeb_32",
|
|
3226
|
-
input: "_input_1coeb_39",
|
|
3227
|
-
registryField: "_registryField_1coeb_45",
|
|
3228
|
-
options: "_options_1coeb_51",
|
|
3229
|
-
guideToggle: "_guideToggle_1coeb_59",
|
|
3230
|
-
registryToggle: "_registryToggle_1coeb_78",
|
|
3231
|
-
registryWrap: "_registryWrap_1coeb_87",
|
|
3232
|
-
registryChosen: "_registryChosen_1coeb_121",
|
|
3233
|
-
registry: "_registry_1coeb_45",
|
|
3234
|
-
registryOption: "_registryOption_1coeb_143",
|
|
3235
|
-
registryPick: "_registryPick_1coeb_159",
|
|
3236
|
-
registryTitle: "_registryTitle_1coeb_179",
|
|
3237
|
-
registryHint: "_registryHint_1coeb_189",
|
|
3238
|
-
inputError: "_inputError_1coeb_197",
|
|
3239
|
-
guide: "_guide_1coeb_59",
|
|
3240
|
-
guideList: "_guideList_1coeb_214",
|
|
3241
|
-
guideItem: "_guideItem_1coeb_223",
|
|
3242
|
-
guideIndex: "_guideIndex_1coeb_230",
|
|
3243
|
-
guideMain: "_guideMain_1coeb_244",
|
|
3244
|
-
guideTitle: "_guideTitle_1coeb_252",
|
|
3245
|
-
guideHint: "_guideHint_1coeb_258",
|
|
3246
|
-
guideExample: "_guideExample_1coeb_264",
|
|
3247
|
-
guideExampleLabel: "_guideExampleLabel_1coeb_274",
|
|
3248
|
-
footer: "_footer_1coeb_278",
|
|
3249
|
-
hero: "_hero_1coeb_285",
|
|
3250
|
-
heroIcon: "_heroIcon_1coeb_294",
|
|
3251
|
-
pendingTitle: "_pendingTitle_1coeb_311",
|
|
3252
|
-
wizardTitle: "_wizardTitle_1coeb_319",
|
|
3253
|
-
subject: "_subject_1coeb_326",
|
|
3254
|
-
subjectName: "_subjectName_1coeb_337",
|
|
3255
|
-
subjectMeta: "_subjectMeta_1coeb_343",
|
|
3256
|
-
subjectDesc: "_subjectDesc_1coeb_344",
|
|
3257
|
-
result: "_result_1coeb_351",
|
|
3258
|
-
resultWarn: "_resultWarn_1coeb_352",
|
|
3259
|
-
approval: "_approval_1coeb_365",
|
|
3260
|
-
approvalTitle: "_approvalTitle_1coeb_375",
|
|
3261
|
-
approvalText: "_approvalText_1coeb_382",
|
|
3262
|
-
approvalCaution: "_approvalCaution_1coeb_388",
|
|
3263
|
-
note: "_note_1coeb_395",
|
|
3264
|
-
noteWarn: "_noteWarn_1coeb_402",
|
|
3265
|
-
noteError: "_noteError_1coeb_406",
|
|
3266
|
-
problem: "_problem_1coeb_410",
|
|
3267
|
-
detailLabel: "_detailLabel_1coeb_417",
|
|
3268
|
-
detail: "_detail_1coeb_417"
|
|
3269
|
-
};
|
|
3270
|
-
//#endregion
|
|
3271
|
-
//#region src/app/layouts/market/add-module-text.ts
|
|
3272
|
-
var GUIDE_ITEMS = [
|
|
3273
|
-
{
|
|
3274
|
-
titleKey: "panels.market.add.guideIdTitle",
|
|
3275
|
-
exampleKey: "panels.market.add.guideIdExample",
|
|
3276
|
-
hintKey: "panels.market.add.guideIdHint"
|
|
3277
|
-
},
|
|
3278
|
-
{
|
|
3279
|
-
titleKey: "panels.market.add.guideGitTitle",
|
|
3280
|
-
exampleKey: "panels.market.add.guideGitExample",
|
|
3281
|
-
hintKey: "panels.market.add.guideGitHint"
|
|
3282
|
-
},
|
|
3283
|
-
{
|
|
3284
|
-
titleKey: "panels.market.add.guidePathTitle",
|
|
3285
|
-
exampleKey: "panels.market.add.guidePathExample",
|
|
3286
|
-
hintKey: "panels.market.add.guidePathHint"
|
|
3287
|
-
}
|
|
3288
|
-
];
|
|
3289
|
-
function hostOf(url) {
|
|
3290
|
-
try {
|
|
3291
|
-
return new URL(url).host;
|
|
3292
|
-
} catch {
|
|
3293
|
-
return url;
|
|
3294
|
-
}
|
|
3295
|
-
}
|
|
3296
|
-
var OFFICIAL_NPM_HOST = "registry.npmjs.org";
|
|
3297
|
-
var KNOWN_HOSTS = {
|
|
3298
|
-
[OFFICIAL_NPM_HOST]: "panels.market.add.registryOfficial",
|
|
3299
|
-
"registry.npmmirror.com": "panels.market.add.registryMirror"
|
|
3300
|
-
};
|
|
3301
|
-
function registryNameKey(host) {
|
|
3302
|
-
return KNOWN_HOSTS[host];
|
|
3303
|
-
}
|
|
3304
|
-
function normalizeRegistry(url) {
|
|
3305
|
-
const parsed = new URL(url);
|
|
3306
|
-
if (!parsed.pathname.endsWith("/")) parsed.pathname += "/";
|
|
3307
|
-
return parsed.href;
|
|
3308
|
-
}
|
|
3309
|
-
function registryKey(url, resolved) {
|
|
3310
|
-
const target = url ?? resolved;
|
|
3311
|
-
if (target === null) return "";
|
|
3312
|
-
try {
|
|
3313
|
-
return normalizeRegistry(target);
|
|
3314
|
-
} catch {
|
|
3315
|
-
return target;
|
|
3316
|
-
}
|
|
3317
|
-
}
|
|
3318
|
-
function registryOptions(registries) {
|
|
3319
|
-
const resolved = registries === null ? null : registries.resolved;
|
|
3320
|
-
const entries = [
|
|
3321
|
-
registries === null ? null : registries.registry,
|
|
3322
|
-
...registries === null ? [] : registries.fallbackRegistries,
|
|
3323
|
-
null
|
|
3324
|
-
];
|
|
3325
|
-
const offered = [];
|
|
3326
|
-
const keys = /* @__PURE__ */ new Set();
|
|
3327
|
-
for (const entry of entries) {
|
|
3328
|
-
const key = registryKey(entry, resolved);
|
|
3329
|
-
if (keys.has(key)) continue;
|
|
3330
|
-
keys.add(key);
|
|
3331
|
-
const url = entry ?? resolved;
|
|
3332
|
-
if (url === null) {
|
|
3333
|
-
offered.push({
|
|
3334
|
-
choice: {
|
|
3335
|
-
kind: "default",
|
|
3336
|
-
value: ""
|
|
3337
|
-
},
|
|
3338
|
-
host: OFFICIAL_NPM_HOST,
|
|
3339
|
-
nameKey: "panels.market.add.registryDefault"
|
|
3340
|
-
});
|
|
3341
|
-
continue;
|
|
3342
|
-
}
|
|
3343
|
-
const host = hostOf(url);
|
|
3344
|
-
const nameKey = registryNameKey(host);
|
|
3345
|
-
offered.push({
|
|
3346
|
-
choice: entry === null ? {
|
|
3347
|
-
kind: "default",
|
|
3348
|
-
value: ""
|
|
3349
|
-
} : {
|
|
3350
|
-
kind: "url",
|
|
3351
|
-
value: entry
|
|
3352
|
-
},
|
|
3353
|
-
host,
|
|
3354
|
-
...nameKey === void 0 ? {} : { nameKey }
|
|
3355
|
-
});
|
|
3356
|
-
}
|
|
3357
|
-
offered.push({ choice: {
|
|
3358
|
-
kind: "custom",
|
|
3359
|
-
value: ""
|
|
3360
|
-
} });
|
|
3361
|
-
return offered;
|
|
3362
|
-
}
|
|
3363
|
-
function customRegistryAllowed(value) {
|
|
3364
|
-
return /^https?:\/\//.test(value.trim());
|
|
3365
|
-
}
|
|
3366
|
-
function registryOf(choice, custom) {
|
|
3367
|
-
if (choice.kind === "custom") return customRegistryAllowed(custom) ? custom.trim() : void 0;
|
|
3368
|
-
return choice.value === "" ? void 0 : choice.value;
|
|
3602
|
+
size: "md",
|
|
3603
|
+
text: t("panels.market.foot")
|
|
3604
|
+
}), /* @__PURE__ */ h(SharedSection, {
|
|
3605
|
+
t,
|
|
3606
|
+
rows: shared,
|
|
3607
|
+
pending,
|
|
3608
|
+
failureOf: (id) => failed?.id === id ? failed.message : null,
|
|
3609
|
+
act
|
|
3610
|
+
}), /* @__PURE__ */ h(ConfirmUninstall, {
|
|
3611
|
+
key: confirming ?? "",
|
|
3612
|
+
t,
|
|
3613
|
+
name: confirmingRow === void 0 ? null : t(confirmingRow.titleKey),
|
|
3614
|
+
onCancel: () => setConfirming(null),
|
|
3615
|
+
onConfirm: () => {
|
|
3616
|
+
const id = confirming;
|
|
3617
|
+
setConfirming(null);
|
|
3618
|
+
if (id === null) return;
|
|
3619
|
+
act(id, rowById.get(id)?.pkg === void 0 ? "uninstall" : "remove-bundle");
|
|
3620
|
+
}
|
|
3621
|
+
}));
|
|
3369
3622
|
}
|
|
3370
|
-
|
|
3371
|
-
|
|
3372
|
-
|
|
3373
|
-
|
|
3623
|
+
//#endregion
|
|
3624
|
+
//#region src/shared/api/bundle-install.ts
|
|
3625
|
+
var BUNDLE_REGISTRIES_ROUTE = "bundle-registries";
|
|
3626
|
+
var BUNDLE_INSPECT_ROUTE = "bundle-inspect";
|
|
3627
|
+
var MODULE_VERSIONS_ROUTE = "module-versions";
|
|
3628
|
+
//#endregion
|
|
3629
|
+
//#region src/shared/hooks/bundle-queries.ts
|
|
3630
|
+
function readBundleRegistries() {
|
|
3631
|
+
return apiGet(BUNDLE_REGISTRIES_ROUTE);
|
|
3374
3632
|
}
|
|
3375
|
-
function
|
|
3376
|
-
|
|
3377
|
-
|
|
3378
|
-
|
|
3379
|
-
name: t(option.nameKey),
|
|
3380
|
-
host: option.host
|
|
3633
|
+
function readBundleInspection(spec, registry) {
|
|
3634
|
+
return apiGet(BUNDLE_INSPECT_ROUTE, {
|
|
3635
|
+
spec,
|
|
3636
|
+
...registry === void 0 || registry === "" ? {} : { registry }
|
|
3381
3637
|
});
|
|
3382
3638
|
}
|
|
3383
|
-
|
|
3384
|
-
"
|
|
3385
|
-
"already-installed": "panels.market.add.problemInstalled",
|
|
3386
|
-
"not-found": "panels.market.add.problemNotFound",
|
|
3387
|
-
"not-a-package": "panels.market.add.problemNotPackage",
|
|
3388
|
-
"not-a-bundle": "panels.market.add.problemNotBundle",
|
|
3389
|
-
network: "panels.market.add.problemNetwork",
|
|
3390
|
-
unknown: "panels.market.add.problemUnknown"
|
|
3391
|
-
};
|
|
3392
|
-
function problemKey(problem) {
|
|
3393
|
-
return PROBLEM_KEYS[problem] ?? PROBLEM_KEYS.unknown;
|
|
3394
|
-
}
|
|
3395
|
-
var FAILURE_KEYS = {
|
|
3396
|
-
network: "panels.market.add.failureNetwork",
|
|
3397
|
-
"spec-host": "panels.market.add.failureNetworkHost",
|
|
3398
|
-
"not-found": "panels.market.add.failureNotFound",
|
|
3399
|
-
"no-matching-version": "panels.market.add.failureNoMatchingVersion",
|
|
3400
|
-
"disk-full": "panels.market.add.failureDiskFull",
|
|
3401
|
-
permission: "panels.market.add.failurePermission",
|
|
3402
|
-
"build-blocked": "panels.market.add.failureBuildBlocked",
|
|
3403
|
-
integrity: "panels.market.add.failureIntegrity",
|
|
3404
|
-
timeout: "panels.market.add.failureTimeout",
|
|
3405
|
-
"pnpm-missing": "panels.market.add.failurePnpmMissing",
|
|
3406
|
-
"operation-error": "panels.market.add.failureGeneric",
|
|
3407
|
-
"incompatible-version": "panels.market.add.failureGeneric",
|
|
3408
|
-
"not-bundle": "panels.market.add.failureGeneric",
|
|
3409
|
-
"invalid-spec": "panels.market.add.failureGeneric",
|
|
3410
|
-
"bundle-in-use": "panels.market.add.failureGeneric",
|
|
3411
|
-
"not-removable": "panels.market.add.failureGeneric",
|
|
3412
|
-
"stop-profile": "panels.market.add.failureGeneric",
|
|
3413
|
-
"stale-approval": "panels.market.add.failureGeneric"
|
|
3414
|
-
};
|
|
3415
|
-
function failureCode(change) {
|
|
3416
|
-
if (change.failedAt === "spec-host") return "spec-host";
|
|
3417
|
-
return change.errorCode ?? change.packageResult?.kind ?? change.application;
|
|
3418
|
-
}
|
|
3419
|
-
function failureReasonKey(code) {
|
|
3420
|
-
return FAILURE_KEYS[code];
|
|
3421
|
-
}
|
|
3422
|
-
function failureReason(code, application, t) {
|
|
3423
|
-
const key = failureReasonKey(code);
|
|
3424
|
-
if (key !== void 0) return t(key);
|
|
3425
|
-
if (code === application) return t("panels.market.add.reason.unknown");
|
|
3426
|
-
return code;
|
|
3639
|
+
function readModuleVersions(force = false) {
|
|
3640
|
+
return apiGet(MODULE_VERSIONS_ROUTE, force ? { force: "1" } : void 0);
|
|
3427
3641
|
}
|
|
3428
|
-
var
|
|
3429
|
-
|
|
3430
|
-
|
|
3431
|
-
|
|
3432
|
-
"
|
|
3642
|
+
var AddModule_module_default = {
|
|
3643
|
+
wide: "_wide_1coeb_1",
|
|
3644
|
+
dialog: "_dialog_1coeb_8",
|
|
3645
|
+
content: "_content_1coeb_13",
|
|
3646
|
+
stack: "_stack_1coeb_18",
|
|
3647
|
+
body: "_body_1coeb_25",
|
|
3648
|
+
field: "_field_1coeb_32",
|
|
3649
|
+
input: "_input_1coeb_39",
|
|
3650
|
+
registryField: "_registryField_1coeb_45",
|
|
3651
|
+
options: "_options_1coeb_51",
|
|
3652
|
+
guideToggle: "_guideToggle_1coeb_59",
|
|
3653
|
+
registryToggle: "_registryToggle_1coeb_78",
|
|
3654
|
+
registryWrap: "_registryWrap_1coeb_87",
|
|
3655
|
+
registryChosen: "_registryChosen_1coeb_121",
|
|
3656
|
+
registry: "_registry_1coeb_45",
|
|
3657
|
+
registryOption: "_registryOption_1coeb_143",
|
|
3658
|
+
registryPick: "_registryPick_1coeb_159",
|
|
3659
|
+
registryTitle: "_registryTitle_1coeb_179",
|
|
3660
|
+
registryHint: "_registryHint_1coeb_189",
|
|
3661
|
+
inputError: "_inputError_1coeb_197",
|
|
3662
|
+
guide: "_guide_1coeb_59",
|
|
3663
|
+
guideList: "_guideList_1coeb_214",
|
|
3664
|
+
guideItem: "_guideItem_1coeb_223",
|
|
3665
|
+
guideIndex: "_guideIndex_1coeb_230",
|
|
3666
|
+
guideMain: "_guideMain_1coeb_244",
|
|
3667
|
+
guideTitle: "_guideTitle_1coeb_252",
|
|
3668
|
+
guideHint: "_guideHint_1coeb_258",
|
|
3669
|
+
guideExample: "_guideExample_1coeb_264",
|
|
3670
|
+
guideExampleLabel: "_guideExampleLabel_1coeb_274",
|
|
3671
|
+
footer: "_footer_1coeb_278",
|
|
3672
|
+
hero: "_hero_1coeb_285",
|
|
3673
|
+
heroIcon: "_heroIcon_1coeb_294",
|
|
3674
|
+
pendingTitle: "_pendingTitle_1coeb_311",
|
|
3675
|
+
wizardTitle: "_wizardTitle_1coeb_319",
|
|
3676
|
+
subject: "_subject_1coeb_326",
|
|
3677
|
+
subjectName: "_subjectName_1coeb_337",
|
|
3678
|
+
subjectMeta: "_subjectMeta_1coeb_343",
|
|
3679
|
+
subjectDesc: "_subjectDesc_1coeb_344",
|
|
3680
|
+
result: "_result_1coeb_351",
|
|
3681
|
+
resultWarn: "_resultWarn_1coeb_352",
|
|
3682
|
+
approval: "_approval_1coeb_365",
|
|
3683
|
+
approvalTitle: "_approvalTitle_1coeb_375",
|
|
3684
|
+
approvalText: "_approvalText_1coeb_382",
|
|
3685
|
+
approvalCaution: "_approvalCaution_1coeb_388",
|
|
3686
|
+
note: "_note_1coeb_395",
|
|
3687
|
+
noteWarn: "_noteWarn_1coeb_402",
|
|
3688
|
+
noteError: "_noteError_1coeb_406",
|
|
3689
|
+
problem: "_problem_1coeb_410",
|
|
3690
|
+
detailLabel: "_detailLabel_1coeb_417",
|
|
3691
|
+
detail: "_detail_1coeb_417"
|
|
3433
3692
|
};
|
|
3434
|
-
function supplyKey(state) {
|
|
3435
|
-
return SUPPLY_KEYS[state];
|
|
3436
|
-
}
|
|
3437
3693
|
//#endregion
|
|
3438
3694
|
//#region src/app/layouts/market/AddModuleRegistry.tsx
|
|
3439
3695
|
var REGISTRY_ID = "wb-add-module-registry";
|
|
@@ -3493,7 +3749,13 @@ window.__ModuleLoader__.load({
|
|
|
3493
3749
|
return /* @__PURE__ */ h("div", {
|
|
3494
3750
|
key: `${option.choice.kind}|${option.choice.value}`,
|
|
3495
3751
|
className: AddModule_module_default.registryOption,
|
|
3496
|
-
"data-checked": active
|
|
3752
|
+
"data-checked": active,
|
|
3753
|
+
onPointerDown: () => {
|
|
3754
|
+
if (!active) state.setChoice(option.choice);
|
|
3755
|
+
},
|
|
3756
|
+
onFocusCapture: () => {
|
|
3757
|
+
if (!active) state.setChoice(option.choice);
|
|
3758
|
+
}
|
|
3497
3759
|
}, /* @__PURE__ */ h("label", { className: AddModule_module_default.registryPick }, /* @__PURE__ */ h("input", {
|
|
3498
3760
|
type: "radio",
|
|
3499
3761
|
name: REGISTRY_ID,
|
|
@@ -3505,7 +3767,6 @@ window.__ModuleLoader__.load({
|
|
|
3505
3767
|
"aria-label": t("panels.market.add.registryCustom"),
|
|
3506
3768
|
placeholder: t("panels.market.add.registryCustomPlaceholder"),
|
|
3507
3769
|
value: state.custom,
|
|
3508
|
-
disabled: !active,
|
|
3509
3770
|
invalid: customBad,
|
|
3510
3771
|
onChange: (event) => state.setCustom(event.target.value)
|
|
3511
3772
|
}), customBad ? /* @__PURE__ */ h("span", {
|
|
@@ -4097,7 +4358,7 @@ window.__ModuleLoader__.load({
|
|
|
4097
4358
|
}, t("panels.market.add.run"))) : null, installing ? /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
4098
4359
|
type: "button",
|
|
4099
4360
|
variant: "outline",
|
|
4100
|
-
size: "
|
|
4361
|
+
size: "md",
|
|
4101
4362
|
onClick: state.cancelInstall
|
|
4102
4363
|
}, t("panels.market.add.cancel")) : null, state.phase === "result" ? /* @__PURE__ */ h(Fragment, null, failed && builds.length === 0 ? /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
4103
4364
|
type: "button",
|
|
@@ -4167,6 +4428,7 @@ window.__ModuleLoader__.load({
|
|
|
4167
4428
|
checking: false,
|
|
4168
4429
|
checkedAt: null
|
|
4169
4430
|
};
|
|
4431
|
+
var NO_UNITS = /* @__PURE__ */ new Set();
|
|
4170
4432
|
function useLiveManifests(units) {
|
|
4171
4433
|
useSyncExternalStore(useCallback((listener) => units.subscribe(listener), [units]), useCallback(() => units.version(), [units]));
|
|
4172
4434
|
return units.manifests();
|
|
@@ -4189,7 +4451,7 @@ window.__ModuleLoader__.load({
|
|
|
4189
4451
|
const [decided, setDecided] = useState(false);
|
|
4190
4452
|
const [adding, setAdding] = useState(false);
|
|
4191
4453
|
const [updates, setUpdates] = useState({});
|
|
4192
|
-
const [installed, setInstalled] = useState(
|
|
4454
|
+
const [installed, setInstalled] = useState(void 0);
|
|
4193
4455
|
const [installedRead, setInstalledRead] = useState(false);
|
|
4194
4456
|
const loadUpdates = useCallback((force = false) => {
|
|
4195
4457
|
readModuleVersions(force).then((response) => {
|
|
@@ -4225,6 +4487,24 @@ window.__ModuleLoader__.load({
|
|
|
4225
4487
|
forceProbe,
|
|
4226
4488
|
loadUpdates
|
|
4227
4489
|
]);
|
|
4490
|
+
const installedKey = (installed ?? []).map((module) => module.unit).join("|");
|
|
4491
|
+
const rosterKey = manifests.map((manifest) => manifest.id).join("|");
|
|
4492
|
+
const activeKey = Object.keys(capabilities ?? {}).join("|");
|
|
4493
|
+
const seenRef = useRef(null);
|
|
4494
|
+
const [settling, setSettling] = useState(NO_UNITS);
|
|
4495
|
+
useEffect(() => {
|
|
4496
|
+
const units = installedKey === "" ? [] : installedKey.split("|");
|
|
4497
|
+
const held = holdBack(units, new Set(rosterKey === "" ? [] : rosterKey.split("|")), new Set(activeKey === "" ? [] : activeKey.split("|")), seenRef.current);
|
|
4498
|
+
seenRef.current = new Set(units);
|
|
4499
|
+
setSettling(held.length === 0 ? NO_UNITS : new Set(held));
|
|
4500
|
+
if (held.length === 0) return;
|
|
4501
|
+
const timer = setTimeout(() => setSettling(NO_UNITS), MODULE_SETTLE_MS);
|
|
4502
|
+
return () => clearTimeout(timer);
|
|
4503
|
+
}, [
|
|
4504
|
+
installedKey,
|
|
4505
|
+
rosterKey,
|
|
4506
|
+
activeKey
|
|
4507
|
+
]);
|
|
4228
4508
|
const freshness = {
|
|
4229
4509
|
loaded: capabilities !== null,
|
|
4230
4510
|
checking,
|
|
@@ -4274,6 +4554,7 @@ window.__ModuleLoader__.load({
|
|
|
4274
4554
|
updates,
|
|
4275
4555
|
installed,
|
|
4276
4556
|
installedRead: mock === void 0 ? installedRead : mock.installedRead ?? true,
|
|
4557
|
+
settling: mock === void 0 ? settling : void 0,
|
|
4277
4558
|
mock
|
|
4278
4559
|
}), /* @__PURE__ */ h(AddModuleDialog, {
|
|
4279
4560
|
t,
|
|
@@ -4372,6 +4653,14 @@ window.__ModuleLoader__.load({
|
|
|
4372
4653
|
return { textKey: "env.bridge.unknown" };
|
|
4373
4654
|
}
|
|
4374
4655
|
//#endregion
|
|
4656
|
+
//#region src/app/layouts/env-gate/gate-deadline.ts
|
|
4657
|
+
function createGateDeadline(giveUpMs, expire) {
|
|
4658
|
+
const timer = setTimeout(expire, giveUpMs);
|
|
4659
|
+
return { disarm() {
|
|
4660
|
+
clearTimeout(timer);
|
|
4661
|
+
} };
|
|
4662
|
+
}
|
|
4663
|
+
//#endregion
|
|
4375
4664
|
//#region src/app/layouts/env-gate/gate-dom.ts
|
|
4376
4665
|
var SVG_NS = "http://www.w3.org/2000/svg";
|
|
4377
4666
|
function svgIcon(kind) {
|
|
@@ -4834,7 +5123,6 @@ window.__ModuleLoader__.load({
|
|
|
4834
5123
|
}
|
|
4835
5124
|
let cancelled = false;
|
|
4836
5125
|
const forcePlan = createForcePlan();
|
|
4837
|
-
const startedAt = Date.now();
|
|
4838
5126
|
let pinned = null;
|
|
4839
5127
|
function close() {
|
|
4840
5128
|
if (closed) return;
|
|
@@ -4842,9 +5130,11 @@ window.__ModuleLoader__.load({
|
|
|
4842
5130
|
cancelled = true;
|
|
4843
5131
|
if (timer !== void 0) clearTimeout(timer);
|
|
4844
5132
|
if (ticker !== void 0) clearInterval(ticker);
|
|
5133
|
+
deadline.disarm();
|
|
4845
5134
|
overlay.remove();
|
|
4846
5135
|
if (root !== null) root.inert = previousInert;
|
|
4847
5136
|
}
|
|
5137
|
+
const deadline = createGateDeadline(GIVE_UP_MS, close);
|
|
4848
5138
|
const rows = /* @__PURE__ */ new Map();
|
|
4849
5139
|
let renderedOrder = "";
|
|
4850
5140
|
function ensureRow(step) {
|
|
@@ -4938,10 +5228,6 @@ window.__ModuleLoader__.load({
|
|
|
4938
5228
|
return;
|
|
4939
5229
|
}
|
|
4940
5230
|
if (response.phase === "failed") return;
|
|
4941
|
-
if (Date.now() - startedAt > GIVE_UP_MS) {
|
|
4942
|
-
close();
|
|
4943
|
-
return;
|
|
4944
|
-
}
|
|
4945
5231
|
timer = setTimeout(() => void poll(), POLL_MS);
|
|
4946
5232
|
}
|
|
4947
5233
|
function retryNow() {
|
|
@@ -5203,7 +5489,7 @@ window.__ModuleLoader__.load({
|
|
|
5203
5489
|
};
|
|
5204
5490
|
//#endregion
|
|
5205
5491
|
//#region src/app/layouts/rightbar/panel-mock.ts
|
|
5206
|
-
function row(id, titleKey, shown) {
|
|
5492
|
+
function row$1(id, titleKey, shown) {
|
|
5207
5493
|
return {
|
|
5208
5494
|
id,
|
|
5209
5495
|
titleKey,
|
|
@@ -5232,10 +5518,10 @@ window.__ModuleLoader__.load({
|
|
|
5232
5518
|
}];
|
|
5233
5519
|
const titleKey = found.card?.titleKey ?? found.id;
|
|
5234
5520
|
const id = found.id;
|
|
5235
|
-
const on = row(id, titleKey, true);
|
|
5236
|
-
const off = row(id, titleKey, false);
|
|
5237
|
-
const twin = row(`${id}-b`, titleKey, true);
|
|
5238
|
-
const third = row(`${id}-c`, titleKey, false);
|
|
5521
|
+
const on = row$1(id, titleKey, true);
|
|
5522
|
+
const off = row$1(id, titleKey, false);
|
|
5523
|
+
const twin = row$1(`${id}-b`, titleKey, true);
|
|
5524
|
+
const third = row$1(`${id}-c`, titleKey, false);
|
|
5239
5525
|
return [
|
|
5240
5526
|
{
|
|
5241
5527
|
id: "one",
|
|
@@ -5317,7 +5603,7 @@ window.__ModuleLoader__.load({
|
|
|
5317
5603
|
{
|
|
5318
5604
|
id: "long",
|
|
5319
5605
|
label: "超长模块名",
|
|
5320
|
-
units: [row(id, "一个名字特别特别长的模块用来验证省略号会不会把开关挤下去", true)],
|
|
5606
|
+
units: [row$1(id, "一个名字特别特别长的模块用来验证省略号会不会把开关挤下去", true)],
|
|
5321
5607
|
capabilities: probe(id, "ok"),
|
|
5322
5608
|
expect: {
|
|
5323
5609
|
rows: 1,
|
|
@@ -5383,13 +5669,14 @@ window.__ModuleLoader__.load({
|
|
|
5383
5669
|
function available(capability) {
|
|
5384
5670
|
if (capability === void 0) return true;
|
|
5385
5671
|
if (capability.released === true) return false;
|
|
5386
|
-
return capability.status === "ok" || capability.status === "unchecked";
|
|
5672
|
+
return capability.status === "ok" || capability.status === "unchecked" || capability.status === "failed";
|
|
5387
5673
|
}
|
|
5388
5674
|
function selectPanelUnits(units, capabilities) {
|
|
5389
5675
|
return units.filter((unit) => available(capabilities?.[unit.id]));
|
|
5390
5676
|
}
|
|
5391
5677
|
function panelBadgeKey(capability) {
|
|
5392
5678
|
if (capability === void 0 || capability.status === "ok") return void 0;
|
|
5679
|
+
if (capability.status === "failed") return "panels.dep.failed";
|
|
5393
5680
|
if (capability.status === "missing-plugin") return "panels.dep.missingPlugin";
|
|
5394
5681
|
if (capability.status === "missing-commands") return "panels.dep.missingCommands";
|
|
5395
5682
|
return "panels.dep.unchecked";
|
|
@@ -5648,6 +5935,16 @@ window.__ModuleLoader__.load({
|
|
|
5648
5935
|
cards: 8,
|
|
5649
5936
|
empty: false
|
|
5650
5937
|
}
|
|
5938
|
+
},
|
|
5939
|
+
{
|
|
5940
|
+
id: "crash",
|
|
5941
|
+
label: "坏卡 + 好卡",
|
|
5942
|
+
note: "一张渲染必炸的卡 + 你装的模块(配 ?wbCrash=1 才摆得出来):要看到坏的那张只剩一句\"这个模块起不来\",别的卡与面板壳都还在。",
|
|
5943
|
+
shape: { kind: "all" },
|
|
5944
|
+
expect: {
|
|
5945
|
+
cards: 1,
|
|
5946
|
+
empty: false
|
|
5947
|
+
}
|
|
5651
5948
|
}
|
|
5652
5949
|
],
|
|
5653
5950
|
EMPTY,
|
|
@@ -5692,6 +5989,15 @@ window.__ModuleLoader__.load({
|
|
|
5692
5989
|
reading: true,
|
|
5693
5990
|
repeated: false
|
|
5694
5991
|
};
|
|
5992
|
+
if (shape.kind === "all") return {
|
|
5993
|
+
modules: all.map((module) => ({
|
|
5994
|
+
key: module.id,
|
|
5995
|
+
module
|
|
5996
|
+
})),
|
|
5997
|
+
empty: false,
|
|
5998
|
+
reading: false,
|
|
5999
|
+
repeated: all.length > 1
|
|
6000
|
+
};
|
|
5695
6001
|
const seed = all[0];
|
|
5696
6002
|
const modules = seed === void 0 ? [] : Array.from({ length: Math.max(0, shape.count) }, (_unused, at) => ({
|
|
5697
6003
|
key: `${seed.id}#${at}`,
|
|
@@ -5902,6 +6208,9 @@ window.__ModuleLoader__.load({
|
|
|
5902
6208
|
var Rightbar_module_default = { panel: "_panel_1oyh4_1" };
|
|
5903
6209
|
//#endregion
|
|
5904
6210
|
//#region src/app/layouts/rightbar/Rightbar.tsx
|
|
6211
|
+
function workspacePathOf(world) {
|
|
6212
|
+
return world.current.workspace?.path ?? "";
|
|
6213
|
+
}
|
|
5905
6214
|
function ModuleHost({ module, step, panelToken, onPanelRefresh, onSummary, ...rest }) {
|
|
5906
6215
|
const [ownToken, setOwnToken] = useState(0);
|
|
5907
6216
|
return /* @__PURE__ */ h(step === void 0 ? module.View : module.steps?.[step]?.View ?? module.View, {
|
|
@@ -5952,8 +6261,13 @@ window.__ModuleLoader__.load({
|
|
|
5952
6261
|
icon: /* @__PURE__ */ h(IconBrandMark, { size: 32 }),
|
|
5953
6262
|
title: t("panels.unknownStep")
|
|
5954
6263
|
});
|
|
5955
|
-
|
|
5956
|
-
|
|
6264
|
+
const key = `${owner.id}:${top.kind}`;
|
|
6265
|
+
return /* @__PURE__ */ h(CardBoundary, {
|
|
6266
|
+
key,
|
|
6267
|
+
unit: owner.id,
|
|
6268
|
+
resetKey: `${key}:${panelToken}:${workspacePathOf(world)}`,
|
|
6269
|
+
t
|
|
6270
|
+
}, /* @__PURE__ */ h(ModuleHost, {
|
|
5957
6271
|
module: owner,
|
|
5958
6272
|
step: top.kind,
|
|
5959
6273
|
world,
|
|
@@ -5963,7 +6277,7 @@ window.__ModuleLoader__.load({
|
|
|
5963
6277
|
onOpenMarket,
|
|
5964
6278
|
onSummary,
|
|
5965
6279
|
t
|
|
5966
|
-
});
|
|
6280
|
+
}));
|
|
5967
6281
|
}
|
|
5968
6282
|
return /* @__PURE__ */ h(Fragment, null, plan.reading ? /* @__PURE__ */ h(CenteredState, {
|
|
5969
6283
|
icon: null,
|
|
@@ -5972,8 +6286,12 @@ window.__ModuleLoader__.load({
|
|
|
5972
6286
|
t,
|
|
5973
6287
|
onOpenModules,
|
|
5974
6288
|
onOpenMarket
|
|
5975
|
-
}) : null, plan.modules.map(({ key, module }) => /* @__PURE__ */ h(
|
|
6289
|
+
}) : null, plan.modules.map(({ key, module }) => /* @__PURE__ */ h(CardBoundary, {
|
|
5976
6290
|
key,
|
|
6291
|
+
unit: module.id,
|
|
6292
|
+
resetKey: `${key}:${panelToken}:${workspacePathOf(world)}`,
|
|
6293
|
+
t
|
|
6294
|
+
}, /* @__PURE__ */ h(ModuleHost, {
|
|
5977
6295
|
module,
|
|
5978
6296
|
world,
|
|
5979
6297
|
panelToken,
|
|
@@ -5982,7 +6300,7 @@ window.__ModuleLoader__.load({
|
|
|
5982
6300
|
onOpenMarket,
|
|
5983
6301
|
onSummary,
|
|
5984
6302
|
t
|
|
5985
|
-
})));
|
|
6303
|
+
}))));
|
|
5986
6304
|
}
|
|
5987
6305
|
function Rightbar(props) {
|
|
5988
6306
|
const units = props.units;
|
|
@@ -6005,7 +6323,7 @@ window.__ModuleLoader__.load({
|
|
|
6005
6323
|
const plan = planBoard(fixtures.shape, {
|
|
6006
6324
|
modules: visibleModules,
|
|
6007
6325
|
configRead: enabledUnits !== null
|
|
6008
|
-
}, fixtureSeed(manifests, modules.all()));
|
|
6326
|
+
}, fixtureSeed(manifests, modules.all(), crashModeOn(window.location.search)));
|
|
6009
6327
|
const world = createSuiteWorld({
|
|
6010
6328
|
workspaces,
|
|
6011
6329
|
sessions,
|
|
@@ -6245,59 +6563,324 @@ window.__ModuleLoader__.load({
|
|
|
6245
6563
|
className: "wb-panelTag"
|
|
6246
6564
|
}, t(hint.labelKey))));
|
|
6247
6565
|
}
|
|
6566
|
+
var ProjectSwitcher_module_default = {
|
|
6567
|
+
root: "_root_1vd78_1",
|
|
6568
|
+
anchor: "_anchor_1vd78_7",
|
|
6569
|
+
menu: "_menu_1vd78_12",
|
|
6570
|
+
trigger: "_trigger_1vd78_17",
|
|
6571
|
+
glyph: "_glyph_1vd78_44",
|
|
6572
|
+
glyphActive: "_glyphActive_1vd78_54",
|
|
6573
|
+
triggerName: "_triggerName_1vd78_58",
|
|
6574
|
+
dir: "_dir_1vd78_69",
|
|
6575
|
+
name: "_name_1vd78_77",
|
|
6576
|
+
chevron: "_chevron_1vd78_90",
|
|
6577
|
+
row: "_row_1vd78_96",
|
|
6578
|
+
trailing: "_trailing_1vd78_104",
|
|
6579
|
+
rowAction: "_rowAction_1vd78_114",
|
|
6580
|
+
current: "_current_1vd78_127",
|
|
6581
|
+
field: "_field_1vd78_134",
|
|
6582
|
+
searchIcon: "_searchIcon_1vd78_151",
|
|
6583
|
+
search: "_search_1vd78_151"
|
|
6584
|
+
};
|
|
6585
|
+
var WorkspaceRenameDialog_module_default = {
|
|
6586
|
+
dialog: "_dialog_1vye5_1",
|
|
6587
|
+
stack: "_stack_1vye5_5",
|
|
6588
|
+
input: "_input_1vye5_12",
|
|
6589
|
+
meta: "_meta_1vye5_18"
|
|
6590
|
+
};
|
|
6591
|
+
function basenameOf(value) {
|
|
6592
|
+
const trimmed = value.replace(/[/\\]+$/, "");
|
|
6593
|
+
const at = Math.max(trimmed.lastIndexOf("/"), trimmed.lastIndexOf("\\"));
|
|
6594
|
+
return at === -1 ? trimmed : trimmed.slice(at + 1);
|
|
6595
|
+
}
|
|
6596
|
+
function displayNameOf(workspace) {
|
|
6597
|
+
const dir = basenameOf(workspace.path) || workspace.path;
|
|
6598
|
+
const title = workspace.title.trim();
|
|
6599
|
+
return {
|
|
6600
|
+
dir,
|
|
6601
|
+
name: title !== "" && title !== dir && title !== "default-workspace" ? title : ""
|
|
6602
|
+
};
|
|
6603
|
+
}
|
|
6604
|
+
function matchWorkspaces(items, query) {
|
|
6605
|
+
const needle = query.trim().toLowerCase();
|
|
6606
|
+
if (needle === "") return [...items];
|
|
6607
|
+
return items.filter((workspace) => {
|
|
6608
|
+
const { dir, name } = displayNameOf(workspace);
|
|
6609
|
+
return `${dir} ${name} ${workspace.path}`.toLowerCase().includes(needle);
|
|
6610
|
+
});
|
|
6611
|
+
}
|
|
6612
|
+
function titleFor(workspace, draft) {
|
|
6613
|
+
const trimmed = draft.trim();
|
|
6614
|
+
if (trimmed === "") return basenameOf(workspace.path) || workspace.path;
|
|
6615
|
+
return trimmed;
|
|
6616
|
+
}
|
|
6617
|
+
function nameTooLong(draft) {
|
|
6618
|
+
return draft.trim().length > 20;
|
|
6619
|
+
}
|
|
6620
|
+
//#endregion
|
|
6621
|
+
//#region src/app/layouts/sidebar/WorkspaceRenameDialog.tsx
|
|
6622
|
+
function WorkspaceRenameDialog({ workspace, t, onClose, onSubmit }) {
|
|
6623
|
+
const [draft, setDraft] = useState(() => displayNameOf(workspace).name);
|
|
6624
|
+
const [busy, setBusy] = useState(false);
|
|
6625
|
+
const [failed, setFailed] = useState(false);
|
|
6626
|
+
const dir = displayNameOf(workspace).dir;
|
|
6627
|
+
const tooLong = nameTooLong(draft);
|
|
6628
|
+
const save = () => {
|
|
6629
|
+
if (busy || tooLong) return;
|
|
6630
|
+
setBusy(true);
|
|
6631
|
+
setFailed(false);
|
|
6632
|
+
onSubmit(titleFor(workspace, draft)).then((ok) => {
|
|
6633
|
+
setBusy(false);
|
|
6634
|
+
if (ok) onClose();
|
|
6635
|
+
else setFailed(true);
|
|
6636
|
+
});
|
|
6637
|
+
};
|
|
6638
|
+
return /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.Modal, {
|
|
6639
|
+
open: true,
|
|
6640
|
+
onClose: () => {
|
|
6641
|
+
if (!busy) onClose();
|
|
6642
|
+
},
|
|
6643
|
+
title: t("project.rename.title", { name: dir }),
|
|
6644
|
+
description: t("project.rename.description"),
|
|
6645
|
+
closeLabel: t("project.rename.cancel"),
|
|
6646
|
+
className: WorkspaceRenameDialog_module_default.dialog,
|
|
6647
|
+
footer: /* @__PURE__ */ h(Fragment, null, /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
6648
|
+
type: "button",
|
|
6649
|
+
variant: "outline",
|
|
6650
|
+
size: "md",
|
|
6651
|
+
disabled: busy,
|
|
6652
|
+
onClick: onClose
|
|
6653
|
+
}, t("project.rename.cancel")), /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
6654
|
+
type: "button",
|
|
6655
|
+
variant: "primary",
|
|
6656
|
+
size: "md",
|
|
6657
|
+
disabled: busy || tooLong,
|
|
6658
|
+
"aria-busy": busy,
|
|
6659
|
+
onClick: save
|
|
6660
|
+
}, t(busy ? "project.rename.saving" : "project.rename.save")))
|
|
6661
|
+
}, /* @__PURE__ */ h("div", { className: WorkspaceRenameDialog_module_default.stack }, /* @__PURE__ */ h(TextField, {
|
|
6662
|
+
className: WorkspaceRenameDialog_module_default.input,
|
|
6663
|
+
"data-modal-autofocus": "",
|
|
6664
|
+
id: "wb-workspace-name",
|
|
6665
|
+
name: "wb-workspace-name",
|
|
6666
|
+
"aria-label": t("project.rename.field"),
|
|
6667
|
+
"aria-invalid": tooLong ? "true" : void 0,
|
|
6668
|
+
placeholder: t("project.rename.placeholder"),
|
|
6669
|
+
maxLength: 40,
|
|
6670
|
+
value: draft,
|
|
6671
|
+
onChange: (event) => setDraft(event.currentTarget.value),
|
|
6672
|
+
onKeyDown: (event) => {
|
|
6673
|
+
if (event.key !== "Enter" || event.nativeEvent.isComposing) return;
|
|
6674
|
+
event.preventDefault();
|
|
6675
|
+
save();
|
|
6676
|
+
}
|
|
6677
|
+
}), /* @__PURE__ */ h("div", { className: WorkspaceRenameDialog_module_default.meta }, /* @__PURE__ */ h(Note, { as: "span" }, t("project.rename.hint")), /* @__PURE__ */ h(Note, {
|
|
6678
|
+
as: "span",
|
|
6679
|
+
tone: tooLong ? "problem" : "muted"
|
|
6680
|
+
}, `${draft.trim().length}/20`)), failed ? /* @__PURE__ */ h(Note, { tone: "problem" }, t("project.rename.failed")) : null));
|
|
6681
|
+
}
|
|
6682
|
+
//#endregion
|
|
6683
|
+
//#region src/app/layouts/sidebar/WorkspaceSearchField.tsx
|
|
6684
|
+
function WorkspaceSearchField({ t, query, onQuery, onCursor, onSubmit }) {
|
|
6685
|
+
const boxRef = useRef(null);
|
|
6686
|
+
useEffect(() => {
|
|
6687
|
+
boxRef.current?.querySelector("input")?.focus();
|
|
6688
|
+
}, []);
|
|
6689
|
+
return /* @__PURE__ */ h("span", {
|
|
6690
|
+
ref: boxRef,
|
|
6691
|
+
className: ProjectSwitcher_module_default.field
|
|
6692
|
+
}, /* @__PURE__ */ h("span", { className: ProjectSwitcher_module_default.searchIcon }, /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.IconSearchOutlineRegular, { size: 14 })), /* @__PURE__ */ h(TextField, {
|
|
6693
|
+
className: ProjectSwitcher_module_default.search,
|
|
6694
|
+
id: "wb-workspace-search",
|
|
6695
|
+
name: "wb-workspace-search",
|
|
6696
|
+
"aria-label": t("project.search.label"),
|
|
6697
|
+
placeholder: t("project.search.placeholder"),
|
|
6698
|
+
value: query,
|
|
6699
|
+
onChange: (event) => onQuery(event.currentTarget.value),
|
|
6700
|
+
onKeyDown: (event) => {
|
|
6701
|
+
if (event.nativeEvent.isComposing) return;
|
|
6702
|
+
if (event.key === "ArrowDown" || event.key === "ArrowUp") {
|
|
6703
|
+
event.stopPropagation();
|
|
6704
|
+
event.preventDefault();
|
|
6705
|
+
onCursor(event.key === "ArrowDown" ? 1 : -1);
|
|
6706
|
+
return;
|
|
6707
|
+
}
|
|
6708
|
+
if (event.key !== "Enter") return;
|
|
6709
|
+
event.stopPropagation();
|
|
6710
|
+
onSubmit();
|
|
6711
|
+
}
|
|
6712
|
+
}));
|
|
6713
|
+
}
|
|
6714
|
+
//#endregion
|
|
6715
|
+
//#region src/app/layouts/sidebar/WorkspaceRowAction.tsx
|
|
6716
|
+
function WorkspaceRowAction({ workspace, t, onEdit }) {
|
|
6717
|
+
return /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
6718
|
+
type: "button",
|
|
6719
|
+
variant: "ghost",
|
|
6720
|
+
size: "sm",
|
|
6721
|
+
className: ProjectSwitcher_module_default.rowAction,
|
|
6722
|
+
icon: /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.IconEditOutlineRegular, { size: 14 }),
|
|
6723
|
+
"aria-label": t("project.rename.row", { name: displayNameOf(workspace).dir }),
|
|
6724
|
+
onClick: (event) => {
|
|
6725
|
+
event.stopPropagation();
|
|
6726
|
+
onEdit();
|
|
6727
|
+
}
|
|
6728
|
+
});
|
|
6729
|
+
}
|
|
6730
|
+
//#endregion
|
|
6731
|
+
//#region src/app/layouts/sidebar/WorkspaceRowLabel.tsx
|
|
6732
|
+
function WorkspaceRowLabel({ workspace, current, action, onHover }) {
|
|
6733
|
+
const { dir, name } = displayNameOf(workspace);
|
|
6734
|
+
const hostRef = useRef(null);
|
|
6735
|
+
const hoverRef = useRef(onHover);
|
|
6736
|
+
useEffect(() => {
|
|
6737
|
+
hoverRef.current = onHover;
|
|
6738
|
+
});
|
|
6739
|
+
useEffect(() => {
|
|
6740
|
+
const row = hostRef.current?.closest("[role=\"menuitem\"]");
|
|
6741
|
+
if (row === null || row === void 0) return;
|
|
6742
|
+
const enter = () => hoverRef.current?.(true);
|
|
6743
|
+
const leave = () => hoverRef.current?.(false);
|
|
6744
|
+
row.addEventListener("mouseenter", enter);
|
|
6745
|
+
row.addEventListener("mouseleave", leave);
|
|
6746
|
+
return () => {
|
|
6747
|
+
row.removeEventListener("mouseenter", enter);
|
|
6748
|
+
row.removeEventListener("mouseleave", leave);
|
|
6749
|
+
};
|
|
6750
|
+
}, []);
|
|
6751
|
+
return /* @__PURE__ */ h("span", {
|
|
6752
|
+
ref: hostRef,
|
|
6753
|
+
className: ProjectSwitcher_module_default.row
|
|
6754
|
+
}, /* @__PURE__ */ h("span", { className: ProjectSwitcher_module_default.dir }, dir), name === "" ? null : /* @__PURE__ */ h("span", {
|
|
6755
|
+
className: ProjectSwitcher_module_default.name,
|
|
6756
|
+
title: name
|
|
6757
|
+
}, name), /* @__PURE__ */ h("span", { className: ProjectSwitcher_module_default.trailing }, action ?? (current ? /* @__PURE__ */ h("span", { className: ProjectSwitcher_module_default.current }, /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.IconCheckOutlineRegular, { size: 12 })) : null)));
|
|
6758
|
+
}
|
|
6759
|
+
//#endregion
|
|
6760
|
+
//#region src/app/layouts/sidebar/workspace-items.tsx
|
|
6761
|
+
function workspaceMenuItems(options) {
|
|
6762
|
+
const { results, currentId, hoverId, t, onHover, onEdit } = options;
|
|
6763
|
+
return results.map((workspace) => ({
|
|
6764
|
+
id: workspace.workspaceId,
|
|
6765
|
+
icon: /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.IconFolderOpenRegular, { size: 16 }),
|
|
6766
|
+
label: /* @__PURE__ */ h(WorkspaceRowLabel, {
|
|
6767
|
+
workspace,
|
|
6768
|
+
current: workspace.workspaceId === currentId,
|
|
6769
|
+
onHover: (hovering) => onHover(hovering ? workspace.workspaceId : null),
|
|
6770
|
+
action: hoverId === workspace.workspaceId ? /* @__PURE__ */ h(WorkspaceRowAction, {
|
|
6771
|
+
workspace,
|
|
6772
|
+
t,
|
|
6773
|
+
onEdit: () => onEdit(workspace)
|
|
6774
|
+
}) : void 0
|
|
6775
|
+
})
|
|
6776
|
+
}));
|
|
6777
|
+
}
|
|
6248
6778
|
//#endregion
|
|
6249
6779
|
//#region src/app/layouts/sidebar/ProjectSwitcher.tsx
|
|
6250
6780
|
var ADD_WORKSPACE_ID = "__wb-add-workspace__";
|
|
6251
|
-
function
|
|
6781
|
+
function triggerName(current, t) {
|
|
6782
|
+
if (current === null) return t("project.none");
|
|
6783
|
+
const { dir, name } = displayNameOf(current);
|
|
6784
|
+
return /* @__PURE__ */ h(Fragment, null, /* @__PURE__ */ h("span", { className: ProjectSwitcher_module_default.dir }, dir), name === "" ? null : /* @__PURE__ */ h("span", { className: ProjectSwitcher_module_default.name }, name));
|
|
6785
|
+
}
|
|
6786
|
+
function ProjectSwitcher({ items, current, onPick, onAdd, onRename, t }) {
|
|
6252
6787
|
const [open, setOpen] = useState(false);
|
|
6788
|
+
const [query, setQuery] = useState("");
|
|
6789
|
+
const [cursor, setCursor] = useState(null);
|
|
6790
|
+
const [hoverId, setHoverId] = useState(null);
|
|
6791
|
+
const [naming, setNaming] = useState(null);
|
|
6253
6792
|
const triggerRef = useRef(null);
|
|
6254
|
-
const
|
|
6793
|
+
const wasOpenRef = useRef(false);
|
|
6255
6794
|
const currentId = current?.workspaceId ?? null;
|
|
6256
|
-
const
|
|
6795
|
+
const results = useMemo(() => matchWorkspaces(items, query), [items, query]);
|
|
6796
|
+
const cursorId = cursor === null || results.length === 0 ? null : results[Math.min(cursor, results.length - 1)]?.workspaceId ?? null;
|
|
6797
|
+
useEffect(() => {
|
|
6798
|
+
if (open) {
|
|
6799
|
+
wasOpenRef.current = true;
|
|
6800
|
+
return;
|
|
6801
|
+
}
|
|
6802
|
+
setQuery("");
|
|
6803
|
+
setCursor(null);
|
|
6804
|
+
setHoverId(null);
|
|
6805
|
+
if (wasOpenRef.current && naming === null) {
|
|
6806
|
+
wasOpenRef.current = false;
|
|
6807
|
+
triggerRef.current?.focus();
|
|
6808
|
+
}
|
|
6809
|
+
}, [open, naming]);
|
|
6810
|
+
const close = () => setOpen(false);
|
|
6811
|
+
const anchor = open ? /* @__PURE__ */ h(WorkspaceSearchField, {
|
|
6812
|
+
t,
|
|
6813
|
+
query,
|
|
6814
|
+
onQuery: (next) => {
|
|
6815
|
+
setQuery(next);
|
|
6816
|
+
setCursor(null);
|
|
6817
|
+
},
|
|
6818
|
+
onCursor: (step) => {
|
|
6819
|
+
if (results.length === 0) return;
|
|
6820
|
+
setCursor((at) => at === null ? step === 1 ? 0 : results.length - 1 : (at + step + results.length) % results.length);
|
|
6821
|
+
},
|
|
6822
|
+
onSubmit: () => {
|
|
6823
|
+
const pick = results[Math.min(cursor ?? 0, results.length - 1)];
|
|
6824
|
+
if (pick === void 0) return;
|
|
6825
|
+
close();
|
|
6826
|
+
onPick(pick.workspaceId);
|
|
6827
|
+
}
|
|
6828
|
+
}) : /* @__PURE__ */ h("button", {
|
|
6257
6829
|
type: "button",
|
|
6258
6830
|
ref: triggerRef,
|
|
6259
|
-
className:
|
|
6831
|
+
className: ProjectSwitcher_module_default.trigger,
|
|
6260
6832
|
"aria-haspopup": "listbox",
|
|
6261
6833
|
"aria-expanded": open,
|
|
6262
6834
|
"aria-label": t("project.label"),
|
|
6263
|
-
title: current
|
|
6264
|
-
onClick: () =>
|
|
6265
|
-
|
|
6266
|
-
|
|
6267
|
-
}
|
|
6268
|
-
}, /* @__PURE__ */ h("span", { className: "wb-projectGlyph wb-projectGlyphActive" }, open ? /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.IconFolderOpenRegular, { size: 16 }) : /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.IconFolderCloseRegular, { size: 16 })), /* @__PURE__ */ h("span", { className: "wb-projectName" }, title), /* @__PURE__ */ h("span", { className: cx("wb-projectChevron", open && "wb-projectChevronOpen") }, /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutlineRegular, { size: 14 })));
|
|
6269
|
-
return /* @__PURE__ */ h("div", { className: "wb-project" }, /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.Menu, {
|
|
6835
|
+
title: current?.path ?? void 0,
|
|
6836
|
+
onClick: () => setOpen(true)
|
|
6837
|
+
}, /* @__PURE__ */ h("span", { className: cx(ProjectSwitcher_module_default.glyph, ProjectSwitcher_module_default.glyphActive) }, /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.IconFolderCloseRegular, { size: 16 })), /* @__PURE__ */ h("span", { className: ProjectSwitcher_module_default.triggerName }, triggerName(current, t)), /* @__PURE__ */ h("span", { className: ProjectSwitcher_module_default.chevron }, /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutlineRegular, { size: 14 })));
|
|
6838
|
+
return /* @__PURE__ */ h("div", { className: ProjectSwitcher_module_default.root }, /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.Menu, {
|
|
6270
6839
|
open,
|
|
6271
6840
|
portal: true,
|
|
6272
|
-
className:
|
|
6273
|
-
|
|
6841
|
+
className: ProjectSwitcher_module_default.anchor,
|
|
6842
|
+
listClassName: ProjectSwitcher_module_default.menu,
|
|
6843
|
+
anchor,
|
|
6274
6844
|
align: "start",
|
|
6275
6845
|
side: "bottom",
|
|
6276
|
-
selection: "
|
|
6277
|
-
selectedId:
|
|
6278
|
-
items: [...
|
|
6846
|
+
selection: "fill",
|
|
6847
|
+
selectedId: cursorId ?? void 0,
|
|
6848
|
+
items: [...results.length === 0 ? [{
|
|
6279
6849
|
type: "label",
|
|
6280
6850
|
id: "empty",
|
|
6281
|
-
text: t("project.empty")
|
|
6282
|
-
}] : [], ...
|
|
6283
|
-
|
|
6284
|
-
|
|
6285
|
-
|
|
6286
|
-
|
|
6851
|
+
text: t("project.search.empty", { query: query.trim() })
|
|
6852
|
+
}] : [], ...workspaceMenuItems({
|
|
6853
|
+
results,
|
|
6854
|
+
currentId,
|
|
6855
|
+
hoverId,
|
|
6856
|
+
t,
|
|
6857
|
+
onHover: setHoverId,
|
|
6858
|
+
onEdit: (workspace) => {
|
|
6859
|
+
close();
|
|
6860
|
+
setNaming(workspace);
|
|
6861
|
+
}
|
|
6862
|
+
})],
|
|
6287
6863
|
footer: [{
|
|
6288
6864
|
id: ADD_WORKSPACE_ID,
|
|
6289
6865
|
label: t("project.add"),
|
|
6290
6866
|
icon: /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.IconPlusOutlineRegular, { size: 14 })
|
|
6291
6867
|
}],
|
|
6292
6868
|
onSelect: (id) => {
|
|
6293
|
-
setOpen(false);
|
|
6294
6869
|
if (id === ADD_WORKSPACE_ID) {
|
|
6870
|
+
close();
|
|
6295
6871
|
onAdd();
|
|
6296
6872
|
return;
|
|
6297
6873
|
}
|
|
6874
|
+
close();
|
|
6298
6875
|
onPick(id);
|
|
6299
6876
|
},
|
|
6300
|
-
onClose:
|
|
6877
|
+
onClose: close
|
|
6878
|
+
}), naming === null ? null : /* @__PURE__ */ h(WorkspaceRenameDialog, {
|
|
6879
|
+
key: naming.workspaceId,
|
|
6880
|
+
workspace: naming,
|
|
6881
|
+
t,
|
|
6882
|
+
onClose: () => setNaming(null),
|
|
6883
|
+
onSubmit: (title) => onRename(naming.workspaceId, title)
|
|
6301
6884
|
}));
|
|
6302
6885
|
}
|
|
6303
6886
|
//#endregion
|
|
@@ -6447,9 +7030,9 @@ window.__ModuleLoader__.load({
|
|
|
6447
7030
|
}))), wide ? /* @__PURE__ */ h(ProjectSwitcher, {
|
|
6448
7031
|
items,
|
|
6449
7032
|
current,
|
|
6450
|
-
workspaceTitle: props.workspaceDisplayTitle,
|
|
6451
7033
|
onPick: pickProject,
|
|
6452
7034
|
onAdd: addProject,
|
|
7035
|
+
onRename: props.renameWorkspace,
|
|
6453
7036
|
t
|
|
6454
7037
|
}) : null, /* @__PURE__ */ h(WorkspaceSection, {
|
|
6455
7038
|
t,
|
|
@@ -6898,12 +7481,12 @@ window.__ModuleLoader__.load({
|
|
|
6898
7481
|
}
|
|
6899
7482
|
};
|
|
6900
7483
|
function messagesOf(units) {
|
|
6901
|
-
return
|
|
7484
|
+
return units.map((face) => ({
|
|
6902
7485
|
unit: face.manifest.id,
|
|
6903
7486
|
...face.messages === void 0 ? {} : { messages: face.messages }
|
|
6904
|
-
}))
|
|
7487
|
+
}));
|
|
6905
7488
|
}
|
|
6906
|
-
var COMPONENT_CSS_MARKER = "\n.wb-activityBlock {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n padding-top: var(--wb-len-10);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n.wb-activityBlock:first-child {\n border-top: none;\n}\n\n.wb-activityBlockHead {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-8);\n}\n\n.wb-activityLine {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-activityLineText {\n flex: none;\n min-width: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n max-height: var(--wb-len-72);\n overflow-y: auto;\n}\n\n.wb-activityLineAt {\n flex: none;\n margin-left: auto;\n font-size: var(--wb-font-10);\n line-height: var(--wb-line-16);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-activityLine > .wb-activityLineAt,\n.wb-activityLine > .wb-activityLineActions {\n margin-left: auto;\n}\n\n.wb-activityLine > .wb-activityLineAt + .wb-activityLineActions {\n margin-left: 0;\n}\n\n.wb-activityLineActions {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n.wb-activityActionFailed {\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-approvalCommand {\n max-width: 100%;\n}\n.wb-approvalPlan {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n.wb-approvalHint {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n.wb-approvalRows {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n margin: 0;\n}\n.wb-approvalRow {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n.wb-approvalLabel {\n flex: none;\n width: var(--wb-len-56);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-approvalValue {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n.wb-approvalWarn {\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-cardHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n flex: none;\n padding: var(--wb-len-8) var(--wb-len-10) var(--wb-len-8) var(--wb-len-20);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n.wb-cardTitle {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n font-weight: 600;\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-cardMeta {\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-cardMeta::before {\n content: '\\00b7';\n margin-right: var(--wb-len-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardOpen {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n margin-left: auto;\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-4);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardOpen ~ .wb-cardRefresh {\n margin-left: 0;\n}\n\n.wb-cardOpen:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-cardRefresh {\n margin-left: auto;\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-4);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardRefresh:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-cardRefresh:disabled {\n cursor: default;\n opacity: 1;\n}\n\n.wb-cardGear {\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-3);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardGear:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-cardRefresh.wb-spinning svg {\n animation: wb-spin var(--wb-dur-0-9) linear infinite;\n}\n\n.wb-card {\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-xl);\n background: var(--dsw-alias-bg-layer-1);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n flex: none;\n}\n.wb-cardBody {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n padding: var(--wb-len-12);\n}\n.wb-cardBody > :not([data-wb-bleed]) {\n padding-left: var(--wb-len-8);\n padding-right: var(--wb-len-8);\n}\n\n.wb-choiceMenu {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n padding: var(--wb-len-4);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n background: transparent;\n}\n\n.wb-choiceOption {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-height: var(--wb-len-30);\n padding: var(--wb-len-6) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: pointer;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-choiceOption:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-choiceLabel {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-radio {\n appearance: none;\n -webkit-appearance: none;\n flex: none;\n box-sizing: border-box;\n width: var(--wb-len-12);\n height: var(--wb-len-12);\n margin: 0;\n border: 1px solid var(--dsw-alias-border-l3);\n border-radius: 50%;\n corner-shape: round;\n background-color: transparent;\n cursor: pointer;\n transition:\n background-color var(--wb-dur-0-12) ease, border-color var(--wb-dur-0-12) ease;\n}\n\n.wb-radio:not(:checked):hover {\n border-color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-radio:checked {\n border-color: var(--dsw-alias-brand-primary);\n background-image: radial-gradient(\n circle at center,\n var(--dsw-alias-brand-primary) 0 3px,\n transparent 3px\n );\n}\n\n.wb-radio:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n.wb-radio:focus-visible {\n outline: var(--dsw-focus-ring-width, var(--wb-len-2)) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n.wb-longTask {\n padding-top: var(--wb-len-12);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n.wb-longTaskHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n}\n\n.wb-longTaskLink {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n color: var(--dsw-alias-label-secondary);\n text-decoration: none;\n white-space: nowrap;\n}\n.wb-longTaskLink:hover,\n.wb-longTaskLink:focus-visible {\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n}\n.wb-longTaskLink:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n\n.wb-longTaskHeadline {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-longTaskProblem {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n.wb-longTaskDump {\n margin: var(--wb-len-2) 0 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-longTaskDump pre {\n margin: var(--wb-len-4) 0 0;\n max-height: var(--wb-len-220);\n overflow: auto;\n}\n.wb-mockStrip {\n display: flex;\n flex-wrap: wrap;\n gap: var(--wb-len-4);\n padding: var(--wb-len-8) var(--wb-len-12);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n flex: none;\n}\n\n.wb-mockNote {\n flex: 1 0 100%;\n font-size: var(--wb-font-10);\n line-height: var(--wb-line-14);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-mockChip {\n flex: none;\n padding: var(--wb-len-2) var(--wb-len-7);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-pill);\n corner-shape: round;\n background: transparent;\n font-size: var(--wb-font-10);\n line-height: var(--wb-line-14);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n.wb-mockChip:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-mockChipOn {\n border-color: transparent;\n background: var(--dsw-alias-brand-primary);\n color: var(--dsw-alias-label-primary-foreground);\n}\n.wb-note {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-problem {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n.wb-centered.wb-centeredCompact {\n flex: none;\n min-height: 0;\n gap: var(--wb-len-8);\n padding: var(--wb-len-20) var(--wb-len-16);\n}\n\n.wb-centered.wb-centeredCompact .wb-centeredHero {\n margin-bottom: var(--wb-len-4);\n}\n\n.wb-skeleton {\n display: flex;\n flex-direction: column;\n}\n\n.wb-skeletonRow {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n}\n\n.wb-skeletonRow + .wb-skeletonRow::before {\n content: '';\n align-self: stretch;\n height: var(--wb-len-0-5);\n margin: 0 var(--wb-len-8) var(--wb-len-neg-0-5);\n background: var(--dsw-alias-border-l2);\n}\n\n.wb-skeletonBar {\n display: block;\n height: var(--wb-len-13);\n border-radius: var(--dsw-radius-xs);\n background: var(--dsw-alias-bg-skeleton);\n animation: wb-skeleton-pulse var(--wb-dur-1-4) var(--ds-ease-in-out) infinite;\n}\n\n.wb-skeletonBarTitle {\n width: 62%;\n}\n\n.wb-skeletonBarMeta {\n width: 32%;\n height: var(--wb-len-10);\n}\n\n.wb-skeletonRow:nth-child(2n) .wb-skeletonBarTitle {\n width: 74%;\n}\n\n.wb-skeletonRow:nth-child(3n) .wb-skeletonBarTitle {\n width: 52%;\n}\n\n@keyframes wb-skeleton-pulse {\n 50% {\n opacity: 0.45;\n }\n}\n\n.wb-centered {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: var(--wb-len-14);\n flex: 1;\n min-height: var(--wb-len-240);\n padding: 0 var(--wb-len-24) var(--wb-len-24);\n text-align: center;\n}\n\n.wb-centeredHero {\n display: flex;\n margin-bottom: var(--wb-len-16);\n color: var(--dsw-alias-label-dimmed);\n}\n\n.wb-centeredTitle {\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-centeredHint {\n max-width: var(--wb-len-300);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-centeredDetail {\n max-width: var(--wb-len-320);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-dimmed);\n word-break: break-all;\n}\n\n.wb-centeredAction {\n display: flex;\n justify-content: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-2);\n}\n@media (prefers-reduced-motion: reduce) {\n .wb-skeletonBar {\n animation: none;\n }}\n\n.wb-row:has(> [data-wb-dot]) {\n grid-template-columns: 84px minmax(0, 1fr);\n}\n.wb-rows {\n display: flex;\n flex-direction: column;\n}\n.wb-row {\n display: grid;\n grid-template-columns: 56px minmax(0, 1fr);\n align-items: baseline;\n gap: var(--wb-len-8);\n padding: var(--wb-len-4) 0;\n}\n.wb-row + .wb-row {\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n.wb-rowKey {\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-rowValue {\n min-width: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n\n.wb-formActions {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\n}\n.wb-settings {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n}\n.wb-settingsHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n.wb-settingsTitle {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-stack {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n min-height: 0;\n}\n\n.wb-stateBlock {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n.wb-stateBlockTitle {\n margin: 0;\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n}\n.wb-stateBlockHint {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-stateBlockActions {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-2);\n}\n.wb-stateBlockResolving {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n.wb-textField {\n box-sizing: border-box;\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-primary);\n outline: none;\n}\n\n.wb-textField:focus {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-textField[aria-invalid='true'] {\n border-color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-textField[aria-invalid='true']:focus {\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-error-primary);\n}\n._foot_1us83_1 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) var(--wb-len-14) var(--wb-len-10);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._footText_1us83_12 {\n flex: 1;\n min-width: 0;\n}\n\n._footTextMd_1us83_17 {\n flex: 1;\n min-width: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n._marketList_7yq35_1 {\n list-style: none;\n margin: 0;\n padding: var(--wb-len-6);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n max-height: var(--wb-len-320);\n overflow-y: auto;\n}\n\n._marketRow_7yq35_12 {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: center;\n column-gap: var(--wb-len-14);\n row-gap: var(--wb-len-4);\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-lg);\n}\n\n._marketIcon_7yq35_22 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-40);\n height: var(--wb-len-40);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketMain_7yq35_34 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._marketName_7yq35_41 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketDesc_7yq35_50 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n overflow: hidden;\n white-space: nowrap;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketUsedBy_7yq35_61 {\n margin-left: var(--wb-len-8);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n opacity: 0.75;\n}\n\n._marketUsedBy_7yq35_61::before {\n content: '·';\n margin-right: var(--wb-len-6);\n opacity: 0.8;\n}\n\n._marketName_7yq35_41 ._marketVersion_7yq35_75 {\n margin-left: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 400;\n line-height: var(--wb-line-18);\n}\n\n._marketVersion_7yq35_75 {\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketVersion_7yq35_75::before {\n content: '';\n display: inline-block;\n width: var(--wb-len-1);\n height: var(--wb-len-10);\n margin: 0 var(--wb-len-8) 0 var(--wb-len-2);\n vertical-align: -1px;\n background: var(--dsw-alias-border-l2);\n}\n\n._marketEnd_7yq35_97 {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._marketActions_7yq35_104 {\n flex: none;\n display: flex;\n gap: var(--wb-len-6);\n}\n\n._marketSection_7yq35_110 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._marketSectionHead_7yq35_117 {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n\n._marketSectionTitle_7yq35_123 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketSectionCount_7yq35_129 {\n font: var(--dsw-font-s-14);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketProgress_7yq35_135 {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-height: var(--wb-len-32);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketNote_7yq35_145 {\n grid-column: 2 / -1;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-warn-primary);\n overflow-wrap: anywhere;\n}\n\n._marketFailure_7yq35_152 {\n grid-column: 2 / -1;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._marketEmpty_7yq35_159 {\n padding: var(--wb-len-18) var(--wb-len-16);\n text-align: center;\n}\n\n._marketPage_7yq35_164 {\n box-sizing: border-box;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-32);\n padding: 0 clamp(var(--wb-len-24), 4vw, var(--wb-len-48)) var(--wb-len-48);\n overflow: auto;\n color: var(--dsw-alias-label-primary);\n}\n\n._marketPage_7yq35_164 > * {\n width: 100%;\n max-width: var(--wb-len-960);\n}\n\n._marketPageHead_7yq35_181 {\n box-sizing: border-box;\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-16);\n padding-top: var(--wb-len-28);\n}\n\n._marketPageTitle_7yq35_189 {\n margin: 0;\n font: var(--dsw-font-l-20);\n}\n\n._marketPageIntro_7yq35_194 {\n margin: var(--wb-len-4) 0 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketPageTools_7yq35_200 {\n flex: none;\n align-self: center;\n margin-left: auto;\n display: flex;\n align-items: center;\n gap: var(--wb-len-16);\n}\n\n._marketIconButton_7yq35_209 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n border: 0;\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n color: var(--dsw-alias-label-caption);\n cursor: pointer;\n}\n\n._marketIconButton_7yq35_209:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketIconButton_7yq35_209:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._marketIconWrap_7yq35_234 {\n display: inline-flex;\n}\n\n._marketIconButtonSpinning_7yq35_238 svg {\n animation: _wb-spin_7yq35_1 var(--wb-dur-0-9) linear infinite;\n}\n\n._marketAddButton_7yq35_242 {\n height: var(--wb-len-32);\n padding: 0 var(--wb-len-12);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n border-radius: var(--dsw-radius-md);\n}\n\n._marketEmpty_7yq35_159 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-64) var(--wb-len-16);\n text-align: center;\n}\n\n._marketChecking_7yq35_259 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketEmptyTitle_7yq35_267 {\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n@keyframes _wb-spin_7yq35_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n._wide_1coeb_1 {\n justify-content: center;\n width: 100%;\n height: var(--wb-len-40);\n border-radius: var(--dsw-radius-md);\n}\n\n._dialog_1coeb_8 {\n width: min(var(--wb-len-560), 100%);\n max-height: min(var(--wb-len-800), 100%);\n}\n\n._content_1coeb_13 {\n min-height: 0;\n overflow: auto;\n}\n\n._stack_1coeb_18 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._body_1coeb_25 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._field_1coeb_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n._input_1coeb_39 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-14);\n}\n\n._registryField_1coeb_45 {\n height: var(--wb-len-32);\n margin-left: var(--wb-len-26);\n padding: 0 var(--wb-len-10);\n}\n\n._options_1coeb_51 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-8) var(--wb-len-12);\n}\n\n._guideToggle_1coeb_59 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-4);\n align-self: flex-start;\n margin-top: var(--wb-len-4);\n padding: 0;\n border: 0;\n background: transparent;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._guideToggle_1coeb_59:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._guideToggle_1coeb_59 svg,\n._registryToggle_1coeb_78 svg {\n transition: transform var(--wb-dur-0-12) ease;\n}\n\n._guideToggle_1coeb_59[aria-expanded='true'] svg,\n._registryToggle_1coeb_78[aria-expanded='true'] svg {\n transform: rotate(180deg);\n}\n\n._registryWrap_1coeb_87 {\n position: relative;\n flex: none;\n}\n\n._registryToggle_1coeb_78 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n height: var(--wb-len-26);\n padding: 0 var(--wb-len-8) 0 var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-2);\n font: inherit;\n font-size: var(--wb-font-12-5);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._registryToggle_1coeb_78:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._registryToggle_1coeb_78:disabled {\n cursor: default;\n opacity: 0.6;\n}\n\n._registryToggle_1coeb_78[aria-expanded='true'] {\n border-color: var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-3);\n}\n\n._registryChosen_1coeb_121 {\n color: var(--dsw-alias-label-primary);\n font-weight: 500;\n}\n\n._registry_1coeb_45 {\n position: fixed;\n z-index: var(--wb-z-1100);\n box-sizing: border-box;\n width: min(var(--wb-len-440), 100vw - var(--wb-len-24));\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10) var(--wb-len-12);\n border: 0;\n border-radius: var(--dsw-radius-lg);\n background: var(--dsw-alias-bg-layer-2);\n --dsw-elevation-stroke-color: var(--dsw-alias-border-l3);\n box-shadow: var(--dsw-elevation-prominent);\n}\n\n._registryOption_1coeb_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid transparent;\n border-radius: var(--dsw-radius-lg);\n cursor: pointer;\n}\n\nlabel._registryOption_1coeb_143 {\n flex-direction: row;\n align-items: flex-start;\n gap: var(--wb-len-10);\n}\n\n._registryPick_1coeb_159 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n cursor: pointer;\n}\n\n._registryOption_1coeb_143[data-checked='true'] {\n border-color: color-mix(in srgb, var(--dsw-alias-brand-primary) 40%, transparent);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n._registryOption_1coeb_143 input[type='radio'] {\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: var(--wb-len-2) 0 0;\n accent-color: var(--dsw-alias-brand-primary);\n}\n\n._registryTitle_1coeb_179 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n font: var(--dsw-font-xs-13);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-primary);\n}\n\n._registryHint_1coeb_189 {\n margin-left: var(--wb-len-26);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._inputError_1coeb_197 {\n margin: var(--wb-len-neg-4) 0 0 var(--wb-len-26);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._guide_1coeb_59 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) var(--wb-len-14) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-lg);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._guideList_1coeb_214 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n._guideItem_1coeb_223 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) 0;\n}\n\n._guideIndex_1coeb_230 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n border-radius: var(--wb-radius-pill);\n corner-shape: round;\n background: var(--dsw-alias-bg-module-platform);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._guideMain_1coeb_244 {\n display: flex;\n flex-direction: column;\n flex: 1;\n gap: 0;\n min-width: 0;\n}\n\n._guideTitle_1coeb_252 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n\n._guideHint_1coeb_258 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._guideExample_1coeb_264 {\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._guideExample_1coeb_264 code {\n font-family: var(--dsw-font-mono, monospace);\n}\n\n._guideExampleLabel_1coeb_274 {\n color: var(--dsw-alias-label-caption);\n}\n\n._footer_1coeb_278 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-20);\n width: 100%;\n}\n\n._hero_1coeb_285 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) 0 var(--wb-len-4);\n text-align: center;\n}\n\n._heroIcon_1coeb_294 {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-44);\n height: var(--wb-len-44);\n color: var(--dsw-alias-label-secondary);\n}\n\n._heroIcon_1coeb_294[data-state='done'] {\n color: var(--dsw-alias-state-success-secondary);\n}\n\n._heroIcon_1coeb_294[data-state='error'] {\n color: var(--dsw-alias-state-warn-label);\n}\n\n._pendingTitle_1coeb_311 {\n margin: 0;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n font-weight: 500;\n color: var(--dsw-alias-label-secondary);\n}\n\n._wizardTitle_1coeb_319 {\n margin: 0;\n font-size: var(--wb-font-18);\n line-height: var(--wb-len-26);\n font-weight: 600;\n}\n\n._subject_1coeb_326 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-6);\n padding: var(--wb-len-16);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n text-align: center;\n}\n\n._subjectName_1coeb_337 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n overflow-wrap: anywhere;\n}\n\n._subjectMeta_1coeb_343,\n._subjectDesc_1coeb_344 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._result_1coeb_351,\n._resultWarn_1coeb_352 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: color-mix(in srgb, var(--dsw-alias-state-success-primary) 10%, transparent);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-primary);\n}\n\n._resultWarn_1coeb_352 {\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 12%, transparent);\n}\n\n._approval_1coeb_365 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-12) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-state-warn-primary);\n border-radius: var(--dsw-radius-lg);\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._approvalTitle_1coeb_375 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._approvalText_1coeb_382 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._approvalCaution_1coeb_388 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n font-weight: 600;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._note_1coeb_395 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._noteWarn_1coeb_402 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._noteError_1coeb_406 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._problem_1coeb_410 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._detailLabel_1coeb_417 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._detail_1coeb_417 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l1);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-3);\n font-family: var(--dsw-font-mono, monospace);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n}\n._note_1enlz_1 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-10) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-state-warn-tertiary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n._note_1enlz_1 > svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n._actions_jlw8j_1[hidden],\n._progress_jlw8j_2[hidden],\n._commandRow_jlw8j_3[hidden],\n._bridge_jlw8j_4[hidden],\n._raw_jlw8j_5[hidden] {\n display: none;\n}\n\n._gate_jlw8j_9 {\n position: fixed;\n inset: 0;\n z-index: var(--wb-z-top);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--wb-len-24);\n background: var(--dsw-alias-bg-base);\n}\n\n._card_jlw8j_20 {\n width: 100%;\n max-width: var(--wb-len-420);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-16);\n text-align: center;\n}\n\n._card_jlw8j_20:has(._actions_jlw8j_1:not([hidden])),\n._card_jlw8j_20:has(._bridge_jlw8j_4:not([hidden])) {\n max-width: var(--wb-len-520);\n}\n\n._title_jlw8j_35 {\n margin: 0;\n font-size: var(--dsw-font-base-16-font-size);\n line-height: var(--wb-line-24);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._hint_jlw8j_43 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._steps_jlw8j_50 {\n list-style: none;\n margin: var(--wb-len-6) 0 0;\n padding: 0;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n text-align: left;\n}\n\n._step_jlw8j_50 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-6) var(--wb-len-10);\n border-radius: var(--dsw-radius-sm);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._step_jlw8j_50[data-status='running'] {\n color: var(--dsw-alias-label-primary);\n}\n\n._mark_jlw8j_77 {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-14);\n height: var(--wb-len-14);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n}\n\n._step_jlw8j_50[data-status='ok'] ._mark_jlw8j_77 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._step_jlw8j_50[data-status='warn'] ._mark_jlw8j_77 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._step_jlw8j_50[data-status='failed'] ._mark_jlw8j_77 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._label_jlw8j_102 {\n flex: none;\n}\n\n._detail_jlw8j_106 {\n margin-left: auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._progress_jlw8j_2 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._elapsed_jlw8j_124 {\n flex: none;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n}\n\n._error_jlw8j_132 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n max-height: var(--wb-len-120);\n overflow: auto;\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n white-space: pre-wrap;\n word-break: break-all;\n text-align: left;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._commandRow_jlw8j_3 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-4);\n margin: 0 0 var(--wb-len-8);\n padding-right: var(--wb-len-4);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n._copy_jlw8j_158 {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-24);\n height: var(--wb-len-24);\n padding: 0;\n border: none;\n border-radius: var(--wb-radius-6);\n background: transparent;\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._copy_jlw8j_158:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._command_jlw8j_3 {\n flex: 1;\n min-width: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n overflow-wrap: anywhere;\n color: var(--dsw-alias-label-primary);\n}\n\n._buttons_jlw8j_191 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-12);\n}\n\n._mockSlot_jlw8j_198 {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n justify-content: center;\n background: var(--dsw-alias-bg-base);\n}\n\n._button_jlw8j_191 {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: var(--wb-len-28);\n padding: 0 var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n font: inherit;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n}\n\n._button_jlw8j_191:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._button_jlw8j_191:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n._actions_jlw8j_1,\n._bridge_jlw8j_4 {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--wb-len-10);\n margin-top: var(--wb-len-4);\n padding: var(--wb-len-14) var(--wb-len-16);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-14);\n background: var(--dsw-alias-bg-layer-1);\n text-align: left;\n}\n\n._fixTitle_jlw8j_249 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._actions_jlw8j_1 ._hint_jlw8j_43,\n._bridge_jlw8j_4 ._hint_jlw8j_43 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-19);\n color: var(--dsw-alias-label-secondary);\n}\n\n._actions_jlw8j_1 ._commandRow_jlw8j_3,\n._bridge_jlw8j_4 ._commandRow_jlw8j_3 {\n margin: 0;\n}\n\n._actions_jlw8j_1 ._buttons_jlw8j_191,\n._bridge_jlw8j_4 ._buttons_jlw8j_191 {\n justify-content: flex-start;\n}\n\n._raw_jlw8j_5 {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._rawSummary_jlw8j_282 {\n cursor: pointer;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._actions_jlw8j_1 ._error_jlw8j_132,\n._bridge_jlw8j_4 ._error_jlw8j_132 {\n margin-top: var(--wb-len-6);\n}\n\n._bridgeLines_jlw8j_292 {\n margin: 0;\n padding-left: var(--wb-len-18);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-19);\n color: var(--dsw-alias-label-secondary);\n}\n\n._bridgeLine_jlw8j_292 a {\n display: block;\n margin-top: var(--wb-len-4);\n width: fit-content;\n}\n\n._link_jlw8j_309 {\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n}\n\n._link_jlw8j_309::after {\n content: '↗';\n margin-left: var(--wb-len-2);\n}\n\n._link_jlw8j_309:hover {\n text-decoration: underline;\n}\n\n._loading_jlw8j_323 {\n flex: none;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._loading_jlw8j_323[hidden] {\n display: none;\n}\n\n._loadingMotion_jlw8j_332 {\n transform-origin: center;\n animation: _wb-spin_jlw8j_1 var(--wb-dur-1-5) linear infinite;\n}\n\n._loadingTrack_jlw8j_337,\n._loadingArc_jlw8j_338 {\n fill: none;\n stroke: currentColor;\n stroke-width: 2;\n stroke-linecap: round;\n}\n\n._loadingTrack_jlw8j_337 {\n opacity: 0.25;\n}\n\n._loadingArc_jlw8j_338 {\n stroke-dasharray: 12 150;\n animation: _wb-dash_jlw8j_1 var(--wb-dur-1-5) ease-in-out infinite;\n}\n\n@keyframes _wb-spin_jlw8j_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes _wb-dash_jlw8j_1 {\n 0% {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 24 150;\n stroke-dashoffset: -6;\n }\n to {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._loadingMotion_jlw8j_332,\n ._loadingArc_jlw8j_338 {\n animation: none;\n }\n}\n._group_1hxis_1 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n}\n\n._button_1hxis_7 {\n flex: none;\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n color: var(--dsw-alias-label-secondary);\n}\n\n._button_1hxis_7:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._active_1hxis_19 {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._icon_1hxis_23 {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n._icon_1hxis_23 svg {\n display: block;\n width: var(--wb-len-15);\n height: var(--wb-len-15);\n}\n\n._mirror_1hxis_35 {\n transform: scaleX(-1);\n}\n._stripTabs_1dqp4_1 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-4);\n min-width: 0;\n overflow: hidden;\n}\n\n._tab_1dqp4_9 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n flex: none;\n height: var(--wb-len-28);\n padding: 0 var(--wb-len-10);\n border: 0;\n border-radius: var(--dsw-radius-sm);\n background: none;\n font: inherit;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-16);\n max-width: 100%;\n}\n\n._tabActive_1dqp4_25 {\n color: var(--dsw-alias-label-primary);\n}\n\n._tabQuiet_1dqp4_29 {\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._tabQuiet_1dqp4_29:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._tabTitle_1dqp4_39 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._sep_1dqp4_49 {\n flex: none;\n color: var(--dsw-alias-label-dimmed);\n}\n._trigger_1weg4_1 {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n._pop_1weg4_7 {\n position: absolute;\n top: calc(100% + var(--wb-len-8));\n right: 0;\n z-index: var(--wb-z-30);\n width: var(--wb-len-360);\n max-width: calc(100vw - var(--wb-len-48));\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-14);\n background: var(--dsw-alias-bg-layer-2);\n box-shadow: var(--dsw-shadow-lv3);\n overflow: hidden;\n}\n\n._head_1weg4_21 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-10) var(--wb-len-12) var(--wb-len-9) var(--wb-len-14);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._title_1weg4_29 {\n flex: 1;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._reset_1weg4_37 {\n flex: none;\n padding: var(--wb-len-3) var(--wb-len-8);\n border: none;\n border-radius: var(--wb-radius-6);\n background: transparent;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._reset_1weg4_37:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._reset_1weg4_37:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._list_1weg4_59 {\n list-style: none;\n margin: 0;\n padding: var(--wb-len-6);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._row_1weg4_68 {\n position: relative;\n display: grid;\n grid-template-columns: 12px minmax(0, 1fr) auto;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-sm);\n cursor: grab;\n}\n\n._row_1weg4_68:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._rowOver_1weg4_83::before {\n content: '';\n position: absolute;\n top: var(--wb-len-neg-3);\n left: var(--wb-len-8);\n right: var(--wb-len-8);\n height: var(--wb-len-2);\n background: var(--dsw-alias-brand-primary);\n}\n\n._ghost_1weg4_93 {\n position: fixed;\n z-index: var(--wb-z-40);\n pointer-events: none;\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n box-shadow: var(--wb-static-shadow-ghost);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n white-space: nowrap;\n}\n\n._grip_1weg4_108 {\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n text-align: center;\n color: var(--dsw-alias-label-tertiary);\n user-select: none;\n}\n\n._label_1weg4_116 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._name_1weg4_123 {\n min-width: 0;\n flex: 0 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n}\n\n._error_1weg4_134 {\n margin: 0;\n padding: 0 var(--wb-len-14) var(--wb-len-10);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._dep_1weg4_142 {\n flex: none;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n white-space: nowrap;\n}\n._panel_1oyh4_1 {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: var(--wb-z-10);\n visibility: hidden;\n}\n\n._panel_1oyh4_1[data-fullscreen] {\n z-index: var(--wb-z-40);\n}\n\n._panel_1oyh4_1[data-open] {\n visibility: visible;\n}\n._blocker_cfaak_1 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-6);\n padding: var(--wb-len-20) var(--wb-len-16);\n text-align: center;\n}\n\n._icon_cfaak_10 {\n display: flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._title_cfaak_15 {\n margin: var(--wb-len-2) 0 0;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._hint_cfaak_23 {\n margin: 0;\n max-width: var(--wb-len-42em);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n text-wrap: pretty;\n}\n\n._blocker_cfaak_1._blockerInline_cfaak_32 {\n align-items: flex-start;\n gap: var(--wb-len-6);\n padding: var(--wb-len-4) 0 var(--wb-len-2);\n text-align: left;\n}\n\n._blocker_cfaak_1._blockerInline_cfaak_32 ._title_cfaak_15 {\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n}\n\n._blocker_cfaak_1._blockerInline_cfaak_32 ._hint_cfaak_23 {\n max-width: 100%;\n}\n\n._blocker_cfaak_1._blockerInline_cfaak_32 ._actions_cfaak_48 {\n margin-top: var(--wb-len-8);\n}\n\n._blocker_cfaak_1._blockerInline_cfaak_32 ._raw_cfaak_52 {\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._actions_cfaak_48 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n margin-top: var(--wb-len-6);\n}\n\n._raw_cfaak_52 {\n margin-top: var(--wb-len-10);\n width: 100%;\n max-width: var(--wb-len-360);\n text-align: left;\n}\n\n._notice_cfaak_71 {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: start;\n column-gap: var(--wb-len-10);\n margin: 0 0 var(--wb-len-10);\n padding: var(--wb-len-10) var(--wb-len-12);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-left: 2px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._notice_cfaak_71._noticeFlat_cfaak_84 {\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n}\n\n._noticeText_cfaak_91 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-3);\n min-width: 0;\n}\n\n._noticeTitle_cfaak_98 {\n font-size: var(--wb-font-12-5);\n line-height: var(--wb-line-18);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._noticeHint_cfaak_105 {\n font-size: var(--wb-font-11-5);\n line-height: var(--wb-line-17);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._noticeActions_cfaak_112 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin-top: var(--wb-len-neg-2);\n}\n\n._failure_cfaak_119 {\n margin: var(--wb-len-8) 0 0;\n font-size: var(--wb-font-11-5);\n line-height: var(--wb-line-17);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._failureDetail_cfaak_127 {\n display: block;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-label-tertiary);\n white-space: pre-wrap;\n}\n\n._inlineLink_cfaak_134 {\n margin-left: var(--wb-len-2);\n padding: 0;\n border: none;\n background: transparent;\n font: inherit;\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n vertical-align: baseline;\n}\n\n._inlineLink_cfaak_134:hover {\n text-decoration: underline;\n}\n\n._inlineLink_cfaak_134:disabled {\n opacity: 0.6;\n cursor: default;\n}\n._rawText_cfaak_156 {\n margin: var(--wb-len-6) 0 0;\n max-width: 100%;\n}\n/*$vite$:1*/";
|
|
7489
|
+
var COMPONENT_CSS_MARKER = "\n.wb-activityBlock {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n padding-top: var(--wb-len-10);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n.wb-activityBlock:first-child {\n border-top: none;\n}\n\n.wb-activityBlockHead {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-8);\n}\n\n.wb-activityLine {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-activityLineText {\n flex: none;\n min-width: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n max-height: var(--wb-len-72);\n overflow-y: auto;\n}\n\n.wb-activityLineAt {\n flex: none;\n margin-left: auto;\n font-size: var(--wb-font-10);\n line-height: var(--wb-line-16);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-activityLine > .wb-activityLineAt,\n.wb-activityLine > .wb-activityLineActions {\n margin-left: auto;\n}\n\n.wb-activityLine > .wb-activityLineAt + .wb-activityLineActions {\n margin-left: 0;\n}\n\n.wb-activityLineActions {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n.wb-activityActionFailed {\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-note {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-problem {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n.wb-approvalCommand {\n max-width: 100%;\n}\n.wb-approvalPlan {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n.wb-approvalHint {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n.wb-approvalRows {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n margin: 0;\n}\n.wb-approvalRow {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n.wb-approvalLabel {\n flex: none;\n width: var(--wb-len-56);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-approvalValue {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n.wb-approvalWarn {\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-cardHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n flex: none;\n padding: var(--wb-len-8) var(--wb-len-10) var(--wb-len-8) var(--wb-len-20);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n.wb-cardTitle {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n font-weight: 600;\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-cardMeta {\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-cardMeta::before {\n content: '\\00b7';\n margin-right: var(--wb-len-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardOpen {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n margin-left: auto;\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-4);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardOpen ~ .wb-cardRefresh {\n margin-left: 0;\n}\n\n.wb-cardOpen:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-cardRefresh {\n margin-left: auto;\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-4);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardRefresh:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-cardRefresh:disabled {\n cursor: default;\n opacity: 1;\n}\n\n.wb-cardGear {\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-3);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardGear:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-cardRefresh.wb-spinning svg {\n animation: wb-spin var(--wb-dur-0-9) linear infinite;\n}\n\n.wb-card {\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-xl);\n background: var(--dsw-alias-bg-layer-1);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n flex: none;\n}\n.wb-cardBody {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n padding: var(--wb-len-12);\n}\n.wb-cardBody > :not([data-wb-bleed]) {\n padding-left: var(--wb-len-8);\n padding-right: var(--wb-len-8);\n}\n\n.wb-choiceMenu {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n padding: var(--wb-len-4);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n background: transparent;\n}\n\n.wb-choiceOption {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-height: var(--wb-len-30);\n padding: var(--wb-len-6) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: pointer;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-choiceOption:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-choiceLabel {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-radio {\n appearance: none;\n -webkit-appearance: none;\n flex: none;\n box-sizing: border-box;\n width: var(--wb-len-12);\n height: var(--wb-len-12);\n margin: 0;\n border: 1px solid var(--dsw-alias-border-l3);\n border-radius: 50%;\n corner-shape: round;\n background-color: transparent;\n cursor: pointer;\n transition:\n background-color var(--wb-dur-0-12) ease, border-color var(--wb-dur-0-12) ease;\n}\n\n.wb-radio:not(:checked):hover {\n border-color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-radio:checked {\n border-color: var(--dsw-alias-brand-primary);\n background-image: radial-gradient(\n circle at center,\n var(--dsw-alias-brand-primary) 0 3px,\n transparent 3px\n );\n}\n\n.wb-radio:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n.wb-radio:focus-visible {\n outline: var(--dsw-focus-ring-width, var(--wb-len-2)) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n.wb-longTask {\n padding-top: var(--wb-len-12);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n.wb-longTaskHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n}\n\n.wb-longTaskLink {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n color: var(--dsw-alias-label-secondary);\n text-decoration: none;\n white-space: nowrap;\n}\n.wb-longTaskLink:hover,\n.wb-longTaskLink:focus-visible {\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n}\n.wb-longTaskLink:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n\n.wb-longTaskHeadline {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-longTaskProblem {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n.wb-longTaskDump {\n margin: var(--wb-len-2) 0 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-longTaskDump pre {\n margin: var(--wb-len-4) 0 0;\n max-height: var(--wb-len-220);\n overflow: auto;\n}\n.wb-mockStrip {\n display: flex;\n flex-wrap: wrap;\n gap: var(--wb-len-4);\n padding: var(--wb-len-8) var(--wb-len-12);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n flex: none;\n}\n\n.wb-mockNote {\n flex: 1 0 100%;\n font-size: var(--wb-font-10);\n line-height: var(--wb-line-14);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-mockChip {\n flex: none;\n padding: var(--wb-len-2) var(--wb-len-7);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-pill);\n corner-shape: round;\n background: transparent;\n font-size: var(--wb-font-10);\n line-height: var(--wb-line-14);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n.wb-mockChip:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-mockChipOn {\n border-color: transparent;\n background: var(--dsw-alias-brand-primary);\n color: var(--dsw-alias-label-primary-foreground);\n}\n.wb-centered.wb-centeredCompact {\n flex: none;\n min-height: 0;\n gap: var(--wb-len-8);\n padding: var(--wb-len-20) var(--wb-len-16);\n}\n\n.wb-centered.wb-centeredCompact .wb-centeredHero {\n margin-bottom: var(--wb-len-4);\n}\n\n.wb-skeleton {\n display: flex;\n flex-direction: column;\n}\n\n.wb-skeletonRow {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n}\n\n.wb-skeletonRow + .wb-skeletonRow::before {\n content: '';\n align-self: stretch;\n height: var(--wb-len-0-5);\n margin: 0 var(--wb-len-8) var(--wb-len-neg-0-5);\n background: var(--dsw-alias-border-l2);\n}\n\n.wb-skeletonBar {\n display: block;\n height: var(--wb-len-13);\n border-radius: var(--dsw-radius-xs);\n background: var(--dsw-alias-bg-skeleton);\n animation: wb-skeleton-pulse var(--wb-dur-1-4) var(--ds-ease-in-out) infinite;\n}\n\n.wb-skeletonBarTitle {\n width: 62%;\n}\n\n.wb-skeletonBarMeta {\n width: 32%;\n height: var(--wb-len-10);\n}\n\n.wb-skeletonRow:nth-child(2n) .wb-skeletonBarTitle {\n width: 74%;\n}\n\n.wb-skeletonRow:nth-child(3n) .wb-skeletonBarTitle {\n width: 52%;\n}\n\n@keyframes wb-skeleton-pulse {\n 50% {\n opacity: 0.45;\n }\n}\n\n.wb-centered {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: var(--wb-len-14);\n flex: 1;\n min-height: var(--wb-len-240);\n padding: 0 var(--wb-len-24) var(--wb-len-24);\n text-align: center;\n}\n\n.wb-centeredHero {\n display: flex;\n margin-bottom: var(--wb-len-16);\n color: var(--dsw-alias-label-dimmed);\n}\n\n.wb-centeredTitle {\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-centeredHint {\n max-width: var(--wb-len-300);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-centeredDetail {\n max-width: var(--wb-len-320);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-dimmed);\n word-break: break-all;\n}\n\n.wb-centeredAction {\n display: flex;\n justify-content: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-2);\n}\n@media (prefers-reduced-motion: reduce) {\n .wb-skeletonBar {\n animation: none;\n }}\n\n.wb-row:has(> [data-wb-dot]) {\n grid-template-columns: 84px minmax(0, 1fr);\n}\n.wb-rows {\n display: flex;\n flex-direction: column;\n}\n.wb-row {\n display: grid;\n grid-template-columns: 56px minmax(0, 1fr);\n align-items: baseline;\n gap: var(--wb-len-8);\n padding: var(--wb-len-4) 0;\n}\n.wb-row + .wb-row {\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n.wb-rowKey {\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-rowValue {\n min-width: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n\n.wb-formActions {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\n}\n.wb-settings {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n}\n.wb-settingsHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n.wb-settingsTitle {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-stack {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n min-height: 0;\n}\n\n.wb-stateBlock {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n.wb-stateBlockTitle {\n margin: 0;\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n}\n.wb-stateBlockHint {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-stateBlockActions {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-2);\n}\n.wb-stateBlockResolving {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n.wb-textField {\n box-sizing: border-box;\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-primary);\n outline: none;\n}\n\n.wb-textField:focus {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-textField[aria-invalid='true'] {\n border-color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-textField[aria-invalid='true']:focus {\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-error-primary);\n}\n._marketList_7yq35_1 {\n list-style: none;\n margin: 0;\n padding: var(--wb-len-6);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n max-height: var(--wb-len-320);\n overflow-y: auto;\n}\n\n._marketRow_7yq35_12 {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: center;\n column-gap: var(--wb-len-14);\n row-gap: var(--wb-len-4);\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-lg);\n}\n\n._marketIcon_7yq35_22 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-40);\n height: var(--wb-len-40);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketMain_7yq35_34 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._marketName_7yq35_41 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketDesc_7yq35_50 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n overflow: hidden;\n white-space: nowrap;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketUsedBy_7yq35_61 {\n margin-left: var(--wb-len-8);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n opacity: 0.75;\n}\n\n._marketUsedBy_7yq35_61::before {\n content: '·';\n margin-right: var(--wb-len-6);\n opacity: 0.8;\n}\n\n._marketName_7yq35_41 ._marketVersion_7yq35_75 {\n margin-left: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 400;\n line-height: var(--wb-line-18);\n}\n\n._marketVersion_7yq35_75 {\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketVersion_7yq35_75::before {\n content: '';\n display: inline-block;\n width: var(--wb-len-1);\n height: var(--wb-len-10);\n margin: 0 var(--wb-len-8) 0 var(--wb-len-2);\n vertical-align: -1px;\n background: var(--dsw-alias-border-l2);\n}\n\n._marketEnd_7yq35_97 {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._marketActions_7yq35_104 {\n flex: none;\n display: flex;\n gap: var(--wb-len-6);\n}\n\n._marketSection_7yq35_110 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._marketSectionHead_7yq35_117 {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n\n._marketSectionTitle_7yq35_123 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketSectionCount_7yq35_129 {\n font: var(--dsw-font-s-14);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketProgress_7yq35_135 {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-height: var(--wb-len-32);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketNote_7yq35_145 {\n grid-column: 2 / -1;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-warn-primary);\n overflow-wrap: anywhere;\n}\n\n._marketFailure_7yq35_152 {\n grid-column: 2 / -1;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._marketEmpty_7yq35_159 {\n padding: var(--wb-len-18) var(--wb-len-16);\n text-align: center;\n}\n\n._marketPage_7yq35_164 {\n box-sizing: border-box;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-32);\n padding: 0 clamp(var(--wb-len-24), 4vw, var(--wb-len-48)) var(--wb-len-48);\n overflow: auto;\n color: var(--dsw-alias-label-primary);\n}\n\n._marketPage_7yq35_164 > * {\n width: 100%;\n max-width: var(--wb-len-960);\n}\n\n._marketPageHead_7yq35_181 {\n box-sizing: border-box;\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-16);\n padding-top: var(--wb-len-28);\n}\n\n._marketPageTitle_7yq35_189 {\n margin: 0;\n font: var(--dsw-font-l-20);\n}\n\n._marketPageIntro_7yq35_194 {\n margin: var(--wb-len-4) 0 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketPageTools_7yq35_200 {\n flex: none;\n align-self: center;\n margin-left: auto;\n display: flex;\n align-items: center;\n gap: var(--wb-len-16);\n}\n\n._marketIconButton_7yq35_209 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n border: 0;\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n color: var(--dsw-alias-label-caption);\n cursor: pointer;\n}\n\n._marketIconButton_7yq35_209:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketIconButton_7yq35_209:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._marketIconWrap_7yq35_234 {\n display: inline-flex;\n}\n\n._marketIconButtonSpinning_7yq35_238 svg {\n animation: _wb-spin_7yq35_1 var(--wb-dur-0-9) linear infinite;\n}\n\n._marketAddButton_7yq35_242 {\n height: var(--wb-len-32);\n padding: 0 var(--wb-len-12);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n border-radius: var(--dsw-radius-md);\n}\n\n._marketEmpty_7yq35_159 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-64) var(--wb-len-16);\n text-align: center;\n}\n\n._marketChecking_7yq35_259 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketEmptyTitle_7yq35_267 {\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n@keyframes _wb-spin_7yq35_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n._foot_1us83_1 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) var(--wb-len-14) var(--wb-len-10);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._footText_1us83_12 {\n flex: 1;\n min-width: 0;\n}\n\n._footTextMd_1us83_17 {\n flex: 1;\n min-width: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n._wide_1coeb_1 {\n justify-content: center;\n width: 100%;\n height: var(--wb-len-40);\n border-radius: var(--dsw-radius-md);\n}\n\n._dialog_1coeb_8 {\n width: min(var(--wb-len-560), 100%);\n max-height: min(var(--wb-len-800), 100%);\n}\n\n._content_1coeb_13 {\n min-height: 0;\n overflow: auto;\n}\n\n._stack_1coeb_18 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._body_1coeb_25 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._field_1coeb_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n._input_1coeb_39 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-14);\n}\n\n._registryField_1coeb_45 {\n height: var(--wb-len-32);\n margin-left: var(--wb-len-26);\n padding: 0 var(--wb-len-10);\n}\n\n._options_1coeb_51 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-8) var(--wb-len-12);\n}\n\n._guideToggle_1coeb_59 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-4);\n align-self: flex-start;\n margin-top: var(--wb-len-4);\n padding: 0;\n border: 0;\n background: transparent;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._guideToggle_1coeb_59:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._guideToggle_1coeb_59 svg,\n._registryToggle_1coeb_78 svg {\n transition: transform var(--wb-dur-0-12) ease;\n}\n\n._guideToggle_1coeb_59[aria-expanded='true'] svg,\n._registryToggle_1coeb_78[aria-expanded='true'] svg {\n transform: rotate(180deg);\n}\n\n._registryWrap_1coeb_87 {\n position: relative;\n flex: none;\n}\n\n._registryToggle_1coeb_78 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n height: var(--wb-len-26);\n padding: 0 var(--wb-len-8) 0 var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-2);\n font: inherit;\n font-size: var(--wb-font-12-5);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._registryToggle_1coeb_78:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._registryToggle_1coeb_78:disabled {\n cursor: default;\n opacity: 0.6;\n}\n\n._registryToggle_1coeb_78[aria-expanded='true'] {\n border-color: var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-3);\n}\n\n._registryChosen_1coeb_121 {\n color: var(--dsw-alias-label-primary);\n font-weight: 500;\n}\n\n._registry_1coeb_45 {\n position: fixed;\n z-index: var(--wb-z-1100);\n box-sizing: border-box;\n width: min(var(--wb-len-440), 100vw - var(--wb-len-24));\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10) var(--wb-len-12);\n border: 0;\n border-radius: var(--dsw-radius-lg);\n background: var(--dsw-alias-bg-layer-2);\n --dsw-elevation-stroke-color: var(--dsw-alias-border-l3);\n box-shadow: var(--dsw-elevation-prominent);\n}\n\n._registryOption_1coeb_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid transparent;\n border-radius: var(--dsw-radius-lg);\n cursor: pointer;\n}\n\nlabel._registryOption_1coeb_143 {\n flex-direction: row;\n align-items: flex-start;\n gap: var(--wb-len-10);\n}\n\n._registryPick_1coeb_159 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n cursor: pointer;\n}\n\n._registryOption_1coeb_143[data-checked='true'] {\n border-color: color-mix(in srgb, var(--dsw-alias-brand-primary) 40%, transparent);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n._registryOption_1coeb_143 input[type='radio'] {\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: var(--wb-len-2) 0 0;\n accent-color: var(--dsw-alias-brand-primary);\n}\n\n._registryTitle_1coeb_179 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n font: var(--dsw-font-xs-13);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-primary);\n}\n\n._registryHint_1coeb_189 {\n margin-left: var(--wb-len-26);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._inputError_1coeb_197 {\n margin: var(--wb-len-neg-4) 0 0 var(--wb-len-26);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._guide_1coeb_59 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) var(--wb-len-14) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-lg);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._guideList_1coeb_214 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n._guideItem_1coeb_223 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) 0;\n}\n\n._guideIndex_1coeb_230 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n border-radius: var(--wb-radius-pill);\n corner-shape: round;\n background: var(--dsw-alias-bg-module-platform);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._guideMain_1coeb_244 {\n display: flex;\n flex-direction: column;\n flex: 1;\n gap: 0;\n min-width: 0;\n}\n\n._guideTitle_1coeb_252 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n\n._guideHint_1coeb_258 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._guideExample_1coeb_264 {\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._guideExample_1coeb_264 code {\n font-family: var(--dsw-font-mono, monospace);\n}\n\n._guideExampleLabel_1coeb_274 {\n color: var(--dsw-alias-label-caption);\n}\n\n._footer_1coeb_278 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-20);\n width: 100%;\n}\n\n._hero_1coeb_285 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) 0 var(--wb-len-4);\n text-align: center;\n}\n\n._heroIcon_1coeb_294 {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-44);\n height: var(--wb-len-44);\n color: var(--dsw-alias-label-secondary);\n}\n\n._heroIcon_1coeb_294[data-state='done'] {\n color: var(--dsw-alias-state-success-secondary);\n}\n\n._heroIcon_1coeb_294[data-state='error'] {\n color: var(--dsw-alias-state-warn-label);\n}\n\n._pendingTitle_1coeb_311 {\n margin: 0;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n font-weight: 500;\n color: var(--dsw-alias-label-secondary);\n}\n\n._wizardTitle_1coeb_319 {\n margin: 0;\n font-size: var(--wb-font-18);\n line-height: var(--wb-len-26);\n font-weight: 600;\n}\n\n._subject_1coeb_326 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-6);\n padding: var(--wb-len-16);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n text-align: center;\n}\n\n._subjectName_1coeb_337 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n overflow-wrap: anywhere;\n}\n\n._subjectMeta_1coeb_343,\n._subjectDesc_1coeb_344 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._result_1coeb_351,\n._resultWarn_1coeb_352 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: color-mix(in srgb, var(--dsw-alias-state-success-primary) 10%, transparent);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-primary);\n}\n\n._resultWarn_1coeb_352 {\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 12%, transparent);\n}\n\n._approval_1coeb_365 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-12) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-state-warn-primary);\n border-radius: var(--dsw-radius-lg);\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._approvalTitle_1coeb_375 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._approvalText_1coeb_382 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._approvalCaution_1coeb_388 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n font-weight: 600;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._note_1coeb_395 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._noteWarn_1coeb_402 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._noteError_1coeb_406 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._problem_1coeb_410 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._detailLabel_1coeb_417 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._detail_1coeb_417 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l1);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-3);\n font-family: var(--dsw-font-mono, monospace);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n}\n._note_1enlz_1 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-10) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-state-warn-tertiary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n._note_1enlz_1 > svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n._actions_jlw8j_1[hidden],\n._progress_jlw8j_2[hidden],\n._commandRow_jlw8j_3[hidden],\n._bridge_jlw8j_4[hidden],\n._raw_jlw8j_5[hidden] {\n display: none;\n}\n\n._gate_jlw8j_9 {\n position: fixed;\n inset: 0;\n z-index: var(--wb-z-top);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--wb-len-24);\n background: var(--dsw-alias-bg-base);\n}\n\n._card_jlw8j_20 {\n width: 100%;\n max-width: var(--wb-len-420);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-16);\n text-align: center;\n}\n\n._card_jlw8j_20:has(._actions_jlw8j_1:not([hidden])),\n._card_jlw8j_20:has(._bridge_jlw8j_4:not([hidden])) {\n max-width: var(--wb-len-520);\n}\n\n._title_jlw8j_35 {\n margin: 0;\n font-size: var(--dsw-font-base-16-font-size);\n line-height: var(--wb-line-24);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._hint_jlw8j_43 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._steps_jlw8j_50 {\n list-style: none;\n margin: var(--wb-len-6) 0 0;\n padding: 0;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n text-align: left;\n}\n\n._step_jlw8j_50 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-6) var(--wb-len-10);\n border-radius: var(--dsw-radius-sm);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._step_jlw8j_50[data-status='running'] {\n color: var(--dsw-alias-label-primary);\n}\n\n._mark_jlw8j_77 {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-14);\n height: var(--wb-len-14);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n}\n\n._step_jlw8j_50[data-status='ok'] ._mark_jlw8j_77 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._step_jlw8j_50[data-status='warn'] ._mark_jlw8j_77 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._step_jlw8j_50[data-status='failed'] ._mark_jlw8j_77 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._label_jlw8j_102 {\n flex: none;\n}\n\n._detail_jlw8j_106 {\n margin-left: auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._progress_jlw8j_2 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._elapsed_jlw8j_124 {\n flex: none;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n}\n\n._error_jlw8j_132 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n max-height: var(--wb-len-120);\n overflow: auto;\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n white-space: pre-wrap;\n word-break: break-all;\n text-align: left;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._commandRow_jlw8j_3 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-4);\n margin: 0 0 var(--wb-len-8);\n padding-right: var(--wb-len-4);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n._copy_jlw8j_158 {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-24);\n height: var(--wb-len-24);\n padding: 0;\n border: none;\n border-radius: var(--wb-radius-6);\n background: transparent;\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._copy_jlw8j_158:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._command_jlw8j_3 {\n flex: 1;\n min-width: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n overflow-wrap: anywhere;\n color: var(--dsw-alias-label-primary);\n}\n\n._buttons_jlw8j_191 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-12);\n}\n\n._mockSlot_jlw8j_198 {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n justify-content: center;\n background: var(--dsw-alias-bg-base);\n}\n\n._button_jlw8j_191 {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: var(--wb-len-28);\n padding: 0 var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n font: inherit;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n}\n\n._button_jlw8j_191:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._button_jlw8j_191:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n._actions_jlw8j_1,\n._bridge_jlw8j_4 {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--wb-len-10);\n margin-top: var(--wb-len-4);\n padding: var(--wb-len-14) var(--wb-len-16);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-14);\n background: var(--dsw-alias-bg-layer-1);\n text-align: left;\n}\n\n._fixTitle_jlw8j_249 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._actions_jlw8j_1 ._hint_jlw8j_43,\n._bridge_jlw8j_4 ._hint_jlw8j_43 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-19);\n color: var(--dsw-alias-label-secondary);\n}\n\n._actions_jlw8j_1 ._commandRow_jlw8j_3,\n._bridge_jlw8j_4 ._commandRow_jlw8j_3 {\n margin: 0;\n}\n\n._actions_jlw8j_1 ._buttons_jlw8j_191,\n._bridge_jlw8j_4 ._buttons_jlw8j_191 {\n justify-content: flex-start;\n}\n\n._raw_jlw8j_5 {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._rawSummary_jlw8j_282 {\n cursor: pointer;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._actions_jlw8j_1 ._error_jlw8j_132,\n._bridge_jlw8j_4 ._error_jlw8j_132 {\n margin-top: var(--wb-len-6);\n}\n\n._bridgeLines_jlw8j_292 {\n margin: 0;\n padding-left: var(--wb-len-18);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-19);\n color: var(--dsw-alias-label-secondary);\n}\n\n._bridgeLine_jlw8j_292 a {\n display: block;\n margin-top: var(--wb-len-4);\n width: fit-content;\n}\n\n._link_jlw8j_309 {\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n}\n\n._link_jlw8j_309::after {\n content: '↗';\n margin-left: var(--wb-len-2);\n}\n\n._link_jlw8j_309:hover {\n text-decoration: underline;\n}\n\n._loading_jlw8j_323 {\n flex: none;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._loading_jlw8j_323[hidden] {\n display: none;\n}\n\n._loadingMotion_jlw8j_332 {\n transform-origin: center;\n animation: _wb-spin_jlw8j_1 var(--wb-dur-1-5) linear infinite;\n}\n\n._loadingTrack_jlw8j_337,\n._loadingArc_jlw8j_338 {\n fill: none;\n stroke: currentColor;\n stroke-width: 2;\n stroke-linecap: round;\n}\n\n._loadingTrack_jlw8j_337 {\n opacity: 0.25;\n}\n\n._loadingArc_jlw8j_338 {\n stroke-dasharray: 12 150;\n animation: _wb-dash_jlw8j_1 var(--wb-dur-1-5) ease-in-out infinite;\n}\n\n@keyframes _wb-spin_jlw8j_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes _wb-dash_jlw8j_1 {\n 0% {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 24 150;\n stroke-dashoffset: -6;\n }\n to {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._loadingMotion_jlw8j_332,\n ._loadingArc_jlw8j_338 {\n animation: none;\n }\n}\n._group_1hxis_1 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n}\n\n._button_1hxis_7 {\n flex: none;\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n color: var(--dsw-alias-label-secondary);\n}\n\n._button_1hxis_7:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._active_1hxis_19 {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._icon_1hxis_23 {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n._icon_1hxis_23 svg {\n display: block;\n width: var(--wb-len-15);\n height: var(--wb-len-15);\n}\n\n._mirror_1hxis_35 {\n transform: scaleX(-1);\n}\n._stripTabs_1dqp4_1 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-4);\n min-width: 0;\n overflow: hidden;\n}\n\n._tab_1dqp4_9 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n flex: none;\n height: var(--wb-len-28);\n padding: 0 var(--wb-len-10);\n border: 0;\n border-radius: var(--dsw-radius-sm);\n background: none;\n font: inherit;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-16);\n max-width: 100%;\n}\n\n._tabActive_1dqp4_25 {\n color: var(--dsw-alias-label-primary);\n}\n\n._tabQuiet_1dqp4_29 {\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._tabQuiet_1dqp4_29:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._tabTitle_1dqp4_39 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._sep_1dqp4_49 {\n flex: none;\n color: var(--dsw-alias-label-dimmed);\n}\n._trigger_1weg4_1 {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n._pop_1weg4_7 {\n position: absolute;\n top: calc(100% + var(--wb-len-8));\n right: 0;\n z-index: var(--wb-z-30);\n width: var(--wb-len-360);\n max-width: calc(100vw - var(--wb-len-48));\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-14);\n background: var(--dsw-alias-bg-layer-2);\n box-shadow: var(--dsw-shadow-lv3);\n overflow: hidden;\n}\n\n._head_1weg4_21 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-10) var(--wb-len-12) var(--wb-len-9) var(--wb-len-14);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._title_1weg4_29 {\n flex: 1;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._reset_1weg4_37 {\n flex: none;\n padding: var(--wb-len-3) var(--wb-len-8);\n border: none;\n border-radius: var(--wb-radius-6);\n background: transparent;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._reset_1weg4_37:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._reset_1weg4_37:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._list_1weg4_59 {\n list-style: none;\n margin: 0;\n padding: var(--wb-len-6);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._row_1weg4_68 {\n position: relative;\n display: grid;\n grid-template-columns: 12px minmax(0, 1fr) auto;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-sm);\n cursor: grab;\n}\n\n._row_1weg4_68:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._rowOver_1weg4_83::before {\n content: '';\n position: absolute;\n top: var(--wb-len-neg-3);\n left: var(--wb-len-8);\n right: var(--wb-len-8);\n height: var(--wb-len-2);\n background: var(--dsw-alias-brand-primary);\n}\n\n._ghost_1weg4_93 {\n position: fixed;\n z-index: var(--wb-z-40);\n pointer-events: none;\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n box-shadow: var(--wb-static-shadow-ghost);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n white-space: nowrap;\n}\n\n._grip_1weg4_108 {\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n text-align: center;\n color: var(--dsw-alias-label-tertiary);\n user-select: none;\n}\n\n._label_1weg4_116 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._name_1weg4_123 {\n min-width: 0;\n flex: 0 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n}\n\n._error_1weg4_134 {\n margin: 0;\n padding: 0 var(--wb-len-14) var(--wb-len-10);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._dep_1weg4_142 {\n flex: none;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n white-space: nowrap;\n}\n._panel_1oyh4_1 {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: var(--wb-z-10);\n visibility: hidden;\n}\n\n._panel_1oyh4_1[data-fullscreen] {\n z-index: var(--wb-z-40);\n}\n\n._panel_1oyh4_1[data-open] {\n visibility: visible;\n}\n._root_1vd78_1 {\n position: relative;\n flex: none;\n margin: 0 var(--wb-len-2) var(--wb-len-4);\n}\n\n._anchor_1vd78_7 {\n display: block;\n width: 100%;\n}\n\n._menu_1vd78_12 {\n min-width: var(--wb-len-240);\n max-width: var(--wb-len-360);\n}\n\n._trigger_1vd78_17 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-gap-xs);\n width: 100%;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: none;\n border-radius: var(--dsw-radius-md);\n background: transparent;\n color: var(--dsw-alias-label-primary);\n font: inherit;\n text-align: left;\n cursor: pointer;\n}\n\n._trigger_1vd78_17:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._trigger_1vd78_17:focus-visible {\n outline: var(--dsw-focus-ring-width) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n\n._glyph_1vd78_44 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-16);\n height: var(--wb-len-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._glyphActive_1vd78_54 {\n color: var(--dsw-alias-state-business-primary);\n}\n\n._triggerName_1vd78_58 {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-6);\n font-size: var(--wb-font-row);\n line-height: var(--wb-line-20);\n overflow: hidden;\n}\n\n._dir_1vd78_69 {\n flex: 0 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._name_1vd78_77 {\n flex: 0 1 auto;\n max-width: 50%;\n font-size: var(--dsw-font-xxs-12-font-size);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._triggerName_1vd78_58 ._name_1vd78_77 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._chevron_1vd78_90 {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-caption);\n}\n\n._row_1vd78_96 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n width: 100%;\n min-width: 0;\n}\n\n._trailing_1vd78_104 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n margin-inline-start: auto;\n}\n\n._trailing_1vd78_104 ._rowAction_1vd78_114 {\n width: var(--wb-len-20);\n min-width: var(--wb-len-20);\n height: var(--wb-len-20);\n min-height: var(--wb-len-20);\n padding: 0;\n border-radius: var(--dsw-radius-sm);\n}\n\n._row_1vd78_96 ._name_1vd78_77 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._current_1vd78_127 {\n flex: none;\n display: inline-flex;\n align-items: center;\n color: var(--dsw-alias-label-primary);\n}\n\n._field_1vd78_134 {\n display: flex;\n align-items: center;\n gap: var(--wb-gap-xs);\n box-sizing: border-box;\n width: 100%;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n._field_1vd78_134:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n}\n\n._searchIcon_1vd78_151 {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._field_1vd78_134 ._search_1vd78_151 {\n flex: 1;\n min-width: 0;\n height: var(--wb-len-24);\n border: none;\n background: transparent;\n}\n\n._field_1vd78_134 ._search_1vd78_151:focus {\n border-color: transparent;\n box-shadow: none;\n}\n._dialog_1vye5_1 {\n width: min(var(--wb-len-420), 100%);\n}\n\n._stack_1vye5_5 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._input_1vye5_12 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-12);\n}\n\n._meta_1vye5_18 {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n._blocker_cfaak_1 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-6);\n padding: var(--wb-len-20) var(--wb-len-16);\n text-align: center;\n}\n\n._icon_cfaak_10 {\n display: flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._title_cfaak_15 {\n margin: var(--wb-len-2) 0 0;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._hint_cfaak_23 {\n margin: 0;\n max-width: var(--wb-len-42em);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n text-wrap: pretty;\n}\n\n._blocker_cfaak_1._blockerInline_cfaak_32 {\n align-items: flex-start;\n gap: var(--wb-len-6);\n padding: var(--wb-len-4) 0 var(--wb-len-2);\n text-align: left;\n}\n\n._blocker_cfaak_1._blockerInline_cfaak_32 ._title_cfaak_15 {\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n}\n\n._blocker_cfaak_1._blockerInline_cfaak_32 ._hint_cfaak_23 {\n max-width: 100%;\n}\n\n._blocker_cfaak_1._blockerInline_cfaak_32 ._actions_cfaak_48 {\n margin-top: var(--wb-len-8);\n}\n\n._blocker_cfaak_1._blockerInline_cfaak_32 ._raw_cfaak_52 {\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._actions_cfaak_48 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n margin-top: var(--wb-len-6);\n}\n\n._raw_cfaak_52 {\n margin-top: var(--wb-len-10);\n width: 100%;\n max-width: var(--wb-len-360);\n text-align: left;\n}\n\n._notice_cfaak_71 {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: start;\n column-gap: var(--wb-len-10);\n margin: 0 0 var(--wb-len-10);\n padding: var(--wb-len-10) var(--wb-len-12);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-left: 2px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._notice_cfaak_71._noticeFlat_cfaak_84 {\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n}\n\n._noticeText_cfaak_91 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-3);\n min-width: 0;\n}\n\n._noticeTitle_cfaak_98 {\n font-size: var(--wb-font-12-5);\n line-height: var(--wb-line-18);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._noticeHint_cfaak_105 {\n font-size: var(--wb-font-11-5);\n line-height: var(--wb-line-17);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._noticeActions_cfaak_112 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin-top: var(--wb-len-neg-2);\n}\n\n._failure_cfaak_119 {\n margin: var(--wb-len-8) 0 0;\n font-size: var(--wb-font-11-5);\n line-height: var(--wb-line-17);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._failureDetail_cfaak_127 {\n display: block;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-label-tertiary);\n white-space: pre-wrap;\n}\n\n._inlineLink_cfaak_134 {\n margin-left: var(--wb-len-2);\n padding: 0;\n border: none;\n background: transparent;\n font: inherit;\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n vertical-align: baseline;\n}\n\n._inlineLink_cfaak_134:hover {\n text-decoration: underline;\n}\n\n._inlineLink_cfaak_134:disabled {\n opacity: 0.6;\n cursor: default;\n}\n._rawText_cfaak_156 {\n margin: var(--wb-len-6) 0 0;\n max-width: 100%;\n}\n/*$vite$:1*/";
|
|
6907
7490
|
function installStyles() {
|
|
6908
7491
|
const style = document.createElement("style");
|
|
6909
7492
|
style.setAttribute(STYLE_MARKER, "");
|
|
@@ -6963,7 +7546,9 @@ window.__ModuleLoader__.load({
|
|
|
6963
7546
|
let disposeDictionary;
|
|
6964
7547
|
const publish = () => {
|
|
6965
7548
|
disposeDictionary?.();
|
|
6966
|
-
|
|
7549
|
+
const { dictionaries: merged, problems } = mergeMessagesSkipping(dictionaries, messagesOf(units.all()));
|
|
7550
|
+
for (const problem of problems) console.warn(`[dsh-workbench] 套件 ${problem.unit} 的文案没并进来(只有它少了这几句):${problem.reason}`);
|
|
7551
|
+
disposeDictionary = ctx.locale.register(LOCALE_NS, merged);
|
|
6967
7552
|
};
|
|
6968
7553
|
publish();
|
|
6969
7554
|
const unsubscribe = units.subscribe(publish);
|
|
@@ -7115,7 +7700,14 @@ window.__ModuleLoader__.load({
|
|
|
7115
7700
|
inject: () => ({
|
|
7116
7701
|
listPanels: () => readPanels(ctx),
|
|
7117
7702
|
subscribePanels: (callback) => ctx.slots.subscribe("sidebar.panellist", callback),
|
|
7118
|
-
|
|
7703
|
+
renameWorkspace: async (workspaceId, title) => {
|
|
7704
|
+
try {
|
|
7705
|
+
await ctx.workspaces.rename(workspaceId, title);
|
|
7706
|
+
return true;
|
|
7707
|
+
} catch {
|
|
7708
|
+
return false;
|
|
7709
|
+
}
|
|
7710
|
+
},
|
|
7119
7711
|
openWorkspace: (workspaceId) => {
|
|
7120
7712
|
ctx.uiWorkspace.openWorkspace(workspaceId);
|
|
7121
7713
|
},
|