@dsh-workbench/core 0.2.5 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -9
- package/bin/dsh-workbench +12 -43
- package/client.js +914 -350
- package/dist/client/client.body.js +914 -350
- package/dist/client/index.js +915 -351
- package/dist/host/index.js +1314 -667
- package/dist/types/app/client.d.ts +216 -6
- package/dist/types/app/layouts/config-sync/ConfigSyncSection.d.ts +5 -0
- package/dist/types/app/layouts/rightbar/__tests__/market-order.test.d.ts +1 -0
- package/dist/types/app/layouts/rightbar/__tests__/market-running-display.test.d.ts +1 -0
- package/dist/types/app/layouts/rightbar/__tests__/market-workbench-act.test.d.ts +1 -0
- package/dist/types/app/layouts/rightbar/market-act.d.ts +2 -1
- package/dist/types/app/layouts/rightbar/market-rows.d.ts +3 -0
- package/dist/types/app/layouts/rightbar/market-settle-hold.d.ts +13 -0
- package/dist/types/app/layouts/rightbar/market-settle.d.ts +22 -0
- package/dist/types/app/layouts/rightbar/market-transient-state.d.ts +22 -0
- package/dist/types/app/layouts/rightbar/market-view-text.d.ts +26 -1
- package/dist/types/app/layouts/sidebar/workspace-groups.d.ts +4 -1
- package/dist/types/modules/panels/__tests__/market-tools-harness.d.ts +3 -0
- package/dist/types/modules/panels/model/market-workbench-update.d.ts +19 -0
- package/dist/types/modules/panels/model/market.d.ts +4 -0
- package/dist/types/modules/sessions/index.d.ts +1 -1
- package/dist/types/modules/sessions/model/session-node.d.ts +1 -0
- package/dist/types/shared/api/bundle-install.d.ts +1 -0
- package/dist/types/shared/api/config-sync.d.ts +35 -0
- package/dist/types/shared/api/config-sync.test.d.ts +1 -0
- package/dist/types/shared/api/host/__tests__/config-sync.test.d.ts +1 -0
- package/dist/types/shared/api/host/__tests__/post-channels.test.d.ts +1 -0
- package/dist/types/shared/api/host/__tests__/self-update.test.d.ts +1 -0
- package/dist/types/shared/api/host/bundle-manager.d.ts +1 -0
- package/dist/types/shared/api/host/bundle-routes.d.ts +1 -1
- package/dist/types/shared/api/host/config-sync.d.ts +46 -0
- package/dist/types/shared/api/host/post-channels.d.ts +18 -0
- package/dist/types/shared/api/host/self-update.d.ts +45 -0
- package/docs/HANDOFF.md +19 -14
- package/docs/OPERATIONS.md +40 -8
- package/package.json +4 -4
- package/scripts/seed-profile.sh +21 -85
|
@@ -715,9 +715,15 @@ function ActivityAction({ label, hint, icon, href, onClick, failed }) {
|
|
|
715
715
|
}
|
|
716
716
|
//#endregion
|
|
717
717
|
//#region ../shared/dist/components/Note.js
|
|
718
|
-
function Note({ tone = "muted", as, children }) {
|
|
718
|
+
function Note({ tone = "muted", as, role, children }) {
|
|
719
719
|
const className = tone === "problem" ? "wb-problem" : "wb-note";
|
|
720
|
-
return as === "span" ? h("span", {
|
|
720
|
+
return as === "span" ? h("span", {
|
|
721
|
+
className,
|
|
722
|
+
role
|
|
723
|
+
}, children) : h("p", {
|
|
724
|
+
className,
|
|
725
|
+
role
|
|
726
|
+
}, children);
|
|
721
727
|
}
|
|
722
728
|
//#endregion
|
|
723
729
|
//#region ../shared/dist/components/CardBoundary.js
|
|
@@ -1282,6 +1288,7 @@ var en = {
|
|
|
1282
1288
|
"project.search.placeholder": "Search workspaces (folder / name / path)",
|
|
1283
1289
|
"project.search.empty": "No workspace matches “{query}”.",
|
|
1284
1290
|
"project.group.workspaces": "Workspaces",
|
|
1291
|
+
"project.group.defaultWorkspace": "Default workspace",
|
|
1285
1292
|
"project.group.workshop": "Workshop",
|
|
1286
1293
|
"project.rename.row": "Rename “{name}”",
|
|
1287
1294
|
"project.rename.current": "Give this workspace a display name…",
|
|
@@ -1374,6 +1381,7 @@ var en = {
|
|
|
1374
1381
|
"panels.market.lead": "Installed on this machine, shared by every project.",
|
|
1375
1382
|
"panels.market.install": "Install",
|
|
1376
1383
|
"panels.market.update": "Update",
|
|
1384
|
+
"panels.market.swapSlow": "Not swapped yet — maybe a slow or failed download. Press Update again; if it stays like this, restart dsh.",
|
|
1377
1385
|
"panels.market.uninstall": "Uninstall",
|
|
1378
1386
|
"panels.market.uninstallLabel": "Uninstall {name}",
|
|
1379
1387
|
"panels.market.installing": "Installing…",
|
|
@@ -1623,7 +1631,40 @@ var en = {
|
|
|
1623
1631
|
"error.unknown": "Something went wrong",
|
|
1624
1632
|
"board.title": "Workbench panel",
|
|
1625
1633
|
"panel.conversation": "Conversation",
|
|
1626
|
-
"panels.label": "Global panels"
|
|
1634
|
+
"panels.label": "Global panels",
|
|
1635
|
+
"configSync.nav": "Config sync",
|
|
1636
|
+
"configSync.lead": "Bring over the rows another profile configures explicitly — pick any profile as the source.",
|
|
1637
|
+
"configSync.source": "Source",
|
|
1638
|
+
"configSync.sourceBroken": "its config is unreadable",
|
|
1639
|
+
"configSync.sourceRows": "{name}: {count} rows are new or different for the workbench",
|
|
1640
|
+
"configSync.sourceDead": "unreadable",
|
|
1641
|
+
"configSync.refresh": "Read again",
|
|
1642
|
+
"configSync.loading": "Reading the source config…",
|
|
1643
|
+
"configSync.readHint": "Pick another source, or read again.",
|
|
1644
|
+
"configSync.tag.new": "New",
|
|
1645
|
+
"configSync.tag.differs": "Differs",
|
|
1646
|
+
"configSync.conflictNote": "Applying replaces this workbench copy with the source",
|
|
1647
|
+
"configSync.code.lang": "yaml",
|
|
1648
|
+
"configSync.code.copy": "Copy",
|
|
1649
|
+
"configSync.code.copied": "Copied",
|
|
1650
|
+
"configSync.code.wrap": "Wrap lines",
|
|
1651
|
+
"configSync.code.unwrap": "No wrap",
|
|
1652
|
+
"configSync.code.collapse": "Collapse",
|
|
1653
|
+
"configSync.code.collapseAria": "Collapse this row",
|
|
1654
|
+
"configSync.code.expandAria": "Expand the diff ({count} more lines)",
|
|
1655
|
+
"configSync.code.expand": "Show {count} more lines",
|
|
1656
|
+
"configSync.missing": "{pkg} is not installed: the row will not take effect — run `dsh plugin --profile {profile} add {pkg}`, or install it from the module market",
|
|
1657
|
+
"configSync.apply": "Sync {count} selected",
|
|
1658
|
+
"configSync.applyNone": "Pick some rows first",
|
|
1659
|
+
"configSync.applying": "Writing…",
|
|
1660
|
+
"configSync.applied": "Written to the workbench config · applied",
|
|
1661
|
+
"configSync.appliedIds": "Written this time: {ids}",
|
|
1662
|
+
"configSync.skippedIds": "Left alone (already here): {ids}",
|
|
1663
|
+
"configSync.nothing": "Nothing to sync",
|
|
1664
|
+
"configSync.unreadable": "Cannot read {path}: {reason}",
|
|
1665
|
+
"configSync.noSource": "This machine has no other profile to sync from",
|
|
1666
|
+
"configSync.emptyProviders": "The workbench has no model provider yet — sync the llm- rows from some profile, or configure one under Models.",
|
|
1667
|
+
"configSync.failed": "The sync did not go through; try again."
|
|
1627
1668
|
};
|
|
1628
1669
|
//#endregion
|
|
1629
1670
|
//#region ../shared/dist/i18n/zh.js
|
|
@@ -1642,6 +1683,7 @@ var zh = {
|
|
|
1642
1683
|
"project.search.placeholder": "搜索工作区(目录名 / 中文名 / 路径)",
|
|
1643
1684
|
"project.search.empty": "没有匹配「{query}」的工作区。",
|
|
1644
1685
|
"project.group.workspaces": "工作区",
|
|
1686
|
+
"project.group.defaultWorkspace": "默认工作区",
|
|
1645
1687
|
"project.group.workshop": "工坊",
|
|
1646
1688
|
"project.rename.row": "改「{name}」的中文名",
|
|
1647
1689
|
"project.rename.current": "改当前工作区的中文名…",
|
|
@@ -1734,6 +1776,7 @@ var zh = {
|
|
|
1734
1776
|
"panels.market.lead": "装在这台机器上,所有项目共用。",
|
|
1735
1777
|
"panels.market.install": "安装",
|
|
1736
1778
|
"panels.market.update": "更新",
|
|
1779
|
+
"panels.market.swapSlow": "还没换上:可能网慢或没装上。再点一次「更新」;一直这样就把 dsh 重启一遍。",
|
|
1737
1780
|
"panels.market.uninstall": "卸载",
|
|
1738
1781
|
"panels.market.uninstallLabel": "卸载 {name}",
|
|
1739
1782
|
"panels.market.installing": "正在安装…",
|
|
@@ -1983,7 +2026,40 @@ var zh = {
|
|
|
1983
2026
|
"error.unknown": "出错了",
|
|
1984
2027
|
"board.title": "工作台面板",
|
|
1985
2028
|
"panel.conversation": "对话",
|
|
1986
|
-
"panels.label": "全局面板"
|
|
2029
|
+
"panels.label": "全局面板",
|
|
2030
|
+
"configSync.nav": "配置同步",
|
|
2031
|
+
"configSync.lead": "把另一个 profile 里显式配过的行搬过来 —— 来源随你选。",
|
|
2032
|
+
"configSync.source": "来源",
|
|
2033
|
+
"configSync.sourceBroken": "读不到它的配置",
|
|
2034
|
+
"configSync.sourceRows": "{name} 这份里你有 {count} 行可搬",
|
|
2035
|
+
"configSync.sourceDead": "读不到",
|
|
2036
|
+
"configSync.refresh": "重新读一遍",
|
|
2037
|
+
"configSync.loading": "正在读来源的配置…",
|
|
2038
|
+
"configSync.readHint": "换个来源,或再读一遍。",
|
|
2039
|
+
"configSync.tag.new": "新增",
|
|
2040
|
+
"configSync.tag.differs": "差异",
|
|
2041
|
+
"configSync.conflictNote": "应用后工作台这份会被来源覆盖",
|
|
2042
|
+
"configSync.code.lang": "yaml",
|
|
2043
|
+
"configSync.code.copy": "复制",
|
|
2044
|
+
"configSync.code.copied": "已复制",
|
|
2045
|
+
"configSync.code.wrap": "自动换行",
|
|
2046
|
+
"configSync.code.unwrap": "不换行",
|
|
2047
|
+
"configSync.code.collapse": "收起",
|
|
2048
|
+
"configSync.code.collapseAria": "收起这一行的配置",
|
|
2049
|
+
"configSync.code.expandAria": "展开差异(还有 {count} 行)",
|
|
2050
|
+
"configSync.code.expand": "展开剩余 {count} 行",
|
|
2051
|
+
"configSync.missing": "{pkg} 还没装:这一行搬过来也不会生效 —— 先 `dsh plugin --profile {profile} add {pkg}`,或在模块市场里装",
|
|
2052
|
+
"configSync.apply": "同步选中的 {count} 行",
|
|
2053
|
+
"configSync.applyNone": "先勾几行",
|
|
2054
|
+
"configSync.applying": "正在写入…",
|
|
2055
|
+
"configSync.applied": "已写入工作台配置 · 已生效",
|
|
2056
|
+
"configSync.appliedIds": "这次写进去:{ids}",
|
|
2057
|
+
"configSync.skippedIds": "这几行工作台自己已有,没动:{ids}",
|
|
2058
|
+
"configSync.nothing": "没有需要同步的内容",
|
|
2059
|
+
"configSync.unreadable": "读不到 {path}:{reason}",
|
|
2060
|
+
"configSync.noSource": "这台机器上只有工作台这一个 profile,没有可同步的来源",
|
|
2061
|
+
"configSync.emptyProviders": "工作台还没有任何模型供应商 —— 去「配置同步」从某个 profile 把 llm- 那几行搬过来,或自己去「模型」里配。",
|
|
2062
|
+
"configSync.failed": "同步没成功,再试一次。"
|
|
1987
2063
|
};
|
|
1988
2064
|
//#endregion
|
|
1989
2065
|
//#region ../shared/dist/i18n/index.js
|
|
@@ -2806,6 +2882,38 @@ function holdBack(installed, roster, active, previous) {
|
|
|
2806
2882
|
const fresh = previous === null ? [] : pending.filter((unit) => !previous.has(unit));
|
|
2807
2883
|
return pending.filter((unit) => active.has(unit) || fresh.includes(unit));
|
|
2808
2884
|
}
|
|
2885
|
+
var WORKBENCH_SWAP_MS = 18e4;
|
|
2886
|
+
function swapLanded(until, installed) {
|
|
2887
|
+
return until !== void 0 && installed === until;
|
|
2888
|
+
}
|
|
2889
|
+
function swapUntil(action, application, latest) {
|
|
2890
|
+
if (action !== "update-workbench" || application !== "restart-required") return void 0;
|
|
2891
|
+
return latest;
|
|
2892
|
+
}
|
|
2893
|
+
var READ_BACK_ACTIONS = /* @__PURE__ */ new Set(["update", "update-bundle"]);
|
|
2894
|
+
function awaitsReadBack(action, application, version) {
|
|
2895
|
+
return application === "applied" && version !== void 0 && READ_BACK_ACTIONS.has(action);
|
|
2896
|
+
}
|
|
2897
|
+
function readBackDone(input) {
|
|
2898
|
+
if (input.action === "update") return !input.outdated;
|
|
2899
|
+
if (input.entry === void 0 || input.entry.local === true || input.entry.latest === void 0) return true;
|
|
2900
|
+
if (input.entry.latest === input.entry.installed) return true;
|
|
2901
|
+
if (input.clicked === void 0) return true;
|
|
2902
|
+
return input.entry.installed !== input.clicked;
|
|
2903
|
+
}
|
|
2904
|
+
function settleLanded(input) {
|
|
2905
|
+
if (input.until !== void 0) return swapLanded(input.until, input.installed);
|
|
2906
|
+
if (input.readBack !== true) return true;
|
|
2907
|
+
return readBackDone({
|
|
2908
|
+
action: input.action,
|
|
2909
|
+
entry: input.entry,
|
|
2910
|
+
clicked: input.clicked,
|
|
2911
|
+
outdated: input.outdated
|
|
2912
|
+
});
|
|
2913
|
+
}
|
|
2914
|
+
function holdWindowMs(until) {
|
|
2915
|
+
return until === void 0 ? MODULE_SETTLE_MS : WORKBENCH_SWAP_MS;
|
|
2916
|
+
}
|
|
2809
2917
|
//#endregion
|
|
2810
2918
|
//#region src/app/layouts/rightbar/market-installed-mock.ts
|
|
2811
2919
|
function installedMocks(input) {
|
|
@@ -3938,6 +4046,7 @@ function workbenchRow(version) {
|
|
|
3938
4046
|
key: "panels.market.workbenchLocal",
|
|
3939
4047
|
params: {}
|
|
3940
4048
|
} : void 0;
|
|
4049
|
+
const stale = !local && version.running !== void 0 && version.running !== version.installed;
|
|
3941
4050
|
return {
|
|
3942
4051
|
id: WORKBENCH_ROW_ID,
|
|
3943
4052
|
titleKey: WORKBENCH_TITLE_KEY,
|
|
@@ -3947,6 +4056,7 @@ function workbenchRow(version) {
|
|
|
3947
4056
|
canUpdate: update !== void 0,
|
|
3948
4057
|
canUninstall: false,
|
|
3949
4058
|
...note === void 0 ? {} : { note },
|
|
4059
|
+
...stale ? { hint: "panels.market.moduleRestartHint" } : {},
|
|
3950
4060
|
version: {
|
|
3951
4061
|
installed: version.installed,
|
|
3952
4062
|
...latest === void 0 ? {} : { latest }
|
|
@@ -4009,6 +4119,10 @@ function mergeTitles(known, manifests) {
|
|
|
4009
4119
|
}
|
|
4010
4120
|
return next ?? known;
|
|
4011
4121
|
}
|
|
4122
|
+
function installedIdSet(installed) {
|
|
4123
|
+
if (installed === void 0) return null;
|
|
4124
|
+
return new Set(installed.map((item) => item.unit));
|
|
4125
|
+
}
|
|
4012
4126
|
function installedRows(modules, manifests, listed, known, defaults = /* @__PURE__ */ new Set(), changed = {}) {
|
|
4013
4127
|
const titles = new Map(manifests.map((manifest) => [manifest.id, manifest.card?.titleKey]));
|
|
4014
4128
|
const rows = [];
|
|
@@ -4071,6 +4185,9 @@ function isOutdated(capability) {
|
|
|
4071
4185
|
if (capability === void 0) return false;
|
|
4072
4186
|
return capability.status === "missing-commands";
|
|
4073
4187
|
}
|
|
4188
|
+
function capabilityOutdated(capabilities, unit) {
|
|
4189
|
+
return isOutdated(capabilities?.[unit]);
|
|
4190
|
+
}
|
|
4074
4191
|
function envNameOf(source) {
|
|
4075
4192
|
if (source === void 0) return "";
|
|
4076
4193
|
if (source.kind === "local") return source.env;
|
|
@@ -4132,6 +4249,12 @@ function marketHintVisible(manifests, capabilities, modules, workbench) {
|
|
|
4132
4249
|
const self = workbenchRow(workbench);
|
|
4133
4250
|
return marketHasUpdates([...marketRows(manifests, capabilities, marketUpdatesOf(modules)), ...self === void 0 ? [] : [self]], sharedRows(manifests, capabilities));
|
|
4134
4251
|
}
|
|
4252
|
+
function marketOrder(rows, titleOf) {
|
|
4253
|
+
return [...rows].sort((left, right) => {
|
|
4254
|
+
const byTitle = titleOf(left).localeCompare(titleOf(right), "zh-Hans-CN");
|
|
4255
|
+
return byTitle === 0 ? left.id.localeCompare(right.id) : byTitle;
|
|
4256
|
+
});
|
|
4257
|
+
}
|
|
4135
4258
|
function marketSections(rows) {
|
|
4136
4259
|
const installed = rows.filter((row) => isOnMachine(row.state));
|
|
4137
4260
|
const rest = rows.filter((row) => !isOnMachine(row.state));
|
|
@@ -4269,6 +4392,74 @@ function useVisibleBusy(active, floorMs) {
|
|
|
4269
4392
|
return busyView(active, visible);
|
|
4270
4393
|
}
|
|
4271
4394
|
//#endregion
|
|
4395
|
+
//#region src/app/layouts/rightbar/market-settle-hold.ts
|
|
4396
|
+
function useSettleHold(input) {
|
|
4397
|
+
const { pending, landed, t, onChanged, setPending, setFailed } = input;
|
|
4398
|
+
const until = pending?.until;
|
|
4399
|
+
const id = pending?.id ?? "";
|
|
4400
|
+
const watching = pending !== null && (pending.until !== void 0 || pending.readBack === true);
|
|
4401
|
+
const sinceRef = useRef(0);
|
|
4402
|
+
useEffect(() => {
|
|
4403
|
+
if (!watching || !landed) return;
|
|
4404
|
+
setPending(null);
|
|
4405
|
+
}, [
|
|
4406
|
+
watching,
|
|
4407
|
+
landed,
|
|
4408
|
+
setPending
|
|
4409
|
+
]);
|
|
4410
|
+
useEffect(() => {
|
|
4411
|
+
if (!watching) {
|
|
4412
|
+
sinceRef.current = 0;
|
|
4413
|
+
return;
|
|
4414
|
+
}
|
|
4415
|
+
if (sinceRef.current === 0) sinceRef.current = Date.now();
|
|
4416
|
+
const deadline = sinceRef.current + holdWindowMs(until);
|
|
4417
|
+
const tick = window.setInterval(() => {
|
|
4418
|
+
onChanged();
|
|
4419
|
+
if (Date.now() < deadline) return;
|
|
4420
|
+
window.clearInterval(tick);
|
|
4421
|
+
setPending(null);
|
|
4422
|
+
setFailed({
|
|
4423
|
+
id,
|
|
4424
|
+
message: t("panels.market.swapSlow")
|
|
4425
|
+
});
|
|
4426
|
+
}, 800);
|
|
4427
|
+
return () => window.clearInterval(tick);
|
|
4428
|
+
}, [
|
|
4429
|
+
watching,
|
|
4430
|
+
landed,
|
|
4431
|
+
until,
|
|
4432
|
+
id,
|
|
4433
|
+
onChanged,
|
|
4434
|
+
setPending,
|
|
4435
|
+
setFailed,
|
|
4436
|
+
t
|
|
4437
|
+
]);
|
|
4438
|
+
}
|
|
4439
|
+
//#endregion
|
|
4440
|
+
//#region src/app/layouts/rightbar/market-transient-state.ts
|
|
4441
|
+
function useMarketTransient(input) {
|
|
4442
|
+
const { mock, onPending } = input;
|
|
4443
|
+
const [pending, setPending] = useState(mock?.pending ?? null);
|
|
4444
|
+
const [confirming, setConfirming] = useState(mock?.confirming ?? null);
|
|
4445
|
+
const [failed, setFailed] = useState(mock?.failure ?? null);
|
|
4446
|
+
const [notice, setNotice] = useState(mock?.notice ?? null);
|
|
4447
|
+
useEffect(() => {
|
|
4448
|
+
onPending?.(pending !== null);
|
|
4449
|
+
return () => onPending?.(false);
|
|
4450
|
+
}, [pending, onPending]);
|
|
4451
|
+
return {
|
|
4452
|
+
pending,
|
|
4453
|
+
setPending,
|
|
4454
|
+
confirming,
|
|
4455
|
+
setConfirming,
|
|
4456
|
+
failed,
|
|
4457
|
+
setFailed,
|
|
4458
|
+
notice,
|
|
4459
|
+
setNotice
|
|
4460
|
+
};
|
|
4461
|
+
}
|
|
4462
|
+
//#endregion
|
|
4272
4463
|
//#region src/app/layouts/rightbar/market-plugin-rows.ts
|
|
4273
4464
|
function installedPluginKept(value) {
|
|
4274
4465
|
if (typeof value !== "object" || value === null) return void 0;
|
|
@@ -4431,6 +4622,80 @@ var ACTION_LABEL_KEY = {
|
|
|
4431
4622
|
"uninstall-plugin": "panels.market.uninstall",
|
|
4432
4623
|
"update-workbench": "panels.market.update"
|
|
4433
4624
|
};
|
|
4625
|
+
function holdOf(pending, application) {
|
|
4626
|
+
if (pending === null || pending.row === void 0) return void 0;
|
|
4627
|
+
if (application !== "applied") return void 0;
|
|
4628
|
+
return {
|
|
4629
|
+
id: pending.id,
|
|
4630
|
+
row: pending.row
|
|
4631
|
+
};
|
|
4632
|
+
}
|
|
4633
|
+
function pendingLanded(pending, updates, capabilities, installed) {
|
|
4634
|
+
if (pending === null) return true;
|
|
4635
|
+
return settleLanded({
|
|
4636
|
+
action: pending.action,
|
|
4637
|
+
until: pending.until,
|
|
4638
|
+
readBack: pending.readBack,
|
|
4639
|
+
installed,
|
|
4640
|
+
entry: updates[pending.id],
|
|
4641
|
+
clicked: pending.version,
|
|
4642
|
+
outdated: capabilityOutdated(capabilities, pending.id)
|
|
4643
|
+
});
|
|
4644
|
+
}
|
|
4645
|
+
function holdExpired(held, backInRoster, elapsedMs) {
|
|
4646
|
+
if (held === void 0) return true;
|
|
4647
|
+
return backInRoster || elapsedMs >= 15e3;
|
|
4648
|
+
}
|
|
4649
|
+
function heldIdOf(pending, held) {
|
|
4650
|
+
return pending?.id ?? held?.id ?? null;
|
|
4651
|
+
}
|
|
4652
|
+
function pinnedRowOf(pending, held) {
|
|
4653
|
+
return pending?.row ?? held?.row;
|
|
4654
|
+
}
|
|
4655
|
+
function withPinnedRow(rows, pinned) {
|
|
4656
|
+
if (pinned === void 0) return [...rows];
|
|
4657
|
+
if (!rows.some((row) => row.id === pinned.id)) return [...rows, pinned];
|
|
4658
|
+
return rows.map((row) => row.id === pinned.id ? pinned : row);
|
|
4659
|
+
}
|
|
4660
|
+
function marketFootVisible(shown, installed) {
|
|
4661
|
+
return shown.length > 0 || installed.length > 0;
|
|
4662
|
+
}
|
|
4663
|
+
function useMarketTitles(manifests, mocked) {
|
|
4664
|
+
const [titles, setTitles] = useState(/* @__PURE__ */ new Map());
|
|
4665
|
+
useEffect(() => {
|
|
4666
|
+
if (!mocked) setTitles((known) => mergeTitles(known, manifests));
|
|
4667
|
+
}, [manifests, mocked]);
|
|
4668
|
+
return titles;
|
|
4669
|
+
}
|
|
4670
|
+
function useHeldRow(pending, backInRoster) {
|
|
4671
|
+
const [held, setHeld] = useState(void 0);
|
|
4672
|
+
const heldAtRef = useRef(0);
|
|
4673
|
+
const hold = useCallback((next) => {
|
|
4674
|
+
if (next !== void 0) heldAtRef.current = Date.now();
|
|
4675
|
+
setHeld(next);
|
|
4676
|
+
}, []);
|
|
4677
|
+
const back = held === void 0 ? false : backInRoster(held.id);
|
|
4678
|
+
useEffect(() => {
|
|
4679
|
+
if (held === void 0) return;
|
|
4680
|
+
if (holdExpired(held, back, Date.now() - heldAtRef.current)) {
|
|
4681
|
+
setHeld(void 0);
|
|
4682
|
+
return;
|
|
4683
|
+
}
|
|
4684
|
+
const timer = setTimeout(() => setHeld(void 0), MODULE_SETTLE_MS);
|
|
4685
|
+
return () => clearTimeout(timer);
|
|
4686
|
+
}, [held, back]);
|
|
4687
|
+
useEffect(() => {
|
|
4688
|
+
if (pending !== null) setHeld(void 0);
|
|
4689
|
+
}, [pending]);
|
|
4690
|
+
return {
|
|
4691
|
+
held,
|
|
4692
|
+
hold
|
|
4693
|
+
};
|
|
4694
|
+
}
|
|
4695
|
+
function removingIdOf(pending, failed) {
|
|
4696
|
+
if (pending === null || pending.action !== "remove-bundle") return null;
|
|
4697
|
+
return failed?.id === pending.id ? null : pending.id;
|
|
4698
|
+
}
|
|
4434
4699
|
function pendingRowOf(input) {
|
|
4435
4700
|
const { pending, removing } = input;
|
|
4436
4701
|
if (removing === null || pending === null) return void 0;
|
|
@@ -4827,18 +5092,21 @@ function changeFailure(change, t) {
|
|
|
4827
5092
|
}
|
|
4828
5093
|
//#endregion
|
|
4829
5094
|
//#region src/app/layouts/rightbar/market-act.ts
|
|
5095
|
+
var STEADY_ACTIONS = /* @__PURE__ */ new Set(["update", "update-bundle"]);
|
|
4830
5096
|
function marketActOf(options) {
|
|
4831
5097
|
const { t, mocked, rowOf, seats, send, onChanged } = options;
|
|
4832
5098
|
return async (id, action) => {
|
|
4833
5099
|
if (mocked) return;
|
|
4834
5100
|
const row = rowOf(id);
|
|
4835
|
-
|
|
5101
|
+
const next = {
|
|
4836
5102
|
id,
|
|
4837
5103
|
action,
|
|
4838
5104
|
...row?.titleKey === void 0 ? {} : { titleKey: row.titleKey },
|
|
4839
5105
|
...row?.pkg === void 0 ? {} : { pkg: row.pkg },
|
|
4840
|
-
...row?.version?.installed === void 0 ? {} : { version: row.version.installed }
|
|
4841
|
-
|
|
5106
|
+
...row?.version?.installed === void 0 ? {} : { version: row.version.installed },
|
|
5107
|
+
...row === void 0 || !STEADY_ACTIONS.has(action) ? {} : { row }
|
|
5108
|
+
};
|
|
5109
|
+
seats.setPending(next);
|
|
4842
5110
|
seats.setConfirming(null);
|
|
4843
5111
|
seats.setFailed(null);
|
|
4844
5112
|
if (action !== "uninstall-plugin") seats.setNotice(null);
|
|
@@ -4852,8 +5120,9 @@ function marketActOf(options) {
|
|
|
4852
5120
|
action,
|
|
4853
5121
|
unit: id
|
|
4854
5122
|
});
|
|
4855
|
-
seats.setPending(null);
|
|
4856
5123
|
if (!outcome.ok) {
|
|
5124
|
+
seats.setPending(null);
|
|
5125
|
+
seats.setHeld(void 0);
|
|
4857
5126
|
onChanged();
|
|
4858
5127
|
seats.setFailed({
|
|
4859
5128
|
id,
|
|
@@ -4861,8 +5130,17 @@ function marketActOf(options) {
|
|
|
4861
5130
|
});
|
|
4862
5131
|
return;
|
|
4863
5132
|
}
|
|
5133
|
+
const change = changeOf(outcome.value);
|
|
5134
|
+
const until = swapUntil(action, change?.application, row?.version?.latest);
|
|
5135
|
+
const readBack = awaitsReadBack(action, change?.application, next.version);
|
|
5136
|
+
seats.setPending(until === void 0 && !readBack ? null : {
|
|
5137
|
+
...next,
|
|
5138
|
+
...until === void 0 ? {} : { until },
|
|
5139
|
+
...readBack ? { readBack: true } : {}
|
|
5140
|
+
});
|
|
5141
|
+
seats.setHeld(readBack ? void 0 : holdOf(next, change?.application));
|
|
4864
5142
|
if (action === "uninstall-plugin") seats.setNotice(installedPluginNotice(outcome.value, t));
|
|
4865
|
-
const reason = changeFailure(
|
|
5143
|
+
const reason = changeFailure(change, t);
|
|
4866
5144
|
onChanged();
|
|
4867
5145
|
if (reason !== void 0) seats.setFailed({
|
|
4868
5146
|
id,
|
|
@@ -4905,6 +5183,7 @@ function ConfirmUninstall({ t, name, onConfirm, onCancel }) {
|
|
|
4905
5183
|
}
|
|
4906
5184
|
function MarketBody({ t, self, shown, pluginList, installedList, shared, pending, failed, notice, act, onConfirming, setDefault, boardBusy }) {
|
|
4907
5185
|
const failureOf = (id) => failed?.id === id ? failed.message : null;
|
|
5186
|
+
const foot = marketFootVisible(shown, installedList);
|
|
4908
5187
|
return /* @__PURE__ */ h(Fragment, null, notice === null ? null : /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketNote }, notice), /* @__PURE__ */ h(MarketSection, {
|
|
4909
5188
|
t,
|
|
4910
5189
|
rows: self === void 0 ? [] : [self],
|
|
@@ -4918,7 +5197,7 @@ function MarketBody({ t, self, shown, pluginList, installedList, shared, pending
|
|
|
4918
5197
|
}), self === void 0 ? null : /* @__PURE__ */ h("div", {
|
|
4919
5198
|
className: MarketPage_module_default.marketSelfDivider,
|
|
4920
5199
|
"aria-hidden": "true"
|
|
4921
|
-
}), marketSections([...shown, ...installedList]).map((section) => /* @__PURE__ */ h(MarketSection, {
|
|
5200
|
+
}), marketSections(marketOrder([...shown, ...installedList], (row) => marketRowTitle(row, t))).map((section) => /* @__PURE__ */ h(MarketSection, {
|
|
4922
5201
|
key: section.id,
|
|
4923
5202
|
t,
|
|
4924
5203
|
titleKey: section.titleKey,
|
|
@@ -4943,10 +5222,10 @@ function MarketBody({ t, self, shown, pluginList, installedList, shared, pending
|
|
|
4943
5222
|
act,
|
|
4944
5223
|
confirmActions: CONFIRM_UNINSTALL,
|
|
4945
5224
|
onConfirming
|
|
4946
|
-
}), /* @__PURE__ */ h(PanelFoot, {
|
|
5225
|
+
}), foot ? /* @__PURE__ */ h(PanelFoot, {
|
|
4947
5226
|
size: "md",
|
|
4948
5227
|
text: t("panels.market.foot")
|
|
4949
|
-
}), /* @__PURE__ */ h(SharedSection, {
|
|
5228
|
+
}) : null, /* @__PURE__ */ h(SharedSection, {
|
|
4950
5229
|
t,
|
|
4951
5230
|
rows: shared,
|
|
4952
5231
|
pending,
|
|
@@ -4955,22 +5234,19 @@ function MarketBody({ t, self, shown, pluginList, installedList, shared, pending
|
|
|
4955
5234
|
}));
|
|
4956
5235
|
}
|
|
4957
5236
|
function MarketView({ t, manifests, installable, capabilities, freshness, onChanged, onPending, updates, installed, installedRead, workbench, plugins, settling, mock, defaults = [], changed = {} }) {
|
|
4958
|
-
const
|
|
4959
|
-
useEffect(() => {
|
|
4960
|
-
if (mock === void 0) setTitles((known) => mergeTitles(known, manifests));
|
|
4961
|
-
}, [manifests, mock]);
|
|
5237
|
+
const titles = useMarketTitles(manifests, mock !== void 0);
|
|
4962
5238
|
const catalog = mock?.manifests ?? manifests;
|
|
4963
5239
|
const marketable = mock === void 0 ? marketCatalog(manifests, installable) : catalog;
|
|
4964
5240
|
const effective = mock === void 0 ? capabilities : mock.capabilities;
|
|
4965
|
-
const source = liveManifests(marketable, effective, mock === void 0
|
|
5241
|
+
const source = liveManifests(marketable, effective, installedIdSet(mock === void 0 ? installed : void 0));
|
|
4966
5242
|
const byDefault = new Set(defaults);
|
|
4967
|
-
const
|
|
5243
|
+
const updateMap = mock?.updates ?? updates ?? {};
|
|
5244
|
+
const rows = marketRows(source, effective, updateMap, byDefault, changed);
|
|
4968
5245
|
const shared = sharedRows(source, effective);
|
|
4969
|
-
const
|
|
4970
|
-
|
|
4971
|
-
onPending
|
|
4972
|
-
|
|
4973
|
-
}, [pending, onPending]);
|
|
5246
|
+
const { pending, setPending, confirming, setConfirming, failed, setFailed, notice, setNotice } = useMarketTransient({
|
|
5247
|
+
mock,
|
|
5248
|
+
onPending
|
|
5249
|
+
});
|
|
4974
5250
|
const provision = useHostWrite({
|
|
4975
5251
|
channel: "provision",
|
|
4976
5252
|
networkText: t("panels.failed")
|
|
@@ -4998,19 +5274,19 @@ function MarketView({ t, manifests, installable, capabilities, freshness, onChan
|
|
|
4998
5274
|
setNotice(t("panels.failed"));
|
|
4999
5275
|
}
|
|
5000
5276
|
};
|
|
5001
|
-
const
|
|
5002
|
-
const
|
|
5003
|
-
const
|
|
5004
|
-
const
|
|
5005
|
-
const installedList = installedRows((mock?.installed ?? installed ?? []).filter((module) => !(settling?.has(module.unit) ?? false) && module.unit !== removing), catalog, new Set(rows.map((row) => row.id)), titles, byDefault, changed);
|
|
5277
|
+
const removing = removingIdOf(pending, failed);
|
|
5278
|
+
const steady = useHeldRow(pending, (id) => catalog.some((manifest) => manifest.id === id));
|
|
5279
|
+
const pinned = pinnedRowOf(pending, steady.held);
|
|
5280
|
+
const installedList = installedRows((mock?.installed ?? installed ?? []).filter((module) => module.unit !== pinned?.id && (!(settling?.has(module.unit) ?? false) || module.unit === heldIdOf(pending, steady.held)) && module.unit !== removing), catalog, new Set(rows.map((row) => row.id)), titles, byDefault, changed);
|
|
5006
5281
|
const pendingRow = pendingRowOf({
|
|
5007
5282
|
pending,
|
|
5008
5283
|
removing,
|
|
5009
5284
|
rows,
|
|
5010
5285
|
titles
|
|
5011
5286
|
});
|
|
5012
|
-
const
|
|
5013
|
-
const
|
|
5287
|
+
const selfRow = workbenchRow(mock === void 0 ? workbench : mock.workbench);
|
|
5288
|
+
const shown = withPinnedRow(pendingRow === void 0 ? rows : [...rows, pendingRow], pinned);
|
|
5289
|
+
const self = selfRow;
|
|
5014
5290
|
const pluginList = installedPluginRows(mock?.plugins ?? plugins ?? [], byDefault, changed);
|
|
5015
5291
|
const rowById = new Map([
|
|
5016
5292
|
...shown,
|
|
@@ -5019,19 +5295,29 @@ function MarketView({ t, manifests, installable, capabilities, freshness, onChan
|
|
|
5019
5295
|
...pluginList
|
|
5020
5296
|
].map((row) => [row.id, row]));
|
|
5021
5297
|
const confirmingRow = confirming === null ? void 0 : rowById.get(confirming);
|
|
5298
|
+
const seats = {
|
|
5299
|
+
setPending,
|
|
5300
|
+
setHeld: steady.hold,
|
|
5301
|
+
setConfirming,
|
|
5302
|
+
setFailed,
|
|
5303
|
+
setNotice
|
|
5304
|
+
};
|
|
5022
5305
|
const act = marketActOf({
|
|
5023
5306
|
t,
|
|
5024
5307
|
mocked: mock !== void 0,
|
|
5025
5308
|
rowOf: (id) => rowById.get(id),
|
|
5026
|
-
seats
|
|
5027
|
-
setPending,
|
|
5028
|
-
setConfirming,
|
|
5029
|
-
setFailed,
|
|
5030
|
-
setNotice
|
|
5031
|
-
},
|
|
5309
|
+
seats,
|
|
5032
5310
|
send: (body) => provision.send(body),
|
|
5033
5311
|
onChanged
|
|
5034
5312
|
});
|
|
5313
|
+
useSettleHold({
|
|
5314
|
+
pending,
|
|
5315
|
+
landed: pendingLanded(pending, updateMap, effective, workbench?.installed),
|
|
5316
|
+
t,
|
|
5317
|
+
onChanged,
|
|
5318
|
+
setPending,
|
|
5319
|
+
setFailed
|
|
5320
|
+
});
|
|
5035
5321
|
const settled = marketSettled(freshness, installedRead);
|
|
5036
5322
|
const nothing = shown.length === 0 && self === void 0 && installedList.length === 0 && pluginList.length === 0;
|
|
5037
5323
|
if (!settled || (settling?.size ?? 0) > 0 && shown.length === 0 && installedList.length === 0) return /* @__PURE__ */ h(MarketChecking, { t });
|
|
@@ -5147,6 +5433,12 @@ function currentSessionId(list, panelActive) {
|
|
|
5147
5433
|
if (panelActive) return void 0;
|
|
5148
5434
|
return Object.values(list.byId).find((session) => (session.retainedBy?.mainView ?? 0) > 0)?.id;
|
|
5149
5435
|
}
|
|
5436
|
+
function orderByRecency(rows) {
|
|
5437
|
+
return [...rows].sort((left, right) => {
|
|
5438
|
+
if (left.updatedAt !== right.updatedAt) return right.updatedAt - left.updatedAt;
|
|
5439
|
+
return left.id < right.id ? -1 : 1;
|
|
5440
|
+
});
|
|
5441
|
+
}
|
|
5150
5442
|
function orderSessionRows(rows, pinnedIds, archivedIds) {
|
|
5151
5443
|
const placeholders = [];
|
|
5152
5444
|
const leading = [];
|
|
@@ -5173,7 +5465,7 @@ function sessionRows(workspaceSessionIds, list, archivedIds, current) {
|
|
|
5173
5465
|
if (row.blank && row.id !== current) continue;
|
|
5174
5466
|
rows.push(row);
|
|
5175
5467
|
}
|
|
5176
|
-
return rows;
|
|
5468
|
+
return orderByRecency(rows);
|
|
5177
5469
|
}
|
|
5178
5470
|
//#endregion
|
|
5179
5471
|
//#region src/modules/sessions/model/scroll-edges.ts
|
|
@@ -6351,134 +6643,576 @@ function registerMarketPanel(ctx, units) {
|
|
|
6351
6643
|
}, MarketPanel));
|
|
6352
6644
|
}
|
|
6353
6645
|
//#endregion
|
|
6354
|
-
//#region src/shared/api/
|
|
6355
|
-
var
|
|
6356
|
-
var
|
|
6357
|
-
var WORKSHOP_TITLE = "工作台DIY";
|
|
6358
|
-
var WORKSHOP_PAST_TITLES = ["DIY 工坊", "工作台自带 · DIY 模块住这儿"];
|
|
6359
|
-
function isWorkshopPath(path) {
|
|
6360
|
-
return path.replace(/\\/g, "/").replace(/\/+$/, "").endsWith(`/${WORKSHOP_RELATIVE}`);
|
|
6361
|
-
}
|
|
6646
|
+
//#region src/shared/api/config-sync.ts
|
|
6647
|
+
var CONFIG_SYNC_ROUTE = "config-sync";
|
|
6648
|
+
var CONFIG_SYNC_RESOURCE = "configSync";
|
|
6362
6649
|
//#endregion
|
|
6363
|
-
//#region src/
|
|
6364
|
-
var
|
|
6365
|
-
|
|
6366
|
-
|
|
6650
|
+
//#region src/shared/hooks/panel-state-report.ts
|
|
6651
|
+
var FLUSH_MS = 400;
|
|
6652
|
+
var workspace = null;
|
|
6653
|
+
var timer = null;
|
|
6654
|
+
var pending = /* @__PURE__ */ new Map();
|
|
6655
|
+
function unitOfRoute(route) {
|
|
6656
|
+
const cut = route.indexOf("/");
|
|
6657
|
+
return cut <= 0 ? null : route.slice(0, cut);
|
|
6367
6658
|
}
|
|
6368
|
-
|
|
6369
|
-
|
|
6370
|
-
|
|
6371
|
-
|
|
6372
|
-
|
|
6373
|
-
function createUnitManifestLoader(options = {}) {
|
|
6374
|
-
let inFlight = false;
|
|
6375
|
-
let queued = false;
|
|
6376
|
-
let watching = false;
|
|
6377
|
-
const subscribeFacts = options.subscribeFacts ?? subscribeFactRevision;
|
|
6378
|
-
const load = async (registry) => {
|
|
6379
|
-
if (inFlight) {
|
|
6380
|
-
queued = true;
|
|
6381
|
-
return;
|
|
6382
|
-
}
|
|
6383
|
-
inFlight = true;
|
|
6384
|
-
try {
|
|
6385
|
-
const response = await apiGet(UNIT_MANIFESTS_ROUTE).catch(() => null);
|
|
6386
|
-
if (response?.ok === true && Array.isArray(response.manifests)) registry.setManifests(response.manifests, Array.isArray(response.installable) ? response.installable : void 0);
|
|
6387
|
-
} finally {
|
|
6388
|
-
inFlight = false;
|
|
6389
|
-
if (queued) {
|
|
6390
|
-
queued = false;
|
|
6391
|
-
load(registry);
|
|
6392
|
-
}
|
|
6393
|
-
}
|
|
6394
|
-
};
|
|
6395
|
-
return (registry) => {
|
|
6396
|
-
if (!watching) {
|
|
6397
|
-
watching = true;
|
|
6398
|
-
subscribeFacts(factOfRoute(UNIT_MANIFESTS_ROUTE), () => void load(registry));
|
|
6399
|
-
}
|
|
6400
|
-
load(registry);
|
|
6401
|
-
};
|
|
6659
|
+
function setPanelWorkspace(path) {
|
|
6660
|
+
if (path === workspace) return;
|
|
6661
|
+
const previous = workspace;
|
|
6662
|
+
workspace = path;
|
|
6663
|
+
if (previous !== null) pending.clear();
|
|
6402
6664
|
}
|
|
6403
|
-
|
|
6404
|
-
|
|
6405
|
-
|
|
6406
|
-
|
|
6407
|
-
|
|
6408
|
-
|
|
6409
|
-
|
|
6410
|
-
|
|
6411
|
-
|
|
6412
|
-
|
|
6413
|
-
steps: "_steps_jlw8j_50",
|
|
6414
|
-
step: "_step_jlw8j_50",
|
|
6415
|
-
mark: "_mark_jlw8j_77",
|
|
6416
|
-
label: "_label_jlw8j_102",
|
|
6417
|
-
detail: "_detail_jlw8j_106",
|
|
6418
|
-
elapsed: "_elapsed_jlw8j_124",
|
|
6419
|
-
error: "_error_jlw8j_132",
|
|
6420
|
-
copy: "_copy_jlw8j_158",
|
|
6421
|
-
command: "_command_jlw8j_3",
|
|
6422
|
-
buttons: "_buttons_jlw8j_191",
|
|
6423
|
-
mockSlot: "_mockSlot_jlw8j_198",
|
|
6424
|
-
button: "_button_jlw8j_191",
|
|
6425
|
-
fixTitle: "_fixTitle_jlw8j_249",
|
|
6426
|
-
rawSummary: "_rawSummary_jlw8j_282",
|
|
6427
|
-
bridgeLines: "_bridgeLines_jlw8j_292",
|
|
6428
|
-
bridgeLine: "_bridgeLine_jlw8j_292",
|
|
6429
|
-
link: "_link_jlw8j_309",
|
|
6430
|
-
loading: "_loading_jlw8j_323",
|
|
6431
|
-
loadingMotion: "_loadingMotion_jlw8j_332",
|
|
6432
|
-
"wb-spin": "_wb-spin_jlw8j_1",
|
|
6433
|
-
loadingTrack: "_loadingTrack_jlw8j_337",
|
|
6434
|
-
loadingArc: "_loadingArc_jlw8j_338",
|
|
6435
|
-
"wb-dash": "_wb-dash_jlw8j_1"
|
|
6436
|
-
};
|
|
6437
|
-
//#endregion
|
|
6438
|
-
//#region src/app/layouts/env-gate/gate-text.ts
|
|
6439
|
-
function failedStepText(guidance, t) {
|
|
6440
|
-
if (guidance === "path") return t("env.stepFailed.path");
|
|
6441
|
-
if (guidance === "shell") return t("env.stepFailed.shell");
|
|
6442
|
-
return t("env.stepFailed.install");
|
|
6665
|
+
function reportPanelRead(input) {
|
|
6666
|
+
pending.set(`${input.unit}\u0000${input.route}`, {
|
|
6667
|
+
unit: input.unit,
|
|
6668
|
+
route: input.route,
|
|
6669
|
+
phase: input.phase,
|
|
6670
|
+
at: Date.now(),
|
|
6671
|
+
...input.error === void 0 ? {} : { error: input.error }
|
|
6672
|
+
});
|
|
6673
|
+
if (timer !== null) return;
|
|
6674
|
+
timer = setTimeout(flush, FLUSH_MS);
|
|
6443
6675
|
}
|
|
6444
|
-
function
|
|
6445
|
-
|
|
6446
|
-
if (
|
|
6447
|
-
|
|
6448
|
-
|
|
6449
|
-
|
|
6450
|
-
|
|
6451
|
-
|
|
6452
|
-
|
|
6453
|
-
}
|
|
6454
|
-
return step.detail ?? "";
|
|
6676
|
+
function reportPanelCrash(input) {
|
|
6677
|
+
const target = workspace;
|
|
6678
|
+
if (target === null) return;
|
|
6679
|
+
apiPost(`${PANEL_STATE_PATH}/crash`, {
|
|
6680
|
+
workspace: target,
|
|
6681
|
+
unit: input.unit,
|
|
6682
|
+
reason: input.reason,
|
|
6683
|
+
at: Date.now()
|
|
6684
|
+
}).catch(() => void 0);
|
|
6455
6685
|
}
|
|
6456
|
-
|
|
6457
|
-
|
|
6458
|
-
|
|
6459
|
-
|
|
6460
|
-
|
|
6461
|
-
|
|
6462
|
-
|
|
6463
|
-
|
|
6464
|
-
|
|
6465
|
-
};
|
|
6466
|
-
if (issue === "profile") return { textKey: "env.bridge.profile" };
|
|
6467
|
-
if (issue === "stale") return { textKey: "env.bridge.stale" };
|
|
6468
|
-
return { textKey: "env.bridge.unknown" };
|
|
6686
|
+
function flush() {
|
|
6687
|
+
timer = null;
|
|
6688
|
+
const target = workspace;
|
|
6689
|
+
const cards = [...pending.values()];
|
|
6690
|
+
pending.clear();
|
|
6691
|
+
if (target === null || cards.length === 0) return;
|
|
6692
|
+
apiPost(`${PANEL_STATE_PATH}/cards`, {
|
|
6693
|
+
workspace: target,
|
|
6694
|
+
cards
|
|
6695
|
+
}).catch(() => void 0);
|
|
6469
6696
|
}
|
|
6470
6697
|
//#endregion
|
|
6471
|
-
//#region src/
|
|
6472
|
-
|
|
6473
|
-
|
|
6474
|
-
|
|
6475
|
-
|
|
6476
|
-
|
|
6698
|
+
//#region src/shared/hooks/use-api-resource.ts
|
|
6699
|
+
var use_api_resource_exports = /* @__PURE__ */ __exportAll({
|
|
6700
|
+
readKeyOf: () => readKeyOf,
|
|
6701
|
+
requestResource: () => requestResource,
|
|
6702
|
+
resourceIdentity: () => resourceIdentity,
|
|
6703
|
+
useApiResource: () => useApiResource
|
|
6704
|
+
});
|
|
6705
|
+
function resourceIdentity(route, query, override) {
|
|
6706
|
+
return override ?? requestKeyOf(route, query);
|
|
6477
6707
|
}
|
|
6478
|
-
|
|
6479
|
-
|
|
6480
|
-
|
|
6481
|
-
function
|
|
6708
|
+
function readKeyOf(identity, refreshToken, factRev) {
|
|
6709
|
+
return `${identity}@${String(refreshToken)}@${String(factRev)}`;
|
|
6710
|
+
}
|
|
6711
|
+
function requestKeyOf(route, query) {
|
|
6712
|
+
return `${route}?${Object.entries(query).filter(([, value]) => value !== void 0).sort(([a], [b]) => a.localeCompare(b)).map(([key, value]) => `${key}=${String(value)}`).join("&")}`;
|
|
6713
|
+
}
|
|
6714
|
+
var inflight = /* @__PURE__ */ new Map();
|
|
6715
|
+
function requestResource(route, query, key) {
|
|
6716
|
+
const pending = inflight.get(key);
|
|
6717
|
+
if (pending !== void 0) {
|
|
6718
|
+
pending.waiters += 1;
|
|
6719
|
+
return {
|
|
6720
|
+
task: pending.task,
|
|
6721
|
+
release: () => release(key, pending)
|
|
6722
|
+
};
|
|
6723
|
+
}
|
|
6724
|
+
const controller = new AbortController();
|
|
6725
|
+
const entry = {
|
|
6726
|
+
task: apiGet(route, query, { signal: controller.signal }).finally(() => {
|
|
6727
|
+
if (inflight.get(key) === entry) inflight.delete(key);
|
|
6728
|
+
}),
|
|
6729
|
+
controller,
|
|
6730
|
+
waiters: 1
|
|
6731
|
+
};
|
|
6732
|
+
inflight.set(key, entry);
|
|
6733
|
+
return {
|
|
6734
|
+
task: entry.task,
|
|
6735
|
+
release: () => release(key, entry)
|
|
6736
|
+
};
|
|
6737
|
+
}
|
|
6738
|
+
function release(key, entry) {
|
|
6739
|
+
if (inflight.get(key) !== entry) return;
|
|
6740
|
+
entry.waiters -= 1;
|
|
6741
|
+
if (entry.waiters > 0) return;
|
|
6742
|
+
inflight.delete(key);
|
|
6743
|
+
entry.controller.abort();
|
|
6744
|
+
}
|
|
6745
|
+
function useApiResource(route, query, refreshToken, options = {}) {
|
|
6746
|
+
const enabled = options.enabled !== false;
|
|
6747
|
+
const identity = resourceIdentity(route, query, options.key);
|
|
6748
|
+
const factRev = useFactRevision(options.fact ?? factOfRoute(route));
|
|
6749
|
+
const key = readKeyOf(identity, refreshToken, factRev);
|
|
6750
|
+
const [state, setState] = useState(() => enabled ? { phase: "loading" } : { phase: "idle" });
|
|
6751
|
+
const lastIdentity = useRef(null);
|
|
6752
|
+
const queryRef = useRef(query);
|
|
6753
|
+
useEffect(() => {
|
|
6754
|
+
queryRef.current = query;
|
|
6755
|
+
});
|
|
6756
|
+
useEffect(() => {
|
|
6757
|
+
if (!enabled) {
|
|
6758
|
+
lastIdentity.current = null;
|
|
6759
|
+
setState({ phase: "idle" });
|
|
6760
|
+
return;
|
|
6761
|
+
}
|
|
6762
|
+
let cancelled = false;
|
|
6763
|
+
const sameIdentity = lastIdentity.current === identity;
|
|
6764
|
+
lastIdentity.current = identity;
|
|
6765
|
+
setState((prev) => sameIdentity && prev.value !== void 0 ? {
|
|
6766
|
+
phase: "loading",
|
|
6767
|
+
value: prev.value,
|
|
6768
|
+
...prev.at === void 0 ? {} : { at: prev.at }
|
|
6769
|
+
} : { phase: "loading" });
|
|
6770
|
+
const flight = requestResource(route, queryRef.current, key);
|
|
6771
|
+
const owner = unitOfRoute(route);
|
|
6772
|
+
if (owner !== null) reportPanelRead({
|
|
6773
|
+
unit: owner,
|
|
6774
|
+
route,
|
|
6775
|
+
phase: "loading"
|
|
6776
|
+
});
|
|
6777
|
+
flight.task.then((response) => {
|
|
6778
|
+
if (cancelled) return;
|
|
6779
|
+
if (response.ok) {
|
|
6780
|
+
setState({
|
|
6781
|
+
phase: "ready",
|
|
6782
|
+
value: response,
|
|
6783
|
+
at: Date.now()
|
|
6784
|
+
});
|
|
6785
|
+
if (owner !== null) reportPanelRead({
|
|
6786
|
+
unit: owner,
|
|
6787
|
+
route,
|
|
6788
|
+
phase: "ready"
|
|
6789
|
+
});
|
|
6790
|
+
return;
|
|
6791
|
+
}
|
|
6792
|
+
setState({
|
|
6793
|
+
phase: "error",
|
|
6794
|
+
error: response.error
|
|
6795
|
+
});
|
|
6796
|
+
if (owner !== null) reportPanelRead({
|
|
6797
|
+
unit: owner,
|
|
6798
|
+
route,
|
|
6799
|
+
phase: "error",
|
|
6800
|
+
error: {
|
|
6801
|
+
code: response.error.code,
|
|
6802
|
+
message: response.error.message
|
|
6803
|
+
}
|
|
6804
|
+
});
|
|
6805
|
+
}).catch((reason) => {
|
|
6806
|
+
if (cancelled) return;
|
|
6807
|
+
const message = reason instanceof Error ? reason.message : String(reason);
|
|
6808
|
+
setState({
|
|
6809
|
+
phase: "error",
|
|
6810
|
+
error: {
|
|
6811
|
+
code: "network",
|
|
6812
|
+
message
|
|
6813
|
+
}
|
|
6814
|
+
});
|
|
6815
|
+
if (owner !== null) reportPanelRead({
|
|
6816
|
+
unit: owner,
|
|
6817
|
+
route,
|
|
6818
|
+
phase: "error",
|
|
6819
|
+
error: {
|
|
6820
|
+
code: "network",
|
|
6821
|
+
message
|
|
6822
|
+
}
|
|
6823
|
+
});
|
|
6824
|
+
});
|
|
6825
|
+
return () => {
|
|
6826
|
+
cancelled = true;
|
|
6827
|
+
flight.release();
|
|
6828
|
+
};
|
|
6829
|
+
}, [
|
|
6830
|
+
key,
|
|
6831
|
+
identity,
|
|
6832
|
+
route,
|
|
6833
|
+
refreshToken,
|
|
6834
|
+
factRev,
|
|
6835
|
+
enabled,
|
|
6836
|
+
options.fact
|
|
6837
|
+
]);
|
|
6838
|
+
return state;
|
|
6839
|
+
}
|
|
6840
|
+
var ConfigSyncSection_module_default = {
|
|
6841
|
+
body: "_body_lw2ph_1",
|
|
6842
|
+
lead: "_lead_lw2ph_7",
|
|
6843
|
+
sources: "_sources_lw2ph_14",
|
|
6844
|
+
sourcesLabel: "_sourcesLabel_lw2ph_21",
|
|
6845
|
+
sourceOn: "_sourceOn_lw2ph_26",
|
|
6846
|
+
sourceCount: "_sourceCount_lw2ph_29",
|
|
6847
|
+
reading: "_reading_lw2ph_36",
|
|
6848
|
+
status: "_status_lw2ph_42",
|
|
6849
|
+
failure: "_failure_lw2ph_52",
|
|
6850
|
+
failureTitle: "_failureTitle_lw2ph_62",
|
|
6851
|
+
failureHint: "_failureHint_lw2ph_69",
|
|
6852
|
+
failureAction: "_failureAction_lw2ph_74",
|
|
6853
|
+
rows: "_rows_lw2ph_80",
|
|
6854
|
+
row: "_row_lw2ph_80",
|
|
6855
|
+
head: "_head_lw2ph_99",
|
|
6856
|
+
pick: "_pick_lw2ph_106",
|
|
6857
|
+
code: "_code_lw2ph_118",
|
|
6858
|
+
missing: "_missing_lw2ph_123",
|
|
6859
|
+
conflict: "_conflict_lw2ph_124",
|
|
6860
|
+
foot: "_foot_lw2ph_130"
|
|
6861
|
+
};
|
|
6862
|
+
//#endregion
|
|
6863
|
+
//#region src/app/layouts/config-sync/ConfigSyncSection.tsx
|
|
6864
|
+
var AUTO_RETRY_MS = 1200;
|
|
6865
|
+
var DIFF_MAX_LINES = 9;
|
|
6866
|
+
var TAG_KEYS = {
|
|
6867
|
+
new: "configSync.tag.new",
|
|
6868
|
+
differs: "configSync.tag.differs"
|
|
6869
|
+
};
|
|
6870
|
+
function codeToolbarLabels(t) {
|
|
6871
|
+
return {
|
|
6872
|
+
codeLabel: t("configSync.code.lang"),
|
|
6873
|
+
wrapLabel: t("configSync.code.wrap"),
|
|
6874
|
+
unwrapLabel: t("configSync.code.unwrap")
|
|
6875
|
+
};
|
|
6876
|
+
}
|
|
6877
|
+
function diffLabels(t) {
|
|
6878
|
+
return {
|
|
6879
|
+
...codeToolbarLabels(t),
|
|
6880
|
+
copy: t("configSync.code.copy"),
|
|
6881
|
+
copied: t("configSync.code.copied"),
|
|
6882
|
+
collapseAria: t("configSync.code.collapseAria"),
|
|
6883
|
+
expandAria: (hidden) => t("configSync.code.expandAria", { count: hidden }),
|
|
6884
|
+
collapse: t("configSync.code.collapse"),
|
|
6885
|
+
expand: (hidden) => t("configSync.code.expand", { count: hidden })
|
|
6886
|
+
};
|
|
6887
|
+
}
|
|
6888
|
+
function SourcePicker({ t, profiles, source, onPick }) {
|
|
6889
|
+
if (profiles.length === 0) return null;
|
|
6890
|
+
return /* @__PURE__ */ h("div", {
|
|
6891
|
+
className: ConfigSyncSection_module_default.sources,
|
|
6892
|
+
role: "group",
|
|
6893
|
+
"aria-label": t("configSync.source")
|
|
6894
|
+
}, /* @__PURE__ */ h("span", { className: ConfigSyncSection_module_default.sourcesLabel }, t("configSync.source")), profiles.map((profile) => /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
6895
|
+
key: profile.name,
|
|
6896
|
+
variant: profile.name === source ? "outline" : "ghost",
|
|
6897
|
+
size: "sm",
|
|
6898
|
+
className: profile.name === source ? ConfigSyncSection_module_default.sourceOn : void 0,
|
|
6899
|
+
"aria-pressed": profile.name === source,
|
|
6900
|
+
title: profile.readable ? t("configSync.sourceRows", {
|
|
6901
|
+
name: profile.name,
|
|
6902
|
+
count: profile.candidates
|
|
6903
|
+
}) : t("configSync.sourceBroken"),
|
|
6904
|
+
onClick: () => onPick(profile.name)
|
|
6905
|
+
}, profile.name, /* @__PURE__ */ h("span", { className: ConfigSyncSection_module_default.sourceCount }, profile.readable ? profile.candidates : t("configSync.sourceDead")))));
|
|
6906
|
+
}
|
|
6907
|
+
function SourceRows({ t, rows, picked, profile, onToggle }) {
|
|
6908
|
+
return /* @__PURE__ */ h("ul", { className: ConfigSyncSection_module_default.rows }, rows.map((row) => /* @__PURE__ */ h("li", {
|
|
6909
|
+
key: row.key,
|
|
6910
|
+
className: ConfigSyncSection_module_default.row
|
|
6911
|
+
}, /* @__PURE__ */ h("div", { className: ConfigSyncSection_module_default.head }, /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.Checkbox, {
|
|
6912
|
+
checked: picked.includes(row.key),
|
|
6913
|
+
label: row.id,
|
|
6914
|
+
title: row.state === "differs" ? t("configSync.conflictNote") : void 0,
|
|
6915
|
+
className: ConfigSyncSection_module_default.pick,
|
|
6916
|
+
onChange: (next) => onToggle(row.key, next)
|
|
6917
|
+
}), /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.Tag, { tone: row.state === "differs" ? "warning" : "success" }, t(TAG_KEYS[row.state] ?? "configSync.tag.new"))), row.ownBody === null ? /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
|
|
6918
|
+
code: row.body,
|
|
6919
|
+
lang: "yaml",
|
|
6920
|
+
className: ConfigSyncSection_module_default.code,
|
|
6921
|
+
copyLabel: t("configSync.code.copy"),
|
|
6922
|
+
copiedLabel: t("configSync.code.copied"),
|
|
6923
|
+
toolbarLabels: codeToolbarLabels(t)
|
|
6924
|
+
}) : /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.DiffBlock, {
|
|
6925
|
+
diffs: [{
|
|
6926
|
+
path: row.id,
|
|
6927
|
+
oldText: row.ownBody,
|
|
6928
|
+
newText: row.body
|
|
6929
|
+
}],
|
|
6930
|
+
labels: diffLabels(t),
|
|
6931
|
+
maxLines: DIFF_MAX_LINES,
|
|
6932
|
+
className: ConfigSyncSection_module_default.code
|
|
6933
|
+
}), row.missing.map((pkg) => /* @__PURE__ */ h("span", {
|
|
6934
|
+
key: pkg,
|
|
6935
|
+
className: ConfigSyncSection_module_default.missing
|
|
6936
|
+
}, t("configSync.missing", {
|
|
6937
|
+
pkg,
|
|
6938
|
+
profile
|
|
6939
|
+
}))), row.state === "differs" && picked.includes(row.key) ? /* @__PURE__ */ h("span", { className: ConfigSyncSection_module_default.conflict }, t("configSync.conflictNote")) : null)));
|
|
6940
|
+
}
|
|
6941
|
+
function AppliedRows({ t, applied }) {
|
|
6942
|
+
return /* @__PURE__ */ h(Note, null, t("configSync.applied"), applied.written.length === 0 ? "" : ` · ${t("configSync.appliedIds", { ids: applied.written.join("、") })}`, applied.skipped.length === 0 ? "" : ` · ${t("configSync.skippedIds", { ids: applied.skipped.join("、") })}`);
|
|
6943
|
+
}
|
|
6944
|
+
function ReadingRow({ t }) {
|
|
6945
|
+
return /* @__PURE__ */ h("div", { className: ConfigSyncSection_module_default.reading }, /* @__PURE__ */ h("p", {
|
|
6946
|
+
className: ConfigSyncSection_module_default.status,
|
|
6947
|
+
role: "status"
|
|
6948
|
+
}, /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.StateDot, { state: "ongoing" }), t("configSync.loading")), /* @__PURE__ */ h(SkeletonRows, { rows: 3 }));
|
|
6949
|
+
}
|
|
6950
|
+
function FailureRow({ t, blocker, onRetry }) {
|
|
6951
|
+
return /* @__PURE__ */ h("div", {
|
|
6952
|
+
className: ConfigSyncSection_module_default.failure,
|
|
6953
|
+
role: "alert",
|
|
6954
|
+
"data-config-sync-failure": ""
|
|
6955
|
+
}, /* @__PURE__ */ h("span", { className: ConfigSyncSection_module_default.failureTitle }, /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.StateDot, { state: "error" }), blocker.title), blocker.hint === void 0 ? null : /* @__PURE__ */ h("span", { className: ConfigSyncSection_module_default.failureHint }, blocker.hint), /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
6956
|
+
size: "sm",
|
|
6957
|
+
variant: "ghost",
|
|
6958
|
+
className: ConfigSyncSection_module_default.failureAction,
|
|
6959
|
+
onClick: onRetry
|
|
6960
|
+
}, t("blocker.retry")));
|
|
6961
|
+
}
|
|
6962
|
+
function ConfigSyncSection({ t }) {
|
|
6963
|
+
const [source, setSource] = useState("");
|
|
6964
|
+
const [revision, setRevision] = useState(0);
|
|
6965
|
+
const [guard, setGuard] = useState(0);
|
|
6966
|
+
const [picks, setPicks] = useState(null);
|
|
6967
|
+
const [applied, setApplied] = useState(null);
|
|
6968
|
+
const snapshot = useApiResource(CONFIG_SYNC_ROUTE, source === "" ? {} : { source }, revision);
|
|
6969
|
+
const value = snapshot.phase === "ready" ? snapshot.value : void 0;
|
|
6970
|
+
const failure = useMemo(() => {
|
|
6971
|
+
if (snapshot.phase !== "error") return null;
|
|
6972
|
+
const blocker = blockerOfError(snapshot.error, t);
|
|
6973
|
+
return blocker.hint === void 0 ? {
|
|
6974
|
+
...blocker,
|
|
6975
|
+
hint: t("configSync.readHint")
|
|
6976
|
+
} : blocker;
|
|
6977
|
+
}, [
|
|
6978
|
+
snapshot.phase,
|
|
6979
|
+
snapshot.error,
|
|
6980
|
+
t
|
|
6981
|
+
]);
|
|
6982
|
+
useEffect(() => {
|
|
6983
|
+
if (failure === null || guard > 0) return void 0;
|
|
6984
|
+
const timer = setTimeout(() => {
|
|
6985
|
+
setGuard((current) => current + 1);
|
|
6986
|
+
setRevision((current) => current + 1);
|
|
6987
|
+
}, AUTO_RETRY_MS);
|
|
6988
|
+
return () => clearTimeout(timer);
|
|
6989
|
+
}, [failure, guard]);
|
|
6990
|
+
const write = useHostWrite({
|
|
6991
|
+
channel: "actions",
|
|
6992
|
+
resource: CONFIG_SYNC_RESOURCE,
|
|
6993
|
+
networkText: t("configSync.failed")
|
|
6994
|
+
});
|
|
6995
|
+
const busy = useVisibleBusy(write.busy, 500);
|
|
6996
|
+
const reading = useVisibleBusy(snapshot.phase === "loading", 500);
|
|
6997
|
+
const rows = useMemo(() => value?.rows ?? [], [value]);
|
|
6998
|
+
const signature = `${value?.source ?? ""}|${String(revision)}|${rows.map((row) => `${row.key}:${row.state}:${row.missing.join("+")}`).join(",")}`;
|
|
6999
|
+
const defaults = rows.filter((row) => row.state === "new").map((row) => row.key);
|
|
7000
|
+
const picked = picks !== null && picks.at === signature ? picks.keys : defaults;
|
|
7001
|
+
const chosen = rows.filter((row) => picked.includes(row.key));
|
|
7002
|
+
const broken = value !== void 0 && value.profiles.length > 0 && value.reason !== void 0 ? {
|
|
7003
|
+
path: `${value.home}/profiles/${value.source}/cordis.patch.yml`,
|
|
7004
|
+
reason: value.reason
|
|
7005
|
+
} : null;
|
|
7006
|
+
const toggle = (key, next) => {
|
|
7007
|
+
const rest = picked.filter((item) => item !== key);
|
|
7008
|
+
setPicks({
|
|
7009
|
+
at: signature,
|
|
7010
|
+
keys: next ? [...rest, key] : rest
|
|
7011
|
+
});
|
|
7012
|
+
};
|
|
7013
|
+
const reread = () => {
|
|
7014
|
+
setApplied(null);
|
|
7015
|
+
setPicks(null);
|
|
7016
|
+
setGuard(0);
|
|
7017
|
+
setRevision((current) => current + 1);
|
|
7018
|
+
};
|
|
7019
|
+
const pickSource = (name) => {
|
|
7020
|
+
setApplied(null);
|
|
7021
|
+
setPicks(null);
|
|
7022
|
+
setGuard(0);
|
|
7023
|
+
setSource(name);
|
|
7024
|
+
};
|
|
7025
|
+
const apply = () => {
|
|
7026
|
+
if (value === void 0 || chosen.length === 0) return;
|
|
7027
|
+
const overwrite = chosen.filter((row) => row.state === "differs").map((row) => row.key);
|
|
7028
|
+
write.send({
|
|
7029
|
+
source: value.source,
|
|
7030
|
+
keys: chosen.map((row) => row.key),
|
|
7031
|
+
overwrite
|
|
7032
|
+
}).then((outcome) => {
|
|
7033
|
+
if (!outcome.ok) return;
|
|
7034
|
+
setApplied(outcome.value);
|
|
7035
|
+
setRevision((current) => current + 1);
|
|
7036
|
+
});
|
|
7037
|
+
};
|
|
7038
|
+
return /* @__PURE__ */ h(SettingsSection, {
|
|
7039
|
+
label: t("configSync.nav"),
|
|
7040
|
+
title: t("configSync.nav"),
|
|
7041
|
+
action: failure === null ? /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
7042
|
+
variant: "ghost",
|
|
7043
|
+
size: "sm",
|
|
7044
|
+
icon: /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.IconRefreshOutlineRegular, {
|
|
7045
|
+
size: 16,
|
|
7046
|
+
"aria-hidden": "true"
|
|
7047
|
+
}),
|
|
7048
|
+
onClick: reread,
|
|
7049
|
+
disabled: reading.busy,
|
|
7050
|
+
title: t("configSync.refresh")
|
|
7051
|
+
}, t("configSync.refresh")) : void 0
|
|
7052
|
+
}, /* @__PURE__ */ h("div", { className: ConfigSyncSection_module_default.body }, /* @__PURE__ */ h("p", { className: ConfigSyncSection_module_default.lead }, t("configSync.lead")), value === void 0 ? null : /* @__PURE__ */ h(SourcePicker, {
|
|
7053
|
+
t,
|
|
7054
|
+
profiles: value.profiles,
|
|
7055
|
+
source: value.source,
|
|
7056
|
+
onPick: pickSource
|
|
7057
|
+
}), reading.busy ? /* @__PURE__ */ h(ReadingRow, { t }) : null, failure !== null && !reading.busy ? /* @__PURE__ */ h(FailureRow, {
|
|
7058
|
+
t,
|
|
7059
|
+
blocker: failure,
|
|
7060
|
+
onRetry: reread
|
|
7061
|
+
}) : null, write.failed !== null ? /* @__PURE__ */ h(Note, {
|
|
7062
|
+
tone: "problem",
|
|
7063
|
+
role: "alert"
|
|
7064
|
+
}, write.failed) : null, applied !== null ? /* @__PURE__ */ h(AppliedRows, {
|
|
7065
|
+
t,
|
|
7066
|
+
applied
|
|
7067
|
+
}) : null, value !== void 0 && !reading.busy ? /* @__PURE__ */ h(Fragment, null, value.profiles.length === 0 ? /* @__PURE__ */ h(Note, { tone: "problem" }, t("configSync.noSource")) : null, broken !== null ? /* @__PURE__ */ h(Note, { tone: "problem" }, t("configSync.unreadable", {
|
|
7068
|
+
path: broken.path,
|
|
7069
|
+
reason: broken.reason
|
|
7070
|
+
})) : null, value.emptyProviders ? /* @__PURE__ */ h(Note, { tone: "problem" }, t("configSync.emptyProviders")) : null, rows.length === 0 ? /* @__PURE__ */ h(Note, null, t("configSync.nothing")) : null, rows.length > 0 ? /* @__PURE__ */ h(SourceRows, {
|
|
7071
|
+
t,
|
|
7072
|
+
rows,
|
|
7073
|
+
picked,
|
|
7074
|
+
profile: value.self,
|
|
7075
|
+
onToggle: toggle
|
|
7076
|
+
}) : null, rows.length > 0 ? /* @__PURE__ */ h("div", { className: ConfigSyncSection_module_default.foot }, /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
7077
|
+
variant: "primary",
|
|
7078
|
+
size: "md",
|
|
7079
|
+
icon: /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.IconRefreshOutlineRegular, {
|
|
7080
|
+
size: 16,
|
|
7081
|
+
"aria-hidden": "true"
|
|
7082
|
+
}),
|
|
7083
|
+
disabled: chosen.length === 0 || busy.busy,
|
|
7084
|
+
onClick: apply
|
|
7085
|
+
}, chosen.length === 0 ? t("configSync.applyNone") : busy.busy ? t("configSync.applying") : t("configSync.apply", { count: chosen.length }))) : null) : null));
|
|
7086
|
+
}
|
|
7087
|
+
//#endregion
|
|
7088
|
+
//#region src/shared/api/diy.ts
|
|
7089
|
+
var DIY_PRESET_ID = "workbench-diy";
|
|
7090
|
+
var WORKSHOP_RELATIVE = "workbench/diy";
|
|
7091
|
+
var WORKSHOP_TITLE = "工作台DIY";
|
|
7092
|
+
var WORKSHOP_PAST_TITLES = ["DIY 工坊", "工作台自带 · DIY 模块住这儿"];
|
|
7093
|
+
function isWorkshopPath(path) {
|
|
7094
|
+
return path.replace(/\\/g, "/").replace(/\/+$/, "").endsWith(`/${WORKSHOP_RELATIVE}`);
|
|
7095
|
+
}
|
|
7096
|
+
//#endregion
|
|
7097
|
+
//#region src/app/units/index.ts
|
|
7098
|
+
var CLIENT_UNITS = [];
|
|
7099
|
+
function assembleClientUnits(registry) {
|
|
7100
|
+
for (const face of CLIENT_UNITS) registry.register(face);
|
|
7101
|
+
}
|
|
7102
|
+
//#endregion
|
|
7103
|
+
//#region src/shared/api/unit-manifests.ts
|
|
7104
|
+
var UNIT_MANIFESTS_ROUTE = "unit-manifests";
|
|
7105
|
+
//#endregion
|
|
7106
|
+
//#region src/app/units/manifests.ts
|
|
7107
|
+
function createUnitManifestLoader(options = {}) {
|
|
7108
|
+
let inFlight = false;
|
|
7109
|
+
let queued = false;
|
|
7110
|
+
let watching = false;
|
|
7111
|
+
const subscribeFacts = options.subscribeFacts ?? subscribeFactRevision;
|
|
7112
|
+
const load = async (registry) => {
|
|
7113
|
+
if (inFlight) {
|
|
7114
|
+
queued = true;
|
|
7115
|
+
return;
|
|
7116
|
+
}
|
|
7117
|
+
inFlight = true;
|
|
7118
|
+
try {
|
|
7119
|
+
const response = await apiGet(UNIT_MANIFESTS_ROUTE).catch(() => null);
|
|
7120
|
+
if (response?.ok === true && Array.isArray(response.manifests)) registry.setManifests(response.manifests, Array.isArray(response.installable) ? response.installable : void 0);
|
|
7121
|
+
} finally {
|
|
7122
|
+
inFlight = false;
|
|
7123
|
+
if (queued) {
|
|
7124
|
+
queued = false;
|
|
7125
|
+
load(registry);
|
|
7126
|
+
}
|
|
7127
|
+
}
|
|
7128
|
+
};
|
|
7129
|
+
return (registry) => {
|
|
7130
|
+
if (!watching) {
|
|
7131
|
+
watching = true;
|
|
7132
|
+
subscribeFacts(factOfRoute(UNIT_MANIFESTS_ROUTE), () => void load(registry));
|
|
7133
|
+
}
|
|
7134
|
+
load(registry);
|
|
7135
|
+
};
|
|
7136
|
+
}
|
|
7137
|
+
var BootGate_module_default = {
|
|
7138
|
+
actions: "_actions_jlw8j_1",
|
|
7139
|
+
progress: "_progress_jlw8j_2",
|
|
7140
|
+
commandRow: "_commandRow_jlw8j_3",
|
|
7141
|
+
bridge: "_bridge_jlw8j_4",
|
|
7142
|
+
raw: "_raw_jlw8j_5",
|
|
7143
|
+
gate: "_gate_jlw8j_9",
|
|
7144
|
+
card: "_card_jlw8j_20",
|
|
7145
|
+
title: "_title_jlw8j_35",
|
|
7146
|
+
hint: "_hint_jlw8j_43",
|
|
7147
|
+
steps: "_steps_jlw8j_50",
|
|
7148
|
+
step: "_step_jlw8j_50",
|
|
7149
|
+
mark: "_mark_jlw8j_77",
|
|
7150
|
+
label: "_label_jlw8j_102",
|
|
7151
|
+
detail: "_detail_jlw8j_106",
|
|
7152
|
+
elapsed: "_elapsed_jlw8j_124",
|
|
7153
|
+
error: "_error_jlw8j_132",
|
|
7154
|
+
copy: "_copy_jlw8j_158",
|
|
7155
|
+
command: "_command_jlw8j_3",
|
|
7156
|
+
buttons: "_buttons_jlw8j_191",
|
|
7157
|
+
mockSlot: "_mockSlot_jlw8j_198",
|
|
7158
|
+
button: "_button_jlw8j_191",
|
|
7159
|
+
fixTitle: "_fixTitle_jlw8j_249",
|
|
7160
|
+
rawSummary: "_rawSummary_jlw8j_282",
|
|
7161
|
+
bridgeLines: "_bridgeLines_jlw8j_292",
|
|
7162
|
+
bridgeLine: "_bridgeLine_jlw8j_292",
|
|
7163
|
+
link: "_link_jlw8j_309",
|
|
7164
|
+
loading: "_loading_jlw8j_323",
|
|
7165
|
+
loadingMotion: "_loadingMotion_jlw8j_332",
|
|
7166
|
+
"wb-spin": "_wb-spin_jlw8j_1",
|
|
7167
|
+
loadingTrack: "_loadingTrack_jlw8j_337",
|
|
7168
|
+
loadingArc: "_loadingArc_jlw8j_338",
|
|
7169
|
+
"wb-dash": "_wb-dash_jlw8j_1"
|
|
7170
|
+
};
|
|
7171
|
+
//#endregion
|
|
7172
|
+
//#region src/app/layouts/env-gate/gate-text.ts
|
|
7173
|
+
function failedStepText(guidance, t) {
|
|
7174
|
+
if (guidance === "path") return t("env.stepFailed.path");
|
|
7175
|
+
if (guidance === "shell") return t("env.stepFailed.shell");
|
|
7176
|
+
return t("env.stepFailed.install");
|
|
7177
|
+
}
|
|
7178
|
+
function stepDetailText(step, snapshot, t) {
|
|
7179
|
+
if (step.status === "failed") return failedStepText(snapshot.guidance, t);
|
|
7180
|
+
if (step.id === "bridge") {
|
|
7181
|
+
if (step.status === "ok") return t("env.bridge.ok");
|
|
7182
|
+
if (step.status === "warn") return t("env.bridge.short");
|
|
7183
|
+
}
|
|
7184
|
+
if (step.id === "warm") {
|
|
7185
|
+
if (step.status === "ok") return t("env.warm.done", { n: step.detail ?? "0" });
|
|
7186
|
+
if (step.status === "warn") return t("env.warm.short");
|
|
7187
|
+
}
|
|
7188
|
+
return step.detail ?? "";
|
|
7189
|
+
}
|
|
7190
|
+
var OPENCLI_EXTENSION_URL = "https://chromewebstore.google.com/detail/opencli/ildkmabpimmkaediidaifkhjpohdnifk";
|
|
7191
|
+
function bridgeAdvice(issue) {
|
|
7192
|
+
if (issue === "daemon") return { textKey: "env.bridge.daemon" };
|
|
7193
|
+
if (issue === "extension") return {
|
|
7194
|
+
textKey: "env.bridge.extension",
|
|
7195
|
+
link: {
|
|
7196
|
+
labelKey: "env.bridge.extensionLink",
|
|
7197
|
+
href: OPENCLI_EXTENSION_URL
|
|
7198
|
+
}
|
|
7199
|
+
};
|
|
7200
|
+
if (issue === "profile") return { textKey: "env.bridge.profile" };
|
|
7201
|
+
if (issue === "stale") return { textKey: "env.bridge.stale" };
|
|
7202
|
+
return { textKey: "env.bridge.unknown" };
|
|
7203
|
+
}
|
|
7204
|
+
//#endregion
|
|
7205
|
+
//#region src/app/layouts/env-gate/gate-deadline.ts
|
|
7206
|
+
function createGateDeadline(giveUpMs, expire) {
|
|
7207
|
+
const timer = setTimeout(expire, giveUpMs);
|
|
7208
|
+
return { disarm() {
|
|
7209
|
+
clearTimeout(timer);
|
|
7210
|
+
} };
|
|
7211
|
+
}
|
|
7212
|
+
//#endregion
|
|
7213
|
+
//#region src/app/layouts/env-gate/gate-dom.ts
|
|
7214
|
+
var SVG_NS = "http://www.w3.org/2000/svg";
|
|
7215
|
+
function svgIcon(kind) {
|
|
6482
7216
|
const svg = document.createElementNS(SVG_NS, "svg");
|
|
6483
7217
|
svg.setAttribute("width", "14");
|
|
6484
7218
|
svg.setAttribute("height", "14");
|
|
@@ -8289,54 +9023,6 @@ function createSuiteWorld(input) {
|
|
|
8289
9023
|
}
|
|
8290
9024
|
};
|
|
8291
9025
|
}
|
|
8292
|
-
//#endregion
|
|
8293
|
-
//#region src/shared/hooks/panel-state-report.ts
|
|
8294
|
-
var FLUSH_MS = 400;
|
|
8295
|
-
var workspace = null;
|
|
8296
|
-
var timer = null;
|
|
8297
|
-
var pending = /* @__PURE__ */ new Map();
|
|
8298
|
-
function unitOfRoute(route) {
|
|
8299
|
-
const cut = route.indexOf("/");
|
|
8300
|
-
return cut <= 0 ? null : route.slice(0, cut);
|
|
8301
|
-
}
|
|
8302
|
-
function setPanelWorkspace(path) {
|
|
8303
|
-
if (path === workspace) return;
|
|
8304
|
-
const previous = workspace;
|
|
8305
|
-
workspace = path;
|
|
8306
|
-
if (previous !== null) pending.clear();
|
|
8307
|
-
}
|
|
8308
|
-
function reportPanelRead(input) {
|
|
8309
|
-
pending.set(`${input.unit}\u0000${input.route}`, {
|
|
8310
|
-
unit: input.unit,
|
|
8311
|
-
route: input.route,
|
|
8312
|
-
phase: input.phase,
|
|
8313
|
-
at: Date.now(),
|
|
8314
|
-
...input.error === void 0 ? {} : { error: input.error }
|
|
8315
|
-
});
|
|
8316
|
-
if (timer !== null) return;
|
|
8317
|
-
timer = setTimeout(flush, FLUSH_MS);
|
|
8318
|
-
}
|
|
8319
|
-
function reportPanelCrash(input) {
|
|
8320
|
-
const target = workspace;
|
|
8321
|
-
if (target === null) return;
|
|
8322
|
-
apiPost(`${PANEL_STATE_PATH}/crash`, {
|
|
8323
|
-
workspace: target,
|
|
8324
|
-
unit: input.unit,
|
|
8325
|
-
reason: input.reason,
|
|
8326
|
-
at: Date.now()
|
|
8327
|
-
}).catch(() => void 0);
|
|
8328
|
-
}
|
|
8329
|
-
function flush() {
|
|
8330
|
-
timer = null;
|
|
8331
|
-
const target = workspace;
|
|
8332
|
-
const cards = [...pending.values()];
|
|
8333
|
-
pending.clear();
|
|
8334
|
-
if (target === null || cards.length === 0) return;
|
|
8335
|
-
apiPost(`${PANEL_STATE_PATH}/cards`, {
|
|
8336
|
-
workspace: target,
|
|
8337
|
-
cards
|
|
8338
|
-
}).catch(() => void 0);
|
|
8339
|
-
}
|
|
8340
9026
|
var Rightbar_module_default = {
|
|
8341
9027
|
panel: "_panel_135e7_1",
|
|
8342
9028
|
columns: "_columns_135e7_18",
|
|
@@ -8889,15 +9575,23 @@ function WorkspaceSearchField({ t, query, onQuery, onCursor, onSubmit }) {
|
|
|
8889
9575
|
//#region src/app/layouts/sidebar/workspace-groups.ts
|
|
8890
9576
|
function workspaceSections(items, headings) {
|
|
8891
9577
|
const workspaces = [];
|
|
9578
|
+
const defaults = [];
|
|
8892
9579
|
const workshop = [];
|
|
8893
9580
|
for (const item of items) if (isWorkshopPath(item.path)) workshop.push(item);
|
|
9581
|
+
else if (item.title === "default-workspace") defaults.push(item);
|
|
8894
9582
|
else workspaces.push(item);
|
|
9583
|
+
const special = defaults.length > 0 || workshop.length > 0;
|
|
8895
9584
|
const sections = [];
|
|
8896
9585
|
if (workspaces.length > 0) sections.push({
|
|
8897
9586
|
id: "workspaces",
|
|
8898
|
-
heading:
|
|
9587
|
+
heading: special ? headings.workspaces : null,
|
|
8899
9588
|
items: workspaces
|
|
8900
9589
|
});
|
|
9590
|
+
if (defaults.length > 0) sections.push({
|
|
9591
|
+
id: "defaultWorkspace",
|
|
9592
|
+
heading: headings.defaultWorkspace,
|
|
9593
|
+
items: defaults
|
|
9594
|
+
});
|
|
8901
9595
|
if (workshop.length > 0) sections.push({
|
|
8902
9596
|
id: "workshop",
|
|
8903
9597
|
heading: headings.workshop,
|
|
@@ -8997,6 +9691,7 @@ function ProjectSwitcher({ items, current, onPick, onAdd, onRename, t }) {
|
|
|
8997
9691
|
const results = useMemo(() => matchWorkspaces(items, query), [items, query]);
|
|
8998
9692
|
const sections = useMemo(() => workspaceSections(results, {
|
|
8999
9693
|
workspaces: t("project.group.workspaces"),
|
|
9694
|
+
defaultWorkspace: t("project.group.defaultWorkspace"),
|
|
9000
9695
|
workshop: t("project.group.workshop")
|
|
9001
9696
|
}), [results, t]);
|
|
9002
9697
|
const ordered = useMemo(() => flattenSections(sections), [sections]);
|
|
@@ -9436,149 +10131,6 @@ var board_default = "[data-wb-dot] {\n display: flex;\n align-items: center;\n
|
|
|
9436
10131
|
//#region src/shared/styles/motion.css?raw
|
|
9437
10132
|
var motion_default = "[data-animating],\n[data-sidebar-right-panel] {\n --ds-transition-duration-slow: 0s;\n}\n";
|
|
9438
10133
|
//#endregion
|
|
9439
|
-
//#region src/shared/hooks/use-api-resource.ts
|
|
9440
|
-
var use_api_resource_exports = /* @__PURE__ */ __exportAll({
|
|
9441
|
-
readKeyOf: () => readKeyOf,
|
|
9442
|
-
requestResource: () => requestResource,
|
|
9443
|
-
resourceIdentity: () => resourceIdentity,
|
|
9444
|
-
useApiResource: () => useApiResource
|
|
9445
|
-
});
|
|
9446
|
-
function resourceIdentity(route, query, override) {
|
|
9447
|
-
return override ?? requestKeyOf(route, query);
|
|
9448
|
-
}
|
|
9449
|
-
function readKeyOf(identity, refreshToken, factRev) {
|
|
9450
|
-
return `${identity}@${String(refreshToken)}@${String(factRev)}`;
|
|
9451
|
-
}
|
|
9452
|
-
function requestKeyOf(route, query) {
|
|
9453
|
-
return `${route}?${Object.entries(query).filter(([, value]) => value !== void 0).sort(([a], [b]) => a.localeCompare(b)).map(([key, value]) => `${key}=${String(value)}`).join("&")}`;
|
|
9454
|
-
}
|
|
9455
|
-
var inflight = /* @__PURE__ */ new Map();
|
|
9456
|
-
function requestResource(route, query, key) {
|
|
9457
|
-
const pending = inflight.get(key);
|
|
9458
|
-
if (pending !== void 0) {
|
|
9459
|
-
pending.waiters += 1;
|
|
9460
|
-
return {
|
|
9461
|
-
task: pending.task,
|
|
9462
|
-
release: () => release(key, pending)
|
|
9463
|
-
};
|
|
9464
|
-
}
|
|
9465
|
-
const controller = new AbortController();
|
|
9466
|
-
const entry = {
|
|
9467
|
-
task: apiGet(route, query, { signal: controller.signal }).finally(() => {
|
|
9468
|
-
if (inflight.get(key) === entry) inflight.delete(key);
|
|
9469
|
-
}),
|
|
9470
|
-
controller,
|
|
9471
|
-
waiters: 1
|
|
9472
|
-
};
|
|
9473
|
-
inflight.set(key, entry);
|
|
9474
|
-
return {
|
|
9475
|
-
task: entry.task,
|
|
9476
|
-
release: () => release(key, entry)
|
|
9477
|
-
};
|
|
9478
|
-
}
|
|
9479
|
-
function release(key, entry) {
|
|
9480
|
-
if (inflight.get(key) !== entry) return;
|
|
9481
|
-
entry.waiters -= 1;
|
|
9482
|
-
if (entry.waiters > 0) return;
|
|
9483
|
-
inflight.delete(key);
|
|
9484
|
-
entry.controller.abort();
|
|
9485
|
-
}
|
|
9486
|
-
function useApiResource(route, query, refreshToken, options = {}) {
|
|
9487
|
-
const enabled = options.enabled !== false;
|
|
9488
|
-
const identity = resourceIdentity(route, query, options.key);
|
|
9489
|
-
const factRev = useFactRevision(options.fact ?? factOfRoute(route));
|
|
9490
|
-
const key = readKeyOf(identity, refreshToken, factRev);
|
|
9491
|
-
const [state, setState] = useState(() => enabled ? { phase: "loading" } : { phase: "idle" });
|
|
9492
|
-
const lastIdentity = useRef(null);
|
|
9493
|
-
const queryRef = useRef(query);
|
|
9494
|
-
useEffect(() => {
|
|
9495
|
-
queryRef.current = query;
|
|
9496
|
-
});
|
|
9497
|
-
useEffect(() => {
|
|
9498
|
-
if (!enabled) {
|
|
9499
|
-
lastIdentity.current = null;
|
|
9500
|
-
setState({ phase: "idle" });
|
|
9501
|
-
return;
|
|
9502
|
-
}
|
|
9503
|
-
let cancelled = false;
|
|
9504
|
-
const sameIdentity = lastIdentity.current === identity;
|
|
9505
|
-
lastIdentity.current = identity;
|
|
9506
|
-
setState((prev) => sameIdentity && prev.value !== void 0 ? {
|
|
9507
|
-
phase: "loading",
|
|
9508
|
-
value: prev.value,
|
|
9509
|
-
...prev.at === void 0 ? {} : { at: prev.at }
|
|
9510
|
-
} : { phase: "loading" });
|
|
9511
|
-
const flight = requestResource(route, queryRef.current, key);
|
|
9512
|
-
const owner = unitOfRoute(route);
|
|
9513
|
-
if (owner !== null) reportPanelRead({
|
|
9514
|
-
unit: owner,
|
|
9515
|
-
route,
|
|
9516
|
-
phase: "loading"
|
|
9517
|
-
});
|
|
9518
|
-
flight.task.then((response) => {
|
|
9519
|
-
if (cancelled) return;
|
|
9520
|
-
if (response.ok) {
|
|
9521
|
-
setState({
|
|
9522
|
-
phase: "ready",
|
|
9523
|
-
value: response,
|
|
9524
|
-
at: Date.now()
|
|
9525
|
-
});
|
|
9526
|
-
if (owner !== null) reportPanelRead({
|
|
9527
|
-
unit: owner,
|
|
9528
|
-
route,
|
|
9529
|
-
phase: "ready"
|
|
9530
|
-
});
|
|
9531
|
-
return;
|
|
9532
|
-
}
|
|
9533
|
-
setState({
|
|
9534
|
-
phase: "error",
|
|
9535
|
-
error: response.error
|
|
9536
|
-
});
|
|
9537
|
-
if (owner !== null) reportPanelRead({
|
|
9538
|
-
unit: owner,
|
|
9539
|
-
route,
|
|
9540
|
-
phase: "error",
|
|
9541
|
-
error: {
|
|
9542
|
-
code: response.error.code,
|
|
9543
|
-
message: response.error.message
|
|
9544
|
-
}
|
|
9545
|
-
});
|
|
9546
|
-
}).catch((reason) => {
|
|
9547
|
-
if (cancelled) return;
|
|
9548
|
-
const message = reason instanceof Error ? reason.message : String(reason);
|
|
9549
|
-
setState({
|
|
9550
|
-
phase: "error",
|
|
9551
|
-
error: {
|
|
9552
|
-
code: "network",
|
|
9553
|
-
message
|
|
9554
|
-
}
|
|
9555
|
-
});
|
|
9556
|
-
if (owner !== null) reportPanelRead({
|
|
9557
|
-
unit: owner,
|
|
9558
|
-
route,
|
|
9559
|
-
phase: "error",
|
|
9560
|
-
error: {
|
|
9561
|
-
code: "network",
|
|
9562
|
-
message
|
|
9563
|
-
}
|
|
9564
|
-
});
|
|
9565
|
-
});
|
|
9566
|
-
return () => {
|
|
9567
|
-
cancelled = true;
|
|
9568
|
-
flight.release();
|
|
9569
|
-
};
|
|
9570
|
-
}, [
|
|
9571
|
-
key,
|
|
9572
|
-
identity,
|
|
9573
|
-
route,
|
|
9574
|
-
refreshToken,
|
|
9575
|
-
factRev,
|
|
9576
|
-
enabled,
|
|
9577
|
-
options.fact
|
|
9578
|
-
]);
|
|
9579
|
-
return state;
|
|
9580
|
-
}
|
|
9581
|
-
//#endregion
|
|
9582
10134
|
//#region src/shared/hooks/use-card-summary.ts
|
|
9583
10135
|
var use_card_summary_exports = /* @__PURE__ */ __exportAll({ useCardSummary: () => useCardSummary });
|
|
9584
10136
|
function useCardSummary(onSummary, summary) {
|
|
@@ -9828,7 +10380,7 @@ function messagesOf(units) {
|
|
|
9828
10380
|
...face.messages === void 0 ? {} : { messages: face.messages }
|
|
9829
10381
|
}));
|
|
9830
10382
|
}
|
|
9831
|
-
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 position: relative;\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-choiceOptionOn {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-checkbox {\n position: absolute;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: 0;\n opacity: 0;\n pointer-events: none;\n}\n\n.wb-checkboxBox {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n border: 1px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-xs);\n corner-shape: round;\n color: var(--dsw-alias-label-primary-foreground);\n transition:\n background-color var(--wb-dur-0-12) ease, border-color var(--wb-dur-0-12) ease;\n}\n\n.wb-choiceOption:hover .wb-checkboxBox {\n border-color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-checkbox:checked + .wb-checkboxBox {\n border-color: var(--dsw-alias-brand-primary);\n background: var(--dsw-alias-brand-primary);\n}\n\n.wb-checkbox:disabled + .wb-checkboxBox {\n opacity: 0.5;\n}\n\n.wb-checkbox:focus-visible + .wb-checkboxBox {\n outline: var(--dsw-focus-ring-width, var(--wb-len-2)) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\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}:where(.wb-link) {\n margin-left: var(--wb-len-2);\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\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 text-decoration: none;\n white-space: nowrap;\n vertical-align: baseline;\n}\n\n:where(.wb-link:hover) {\n text-decoration: underline;\n}\n\n:where(.wb-link: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-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}\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\n:where(.wb-textField) {\n min-height: var(--wb-len-32);\n padding: var(--wb-len-6) var(--wb-len-12);\n}\n.wb-field {\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.wb-fieldLabel {\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-fieldHint {\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._marketList_csyus_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}\n\n._marketRow_csyus_10 {\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_csyus_20 {\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_csyus_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._marketName_csyus_39 {\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_csyus_48 {\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_csyus_59 {\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_csyus_59::before {\n content: '·';\n margin-right: var(--wb-len-6);\n opacity: 0.8;\n}\n\n._marketName_csyus_39 ._marketVersion_csyus_73 {\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_csyus_73 {\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketVersion_csyus_73::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._marketLocalTag_csyus_95 {\n margin-left: var(--wb-len-8);\n padding: 0 var(--wb-len-6);\n border: var(--wb-len-1) solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 400;\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-caption);\n}\n\n._marketEnd_csyus_106 {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_csyus_113 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_csyus_113::before {\n content: '';\n width: 0;\n height: var(--wb-len-14);\n border-left: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n._marketActions_csyus_126 {\n flex: none;\n display: flex;\n gap: var(--wb-len-6);\n}\n\n._marketUpdateAction_csyus_132 {\n color: var(--dsw-alias-state-warn-primary);\n border-color: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 30%, transparent);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._marketSelfDivider_csyus_138 {\n height: 0;\n border-top: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n._marketSection_csyus_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._marketSectionHead_csyus_150 {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n\n._marketSectionIcon_csyus_156 {\n display: inline-flex;\n align-items: center;\n align-self: center;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionTitle_csyus_163 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketSectionCount_csyus_169 {\n font: var(--dsw-font-s-14);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n\n._marketProgress_csyus_176 {\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_csyus_186 {\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._marketNotePlain_csyus_193 {\n grid-column: 2 / -1;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-caption);\n overflow-wrap: anywhere;\n}\n\n._marketFailure_csyus_201 {\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_csyus_208 {\n padding: var(--wb-len-18) var(--wb-len-16);\n text-align: center;\n}\n\n._marketPage_csyus_213 {\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-x: hidden;\n overflow-y: auto;\n color: var(--dsw-alias-label-primary);\n}\n\n._marketPage_csyus_213 > * {\n width: 100%;\n max-width: var(--wb-len-960);\n}\n\n._marketPageHead_csyus_231 {\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_csyus_239 {\n margin: 0;\n font: var(--dsw-font-l-20);\n}\n\n._marketPageIntro_csyus_244 {\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_csyus_250 {\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_csyus_259 {\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_csyus_259:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketIconButton_csyus_259:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._marketIconWrap_csyus_284 {\n display: inline-flex;\n}\n\n._marketIconButtonSpinning_csyus_288 svg {\n animation: _wb-spin_csyus_1 var(--wb-dur-0-9) linear infinite;\n}\n\n._marketAddButton_csyus_292 {\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_csyus_208 {\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_csyus_309 {\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_csyus_317 {\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n@keyframes _wb-spin_csyus_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n._foot_1ud1j_1 {\n display: flex;\n align-items: center;\n justify-content: flex-end;\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_1ud1j_13 {\n flex: 1;\n min-width: 0;\n}\n\n._footTextMd_1ud1j_18 {\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_15ptp_1 {\n display: flex;\n align-items: center;\n}\n\n._pop_15ptp_6 {\n position: absolute;\n top: calc(var(--wb-len-38) + var(--wb-len-8));\n right: var(--wb-len-6);\n z-index: var(--wb-z-30);\n width: min(var(--wb-len-360), calc(100% - var(--wb-len-12)));\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_15ptp_20 {\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_15ptp_28 {\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._rowControls_15ptp_36 {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._reset_15ptp_43 {\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_15ptp_43:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._reset_15ptp_43:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._list_15ptp_65 {\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_15ptp_36 {\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: default;\n}\n\n._rowDragging_15ptp_85 {\n cursor: grabbing;\n}\n\n._rowBlocked_15ptp_89 {\n cursor: not-allowed;\n}\n\n._listDragging_15ptp_93 ._rowControls_15ptp_36 {\n pointer-events: none;\n}\n\n._row_15ptp_36:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._rowOff_15ptp_101 {\n opacity: 0.55;\n}\n\n._rowOff_15ptp_101:hover {\n opacity: 1;\n}\n\n._rowOver_15ptp_109::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_15ptp_119 {\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_15ptp_134 {\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 cursor: grab;\n touch-action: none;\n}\n\n._gripDragging_15ptp_144 {\n cursor: grabbing;\n}\n\n._gripBlocked_15ptp_148 {\n cursor: not-allowed;\n}\n\n._label_15ptp_152 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._name_15ptp_159 {\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_15ptp_170 {\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_15ptp_178 {\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\n._group_15ptp_186 {\n padding-top: var(--wb-len-6);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._groupTitle_15ptp_191 {\n margin: 0;\n padding: var(--wb-len-2) var(--wb-len-8) 0 var(--wb-len-14);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n font-weight: 400;\n color: var(--dsw-alias-label-tertiary);\n}\n._panel_135e7_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_135e7_1[data-fullscreen] {\n z-index: var(--wb-z-40);\n}\n\n._panel_135e7_1[data-open] {\n visibility: visible;\n}\n\n._columns_135e7_18 {\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n align-items: start;\n gap: var(--wb-len-12);\n}\n\n._columns_135e7_18[data-two] {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n\n._column_135e7_18 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\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_1oaj0_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_1oaj0_10 {\n display: flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._title_1oaj0_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_1oaj0_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_1oaj0_1._blockerInline_1oaj0_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_1oaj0_1._blockerInline_1oaj0_32 ._title_1oaj0_15 {\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._hint_1oaj0_23 {\n max-width: 100%;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._actions_1oaj0_48 {\n margin-top: var(--wb-len-8);\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._raw_1oaj0_52 {\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._actions_1oaj0_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_1oaj0_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_1oaj0_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_1oaj0_71._noticeFlat_1oaj0_84 {\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n}\n\n._noticeText_1oaj0_91 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-3);\n min-width: 0;\n}\n\n._noticeTitle_1oaj0_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_1oaj0_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_1oaj0_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_1oaj0_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_1oaj0_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._inlineAction_1oaj0_134 {\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n}\n\n._inlineAction_1oaj0_134:disabled {\n opacity: 0.6;\n cursor: default;\n}\n\n._rawText_1oaj0_146 {\n margin: var(--wb-len-6) 0 0;\n max-width: 100%;\n}\n/*$vite$:1*/";
|
|
10383
|
+
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 position: relative;\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-choiceOptionOn {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-checkbox {\n position: absolute;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: 0;\n opacity: 0;\n pointer-events: none;\n}\n\n.wb-checkboxBox {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n border: 1px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-xs);\n corner-shape: round;\n color: var(--dsw-alias-label-primary-foreground);\n transition:\n background-color var(--wb-dur-0-12) ease, border-color var(--wb-dur-0-12) ease;\n}\n\n.wb-choiceOption:hover .wb-checkboxBox {\n border-color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-checkbox:checked + .wb-checkboxBox {\n border-color: var(--dsw-alias-brand-primary);\n background: var(--dsw-alias-brand-primary);\n}\n\n.wb-checkbox:disabled + .wb-checkboxBox {\n opacity: 0.5;\n}\n\n.wb-checkbox:focus-visible + .wb-checkboxBox {\n outline: var(--dsw-focus-ring-width, var(--wb-len-2)) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\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}:where(.wb-link) {\n margin-left: var(--wb-len-2);\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\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 text-decoration: none;\n white-space: nowrap;\n vertical-align: baseline;\n}\n\n:where(.wb-link:hover) {\n text-decoration: underline;\n}\n\n:where(.wb-link: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-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}\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}\nsection.wb-settings {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n padding: 0;\n border: 0;\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-settings-card-fill);\n}\n.wb-settingsHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n.wb-settings .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-base-16-font-size);\n line-height: var(--wb-line-24);\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\n:where(.wb-textField) {\n min-height: var(--wb-len-32);\n padding: var(--wb-len-6) var(--wb-len-12);\n}\n.wb-field {\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.wb-fieldLabel {\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-fieldHint {\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._marketList_csyus_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}\n\n._marketRow_csyus_10 {\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_csyus_20 {\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_csyus_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._marketName_csyus_39 {\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_csyus_48 {\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_csyus_59 {\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_csyus_59::before {\n content: '·';\n margin-right: var(--wb-len-6);\n opacity: 0.8;\n}\n\n._marketName_csyus_39 ._marketVersion_csyus_73 {\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_csyus_73 {\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketVersion_csyus_73::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._marketLocalTag_csyus_95 {\n margin-left: var(--wb-len-8);\n padding: 0 var(--wb-len-6);\n border: var(--wb-len-1) solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 400;\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-caption);\n}\n\n._marketEnd_csyus_106 {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_csyus_113 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_csyus_113::before {\n content: '';\n width: 0;\n height: var(--wb-len-14);\n border-left: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n._marketActions_csyus_126 {\n flex: none;\n display: flex;\n gap: var(--wb-len-6);\n}\n\n._marketUpdateAction_csyus_132 {\n color: var(--dsw-alias-state-warn-primary);\n border-color: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 30%, transparent);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._marketSelfDivider_csyus_138 {\n height: 0;\n border-top: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n._marketSection_csyus_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._marketSectionHead_csyus_150 {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n\n._marketSectionIcon_csyus_156 {\n display: inline-flex;\n align-items: center;\n align-self: center;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionTitle_csyus_163 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketSectionCount_csyus_169 {\n font: var(--dsw-font-s-14);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n\n._marketProgress_csyus_176 {\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_csyus_186 {\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._marketNotePlain_csyus_193 {\n grid-column: 2 / -1;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-caption);\n overflow-wrap: anywhere;\n}\n\n._marketFailure_csyus_201 {\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_csyus_208 {\n padding: var(--wb-len-18) var(--wb-len-16);\n text-align: center;\n}\n\n._marketPage_csyus_213 {\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-x: hidden;\n overflow-y: auto;\n color: var(--dsw-alias-label-primary);\n}\n\n._marketPage_csyus_213 > * {\n width: 100%;\n max-width: var(--wb-len-960);\n}\n\n._marketPageHead_csyus_231 {\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_csyus_239 {\n margin: 0;\n font: var(--dsw-font-l-20);\n}\n\n._marketPageIntro_csyus_244 {\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_csyus_250 {\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_csyus_259 {\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_csyus_259:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketIconButton_csyus_259:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._marketIconWrap_csyus_284 {\n display: inline-flex;\n}\n\n._marketIconButtonSpinning_csyus_288 svg {\n animation: _wb-spin_csyus_1 var(--wb-dur-0-9) linear infinite;\n}\n\n._marketAddButton_csyus_292 {\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_csyus_208 {\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_csyus_309 {\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_csyus_317 {\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n@keyframes _wb-spin_csyus_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n._foot_1ud1j_1 {\n display: flex;\n align-items: center;\n justify-content: flex-end;\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_1ud1j_13 {\n flex: 1;\n min-width: 0;\n}\n\n._footTextMd_1ud1j_18 {\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._body_lw2ph_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._lead_lw2ph_7 {\n margin: 0;\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}\n\n._sources_lw2ph_14 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._sourcesLabel_lw2ph_21 {\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-secondary);\n}\n\nbutton._sourceOn_lw2ph_26 {\n border-color: var(--dsw-alias-brand-primary);\n}\n._sourceCount_lw2ph_29 {\n margin-left: var(--wb-len-4);\n font-variant-numeric: tabular-nums;\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._reading_lw2ph_36 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._status_lw2ph_42 {\n display: inline-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-tertiary);\n}\n\n._failure_lw2ph_52 {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n column-gap: var(--wb-len-10);\n row-gap: var(--wb-len-2);\n color: var(--dsw-alias-state-error-primary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n\n._failureTitle_lw2ph_62 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._failureHint_lw2ph_69 {\n grid-column: 1;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._failureAction_lw2ph_74 {\n grid-column: 2;\n grid-row: 1;\n justify-self: end;\n}\n\n._rows_lw2ph_80 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n._row_lw2ph_80 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n padding: var(--wb-len-12) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-settings-card-stroke);\n border-radius: var(--dsw-radius-xl);\n background: var(--dsw-alias-settings-card-fill);\n}\n\n._head_lw2ph_99 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._pick_lw2ph_106 {\n flex: 0 1 auto;\n min-width: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n._pick_lw2ph_106 > span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._code_lw2ph_118 {\n --dsl-code-block-background: var(--dsw-alias-bg-layer-1);\n margin: 0;\n}\n\n._missing_lw2ph_123,\n._conflict_lw2ph_124 {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._foot_lw2ph_130 {\n display: flex;\n justify-content: flex-end;\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_15ptp_1 {\n display: flex;\n align-items: center;\n}\n\n._pop_15ptp_6 {\n position: absolute;\n top: calc(var(--wb-len-38) + var(--wb-len-8));\n right: var(--wb-len-6);\n z-index: var(--wb-z-30);\n width: min(var(--wb-len-360), calc(100% - var(--wb-len-12)));\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_15ptp_20 {\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_15ptp_28 {\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._rowControls_15ptp_36 {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._reset_15ptp_43 {\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_15ptp_43:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._reset_15ptp_43:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._list_15ptp_65 {\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_15ptp_36 {\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: default;\n}\n\n._rowDragging_15ptp_85 {\n cursor: grabbing;\n}\n\n._rowBlocked_15ptp_89 {\n cursor: not-allowed;\n}\n\n._listDragging_15ptp_93 ._rowControls_15ptp_36 {\n pointer-events: none;\n}\n\n._row_15ptp_36:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._rowOff_15ptp_101 {\n opacity: 0.55;\n}\n\n._rowOff_15ptp_101:hover {\n opacity: 1;\n}\n\n._rowOver_15ptp_109::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_15ptp_119 {\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_15ptp_134 {\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 cursor: grab;\n touch-action: none;\n}\n\n._gripDragging_15ptp_144 {\n cursor: grabbing;\n}\n\n._gripBlocked_15ptp_148 {\n cursor: not-allowed;\n}\n\n._label_15ptp_152 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._name_15ptp_159 {\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_15ptp_170 {\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_15ptp_178 {\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\n._group_15ptp_186 {\n padding-top: var(--wb-len-6);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._groupTitle_15ptp_191 {\n margin: 0;\n padding: var(--wb-len-2) var(--wb-len-8) 0 var(--wb-len-14);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n font-weight: 400;\n color: var(--dsw-alias-label-tertiary);\n}\n._panel_135e7_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_135e7_1[data-fullscreen] {\n z-index: var(--wb-z-40);\n}\n\n._panel_135e7_1[data-open] {\n visibility: visible;\n}\n\n._columns_135e7_18 {\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n align-items: start;\n gap: var(--wb-len-12);\n}\n\n._columns_135e7_18[data-two] {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n\n._column_135e7_18 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\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_1oaj0_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_1oaj0_10 {\n display: flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._title_1oaj0_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_1oaj0_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_1oaj0_1._blockerInline_1oaj0_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_1oaj0_1._blockerInline_1oaj0_32 ._title_1oaj0_15 {\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._hint_1oaj0_23 {\n max-width: 100%;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._actions_1oaj0_48 {\n margin-top: var(--wb-len-8);\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._raw_1oaj0_52 {\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._actions_1oaj0_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_1oaj0_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_1oaj0_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_1oaj0_71._noticeFlat_1oaj0_84 {\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n}\n\n._noticeText_1oaj0_91 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-3);\n min-width: 0;\n}\n\n._noticeTitle_1oaj0_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_1oaj0_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_1oaj0_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_1oaj0_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_1oaj0_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._inlineAction_1oaj0_134 {\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n}\n\n._inlineAction_1oaj0_134:disabled {\n opacity: 0.6;\n cursor: default;\n}\n\n._rawText_1oaj0_146 {\n margin: var(--wb-len-6) 0 0;\n max-width: 100%;\n}\n/*$vite$:1*/";
|
|
9832
10384
|
function workbenchCss() {
|
|
9833
10385
|
return `${tokens_default}\n${palette_default}\n${scale_default}\n${sidebar_default}\n${sidebar_app_default}\n${rightbar_default}\n${chrome_default}\n${board_default}\n${motion_default}\n${COMPONENT_CSS_MARKER}`;
|
|
9834
10386
|
}
|
|
@@ -10043,6 +10595,7 @@ function mount(ctx) {
|
|
|
10043
10595
|
})
|
|
10044
10596
|
}, Sidebar));
|
|
10045
10597
|
registerMarketPanel(ctx, units);
|
|
10598
|
+
registerConfigSyncSection(ctx);
|
|
10046
10599
|
ctx.effect(() => {
|
|
10047
10600
|
const workshop = workshopWorkspace();
|
|
10048
10601
|
if (workshop === void 0) return;
|
|
@@ -10071,6 +10624,17 @@ function mount(ctx) {
|
|
|
10071
10624
|
})
|
|
10072
10625
|
}, ColumnSwitch));
|
|
10073
10626
|
}
|
|
10627
|
+
var CONFIG_SYNC_SECTION_ID = "workbench-config-sync";
|
|
10628
|
+
function registerConfigSyncSection(ctx) {
|
|
10629
|
+
ctx.slots.inject("settings.section", () => ctx.slots.register({
|
|
10630
|
+
name: "settings.section",
|
|
10631
|
+
id: CONFIG_SYNC_SECTION_ID,
|
|
10632
|
+
order: 40,
|
|
10633
|
+
locale: LOCALE_NS,
|
|
10634
|
+
label: () => ctx.locale.bind(LOCALE_NS)("configSync.nav"),
|
|
10635
|
+
inject: () => ({ t: ctx.locale.bind(LOCALE_NS) })
|
|
10636
|
+
}, ConfigSyncSection));
|
|
10637
|
+
}
|
|
10074
10638
|
function sidebarChildren(ctx) {
|
|
10075
10639
|
return {
|
|
10076
10640
|
"sidebar.brand.mark": {
|