@dsh-workbench/core 1.0.1 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/client.js +849 -460
- package/dist/client/client.body.js +849 -460
- package/dist/client/index.js +720 -331
- package/dist/host/index.js +448 -41
- package/dist/types/app/layouts/market/discover-search.d.ts +8 -0
- package/dist/types/app/layouts/market/discover-sources-dialog.d.ts +4 -0
- package/dist/types/app/layouts/market/discover-states.d.ts +3 -0
- package/dist/types/app/layouts/market/use-add-module.d.ts +0 -1
- package/dist/types/app/layouts/market/use-discover.d.ts +1 -0
- package/dist/types/app/layouts/rightbar/MarketView.d.ts +3 -1
- package/dist/types/app/layouts/rightbar/market-names.d.ts +8 -0
- package/dist/types/app/layouts/rightbar/market-row-types.d.ts +11 -3
- package/dist/types/app/layouts/rightbar/market-rows.d.ts +6 -4
- package/dist/types/app/layouts/rightbar/market-view-text.d.ts +4 -3
- package/dist/types/app/units/unit-titles.d.ts +3 -0
- package/dist/types/kernel/contract/bundle-install.d.ts +1 -1
- package/dist/types/kernel/contract/market-index.d.ts +1 -1
- package/dist/types/modules/panels/model/diy-tools.d.ts +1 -1
- package/dist/types/modules/panels/model/market-dispatch.d.ts +8 -0
- package/dist/types/modules/panels/model/market-follow-up.d.ts +16 -0
- package/dist/types/modules/panels/model/market-sources-act.d.ts +2 -0
- package/dist/types/modules/panels/model/market-types.d.ts +5 -0
- package/dist/types/modules/panels/model/market.d.ts +2 -0
- package/dist/types/modules/panels/model/publish-preview-routes.d.ts +1 -1
- package/dist/types/shared/api/host/diy-publish-preview.d.ts +11 -0
- package/dist/types/shared/api/host/follow-up-dismiss.d.ts +2 -0
- package/dist/types/shared/api/host/migrate-workbench.d.ts +20 -0
- package/dist/types/shared/api/host/migration-follow-up.d.ts +12 -0
- package/dist/types/shared/hooks/market-queries.d.ts +3 -2
- package/dist/types/shared/hooks/resource-view.d.ts +14 -0
- package/dist/types/shared/hooks/use-api-resource.d.ts +3 -7
- package/package.json +3 -3
- package/skills/workbench-module-diy/FAMILY.md +1 -1
- package/skills/workbench-module-diy/REVIEW.md +2 -2
- package/skills/workbench-module-diy/SKILL.md +1 -0
- package/skills/workbench-module-diy/TOOLS.md +1 -1
- package/skills/workbench-module-diy/WIRING.md +3 -1
- package/skills/workbench-module-diy/WRITES.md +1 -1
package/client.js
CHANGED
|
@@ -788,7 +788,7 @@ window.__ModuleLoader__.load({
|
|
|
788
788
|
//#endregion
|
|
789
789
|
//#region ../shared/dist/lib/react.js
|
|
790
790
|
var react$1 = require("react");
|
|
791
|
-
var h$
|
|
791
|
+
var h$63 = react$1.createElement;
|
|
792
792
|
var Fragment$20 = react$1.Fragment;
|
|
793
793
|
var Component = react$1.Component;
|
|
794
794
|
react$1.createContext;
|
|
@@ -798,7 +798,7 @@ window.__ModuleLoader__.load({
|
|
|
798
798
|
react$1.useLayoutEffect;
|
|
799
799
|
var useMemo$9 = react$1.useMemo;
|
|
800
800
|
react$1.useCallback;
|
|
801
|
-
var useRef$
|
|
801
|
+
var useRef$22 = react$1.useRef;
|
|
802
802
|
react$1.useSyncExternalStore;
|
|
803
803
|
//#endregion
|
|
804
804
|
//#region ../shared/dist/components/Activity.js
|
|
@@ -809,7 +809,7 @@ window.__ModuleLoader__.load({
|
|
|
809
809
|
* @returns 一个 div。
|
|
810
810
|
*/
|
|
811
811
|
function ActivityBlock({ head, children }) {
|
|
812
|
-
return h$
|
|
812
|
+
return h$63("div", { className: "wb-activityBlock" }, head === void 0 ? null : h$63("div", { className: "wb-activityBlockHead" }, head), children);
|
|
813
813
|
}
|
|
814
814
|
/**
|
|
815
815
|
* 一条活动:状态点 + 正文 + 时间,行尾可挂动作;时间一律用它,别自己拼。
|
|
@@ -820,7 +820,7 @@ window.__ModuleLoader__.load({
|
|
|
820
820
|
* @returns 一行。
|
|
821
821
|
*/
|
|
822
822
|
function ActivityLine({ dot, text, at, actions }) {
|
|
823
|
-
return h$
|
|
823
|
+
return h$63("div", { className: "wb-activityLine" }, dot, h$63("span", { className: "wb-activityLineText" }, text), at === void 0 ? null : h$63("span", { className: "wb-activityLineAt" }, at), actions === void 0 ? null : h$63("span", { className: "wb-activityLineActions" }, actions));
|
|
824
824
|
}
|
|
825
825
|
/**
|
|
826
826
|
* 活动行尾那颗动作:给 `href` 就是外链,否则是图标钮并带上 tooltip。
|
|
@@ -834,7 +834,7 @@ window.__ModuleLoader__.load({
|
|
|
834
834
|
*/
|
|
835
835
|
function ActivityAction({ label, hint, icon, href, onClick, failed }) {
|
|
836
836
|
const tip = hint ?? label;
|
|
837
|
-
if (href !== void 0) return h$
|
|
837
|
+
if (href !== void 0) return h$63("a", {
|
|
838
838
|
className: "wb-iconButton",
|
|
839
839
|
href,
|
|
840
840
|
target: "_blank",
|
|
@@ -842,13 +842,13 @@ window.__ModuleLoader__.load({
|
|
|
842
842
|
title: tip,
|
|
843
843
|
"aria-label": label
|
|
844
844
|
}, icon);
|
|
845
|
-
return h$
|
|
845
|
+
return h$63(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
846
846
|
side: "bottom",
|
|
847
847
|
align: "end",
|
|
848
848
|
gap: 6,
|
|
849
849
|
portal: true,
|
|
850
850
|
label: tip
|
|
851
|
-
}, h$
|
|
851
|
+
}, h$63(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
852
852
|
type: "button",
|
|
853
853
|
variant: "ghost",
|
|
854
854
|
size: "sm",
|
|
@@ -870,10 +870,10 @@ window.__ModuleLoader__.load({
|
|
|
870
870
|
*/
|
|
871
871
|
function Note({ tone = "muted", as, role, children }) {
|
|
872
872
|
const className = tone === "problem" ? "wb-problem" : "wb-note";
|
|
873
|
-
return as === "span" ? h$
|
|
873
|
+
return as === "span" ? h$63("span", {
|
|
874
874
|
className,
|
|
875
875
|
role
|
|
876
|
-
}, children) : h$
|
|
876
|
+
}, children) : h$63("p", {
|
|
877
877
|
className,
|
|
878
878
|
role
|
|
879
879
|
}, children);
|
|
@@ -917,10 +917,10 @@ window.__ModuleLoader__.load({
|
|
|
917
917
|
render() {
|
|
918
918
|
const { reason } = this.state;
|
|
919
919
|
if (reason === null) return this.props.children;
|
|
920
|
-
return h$
|
|
920
|
+
return h$63(Note, { tone: "problem" }, h$63("span", null, this.props.t("panels.cardBroken", {
|
|
921
921
|
unit: this.props.unit,
|
|
922
922
|
reason
|
|
923
|
-
})), " ", h$
|
|
923
|
+
})), " ", h$63(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
924
924
|
type: "button",
|
|
925
925
|
variant: "outline",
|
|
926
926
|
size: "sm",
|
|
@@ -970,19 +970,19 @@ window.__ModuleLoader__.load({
|
|
|
970
970
|
const owner = (props.units ?? []).find((face) => face.approval?.tools.includes(input.tool) === true);
|
|
971
971
|
if (owner?.approval !== void 0) {
|
|
972
972
|
const Render = owner.approval.render;
|
|
973
|
-
return h$
|
|
973
|
+
return h$63(CardBoundary, {
|
|
974
974
|
unit: owner.unit,
|
|
975
975
|
resetKey: props.callId ?? "",
|
|
976
976
|
t
|
|
977
|
-
}, h$
|
|
977
|
+
}, h$63(Render, {
|
|
978
978
|
input,
|
|
979
979
|
t
|
|
980
980
|
}));
|
|
981
981
|
}
|
|
982
982
|
const shell = props.renderShell?.(input, t);
|
|
983
|
-
if (shell !== void 0 && shell !== null) return h$
|
|
983
|
+
if (shell !== void 0 && shell !== null) return h$63(Fragment$20, null, shell);
|
|
984
984
|
if (command === "") return null;
|
|
985
|
-
return h$
|
|
985
|
+
return h$63(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
|
|
986
986
|
code: command,
|
|
987
987
|
className: "wb-approvalCommand",
|
|
988
988
|
copyLabel: t("blocker.copy"),
|
|
@@ -1000,10 +1000,10 @@ window.__ModuleLoader__.load({
|
|
|
1000
1000
|
* @returns 一个 div。
|
|
1001
1001
|
*/
|
|
1002
1002
|
function ApprovalPlan({ rows, hint, warn, children }) {
|
|
1003
|
-
return h$
|
|
1003
|
+
return h$63("div", { className: "wb-approvalPlan" }, hint === void 0 ? null : h$63("p", { className: "wb-approvalHint" }, hint), h$63("dl", { className: "wb-approvalRows" }, rows.map((row, index) => h$63("div", {
|
|
1004
1004
|
className: "wb-approvalRow",
|
|
1005
1005
|
key: String(index)
|
|
1006
|
-
}, h$
|
|
1006
|
+
}, h$63("dt", { className: "wb-approvalLabel" }, row.label), h$63("dd", { className: "wb-approvalValue" }, row.value)))), children, warn === void 0 ? null : h$63("p", { className: "wb-approvalWarn" }, warn));
|
|
1007
1007
|
}
|
|
1008
1008
|
//#endregion
|
|
1009
1009
|
//#region ../shared/dist/components/CardHead.js
|
|
@@ -1020,47 +1020,47 @@ window.__ModuleLoader__.load({
|
|
|
1020
1020
|
function CardHead({ t, title, meta, refreshing, onRefresh, gear, gearOpen, onToggleGear, platformHref, platform, platformTitle }) {
|
|
1021
1021
|
const refreshLabel = refreshing ? t("rightbar.refreshing") : t("rightbar.refresh");
|
|
1022
1022
|
const platformLabel = platformTitle ?? platform ?? t("rightbar.openPlatform");
|
|
1023
|
-
return h$
|
|
1023
|
+
return h$63("header", { className: "wb-cardHead" }, h$63("h2", { className: "wb-cardTitle" }, title), meta === void 0 ? null : h$63("span", { className: "wb-cardMeta" }, meta), platformHref === void 0 ? null : h$63(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
1024
1024
|
side: "bottom",
|
|
1025
1025
|
align: "end",
|
|
1026
1026
|
gap: 6,
|
|
1027
1027
|
portal: true,
|
|
1028
1028
|
label: platformLabel
|
|
1029
|
-
}, h$
|
|
1029
|
+
}, h$63("a", {
|
|
1030
1030
|
className: "wb-iconButton wb-cardOpen",
|
|
1031
1031
|
href: platformHref,
|
|
1032
1032
|
target: "_blank",
|
|
1033
1033
|
rel: "noreferrer noopener",
|
|
1034
1034
|
"aria-label": platform ?? platformLabel
|
|
1035
|
-
}, h$
|
|
1035
|
+
}, h$63(_deepseek_ai_dsh_client_ui_primitives.IconRightUpOutlineRegular, { size: 14 }))), h$63(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
1036
1036
|
side: "bottom",
|
|
1037
1037
|
align: "end",
|
|
1038
1038
|
gap: 6,
|
|
1039
1039
|
portal: true,
|
|
1040
1040
|
label: refreshLabel
|
|
1041
|
-
}, h$
|
|
1041
|
+
}, h$63(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
1042
1042
|
type: "button",
|
|
1043
1043
|
size: "sm",
|
|
1044
1044
|
variant: "ghost",
|
|
1045
1045
|
className: `wb-cardRefresh${refreshing ? " wb-spinning" : ""}`,
|
|
1046
1046
|
"aria-label": refreshLabel,
|
|
1047
1047
|
disabled: refreshing,
|
|
1048
|
-
icon: h$
|
|
1048
|
+
icon: h$63(_deepseek_ai_dsh_client_ui_primitives.IconRefreshOutlineRegular, { size: 14 }),
|
|
1049
1049
|
onClick: onRefresh
|
|
1050
|
-
})), gear === void 0 || onToggleGear === void 0 ? null : h$
|
|
1050
|
+
})), gear === void 0 || onToggleGear === void 0 ? null : h$63(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
1051
1051
|
side: "bottom",
|
|
1052
1052
|
align: "end",
|
|
1053
1053
|
gap: 6,
|
|
1054
1054
|
portal: true,
|
|
1055
1055
|
label: gear
|
|
1056
|
-
}, h$
|
|
1056
|
+
}, h$63(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
1057
1057
|
type: "button",
|
|
1058
1058
|
size: "sm",
|
|
1059
1059
|
variant: "ghost",
|
|
1060
1060
|
className: `wb-cardGear${gearOpen === true ? " wb-iconButtonActive" : ""}`,
|
|
1061
1061
|
"aria-label": gear,
|
|
1062
1062
|
"aria-expanded": gearOpen === true,
|
|
1063
|
-
icon: h$
|
|
1063
|
+
icon: h$63(_deepseek_ai_dsh_client_ui_primitives.IconSettingsOutlineRegular, { size: 15 }),
|
|
1064
1064
|
onClick: onToggleGear
|
|
1065
1065
|
})));
|
|
1066
1066
|
}
|
|
@@ -1077,13 +1077,13 @@ window.__ModuleLoader__.load({
|
|
|
1077
1077
|
* @returns 一个 `<section>`。
|
|
1078
1078
|
*/
|
|
1079
1079
|
function Card({ t, title, refreshing, onRefresh, meta, head, children }) {
|
|
1080
|
-
return h$
|
|
1080
|
+
return h$63("section", { className: "wb-card" }, head === void 0 ? h$63(CardHead, {
|
|
1081
1081
|
t,
|
|
1082
1082
|
title,
|
|
1083
1083
|
refreshing,
|
|
1084
1084
|
onRefresh,
|
|
1085
1085
|
meta
|
|
1086
|
-
}) : head, h$
|
|
1086
|
+
}) : head, h$63("div", { className: "wb-cardBody" }, children));
|
|
1087
1087
|
}
|
|
1088
1088
|
var CardAnchor_module_default = { anchor: "_anchor_yq4s2_1" };
|
|
1089
1089
|
//#endregion
|
|
@@ -1103,7 +1103,7 @@ window.__ModuleLoader__.load({
|
|
|
1103
1103
|
* @returns 带 id 的占位 div。
|
|
1104
1104
|
*/
|
|
1105
1105
|
function CardAnchor({ unit, children }) {
|
|
1106
|
-
return h$
|
|
1106
|
+
return h$63("div", {
|
|
1107
1107
|
id: cardIdOf(unit),
|
|
1108
1108
|
className: CardAnchor_module_default.anchor
|
|
1109
1109
|
}, children);
|
|
@@ -1117,13 +1117,13 @@ window.__ModuleLoader__.load({
|
|
|
1117
1117
|
* @returns 一枚 `StateDot state="ongoing"`,自身不带文字。
|
|
1118
1118
|
*/
|
|
1119
1119
|
function Spinner({ size = 14, label }) {
|
|
1120
|
-
return h$
|
|
1120
|
+
return h$63("span", {
|
|
1121
1121
|
className: "wb-spinner",
|
|
1122
1122
|
...label === void 0 ? { "aria-hidden": true } : {
|
|
1123
1123
|
role: "status",
|
|
1124
1124
|
"aria-label": label
|
|
1125
1125
|
}
|
|
1126
|
-
}, h$
|
|
1126
|
+
}, h$63(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
|
|
1127
1127
|
state: "ongoing",
|
|
1128
1128
|
size
|
|
1129
1129
|
}));
|
|
@@ -1131,24 +1131,24 @@ window.__ModuleLoader__.load({
|
|
|
1131
1131
|
//#endregion
|
|
1132
1132
|
//#region ../shared/dist/components/ChoiceGroup.js
|
|
1133
1133
|
function ChoiceMenu(input) {
|
|
1134
|
-
const body = input.loading ? h$
|
|
1134
|
+
const body = input.loading ? h$63("span", {
|
|
1135
1135
|
className: "wb-choiceLoading",
|
|
1136
1136
|
role: "status"
|
|
1137
|
-
}, h$
|
|
1137
|
+
}, h$63(Spinner, { size: 14 }), h$63("span", { className: "wb-choiceLoadingText" }, input.loadingText ?? "…")) : input.options.length === 0 ? input.emptyText === void 0 ? null : h$63("span", { className: "wb-choiceEmpty" }, input.emptyText) : input.options.map((option) => {
|
|
1138
1138
|
const row = input.rowOf(option.value);
|
|
1139
|
-
return h$
|
|
1139
|
+
return h$63(Fragment$20, { key: option.value }, h$63("label", { className: `wb-choiceOption${row.checked ? " wb-choiceOptionOn" : ""}` }, h$63("input", {
|
|
1140
1140
|
className: input.multi ? "wb-checkbox" : "wb-radio",
|
|
1141
1141
|
type: input.multi ? "checkbox" : "radio",
|
|
1142
1142
|
name: input.name,
|
|
1143
1143
|
checked: row.checked,
|
|
1144
1144
|
disabled: input.disabled,
|
|
1145
1145
|
onChange: row.onSelect
|
|
1146
|
-
}), input.multi ? h$
|
|
1146
|
+
}), input.multi ? h$63("span", {
|
|
1147
1147
|
className: "wb-checkboxBox",
|
|
1148
1148
|
"aria-hidden": "true"
|
|
1149
|
-
}, row.checked ? h$
|
|
1149
|
+
}, row.checked ? h$63(_deepseek_ai_dsh_client_ui_primitives.IconCheckOutlineRegular, { size: 12 }) : null) : null, h$63("span", { className: "wb-choiceLabel" }, h$63("span", { className: "wb-choiceLabelText" }, option.label), option.description === void 0 ? null : h$63("span", { className: "wb-choiceDescription" }, option.description))));
|
|
1150
1150
|
});
|
|
1151
|
-
return h$
|
|
1151
|
+
return h$63("div", {
|
|
1152
1152
|
className: "wb-choiceMenu",
|
|
1153
1153
|
"data-variant": input.variant,
|
|
1154
1154
|
role: input.multi ? "group" : "radiogroup",
|
|
@@ -1182,7 +1182,7 @@ window.__ModuleLoader__.load({
|
|
|
1182
1182
|
if (props.multi === true) {
|
|
1183
1183
|
const values = props.values;
|
|
1184
1184
|
const onChange = props.onChange;
|
|
1185
|
-
return h$
|
|
1185
|
+
return h$63(ChoiceMenu, {
|
|
1186
1186
|
label: common.label,
|
|
1187
1187
|
name: common.name,
|
|
1188
1188
|
options: common.options,
|
|
@@ -1202,7 +1202,7 @@ window.__ModuleLoader__.load({
|
|
|
1202
1202
|
}
|
|
1203
1203
|
const value = props.value;
|
|
1204
1204
|
const onChange = props.onChange;
|
|
1205
|
-
return h$
|
|
1205
|
+
return h$63(ChoiceMenu, {
|
|
1206
1206
|
label: common.label,
|
|
1207
1207
|
name: common.name,
|
|
1208
1208
|
options: common.options,
|
|
@@ -1255,17 +1255,17 @@ window.__ModuleLoader__.load({
|
|
|
1255
1255
|
function FormActions({ actions }) {
|
|
1256
1256
|
if (actions.length === 0) return null;
|
|
1257
1257
|
reportExtraPrimaries(actions);
|
|
1258
|
-
return h$
|
|
1258
|
+
return h$63("div", { className: "wb-formActions" }, ordered(actions).map((action) => {
|
|
1259
1259
|
const kind = kindOf(action);
|
|
1260
1260
|
const busy = action.busy === true;
|
|
1261
|
-
return h$
|
|
1261
|
+
return h$63(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
1262
1262
|
key: action.key,
|
|
1263
1263
|
type: "button",
|
|
1264
1264
|
size: "sm",
|
|
1265
1265
|
variant: variantOf(kind),
|
|
1266
1266
|
className: kind === "danger" ? "wb-formActionDanger" : void 0,
|
|
1267
1267
|
disabled: busy || action.disabled === true,
|
|
1268
|
-
icon: busy ? h$
|
|
1268
|
+
icon: busy ? h$63(Spinner, { size: 12 }) : void 0,
|
|
1269
1269
|
onClick: action.onClick
|
|
1270
1270
|
}, action.label);
|
|
1271
1271
|
}));
|
|
@@ -1278,7 +1278,7 @@ window.__ModuleLoader__.load({
|
|
|
1278
1278
|
* @returns 竖排的 div。
|
|
1279
1279
|
*/
|
|
1280
1280
|
function Rows({ children }) {
|
|
1281
|
-
return h$
|
|
1281
|
+
return h$63("div", { className: "wb-rows" }, children);
|
|
1282
1282
|
}
|
|
1283
1283
|
/**
|
|
1284
1284
|
* 一行键值:左边名字、右边值;要成对说明一项数据就用它,别自己写两栏。
|
|
@@ -1287,7 +1287,7 @@ window.__ModuleLoader__.load({
|
|
|
1287
1287
|
* @returns 一行两格。
|
|
1288
1288
|
*/
|
|
1289
1289
|
function Row({ label, value }) {
|
|
1290
|
-
return h$
|
|
1290
|
+
return h$63("div", { className: "wb-row" }, h$63("span", { className: "wb-rowKey" }, label), h$63("span", { className: "wb-rowValue" }, value));
|
|
1291
1291
|
}
|
|
1292
1292
|
//#endregion
|
|
1293
1293
|
//#region ../shared/dist/components/ConfirmBar.js
|
|
@@ -1304,19 +1304,19 @@ window.__ModuleLoader__.load({
|
|
|
1304
1304
|
* @returns 一个 `role="group"` 的条;`actions` 空数组时最后那一块不渲染。
|
|
1305
1305
|
*/
|
|
1306
1306
|
function ConfirmBar({ title, hint, rows, actions, problem, busy, label }) {
|
|
1307
|
-
return h$
|
|
1307
|
+
return h$63("div", {
|
|
1308
1308
|
className: "wb-confirmBar",
|
|
1309
1309
|
role: "group",
|
|
1310
1310
|
"aria-label": label ?? (typeof title === "string" ? title : void 0),
|
|
1311
1311
|
"aria-busy": busy
|
|
1312
|
-
}, h$
|
|
1312
|
+
}, h$63("p", { className: "wb-confirmBarTitle" }, title), hint === void 0 ? null : h$63("p", { className: "wb-confirmBarHint" }, hint), rows === void 0 || rows.length === 0 ? null : h$63(Rows, null, rows.map((row) => h$63(Row, {
|
|
1313
1313
|
key: row.key,
|
|
1314
1314
|
label: row.label,
|
|
1315
1315
|
value: row.value
|
|
1316
|
-
}))), problem === void 0 ? null : h$
|
|
1316
|
+
}))), problem === void 0 ? null : h$63(Note, {
|
|
1317
1317
|
tone: "problem",
|
|
1318
1318
|
role: "alert"
|
|
1319
|
-
}, problem), h$
|
|
1319
|
+
}, problem), h$63(FormActions, { actions }));
|
|
1320
1320
|
}
|
|
1321
1321
|
//#endregion
|
|
1322
1322
|
//#region ../shared/dist/components/Field.js
|
|
@@ -1328,7 +1328,7 @@ window.__ModuleLoader__.load({
|
|
|
1328
1328
|
* @returns 一个 `<label>`,点标签会聚焦里面的控件。
|
|
1329
1329
|
*/
|
|
1330
1330
|
function Field({ label, hint, children }) {
|
|
1331
|
-
return h$
|
|
1331
|
+
return h$63("label", { className: "wb-field" }, h$63("span", { className: "wb-fieldLabel" }, label), children, hint === void 0 ? null : h$63("span", { className: "wb-fieldHint" }, hint));
|
|
1332
1332
|
}
|
|
1333
1333
|
//#endregion
|
|
1334
1334
|
//#region ../shared/dist/components/FormRows.js
|
|
@@ -1338,7 +1338,7 @@ window.__ModuleLoader__.load({
|
|
|
1338
1338
|
* @returns 竖排的 div。
|
|
1339
1339
|
*/
|
|
1340
1340
|
function FormRows({ children }) {
|
|
1341
|
-
return h$
|
|
1341
|
+
return h$63("div", { className: "wb-formRows" }, children);
|
|
1342
1342
|
}
|
|
1343
1343
|
/**
|
|
1344
1344
|
* 表单一行:左边标签、右边控件,提示与错误占控件下面那一格。
|
|
@@ -1351,14 +1351,14 @@ window.__ModuleLoader__.load({
|
|
|
1351
1351
|
* @returns 一个 `<div>`:里面的 `<label>` 只包标签文字,不包控件、提示与整行的空白。
|
|
1352
1352
|
*/
|
|
1353
1353
|
function FormRow({ label, htmlFor, hint, problem, layout = "inline", children }) {
|
|
1354
|
-
return h$
|
|
1354
|
+
return h$63("div", {
|
|
1355
1355
|
className: "wb-formRow",
|
|
1356
1356
|
"data-layout": layout,
|
|
1357
1357
|
"data-wb-problem": problem === void 0 ? void 0 : ""
|
|
1358
|
-
}, h$
|
|
1358
|
+
}, h$63("label", {
|
|
1359
1359
|
className: "wb-formLabel",
|
|
1360
1360
|
htmlFor
|
|
1361
|
-
}, label), h$
|
|
1361
|
+
}, label), h$63("span", { className: "wb-formControl" }, children), problem === void 0 ? hint === void 0 ? null : h$63("span", { className: "wb-formHint" }, hint) : h$63("span", { className: "wb-formProblem" }, problem));
|
|
1362
1362
|
}
|
|
1363
1363
|
//#endregion
|
|
1364
1364
|
//#region ../shared/dist/components/FormNodes.js
|
|
@@ -1505,7 +1505,7 @@ window.__ModuleLoader__.load({
|
|
|
1505
1505
|
* @returns `FormRow` 组成的数组;没有可画的格子时给空数组。
|
|
1506
1506
|
*/
|
|
1507
1507
|
function formRowsOf(args) {
|
|
1508
|
-
return args.fields.map((field) => h$
|
|
1508
|
+
return args.fields.map((field) => h$63(FormRow, {
|
|
1509
1509
|
key: field.key,
|
|
1510
1510
|
label: field.label,
|
|
1511
1511
|
htmlFor: controlIdOf(field.key),
|
|
@@ -1583,7 +1583,7 @@ window.__ModuleLoader__.load({
|
|
|
1583
1583
|
const { fields, onSubmit, submit, cancel, extra, busy = false, disabled = false, problem } = props;
|
|
1584
1584
|
const [done, setDone] = useState$35(false);
|
|
1585
1585
|
const [reveal, setReveal] = useState$35(0);
|
|
1586
|
-
const rootRef = useRef$
|
|
1586
|
+
const rootRef = useRef$22(null);
|
|
1587
1587
|
const shown = visibleFieldsOf(fields);
|
|
1588
1588
|
const problems = formProblemsOf(shown, done);
|
|
1589
1589
|
reportDuplicateKeys(shown);
|
|
@@ -1602,7 +1602,7 @@ window.__ModuleLoader__.load({
|
|
|
1602
1602
|
}
|
|
1603
1603
|
onSubmit(outcome.values);
|
|
1604
1604
|
};
|
|
1605
|
-
return h$
|
|
1605
|
+
return h$63("form", {
|
|
1606
1606
|
className: "wb-form",
|
|
1607
1607
|
ref: rootRef,
|
|
1608
1608
|
noValidate: true,
|
|
@@ -1610,15 +1610,15 @@ window.__ModuleLoader__.load({
|
|
|
1610
1610
|
event.preventDefault();
|
|
1611
1611
|
submitForm();
|
|
1612
1612
|
}
|
|
1613
|
-
}, h$
|
|
1613
|
+
}, h$63(FormRows, null, formRowsOf({
|
|
1614
1614
|
fields: shown,
|
|
1615
1615
|
problems,
|
|
1616
1616
|
showProblem: done,
|
|
1617
1617
|
busy
|
|
1618
|
-
})), problem === void 0 ? null : h$
|
|
1618
|
+
})), problem === void 0 ? null : h$63(Note, {
|
|
1619
1619
|
tone: "problem",
|
|
1620
1620
|
role: "alert"
|
|
1621
|
-
}, problem), h$
|
|
1621
|
+
}, problem), h$63(FormActions, { actions: formActionsOf({
|
|
1622
1622
|
extra,
|
|
1623
1623
|
cancel,
|
|
1624
1624
|
submit,
|
|
@@ -1639,7 +1639,7 @@ window.__ModuleLoader__.load({
|
|
|
1639
1639
|
* @returns 一个 `<a>`。
|
|
1640
1640
|
*/
|
|
1641
1641
|
function Link({ href, children, title, external = true, className }) {
|
|
1642
|
-
return h$
|
|
1642
|
+
return h$63("a", {
|
|
1643
1643
|
className: className === void 0 ? "wb-link" : `wb-link ${className}`,
|
|
1644
1644
|
href,
|
|
1645
1645
|
...title === void 0 ? {} : { title },
|
|
@@ -1647,7 +1647,7 @@ window.__ModuleLoader__.load({
|
|
|
1647
1647
|
target: "_blank",
|
|
1648
1648
|
rel: "noopener noreferrer"
|
|
1649
1649
|
} : {}
|
|
1650
|
-
}, children, external ? h$
|
|
1650
|
+
}, children, external ? h$63(_deepseek_ai_dsh_client_ui_primitives.IconRightUpOutlineRegular, { size: 12 }) : null);
|
|
1651
1651
|
}
|
|
1652
1652
|
//#endregion
|
|
1653
1653
|
//#region ../shared/dist/contract/long-task.js
|
|
@@ -1739,7 +1739,7 @@ window.__ModuleLoader__.load({
|
|
|
1739
1739
|
//#endregion
|
|
1740
1740
|
//#region ../shared/dist/components/LongTaskRow.js
|
|
1741
1741
|
function RowLink({ href, text }) {
|
|
1742
|
-
return h$
|
|
1742
|
+
return h$63(Link, {
|
|
1743
1743
|
href,
|
|
1744
1744
|
className: "wb-longTaskLink"
|
|
1745
1745
|
}, text);
|
|
@@ -1788,14 +1788,14 @@ window.__ModuleLoader__.load({
|
|
|
1788
1788
|
setArmed(false);
|
|
1789
1789
|
stop.onStop();
|
|
1790
1790
|
};
|
|
1791
|
-
return h$
|
|
1791
|
+
return h$63("div", { className: "wb-longTask" }, h$63("p", { className: "wb-longTaskHead" }, h$63(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
|
|
1792
1792
|
state: longTaskDot(props.status),
|
|
1793
1793
|
size: 10
|
|
1794
|
-
}), h$
|
|
1794
|
+
}), h$63("span", { className: "wb-longTaskHeadline" }, props.headline), (props.links ?? []).map((link) => h$63(RowLink, {
|
|
1795
1795
|
href: link.href,
|
|
1796
1796
|
key: `${link.text}@${link.href}`,
|
|
1797
1797
|
text: link.text
|
|
1798
|
-
})), stop === void 0 ? null : h$
|
|
1798
|
+
})), stop === void 0 ? null : h$63("button", {
|
|
1799
1799
|
type: "button",
|
|
1800
1800
|
className: `wb-longTaskStop${armed ? " wb-longTaskStopArmed" : ""}`,
|
|
1801
1801
|
"data-stop-state": longTaskStopStage({
|
|
@@ -1806,31 +1806,31 @@ window.__ModuleLoader__.load({
|
|
|
1806
1806
|
disabled: busy,
|
|
1807
1807
|
onClick: onStopPress,
|
|
1808
1808
|
onBlur: () => setArmed(false)
|
|
1809
|
-
}, h$
|
|
1809
|
+
}, h$63(_deepseek_ai_dsh_client_ui_primitives.IconStopFillRegular, { size: 12 }), armed ? h$63("span", { className: "wb-longTaskStopLabel" }, stop.askLabel) : null)), problem === "" ? null : h$63("p", { className: "wb-longTaskProblem" }, problem), stopWhy === "" ? null : h$63("p", { className: "wb-longTaskStopWhy" }, stopWhy), !failed ? null : h$63(Fragment$20, null, steps.length === 0 || props.stepsTitle === void 0 ? null : h$63(_deepseek_ai_dsh_client_ui_primitives.DisclosureRow, {
|
|
1810
1810
|
className: "wb-longTaskDump",
|
|
1811
|
-
icon: h$
|
|
1811
|
+
icon: h$63(_deepseek_ai_dsh_client_ui_primitives.IconFlatListOutlineRegular, { size: 14 }),
|
|
1812
1812
|
title: props.stepsTitle,
|
|
1813
1813
|
open: stepsOpen,
|
|
1814
1814
|
expandable: true,
|
|
1815
1815
|
expandOnRowClick: true,
|
|
1816
1816
|
previewChevron: true,
|
|
1817
1817
|
onToggle: () => setStepsOpen(!stepsOpen)
|
|
1818
|
-
}, h$
|
|
1818
|
+
}, h$63(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
|
|
1819
1819
|
code: steps.join("\n"),
|
|
1820
1820
|
className: "wb-longTaskDump",
|
|
1821
1821
|
showHeader: props.copyLabel !== void 0,
|
|
1822
1822
|
copyLabel: props.copyLabel ?? "",
|
|
1823
1823
|
copiedLabel: props.copiedLabel ?? ""
|
|
1824
|
-
})), raw === "" || props.rawTitle === void 0 ? null : h$
|
|
1824
|
+
})), raw === "" || props.rawTitle === void 0 ? null : h$63(_deepseek_ai_dsh_client_ui_primitives.DisclosureRow, {
|
|
1825
1825
|
className: "wb-longTaskDump",
|
|
1826
|
-
icon: h$
|
|
1826
|
+
icon: h$63(_deepseek_ai_dsh_client_ui_primitives.IconCodeOutlineRegular, { size: 14 }),
|
|
1827
1827
|
title: props.rawTitle,
|
|
1828
1828
|
open: rawOpen,
|
|
1829
1829
|
expandable: true,
|
|
1830
1830
|
expandOnRowClick: true,
|
|
1831
1831
|
previewChevron: true,
|
|
1832
1832
|
onToggle: () => setRawOpen(!rawOpen)
|
|
1833
|
-
}, h$
|
|
1833
|
+
}, h$63(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
|
|
1834
1834
|
code: raw,
|
|
1835
1835
|
className: "wb-longTaskDump",
|
|
1836
1836
|
showHeader: props.copyLabel !== void 0,
|
|
@@ -1846,13 +1846,13 @@ window.__ModuleLoader__.load({
|
|
|
1846
1846
|
* @returns 一叠占位条。
|
|
1847
1847
|
*/
|
|
1848
1848
|
function SkeletonRows({ rows = 4 }) {
|
|
1849
|
-
return h$
|
|
1849
|
+
return h$63("div", {
|
|
1850
1850
|
className: "wb-skeleton",
|
|
1851
1851
|
"aria-hidden": "true"
|
|
1852
|
-
}, Array.from({ length: rows }, (_, index) => h$
|
|
1852
|
+
}, Array.from({ length: rows }, (_, index) => h$63("span", {
|
|
1853
1853
|
key: index,
|
|
1854
1854
|
className: "wb-skeletonRow"
|
|
1855
|
-
}, h$
|
|
1855
|
+
}, h$63("span", { className: "wb-skeletonBar wb-skeletonBarTitle" }), h$63("span", { className: "wb-skeletonBar wb-skeletonBarMeta" }))));
|
|
1856
1856
|
}
|
|
1857
1857
|
/**
|
|
1858
1858
|
* 居中一屏:要他先选一个 / 正在读 / 读不到时用它占住卡片版面。
|
|
@@ -1865,13 +1865,13 @@ window.__ModuleLoader__.load({
|
|
|
1865
1865
|
* @returns 一个 `role="status"` 的居中块。
|
|
1866
1866
|
*/
|
|
1867
1867
|
function CenteredState({ icon, title, hint, detail, action, compact = false }) {
|
|
1868
|
-
return h$
|
|
1868
|
+
return h$63("div", {
|
|
1869
1869
|
className: compact ? "wb-centered wb-centeredCompact" : "wb-centered",
|
|
1870
1870
|
role: "status"
|
|
1871
|
-
}, icon === null ? null : h$
|
|
1871
|
+
}, icon === null ? null : h$63("span", {
|
|
1872
1872
|
className: "wb-centeredHero",
|
|
1873
1873
|
"aria-hidden": "true"
|
|
1874
|
-
}, icon), h$
|
|
1874
|
+
}, icon), h$63("div", { className: "wb-centeredTitle" }, title), hint === void 0 ? null : h$63("div", { className: "wb-centeredHint" }, hint), detail === void 0 ? null : h$63("div", { className: "wb-centeredDetail" }, detail), action === void 0 ? null : h$63("div", { className: "wb-centeredAction" }, action));
|
|
1875
1875
|
}
|
|
1876
1876
|
/**
|
|
1877
1877
|
* 就绪但空:它只是 `CenteredState` 的简写,标题就是那句空态文案。
|
|
@@ -1881,7 +1881,7 @@ window.__ModuleLoader__.load({
|
|
|
1881
1881
|
* @returns 一个居中块。
|
|
1882
1882
|
*/
|
|
1883
1883
|
function EmptyState({ text, icon = null, compact = false }) {
|
|
1884
|
-
return h$
|
|
1884
|
+
return h$63(CenteredState, {
|
|
1885
1885
|
icon,
|
|
1886
1886
|
title: text,
|
|
1887
1887
|
compact
|
|
@@ -1899,7 +1899,7 @@ window.__ModuleLoader__.load({
|
|
|
1899
1899
|
* @returns 一组按钮。
|
|
1900
1900
|
*/
|
|
1901
1901
|
function SaveBar({ busy, disabled, labels, onCancel, onSave }) {
|
|
1902
|
-
return h$
|
|
1902
|
+
return h$63(FormActions, { actions: [{
|
|
1903
1903
|
key: "cancel",
|
|
1904
1904
|
label: labels.cancel,
|
|
1905
1905
|
kind: "default",
|
|
@@ -1932,7 +1932,7 @@ window.__ModuleLoader__.load({
|
|
|
1932
1932
|
* @returns 一颗 `<button>`。
|
|
1933
1933
|
*/
|
|
1934
1934
|
function selectTriggerNode(args) {
|
|
1935
|
-
return h$
|
|
1935
|
+
return h$63("button", {
|
|
1936
1936
|
type: "button",
|
|
1937
1937
|
id: args.id,
|
|
1938
1938
|
className: args.className,
|
|
@@ -1943,7 +1943,7 @@ window.__ModuleLoader__.load({
|
|
|
1943
1943
|
"aria-label": args.ariaLabel,
|
|
1944
1944
|
title: args.title,
|
|
1945
1945
|
onClick: args.onOpen
|
|
1946
|
-
}, args.iconOnly ? h$
|
|
1946
|
+
}, args.iconOnly ? h$63("span", { className: "wb-selectIcon" }, args.icon) : h$63(Fragment$20, null, args.icon === void 0 ? null : h$63("span", { className: "wb-selectIcon" }, args.icon), h$63("span", { className: "wb-selectValue" }, args.value), h$63("span", { className: "wb-selectChevron" }, h$63(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutlineRegular, { size: 14 }))));
|
|
1947
1947
|
}
|
|
1948
1948
|
/**
|
|
1949
1949
|
* 名单还没读到时的触发器:禁用 + `aria-busy` 的按钮,`SelectField` 在 `loading` 那档画它。
|
|
@@ -1955,7 +1955,7 @@ window.__ModuleLoader__.load({
|
|
|
1955
1955
|
* @returns 一颗禁用且 `aria-busy` 的按钮。
|
|
1956
1956
|
*/
|
|
1957
1957
|
function selectLoadingNode(args) {
|
|
1958
|
-
return h$
|
|
1958
|
+
return h$63("button", {
|
|
1959
1959
|
type: "button",
|
|
1960
1960
|
id: args.id,
|
|
1961
1961
|
className: `${args.className} wb-selectLoading`,
|
|
@@ -1964,7 +1964,7 @@ window.__ModuleLoader__.load({
|
|
|
1964
1964
|
"aria-invalid": args.invalid || void 0,
|
|
1965
1965
|
"aria-label": args.ariaLabel,
|
|
1966
1966
|
title: args.loadingText
|
|
1967
|
-
}, h$
|
|
1967
|
+
}, h$63("span", { className: "wb-selectValue" }, h$63(_deepseek_ai_dsh_client_ui_primitives.TextShimmer, { active: true }, args.loadingText ?? "…")), h$63("span", { className: "wb-selectChevron" }, h$63(Spinner, { size: 14 })));
|
|
1968
1968
|
}
|
|
1969
1969
|
//#endregion
|
|
1970
1970
|
//#region ../shared/dist/components/TextField.js
|
|
@@ -1974,7 +1974,7 @@ window.__ModuleLoader__.load({
|
|
|
1974
1974
|
* @returns 输入框元素;`className` 是追加在基础类名之后,而不是替换它。
|
|
1975
1975
|
*/
|
|
1976
1976
|
function TextField({ invalid = false, className, ...rest }) {
|
|
1977
|
-
return h$
|
|
1977
|
+
return h$63("input", {
|
|
1978
1978
|
...rest,
|
|
1979
1979
|
className: className === void 0 ? "wb-textField" : `wb-textField ${className}`,
|
|
1980
1980
|
"aria-invalid": invalid || void 0
|
|
@@ -1997,7 +1997,7 @@ window.__ModuleLoader__.load({
|
|
|
1997
1997
|
...option.icon === void 0 ? {} : { icon: option.icon },
|
|
1998
1998
|
...option.disabled === true ? { disabled: true } : {}
|
|
1999
1999
|
};
|
|
2000
|
-
const revealed = (node) => h$
|
|
2000
|
+
const revealed = (node) => h$63("span", {
|
|
2001
2001
|
className: "wb-selectReveal",
|
|
2002
2002
|
"data-wb-select-reveal": ""
|
|
2003
2003
|
}, node);
|
|
@@ -2019,14 +2019,14 @@ window.__ModuleLoader__.load({
|
|
|
2019
2019
|
}, [open, revealId]);
|
|
2020
2020
|
}
|
|
2021
2021
|
function selectValueNode(current, renderValue, placeholder) {
|
|
2022
|
-
if (current === void 0) return h$
|
|
2022
|
+
if (current === void 0) return h$63("span", { className: "wb-selectPlaceholder" }, placeholder ?? "—");
|
|
2023
2023
|
return renderValue === void 0 ? current.label : renderValue(current);
|
|
2024
2024
|
}
|
|
2025
2025
|
function searchNode(args) {
|
|
2026
|
-
return h$
|
|
2026
|
+
return h$63("span", {
|
|
2027
2027
|
ref: args.boxRef,
|
|
2028
2028
|
className: args.className
|
|
2029
|
-
}, h$
|
|
2029
|
+
}, h$63("span", { className: "wb-selectSearchIcon" }, h$63(_deepseek_ai_dsh_client_ui_primitives.IconSearchOutlineRegular, { size: 14 })), h$63(TextField, {
|
|
2030
2030
|
id: args.id,
|
|
2031
2031
|
name: args.name,
|
|
2032
2032
|
className: "wb-selectSearchInput",
|
|
@@ -2041,7 +2041,7 @@ window.__ModuleLoader__.load({
|
|
|
2041
2041
|
}));
|
|
2042
2042
|
}
|
|
2043
2043
|
function menuNode(args) {
|
|
2044
|
-
return h$
|
|
2044
|
+
return h$63(_deepseek_ai_dsh_client_ui_primitives.Menu, {
|
|
2045
2045
|
open: args.open,
|
|
2046
2046
|
portal: true,
|
|
2047
2047
|
className: "wb-selectAnchor",
|
|
@@ -2058,11 +2058,11 @@ window.__ModuleLoader__.load({
|
|
|
2058
2058
|
});
|
|
2059
2059
|
}
|
|
2060
2060
|
function framed(label, hint, className, control) {
|
|
2061
|
-
const inner = label === void 0 ? hint === void 0 ? control : h$
|
|
2061
|
+
const inner = label === void 0 ? hint === void 0 ? control : h$63("span", { className: "wb-select" }, control, h$63("span", { className: "wb-selectHint" }, hint)) : h$63(Field, {
|
|
2062
2062
|
label,
|
|
2063
2063
|
hint
|
|
2064
2064
|
}, control);
|
|
2065
|
-
return className === void 0 ? inner : h$
|
|
2065
|
+
return className === void 0 ? inner : h$63("div", { className }, inner);
|
|
2066
2066
|
}
|
|
2067
2067
|
/** 算候选项用来匹配搜索的文本:有 `searchText` 就用它,否则取字符串标签;标签不是字符串又没给它是空串(这项搜不到)。 */
|
|
2068
2068
|
function searchTextOf(option) {
|
|
@@ -2117,11 +2117,11 @@ window.__ModuleLoader__.load({
|
|
|
2117
2117
|
const [openState, setOpenState] = useState$35(false);
|
|
2118
2118
|
const [query, setQuery] = useState$35("");
|
|
2119
2119
|
const [cursor, setCursor] = useState$35(null);
|
|
2120
|
-
const boxRef = useRef$
|
|
2121
|
-
const triggerRef = useRef$
|
|
2122
|
-
const wasOpenRef = useRef$
|
|
2123
|
-
const pickedRef = useRef$
|
|
2124
|
-
const closedByUsRef = useRef$
|
|
2120
|
+
const boxRef = useRef$22(null);
|
|
2121
|
+
const triggerRef = useRef$22(null);
|
|
2122
|
+
const wasOpenRef = useRef$22(false);
|
|
2123
|
+
const pickedRef = useRef$22(false);
|
|
2124
|
+
const closedByUsRef = useRef$22(false);
|
|
2125
2125
|
const open = openProp ?? openState;
|
|
2126
2126
|
const setOpen = (next) => {
|
|
2127
2127
|
if (openProp === void 0) setOpenState(next);
|
|
@@ -2201,7 +2201,7 @@ window.__ModuleLoader__.load({
|
|
|
2201
2201
|
ariaLabel,
|
|
2202
2202
|
loadingText
|
|
2203
2203
|
}));
|
|
2204
|
-
if (fallback !== void 0 && options.length === 0) return framed(label, hint, className, h$
|
|
2204
|
+
if (fallback !== void 0 && options.length === 0) return framed(label, hint, className, h$63(TextField, {
|
|
2205
2205
|
id,
|
|
2206
2206
|
name,
|
|
2207
2207
|
className: "wb-selectFallback",
|
|
@@ -2284,11 +2284,11 @@ window.__ModuleLoader__.load({
|
|
|
2284
2284
|
* @returns 一个 `role="group"` 的 section。
|
|
2285
2285
|
*/
|
|
2286
2286
|
function SettingsSection({ label, title, action, children }) {
|
|
2287
|
-
return h$
|
|
2287
|
+
return h$63("section", {
|
|
2288
2288
|
className: "wb-settings",
|
|
2289
2289
|
role: "group",
|
|
2290
2290
|
"aria-label": label
|
|
2291
|
-
}, h$
|
|
2291
|
+
}, h$63("header", { className: "wb-settingsHead" }, h$63("span", { className: "wb-settingsTitle" }, title), action), children);
|
|
2292
2292
|
}
|
|
2293
2293
|
//#endregion
|
|
2294
2294
|
//#region ../shared/dist/components/Stack.js
|
|
@@ -2298,7 +2298,7 @@ window.__ModuleLoader__.load({
|
|
|
2298
2298
|
* @returns 竖排的 div。
|
|
2299
2299
|
*/
|
|
2300
2300
|
function Stack({ children }) {
|
|
2301
|
-
return h$
|
|
2301
|
+
return h$63("div", { className: "wb-stack" }, children);
|
|
2302
2302
|
}
|
|
2303
2303
|
//#endregion
|
|
2304
2304
|
//#region ../shared/dist/components/StateBlock.js
|
|
@@ -2313,12 +2313,12 @@ window.__ModuleLoader__.load({
|
|
|
2313
2313
|
* @returns 一个 div。
|
|
2314
2314
|
*/
|
|
2315
2315
|
function StateBlock({ title, dot, hint, actions, resolving, children }) {
|
|
2316
|
-
return h$
|
|
2316
|
+
return h$63("div", { className: "wb-stateBlock" }, title === void 0 && dot === void 0 ? null : h$63("p", { className: "wb-stateBlockTitle" }, dot, title), resolving === void 0 ? null : h$63("p", { className: "wb-stateBlockResolving" }, resolving), hint === void 0 ? null : h$63("p", { className: "wb-stateBlockHint" }, hint), children, actions === void 0 ? null : h$63("div", { className: "wb-stateBlockActions" }, actions));
|
|
2317
2317
|
}
|
|
2318
2318
|
//#endregion
|
|
2319
2319
|
//#region ../shared/dist/components/icons.js
|
|
2320
2320
|
function Shell({ size, strokeWidth = 1, viewBox = "0 0 16 16", children }) {
|
|
2321
|
-
return h$
|
|
2321
|
+
return h$63("svg", {
|
|
2322
2322
|
width: size,
|
|
2323
2323
|
height: size,
|
|
2324
2324
|
viewBox,
|
|
@@ -2335,10 +2335,10 @@ window.__ModuleLoader__.load({
|
|
|
2335
2335
|
* @returns 一枚 `aria-hidden` 的 svg。
|
|
2336
2336
|
*/
|
|
2337
2337
|
function IconConversation({ size = 16 }) {
|
|
2338
|
-
return h$
|
|
2338
|
+
return h$63(Shell, {
|
|
2339
2339
|
size,
|
|
2340
2340
|
strokeWidth: 1.3
|
|
2341
|
-
}, h$
|
|
2341
|
+
}, h$63("path", {
|
|
2342
2342
|
d: "M2.5 7.2c0-2.3 2.1-4.2 4.8-4.2h1.4c2.7 0 4.8 1.9 4.8 4.2s-2.1 4.2-4.8 4.2H7.5l-3.2 2v-2.3c-1.1-.8-1.8-2-1.8-3.9Z",
|
|
2343
2343
|
stroke: "currentColor",
|
|
2344
2344
|
strokeLinejoin: "round"
|
|
@@ -2353,30 +2353,30 @@ window.__ModuleLoader__.load({
|
|
|
2353
2353
|
* @returns 一枚 `aria-hidden` 的 svg。
|
|
2354
2354
|
*/
|
|
2355
2355
|
function IconBrandMark({ size = 24 }) {
|
|
2356
|
-
return h$
|
|
2356
|
+
return h$63(Shell, {
|
|
2357
2357
|
size,
|
|
2358
2358
|
viewBox: "0 0 64 64"
|
|
2359
|
-
}, h$
|
|
2359
|
+
}, h$63("path", {
|
|
2360
2360
|
d: BRAND_FRAME,
|
|
2361
2361
|
fill: "currentColor",
|
|
2362
2362
|
fillRule: "evenodd"
|
|
2363
|
-
}), h$
|
|
2363
|
+
}), h$63("rect", {
|
|
2364
2364
|
x: 27.5,
|
|
2365
2365
|
y: 48,
|
|
2366
2366
|
width: 9,
|
|
2367
2367
|
height: 4.75,
|
|
2368
2368
|
fill: "currentColor"
|
|
2369
|
-
}), h$
|
|
2369
|
+
}), h$63("rect", {
|
|
2370
2370
|
x: 19,
|
|
2371
2371
|
y: 52.75,
|
|
2372
2372
|
width: 26,
|
|
2373
2373
|
height: 4.75,
|
|
2374
2374
|
rx: 2.375,
|
|
2375
2375
|
fill: "currentColor"
|
|
2376
|
-
}), h$
|
|
2376
|
+
}), h$63("g", { transform: BRAND_TAIL_TRANSFORM }, h$63("path", {
|
|
2377
2377
|
d: BRAND_TAIL,
|
|
2378
2378
|
fill: "currentColor"
|
|
2379
|
-
}), h$
|
|
2379
|
+
}), h$63("circle", {
|
|
2380
2380
|
cx: 6.885,
|
|
2381
2381
|
cy: 13.742,
|
|
2382
2382
|
r: 1.95,
|
|
@@ -2389,30 +2389,30 @@ window.__ModuleLoader__.load({
|
|
|
2389
2389
|
* @returns 一枚 `aria-hidden` 的 svg。
|
|
2390
2390
|
*/
|
|
2391
2391
|
function IconOpencli({ size = 16 }) {
|
|
2392
|
-
return h$
|
|
2392
|
+
return h$63(Shell, {
|
|
2393
2393
|
size,
|
|
2394
2394
|
viewBox: "0 0 64 64"
|
|
2395
|
-
}, h$
|
|
2395
|
+
}, h$63("defs", null, h$63("linearGradient", {
|
|
2396
2396
|
id: "opencli-mark",
|
|
2397
2397
|
x1: "0%",
|
|
2398
2398
|
y1: "0%",
|
|
2399
2399
|
x2: "100%",
|
|
2400
2400
|
y2: "100%"
|
|
2401
|
-
}, h$
|
|
2401
|
+
}, h$63("stop", {
|
|
2402
2402
|
offset: "0%",
|
|
2403
2403
|
stopColor: "#00e5a0"
|
|
2404
|
-
}), h$
|
|
2404
|
+
}), h$63("stop", {
|
|
2405
2405
|
offset: "50%",
|
|
2406
2406
|
stopColor: "#00b4d8"
|
|
2407
|
-
}), h$
|
|
2407
|
+
}), h$63("stop", {
|
|
2408
2408
|
offset: "100%",
|
|
2409
2409
|
stopColor: "#7b61ff"
|
|
2410
|
-
}))), h$
|
|
2410
|
+
}))), h$63("rect", {
|
|
2411
2411
|
width: 64,
|
|
2412
2412
|
height: 64,
|
|
2413
2413
|
rx: 14,
|
|
2414
2414
|
fill: "#0a0a0f"
|
|
2415
|
-
}), h$
|
|
2415
|
+
}), h$63("text", {
|
|
2416
2416
|
x: "50%",
|
|
2417
2417
|
y: "54%",
|
|
2418
2418
|
dominantBaseline: "middle",
|
|
@@ -2429,10 +2429,10 @@ window.__ModuleLoader__.load({
|
|
|
2429
2429
|
* @returns 一枚 `aria-hidden` 的 svg。
|
|
2430
2430
|
*/
|
|
2431
2431
|
function IconNpm({ size = 16 }) {
|
|
2432
|
-
return h$
|
|
2432
|
+
return h$63(Shell, {
|
|
2433
2433
|
size,
|
|
2434
2434
|
viewBox: "0 0 1024 1024"
|
|
2435
|
-
}, h$
|
|
2435
|
+
}, h$63("path", {
|
|
2436
2436
|
d: "M64 337.76h896v298.72H512v49.792H312.896v-49.824H64z m49.792 248.928h99.552v-149.376h49.76v149.344h49.792v-199.104H113.792z m248.896-199.136v248.928h99.552v-49.792h99.552v-199.136z m99.552 49.792H512v99.584h-49.792z m149.344-49.792v199.136h99.552v-149.376h49.792v149.344h49.792v-149.344h49.792v149.344h49.792v-199.104z",
|
|
2437
2437
|
fill: "#CB3837"
|
|
2438
2438
|
}));
|
|
@@ -2443,37 +2443,37 @@ window.__ModuleLoader__.load({
|
|
|
2443
2443
|
* @returns 一枚 `aria-hidden` 的 svg。
|
|
2444
2444
|
*/
|
|
2445
2445
|
function IconModuleMark({ size = 16 }) {
|
|
2446
|
-
return h$
|
|
2446
|
+
return h$63(Shell, {
|
|
2447
2447
|
size,
|
|
2448
2448
|
viewBox: "0 0 24 24"
|
|
2449
|
-
}, h$
|
|
2449
|
+
}, h$63("defs", null, h$63("linearGradient", {
|
|
2450
2450
|
id: "workbench-module-mark",
|
|
2451
2451
|
x1: "0%",
|
|
2452
2452
|
y1: "0%",
|
|
2453
2453
|
x2: "100%",
|
|
2454
2454
|
y2: "100%"
|
|
2455
|
-
}, h$
|
|
2455
|
+
}, h$63("stop", {
|
|
2456
2456
|
offset: "0%",
|
|
2457
2457
|
stopColor: "#3b82f6"
|
|
2458
|
-
}), h$
|
|
2458
|
+
}), h$63("stop", {
|
|
2459
2459
|
offset: "55%",
|
|
2460
2460
|
stopColor: "#8b5cf6"
|
|
2461
|
-
}), h$
|
|
2461
|
+
}), h$63("stop", {
|
|
2462
2462
|
offset: "100%",
|
|
2463
2463
|
stopColor: "#14b8a6"
|
|
2464
|
-
}))), h$
|
|
2464
|
+
}))), h$63("rect", {
|
|
2465
2465
|
width: 24,
|
|
2466
2466
|
height: 24,
|
|
2467
2467
|
rx: 7,
|
|
2468
2468
|
fill: "url(#workbench-module-mark)"
|
|
2469
|
-
}), h$
|
|
2469
|
+
}), h$63("rect", {
|
|
2470
2470
|
x: "4.6",
|
|
2471
2471
|
y: "4.6",
|
|
2472
2472
|
width: "6.2",
|
|
2473
2473
|
height: "6.2",
|
|
2474
2474
|
rx: "1.9",
|
|
2475
2475
|
fill: "#ffffff"
|
|
2476
|
-
}), h$
|
|
2476
|
+
}), h$63("rect", {
|
|
2477
2477
|
x: "13.2",
|
|
2478
2478
|
y: "4.6",
|
|
2479
2479
|
width: "6.2",
|
|
@@ -2481,7 +2481,7 @@ window.__ModuleLoader__.load({
|
|
|
2481
2481
|
rx: "1.9",
|
|
2482
2482
|
fill: "#ffffff",
|
|
2483
2483
|
fillOpacity: .78
|
|
2484
|
-
}), h$
|
|
2484
|
+
}), h$63("rect", {
|
|
2485
2485
|
x: "4.6",
|
|
2486
2486
|
y: "13.2",
|
|
2487
2487
|
width: "6.2",
|
|
@@ -2489,7 +2489,7 @@ window.__ModuleLoader__.load({
|
|
|
2489
2489
|
rx: "1.9",
|
|
2490
2490
|
fill: "#ffffff",
|
|
2491
2491
|
fillOpacity: .78
|
|
2492
|
-
}), h$
|
|
2492
|
+
}), h$63("rect", {
|
|
2493
2493
|
x: "13.2",
|
|
2494
2494
|
y: "13.2",
|
|
2495
2495
|
width: "6.2",
|
|
@@ -2504,7 +2504,7 @@ window.__ModuleLoader__.load({
|
|
|
2504
2504
|
* @returns 一枚 `aria-hidden` 的 svg。
|
|
2505
2505
|
*/
|
|
2506
2506
|
function IconPanelScreen({ size = 16 }) {
|
|
2507
|
-
return h$
|
|
2507
|
+
return h$63("svg", {
|
|
2508
2508
|
width: size,
|
|
2509
2509
|
height: size,
|
|
2510
2510
|
viewBox: "0 0 1024 1024",
|
|
@@ -2515,7 +2515,7 @@ window.__ModuleLoader__.load({
|
|
|
2515
2515
|
display: "block",
|
|
2516
2516
|
overflow: "hidden"
|
|
2517
2517
|
}
|
|
2518
|
-
}, h$
|
|
2518
|
+
}, h$63("path", { d: "M939 112c17.673 0 32 14.327 32 32v554.667c0 17.673-14.327 32-32 32l-394.5-0.001v96c0 3.74-0.642 7.331-1.82 10.668H768.4c17.673 0 32 14.326 32 32 0 17.496-14.042 31.712-31.47 31.995l-0.53 0.004H256.6c-17.673 0-32-14.327-32-32 0-17.496 14.042-31.713 31.47-31.995l0.53-0.005h225.721a31.923 31.923 0 0 1-1.817-10.137l-0.004-0.53v-96H86c-17.496 0-31.713-14.041-31.996-31.47l-0.004-0.53V144c0-17.673 14.327-32 32-32z m-32 64H118v490.666h789V176zM341.9 432c17.496 0 31.713 14.042 31.996 31.47l0.004 0.53v85.333c0 17.673-14.327 32-32 32-17.496 0-31.713-14.041-31.996-31.47l-0.004-0.53V464c0-17.673 14.327-32 32-32z m170.6-85.333c17.496 0 31.713 14.041 31.996 31.47l0.004 0.53v170.666c0 17.673-14.327 32-32 32-17.496 0-31.713-14.041-31.996-31.47l-0.004-0.53V378.667c0-17.673 14.327-32 32-32z m170.6-85.334c17.496 0 31.713 14.042 31.996 31.471l0.004 0.53v256c0 17.672-14.327 32-32 32-17.496 0-31.713-14.042-31.996-31.471l-0.004-0.53v-256c0-17.673 14.327-32 32-32z" }));
|
|
2519
2519
|
}
|
|
2520
2520
|
//#endregion
|
|
2521
2521
|
//#region ../shared/dist/config/storage.js
|
|
@@ -2730,6 +2730,32 @@ window.__ModuleLoader__.load({
|
|
|
2730
2730
|
//#region ../shared/dist/contract/protocol/unit-manifests.js
|
|
2731
2731
|
var UNIT_MANIFESTS_ROUTE = "unit-manifests";
|
|
2732
2732
|
//#endregion
|
|
2733
|
+
//#region ../shared/dist/contract/unit.js
|
|
2734
|
+
/**
|
|
2735
|
+
* 外壳替模块名合成的词表键:模块自己不必写名字键,名字直接从清单里的 title 注册进来。
|
|
2736
|
+
* @param unit 单元 id。
|
|
2737
|
+
* @returns 该单元名字在词表里的键。
|
|
2738
|
+
*/
|
|
2739
|
+
function unitTitleKey(unit) {
|
|
2740
|
+
return `dsh-workbench.unit.${unit}.title`;
|
|
2741
|
+
}
|
|
2742
|
+
/**
|
|
2743
|
+
* 模块声明的全部环境需要(没写就是空表)。
|
|
2744
|
+
* @param manifest 模块清单。
|
|
2745
|
+
* @returns need 列表。
|
|
2746
|
+
*/
|
|
2747
|
+
function needsOf(manifest) {
|
|
2748
|
+
return manifest.needs ?? [];
|
|
2749
|
+
}
|
|
2750
|
+
/**
|
|
2751
|
+
* 市场门槛要看的那些需要:声明了 extension / lib 就算(不要求写了来源)。
|
|
2752
|
+
* @param manifest 模块清单。
|
|
2753
|
+
* @returns extension / lib 的 need 列表。
|
|
2754
|
+
*/
|
|
2755
|
+
function supplyNeedsOf(manifest) {
|
|
2756
|
+
return needsOf(manifest).filter((need) => need.kind === "extension" || need.kind === "lib");
|
|
2757
|
+
}
|
|
2758
|
+
//#endregion
|
|
2733
2759
|
//#region ../shared/dist/contract/needs.js
|
|
2734
2760
|
function text(value) {
|
|
2735
2761
|
return typeof value === "string" ? value.trim() : "";
|
|
@@ -2792,24 +2818,6 @@ window.__ModuleLoader__.load({
|
|
|
2792
2818
|
})
|
|
2793
2819
|
});
|
|
2794
2820
|
//#endregion
|
|
2795
|
-
//#region ../shared/dist/contract/unit.js
|
|
2796
|
-
/**
|
|
2797
|
-
* 模块声明的全部环境需要(没写就是空表)。
|
|
2798
|
-
* @param manifest 模块清单。
|
|
2799
|
-
* @returns need 列表。
|
|
2800
|
-
*/
|
|
2801
|
-
function needsOf(manifest) {
|
|
2802
|
-
return manifest.needs ?? [];
|
|
2803
|
-
}
|
|
2804
|
-
/**
|
|
2805
|
-
* 市场门槛要看的那些需要:声明了 extension / lib 就算(不要求写了来源)。
|
|
2806
|
-
* @param manifest 模块清单。
|
|
2807
|
-
* @returns extension / lib 的 need 列表。
|
|
2808
|
-
*/
|
|
2809
|
-
function supplyNeedsOf(manifest) {
|
|
2810
|
-
return needsOf(manifest).filter((need) => need.kind === "extension" || need.kind === "lib");
|
|
2811
|
-
}
|
|
2812
|
-
//#endregion
|
|
2813
2821
|
//#region ../shared/dist/i18n/settings.js
|
|
2814
2822
|
/** 「工作台设置」这一组的词条:配置同步 / 新建工作台。 */
|
|
2815
2823
|
var zhSettings = {
|
|
@@ -3078,15 +3086,14 @@ window.__ModuleLoader__.load({
|
|
|
3078
3086
|
"panels.market.update": "Update",
|
|
3079
3087
|
"panels.market.swapSlow": "Not swapped yet — maybe a slow or failed download. Press Update again; if it stays like this, restart dsh.",
|
|
3080
3088
|
"panels.market.removeSlow": "Not removed yet — maybe a slow network or an uninstall that did not finish. Check again in a moment; if it stays like this, restart dsh.",
|
|
3081
|
-
"panels.market.updateNoChange": "
|
|
3089
|
+
"panels.market.updateNoChange": "Update failed: still {from}. The newest on the registry is {latest} — press Update again.",
|
|
3082
3090
|
"panels.market.updateUnknownVersion": "(unknown)",
|
|
3083
|
-
"panels.market.updateGone": "
|
|
3084
|
-
"panels.market.updateRestored": "
|
|
3091
|
+
"panels.market.updateGone": "Update failed: the module is gone after the update.",
|
|
3092
|
+
"panels.market.updateRestored": "Update failed: the new version could not be found after the update, so {version} was put back.",
|
|
3085
3093
|
"panels.market.updateBehind": "Installed {installed}, but the newest on the registry is {latest} — not the latest; you can update once more.",
|
|
3086
|
-
"panels.market.selfUpdateFailed": "
|
|
3094
|
+
"panels.market.selfUpdateFailed": "Workbench update failed: {reason}",
|
|
3087
3095
|
"panels.market.selfUpdateUnknown": "the outside process left no reason (see ~/.dsh/workbench/self-update.log)",
|
|
3088
|
-
"panels.market.selfUpdateRolledBack": "
|
|
3089
|
-
"panels.market.selfUpdateNeedsMigrate": "Workbench updated. Old sessions and projects are not merged automatically: quit every dsh, then run dsh-workbench migrate (--force to merge again).",
|
|
3096
|
+
"panels.market.selfUpdateRolledBack": "Workbench update failed; rolled back to {version}.",
|
|
3090
3097
|
"panels.market.uninstall": "Uninstall",
|
|
3091
3098
|
"panels.market.uninstallLabel": "Uninstall {name}",
|
|
3092
3099
|
"panels.market.installing": "Installing…",
|
|
@@ -3108,9 +3115,27 @@ window.__ModuleLoader__.load({
|
|
|
3108
3115
|
"panels.market.empty": "No modules available",
|
|
3109
3116
|
"panels.market.sectionPlugins": "Installed opencli plugins",
|
|
3110
3117
|
"panels.market.moduleOutdated": "update available",
|
|
3118
|
+
"panels.market.updateNeedsWorkbench": "this version needs a newer workbench first",
|
|
3119
|
+
"panels.market.updateIncompatible": "the new version does not match this workbench, so it cannot be installed now",
|
|
3111
3120
|
"panels.market.moduleRefused": "This module does not match this workbench, so it cannot be used for now.",
|
|
3112
3121
|
"panels.market.moduleRestartHint": "restart dsh once to bring it up",
|
|
3113
3122
|
"panels.market.pendingRestart": "restart required",
|
|
3123
|
+
"panels.market.pendingFollowUp": "old data to migrate",
|
|
3124
|
+
"panels.market.migrationHint": "old sessions and projects are not merged yet",
|
|
3125
|
+
"panels.market.migrateAction": "Migrate old data",
|
|
3126
|
+
"panels.market.migrating": "Migrating…",
|
|
3127
|
+
"panels.market.migrateConfirmTitle": "Migrate old data?",
|
|
3128
|
+
"panels.market.migrateConfirmDetail": "Quit dsh web / Desktop first. Only missing data is added; nothing is overwritten.",
|
|
3129
|
+
"panels.market.migrateConfirmAck": "I've quit dsh web / Desktop",
|
|
3130
|
+
"panels.market.migrateConfirmYes": "Start migration",
|
|
3131
|
+
"panels.market.migrateDone": "Migration complete: {added} projects added; restart the workbench and dsh web to see them.",
|
|
3132
|
+
"panels.market.dismissFollowUp": "Don't remind me",
|
|
3133
|
+
"panels.market.dismissing": "Dismissing…",
|
|
3134
|
+
"panels.market.dismissFollowUpTitle": "Stop reminding about this?",
|
|
3135
|
+
"panels.market.dismissFollowUpDetail": "The reminder will be hidden from the market, but old data will not be migrated or deleted. Old sessions and projects stay in the old directory and won't appear in the new version; you can still run dsh-workbench migrate later.",
|
|
3136
|
+
"panels.market.dismissFollowUpAck": "I understand the old data won't appear automatically",
|
|
3137
|
+
"panels.market.dismissFollowUpYes": "Don't remind me",
|
|
3138
|
+
"panels.market.dismissed": "No longer reminded; old data stays in the old directory and can still be migrated with dsh-workbench migrate.",
|
|
3114
3139
|
"panels.market.workbenchName": "Workbench",
|
|
3115
3140
|
"panels.market.pluginBroken": "This plugin install is broken: it cannot be identified. Uninstall it first, then ask the agent to reinstall it by package name.",
|
|
3116
3141
|
"panels.market.restartNeeded": "The new version is installed — restart once to pick it up.",
|
|
@@ -3194,7 +3219,7 @@ window.__ModuleLoader__.load({
|
|
|
3194
3219
|
"panels.market.add.exampleTitle": "Examples",
|
|
3195
3220
|
"panels.market.add.exampleFill": "Fill in an example",
|
|
3196
3221
|
"panels.market.add.registryLabel": "Source",
|
|
3197
|
-
"panels.market.add.registryProfile": "This
|
|
3222
|
+
"panels.market.add.registryProfile": "This workbench's registry",
|
|
3198
3223
|
"panels.market.add.registryPnpm": "pnpm's own registry",
|
|
3199
3224
|
"panels.market.add.check": "Check",
|
|
3200
3225
|
"panels.market.add.checking": "Checking…",
|
|
@@ -3215,14 +3240,19 @@ window.__ModuleLoader__.load({
|
|
|
3215
3240
|
"panels.market.tabs": "The two faces of the module market",
|
|
3216
3241
|
"panels.tab.discover": "Discover",
|
|
3217
3242
|
"panels.discover.loading": "Reading the index",
|
|
3243
|
+
"panels.discover.slowHint": "Slow to load: finish any authorization prompt, or switch sources.",
|
|
3218
3244
|
"panels.discover.lead": "Browse modules from an index source; install and go.",
|
|
3219
3245
|
"panels.discover.addSource": "Add",
|
|
3220
3246
|
"panels.discover.addingSource": "Adding…",
|
|
3221
3247
|
"panels.discover.addFirstSource": "Add index source",
|
|
3222
3248
|
"panels.discover.removeSource": "Remove",
|
|
3223
3249
|
"panels.discover.removeSourceNamed": "Remove {url}",
|
|
3250
|
+
"panels.discover.useSource": "Use",
|
|
3251
|
+
"panels.discover.useSourceNamed": "Use {label}",
|
|
3252
|
+
"panels.discover.sourceCurrent": "In use",
|
|
3224
3253
|
"panels.discover.refresh": "Refresh",
|
|
3225
3254
|
"panels.discover.search": "Search modules",
|
|
3255
|
+
"panels.discover.clearSearch": "Clear search",
|
|
3226
3256
|
"panels.discover.all": "All",
|
|
3227
3257
|
"panels.discover.sourceLabel": "Name",
|
|
3228
3258
|
"panels.discover.sourceKind": "Type",
|
|
@@ -3232,8 +3262,8 @@ window.__ModuleLoader__.load({
|
|
|
3232
3262
|
"panels.discover.sourcePlaceholder": "https://example.com/index.json or git@git.example.com:wb/market.git",
|
|
3233
3263
|
"panels.discover.sourceRef": "Branch",
|
|
3234
3264
|
"panels.discover.sourcePath": "Index file",
|
|
3235
|
-
"panels.discover.sourceLocal": "Local
|
|
3236
|
-
"panels.discover.sourceLocalHint": "Leave empty to
|
|
3265
|
+
"panels.discover.sourceLocal": "Local copy folder (optional)",
|
|
3266
|
+
"panels.discover.sourceLocalHint": "Leave empty to keep it in ~/.dsh/workbench/market-index/.",
|
|
3237
3267
|
"panels.discover.save": "Save and refresh",
|
|
3238
3268
|
"panels.discover.cancel": "Cancel",
|
|
3239
3269
|
"panels.discover.retry": "Retry",
|
|
@@ -3246,9 +3276,9 @@ window.__ModuleLoader__.load({
|
|
|
3246
3276
|
"panels.discover.missingIndex": "This repository has no {path} yet.",
|
|
3247
3277
|
"panels.discover.initTitle": "Initialize this repository as a module market index?",
|
|
3248
3278
|
"panels.discover.initCta": "Initialize market index",
|
|
3249
|
-
"panels.discover.initWhat": "It will write market.json and README.md on {branch}, commit once, and push. Modules you publish from this workbench will commit their
|
|
3279
|
+
"panels.discover.initWhat": "It will write market.json and README.md on {branch}, commit once, and push. Modules you publish from this workbench will commit their build files under packages/<unit>/. The repository stays owned by its owner.",
|
|
3250
3280
|
"panels.discover.initBranch": "Branch",
|
|
3251
|
-
"panels.discover.initBranchHint": "The index and
|
|
3281
|
+
"panels.discover.initBranchHint": "The index and build files go to this branch; an empty repository gets it created.",
|
|
3252
3282
|
"panels.discover.initBranchBad": "Use only letters, digits, dots, underscores, slashes, or dashes in a branch name.",
|
|
3253
3283
|
"panels.discover.initOk": "Initialize",
|
|
3254
3284
|
"panels.discover.initBusy": "Initializing…",
|
|
@@ -3352,11 +3382,11 @@ window.__ModuleLoader__.load({
|
|
|
3352
3382
|
"panels.market.add.doneApplied": "Installed and live.",
|
|
3353
3383
|
"panels.market.add.doneRestart": "Installed — restart once to pick it up.",
|
|
3354
3384
|
"panels.market.add.restartWhy": "Why this needs a restart: {reason}",
|
|
3355
|
-
"panels.market.add.restartWhy.no-hmr": "this configuration only
|
|
3385
|
+
"panels.market.add.restartWhy.no-hmr": "this configuration is only read at startup, so a restart is needed",
|
|
3356
3386
|
"panels.market.add.restartWhy.package-moved": "an installed package now resolves to another directory, or the change replaced something dsh itself provides",
|
|
3357
3387
|
"panels.market.add.restartWhy.host-module": "the change reaches modules dsh itself loaded",
|
|
3358
|
-
"panels.market.add.restartWhy.unmanaged-plugin": "the change reaches a plugin running
|
|
3359
|
-
"panels.market.add.restartWhy.module-comparison": "dsh could not
|
|
3388
|
+
"panels.market.add.restartWhy.unmanaged-plugin": "the change reaches a plugin that is running but not on the install list",
|
|
3389
|
+
"panels.market.add.restartWhy.module-comparison": "dsh could not confirm that the running plugin is the copy installed on this machine",
|
|
3360
3390
|
"panels.market.add.cancelled": "Cancelled.",
|
|
3361
3391
|
"panels.market.add.failed": "Didn't work: {reason}",
|
|
3362
3392
|
"panels.market.add.removed": "It has been removed.",
|
|
@@ -3366,10 +3396,10 @@ window.__ModuleLoader__.load({
|
|
|
3366
3396
|
"panels.market.add.removedRestart": "Removed — restart once to finish.",
|
|
3367
3397
|
"panels.market.add.remove": "Remove it",
|
|
3368
3398
|
"panels.market.add.problem.invalidSpec": "That is not a spec we accept: it cannot be empty or start with a dash.",
|
|
3369
|
-
"panels.market.add.problem.alreadyInstalled": "That package is already in
|
|
3399
|
+
"panels.market.add.problem.alreadyInstalled": "That package is already in this workbench (add @version to switch versions).",
|
|
3370
3400
|
"panels.market.add.problem.notFound": "No such package on that source. Try another name or version.",
|
|
3371
3401
|
"panels.market.add.problem.notAPackage": "There is no package at that location. Pick a folder that contains a package.json.",
|
|
3372
|
-
"panels.market.add.problem.notABundle": "It is an npm package, but not a dsh plugin (
|
|
3402
|
+
"panels.market.add.problem.notABundle": "It is an npm package, but not a dsh plugin (dsh cannot find what to load inside it).",
|
|
3373
3403
|
"panels.market.add.problem.network": "The source is unreachable. Check the network and retry.",
|
|
3374
3404
|
"panels.market.add.problem.unknown": "The check did not pass (reason unknown). Open the install details for the raw output, or retry.",
|
|
3375
3405
|
"panels.market.add.reason.invalidSpec": "the spec is not accepted",
|
|
@@ -3377,7 +3407,7 @@ window.__ModuleLoader__.load({
|
|
|
3377
3407
|
"panels.market.add.reason.notBundle": "it is not a dsh plugin package",
|
|
3378
3408
|
"panels.market.add.reason.notRemovable": "it ships with the installation and cannot be removed",
|
|
3379
3409
|
"panels.market.add.reason.bundleInUse": "something is still using it",
|
|
3380
|
-
"panels.market.add.reason.stopProfile": "this configuration
|
|
3410
|
+
"panels.market.add.reason.stopProfile": "this configuration needs a restart, so stop the workbench first",
|
|
3381
3411
|
"panels.market.add.reason.staleApproval": "the scripts to allow changed — start over",
|
|
3382
3412
|
"panels.market.add.reason.operationError": "pnpm failed (see the install output)",
|
|
3383
3413
|
"panels.market.add.reason.buildBlocked": "pnpm blocked install scripts",
|
|
@@ -3407,8 +3437,8 @@ window.__ModuleLoader__.load({
|
|
|
3407
3437
|
"blocker.forbidden.titleGeneric": "No access",
|
|
3408
3438
|
"blocker.forbidden.hint": "You are signed in, but this project/repo is not permitted for your account.",
|
|
3409
3439
|
"blocker.forbidden.open": "Open permissions page",
|
|
3410
|
-
"blocker.timeout.hint": "The
|
|
3411
|
-
"blocker.exec.hint": "Make sure opencli is installed and
|
|
3440
|
+
"blocker.timeout.hint": "The background browser may not have started; retrying usually helps.",
|
|
3441
|
+
"blocker.exec.hint": "Make sure opencli is installed and runs from your terminal (which opencli).",
|
|
3412
3442
|
"blocker.unknown.title": "Something went wrong",
|
|
3413
3443
|
"panels.reading": "Reading the panel setup…",
|
|
3414
3444
|
"panels.cardBroken": "This module will not render: {unit} ({reason})",
|
|
@@ -3422,7 +3452,7 @@ window.__ModuleLoader__.load({
|
|
|
3422
3452
|
"env.elapsed": "Waiting {seconds}s",
|
|
3423
3453
|
"env.stepFailed.install": "install failed",
|
|
3424
3454
|
"env.stepFailed.path": "installed but not found",
|
|
3425
|
-
"env.stepFailed.shell": "
|
|
3455
|
+
"env.stepFailed.shell": "cannot reach the command line",
|
|
3426
3456
|
"env.toolchain.ok": "Looks good",
|
|
3427
3457
|
"env.toolchain.warn": "Almost ready",
|
|
3428
3458
|
"env.opencli.ok": "Ready",
|
|
@@ -3439,10 +3469,10 @@ window.__ModuleLoader__.load({
|
|
|
3439
3469
|
"env.fix.title": "How to fix it",
|
|
3440
3470
|
"env.fix.why": "The workbench uses its own background tool (installed separately from the one in your terminal), and it is not set up on this machine yet.",
|
|
3441
3471
|
"env.fix.whyPath": "The background tool is installed, but this environment cannot find it — usually a PATH or shell-session issue.",
|
|
3442
|
-
"env.fix.whyShell": "The workbench
|
|
3472
|
+
"env.fix.whyShell": "The workbench cannot reach the command line on this machine, so it cannot fetch data — you cannot install this from here; someone needs to fix the background environment.",
|
|
3443
3473
|
"env.fix.step": "Run this in a terminal, then hit Retry:",
|
|
3444
3474
|
"env.fix.stepPath": "Open a new terminal window (or make sure npm’s global bin directory is on PATH), then hit Retry.",
|
|
3445
|
-
"env.fix.stepShell": "Restart the workbench (or dsh); if it keeps happening, the
|
|
3475
|
+
"env.fix.stepShell": "Restart the workbench (or dsh); if it keeps happening, the workbench still cannot reach the command line.",
|
|
3446
3476
|
"env.fix.permission": "Permission denied: rerun with sudo, or point npm’s global directory at your home.",
|
|
3447
3477
|
"env.fix.network": "Network unreachable: check your network or proxy, then retry.",
|
|
3448
3478
|
"env.fix.details": "Details (for troubleshooting)",
|
|
@@ -3471,9 +3501,9 @@ window.__ModuleLoader__.load({
|
|
|
3471
3501
|
"env.warm.done": "Ready ({n} sites)",
|
|
3472
3502
|
"env.warm.short": "Could not sign in early this time — nothing breaks; the first read fills it in",
|
|
3473
3503
|
"env.unit.failed": "This module cannot start",
|
|
3474
|
-
"env.unit.failedHint": "It failed while
|
|
3475
|
-
"env.unit.unchecked": "Cannot check: no
|
|
3476
|
-
"env.unit.uncheckedHint": "The module is not the problem — the
|
|
3504
|
+
"env.unit.failedHint": "It failed while starting up; other modules are unaffected.",
|
|
3505
|
+
"env.unit.unchecked": "Cannot check: no command line",
|
|
3506
|
+
"env.unit.uncheckedHint": "The module is not the problem — the workbench cannot reach the command line. Restart the workbench.",
|
|
3477
3507
|
"adapterSet.not-configured": "No adapter set configured; using the default.",
|
|
3478
3508
|
"adapterSet.no-profile": "No profile found, so the adapter set cannot load; using the default.",
|
|
3479
3509
|
"adapterSet.malformed": "An adapter set must be a package name (for example @acme/adapters-set); using the default.",
|
|
@@ -3516,7 +3546,7 @@ window.__ModuleLoader__.load({
|
|
|
3516
3546
|
"sidebarEdition.official": "Official",
|
|
3517
3547
|
"sidebarEdition.officialHint": "Matches dsh exactly and stays stable: search, view options, show more, archive, add workspace — no waiting for us to catch up. Pick it to keep things simple.",
|
|
3518
3548
|
"sidebarEdition.custom": "Custom",
|
|
3519
|
-
"sidebarEdition.customHint": "Built for multi-project work: one project per dropdown, recency-first sessions,
|
|
3549
|
+
"sidebarEdition.customHint": "Built for multi-project work: one project per dropdown, recency-first sessions, long names scroll, edges fade, DIY new session. Easier when you juggle projects.",
|
|
3520
3550
|
"sidebarEdition.saving": "Configuring…",
|
|
3521
3551
|
"sidebarEdition.reloadRequired": "Saved. Reload the page to apply — no workbench restart needed.",
|
|
3522
3552
|
"sidebarEdition.reload": "Reload page",
|
|
@@ -3545,25 +3575,25 @@ window.__ModuleLoader__.load({
|
|
|
3545
3575
|
"record.act.halt": "Halt",
|
|
3546
3576
|
"approval.record.site": "Site",
|
|
3547
3577
|
"approval.record.what": "Records",
|
|
3548
|
-
"approval.record.lands": "
|
|
3578
|
+
"approval.record.lands": "Saves to",
|
|
3549
3579
|
"approval.record.noUrl": "no site given (this call gets refused)",
|
|
3550
3580
|
"approval.record.oneAction": "one action",
|
|
3551
3581
|
"approval.record.noSwitch": "it will not switch you back (the leftbar footer shows the state)",
|
|
3552
|
-
"approval.longTask.what": "
|
|
3553
|
-
"approval.longTask.signal": "stopping only sends an interrupt signal —
|
|
3582
|
+
"approval.longTask.what": "Task to stop",
|
|
3583
|
+
"approval.longTask.signal": "stopping only sends an interrupt signal — wrapping up the run is up to the module",
|
|
3554
3584
|
"approval.publish.module": "Module",
|
|
3555
3585
|
"approval.publish.target": "Target",
|
|
3556
3586
|
"approval.publish.version": "Version",
|
|
3557
3587
|
"approval.publish.author": "Author",
|
|
3558
|
-
"approval.publish.authorMissing": "unsigned
|
|
3588
|
+
"approval.publish.authorMissing": "unsigned",
|
|
3559
3589
|
"approval.publish.registry": "Registry",
|
|
3560
3590
|
"approval.publish.repo": "Repository",
|
|
3561
3591
|
"approval.publish.branch": "Branch",
|
|
3562
3592
|
"approval.publish.defaultBranch": "default branch",
|
|
3563
|
-
"approval.publish.artifacts": "
|
|
3593
|
+
"approval.publish.artifacts": "Build files",
|
|
3564
3594
|
"approval.publish.index": "Index",
|
|
3565
3595
|
"approval.publish.commits": "Commits",
|
|
3566
|
-
"approval.publish.twoCommits": "
|
|
3596
|
+
"approval.publish.twoCommits": "build files + market.json in 2 commits, one push",
|
|
3567
3597
|
"approval.publish.reading": "Reading…",
|
|
3568
3598
|
"approval.publish.changelog": "Changelog for {version}",
|
|
3569
3599
|
"approval.publish.changelogMissing": "No changelog entry for {version}; publishing will be blocked",
|
|
@@ -3711,15 +3741,14 @@ window.__ModuleLoader__.load({
|
|
|
3711
3741
|
"panels.market.update": "更新",
|
|
3712
3742
|
"panels.market.swapSlow": "还没换上:可能网慢或没装上。再点一次「更新」;一直这样就把 dsh 重启一遍。",
|
|
3713
3743
|
"panels.market.removeSlow": "还没卸掉:可能网慢或卸载没走完。等一下再看;一直这样就把 dsh 重启一遍。",
|
|
3714
|
-
"panels.market.updateNoChange": "
|
|
3744
|
+
"panels.market.updateNoChange": "更新失败:还是 {from};源上最新是 {latest},可以再点一次「更新」。",
|
|
3715
3745
|
"panels.market.updateUnknownVersion": "(问不到)",
|
|
3716
|
-
"panels.market.updateGone": "
|
|
3717
|
-
"panels.market.updateRestored": "
|
|
3746
|
+
"panels.market.updateGone": "更新失败:更新后找不到这个模块。",
|
|
3747
|
+
"panels.market.updateRestored": "更新失败:更新后找不到新版本,已把 {version} 装回去。",
|
|
3718
3748
|
"panels.market.updateBehind": "装上了 {installed},但源上最新是 {latest} —— 没更到最新,可以再点一次。",
|
|
3719
|
-
"panels.market.selfUpdateFailed": "
|
|
3749
|
+
"panels.market.selfUpdateFailed": "工作台更新失败:{reason}",
|
|
3720
3750
|
"panels.market.selfUpdateUnknown": "外部进程没留下原因(看 ~/.dsh/workbench/self-update.log)",
|
|
3721
|
-
"panels.market.selfUpdateRolledBack": "
|
|
3722
|
-
"panels.market.selfUpdateNeedsMigrate": "工作台已更新。旧会话 / 项目不会自动并:先退出所有 dsh,再运行 dsh-workbench migrate(--force 可补并)。",
|
|
3751
|
+
"panels.market.selfUpdateRolledBack": "工作台更新失败,已回滚到 {version}。",
|
|
3723
3752
|
"panels.market.uninstall": "卸载",
|
|
3724
3753
|
"panels.market.uninstallLabel": "卸载 {name}",
|
|
3725
3754
|
"panels.market.installing": "正在安装…",
|
|
@@ -3741,9 +3770,27 @@ window.__ModuleLoader__.load({
|
|
|
3741
3770
|
"panels.market.empty": "暂无可用模块",
|
|
3742
3771
|
"panels.market.sectionPlugins": "已安装 opencli 插件",
|
|
3743
3772
|
"panels.market.moduleOutdated": "有新版",
|
|
3773
|
+
"panels.market.updateNeedsWorkbench": "新版本要先把工作台升级才能用",
|
|
3774
|
+
"panels.market.updateIncompatible": "新版本和当前的工作台不匹配,暂时不能更新",
|
|
3744
3775
|
"panels.market.moduleRefused": "模块版本与工作台不匹配,暂时无法使用",
|
|
3745
3776
|
"panels.market.moduleRestartHint": "重启后生效",
|
|
3746
3777
|
"panels.market.pendingRestart": "重启后生效",
|
|
3778
|
+
"panels.market.pendingFollowUp": "旧数据待迁移",
|
|
3779
|
+
"panels.market.migrationHint": "旧会话和项目还没搬过来",
|
|
3780
|
+
"panels.market.migrateAction": "迁移旧数据",
|
|
3781
|
+
"panels.market.migrating": "正在迁移…",
|
|
3782
|
+
"panels.market.migrateConfirmTitle": "迁移旧数据?",
|
|
3783
|
+
"panels.market.migrateConfirmDetail": "先退出 dsh web / Desktop。迁移只补缺、不覆盖;旧目录保留。",
|
|
3784
|
+
"panels.market.migrateConfirmAck": "我已经退出 dsh web / Desktop",
|
|
3785
|
+
"panels.market.migrateConfirmYes": "开始迁移",
|
|
3786
|
+
"panels.market.migrateDone": "迁移完成:补了 {added} 个项目;重启工作台和 dsh web 后出现。",
|
|
3787
|
+
"panels.market.dismissFollowUp": "不再提醒",
|
|
3788
|
+
"panels.market.dismissing": "正在收起…",
|
|
3789
|
+
"panels.market.dismissFollowUpTitle": "不再提醒这件事?",
|
|
3790
|
+
"panels.market.dismissFollowUpDetail": "提示会从模块市场收起,但不会迁移或删除旧数据。旧会话和项目仍留在旧目录,新版本里看不到;以后需要时仍可运行 dsh-workbench migrate。",
|
|
3791
|
+
"panels.market.dismissFollowUpAck": "我知道旧数据不会自动出现",
|
|
3792
|
+
"panels.market.dismissFollowUpYes": "不再提醒",
|
|
3793
|
+
"panels.market.dismissed": "已不再提醒;旧数据仍在旧目录,需要时仍可运行 dsh-workbench migrate。",
|
|
3747
3794
|
"panels.market.workbenchName": "工作台",
|
|
3748
3795
|
"panels.market.pluginBroken": "这份插件装坏了:认不出它是什么。可以先卸载,再让 agent 按包名重装一次。",
|
|
3749
3796
|
"panels.market.restartNeeded": "新版装好了,重启一次才生效。",
|
|
@@ -3827,7 +3874,7 @@ window.__ModuleLoader__.load({
|
|
|
3827
3874
|
"panels.market.add.exampleTitle": "示例",
|
|
3828
3875
|
"panels.market.add.exampleFill": "填入示例",
|
|
3829
3876
|
"panels.market.add.registryLabel": "安装源",
|
|
3830
|
-
"panels.market.add.registryProfile": "
|
|
3877
|
+
"panels.market.add.registryProfile": "这份工作台配的源",
|
|
3831
3878
|
"panels.market.add.registryPnpm": "pnpm 自己配的源",
|
|
3832
3879
|
"panels.market.add.check": "预检",
|
|
3833
3880
|
"panels.market.add.checking": "正在预检…",
|
|
@@ -3848,14 +3895,19 @@ window.__ModuleLoader__.load({
|
|
|
3848
3895
|
"panels.market.tabs": "模块市场的两个面",
|
|
3849
3896
|
"panels.tab.discover": "发现",
|
|
3850
3897
|
"panels.discover.loading": "正在读取索引",
|
|
3898
|
+
"panels.discover.slowHint": "读取较慢:如有授权提示,先完成它,或换一个索引源。",
|
|
3851
3899
|
"panels.discover.lead": "从索引源浏览模块;装上就能用。",
|
|
3852
3900
|
"panels.discover.addSource": "添加",
|
|
3853
3901
|
"panels.discover.addingSource": "正在添加…",
|
|
3854
3902
|
"panels.discover.addFirstSource": "添加索引源",
|
|
3855
3903
|
"panels.discover.removeSource": "移除",
|
|
3856
3904
|
"panels.discover.removeSourceNamed": "移除 {url}",
|
|
3905
|
+
"panels.discover.useSource": "使用",
|
|
3906
|
+
"panels.discover.useSourceNamed": "使用 {label}",
|
|
3907
|
+
"panels.discover.sourceCurrent": "当前使用",
|
|
3857
3908
|
"panels.discover.refresh": "刷新",
|
|
3858
3909
|
"panels.discover.search": "搜索模块",
|
|
3910
|
+
"panels.discover.clearSearch": "清除搜索",
|
|
3859
3911
|
"panels.discover.all": "全部",
|
|
3860
3912
|
"panels.discover.sourceLabel": "名字",
|
|
3861
3913
|
"panels.discover.sourceKind": "类型",
|
|
@@ -3865,8 +3917,8 @@ window.__ModuleLoader__.load({
|
|
|
3865
3917
|
"panels.discover.sourcePlaceholder": "https://example.com/index.json 或 git@git.example.com:wb/market.git",
|
|
3866
3918
|
"panels.discover.sourceRef": "分支",
|
|
3867
3919
|
"panels.discover.sourcePath": "索引文件",
|
|
3868
|
-
"panels.discover.sourceLocal": "
|
|
3869
|
-
"panels.discover.sourceLocalHint": "
|
|
3920
|
+
"panels.discover.sourceLocal": "本地副本目录(可选)",
|
|
3921
|
+
"panels.discover.sourceLocalHint": "不填就放到 ~/.dsh/workbench/market-index/。",
|
|
3870
3922
|
"panels.discover.save": "保存并刷新",
|
|
3871
3923
|
"panels.discover.cancel": "取消",
|
|
3872
3924
|
"panels.discover.retry": "重试",
|
|
@@ -3879,9 +3931,9 @@ window.__ModuleLoader__.load({
|
|
|
3879
3931
|
"panels.discover.missingIndex": "仓库里还没有索引文件 {path}",
|
|
3880
3932
|
"panels.discover.initTitle": "把这个仓库初始化成模块市场索引?",
|
|
3881
3933
|
"panels.discover.initCta": "初始化成市场索引",
|
|
3882
|
-
"panels.discover.initWhat": "会在 {branch} 分支写 market.json 与 README.md
|
|
3934
|
+
"panels.discover.initWhat": "会在 {branch} 分支写 market.json 与 README.md,提交一次并推上去;之后从这个工作台发布的模块会把打包好的文件提交到 packages/<unit>/。仓库的写权限归它的所有者。",
|
|
3883
3935
|
"panels.discover.initBranch": "分支",
|
|
3884
|
-
"panels.discover.initBranchHint": "
|
|
3936
|
+
"panels.discover.initBranchHint": "索引和打包文件都发到这个分支;空仓库会新建它。",
|
|
3885
3937
|
"panels.discover.initBranchBad": "分支名只能用字母、数字、点、下划线、斜杠或短横线",
|
|
3886
3938
|
"panels.discover.initOk": "初始化",
|
|
3887
3939
|
"panels.discover.initBusy": "正在初始化…",
|
|
@@ -3985,11 +4037,11 @@ window.__ModuleLoader__.load({
|
|
|
3985
4037
|
"panels.market.add.doneApplied": "装好了,已经生效。",
|
|
3986
4038
|
"panels.market.add.doneRestart": "装好了,重启一次才生效。",
|
|
3987
4039
|
"panels.market.add.restartWhy": "为什么这一版要重启:{reason}",
|
|
3988
|
-
"panels.market.add.restartWhy.no-hmr": "
|
|
4040
|
+
"panels.market.add.restartWhy.no-hmr": "这份配置只在启动时读一次,改了得重启",
|
|
3989
4041
|
"panels.market.add.restartWhy.package-moved": "某个已经装着的包换到了新的目录,或者这一下换掉了 dsh 自己提供的那份",
|
|
3990
4042
|
"panels.market.add.restartWhy.host-module": "这一下动到了 dsh 自己加载的模块",
|
|
3991
|
-
"panels.market.add.restartWhy.unmanaged-plugin": "
|
|
3992
|
-
"panels.market.add.restartWhy.module-comparison": "dsh
|
|
4043
|
+
"panels.market.add.restartWhy.unmanaged-plugin": "这一下动到了没登记过、正在运行的插件",
|
|
4044
|
+
"panels.market.add.restartWhy.module-comparison": "dsh 没法确认正在跑的插件就是这台机器上装好的那一份",
|
|
3993
4045
|
"panels.market.add.cancelled": "已取消。",
|
|
3994
4046
|
"panels.market.add.failed": "没成功:{reason}",
|
|
3995
4047
|
"panels.market.add.removed": "已经移除了。",
|
|
@@ -3999,10 +4051,10 @@ window.__ModuleLoader__.load({
|
|
|
3999
4051
|
"panels.market.add.removedRestart": "卸掉了,重启一次才彻底生效。",
|
|
4000
4052
|
"panels.market.add.remove": "移除它",
|
|
4001
4053
|
"panels.market.add.problem.invalidSpec": "这个写法不认:不能是空的,也不能以横杠开头。",
|
|
4002
|
-
"panels.market.add.problem.alreadyInstalled": "
|
|
4054
|
+
"panels.market.add.problem.alreadyInstalled": "这个包已经在这份工作台里了(要换版本请带上 @版本)。",
|
|
4003
4055
|
"panels.market.add.problem.notFound": "源上没有这个包。换个包名或版本再试。",
|
|
4004
4056
|
"panels.market.add.problem.notAPackage": "这个位置没有包。选一个包含 package.json 的目录。",
|
|
4005
|
-
"panels.market.add.problem.notABundle": "它是一个 npm 包,但不是 dsh
|
|
4057
|
+
"panels.market.add.problem.notABundle": "它是一个 npm 包,但不是 dsh 插件包(dsh 在里面找不到该加载什么)。",
|
|
4006
4058
|
"panels.market.add.problem.network": "源连不上。检查网络后重试。",
|
|
4007
4059
|
"panels.market.add.problem.unknown": "预检没通过(原因未知)。展开安装详情看原始输出,或重试。",
|
|
4008
4060
|
"panels.market.add.reason.invalidSpec": "写法不认",
|
|
@@ -4010,7 +4062,7 @@ window.__ModuleLoader__.load({
|
|
|
4010
4062
|
"panels.market.add.reason.notBundle": "它不是一个 dsh 插件包",
|
|
4011
4063
|
"panels.market.add.reason.notRemovable": "它是安装自带的组合包,不能卸",
|
|
4012
4064
|
"panels.market.add.reason.bundleInUse": "还有东西在用它,卸不掉",
|
|
4013
|
-
"panels.market.add.reason.stopProfile": "
|
|
4065
|
+
"panels.market.add.reason.stopProfile": "这份配置改了要重启,得先停掉工作台",
|
|
4014
4066
|
"panels.market.add.reason.staleApproval": "要允许的安装脚本已经变了,重新来一次",
|
|
4015
4067
|
"panels.market.add.reason.operationError": "pnpm 执行出错(详情见安装输出)",
|
|
4016
4068
|
"panels.market.add.reason.buildBlocked": "pnpm 拦下了安装脚本",
|
|
@@ -4033,15 +4085,15 @@ window.__ModuleLoader__.load({
|
|
|
4033
4085
|
"blocker.market.open": "去模块市场",
|
|
4034
4086
|
"blocker.login.title": "需要登录 {platform}",
|
|
4035
4087
|
"blocker.login.titleGeneric": "需要登录",
|
|
4036
|
-
"blocker.login.hint": "
|
|
4088
|
+
"blocker.login.hint": "工作台借你浏览器里的登录状态;登录一次就行,之后不用再登。",
|
|
4037
4089
|
"blocker.login.go": "去登录",
|
|
4038
4090
|
"blocker.login.manual": "在终端执行该插件的登录命令(见插件的文档),按提示完成登录后重试。",
|
|
4039
4091
|
"blocker.forbidden.title": "没有权限访问 {platform}",
|
|
4040
4092
|
"blocker.forbidden.titleGeneric": "没有权限",
|
|
4041
4093
|
"blocker.forbidden.hint": "账号已登录,但没有这个项目/仓库的权限;申请之后再试。",
|
|
4042
4094
|
"blocker.forbidden.open": "打开权限页",
|
|
4043
|
-
"blocker.timeout.hint": "
|
|
4044
|
-
"blocker.exec.hint": "确认 opencli
|
|
4095
|
+
"blocker.timeout.hint": "后台浏览器没起来,重试一次通常就好。",
|
|
4096
|
+
"blocker.exec.hint": "确认 opencli 已经装好、在终端里能直接运行(which opencli)。",
|
|
4045
4097
|
"blocker.unknown.title": "出了点问题",
|
|
4046
4098
|
"panels.reading": "正在读取面板配置…",
|
|
4047
4099
|
"panels.cardBroken": "这个模块起不来:{unit}({reason})",
|
|
@@ -4055,7 +4107,7 @@ window.__ModuleLoader__.load({
|
|
|
4055
4107
|
"env.elapsed": "已等待 {seconds} 秒",
|
|
4056
4108
|
"env.stepFailed.install": "装不上",
|
|
4057
4109
|
"env.stepFailed.path": "装了但还找不到",
|
|
4058
|
-
"env.stepFailed.shell": "
|
|
4110
|
+
"env.stepFailed.shell": "连不上命令行",
|
|
4059
4111
|
"env.toolchain.ok": "正常",
|
|
4060
4112
|
"env.toolchain.warn": "还没完全准备好",
|
|
4061
4113
|
"env.opencli.ok": "已就绪",
|
|
@@ -4072,10 +4124,10 @@ window.__ModuleLoader__.load({
|
|
|
4072
4124
|
"env.fix.title": "怎么解决",
|
|
4073
4125
|
"env.fix.why": "工作台用它自己那份后台工具(与你在终端里那套分开装,互不影响),这台机器上还没装好它。",
|
|
4074
4126
|
"env.fix.whyPath": "后台工具装上了,但当前环境还找不到它 —— 通常是 PATH 或终端会话的问题。",
|
|
4075
|
-
"env.fix.whyShell": "
|
|
4127
|
+
"env.fix.whyShell": "工作台拿不到这台机器的命令行,所以取不了数据 —— 这一步你装不了,需要有人处理后台环境。",
|
|
4076
4128
|
"env.fix.step": "在终端里运行下面这条命令,装好之后点「重试」:",
|
|
4077
4129
|
"env.fix.stepPath": "新开一个终端窗口(或确认 npm 的全局 bin 目录在 PATH 里),然后点「重试」。",
|
|
4078
|
-
"env.fix.stepShell": "重启一次工作台(或 dsh
|
|
4130
|
+
"env.fix.stepShell": "重启一次工作台(或 dsh);如果反复出现,说明工作台还是拿不到命令行。",
|
|
4079
4131
|
"env.fix.permission": "权限不够:在命令前加 sudo 重跑,或先把 npm 的全局目录配到你的用户目录。",
|
|
4080
4132
|
"env.fix.network": "网络不通:检查网络或代理设置后重试。",
|
|
4081
4133
|
"env.fix.details": "详细输出(排障用)",
|
|
@@ -4104,9 +4156,9 @@ window.__ModuleLoader__.load({
|
|
|
4104
4156
|
"env.warm.done": "已就绪({n} 个站点)",
|
|
4105
4157
|
"env.warm.short": "这次没提前连上 —— 不影响用,第一次取数会自己补",
|
|
4106
4158
|
"env.unit.failed": "这个模块起不来",
|
|
4107
|
-
"env.unit.failedHint": "
|
|
4108
|
-
"env.unit.unchecked": "
|
|
4109
|
-
"env.unit.uncheckedHint": "
|
|
4159
|
+
"env.unit.failedHint": "它自己启动时报了错,别的模块不受影响。",
|
|
4160
|
+
"env.unit.unchecked": "检测不了:拿不到命令行",
|
|
4161
|
+
"env.unit.uncheckedHint": "不是这个模块的问题,是工作台拿不到命令行 —— 重启一次工作台再试。",
|
|
4110
4162
|
"adapterSet.not-configured": "没配置适配器集合,用默认的。",
|
|
4111
4163
|
"adapterSet.no-profile": "找不到 profile,没法加载适配器集合;先用默认的。",
|
|
4112
4164
|
"adapterSet.malformed": "适配器集合要写包名(如 @acme/adapters-set);先用默认的。",
|
|
@@ -4149,7 +4201,7 @@ window.__ModuleLoader__.load({
|
|
|
4149
4201
|
"sidebarEdition.official": "官方",
|
|
4150
4202
|
"sidebarEdition.officialHint": "跟 dsh 官方一致、最稳:搜索、视图选项、显示更多、归档、添加工作区都齐,升级也不等我们适配。想省心就选它。",
|
|
4151
4203
|
"sidebarEdition.custom": "自定义",
|
|
4152
|
-
"sidebarEdition.customHint": "
|
|
4204
|
+
"sidebarEdition.customHint": "为多项目工作流做的:项目下拉一屏一个项目,会话按最近更新排,名字自动滚动、两侧渐隐,工坊 DIY 新会话。项目多时更顺手。",
|
|
4153
4205
|
"sidebarEdition.saving": "配置中…",
|
|
4154
4206
|
"sidebarEdition.reloadRequired": "已写入。刷新页面后生效(不用重启工作台)。",
|
|
4155
4207
|
"sidebarEdition.reload": "刷新页面",
|
|
@@ -4178,25 +4230,25 @@ window.__ModuleLoader__.load({
|
|
|
4178
4230
|
"record.act.halt": "停",
|
|
4179
4231
|
"approval.record.site": "站点",
|
|
4180
4232
|
"approval.record.what": "录制功能",
|
|
4181
|
-
"approval.record.lands": "
|
|
4233
|
+
"approval.record.lands": "保存到",
|
|
4182
4234
|
"approval.record.noUrl": "没给站点地址(这次会被当场拒)",
|
|
4183
4235
|
"approval.record.oneAction": "一次操作",
|
|
4184
4236
|
"approval.record.noSwitch": "录完不会替你切回来(左栏底部会亮一条状态)",
|
|
4185
|
-
"approval.longTask.what": "
|
|
4186
|
-
"approval.longTask.signal": "停了只是让工作台发出中断信号 ——
|
|
4237
|
+
"approval.longTask.what": "要停的那次任务",
|
|
4238
|
+
"approval.longTask.signal": "停了只是让工作台发出中断信号 —— 这次任务怎么收尾由模块自己负责",
|
|
4187
4239
|
"approval.publish.module": "模块",
|
|
4188
4240
|
"approval.publish.target": "目标",
|
|
4189
4241
|
"approval.publish.version": "版本",
|
|
4190
4242
|
"approval.publish.author": "作者",
|
|
4191
|
-
"approval.publish.authorMissing": "
|
|
4243
|
+
"approval.publish.authorMissing": "未署名",
|
|
4192
4244
|
"approval.publish.registry": "源",
|
|
4193
4245
|
"approval.publish.repo": "仓库",
|
|
4194
4246
|
"approval.publish.branch": "分支",
|
|
4195
4247
|
"approval.publish.defaultBranch": "默认分支",
|
|
4196
|
-
"approval.publish.artifacts": "
|
|
4248
|
+
"approval.publish.artifacts": "打包文件",
|
|
4197
4249
|
"approval.publish.index": "索引",
|
|
4198
4250
|
"approval.publish.commits": "提交",
|
|
4199
|
-
"approval.publish.twoCommits": "
|
|
4251
|
+
"approval.publish.twoCommits": "打包文件 + market.json 两次提交,一次推送",
|
|
4200
4252
|
"approval.publish.reading": "读取中…",
|
|
4201
4253
|
"approval.publish.changelog": "{version} 的更新日志",
|
|
4202
4254
|
"approval.publish.changelogMissing": "这一版还没有更新日志({version}),发布会被拦下",
|
|
@@ -4954,7 +5006,11 @@ window.__ModuleLoader__.load({
|
|
|
4954
5006
|
id: `${bucket.kind}:${bucket.name}`,
|
|
4955
5007
|
kind: bucket.kind,
|
|
4956
5008
|
label: bucket.label,
|
|
4957
|
-
usedByKeys: bucket.users.map((unit) =>
|
|
5009
|
+
usedByKeys: bucket.users.map((unit) => {
|
|
5010
|
+
const manifest = byId.get(unit);
|
|
5011
|
+
if (manifest === void 0) return unit;
|
|
5012
|
+
return manifest.titleKey;
|
|
5013
|
+
}),
|
|
4958
5014
|
state,
|
|
4959
5015
|
canUpdate: state === "outdated" || state === "unsatisfied",
|
|
4960
5016
|
...version === void 0 ? {} : { version }
|
|
@@ -4972,6 +5028,7 @@ window.__ModuleLoader__.load({
|
|
|
4972
5028
|
broken: "panels.market.broken",
|
|
4973
5029
|
outdated: "panels.market.moduleOutdated",
|
|
4974
5030
|
"pending-restart": "panels.market.pendingRestart",
|
|
5031
|
+
"pending-followup": "panels.market.pendingFollowUp",
|
|
4975
5032
|
missing: "panels.market.missing",
|
|
4976
5033
|
unchecked: "panels.market.unchecked",
|
|
4977
5034
|
unknown: "panels.market.unchecked"
|
|
@@ -4984,6 +5041,7 @@ window.__ModuleLoader__.load({
|
|
|
4984
5041
|
broken: "error",
|
|
4985
5042
|
outdated: "warning",
|
|
4986
5043
|
"pending-restart": "warning",
|
|
5044
|
+
"pending-followup": "warning",
|
|
4987
5045
|
missing: "idle",
|
|
4988
5046
|
unchecked: "idle",
|
|
4989
5047
|
unknown: "idle"
|
|
@@ -5008,35 +5066,32 @@ window.__ModuleLoader__.load({
|
|
|
5008
5066
|
if (reported.length > 0) return reported;
|
|
5009
5067
|
return [...new Set(client ?? [])];
|
|
5010
5068
|
}
|
|
5011
|
-
function
|
|
5012
|
-
|
|
5013
|
-
for (const manifest of manifests) {
|
|
5014
|
-
const titleKey = manifest.card?.titleKey;
|
|
5015
|
-
if (titleKey === void 0 || known.has(manifest.id)) continue;
|
|
5016
|
-
next ??= new Map(known);
|
|
5017
|
-
next.set(manifest.id, titleKey);
|
|
5018
|
-
}
|
|
5019
|
-
return next ?? known;
|
|
5069
|
+
function updateBlockHintOf(block) {
|
|
5070
|
+
return block === "needs-workbench" ? "panels.market.updateNeedsWorkbench" : "panels.market.updateIncompatible";
|
|
5020
5071
|
}
|
|
5021
5072
|
function installedIdSet(installed) {
|
|
5022
5073
|
if (installed === void 0) return null;
|
|
5023
5074
|
return new Set(installed.map((item) => item.unit));
|
|
5024
5075
|
}
|
|
5025
|
-
function installedRows(modules, manifests, listed,
|
|
5026
|
-
const titles = new Map(manifests.map((manifest) => [manifest.id, manifest.
|
|
5076
|
+
function installedRows(modules, manifests, listed, names, defaults = /* @__PURE__ */ new Set(), changed = {}) {
|
|
5077
|
+
const titles = new Map(manifests.map((manifest) => [manifest.id, manifest.titleKey]));
|
|
5027
5078
|
const rows = [];
|
|
5028
5079
|
for (const module of modules) {
|
|
5029
5080
|
if (listed.has(module.unit)) continue;
|
|
5030
5081
|
const latest = module.local === true ? void 0 : module.latest;
|
|
5031
5082
|
const outdated = latest !== void 0 && latest !== module.installed;
|
|
5083
|
+
const blocked = outdated ? module.latestBlocked : void 0;
|
|
5032
5084
|
const loaded = titles.has(module.unit);
|
|
5033
5085
|
const refused = refusalReasons(module.refused, module.clientRefused);
|
|
5034
5086
|
const pending = !loaded && refused.length === 0;
|
|
5087
|
+
const titleKey = titles.get(module.unit);
|
|
5088
|
+
const remembered = titleKey === void 0 ? names?.get(module.unit) : void 0;
|
|
5035
5089
|
rows.push({
|
|
5036
5090
|
id: module.unit,
|
|
5037
|
-
titleKey:
|
|
5091
|
+
titleKey: titleKey ?? module.unit,
|
|
5092
|
+
...remembered === void 0 ? {} : { label: remembered },
|
|
5038
5093
|
state: outdated ? "outdated" : refused.length > 0 ? "unusable" : pending ? "inactive" : "installed",
|
|
5039
|
-
...pending ? { hint: "panels.market.moduleRestartHint" } : {},
|
|
5094
|
+
...pending ? { hint: "panels.market.moduleRestartHint" } : blocked === void 0 ? {} : { hint: updateBlockHintOf(blocked) },
|
|
5040
5095
|
...refused.length === 0 ? {} : { note: {
|
|
5041
5096
|
key: "panels.market.moduleRefused",
|
|
5042
5097
|
params: {}
|
|
@@ -5044,7 +5099,7 @@ window.__ModuleLoader__.load({
|
|
|
5044
5099
|
...module.local === true ? { local: true } : {},
|
|
5045
5100
|
pkg: module.pkg,
|
|
5046
5101
|
canInstall: false,
|
|
5047
|
-
canUpdate: outdated,
|
|
5102
|
+
canUpdate: outdated && blocked === void 0,
|
|
5048
5103
|
canUninstall: true,
|
|
5049
5104
|
version: {
|
|
5050
5105
|
installed: module.installed,
|
|
@@ -5052,7 +5107,8 @@ window.__ModuleLoader__.load({
|
|
|
5052
5107
|
},
|
|
5053
5108
|
...outdated ? { moduleUpdate: {
|
|
5054
5109
|
installed: module.installed,
|
|
5055
|
-
latest
|
|
5110
|
+
latest,
|
|
5111
|
+
...blocked === void 0 ? {} : { blocked }
|
|
5056
5112
|
} } : {},
|
|
5057
5113
|
defaultShown: defaults.has(module.unit),
|
|
5058
5114
|
defaultChanged: changed[module.unit] ?? 0
|
|
@@ -5065,11 +5121,14 @@ window.__ModuleLoader__.load({
|
|
|
5065
5121
|
return SWITCH_LOCKED.has(row.state);
|
|
5066
5122
|
}
|
|
5067
5123
|
function marketActions$1(row) {
|
|
5068
|
-
if (row.workbench === true)
|
|
5124
|
+
if (row.workbench === true) {
|
|
5125
|
+
if (row.followUp !== void 0 && row.state === "pending-followup") return row.followUp.hard ? ["migrate-workbench"] : ["migrate-workbench", "dismiss-followup"];
|
|
5126
|
+
return row.canUpdate ? ["update-workbench"] : [];
|
|
5127
|
+
}
|
|
5069
5128
|
if (row.plugin === true) return [...row.canUpdate ? ["update-plugin"] : [], ...row.canUninstall ? ["uninstall-plugin"] : []];
|
|
5070
5129
|
return [
|
|
5071
5130
|
...row.canInstall ? ["install"] : [],
|
|
5072
|
-
...row.moduleUpdate === void 0 ? row.canUpdate ? ["update"] : [] : ["update-bundle"],
|
|
5131
|
+
...row.moduleUpdate === void 0 ? row.canUpdate ? ["update"] : [] : row.moduleUpdate.blocked === void 0 ? ["update-bundle"] : [],
|
|
5073
5132
|
...row.canUninstall ? [row.pkg === void 0 ? "uninstall" : "remove-bundle"] : []
|
|
5074
5133
|
];
|
|
5075
5134
|
}
|
|
@@ -5147,7 +5206,7 @@ window.__ModuleLoader__.load({
|
|
|
5147
5206
|
return manifests.filter((manifest) => !gone.has(manifest.id));
|
|
5148
5207
|
}
|
|
5149
5208
|
function marketHasUpdates(rows, shared = []) {
|
|
5150
|
-
return rows.some((row) => row.state === "outdated"
|
|
5209
|
+
return rows.some((row) => row.moduleUpdate === void 0 ? row.state === "outdated" : row.moduleUpdate.blocked === void 0) || shared.some((row) => row.state === "outdated" || row.state === "unsatisfied");
|
|
5151
5210
|
}
|
|
5152
5211
|
function marketUpdatesOf(modules) {
|
|
5153
5212
|
if (modules === null) return {};
|
|
@@ -5157,6 +5216,7 @@ window.__ModuleLoader__.load({
|
|
|
5157
5216
|
next[module.unit] = {
|
|
5158
5217
|
installed: module.installed,
|
|
5159
5218
|
...local || module.latest === void 0 ? {} : { latest: module.latest },
|
|
5219
|
+
...local || module.latest === void 0 || module.latestBlocked === void 0 ? {} : { blocked: module.latestBlocked },
|
|
5160
5220
|
...local ? { local: true } : {}
|
|
5161
5221
|
};
|
|
5162
5222
|
}
|
|
@@ -5195,17 +5255,19 @@ window.__ModuleLoader__.load({
|
|
|
5195
5255
|
const reAdopt = capability?.released === true && !installDeclared;
|
|
5196
5256
|
const moduleUpdate = entry === void 0 || entry.latest === void 0 || entry.latest === entry.installed ? void 0 : {
|
|
5197
5257
|
installed: entry.installed,
|
|
5198
|
-
latest: entry.latest
|
|
5258
|
+
latest: entry.latest,
|
|
5259
|
+
...entry.blocked === void 0 ? {} : { blocked: entry.blocked }
|
|
5199
5260
|
};
|
|
5200
5261
|
const shown = moduleUpdate === void 0 ? state : "outdated";
|
|
5262
|
+
const hint = moduleUpdate?.blocked === void 0 ? shown === "unknown" || shown === "unchecked" ? "panels.market.uncheckedHint" : void 0 : updateBlockHintOf(moduleUpdate.blocked);
|
|
5201
5263
|
rows.push({
|
|
5202
5264
|
id: manifest.id,
|
|
5203
|
-
titleKey: manifest.
|
|
5265
|
+
titleKey: manifest.titleKey,
|
|
5204
5266
|
state: shown,
|
|
5205
5267
|
canInstall: state !== "installed" && (install || reAdopt),
|
|
5206
5268
|
canUpdate: onMachine && isOutdated(capability),
|
|
5207
5269
|
canUninstall: onMachine,
|
|
5208
|
-
...
|
|
5270
|
+
...hint === void 0 ? {} : { hint },
|
|
5209
5271
|
...entry === void 0 ? {} : { version: {
|
|
5210
5272
|
installed: entry.installed,
|
|
5211
5273
|
...entry.latest === void 0 ? {} : { latest: entry.latest }
|
|
@@ -5270,11 +5332,14 @@ window.__ModuleLoader__.load({
|
|
|
5270
5332
|
installed: version.installed,
|
|
5271
5333
|
latest
|
|
5272
5334
|
} : void 0;
|
|
5335
|
+
const stale = !local && version.running !== void 0 && version.running !== version.installed;
|
|
5336
|
+
const followUp = version.followUp;
|
|
5337
|
+
const followUpState = !stale && followUp !== void 0;
|
|
5273
5338
|
return {
|
|
5274
5339
|
id: WORKBENCH_ROW_ID,
|
|
5275
5340
|
titleKey: WORKBENCH_TITLE_KEY,
|
|
5276
5341
|
workbench: true,
|
|
5277
|
-
state:
|
|
5342
|
+
state: stale ? "pending-restart" : followUpState ? "pending-followup" : update === void 0 ? "installed" : "outdated",
|
|
5278
5343
|
canInstall: false,
|
|
5279
5344
|
canUpdate: update !== void 0,
|
|
5280
5345
|
canUninstall: false,
|
|
@@ -5284,6 +5349,8 @@ window.__ModuleLoader__.load({
|
|
|
5284
5349
|
...latest === void 0 ? {} : { latest }
|
|
5285
5350
|
},
|
|
5286
5351
|
...update === void 0 ? {} : { moduleUpdate: update },
|
|
5352
|
+
...followUp === void 0 ? {} : { followUp },
|
|
5353
|
+
...followUpState ? { hint: "panels.market.migrationHint" } : {},
|
|
5287
5354
|
pkg: version.pkg
|
|
5288
5355
|
};
|
|
5289
5356
|
}
|
|
@@ -5291,6 +5358,7 @@ window.__ModuleLoader__.load({
|
|
|
5291
5358
|
//#region src/app/layouts/rightbar/market-hint.ts
|
|
5292
5359
|
var PROBLEM_KEY = "panels.market.hasProblem";
|
|
5293
5360
|
var RESTART_KEY = "panels.market.pendingRestart";
|
|
5361
|
+
var FOLLOWUP_KEY = "panels.market.pendingFollowUp";
|
|
5294
5362
|
var UNKNOWN_KEY = "panels.market.unchecked";
|
|
5295
5363
|
var UPDATES_KEY = "panels.market.hasNew";
|
|
5296
5364
|
function isProblem(row) {
|
|
@@ -5321,12 +5389,14 @@ window.__ModuleLoader__.load({
|
|
|
5321
5389
|
];
|
|
5322
5390
|
const problem = rows.some(isProblem);
|
|
5323
5391
|
const restart = rows.some(isRestart) || awaitsRestart(input.manifests, installed);
|
|
5392
|
+
const followUp = rows.some((row) => row.state === "pending-followup");
|
|
5324
5393
|
const rosterRead = input.modules !== null;
|
|
5325
5394
|
const unknown = rows.some((row) => isUnknown(row, rosterRead));
|
|
5326
5395
|
const updates = marketHasUpdates(rows, sharedRows(marketable, input.capabilities));
|
|
5327
5396
|
const more = [];
|
|
5328
5397
|
if (problem) {
|
|
5329
5398
|
if (restart) more.push(RESTART_KEY);
|
|
5399
|
+
if (followUp) more.push(FOLLOWUP_KEY);
|
|
5330
5400
|
if (unknown) more.push(UNKNOWN_KEY);
|
|
5331
5401
|
if (updates) more.push(UPDATES_KEY);
|
|
5332
5402
|
return {
|
|
@@ -5336,6 +5406,7 @@ window.__ModuleLoader__.load({
|
|
|
5336
5406
|
};
|
|
5337
5407
|
}
|
|
5338
5408
|
if (restart) {
|
|
5409
|
+
if (followUp) more.push(FOLLOWUP_KEY);
|
|
5339
5410
|
if (unknown) more.push(UNKNOWN_KEY);
|
|
5340
5411
|
if (updates) more.push(UPDATES_KEY);
|
|
5341
5412
|
return {
|
|
@@ -5344,6 +5415,15 @@ window.__ModuleLoader__.load({
|
|
|
5344
5415
|
...more.length === 0 ? {} : { moreKeys: more }
|
|
5345
5416
|
};
|
|
5346
5417
|
}
|
|
5418
|
+
if (followUp) {
|
|
5419
|
+
if (unknown) more.push(UNKNOWN_KEY);
|
|
5420
|
+
if (updates) more.push(UPDATES_KEY);
|
|
5421
|
+
return {
|
|
5422
|
+
labelKey: FOLLOWUP_KEY,
|
|
5423
|
+
tone: "warning",
|
|
5424
|
+
...more.length === 0 ? {} : { moreKeys: more }
|
|
5425
|
+
};
|
|
5426
|
+
}
|
|
5347
5427
|
if (unknown) {
|
|
5348
5428
|
if (updates) more.push(UPDATES_KEY);
|
|
5349
5429
|
return {
|
|
@@ -5639,114 +5719,121 @@ window.__ModuleLoader__.load({
|
|
|
5639
5719
|
};
|
|
5640
5720
|
}
|
|
5641
5721
|
var MarketPage_module_default = {
|
|
5642
|
-
marketList: "
|
|
5643
|
-
marketRow: "
|
|
5644
|
-
marketIcon: "
|
|
5645
|
-
marketMain: "
|
|
5646
|
-
marketName: "
|
|
5647
|
-
marketStatus: "
|
|
5648
|
-
marketStateText: "
|
|
5649
|
-
marketSep: "
|
|
5650
|
-
marketReason: "
|
|
5651
|
-
marketVersion: "
|
|
5652
|
-
marketLocalTag: "
|
|
5653
|
-
marketEnd: "
|
|
5654
|
-
marketSwitchSeat: "
|
|
5655
|
-
marketActions: "
|
|
5656
|
-
marketUpdateAction: "
|
|
5657
|
-
marketSelfDivider: "
|
|
5658
|
-
marketSection: "
|
|
5659
|
-
marketSectionHead: "
|
|
5660
|
-
marketSectionIcon: "
|
|
5661
|
-
marketSectionTitle: "
|
|
5662
|
-
marketSectionCount: "
|
|
5663
|
-
marketSectionQuiet: "
|
|
5664
|
-
marketProgress: "
|
|
5665
|
-
marketNote: "
|
|
5666
|
-
marketFailure: "
|
|
5667
|
-
marketEmpty: "
|
|
5668
|
-
marketPage: "
|
|
5669
|
-
marketPageHead: "
|
|
5670
|
-
marketPageTitle: "
|
|
5671
|
-
marketPageIntro: "
|
|
5672
|
-
marketPageTools: "
|
|
5673
|
-
marketPanel: "
|
|
5674
|
-
marketTabs: "
|
|
5675
|
-
marketTabList: "
|
|
5676
|
-
marketIconButton: "
|
|
5677
|
-
marketIconWrap: "
|
|
5678
|
-
marketIconButtonSpinning: "
|
|
5679
|
-
"wb-spin": "_wb-
|
|
5680
|
-
marketAddButton: "
|
|
5681
|
-
marketEmptyTitle: "
|
|
5682
|
-
discoverPage: "
|
|
5683
|
-
discoverBar: "
|
|
5684
|
-
discoverTools: "
|
|
5685
|
-
discoverMarket: "
|
|
5686
|
-
discoverMarketButton: "
|
|
5687
|
-
discoverMarketName: "
|
|
5688
|
-
discoverLabels: "
|
|
5689
|
-
discoverSort: "
|
|
5690
|
-
discoverRefresh: "
|
|
5691
|
-
discoverSearch: "
|
|
5692
|
-
|
|
5693
|
-
|
|
5694
|
-
|
|
5695
|
-
|
|
5696
|
-
|
|
5697
|
-
|
|
5698
|
-
|
|
5699
|
-
|
|
5700
|
-
|
|
5701
|
-
|
|
5702
|
-
|
|
5703
|
-
|
|
5704
|
-
|
|
5705
|
-
|
|
5706
|
-
|
|
5707
|
-
|
|
5708
|
-
|
|
5709
|
-
|
|
5710
|
-
|
|
5711
|
-
|
|
5712
|
-
|
|
5713
|
-
|
|
5714
|
-
|
|
5715
|
-
|
|
5716
|
-
|
|
5717
|
-
|
|
5718
|
-
|
|
5719
|
-
|
|
5720
|
-
|
|
5721
|
-
|
|
5722
|
-
|
|
5723
|
-
|
|
5724
|
-
|
|
5725
|
-
|
|
5726
|
-
|
|
5727
|
-
|
|
5728
|
-
|
|
5729
|
-
|
|
5730
|
-
|
|
5731
|
-
|
|
5732
|
-
|
|
5733
|
-
|
|
5734
|
-
|
|
5735
|
-
|
|
5736
|
-
|
|
5737
|
-
|
|
5738
|
-
|
|
5739
|
-
|
|
5740
|
-
|
|
5741
|
-
|
|
5742
|
-
|
|
5743
|
-
|
|
5744
|
-
|
|
5745
|
-
|
|
5746
|
-
|
|
5747
|
-
|
|
5748
|
-
|
|
5749
|
-
|
|
5722
|
+
marketList: "_marketList_1idrk_1",
|
|
5723
|
+
marketRow: "_marketRow_1idrk_10",
|
|
5724
|
+
marketIcon: "_marketIcon_1idrk_20",
|
|
5725
|
+
marketMain: "_marketMain_1idrk_32",
|
|
5726
|
+
marketName: "_marketName_1idrk_39",
|
|
5727
|
+
marketStatus: "_marketStatus_1idrk_48",
|
|
5728
|
+
marketStateText: "_marketStateText_1idrk_58",
|
|
5729
|
+
marketSep: "_marketSep_1idrk_62",
|
|
5730
|
+
marketReason: "_marketReason_1idrk_66",
|
|
5731
|
+
marketVersion: "_marketVersion_1idrk_72",
|
|
5732
|
+
marketLocalTag: "_marketLocalTag_1idrk_94",
|
|
5733
|
+
marketEnd: "_marketEnd_1idrk_105",
|
|
5734
|
+
marketSwitchSeat: "_marketSwitchSeat_1idrk_112",
|
|
5735
|
+
marketActions: "_marketActions_1idrk_125",
|
|
5736
|
+
marketUpdateAction: "_marketUpdateAction_1idrk_131",
|
|
5737
|
+
marketSelfDivider: "_marketSelfDivider_1idrk_137",
|
|
5738
|
+
marketSection: "_marketSection_1idrk_143",
|
|
5739
|
+
marketSectionHead: "_marketSectionHead_1idrk_150",
|
|
5740
|
+
marketSectionIcon: "_marketSectionIcon_1idrk_156",
|
|
5741
|
+
marketSectionTitle: "_marketSectionTitle_1idrk_163",
|
|
5742
|
+
marketSectionCount: "_marketSectionCount_1idrk_169",
|
|
5743
|
+
marketSectionQuiet: "_marketSectionQuiet_1idrk_175",
|
|
5744
|
+
marketProgress: "_marketProgress_1idrk_188",
|
|
5745
|
+
marketNote: "_marketNote_1idrk_198",
|
|
5746
|
+
marketFailure: "_marketFailure_1idrk_205",
|
|
5747
|
+
marketEmpty: "_marketEmpty_1idrk_212",
|
|
5748
|
+
marketPage: "_marketPage_1idrk_217",
|
|
5749
|
+
marketPageHead: "_marketPageHead_1idrk_235",
|
|
5750
|
+
marketPageTitle: "_marketPageTitle_1idrk_243",
|
|
5751
|
+
marketPageIntro: "_marketPageIntro_1idrk_248",
|
|
5752
|
+
marketPageTools: "_marketPageTools_1idrk_254",
|
|
5753
|
+
marketPanel: "_marketPanel_1idrk_263",
|
|
5754
|
+
marketTabs: "_marketTabs_1idrk_273",
|
|
5755
|
+
marketTabList: "_marketTabList_1idrk_278",
|
|
5756
|
+
marketIconButton: "_marketIconButton_1idrk_283",
|
|
5757
|
+
marketIconWrap: "_marketIconWrap_1idrk_308",
|
|
5758
|
+
marketIconButtonSpinning: "_marketIconButtonSpinning_1idrk_312",
|
|
5759
|
+
"wb-spin": "_wb-spin_1idrk_1",
|
|
5760
|
+
marketAddButton: "_marketAddButton_1idrk_316",
|
|
5761
|
+
marketEmptyTitle: "_marketEmptyTitle_1idrk_333",
|
|
5762
|
+
discoverPage: "_discoverPage_1idrk_347",
|
|
5763
|
+
discoverBar: "_discoverBar_1idrk_354",
|
|
5764
|
+
discoverTools: "_discoverTools_1idrk_361",
|
|
5765
|
+
discoverMarket: "_discoverMarket_1idrk_367",
|
|
5766
|
+
discoverMarketButton: "_discoverMarketButton_1idrk_372",
|
|
5767
|
+
discoverMarketName: "_discoverMarketName_1idrk_379",
|
|
5768
|
+
discoverLabels: "_discoverLabels_1idrk_385",
|
|
5769
|
+
discoverSort: "_discoverSort_1idrk_390",
|
|
5770
|
+
discoverRefresh: "_discoverRefresh_1idrk_395",
|
|
5771
|
+
discoverSearch: "_discoverSearch_1idrk_399",
|
|
5772
|
+
discoverSearchField: "_discoverSearchField_1idrk_407",
|
|
5773
|
+
discoverSearchFieldFilled: "_discoverSearchFieldFilled_1idrk_412",
|
|
5774
|
+
discoverSearchClear: "_discoverSearchClear_1idrk_421",
|
|
5775
|
+
discoverChips: "_discoverChips_1idrk_472",
|
|
5776
|
+
discoverList: "_discoverList_1idrk_479",
|
|
5777
|
+
discoverCard: "_discoverCard_1idrk_488",
|
|
5778
|
+
discoverArtwork: "_discoverArtwork_1idrk_502",
|
|
5779
|
+
discoverArtworkImage: "_discoverArtworkImage_1idrk_514",
|
|
5780
|
+
discoverMain: "_discoverMain_1idrk_518",
|
|
5781
|
+
discoverTitleRow: "_discoverTitleRow_1idrk_526",
|
|
5782
|
+
discoverCardOpen: "_discoverCardOpen_1idrk_534",
|
|
5783
|
+
discoverStrong: "_discoverStrong_1idrk_565",
|
|
5784
|
+
discoverDesc: "_discoverDesc_1idrk_571",
|
|
5785
|
+
discoverMeta: "_discoverMeta_1idrk_580",
|
|
5786
|
+
discoverMuted: "_discoverMuted_1idrk_587",
|
|
5787
|
+
discoverEnd: "_discoverEnd_1idrk_593",
|
|
5788
|
+
discoverBlocked: "_discoverBlocked_1idrk_602",
|
|
5789
|
+
discoverEmpty: "_discoverEmpty_1idrk_607",
|
|
5790
|
+
discoverEmptyTitle: "_discoverEmptyTitle_1idrk_616",
|
|
5791
|
+
discoverDetail: "_discoverDetail_1idrk_626",
|
|
5792
|
+
discoverCrumb: "_discoverCrumb_1idrk_632",
|
|
5793
|
+
discoverCrumbIcon: "_discoverCrumbIcon_1idrk_655",
|
|
5794
|
+
discoverDetailHead: "_discoverDetailHead_1idrk_659",
|
|
5795
|
+
discoverDetailTitle: "_discoverDetailTitle_1idrk_665",
|
|
5796
|
+
discoverDetailText: "_discoverDetailText_1idrk_671",
|
|
5797
|
+
discoverDetailPanel: "_discoverDetailPanel_1idrk_678",
|
|
5798
|
+
discoverDetailTabs: "_discoverDetailTabs_1idrk_685",
|
|
5799
|
+
discoverDetailTabList: "_discoverDetailTabList_1idrk_690",
|
|
5800
|
+
discoverDocBody: "_discoverDocBody_1idrk_695",
|
|
5801
|
+
discoverDocNotice: "_discoverDocNotice_1idrk_700",
|
|
5802
|
+
discoverSection: "_discoverSection_1idrk_706",
|
|
5803
|
+
discoverSectionTitle: "_discoverSectionTitle_1idrk_713",
|
|
5804
|
+
discoverFacts: "_discoverFacts_1idrk_719",
|
|
5805
|
+
discoverFactRow: "_discoverFactRow_1idrk_724",
|
|
5806
|
+
discoverFactKind: "_discoverFactKind_1idrk_734",
|
|
5807
|
+
discoverFactValue: "_discoverFactValue_1idrk_740",
|
|
5808
|
+
discoverCode: "_discoverCode_1idrk_748",
|
|
5809
|
+
discoverTags: "_discoverTags_1idrk_757",
|
|
5810
|
+
discoverLink: "_discoverLink_1idrk_764",
|
|
5811
|
+
discoverVersions: "_discoverVersions_1idrk_774",
|
|
5812
|
+
discoverVersionRow: "_discoverVersionRow_1idrk_782",
|
|
5813
|
+
discoverVersionName: "_discoverVersionName_1idrk_790",
|
|
5814
|
+
discoverError: "_discoverError_1idrk_795",
|
|
5815
|
+
discoverFailure: "_discoverFailure_1idrk_804",
|
|
5816
|
+
discoverLoading: "_discoverLoading_1idrk_810",
|
|
5817
|
+
discoverNotice: "_discoverNotice_1idrk_819",
|
|
5818
|
+
discoverMore: "_discoverMore_1idrk_837",
|
|
5819
|
+
discoverDialog: "_discoverDialog_1idrk_841",
|
|
5820
|
+
discoverDialogBody: "_discoverDialogBody_1idrk_845",
|
|
5821
|
+
discoverSourceList: "_discoverSourceList_1idrk_851",
|
|
5822
|
+
discoverSourceRow: "_discoverSourceRow_1idrk_859",
|
|
5823
|
+
discoverSourceCurrent: "_discoverSourceCurrent_1idrk_868",
|
|
5824
|
+
discoverSourceLoading: "_discoverSourceLoading_1idrk_875",
|
|
5825
|
+
discoverSourceHint: "_discoverSourceHint_1idrk_885",
|
|
5826
|
+
discoverSourceError: "_discoverSourceError_1idrk_899",
|
|
5827
|
+
discoverSourceForm: "_discoverSourceForm_1idrk_905",
|
|
5828
|
+
discoverGrow: "_discoverGrow_1idrk_911",
|
|
5829
|
+
discoverField: "_discoverField_1idrk_916",
|
|
5830
|
+
discoverFieldLabel: "_discoverFieldLabel_1idrk_922",
|
|
5831
|
+
discoverConfirmHead: "_discoverConfirmHead_1idrk_927",
|
|
5832
|
+
discoverSkeletonFill: "_discoverSkeletonFill_1idrk_933",
|
|
5833
|
+
"wb-skeleton": "_wb-skeleton_1idrk_1",
|
|
5834
|
+
discoverSkeletonBar: "_discoverSkeletonBar_1idrk_942",
|
|
5835
|
+
discoverSkeletonTitle: "_discoverSkeletonTitle_1idrk_949",
|
|
5836
|
+
discoverSkeletonDesc: "_discoverSkeletonDesc_1idrk_953"
|
|
5750
5837
|
};
|
|
5751
5838
|
//#endregion
|
|
5752
5839
|
//#region src/app/layouts/market/discover-states.tsx
|
|
@@ -5770,6 +5857,13 @@ window.__ModuleLoader__.load({
|
|
|
5770
5857
|
function DiscoverEmptyText({ text }) {
|
|
5771
5858
|
return /* @__PURE__ */ (0, react.createElement)("p", { className: MarketPage_module_default.discoverMuted }, text);
|
|
5772
5859
|
}
|
|
5860
|
+
function DiscoverLoading({ label }) {
|
|
5861
|
+
return /* @__PURE__ */ (0, react.createElement)("p", {
|
|
5862
|
+
className: MarketPage_module_default.discoverLoading,
|
|
5863
|
+
role: "status",
|
|
5864
|
+
"aria-live": "polite"
|
|
5865
|
+
}, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.StateDot, { state: "ongoing" }), label);
|
|
5866
|
+
}
|
|
5773
5867
|
function DiscoverFailure({ t, text, onRetry }) {
|
|
5774
5868
|
return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverFailure }, /* @__PURE__ */ (0, react.createElement)("p", {
|
|
5775
5869
|
className: MarketPage_module_default.discoverError,
|
|
@@ -5838,6 +5932,18 @@ window.__ModuleLoader__.load({
|
|
|
5838
5932
|
return row.kind === "extension" ? "plugin" : "lib";
|
|
5839
5933
|
}
|
|
5840
5934
|
//#endregion
|
|
5935
|
+
//#region src/app/layouts/rightbar/market-names.ts
|
|
5936
|
+
function namesOf(t, modules, titleOf) {
|
|
5937
|
+
const shown = /* @__PURE__ */ new Map();
|
|
5938
|
+
for (const module of modules) {
|
|
5939
|
+
const key = unitTitleKey(module.unit);
|
|
5940
|
+
const live = t(key);
|
|
5941
|
+
const name = live !== key && live !== "" ? live : titleOf(module.title);
|
|
5942
|
+
if (name !== "") shown.set(module.unit, name);
|
|
5943
|
+
}
|
|
5944
|
+
return shown;
|
|
5945
|
+
}
|
|
5946
|
+
//#endregion
|
|
5841
5947
|
//#region src/app/layouts/rightbar/market-view-text.ts
|
|
5842
5948
|
var PROGRESS_KEY = {
|
|
5843
5949
|
install: "panels.market.installing",
|
|
@@ -5848,7 +5954,9 @@ window.__ModuleLoader__.load({
|
|
|
5848
5954
|
"update-dependency": "panels.market.updating",
|
|
5849
5955
|
"update-plugin": "panels.market.updating",
|
|
5850
5956
|
"uninstall-plugin": "panels.market.uninstalling",
|
|
5851
|
-
"update-workbench": "panels.market.updating"
|
|
5957
|
+
"update-workbench": "panels.market.updating",
|
|
5958
|
+
"migrate-workbench": "panels.market.migrating",
|
|
5959
|
+
"dismiss-followup": "panels.market.dismissing"
|
|
5852
5960
|
};
|
|
5853
5961
|
var ACTION_LABEL_KEY = {
|
|
5854
5962
|
install: "panels.market.install",
|
|
@@ -5859,7 +5967,9 @@ window.__ModuleLoader__.load({
|
|
|
5859
5967
|
"update-dependency": "panels.market.update",
|
|
5860
5968
|
"update-plugin": "panels.market.update",
|
|
5861
5969
|
"uninstall-plugin": "panels.market.uninstall",
|
|
5862
|
-
"update-workbench": "panels.market.update"
|
|
5970
|
+
"update-workbench": "panels.market.update",
|
|
5971
|
+
"migrate-workbench": "panels.market.migrateAction",
|
|
5972
|
+
"dismiss-followup": "panels.market.dismissFollowUp"
|
|
5863
5973
|
};
|
|
5864
5974
|
function holdOf(pending, application) {
|
|
5865
5975
|
if (pending === null || pending.row === void 0) return void 0;
|
|
@@ -5907,12 +6017,9 @@ window.__ModuleLoader__.load({
|
|
|
5907
6017
|
function marketFootVisible(shown, installed) {
|
|
5908
6018
|
return shown.length > 0 || installed.length > 0;
|
|
5909
6019
|
}
|
|
5910
|
-
|
|
5911
|
-
|
|
5912
|
-
(
|
|
5913
|
-
if (!mocked) setTitles((known) => mergeTitles(known, manifests));
|
|
5914
|
-
}, [manifests, mocked]);
|
|
5915
|
-
return titles;
|
|
6020
|
+
var NO_NAMES = /* @__PURE__ */ new Map();
|
|
6021
|
+
function marketNamesOf(t, modules, titleOf, mocked) {
|
|
6022
|
+
return mocked ? NO_NAMES : namesOf(t, modules, titleOf);
|
|
5916
6023
|
}
|
|
5917
6024
|
function useHeldRow(pending, backInRoster) {
|
|
5918
6025
|
const [held, setHeld] = (0, react.useState)(void 0);
|
|
@@ -5948,10 +6055,11 @@ window.__ModuleLoader__.load({
|
|
|
5948
6055
|
const { pending, removing } = input;
|
|
5949
6056
|
if (removing === null || pending === null) return void 0;
|
|
5950
6057
|
if (input.rows.some((row) => row.id === removing)) return void 0;
|
|
6058
|
+
const name = pending.label ?? input.names.get(removing);
|
|
5951
6059
|
return {
|
|
5952
6060
|
id: removing,
|
|
5953
|
-
titleKey: pending.titleKey ??
|
|
5954
|
-
...
|
|
6061
|
+
titleKey: pending.titleKey ?? removing,
|
|
6062
|
+
...name === void 0 ? {} : { label: name },
|
|
5955
6063
|
state: "installed",
|
|
5956
6064
|
canInstall: false,
|
|
5957
6065
|
canUpdate: false,
|
|
@@ -6068,49 +6176,120 @@ window.__ModuleLoader__.load({
|
|
|
6068
6176
|
"update-plugin",
|
|
6069
6177
|
"update-workbench"
|
|
6070
6178
|
];
|
|
6179
|
+
function MigrationConfirm({ t, onConfirm, onCancel }) {
|
|
6180
|
+
const [acknowledged, setAcknowledged] = (0, react.useState)(false);
|
|
6181
|
+
return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.RiskConfirmation, {
|
|
6182
|
+
open: true,
|
|
6183
|
+
title: t("panels.market.migrateConfirmTitle"),
|
|
6184
|
+
description: t("panels.market.migrateConfirmDetail"),
|
|
6185
|
+
acknowledgeLabel: t("panels.market.migrateConfirmAck"),
|
|
6186
|
+
cancelLabel: t("panels.market.confirmNo"),
|
|
6187
|
+
closeLabel: t("panels.market.confirmNo"),
|
|
6188
|
+
confirmLabel: t("panels.market.migrateConfirmYes"),
|
|
6189
|
+
acknowledged,
|
|
6190
|
+
onAcknowledgedChange: setAcknowledged,
|
|
6191
|
+
onCancel,
|
|
6192
|
+
onConfirm
|
|
6193
|
+
});
|
|
6194
|
+
}
|
|
6195
|
+
function DismissFollowUpConfirm({ t, onConfirm, onCancel }) {
|
|
6196
|
+
const [acknowledged, setAcknowledged] = (0, react.useState)(false);
|
|
6197
|
+
return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.RiskConfirmation, {
|
|
6198
|
+
open: true,
|
|
6199
|
+
title: t("panels.market.dismissFollowUpTitle"),
|
|
6200
|
+
description: t("panels.market.dismissFollowUpDetail"),
|
|
6201
|
+
acknowledgeLabel: t("panels.market.dismissFollowUpAck"),
|
|
6202
|
+
cancelLabel: t("panels.market.confirmNo"),
|
|
6203
|
+
closeLabel: t("panels.market.confirmNo"),
|
|
6204
|
+
confirmLabel: t("panels.market.dismissFollowUpYes"),
|
|
6205
|
+
acknowledged,
|
|
6206
|
+
onAcknowledgedChange: setAcknowledged,
|
|
6207
|
+
onCancel,
|
|
6208
|
+
onConfirm
|
|
6209
|
+
});
|
|
6210
|
+
}
|
|
6211
|
+
function MarketLineDialogs({ t, migrationOpen, dismissOpen, onMigrationCancel, onMigrationConfirm, onDismissCancel, onDismissConfirm }) {
|
|
6212
|
+
return /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, migrationOpen ? /* @__PURE__ */ (0, react.createElement)(MigrationConfirm, {
|
|
6213
|
+
t,
|
|
6214
|
+
onCancel: onMigrationCancel,
|
|
6215
|
+
onConfirm: onMigrationConfirm
|
|
6216
|
+
}) : null, dismissOpen ? /* @__PURE__ */ (0, react.createElement)(DismissFollowUpConfirm, {
|
|
6217
|
+
t,
|
|
6218
|
+
onCancel: onDismissCancel,
|
|
6219
|
+
onConfirm: onDismissConfirm
|
|
6220
|
+
}) : null);
|
|
6221
|
+
}
|
|
6222
|
+
function MarketLineStatus({ t, row, quiet }) {
|
|
6223
|
+
const stateText = t(MARKET_STATE_KEY[row.state]);
|
|
6224
|
+
const noteText = row.note === void 0 ? null : t(row.note.key, row.note.params);
|
|
6225
|
+
if (quiet) return null;
|
|
6226
|
+
return /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketStatus }, row.state === "checking" ? /* @__PURE__ */ (0, react.createElement)(Spinner, { size: 14 }) : /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
|
|
6227
|
+
state: MARKET_DOT[row.state],
|
|
6228
|
+
size: 9
|
|
6229
|
+
}), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketStateText }, stateText), row.hint === void 0 ? null : /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)("span", {
|
|
6230
|
+
className: MarketPage_module_default.marketSep,
|
|
6231
|
+
"aria-hidden": "true"
|
|
6232
|
+
}, "·"), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketReason }, t(row.hint))), noteText === null ? null : /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)("span", {
|
|
6233
|
+
className: MarketPage_module_default.marketSep,
|
|
6234
|
+
"aria-hidden": "true"
|
|
6235
|
+
}, "·"), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketReason }, noteText)));
|
|
6236
|
+
}
|
|
6071
6237
|
function MarketLine({ t, row, pending, failure, onAct, onDefault, boardBusy }) {
|
|
6072
6238
|
const running = pending !== null && pending.id === row.id ? pending : null;
|
|
6073
6239
|
const locked = pending !== null;
|
|
6240
|
+
const [migrationOpen, setMigrationOpen] = (0, react.useState)(false);
|
|
6241
|
+
const [dismissOpen, setDismissOpen] = (0, react.useState)(false);
|
|
6074
6242
|
const quiet = row.workbench === true && row.state === "installed" && row.hint === void 0;
|
|
6075
6243
|
const actions = marketActions$1(row);
|
|
6076
6244
|
const switchLocked = marketSwitchLocked(row);
|
|
6077
|
-
const stateText = t(MARKET_STATE_KEY[row.state]);
|
|
6078
|
-
const noteText = row.note === void 0 ? null : t(row.note.key, row.note.params);
|
|
6079
6245
|
return /* @__PURE__ */ (0, react.createElement)("li", { className: MarketPage_module_default.marketRow }, /* @__PURE__ */ (0, react.createElement)("span", {
|
|
6080
6246
|
className: MarketPage_module_default.marketIcon,
|
|
6081
6247
|
"aria-hidden": "true"
|
|
6082
6248
|
}, packageIcon(marketRowKind(row))), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketMain }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketName }, marketRowTitle(row, t), row.versionLabel === void 0 ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketVersion }, row.versionLabel), row.version === void 0 || row.versionLabel !== void 0 ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketVersion }, row.version.installed !== void 0 && row.version.latest !== void 0 && row.version.installed !== row.version.latest ? t("panels.market.versionArrow", {
|
|
6083
6249
|
from: row.version.installed,
|
|
6084
6250
|
to: row.version.latest
|
|
6085
|
-
}) : row.version.installed ?? row.version.latest ?? ""), row.local === true ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketLocalTag }, t("panels.market.localMark")) : null),
|
|
6086
|
-
|
|
6087
|
-
|
|
6088
|
-
|
|
6089
|
-
|
|
6090
|
-
"aria-hidden": "true"
|
|
6091
|
-
}, "·"), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketReason }, t(row.hint))), noteText === null ? null : /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)("span", {
|
|
6092
|
-
className: MarketPage_module_default.marketSep,
|
|
6093
|
-
"aria-hidden": "true"
|
|
6094
|
-
}, "·"), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketReason }, noteText)))), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketEnd }, running !== null ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketProgress }, /* @__PURE__ */ (0, react.createElement)(Spinner, { size: 14 }), t(PROGRESS_KEY[running.action])) : actions.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketActions }, actions.map((action) => {
|
|
6251
|
+
}) : row.version.installed ?? row.version.latest ?? ""), row.local === true ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketLocalTag }, t("panels.market.localMark")) : null), /* @__PURE__ */ (0, react.createElement)(MarketLineStatus, {
|
|
6252
|
+
t,
|
|
6253
|
+
row,
|
|
6254
|
+
quiet
|
|
6255
|
+
})), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketEnd }, running !== null ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketProgress }, /* @__PURE__ */ (0, react.createElement)(Spinner, { size: 14 }), t(PROGRESS_KEY[running.action])) : actions.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketActions }, actions.map((action) => {
|
|
6095
6256
|
const danger = dangerActions.includes(action);
|
|
6096
6257
|
const update = updateActions.includes(action);
|
|
6097
6258
|
return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
6098
6259
|
key: action,
|
|
6099
6260
|
type: "button",
|
|
6100
6261
|
size: "sm",
|
|
6101
|
-
variant: action === "install" ? "primary" : "outline",
|
|
6262
|
+
variant: action === "install" || action === "migrate-workbench" ? "primary" : "outline",
|
|
6102
6263
|
className: danger ? "wb-dangerAction" : update ? MarketPage_module_default.marketUpdateAction : void 0,
|
|
6103
6264
|
icon: danger ? /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconTrashOutlineRegular, { size: 13 }) : void 0,
|
|
6104
6265
|
"aria-label": danger ? t("panels.market.uninstallLabel", { name: marketRowTitle(row, t) }) : void 0,
|
|
6105
6266
|
disabled: locked,
|
|
6106
|
-
onClick: () =>
|
|
6267
|
+
onClick: () => {
|
|
6268
|
+
if (action === "migrate-workbench") setMigrationOpen(true);
|
|
6269
|
+
else if (action === "dismiss-followup") setDismissOpen(true);
|
|
6270
|
+
else onAct(action);
|
|
6271
|
+
}
|
|
6107
6272
|
}, t(ACTION_LABEL_KEY[action]));
|
|
6108
6273
|
})), row.defaultShown === void 0 ? null : /* @__PURE__ */ (0, react.createElement)(Tip, { label: t(switchLocked ? "panels.market.defaultLocked" : "panels.market.defaultHint") }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketSwitchSeat }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Switch, {
|
|
6109
6274
|
checked: row.defaultShown,
|
|
6110
6275
|
disabled: boardBusy === true || locked || switchLocked,
|
|
6111
6276
|
label: `${marketRowTitle(row, t)} · ${t("panels.market.defaultLabel")}`,
|
|
6112
6277
|
onChange: (next) => onDefault?.(next)
|
|
6113
|
-
})))), failure === null ? null : /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketFailure }, failure))
|
|
6278
|
+
})))), failure === null ? null : /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketFailure }, failure), /* @__PURE__ */ (0, react.createElement)(MarketLineDialogs, {
|
|
6279
|
+
t,
|
|
6280
|
+
migrationOpen,
|
|
6281
|
+
dismissOpen,
|
|
6282
|
+
onMigrationCancel: () => setMigrationOpen(false),
|
|
6283
|
+
onMigrationConfirm: () => {
|
|
6284
|
+
setMigrationOpen(false);
|
|
6285
|
+
onAct("migrate-workbench");
|
|
6286
|
+
},
|
|
6287
|
+
onDismissCancel: () => setDismissOpen(false),
|
|
6288
|
+
onDismissConfirm: () => {
|
|
6289
|
+
setDismissOpen(false);
|
|
6290
|
+
onAct("dismiss-followup");
|
|
6291
|
+
}
|
|
6292
|
+
}));
|
|
6114
6293
|
}
|
|
6115
6294
|
function MarketSection({ t, titleKey, icon, rows, pending, failureOf, act, confirmActions, onConfirming, onDefault, boardBusy }) {
|
|
6116
6295
|
if (rows.length === 0) return null;
|
|
@@ -6425,10 +6604,13 @@ window.__ModuleLoader__.load({
|
|
|
6425
6604
|
seats.setConfirming(null);
|
|
6426
6605
|
seats.setFailed(null);
|
|
6427
6606
|
seats.setNotice(null);
|
|
6428
|
-
const outcome = await send(action === "
|
|
6607
|
+
const outcome = await send(action === "dismiss-followup" ? {
|
|
6608
|
+
action,
|
|
6609
|
+
id: row?.followUp?.id ?? ""
|
|
6610
|
+
} : action === "update-dependency" ? {
|
|
6429
6611
|
action,
|
|
6430
6612
|
id
|
|
6431
|
-
} : action === "remove-bundle" || action === "update-plugin" || action === "uninstall-plugin" || action === "update-workbench" ? {
|
|
6613
|
+
} : action === "remove-bundle" || action === "update-plugin" || action === "uninstall-plugin" || action === "update-workbench" || action === "migrate-workbench" ? {
|
|
6432
6614
|
action,
|
|
6433
6615
|
name: row?.pkg ?? ""
|
|
6434
6616
|
} : {
|
|
@@ -6446,6 +6628,21 @@ window.__ModuleLoader__.load({
|
|
|
6446
6628
|
return;
|
|
6447
6629
|
}
|
|
6448
6630
|
const value = outcome.value;
|
|
6631
|
+
if (action === "dismiss-followup") {
|
|
6632
|
+
onChanged({ force: true });
|
|
6633
|
+
seats.setPending(null);
|
|
6634
|
+
seats.setHeld(void 0);
|
|
6635
|
+
seats.setNotice(t("panels.market.dismissed"));
|
|
6636
|
+
return;
|
|
6637
|
+
}
|
|
6638
|
+
if (action === "migrate-workbench") {
|
|
6639
|
+
const added = recordOf(value)?.["added"];
|
|
6640
|
+
onChanged({ force: true });
|
|
6641
|
+
seats.setPending(null);
|
|
6642
|
+
seats.setHeld(void 0);
|
|
6643
|
+
seats.setNotice(t("panels.market.migrateDone", { added: typeof added === "number" ? String(added) : "0" }));
|
|
6644
|
+
return;
|
|
6645
|
+
}
|
|
6449
6646
|
const change = changeOf(value);
|
|
6450
6647
|
const failure = updateVerdictText(updateVerdictOf({
|
|
6451
6648
|
action,
|
|
@@ -6500,9 +6697,6 @@ window.__ModuleLoader__.load({
|
|
|
6500
6697
|
"remove-bundle",
|
|
6501
6698
|
"uninstall-plugin"
|
|
6502
6699
|
];
|
|
6503
|
-
function marketMigrationNotice(t, update) {
|
|
6504
|
-
return update?.migration === "needed" ? t("panels.market.selfUpdateNeedsMigrate") : null;
|
|
6505
|
-
}
|
|
6506
6700
|
function ConfirmUninstall({ t, name, onConfirm, onCancel }) {
|
|
6507
6701
|
const [acknowledged, setAcknowledged] = (0, react.useState)(false);
|
|
6508
6702
|
return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.RiskConfirmation, {
|
|
@@ -6572,8 +6766,8 @@ window.__ModuleLoader__.load({
|
|
|
6572
6766
|
}));
|
|
6573
6767
|
}
|
|
6574
6768
|
function useMarketScene(input) {
|
|
6575
|
-
const { manifests, installable, capabilities, updates, installed, settling, mock, defaults, changed, pending, failed } = input;
|
|
6576
|
-
const
|
|
6769
|
+
const { t, titleOf, manifests, installable, capabilities, updates, installed, settling, mock, defaults, changed, pending, failed } = input;
|
|
6770
|
+
const names = marketNamesOf(t, installed ?? [], titleOf, mock !== void 0);
|
|
6577
6771
|
const catalog = mock?.manifests ?? manifests;
|
|
6578
6772
|
const marketable = mock === void 0 ? marketCatalog(manifests, installable) : catalog;
|
|
6579
6773
|
const effective = mock === void 0 ? capabilities : mock.capabilities;
|
|
@@ -6587,13 +6781,13 @@ window.__ModuleLoader__.load({
|
|
|
6587
6781
|
const pinned = pinnedRowOf(pending, steady.held);
|
|
6588
6782
|
const busyId = heldIdOf(pending, steady.held);
|
|
6589
6783
|
return {
|
|
6590
|
-
|
|
6784
|
+
names,
|
|
6591
6785
|
catalog,
|
|
6592
6786
|
effective,
|
|
6593
6787
|
updateMap,
|
|
6594
6788
|
rows,
|
|
6595
6789
|
shared,
|
|
6596
|
-
installedList: installedRows((mock?.installed ?? installed ?? []).filter((module) => module.unit !== pinned?.id && (!(settling?.has(module.unit) ?? false) || module.unit === busyId) && module.unit !== removing), catalog, new Set(rows.map((row) => row.id)),
|
|
6790
|
+
installedList: installedRows((mock?.installed ?? installed ?? []).filter((module) => module.unit !== pinned?.id && (!(settling?.has(module.unit) ?? false) || module.unit === busyId) && module.unit !== removing), catalog, new Set(rows.map((row) => row.id)), mock === void 0 ? names : void 0, byDefault, changed),
|
|
6597
6791
|
byDefault,
|
|
6598
6792
|
steady,
|
|
6599
6793
|
pinned,
|
|
@@ -6601,12 +6795,14 @@ window.__ModuleLoader__.load({
|
|
|
6601
6795
|
busyId
|
|
6602
6796
|
};
|
|
6603
6797
|
}
|
|
6604
|
-
function MarketView({ t, manifests, installable, capabilities, freshness, onChanged, onPending, updates, installed, installedRead, workbench, selfUpdate, plugins, settling, mock, defaults = [], changed = {} }) {
|
|
6798
|
+
function MarketView({ t, titleOf, manifests, installable, capabilities, freshness, onChanged, onPending, updates, installed, installedRead, workbench, selfUpdate, plugins, settling, mock, defaults = [], changed = {} }) {
|
|
6605
6799
|
const { pending, setPending, confirming, setConfirming, failed, setFailed, notice, setNotice } = useMarketTransient({
|
|
6606
6800
|
mock,
|
|
6607
6801
|
onPending
|
|
6608
6802
|
});
|
|
6609
|
-
const {
|
|
6803
|
+
const { names, effective, updateMap, rows, shared, installedList, byDefault, steady, pinned, removing, busyId } = useMarketScene({
|
|
6804
|
+
t,
|
|
6805
|
+
titleOf,
|
|
6610
6806
|
manifests,
|
|
6611
6807
|
installable,
|
|
6612
6808
|
capabilities,
|
|
@@ -6651,7 +6847,7 @@ window.__ModuleLoader__.load({
|
|
|
6651
6847
|
pending,
|
|
6652
6848
|
removing,
|
|
6653
6849
|
rows,
|
|
6654
|
-
|
|
6850
|
+
names
|
|
6655
6851
|
});
|
|
6656
6852
|
const self = workbenchRow(mock === void 0 ? workbench : mock.workbench);
|
|
6657
6853
|
const shown = withPinnedRow(pendingRow === void 0 ? rows : [...rows, pendingRow], pinned);
|
|
@@ -6679,21 +6875,18 @@ window.__ModuleLoader__.load({
|
|
|
6679
6875
|
send: (body) => provision.send(body),
|
|
6680
6876
|
onChanged
|
|
6681
6877
|
});
|
|
6682
|
-
const landed = pendingLanded(pending, updateMap, effective, workbench?.installed, shared, pluginSource === null ? null : pluginList, {
|
|
6683
|
-
units: installed === void 0 ? null : new Set(installed.map((module) => module.unit)),
|
|
6684
|
-
plugins: pluginSource === null ? null : new Set(pluginList.map((row) => row.id))
|
|
6685
|
-
});
|
|
6686
|
-
const effectiveSelfUpdate = mock?.selfUpdate ?? selfUpdate;
|
|
6687
6878
|
useSettleHold({
|
|
6688
6879
|
pending,
|
|
6689
|
-
landed,
|
|
6880
|
+
landed: pendingLanded(pending, updateMap, effective, workbench?.installed, shared, pluginSource === null ? null : pluginList, {
|
|
6881
|
+
units: installed === void 0 ? null : new Set(installed.map((module) => module.unit)),
|
|
6882
|
+
plugins: pluginSource === null ? null : new Set(pluginList.map((row) => row.id))
|
|
6883
|
+
}),
|
|
6690
6884
|
t,
|
|
6691
6885
|
onChanged,
|
|
6692
|
-
selfUpdate:
|
|
6886
|
+
selfUpdate: mock?.selfUpdate ?? selfUpdate,
|
|
6693
6887
|
setPending,
|
|
6694
6888
|
setFailed
|
|
6695
6889
|
});
|
|
6696
|
-
const migrationNotice = marketMigrationNotice(t, effectiveSelfUpdate);
|
|
6697
6890
|
const settled = marketSettled(freshness, installedRead);
|
|
6698
6891
|
const nothing = shown.length === 0 && self === void 0 && installedList.length === 0 && pluginList.length === 0;
|
|
6699
6892
|
if (!settled || (settling?.size ?? 0) > 0 && shown.length === 0 && installedList.length === 0) return /* @__PURE__ */ (0, react.createElement)(MarketChecking, { t });
|
|
@@ -6707,7 +6900,7 @@ window.__ModuleLoader__.load({
|
|
|
6707
6900
|
shared,
|
|
6708
6901
|
pending,
|
|
6709
6902
|
failed,
|
|
6710
|
-
notice
|
|
6903
|
+
notice,
|
|
6711
6904
|
act,
|
|
6712
6905
|
onConfirming: setConfirming,
|
|
6713
6906
|
setDefault,
|
|
@@ -6923,7 +7116,7 @@ window.__ModuleLoader__.load({
|
|
|
6923
7116
|
if (url === "" || url.includes("#") || hasCredentials(url)) return { ok: false };
|
|
6924
7117
|
if (HTTP.test(url)) {
|
|
6925
7118
|
const asGit = REPO_FILE.test(url);
|
|
6926
|
-
const label = hostOf(url);
|
|
7119
|
+
const label = asGit ? sourceSuffix(url) || hostOf(url) : hostOf(url);
|
|
6927
7120
|
if (label === "") return { ok: false };
|
|
6928
7121
|
return {
|
|
6929
7122
|
ok: true,
|
|
@@ -6956,6 +7149,13 @@ window.__ModuleLoader__.load({
|
|
|
6956
7149
|
function sourceSuffix(url) {
|
|
6957
7150
|
return (withoutTrailingSlash(url).split(/[/:]/).filter((part) => part !== "").pop() ?? "").replace(/\.git$/, "");
|
|
6958
7151
|
}
|
|
7152
|
+
function sourceTransport(url) {
|
|
7153
|
+
if (GIT_SSH.test(url) || /^ssh:\/\//i.test(url) || /^git\+ssh:\/\//i.test(url)) return "ssh";
|
|
7154
|
+
if (/^git:\/\//i.test(url)) return "git";
|
|
7155
|
+
if (/^https:\/\//i.test(url)) return "https";
|
|
7156
|
+
if (/^http:\/\//i.test(url)) return "http";
|
|
7157
|
+
return "";
|
|
7158
|
+
}
|
|
6959
7159
|
function sourceLabelsOf(sources) {
|
|
6960
7160
|
const counts = /* @__PURE__ */ new Map();
|
|
6961
7161
|
for (const source of sources) counts.set(source.label, (counts.get(source.label) ?? 0) + 1);
|
|
@@ -6966,7 +7166,8 @@ window.__ModuleLoader__.load({
|
|
|
6966
7166
|
continue;
|
|
6967
7167
|
}
|
|
6968
7168
|
const suffix = sourceSuffix(source.url);
|
|
6969
|
-
|
|
7169
|
+
const detail = suffix !== "" && suffix !== source.label ? suffix : sourceTransport(source.url);
|
|
7170
|
+
labels.set(source.id, detail === "" ? source.url : `${detail} · ${source.label}`);
|
|
6970
7171
|
}
|
|
6971
7172
|
return labels;
|
|
6972
7173
|
}
|
|
@@ -7093,11 +7294,15 @@ window.__ModuleLoader__.load({
|
|
|
7093
7294
|
var MARKET_DISCOVER_ROUTE = "panels/market-discover";
|
|
7094
7295
|
var MARKET_DOC_ROUTE = "panels/market-doc";
|
|
7095
7296
|
var MARKET_PUBLISH_PREVIEW_ROUTE = "panels/market-publish-preview";
|
|
7297
|
+
var MARKET_SOURCES_ROUTE = "panels/market-sources";
|
|
7096
7298
|
//#endregion
|
|
7097
7299
|
//#region src/shared/hooks/market-queries.ts
|
|
7098
7300
|
function readMarketDiscover(options = {}) {
|
|
7099
7301
|
return apiGet(MARKET_DISCOVER_ROUTE, options.force === true ? { force: "1" } : {});
|
|
7100
7302
|
}
|
|
7303
|
+
function readMarketSources() {
|
|
7304
|
+
return apiGet(MARKET_SOURCES_ROUTE);
|
|
7305
|
+
}
|
|
7101
7306
|
function readMarketDoc(name, version, kind) {
|
|
7102
7307
|
return apiGet(MARKET_DOC_ROUTE, {
|
|
7103
7308
|
name,
|
|
@@ -7105,10 +7310,11 @@ window.__ModuleLoader__.load({
|
|
|
7105
7310
|
kind
|
|
7106
7311
|
});
|
|
7107
7312
|
}
|
|
7108
|
-
function readPublishPreview(unit, version) {
|
|
7313
|
+
function readPublishPreview(unit, version, author) {
|
|
7109
7314
|
return apiGet(MARKET_PUBLISH_PREVIEW_ROUTE, {
|
|
7110
7315
|
unit,
|
|
7111
|
-
...version === void 0 || version === "" ? {} : { version }
|
|
7316
|
+
...version === void 0 || version === "" ? {} : { version },
|
|
7317
|
+
...author === void 0 || author === "" ? {} : { author }
|
|
7112
7318
|
});
|
|
7113
7319
|
}
|
|
7114
7320
|
//#endregion
|
|
@@ -7362,6 +7568,7 @@ window.__ModuleLoader__.load({
|
|
|
7362
7568
|
const [url, setUrl] = (0, react.useState)("");
|
|
7363
7569
|
const [problem, setProblem] = (0, react.useState)(null);
|
|
7364
7570
|
const pending = props.busy || props.adding;
|
|
7571
|
+
const selectedVisible = props.sources.some((source) => source.id === props.selected);
|
|
7365
7572
|
const add = () => {
|
|
7366
7573
|
if (pending) return;
|
|
7367
7574
|
const parsed = sourceFromUrl(url);
|
|
@@ -7384,13 +7591,29 @@ window.__ModuleLoader__.load({
|
|
|
7384
7591
|
closeLabel: t("panels.discover.close"),
|
|
7385
7592
|
description: t("panels.discover.sourcesIntro"),
|
|
7386
7593
|
className: MarketPage_module_default.discoverDialog
|
|
7387
|
-
}, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverDialogBody }, props.
|
|
7594
|
+
}, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverDialogBody }, props.loading && !selectedVisible ? props.slow ? /* @__PURE__ */ (0, react.createElement)("p", {
|
|
7595
|
+
className: MarketPage_module_default.discoverNotice,
|
|
7596
|
+
role: "note"
|
|
7597
|
+
}, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
|
|
7598
|
+
size: 14,
|
|
7599
|
+
"aria-hidden": "true"
|
|
7600
|
+
}), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.slowHint"))) : /* @__PURE__ */ (0, react.createElement)(DiscoverLoading, { label: t("panels.discover.loading") }) : null, props.sources.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)("ul", {
|
|
7388
7601
|
className: MarketPage_module_default.discoverSourceList,
|
|
7389
7602
|
"aria-label": t("panels.discover.sourcesLabel")
|
|
7390
7603
|
}, props.sources.map((source) => /* @__PURE__ */ (0, react.createElement)("li", {
|
|
7391
7604
|
key: source.id,
|
|
7392
7605
|
className: MarketPage_module_default.discoverSourceRow
|
|
7393
|
-
}, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverMain }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverStrong }, source.label), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverMeta }, source.url), props.problem?.id === source.id ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSourceError }, props.problem.detail) : null), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.
|
|
7606
|
+
}, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverMain }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverStrong }, source.label), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverMeta }, source.url), !props.loading && props.problem?.id === source.id ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSourceError }, props.problem.detail) : null), source.id === props.selected ? props.loading ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSourceLoading }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.StateDot, { state: "ongoing" }), t("panels.discover.loading")) : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSourceCurrent }, t("panels.discover.sourceCurrent")) : /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
7607
|
+
type: "button",
|
|
7608
|
+
variant: "ghost",
|
|
7609
|
+
size: "sm",
|
|
7610
|
+
"aria-label": t("panels.discover.useSourceNamed", { label: source.label }),
|
|
7611
|
+
disabled: pending,
|
|
7612
|
+
onClick: () => {
|
|
7613
|
+
props.onSelect(source.id);
|
|
7614
|
+
props.onClose();
|
|
7615
|
+
}
|
|
7616
|
+
}, t("panels.discover.useSource")), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
7394
7617
|
label: t("panels.discover.removeSource"),
|
|
7395
7618
|
side: "bottom",
|
|
7396
7619
|
portal: true,
|
|
@@ -7403,7 +7626,13 @@ window.__ModuleLoader__.load({
|
|
|
7403
7626
|
"aria-label": t("panels.discover.removeSourceNamed", { url: source.url }),
|
|
7404
7627
|
disabled: pending,
|
|
7405
7628
|
onClick: () => props.onRemove(source.id)
|
|
7406
|
-
}))
|
|
7629
|
+
})), source.id === props.selected && props.loading && props.slow ? /* @__PURE__ */ (0, react.createElement)("span", {
|
|
7630
|
+
className: MarketPage_module_default.discoverSourceHint,
|
|
7631
|
+
role: "note"
|
|
7632
|
+
}, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
|
|
7633
|
+
size: 12,
|
|
7634
|
+
"aria-hidden": "true"
|
|
7635
|
+
}), t("panels.discover.slowHint")) : null))), /* @__PURE__ */ (0, react.createElement)("form", {
|
|
7407
7636
|
className: MarketPage_module_default.discoverSourceForm,
|
|
7408
7637
|
onSubmit: (event) => {
|
|
7409
7638
|
event.preventDefault();
|
|
@@ -7446,12 +7675,16 @@ window.__ModuleLoader__.load({
|
|
|
7446
7675
|
t,
|
|
7447
7676
|
open: d.manageOpen,
|
|
7448
7677
|
sources: d.sources,
|
|
7678
|
+
selected: d.selected,
|
|
7679
|
+
loading: d.loading,
|
|
7680
|
+
slow: d.slow,
|
|
7449
7681
|
problem: d.problem,
|
|
7450
7682
|
busy: d.busy,
|
|
7451
7683
|
adding: d.addingSource,
|
|
7452
7684
|
onClose: () => d.setManageOpen(false),
|
|
7453
7685
|
onAdd: d.addSource,
|
|
7454
|
-
onRemove: d.removeSourceById
|
|
7686
|
+
onRemove: d.removeSourceById,
|
|
7687
|
+
onSelect: d.selectSource
|
|
7455
7688
|
}), /* @__PURE__ */ (0, react.createElement)(DiscoverConfirm, {
|
|
7456
7689
|
t,
|
|
7457
7690
|
locale: d.locale,
|
|
@@ -7488,6 +7721,34 @@ window.__ModuleLoader__.load({
|
|
|
7488
7721
|
}, item)));
|
|
7489
7722
|
}
|
|
7490
7723
|
//#endregion
|
|
7724
|
+
//#region src/app/layouts/market/discover-search.tsx
|
|
7725
|
+
function DiscoverSearch({ t, value, disabled, onChange }) {
|
|
7726
|
+
const field = (0, react.useRef)(null);
|
|
7727
|
+
return /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSearch }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Input, {
|
|
7728
|
+
ref: field,
|
|
7729
|
+
className: value === "" ? MarketPage_module_default.discoverSearchField : `${MarketPage_module_default.discoverSearchField} ${MarketPage_module_default.discoverSearchFieldFilled}`,
|
|
7730
|
+
type: "search",
|
|
7731
|
+
icon: /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconSearchOutlineRegular, { size: 14 }),
|
|
7732
|
+
value,
|
|
7733
|
+
placeholder: t("panels.discover.search"),
|
|
7734
|
+
"aria-label": t("panels.discover.search"),
|
|
7735
|
+
disabled,
|
|
7736
|
+
onChange: (event) => onChange(event.currentTarget.value)
|
|
7737
|
+
}), value === "" ? null : /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
7738
|
+
type: "button",
|
|
7739
|
+
size: "sm",
|
|
7740
|
+
variant: "ghost",
|
|
7741
|
+
className: MarketPage_module_default.discoverSearchClear,
|
|
7742
|
+
"aria-label": t("panels.discover.clearSearch"),
|
|
7743
|
+
disabled,
|
|
7744
|
+
icon: /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconCloseOutlineRegular, { size: 14 }),
|
|
7745
|
+
onClick: () => {
|
|
7746
|
+
onChange("");
|
|
7747
|
+
field.current?.focus();
|
|
7748
|
+
}
|
|
7749
|
+
}));
|
|
7750
|
+
}
|
|
7751
|
+
//#endregion
|
|
7491
7752
|
//#region src/app/layouts/market/discover-toolbar.tsx
|
|
7492
7753
|
var TEXT_DELAY_MS = 250;
|
|
7493
7754
|
function DiscoverToolbar(props) {
|
|
@@ -7541,14 +7802,11 @@ window.__ModuleLoader__.load({
|
|
|
7541
7802
|
size: 12,
|
|
7542
7803
|
"aria-hidden": "true"
|
|
7543
7804
|
}))
|
|
7544
|
-
}), /* @__PURE__ */ (0, react.createElement)(
|
|
7545
|
-
|
|
7546
|
-
type: "search",
|
|
7547
|
-
icon: /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconSearchOutlineRegular, { size: 14 }),
|
|
7805
|
+
}), /* @__PURE__ */ (0, react.createElement)(DiscoverSearch, {
|
|
7806
|
+
t,
|
|
7548
7807
|
value: text,
|
|
7549
|
-
|
|
7550
|
-
|
|
7551
|
-
onChange: (event) => setText(event.currentTarget.value)
|
|
7808
|
+
disabled: props.loading,
|
|
7809
|
+
onChange: setText
|
|
7552
7810
|
}), props.labels.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Menu, {
|
|
7553
7811
|
className: MarketPage_module_default.discoverLabels,
|
|
7554
7812
|
open: open === "filter",
|
|
@@ -7596,6 +7854,7 @@ window.__ModuleLoader__.load({
|
|
|
7596
7854
|
variant: "ghost",
|
|
7597
7855
|
"aria-haspopup": "menu",
|
|
7598
7856
|
"aria-expanded": open === "sort",
|
|
7857
|
+
disabled: props.loading,
|
|
7599
7858
|
onClick: () => setOpen(open === "sort" ? null : "sort")
|
|
7600
7859
|
}, t("panels.discover.sortWith", { label: sortName }), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutlineRegular, {
|
|
7601
7860
|
size: 12,
|
|
@@ -7634,6 +7893,12 @@ window.__ModuleLoader__.load({
|
|
|
7634
7893
|
"restart-required",
|
|
7635
7894
|
"overridden"
|
|
7636
7895
|
];
|
|
7896
|
+
function sourceRowsOf(sources) {
|
|
7897
|
+
return sources.map((source) => ({
|
|
7898
|
+
...source,
|
|
7899
|
+
writable: source.kind === "http" ? false : null
|
|
7900
|
+
}));
|
|
7901
|
+
}
|
|
7637
7902
|
function installVerdictOf(value, t) {
|
|
7638
7903
|
const change = changeOf(value);
|
|
7639
7904
|
if (change === void 0) return { kind: "quiet" };
|
|
@@ -7647,6 +7912,7 @@ window.__ModuleLoader__.load({
|
|
|
7647
7912
|
function useDiscover(t, active, onInstalled) {
|
|
7648
7913
|
const [payload, setPayload] = (0, react.useState)(null);
|
|
7649
7914
|
const [loading, setLoading] = (0, react.useState)(true);
|
|
7915
|
+
const [slow, setSlow] = (0, react.useState)(false);
|
|
7650
7916
|
const [failure, setFailure] = (0, react.useState)(null);
|
|
7651
7917
|
const [query, setQuery] = (0, react.useState)("");
|
|
7652
7918
|
const [category, setCategory] = (0, react.useState)(null);
|
|
@@ -7659,7 +7925,10 @@ window.__ModuleLoader__.load({
|
|
|
7659
7925
|
const [choice, setChoice] = (0, react.useState)(null);
|
|
7660
7926
|
const [notice, setNotice] = (0, react.useState)(null);
|
|
7661
7927
|
const [addingSource, setAddingSource] = (0, react.useState)(false);
|
|
7928
|
+
const [knownSources, setKnownSources] = (0, react.useState)(null);
|
|
7662
7929
|
const loaded = (0, react.useRef)(false);
|
|
7930
|
+
const loadTicket = (0, react.useRef)(0);
|
|
7931
|
+
const sourceTicket = (0, react.useRef)(0);
|
|
7663
7932
|
const locale = (0, react.useMemo)(() => localeNow(), []);
|
|
7664
7933
|
const sources = useHostWrite({
|
|
7665
7934
|
channel: "actions",
|
|
@@ -7670,11 +7939,27 @@ window.__ModuleLoader__.load({
|
|
|
7670
7939
|
channel: "provision",
|
|
7671
7940
|
networkText: t("panels.discover.failed")
|
|
7672
7941
|
});
|
|
7942
|
+
const loadSources = (0, react.useCallback)(async () => {
|
|
7943
|
+
const ticket = sourceTicket.current + 1;
|
|
7944
|
+
sourceTicket.current = ticket;
|
|
7945
|
+
const response = await readMarketSources().catch(() => null);
|
|
7946
|
+
if (sourceTicket.current !== ticket) return;
|
|
7947
|
+
if (response === null || !response.ok) return;
|
|
7948
|
+
setKnownSources({
|
|
7949
|
+
sources: sourceRowsOf(response.sources),
|
|
7950
|
+
selected: response.selected
|
|
7951
|
+
});
|
|
7952
|
+
}, []);
|
|
7673
7953
|
const load = (0, react.useCallback)(async (force = false) => {
|
|
7954
|
+
const ticket = loadTicket.current + 1;
|
|
7955
|
+
loadTicket.current = ticket;
|
|
7674
7956
|
setLoading(true);
|
|
7957
|
+
setSlow(false);
|
|
7675
7958
|
setFailure(null);
|
|
7676
7959
|
const response = await readMarketDiscover({ force }).catch(() => null);
|
|
7960
|
+
if (loadTicket.current !== ticket) return;
|
|
7677
7961
|
setLoading(false);
|
|
7962
|
+
setSlow(false);
|
|
7678
7963
|
if (response === null || !response.ok) {
|
|
7679
7964
|
setFailure(t("panels.discover.unreadable"));
|
|
7680
7965
|
return;
|
|
@@ -7682,11 +7967,29 @@ window.__ModuleLoader__.load({
|
|
|
7682
7967
|
setPayload(response);
|
|
7683
7968
|
setLimit(50);
|
|
7684
7969
|
}, [t]);
|
|
7970
|
+
const beginSwitch = () => {
|
|
7971
|
+
loadTicket.current += 1;
|
|
7972
|
+
sourceTicket.current += 1;
|
|
7973
|
+
setFailure(null);
|
|
7974
|
+
setPayload(null);
|
|
7975
|
+
setLoading(true);
|
|
7976
|
+
setSlow(false);
|
|
7977
|
+
};
|
|
7685
7978
|
(0, react.useEffect)(() => {
|
|
7686
7979
|
if (!active || loaded.current) return;
|
|
7687
7980
|
loaded.current = true;
|
|
7981
|
+
loadSources();
|
|
7688
7982
|
load();
|
|
7689
|
-
}, [
|
|
7983
|
+
}, [
|
|
7984
|
+
active,
|
|
7985
|
+
load,
|
|
7986
|
+
loadSources
|
|
7987
|
+
]);
|
|
7988
|
+
(0, react.useEffect)(() => {
|
|
7989
|
+
if (!loading) return void 0;
|
|
7990
|
+
const timer = setTimeout(() => setSlow(true), 8e3);
|
|
7991
|
+
return () => clearTimeout(timer);
|
|
7992
|
+
}, [loading]);
|
|
7690
7993
|
(0, react.useEffect)(() => subscribeFactRevision(CAPABILITY_FACT, () => {
|
|
7691
7994
|
if (!loaded.current) return;
|
|
7692
7995
|
load(true);
|
|
@@ -7740,6 +8043,8 @@ window.__ModuleLoader__.load({
|
|
|
7740
8043
|
const done = typeof value?.["branch"] === "string" ? value["branch"] : branch;
|
|
7741
8044
|
setInitOpen(false);
|
|
7742
8045
|
setNotice(t("panels.discover.initDone", { branch: done }));
|
|
8046
|
+
beginSwitch();
|
|
8047
|
+
await loadSources();
|
|
7743
8048
|
await load(true);
|
|
7744
8049
|
});
|
|
7745
8050
|
};
|
|
@@ -7757,8 +8062,11 @@ window.__ModuleLoader__.load({
|
|
|
7757
8062
|
id
|
|
7758
8063
|
},
|
|
7759
8064
|
select: true
|
|
7760
|
-
}).then(
|
|
7761
|
-
if (outcome.ok)
|
|
8065
|
+
}).then((outcome) => {
|
|
8066
|
+
if (!outcome.ok) return;
|
|
8067
|
+
beginSwitch();
|
|
8068
|
+
loadSources();
|
|
8069
|
+
load(true);
|
|
7762
8070
|
}).finally(() => setAddingSource(false));
|
|
7763
8071
|
};
|
|
7764
8072
|
const removeSourceById = (id) => {
|
|
@@ -7770,6 +8078,8 @@ window.__ModuleLoader__.load({
|
|
|
7770
8078
|
}).then(async (outcome) => {
|
|
7771
8079
|
if (!outcome.ok) return;
|
|
7772
8080
|
setDetail(null);
|
|
8081
|
+
beginSwitch();
|
|
8082
|
+
await loadSources();
|
|
7773
8083
|
await load(true);
|
|
7774
8084
|
});
|
|
7775
8085
|
};
|
|
@@ -7782,11 +8092,23 @@ window.__ModuleLoader__.load({
|
|
|
7782
8092
|
setSelectedLabels([]);
|
|
7783
8093
|
setSort("default");
|
|
7784
8094
|
setDetail(null);
|
|
8095
|
+
beginSwitch();
|
|
8096
|
+
setKnownSources((current) => current === null ? current : {
|
|
8097
|
+
sources: current.sources,
|
|
8098
|
+
selected: id
|
|
8099
|
+
});
|
|
7785
8100
|
sources.send({
|
|
7786
8101
|
action: "select",
|
|
7787
8102
|
id
|
|
7788
8103
|
}).then(async (outcome) => {
|
|
7789
|
-
if (outcome.ok)
|
|
8104
|
+
if (!outcome.ok) {
|
|
8105
|
+
setLoading(false);
|
|
8106
|
+
setSlow(false);
|
|
8107
|
+
loadSources();
|
|
8108
|
+
return;
|
|
8109
|
+
}
|
|
8110
|
+
await loadSources();
|
|
8111
|
+
await load(true);
|
|
7790
8112
|
});
|
|
7791
8113
|
};
|
|
7792
8114
|
const install = () => {
|
|
@@ -7821,9 +8143,10 @@ window.__ModuleLoader__.load({
|
|
|
7821
8143
|
locale,
|
|
7822
8144
|
payload,
|
|
7823
8145
|
loading,
|
|
8146
|
+
slow,
|
|
7824
8147
|
failure,
|
|
7825
|
-
sources: payload?.sources ?? [],
|
|
7826
|
-
selected: payload?.selected ?? null,
|
|
8148
|
+
sources: payload?.sources ?? knownSources?.sources ?? [],
|
|
8149
|
+
selected: payload?.selected ?? knownSources?.selected ?? null,
|
|
7827
8150
|
entries,
|
|
7828
8151
|
shown,
|
|
7829
8152
|
total: sorted.length,
|
|
@@ -7894,35 +8217,45 @@ window.__ModuleLoader__.load({
|
|
|
7894
8217
|
t,
|
|
7895
8218
|
d
|
|
7896
8219
|
});
|
|
7897
|
-
|
|
8220
|
+
const slowHint = !d.manageOpen && d.loading && d.slow ? /* @__PURE__ */ (0, react.createElement)("p", {
|
|
8221
|
+
className: MarketPage_module_default.discoverNotice,
|
|
8222
|
+
role: "note"
|
|
8223
|
+
}, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
|
|
8224
|
+
size: 14,
|
|
8225
|
+
"aria-hidden": "true"
|
|
8226
|
+
}), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.slowHint"))) : null;
|
|
8227
|
+
if (d.payload === null) return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverPage }, d.sources.length === 0 ? null : toolbar, d.loading ? /* @__PURE__ */ (0, react.createElement)(DiscoverSkeleton, { label: t("panels.discover.loading") }) : /* @__PURE__ */ (0, react.createElement)(DiscoverFailure, {
|
|
7898
8228
|
t,
|
|
7899
8229
|
text: t("panels.discover.sourcesFailed"),
|
|
7900
8230
|
onRetry: d.reload
|
|
7901
|
-
}), dialogs);
|
|
8231
|
+
}), slowHint, d.writeFailed === null ? null : /* @__PURE__ */ (0, react.createElement)("p", { className: MarketPage_module_default.discoverError }, d.writeFailed), dialogs);
|
|
7902
8232
|
if (d.payload.state === "no-source") return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverPage }, /* @__PURE__ */ (0, react.createElement)(DiscoverNoSource, {
|
|
7903
8233
|
t,
|
|
7904
8234
|
onAdd: () => d.setManageOpen(true)
|
|
7905
8235
|
}), dialogs);
|
|
7906
|
-
const
|
|
8236
|
+
const failed = d.payload.state === "invalid" || d.payload.state === "unreadable";
|
|
8237
|
+
const readFailed = !d.loading && failed ? d.payload.state === "invalid" ? t("panels.discover.invalid") : t("panels.discover.unreadable") : null;
|
|
8238
|
+
const uninitialized = d.loading ? null : d.uninitialized;
|
|
8239
|
+
const retrying = d.loading && failed;
|
|
7907
8240
|
const emptyText = unfiltered({
|
|
7908
8241
|
query: d.query,
|
|
7909
8242
|
category: d.category,
|
|
7910
8243
|
labels: d.selectedLabels
|
|
7911
8244
|
}) ? t("panels.discover.empty") : t("panels.discover.noMatch");
|
|
7912
|
-
return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverPage }, toolbar, d.payload.stale === true ? /* @__PURE__ */ (0, react.createElement)("p", {
|
|
8245
|
+
return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverPage }, toolbar, d.loading && !d.manageOpen ? /* @__PURE__ */ (0, react.createElement)(DiscoverLoading, { label: t("panels.discover.loading") }) : null, slowHint, !d.loading && d.payload.stale === true ? /* @__PURE__ */ (0, react.createElement)("p", {
|
|
7913
8246
|
className: MarketPage_module_default.discoverNotice,
|
|
7914
8247
|
role: "note"
|
|
7915
8248
|
}, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
|
|
7916
8249
|
size: 14,
|
|
7917
8250
|
"aria-hidden": "true"
|
|
7918
|
-
}), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.stale"))) : null,
|
|
8251
|
+
}), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.stale"))) : null, uninitialized === null ? readFailed === null ? null : /* @__PURE__ */ (0, react.createElement)(DiscoverFailure, {
|
|
7919
8252
|
t,
|
|
7920
8253
|
text: readFailed,
|
|
7921
8254
|
onRetry: d.reload
|
|
7922
8255
|
}) : /* @__PURE__ */ (0, react.createElement)(DiscoverUninitialized, {
|
|
7923
8256
|
t,
|
|
7924
|
-
path:
|
|
7925
|
-
empty:
|
|
8257
|
+
path: uninitialized.path,
|
|
8258
|
+
empty: uninitialized.empty,
|
|
7926
8259
|
onInit: () => d.setInitOpen(true)
|
|
7927
8260
|
}), d.notice === null ? null : /* @__PURE__ */ (0, react.createElement)("p", {
|
|
7928
8261
|
className: MarketPage_module_default.discoverNotice,
|
|
@@ -7941,7 +8274,7 @@ window.__ModuleLoader__.load({
|
|
|
7941
8274
|
version
|
|
7942
8275
|
}),
|
|
7943
8276
|
onShowInstalled
|
|
7944
|
-
}) : readFailed !== null ||
|
|
8277
|
+
}) : readFailed !== null || uninitialized !== null || retrying ? null : d.shown.length === 0 ? /* @__PURE__ */ (0, react.createElement)(DiscoverEmptyText, { text: emptyText }) : /* @__PURE__ */ (0, react.createElement)(DiscoverRows, {
|
|
7945
8278
|
t,
|
|
7946
8279
|
locale: d.locale,
|
|
7947
8280
|
entries: d.shown,
|
|
@@ -8722,7 +9055,7 @@ window.__ModuleLoader__.load({
|
|
|
8722
9055
|
return crypto.randomUUID();
|
|
8723
9056
|
}
|
|
8724
9057
|
function useAddModule(options) {
|
|
8725
|
-
const {
|
|
9058
|
+
const { onInstalled, failedText } = options;
|
|
8726
9059
|
const [spec, setSpec] = (0, react.useState)("");
|
|
8727
9060
|
const [choice, setChoice] = (0, react.useState)({
|
|
8728
9061
|
kind: "default",
|
|
@@ -8753,7 +9086,6 @@ window.__ModuleLoader__.load({
|
|
|
8753
9086
|
networkText: failedText
|
|
8754
9087
|
});
|
|
8755
9088
|
(0, react.useEffect)(() => {
|
|
8756
|
-
if (!open) return void 0;
|
|
8757
9089
|
let alive = true;
|
|
8758
9090
|
readBundleRegistries().then((response) => {
|
|
8759
9091
|
if (!alive) return;
|
|
@@ -8762,19 +9094,8 @@ window.__ModuleLoader__.load({
|
|
|
8762
9094
|
return () => {
|
|
8763
9095
|
alive = false;
|
|
8764
9096
|
};
|
|
8765
|
-
}, [
|
|
9097
|
+
}, []);
|
|
8766
9098
|
const registry = registryOf(choice, custom);
|
|
8767
|
-
(0, react.useEffect)(() => {
|
|
8768
|
-
if (open) return;
|
|
8769
|
-
generationRef.current += 1;
|
|
8770
|
-
setGuideOpen(false);
|
|
8771
|
-
setRegistryOpen(false);
|
|
8772
|
-
setProblem(null);
|
|
8773
|
-
setPreview(null);
|
|
8774
|
-
setOutcome(null);
|
|
8775
|
-
setFailure(null);
|
|
8776
|
-
setPhase("idle");
|
|
8777
|
-
}, [open]);
|
|
8778
9099
|
const check = (0, react.useCallback)(() => {
|
|
8779
9100
|
const wanted = spec.trim();
|
|
8780
9101
|
if (wanted === "") return;
|
|
@@ -8911,15 +9232,21 @@ window.__ModuleLoader__.load({
|
|
|
8911
9232
|
//#endregion
|
|
8912
9233
|
//#region src/app/layouts/market/AddModuleDialog.tsx
|
|
8913
9234
|
function AddModuleDialog({ t, open, onClose, onInstalled }) {
|
|
9235
|
+
if (!open) return null;
|
|
9236
|
+
return /* @__PURE__ */ (0, react.createElement)(AddModuleContent, {
|
|
9237
|
+
t,
|
|
9238
|
+
onClose,
|
|
9239
|
+
onInstalled
|
|
9240
|
+
});
|
|
9241
|
+
}
|
|
9242
|
+
function AddModuleContent({ t, onClose, onInstalled }) {
|
|
8914
9243
|
const real = useAddModule({
|
|
8915
|
-
open,
|
|
8916
9244
|
onInstalled,
|
|
8917
9245
|
failedText: t("panels.failed")
|
|
8918
9246
|
});
|
|
8919
9247
|
const devAdd = devSurface.useStrips("addModule", []);
|
|
8920
9248
|
const mock = devAdd.current;
|
|
8921
9249
|
const state = mock === void 0 ? real : devSurface.addModuleState(real, mock);
|
|
8922
|
-
if (!open) return null;
|
|
8923
9250
|
const installing = state.phase === "installing";
|
|
8924
9251
|
const checking = state.phase === "inspecting";
|
|
8925
9252
|
const empty = state.spec.trim() === "";
|
|
@@ -8979,7 +9306,7 @@ window.__ModuleLoader__.load({
|
|
|
8979
9306
|
onClick: () => state.install()
|
|
8980
9307
|
}, t("panels.market.add.retry")) : null) : null);
|
|
8981
9308
|
return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
|
|
8982
|
-
open,
|
|
9309
|
+
open: true,
|
|
8983
9310
|
onClose: () => {
|
|
8984
9311
|
if (!installing) onClose();
|
|
8985
9312
|
},
|
|
@@ -9052,7 +9379,7 @@ window.__ModuleLoader__.load({
|
|
|
9052
9379
|
return /* @__PURE__ */ (0, react.createElement)(IconModules, { size });
|
|
9053
9380
|
};
|
|
9054
9381
|
}
|
|
9055
|
-
function MarketPanel({ t, units }) {
|
|
9382
|
+
function MarketPanel({ t, units, titleOf }) {
|
|
9056
9383
|
const manifests = useLiveManifests(units);
|
|
9057
9384
|
const installable = useInstallableUnits(units);
|
|
9058
9385
|
const { capabilities, checkedAt, checking, forceProbe, reload: reloadCapability } = useCapabilityMap(0);
|
|
@@ -9150,6 +9477,7 @@ window.__ModuleLoader__.load({
|
|
|
9150
9477
|
}, /* @__PURE__ */ (0, react.createElement)(MarketView, {
|
|
9151
9478
|
key: `${mock?.id ?? "real-market"}-${mockNonce}`,
|
|
9152
9479
|
t,
|
|
9480
|
+
titleOf,
|
|
9153
9481
|
manifests,
|
|
9154
9482
|
installable,
|
|
9155
9483
|
capabilities,
|
|
@@ -9185,6 +9513,10 @@ window.__ModuleLoader__.load({
|
|
|
9185
9513
|
}
|
|
9186
9514
|
function registerMarketPanel(ctx, units) {
|
|
9187
9515
|
const t = ctx.locale.bind(LOCALE_NS);
|
|
9516
|
+
const titleOf = (title) => title === void 0 ? "" : ctx.locale.resolveText?.({
|
|
9517
|
+
zh: title.zh,
|
|
9518
|
+
en: title.en
|
|
9519
|
+
}) ?? title.zh;
|
|
9188
9520
|
ctx.slots.inject("sidebar.panellist", () => ctx.slots.register({
|
|
9189
9521
|
name: "sidebar.panellist",
|
|
9190
9522
|
id: MARKET_PANEL_ID,
|
|
@@ -9196,7 +9528,10 @@ window.__ModuleLoader__.load({
|
|
|
9196
9528
|
name: "main",
|
|
9197
9529
|
key: MARKET_PANEL_ID,
|
|
9198
9530
|
locale: LOCALE_NS,
|
|
9199
|
-
inject: () => ({
|
|
9531
|
+
inject: () => ({
|
|
9532
|
+
units,
|
|
9533
|
+
titleOf
|
|
9534
|
+
})
|
|
9200
9535
|
}, MarketPanel));
|
|
9201
9536
|
}
|
|
9202
9537
|
//#endregion
|
|
@@ -9248,6 +9583,14 @@ window.__ModuleLoader__.load({
|
|
|
9248
9583
|
}).catch(() => void 0);
|
|
9249
9584
|
}
|
|
9250
9585
|
//#endregion
|
|
9586
|
+
//#region src/shared/hooks/resource-view.ts
|
|
9587
|
+
var IDLE = { phase: "idle" };
|
|
9588
|
+
var LOADING = { phase: "loading" };
|
|
9589
|
+
function resourceViewOf(enabled, current, identity) {
|
|
9590
|
+
if (!enabled) return IDLE;
|
|
9591
|
+
return current.identity === identity ? current.state : LOADING;
|
|
9592
|
+
}
|
|
9593
|
+
//#endregion
|
|
9251
9594
|
//#region src/shared/hooks/use-api-resource.ts
|
|
9252
9595
|
var use_api_resource_exports = /* @__PURE__ */ __exportAll({
|
|
9253
9596
|
readKeyOf: () => readKeyOf,
|
|
@@ -9319,7 +9662,10 @@ window.__ModuleLoader__.load({
|
|
|
9319
9662
|
const identity = resourceIdentity(route, query, options.key);
|
|
9320
9663
|
const factRev = useFactRevision(options.fact ?? factOfRoute(route));
|
|
9321
9664
|
const key = readKeyOf(identity, refreshToken, factRev);
|
|
9322
|
-
const [
|
|
9665
|
+
const [current, setCurrent] = (0, react.useState)(() => ({
|
|
9666
|
+
identity,
|
|
9667
|
+
state: enabled ? LOADING : IDLE
|
|
9668
|
+
}));
|
|
9323
9669
|
const lastIdentity = (0, react.useRef)(null);
|
|
9324
9670
|
const queryRef = (0, react.useRef)(query);
|
|
9325
9671
|
(0, react.useEffect)(() => {
|
|
@@ -9328,17 +9674,23 @@ window.__ModuleLoader__.load({
|
|
|
9328
9674
|
(0, react.useEffect)(() => {
|
|
9329
9675
|
if (!enabled) {
|
|
9330
9676
|
lastIdentity.current = null;
|
|
9331
|
-
setState({ phase: "idle" });
|
|
9332
9677
|
return;
|
|
9333
9678
|
}
|
|
9334
9679
|
let cancelled = false;
|
|
9680
|
+
const put = (state) => setCurrent({
|
|
9681
|
+
identity,
|
|
9682
|
+
state
|
|
9683
|
+
});
|
|
9335
9684
|
const sameIdentity = lastIdentity.current === identity;
|
|
9336
9685
|
lastIdentity.current = identity;
|
|
9337
|
-
|
|
9338
|
-
|
|
9339
|
-
|
|
9340
|
-
|
|
9341
|
-
|
|
9686
|
+
setCurrent((prev) => ({
|
|
9687
|
+
identity,
|
|
9688
|
+
state: sameIdentity && prev.state.value !== void 0 ? {
|
|
9689
|
+
phase: "loading",
|
|
9690
|
+
value: prev.state.value,
|
|
9691
|
+
...prev.state.at === void 0 ? {} : { at: prev.state.at }
|
|
9692
|
+
} : LOADING
|
|
9693
|
+
}));
|
|
9342
9694
|
const flight = requestResource(route, queryRef.current, key);
|
|
9343
9695
|
const owner = options.report === false ? null : unitOfRoute(route);
|
|
9344
9696
|
if (owner !== null) reportPanelRead({
|
|
@@ -9349,7 +9701,7 @@ window.__ModuleLoader__.load({
|
|
|
9349
9701
|
flight.task.then((response) => {
|
|
9350
9702
|
if (cancelled) return;
|
|
9351
9703
|
if (response.ok) {
|
|
9352
|
-
|
|
9704
|
+
put({
|
|
9353
9705
|
phase: "ready",
|
|
9354
9706
|
value: response,
|
|
9355
9707
|
at: Date.now()
|
|
@@ -9361,7 +9713,7 @@ window.__ModuleLoader__.load({
|
|
|
9361
9713
|
});
|
|
9362
9714
|
return;
|
|
9363
9715
|
}
|
|
9364
|
-
|
|
9716
|
+
put({
|
|
9365
9717
|
phase: "error",
|
|
9366
9718
|
error: response.error
|
|
9367
9719
|
});
|
|
@@ -9377,7 +9729,7 @@ window.__ModuleLoader__.load({
|
|
|
9377
9729
|
}).catch((reason) => {
|
|
9378
9730
|
if (cancelled) return;
|
|
9379
9731
|
const message = reason instanceof Error ? reason.message : String(reason);
|
|
9380
|
-
|
|
9732
|
+
put({
|
|
9381
9733
|
phase: "error",
|
|
9382
9734
|
error: {
|
|
9383
9735
|
code: "network",
|
|
@@ -9408,7 +9760,7 @@ window.__ModuleLoader__.load({
|
|
|
9408
9760
|
options.fact,
|
|
9409
9761
|
options.report
|
|
9410
9762
|
]);
|
|
9411
|
-
return
|
|
9763
|
+
return resourceViewOf(enabled, current, identity);
|
|
9412
9764
|
}
|
|
9413
9765
|
//#endregion
|
|
9414
9766
|
//#region src/shared/hooks/use-diy-debug.ts
|
|
@@ -10455,6 +10807,26 @@ window.__ModuleLoader__.load({
|
|
|
10455
10807
|
for (const face of CLIENT_UNITS) registry.register(face);
|
|
10456
10808
|
}
|
|
10457
10809
|
//#endregion
|
|
10810
|
+
//#region src/app/units/unit-titles.ts
|
|
10811
|
+
var UNIT_TITLES_OWNER = "dsh-workbench";
|
|
10812
|
+
function unitTitlesOf(manifests) {
|
|
10813
|
+
const zh = {};
|
|
10814
|
+
const en = {};
|
|
10815
|
+
for (const manifest of manifests) {
|
|
10816
|
+
const title = manifest.title;
|
|
10817
|
+
if (title === void 0 || title.zh.trim() === "" || title.en.trim() === "") continue;
|
|
10818
|
+
zh[unitTitleKey(manifest.id)] = title.zh;
|
|
10819
|
+
en[unitTitleKey(manifest.id)] = title.en;
|
|
10820
|
+
}
|
|
10821
|
+
return {
|
|
10822
|
+
unit: UNIT_TITLES_OWNER,
|
|
10823
|
+
messages: {
|
|
10824
|
+
zh,
|
|
10825
|
+
en
|
|
10826
|
+
}
|
|
10827
|
+
};
|
|
10828
|
+
}
|
|
10829
|
+
//#endregion
|
|
10458
10830
|
//#region src/kernel/client/board-registry.ts
|
|
10459
10831
|
function createBoardRegistry() {
|
|
10460
10832
|
const modules = [];
|
|
@@ -10515,7 +10887,7 @@ window.__ModuleLoader__.load({
|
|
|
10515
10887
|
if (View === void 0) return void 0;
|
|
10516
10888
|
return {
|
|
10517
10889
|
id: manifest.id,
|
|
10518
|
-
titleKey: manifest.
|
|
10890
|
+
titleKey: manifest.titleKey,
|
|
10519
10891
|
order: manifest.card?.order ?? 100,
|
|
10520
10892
|
View,
|
|
10521
10893
|
...face.steps === void 0 ? {} : { steps: face.steps }
|
|
@@ -10530,6 +10902,10 @@ window.__ModuleLoader__.load({
|
|
|
10530
10902
|
let installableIds = null;
|
|
10531
10903
|
let revision = 0;
|
|
10532
10904
|
let manifestsCache;
|
|
10905
|
+
let titleSignature = "";
|
|
10906
|
+
function titlesOf(manifests) {
|
|
10907
|
+
return manifests.flatMap((manifest) => manifest.title === void 0 ? [] : [`${manifest.id}=${manifest.title.zh}/${manifest.title.en}`]).join("|");
|
|
10908
|
+
}
|
|
10533
10909
|
function notify() {
|
|
10534
10910
|
revision += 1;
|
|
10535
10911
|
for (const listener of [...listeners]) try {
|
|
@@ -10609,7 +10985,10 @@ window.__ModuleLoader__.load({
|
|
|
10609
10985
|
for (const entry of registrations) {
|
|
10610
10986
|
const next = known.get(entry.unit);
|
|
10611
10987
|
if (entry.mounted === null) {
|
|
10612
|
-
if (next !== void 0
|
|
10988
|
+
if (next !== void 0) {
|
|
10989
|
+
attach(entry);
|
|
10990
|
+
changed = true;
|
|
10991
|
+
}
|
|
10613
10992
|
continue;
|
|
10614
10993
|
}
|
|
10615
10994
|
if (next === void 0) {
|
|
@@ -10618,6 +10997,11 @@ window.__ModuleLoader__.load({
|
|
|
10618
10997
|
changed = true;
|
|
10619
10998
|
}
|
|
10620
10999
|
}
|
|
11000
|
+
const titles = titlesOf(manifests);
|
|
11001
|
+
if (titles !== titleSignature) {
|
|
11002
|
+
titleSignature = titles;
|
|
11003
|
+
changed = true;
|
|
11004
|
+
}
|
|
10621
11005
|
if (!changed) return;
|
|
10622
11006
|
manifestsCache = void 0;
|
|
10623
11007
|
notify();
|
|
@@ -11388,6 +11772,7 @@ window.__ModuleLoader__.load({
|
|
|
11388
11772
|
const unit = textOf(args, "unit");
|
|
11389
11773
|
const target = textOf(args, "target");
|
|
11390
11774
|
const version = textOf(args, "version");
|
|
11775
|
+
const author = textOf(args, "author");
|
|
11391
11776
|
const rows = [
|
|
11392
11777
|
{
|
|
11393
11778
|
label: t("approval.publish.module"),
|
|
@@ -11403,7 +11788,7 @@ window.__ModuleLoader__.load({
|
|
|
11403
11788
|
},
|
|
11404
11789
|
{
|
|
11405
11790
|
label: t("approval.publish.author"),
|
|
11406
|
-
value: preview === void 0 ? t("approval.publish.reading") : preview?.author === void 0 || preview.author === "" ? t("approval.publish.authorMissing") : preview.author
|
|
11791
|
+
value: author !== "" ? author : preview === void 0 ? t("approval.publish.reading") : preview?.author === void 0 || preview.author === "" ? t("approval.publish.authorMissing") : preview.author
|
|
11407
11792
|
}
|
|
11408
11793
|
];
|
|
11409
11794
|
const market = preview?.market;
|
|
@@ -11450,17 +11835,22 @@ window.__ModuleLoader__.load({
|
|
|
11450
11835
|
function PublishApprovalSeat({ args, t }) {
|
|
11451
11836
|
const unit = textOf(args, "unit");
|
|
11452
11837
|
const version = textOf(args, "version");
|
|
11838
|
+
const author = textOf(args, "author");
|
|
11453
11839
|
const [preview, setPreview] = (0, react.useState)(() => unit === "" ? null : void 0);
|
|
11454
11840
|
(0, react.useEffect)(() => {
|
|
11455
11841
|
if (unit === "") return;
|
|
11456
11842
|
let live = true;
|
|
11457
|
-
readPublishPreview(unit, version).then((response) => {
|
|
11843
|
+
readPublishPreview(unit, version, author).then((response) => {
|
|
11458
11844
|
if (live) setPreview(response.ok ? response.preview : null);
|
|
11459
11845
|
});
|
|
11460
11846
|
return () => {
|
|
11461
11847
|
live = false;
|
|
11462
11848
|
};
|
|
11463
|
-
}, [
|
|
11849
|
+
}, [
|
|
11850
|
+
unit,
|
|
11851
|
+
version,
|
|
11852
|
+
author
|
|
11853
|
+
]);
|
|
11464
11854
|
return (0, react.createElement)(ApprovalPlan, { rows: publishRows(args, preview, t) }, (0, react.createElement)(PublishChangelogSeat, {
|
|
11465
11855
|
changelog: preview?.changelog,
|
|
11466
11856
|
t
|
|
@@ -12225,10 +12615,10 @@ window.__ModuleLoader__.load({
|
|
|
12225
12615
|
//#region src/app/layouts/rightbar/PanelModules.tsx
|
|
12226
12616
|
function PanelModules({ t, open, onOpenChange, enabledUnits, workspace, refreshToken, manifests, onOpenMarket }) {
|
|
12227
12617
|
const { capabilities, checkedAt, forceProbe } = useCapabilityMap(refreshToken);
|
|
12228
|
-
const
|
|
12618
|
+
const decided = (0, react.useRef)(false);
|
|
12229
12619
|
(0, react.useEffect)(() => {
|
|
12230
|
-
if (!open || decided) return;
|
|
12231
|
-
|
|
12620
|
+
if (!open || decided.current) return;
|
|
12621
|
+
decided.current = true;
|
|
12232
12622
|
if (!shouldProbeOnEnter({
|
|
12233
12623
|
checkedAt,
|
|
12234
12624
|
now: Date.now(),
|
|
@@ -12238,7 +12628,6 @@ window.__ModuleLoader__.load({
|
|
|
12238
12628
|
forceProbe();
|
|
12239
12629
|
}, [
|
|
12240
12630
|
open,
|
|
12241
|
-
decided,
|
|
12242
12631
|
checkedAt,
|
|
12243
12632
|
forceProbe
|
|
12244
12633
|
]);
|
|
@@ -14378,7 +14767,7 @@ window.__ModuleLoader__.load({
|
|
|
14378
14767
|
...face.messages === void 0 ? {} : { messages: face.messages }
|
|
14379
14768
|
}));
|
|
14380
14769
|
}
|
|
14381
|
-
var COMPONENT_CSS_MARKER = ".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 padding-top: 0;\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.wb-note {\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.wb-problem {\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-state-error-primary);\n overflow-wrap: anywhere;\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.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-card-gutter);\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.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) var(--wb-card-gutter);\n font-size: var(--dsw-font-xxs-12-font-size);\n}\n.wb-cardBleed {\n margin-inline: calc(-1 * var(--wb-card-gutter));\n}\n._anchor_yq4s2_1 {\n display: contents;\n}\n.wb-spinner {\n display: inline-flex;\n align-items: center;\n flex: none;\n}\n.wb-choiceMenu {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n background: transparent;\n}\n\n.wb-choiceMenu[data-variant='boxed'] {\n padding: var(--wb-len-4);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\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-28);\n padding: var(--wb-len-4) 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 cursor: default;\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-choiceOption:has(:disabled) {\n cursor: default;\n opacity: 0.5;\n}\n\n.wb-choiceOption:has(:disabled),\n.wb-choiceOption:has(:disabled):hover {\n background: transparent;\n}\n\n.wb-choiceLabel {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.wb-choiceLabelText {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-choiceLabel:has(.wb-choiceDescription) .wb-choiceLabelText {\n overflow: visible;\n white-space: normal;\n overflow-wrap: anywhere;\n}\n\n.wb-choiceDescription {\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.wb-choiceLoading {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-choiceLoadingText {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-choiceEmpty {\n display: flex;\n align-items: center;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-tertiary);\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}\n\n.wb-radio:focus-visible {\n outline: var(--dsw-focus-ring-width, var(--wb-len-2)) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n.wb-formActions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\n}\n\n.wb-formActionDanger {\n color: var(--dsw-alias-state-error-primary);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 30%, transparent);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-error-primary) 8%, transparent);\n}\n.wb-rows {\n display: grid;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n column-gap: var(--wb-len-8);\n}\n.wb-rows > :not(.wb-row) {\n grid-column: 1 / -1;\n}\n.wb-row {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: minmax(72px, max-content) 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 white-space: nowrap;\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-rows > .wb-row {\n grid-template-columns: subgrid;\n}\n\n@supports not (grid-template-columns: subgrid) {\n .wb-rows > .wb-row {\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n }\n}\n.wb-confirmBar {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n width: 100%;\n box-sizing: border-box;\n padding: var(--wb-len-10) var(--wb-len-12);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n}\n.wb-confirmBarTitle {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 600;\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n.wb-confirmBarHint {\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-secondary);\n overflow-wrap: anywhere;\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\n.wb-field:has(:disabled) .wb-fieldLabel {\n opacity: 0.4;\n}\n.wb-formRows {\n display: grid;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n column-gap: var(--wb-len-8);\n row-gap: var(--wb-len-12);\n}\n\n.wb-formRows > :not(.wb-formRow) {\n grid-column: 1 / -1;\n}\n\n.wb-formRow {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n align-items: center;\n column-gap: var(--wb-len-8);\n row-gap: var(--wb-len-8);\n}\n\n.wb-formRow[data-layout='stacked'] {\n grid-template-columns: minmax(0, 1fr);\n align-items: stretch;\n gap: var(--wb-len-6);\n}\n\n.wb-formRows > .wb-formRow[data-layout='stacked'] {\n grid-template-columns: minmax(0, 1fr);\n}\n\n.wb-formLabel {\n justify-self: start;\n min-width: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n white-space: nowrap;\n}\n\n.wb-formRow[data-layout='stacked'] .wb-formLabel {\n white-space: normal;\n}\n\n.wb-formRow[data-layout='stacked'] .wb-formHint,\n.wb-formRow[data-layout='stacked'] .wb-formProblem {\n grid-column: 1 / -1;\n}\n\n.wb-formControl {\n display: flex;\n align-items: center;\n min-width: 0;\n}\n\n.wb-formControl\n > :where(\n .wb-selectAnchor,\n .wb-choiceMenu,\n input:not(\n [type='checkbox'],\n [type='radio'],\n [type='button'],\n [type='submit'],\n [type='reset'],\n [type='image'],\n [type='color'],\n [type='range']\n ),\n select,\n textarea\n ) {\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n}\n\n.wb-formHint {\n grid-column: 2;\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-formProblem {\n grid-column: 2;\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.wb-formRow:has(.wb-formProblem) .wb-formLabel {\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-formRow:has(:disabled) .wb-formLabel {\n opacity: 0.4;\n}\n\n.wb-formRows > .wb-formRow {\n grid-template-columns: subgrid;\n}\n\n@supports not (grid-template-columns: subgrid) {\n .wb-formRows > .wb-formRow {\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n }\n}\n.wb-form {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n width: 100%;\n}\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.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\n.wb-longTaskStop {\n display: inline-flex;\n flex: none;\n align-items: center;\n align-self: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n padding: 0;\n margin-left: auto;\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-specific-menu);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n.wb-longTaskStop:hover:not(:disabled),\n.wb-longTaskStop:focus-visible {\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-longTaskStop:disabled {\n cursor: default;\n}\n\n.wb-longTaskStopArmed,\n.wb-longTaskStopArmed:hover:not(:disabled),\n.wb-longTaskStopArmed:focus-visible {\n gap: var(--wb-len-4);\n width: auto;\n padding: 0 var(--wb-len-7);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent);\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-longTaskStopLabel {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n.wb-longTaskStopWhy {\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.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.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:disabled {\n cursor: not-allowed;\n opacity: 0.4;\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-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n}\n:where(.wb-selectTrigger) {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n width: 100%;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\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 text-align: left;\n cursor: pointer;\n}\n\n.wb-selectTrigger:focus-visible {\n outline: none;\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-selectTrigger[aria-invalid='true'] {\n border-color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-selectTrigger[aria-invalid='true']:focus-visible {\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-error-primary);\n}\n\n.wb-selectTrigger:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.wb-selectLoading:disabled {\n cursor: default;\n opacity: 1;\n}\n\n.wb-selectGhost {\n gap: var(--wb-gap-xs);\n min-height: 0;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: none;\n background: transparent;\n font-size: var(--wb-font-row);\n}\n\n.wb-selectGhost:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-selectGhost: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 border-color: transparent;\n box-shadow: none;\n}\n\n.wb-selectIconOnly {\n width: var(--wb-len-36);\n height: var(--wb-len-36);\n min-height: 0;\n gap: 0;\n padding: 0;\n justify-content: center;\n}\n\n.wb-selectReveal {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.wb-selectIconOnly .wb-selectIcon {\n width: 100%;\n height: 100%;\n}\n\n.wb-selectAnchor {\n display: block;\n width: 100%;\n}\n\n.wb-selectIcon {\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.wb-selectValue {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-6);\n line-height: var(--wb-line-20);\n overflow: hidden;\n}\n\n.wb-selectPlaceholder {\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-selectChevron {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-caption);\n}\n\n.wb-selectMenu {\n min-width: var(--wb-len-240);\n max-width: var(--wb-len-360);\n max-height: min(var(--wb-len-320), calc(100vh - var(--wb-len-24)));\n}\n\n:where(.wb-selectSearch) {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n width: 100%;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\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}\n\n.wb-selectSearch:focus-within {\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-selectSearch.wb-selectGhost {\n gap: var(--wb-gap-xs);\n min-height: 0;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: 0.5px solid var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n.wb-selectSearch.wb-selectGhost:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: none;\n}\n\n.wb-selectSearchIcon {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-textField.wb-selectSearchInput {\n flex: 1;\n min-width: 0;\n min-height: 0;\n padding: 0;\n border: none;\n background: transparent;\n}\n\n.wb-textField.wb-selectSearchInput:focus {\n box-shadow: none;\n}\n\n.wb-selectFallback {\n width: 100%;\n}\n\n.wb-selectHint {\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}\nsection.wb-settings {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n padding: var(--wb-len-12) var(--wb-len-16);\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-s-strong-14-font-size);\n line-height: var(--wb-line-24);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n.wb-stack {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n min-height: 0;\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._marketList_9dzu9_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_9dzu9_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_9dzu9_20 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-48);\n height: var(--wb-len-48);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketMain_9dzu9_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._marketName_9dzu9_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._marketStatus_9dzu9_48 {\n display: inline-flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketStateText_9dzu9_58 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSep_9dzu9_62 {\n color: var(--dsw-alias-label-caption);\n}\n\n._marketReason_9dzu9_66 {\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._marketName_9dzu9_39 ._marketVersion_9dzu9_72 {\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_9dzu9_72 {\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketVersion_9dzu9_72::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_9dzu9_94 {\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_9dzu9_105 {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_9dzu9_112 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_9dzu9_112::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_9dzu9_125 {\n flex: none;\n display: flex;\n gap: var(--wb-len-6);\n}\n\n._marketUpdateAction_9dzu9_131 {\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_9dzu9_137 {\n height: 0;\n margin-top: calc(0px - var(--wb-len-16));\n border-top: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n._marketSection_9dzu9_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._marketSectionHead_9dzu9_150 {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n\n._marketSectionIcon_9dzu9_156 {\n display: inline-flex;\n align-items: center;\n align-self: center;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionTitle_9dzu9_163 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketSectionCount_9dzu9_169 {\n font: var(--dsw-font-s-14);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionQuiet_9dzu9_175 ._marketSectionTitle_9dzu9_163 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_9dzu9_175 ._marketName_9dzu9_39 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_9dzu9_175 ._marketIcon_9dzu9_20 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n\n._marketProgress_9dzu9_188 {\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_9dzu9_198 {\n grid-column: 2 / -1;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-warn-primary);\n overflow-wrap: anywhere;\n}\n\n._marketFailure_9dzu9_205 {\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_9dzu9_212 {\n padding: var(--wb-len-18) var(--wb-len-16);\n text-align: center;\n}\n\n._marketPage_9dzu9_217 {\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_9dzu9_217 > * {\n width: 100%;\n max-width: var(--wb-len-960);\n}\n\n._marketPageHead_9dzu9_235 {\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_9dzu9_243 {\n margin: 0;\n font: var(--dsw-font-l-20);\n}\n\n._marketPageIntro_9dzu9_248 {\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_9dzu9_254 {\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._marketPanel_9dzu9_263 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-32);\n}\n\n._marketPanel_9dzu9_263[hidden] {\n display: none;\n}\n\n._marketTabs_9dzu9_273 {\n display: flex;\n margin: calc(0px - var(--wb-len-16)) 0;\n}\n\n._marketTabList_9dzu9_278 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._marketIconButton_9dzu9_283 {\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_9dzu9_283:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketIconButton_9dzu9_283:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._marketIconWrap_9dzu9_308 {\n display: inline-flex;\n}\n\n._marketIconButtonSpinning_9dzu9_312 svg {\n animation: _wb-spin_9dzu9_1 var(--wb-dur-0-9) linear infinite;\n}\n\n._marketAddButton_9dzu9_316 {\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_9dzu9_212 {\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._marketEmptyTitle_9dzu9_333 {\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n@keyframes _wb-spin_9dzu9_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n._discoverPage_9dzu9_347 {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverBar_9dzu9_354 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n container-type: inline-size;\n}\n\n._discoverTools_9dzu9_361 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverMarket_9dzu9_367 {\n flex: 0 1 auto;\n min-width: 0;\n}\n\n._discoverMarketButton_9dzu9_372 {\n min-width: 0;\n max-width: var(--wb-len-240);\n margin-left: calc(0px - var(--wb-len-8));\n font-weight: 500;\n}\n\n._discoverMarketName_9dzu9_379 {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._discoverLabels_9dzu9_385 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverSort_9dzu9_390 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverRefresh_9dzu9_395 {\n flex: none;\n}\n\n._discoverSearch_9dzu9_399 {\n box-sizing: border-box;\n flex: 1 1 var(--wb-len-120);\n min-width: var(--wb-len-120);\n}\n\n@container (max-width: 560px) {\n ._discoverTools_9dzu9_361 {\n display: grid;\n grid-template-columns: minmax(0, auto) minmax(var(--wb-len-120), 1fr) auto;\n grid-template-areas:\n 'market search refresh'\n 'labels sort sort';\n }\n\n ._discoverMarket_9dzu9_367 {\n grid-area: market;\n }\n\n ._discoverMarketButton_9dzu9_372 {\n margin-left: 0;\n }\n\n ._discoverLabels_9dzu9_385 {\n grid-area: labels;\n }\n\n ._discoverSearch_9dzu9_399 {\n grid-area: search;\n }\n\n ._discoverSort_9dzu9_390 {\n grid-area: sort;\n justify-self: end;\n }\n\n ._discoverRefresh_9dzu9_395 {\n grid-area: refresh;\n }\n}\n\n._discoverChips_9dzu9_440 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n._discoverList_9dzu9_447 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._discoverCard_9dzu9_456 {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n margin: 0 calc(0px - var(--wb-len-8));\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCard_9dzu9_456:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._discoverArtwork_9dzu9_470 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-48);\n height: var(--wb-len-48);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverArtworkImage_9dzu9_482 {\n object-fit: contain;\n}\n\n._discoverMain_9dzu9_486 {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--wb-len-2);\n min-width: 0;\n}\n\n._discoverTitleRow_9dzu9_494 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._discoverCardOpen_9dzu9_502 {\n max-width: 100%;\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n text-align: left;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n cursor: pointer;\n}\n\n._discoverCardOpen_9dzu9_502::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCardOpen_9dzu9_502:focus-visible {\n outline: none;\n}\n\n._discoverCardOpen_9dzu9_502:focus-visible::after {\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._discoverStrong_9dzu9_533 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n overflow-wrap: anywhere;\n}\n\n._discoverDesc_9dzu9_539 {\n display: -webkit-box;\n overflow: hidden;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverMeta_9dzu9_548 {\n margin: 0;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._discoverMuted_9dzu9_555 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverEnd_9dzu9_561 {\n position: relative;\n z-index: var(--wb-z-10);\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverBlocked_9dzu9_570 {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n._discoverEmpty_9dzu9_575 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-64) 0;\n text-align: center;\n}\n\n._discoverEmptyTitle_9dzu9_584 {\n margin: var(--wb-len-8) 0 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverEmpty_9dzu9_575 > button {\n margin-top: var(--wb-len-8);\n}\n\n._discoverDetail_9dzu9_594 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverCrumb_9dzu9_600 {\n align-self: flex-start;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n padding: 0;\n border: 0;\n background: 0 0;\n color: var(--dsw-alias-label-tertiary);\n font: inherit;\n font-size: var(--wb-font-12-5);\n cursor: pointer;\n}\n\n._discoverCrumb_9dzu9_600:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._discoverCrumb_9dzu9_600: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._discoverCrumbIcon_9dzu9_623 {\n transform: rotate(90deg);\n}\n\n._discoverDetailHead_9dzu9_627 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverDetailTitle_9dzu9_633 {\n margin: 0;\n font: var(--dsw-font-l-20);\n font-weight: 500;\n}\n\n._discoverDetailText_9dzu9_639 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._discoverDetailPanel_9dzu9_646 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n min-width: 0;\n}\n\n._discoverDetailTabs_9dzu9_653 {\n display: flex;\n margin-bottom: calc(0px - var(--wb-len-4));\n}\n\n._discoverDetailTabList_9dzu9_658 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._discoverDocBody_9dzu9_663 {\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n._discoverDocNotice_9dzu9_668 {\n margin: var(--wb-len-16) 0 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverSection_9dzu9_674 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n margin-top: var(--wb-len-16);\n}\n\n._discoverSectionTitle_9dzu9_681 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverFacts_9dzu9_687 {\n margin: 0;\n padding: 0;\n}\n\n._discoverFactRow_9dzu9_692 {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--wb-len-16);\n min-height: var(--wb-len-44);\n padding: var(--wb-len-8) var(--wb-len-2);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverFactKind_9dzu9_702 {\n flex: none;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverFactValue_9dzu9_708 {\n min-width: 0;\n margin: 0;\n text-align: end;\n overflow-wrap: anywhere;\n font: var(--dsw-font-xs-13);\n}\n\n._discoverCode_9dzu9_716 {\n padding: var(--wb-len-2) var(--wb-len-6);\n border-radius: var(--wb-radius-6);\n background: var(--dsw-alias-bg-module-platform);\n font-family: var(--ds-font-family-code);\n font-size: var(--dsw-font-xxs-12-font-size);\n box-decoration-break: clone;\n}\n\n._discoverTags_9dzu9_725 {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: var(--wb-len-6);\n}\n\n._discoverLink_9dzu9_732 {\n color: var(--dsw-alias-link);\n overflow-wrap: anywhere;\n text-decoration: none;\n}\n\n._discoverLink_9dzu9_732:hover {\n text-decoration: underline;\n}\n\n._discoverVersions_9dzu9_742 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverVersionRow_9dzu9_750 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverVersionName_9dzu9_758 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverError_9dzu9_763 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._discoverFailure_9dzu9_772 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._discoverNotice_9dzu9_778 {\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 color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n}\n\n._discoverNotice_9dzu9_778 svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverMore_9dzu9_796 {\n align-self: center;\n}\n\n._discoverDialog_9dzu9_800 {\n width: min(var(--wb-len-480), calc(100vw - var(--wb-len-32)));\n}\n\n._discoverDialogBody_9dzu9_804 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._discoverSourceList_9dzu9_810 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverSourceRow_9dzu9_818 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverSourceError_9dzu9_826 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._discoverSourceForm_9dzu9_832 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverGrow_9dzu9_838 {\n flex: 1;\n min-width: 0;\n}\n\n._discoverField_9dzu9_843 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._discoverFieldLabel_9dzu9_849 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverConfirmHead_9dzu9_854 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverSkeletonFill_9dzu9_860 {\n background: var(--dsw-alias-bg-skeleton);\n animation: _wb-skeleton_9dzu9_1 var(--wb-dur-1-5) cubic-bezier(0.36, 0, 0.64, 1) infinite;\n}\n\n._discoverArtwork_9dzu9_470._discoverSkeletonFill_9dzu9_860 {\n border-color: transparent;\n}\n\n._discoverSkeletonBar_9dzu9_869 {\n display: block;\n height: var(--wb-len-12);\n margin: var(--wb-len-4) 0;\n border-radius: var(--dsw-radius-xs);\n}\n\n._discoverSkeletonTitle_9dzu9_876 {\n width: min(var(--wb-len-144), 60%);\n}\n\n._discoverSkeletonDesc_9dzu9_880 {\n width: min(var(--wb-len-280), 85%);\n}\n\n@keyframes _wb-skeleton_9dzu9_1 {\n 0% {\n opacity: 1;\n }\n 40% {\n opacity: 0.6;\n }\n 80%,\n to {\n opacity: 1;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._discoverSkeletonFill_9dzu9_860 {\n animation: none;\n }\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_1lv8f_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_1lv8f_8 {\n width: min(var(--wb-len-560), 100%);\n max-height: min(var(--wb-len-800), 100%);\n}\n\n._content_1lv8f_13 {\n min-height: 0;\n overflow: auto;\n}\n\n._stack_1lv8f_18 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._body_1lv8f_25 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._field_1lv8f_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_1lv8f_39 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-14);\n}\n\n._registryField_1lv8f_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_1lv8f_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_1lv8f_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_1lv8f_59:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._guideToggle_1lv8f_59 svg,\n._registryToggle_1lv8f_78 svg {\n transition: transform var(--wb-dur-0-12) ease;\n}\n\n._guideToggle_1lv8f_59[aria-expanded='true'] svg,\n._registryToggle_1lv8f_78[aria-expanded='true'] svg {\n transform: rotate(180deg);\n}\n\n._registryWrap_1lv8f_87 {\n position: relative;\n flex: none;\n}\n\n._registryToggle_1lv8f_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_1lv8f_78:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._registryToggle_1lv8f_78:disabled {\n cursor: default;\n opacity: 0.6;\n}\n\n._registryToggle_1lv8f_78[aria-expanded='true'] {\n border-color: var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-3);\n}\n\n._registryChosen_1lv8f_121 {\n color: var(--dsw-alias-label-primary);\n font-weight: 500;\n}\n\n._registry_1lv8f_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_1lv8f_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_1lv8f_143 {\n flex-direction: row;\n align-items: flex-start;\n gap: var(--wb-len-10);\n}\n\n._registryPick_1lv8f_159 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n cursor: pointer;\n}\n\n._registryOption_1lv8f_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_1lv8f_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_1lv8f_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_1lv8f_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_1lv8f_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_1lv8f_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_1lv8f_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_1lv8f_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_1lv8f_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_1lv8f_244 {\n display: flex;\n flex-direction: column;\n flex: 1;\n gap: 0;\n min-width: 0;\n}\n\n._guideTitle_1lv8f_252 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n\n._guideHint_1lv8f_258 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._guideExample_1lv8f_264 {\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._guideExample_1lv8f_264 code {\n font-family: var(--dsw-font-mono, monospace);\n}\n\n._guideExampleLabel_1lv8f_274 {\n color: var(--dsw-alias-label-caption);\n}\n\n._footer_1lv8f_278 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-20);\n width: 100%;\n}\n\n._hero_1lv8f_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_1lv8f_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_1lv8f_294[data-state='done'] {\n color: var(--dsw-alias-state-success-secondary);\n}\n\n._heroIcon_1lv8f_294[data-state='error'] {\n color: var(--dsw-alias-state-warn-label);\n}\n\n._pendingTitle_1lv8f_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_1lv8f_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_1lv8f_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_1lv8f_337 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n overflow-wrap: anywhere;\n}\n\n._subjectMeta_1lv8f_343,\n._subjectDesc_1lv8f_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_1lv8f_351,\n._resultWarn_1lv8f_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_1lv8f_352 {\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 12%, transparent);\n}\n\n._resultMeta_1lv8f_365 {\n margin: 0;\n padding: 0 var(--wb-len-12);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._approval_1lv8f_373 {\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_1lv8f_383 {\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_1lv8f_390 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._approvalCaution_1lv8f_396 {\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_1lv8f_403 {\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_1lv8f_410 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._noteError_1lv8f_414 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._problem_1lv8f_418 {\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_1lv8f_425 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._detail_1lv8f_425 {\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._slot_1t7dx_1 {\n display: flex;\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._slot_1t7dx_1 > * {\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._action_1t7dx_12 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 1 0;\n width: 100%;\n min-width: 0;\n min-height: var(--wb-len-36);\n margin: 0 var(--wb-len-2);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: default;\n overflow: hidden;\n gap: var(--wb-len-4);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n}\n\n._live_1t7dx_31 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._paused_1t7dx_35 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._trouble_1t7dx_39 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._pulse_1t7dx_43 {\n animation: _wb-debug-breathe_1t7dx_1 var(--wb-dur-1-5) var(--ds-ease-in-out, ease-in-out) infinite;\n}\n\n@keyframes _wb-debug-breathe_1t7dx_1 {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.35;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._pulse_1t7dx_43 {\n animation: none;\n }\n}\n\n._entry_1t7dx_64 {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._entryInner_1t7dx_71 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._acts_1t7dx_78 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-2);\n flex: none;\n}\n\n._act_1t7dx_12 {\n appearance: none;\n border: 0;\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: 0;\n border-radius: var(--dsw-radius-sm, var(--wb-len-6));\n flex: none;\n cursor: pointer;\n}\n\n._act_1t7dx_12:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._act_1t7dx_12: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._actStop_1t7dx_110:hover,\n._actStop_1t7dx_110:focus-visible {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._actArmed_1t7dx_115,\n._actArmed_1t7dx_115:hover,\n._actArmed_1t7dx_115:focus-visible {\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);\n width: auto;\n color: var(--dsw-alias-state-error-primary);\n gap: var(--wb-len-4);\n padding: 0 var(--wb-len-7);\n}\n\n._actLabel_1t7dx_125 {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n._entryLine_1t7dx_131 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._actionRail_1t7dx_138 {\n justify-content: center;\n flex: none;\n width: var(--wb-len-36);\n min-width: var(--wb-len-36);\n height: var(--wb-len-36);\n margin: 0;\n padding: 0;\n corner-shape: round;\n border-radius: 50%;\n}\n\n._card_1t7dx_150 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._cardTitle_1t7dx_156 {\n color: var(--dsw-alias-label-primary);\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n}\n\n._cardNote_1t7dx_162 {\n color: var(--dsw-alias-label-secondary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n._slot_1gkj9_1 {\n display: flex;\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._slot_1gkj9_1 > * {\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._action_1gkj9_12 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 1 0;\n width: 100%;\n min-width: 0;\n min-height: var(--wb-len-36);\n margin: 0 var(--wb-len-2);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: default;\n overflow: hidden;\n gap: var(--wb-len-4);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n}\n\n._live_1gkj9_31 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._done_1gkj9_35 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._pulse_1gkj9_39 {\n animation: _wb-record-breathe_1gkj9_1 var(--wb-dur-1-5) var(--ds-ease-in-out, ease-in-out) infinite;\n}\n\n@keyframes _wb-record-breathe_1gkj9_1 {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.35;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._pulse_1gkj9_39 {\n animation: none;\n }\n}\n\n._entry_1gkj9_60 {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._entryInner_1gkj9_67 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._acts_1gkj9_74 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-2);\n flex: none;\n}\n\n._act_1gkj9_12 {\n appearance: none;\n border: 0;\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: var(--wb-len-22);\n padding: 0 var(--wb-len-7);\n border-radius: var(--dsw-radius-sm, var(--wb-len-6));\n flex: none;\n cursor: pointer;\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n._act_1gkj9_12:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._act_1gkj9_12: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._entryLine_1gkj9_108 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._actionRail_1gkj9_115 {\n justify-content: center;\n flex: none;\n width: var(--wb-len-36);\n min-width: var(--wb-len-36);\n height: var(--wb-len-36);\n margin: 0;\n padding: 0;\n corner-shape: round;\n border-radius: 50%;\n}\n\n._card_1gkj9_127 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._cardTitle_1gkj9_133 {\n color: var(--dsw-alias-label-primary);\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n}\n\n._cardNote_1gkj9_139 {\n color: var(--dsw-alias-label-secondary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n._item_lyox9_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n}\n\n._item_lyox9_1 + ._item_lyox9_1 {\n padding-top: var(--wb-len-14);\n border-top: var(--wb-len-0-5) solid var(--dsw-alias-settings-card-stroke);\n}\n\n._head_lyox9_12 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._title_lyox9_19 {\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-s-14-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._description_lyox9_31 {\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._rows_85r3w_1 {\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_85r3w_1 {\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_85r3w_20 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._pick_85r3w_27 {\n flex: 0 1 auto;\n min-width: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n._pick_85r3w_27 > span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._code_85r3w_39 {\n --dsl-code-block-background: var(--dsw-alias-bg-layer-1);\n margin: 0;\n}\n\n._missing_85r3w_44,\n._conflict_85r3w_45 {\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._body_11oac_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._sources_11oac_7 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._sourcesLabel_11oac_14 {\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-secondary);\n}\n\nbutton._sourceOn_11oac_19 {\n border-color: var(--dsw-alias-brand-primary);\n}\n._sourceCount_11oac_22 {\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_11oac_29 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._status_11oac_35 {\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_11oac_45 {\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_11oac_55 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._failureHint_11oac_62 {\n grid-column: 1;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._failureAction_11oac_67 {\n grid-column: 2;\n grid-row: 1;\n justify-self: end;\n}\n\n._foot_11oac_73 {\n display: flex;\n justify-content: flex-end;\n}\n._body_lox98_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._field_lox98_7 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._input_lox98_13 {\n width: 100%;\n}\n\n._label_lox98_17 {\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-secondary);\n}\n\n._hint_lox98_22 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._copy_lox98_28 {\n display: flex;\n flex-wrap: wrap;\n gap: var(--wb-len-8) var(--wb-len-16);\n margin: 0;\n padding: 0;\n border: 0;\n}\n\n._copy_lox98_28 legend {\n padding: 0;\n margin-bottom: var(--wb-len-6);\n}\n\n._actions_lox98_42 {\n display: flex;\n justify-content: flex-end;\n}\n\n._commandLabel_lox98_47 {\n display: block;\n margin-top: var(--wb-len-4);\n}\n\n._command_lox98_47 {\n display: block;\n margin-top: var(--wb-len-4);\n padding: var(--wb-len-6) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxs-12-font-size);\n overflow-wrap: anywhere;\n}\n._body_zi2j5_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._lead_zi2j5_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._title_zi2j5_14 {\n font-size: var(--wb-font-18);\n line-height: var(--wb-line-24);\n}\n._hint_zyzt3_1[hidden],\n._actions_zyzt3_2[hidden],\n._progress_zyzt3_3[hidden],\n._commandRow_zyzt3_4[hidden],\n._bridge_zyzt3_5[hidden],\n._raw_zyzt3_6[hidden] {\n display: none;\n}\n\n._gate_zyzt3_10 {\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_zyzt3_21 {\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_zyzt3_21:has(._actions_zyzt3_2:not([hidden])),\n._card_zyzt3_21:has(._bridge_zyzt3_5:not([hidden])) {\n max-width: var(--wb-len-520);\n}\n\n._title_zyzt3_36 {\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_zyzt3_1 {\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_zyzt3_51 {\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_zyzt3_51 {\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_zyzt3_51[data-status='running'] {\n color: var(--dsw-alias-label-primary);\n}\n\n._mark_zyzt3_78 {\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_zyzt3_51[data-status='ok'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._step_zyzt3_51[data-status='warn'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._step_zyzt3_51[data-status='failed'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._label_zyzt3_103 {\n flex: none;\n}\n\n._detail_zyzt3_107 {\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_zyzt3_3 {\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_zyzt3_125 {\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_zyzt3_133 {\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_zyzt3_4 {\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_zyzt3_159 {\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_zyzt3_159:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._command_zyzt3_4 {\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_zyzt3_192 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-12);\n}\n\n._mockSlot_zyzt3_199 {\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_zyzt3_192 {\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_zyzt3_192:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._button_zyzt3_192:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n._actions_zyzt3_2,\n._bridge_zyzt3_5 {\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_zyzt3_250 {\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_zyzt3_2 ._hint_zyzt3_1,\n._bridge_zyzt3_5 ._hint_zyzt3_1 {\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_zyzt3_2 ._commandRow_zyzt3_4,\n._bridge_zyzt3_5 ._commandRow_zyzt3_4 {\n margin: 0;\n}\n\n._actions_zyzt3_2 ._buttons_zyzt3_192,\n._bridge_zyzt3_5 ._buttons_zyzt3_192 {\n justify-content: flex-start;\n}\n\n._raw_zyzt3_6 {\n box-sizing: border-box;\n width: 100%;\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n text-align: left;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._rawSummary_zyzt3_286 {\n cursor: pointer;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._actions_zyzt3_2 ._error_zyzt3_133,\n._bridge_zyzt3_5 ._error_zyzt3_133 {\n margin-top: var(--wb-len-6);\n}\n\n._bridgeLines_zyzt3_296 {\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_zyzt3_296 a {\n display: block;\n margin-top: var(--wb-len-4);\n width: fit-content;\n}\n\n._link_zyzt3_313 {\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n}\n\n._link_zyzt3_313::after {\n content: '↗';\n margin-left: var(--wb-len-2);\n}\n\n._link_zyzt3_313:hover {\n text-decoration: underline;\n}\n\n._loading_zyzt3_327 {\n flex: none;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._loading_zyzt3_327[hidden] {\n display: none;\n}\n\n._loadingMotion_zyzt3_336 {\n transform-origin: center;\n animation: _wb-spin_zyzt3_1 var(--wb-dur-1-5) linear infinite;\n}\n\n._loadingTrack_zyzt3_341,\n._loadingArc_zyzt3_342 {\n fill: none;\n stroke: currentColor;\n stroke-width: 2;\n stroke-linecap: round;\n}\n\n._loadingTrack_zyzt3_341 {\n opacity: 0.25;\n}\n\n._loadingArc_zyzt3_342 {\n stroke-dasharray: 12 150;\n animation: _wb-dash_zyzt3_1 var(--wb-dur-1-5) ease-in-out infinite;\n}\n\n@keyframes _wb-spin_zyzt3_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes _wb-dash_zyzt3_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_zyzt3_336,\n ._loadingArc_zyzt3_342 {\n animation: none;\n }\n}\n._changelog_1q6pj_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n margin-top: var(--wb-len-10);\n min-width: 0;\n}\n\n._changelogTitle_1q6pj_9 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._changelogMissing_1q6pj_15 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-primary);\n}\n\n._changelogBody_1q6pj_21 {\n max-height: var(--wb-len-320);\n overflow: auto;\n padding: var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\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_1whum_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_1whum_1[data-fullscreen] {\n z-index: var(--wb-z-40);\n}\n\n._panel_1whum_1[data-open] {\n visibility: visible;\n}\n\n._columns_1whum_18 {\n display: block;\n column-gap: var(--wb-len-12);\n}\n\n._cell_1whum_23 {\n display: flow-root;\n min-width: 0;\n break-inside: avoid;\n margin-bottom: var(--wb-len-12);\n}\n._root_1cmz0_1 {\n position: relative;\n flex: none;\n margin: 0 var(--wb-len-2) var(--wb-len-4);\n}\n\n._rail_1cmz0_7 {\n margin: 0 0 var(--wb-len-4);\n}\n\n._glyphBox_1cmz0_11 {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n}\n\n._glyph_1cmz0_11 {\n position: relative;\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_1cmz0_30 {\n color: var(--dsw-alias-state-business-primary);\n}\n\n._triggerName_1cmz0_34 {\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_1cmz0_45 {\n flex: 0 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._name_1cmz0_53 {\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_1cmz0_34 ._name_1cmz0_53 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._row_1cmz0_66 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n width: 100%;\n min-width: 0;\n}\n\n._trailing_1cmz0_74 {\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_1cmz0_74 ._rowAction_1cmz0_84 {\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_1cmz0_66 ._name_1cmz0_53 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._current_1cmz0_97 {\n flex: none;\n display: inline-flex;\n align-items: center;\n color: var(--dsw-alias-label-primary);\n}\n._dot_sosf1_1 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n._overlay_sosf1_8 {\n position: absolute;\n inset-block-start: var(--wb-len-neg-3);\n inset-inline-end: var(--wb-len-neg-3);\n}\n._tag_g9dg8_1 {\n flex: none;\n margin-inline-start: auto;\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._dot_14w1n_1 {\n display: inline-flex;\n align-items: center;\n}\n\n._hover_14w1n_6 {\n display: inline-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-secondary);\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*/";
|
|
14770
|
+
var COMPONENT_CSS_MARKER = ".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 padding-top: 0;\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.wb-note {\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.wb-problem {\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-state-error-primary);\n overflow-wrap: anywhere;\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.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-card-gutter);\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.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) var(--wb-card-gutter);\n font-size: var(--dsw-font-xxs-12-font-size);\n}\n.wb-cardBleed {\n margin-inline: calc(-1 * var(--wb-card-gutter));\n}\n._anchor_yq4s2_1 {\n display: contents;\n}\n.wb-spinner {\n display: inline-flex;\n align-items: center;\n flex: none;\n}\n.wb-choiceMenu {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n background: transparent;\n}\n\n.wb-choiceMenu[data-variant='boxed'] {\n padding: var(--wb-len-4);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\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-28);\n padding: var(--wb-len-4) 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 cursor: default;\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-choiceOption:has(:disabled) {\n cursor: default;\n opacity: 0.5;\n}\n\n.wb-choiceOption:has(:disabled),\n.wb-choiceOption:has(:disabled):hover {\n background: transparent;\n}\n\n.wb-choiceLabel {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.wb-choiceLabelText {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-choiceLabel:has(.wb-choiceDescription) .wb-choiceLabelText {\n overflow: visible;\n white-space: normal;\n overflow-wrap: anywhere;\n}\n\n.wb-choiceDescription {\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.wb-choiceLoading {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-choiceLoadingText {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-choiceEmpty {\n display: flex;\n align-items: center;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-tertiary);\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}\n\n.wb-radio:focus-visible {\n outline: var(--dsw-focus-ring-width, var(--wb-len-2)) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n.wb-formActions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\n}\n\n.wb-formActionDanger {\n color: var(--dsw-alias-state-error-primary);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 30%, transparent);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-error-primary) 8%, transparent);\n}\n.wb-rows {\n display: grid;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n column-gap: var(--wb-len-8);\n}\n.wb-rows > :not(.wb-row) {\n grid-column: 1 / -1;\n}\n.wb-row {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: minmax(72px, max-content) 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 white-space: nowrap;\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-rows > .wb-row {\n grid-template-columns: subgrid;\n}\n\n@supports not (grid-template-columns: subgrid) {\n .wb-rows > .wb-row {\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n }\n}\n.wb-confirmBar {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n width: 100%;\n box-sizing: border-box;\n padding: var(--wb-len-10) var(--wb-len-12);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n}\n.wb-confirmBarTitle {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 600;\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n.wb-confirmBarHint {\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-secondary);\n overflow-wrap: anywhere;\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\n.wb-field:has(:disabled) .wb-fieldLabel {\n opacity: 0.4;\n}\n.wb-formRows {\n display: grid;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n column-gap: var(--wb-len-8);\n row-gap: var(--wb-len-12);\n}\n\n.wb-formRows > :not(.wb-formRow) {\n grid-column: 1 / -1;\n}\n\n.wb-formRow {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n align-items: center;\n column-gap: var(--wb-len-8);\n row-gap: var(--wb-len-8);\n}\n\n.wb-formRow[data-layout='stacked'] {\n grid-template-columns: minmax(0, 1fr);\n align-items: stretch;\n gap: var(--wb-len-6);\n}\n\n.wb-formRows > .wb-formRow[data-layout='stacked'] {\n grid-template-columns: minmax(0, 1fr);\n}\n\n.wb-formLabel {\n justify-self: start;\n min-width: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n white-space: nowrap;\n}\n\n.wb-formRow[data-layout='stacked'] .wb-formLabel {\n white-space: normal;\n}\n\n.wb-formRow[data-layout='stacked'] .wb-formHint,\n.wb-formRow[data-layout='stacked'] .wb-formProblem {\n grid-column: 1 / -1;\n}\n\n.wb-formControl {\n display: flex;\n align-items: center;\n min-width: 0;\n}\n\n.wb-formControl\n > :where(\n .wb-selectAnchor,\n .wb-choiceMenu,\n input:not(\n [type='checkbox'],\n [type='radio'],\n [type='button'],\n [type='submit'],\n [type='reset'],\n [type='image'],\n [type='color'],\n [type='range']\n ),\n select,\n textarea\n ) {\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n}\n\n.wb-formHint {\n grid-column: 2;\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-formProblem {\n grid-column: 2;\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.wb-formRow:has(.wb-formProblem) .wb-formLabel {\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-formRow:has(:disabled) .wb-formLabel {\n opacity: 0.4;\n}\n\n.wb-formRows > .wb-formRow {\n grid-template-columns: subgrid;\n}\n\n@supports not (grid-template-columns: subgrid) {\n .wb-formRows > .wb-formRow {\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n }\n}\n.wb-form {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n width: 100%;\n}\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.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\n.wb-longTaskStop {\n display: inline-flex;\n flex: none;\n align-items: center;\n align-self: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n padding: 0;\n margin-left: auto;\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-specific-menu);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n.wb-longTaskStop:hover:not(:disabled),\n.wb-longTaskStop:focus-visible {\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-longTaskStop:disabled {\n cursor: default;\n}\n\n.wb-longTaskStopArmed,\n.wb-longTaskStopArmed:hover:not(:disabled),\n.wb-longTaskStopArmed:focus-visible {\n gap: var(--wb-len-4);\n width: auto;\n padding: 0 var(--wb-len-7);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent);\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-longTaskStopLabel {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n.wb-longTaskStopWhy {\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.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.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:disabled {\n cursor: not-allowed;\n opacity: 0.4;\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-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n}\n:where(.wb-selectTrigger) {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n width: 100%;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\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 text-align: left;\n cursor: pointer;\n}\n\n.wb-selectTrigger:focus-visible {\n outline: none;\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-selectTrigger[aria-invalid='true'] {\n border-color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-selectTrigger[aria-invalid='true']:focus-visible {\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-error-primary);\n}\n\n.wb-selectTrigger:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.wb-selectLoading:disabled {\n cursor: default;\n opacity: 1;\n}\n\n.wb-selectGhost {\n gap: var(--wb-gap-xs);\n min-height: 0;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: none;\n background: transparent;\n font-size: var(--wb-font-row);\n}\n\n.wb-selectGhost:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-selectGhost: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 border-color: transparent;\n box-shadow: none;\n}\n\n.wb-selectIconOnly {\n width: var(--wb-len-36);\n height: var(--wb-len-36);\n min-height: 0;\n gap: 0;\n padding: 0;\n justify-content: center;\n}\n\n.wb-selectReveal {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.wb-selectIconOnly .wb-selectIcon {\n width: 100%;\n height: 100%;\n}\n\n.wb-selectAnchor {\n display: block;\n width: 100%;\n}\n\n.wb-selectIcon {\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.wb-selectValue {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-6);\n line-height: var(--wb-line-20);\n overflow: hidden;\n}\n\n.wb-selectPlaceholder {\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-selectChevron {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-caption);\n}\n\n.wb-selectMenu {\n min-width: var(--wb-len-240);\n max-width: var(--wb-len-360);\n max-height: min(var(--wb-len-320), calc(100vh - var(--wb-len-24)));\n}\n\n:where(.wb-selectSearch) {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n width: 100%;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\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}\n\n.wb-selectSearch:focus-within {\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-selectSearch.wb-selectGhost {\n gap: var(--wb-gap-xs);\n min-height: 0;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: 0.5px solid var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n.wb-selectSearch.wb-selectGhost:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: none;\n}\n\n.wb-selectSearchIcon {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-textField.wb-selectSearchInput {\n flex: 1;\n min-width: 0;\n min-height: 0;\n padding: 0;\n border: none;\n background: transparent;\n}\n\n.wb-textField.wb-selectSearchInput:focus {\n box-shadow: none;\n}\n\n.wb-selectFallback {\n width: 100%;\n}\n\n.wb-selectHint {\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}\nsection.wb-settings {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n padding: var(--wb-len-12) var(--wb-len-16);\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-s-strong-14-font-size);\n line-height: var(--wb-line-24);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n.wb-stack {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n min-height: 0;\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._marketList_1idrk_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_1idrk_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_1idrk_20 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-48);\n height: var(--wb-len-48);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketMain_1idrk_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._marketName_1idrk_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._marketStatus_1idrk_48 {\n display: inline-flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketStateText_1idrk_58 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSep_1idrk_62 {\n color: var(--dsw-alias-label-caption);\n}\n\n._marketReason_1idrk_66 {\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._marketName_1idrk_39 ._marketVersion_1idrk_72 {\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_1idrk_72 {\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketVersion_1idrk_72::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_1idrk_94 {\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_1idrk_105 {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_1idrk_112 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_1idrk_112::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_1idrk_125 {\n flex: none;\n display: flex;\n gap: var(--wb-len-6);\n}\n\n._marketUpdateAction_1idrk_131 {\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_1idrk_137 {\n height: 0;\n margin-top: calc(0px - var(--wb-len-16));\n border-top: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n._marketSection_1idrk_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._marketSectionHead_1idrk_150 {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n\n._marketSectionIcon_1idrk_156 {\n display: inline-flex;\n align-items: center;\n align-self: center;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionTitle_1idrk_163 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketSectionCount_1idrk_169 {\n font: var(--dsw-font-s-14);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionQuiet_1idrk_175 ._marketSectionTitle_1idrk_163 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_1idrk_175 ._marketName_1idrk_39 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_1idrk_175 ._marketIcon_1idrk_20 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n\n._marketProgress_1idrk_188 {\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_1idrk_198 {\n grid-column: 2 / -1;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-warn-primary);\n overflow-wrap: anywhere;\n}\n\n._marketFailure_1idrk_205 {\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_1idrk_212 {\n padding: var(--wb-len-18) var(--wb-len-16);\n text-align: center;\n}\n\n._marketPage_1idrk_217 {\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_1idrk_217 > * {\n width: 100%;\n max-width: var(--wb-len-960);\n}\n\n._marketPageHead_1idrk_235 {\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_1idrk_243 {\n margin: 0;\n font: var(--dsw-font-l-20);\n}\n\n._marketPageIntro_1idrk_248 {\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_1idrk_254 {\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._marketPanel_1idrk_263 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-32);\n}\n\n._marketPanel_1idrk_263[hidden] {\n display: none;\n}\n\n._marketTabs_1idrk_273 {\n display: flex;\n margin: calc(0px - var(--wb-len-16)) 0;\n}\n\n._marketTabList_1idrk_278 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._marketIconButton_1idrk_283 {\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_1idrk_283:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketIconButton_1idrk_283:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._marketIconWrap_1idrk_308 {\n display: inline-flex;\n}\n\n._marketIconButtonSpinning_1idrk_312 svg {\n animation: _wb-spin_1idrk_1 var(--wb-dur-0-9) linear infinite;\n}\n\n._marketAddButton_1idrk_316 {\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_1idrk_212 {\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._marketEmptyTitle_1idrk_333 {\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n@keyframes _wb-spin_1idrk_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n._discoverPage_1idrk_347 {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverBar_1idrk_354 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n container-type: inline-size;\n}\n\n._discoverTools_1idrk_361 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverMarket_1idrk_367 {\n flex: 0 1 auto;\n min-width: 0;\n}\n\n._discoverMarketButton_1idrk_372 {\n min-width: 0;\n max-width: var(--wb-len-240);\n margin-left: calc(0px - var(--wb-len-8));\n font-weight: 500;\n}\n\n._discoverMarketName_1idrk_379 {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._discoverLabels_1idrk_385 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverSort_1idrk_390 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverRefresh_1idrk_395 {\n flex: none;\n}\n\n._discoverSearch_1idrk_399 {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex: 1 1 var(--wb-len-120);\n min-width: var(--wb-len-120);\n}\n\n._discoverSearchField_1idrk_407 {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._discoverSearchFieldFilled_1idrk_412 input {\n padding-inline-end: var(--wb-len-20);\n}\n\n._discoverSearchField_1idrk_407 input::-webkit-search-cancel-button {\n appearance: none;\n -webkit-appearance: none;\n}\n\n._discoverSearch_1idrk_399 ._discoverSearchClear_1idrk_421 {\n position: absolute;\n top: 50%;\n inset-inline-end: var(--wb-len-4);\n width: var(--wb-len-24);\n height: var(--wb-len-24);\n padding: 0;\n border-radius: var(--dsw-radius-sm);\n color: var(--dsw-alias-label-tertiary);\n transform: translateY(-50%);\n}\n\n._discoverSearchClear_1idrk_421:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n@container (max-width: 560px) {\n ._discoverTools_1idrk_361 {\n display: grid;\n grid-template-columns: minmax(0, auto) minmax(var(--wb-len-120), 1fr) auto;\n grid-template-areas:\n 'market search refresh'\n 'labels sort sort';\n }\n\n ._discoverMarket_1idrk_367 {\n grid-area: market;\n }\n\n ._discoverMarketButton_1idrk_372 {\n margin-left: 0;\n }\n\n ._discoverLabels_1idrk_385 {\n grid-area: labels;\n }\n\n ._discoverSearch_1idrk_399 {\n grid-area: search;\n }\n\n ._discoverSort_1idrk_390 {\n grid-area: sort;\n justify-self: end;\n }\n\n ._discoverRefresh_1idrk_395 {\n grid-area: refresh;\n }\n}\n\n._discoverChips_1idrk_472 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n._discoverList_1idrk_479 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._discoverCard_1idrk_488 {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n margin: 0 calc(0px - var(--wb-len-8));\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCard_1idrk_488:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._discoverArtwork_1idrk_502 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-48);\n height: var(--wb-len-48);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverArtworkImage_1idrk_514 {\n object-fit: contain;\n}\n\n._discoverMain_1idrk_518 {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--wb-len-2);\n min-width: 0;\n}\n\n._discoverTitleRow_1idrk_526 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._discoverCardOpen_1idrk_534 {\n max-width: 100%;\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n text-align: left;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n cursor: pointer;\n}\n\n._discoverCardOpen_1idrk_534::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCardOpen_1idrk_534:focus-visible {\n outline: none;\n}\n\n._discoverCardOpen_1idrk_534:focus-visible::after {\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._discoverStrong_1idrk_565 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n overflow-wrap: anywhere;\n}\n\n._discoverDesc_1idrk_571 {\n display: -webkit-box;\n overflow: hidden;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverMeta_1idrk_580 {\n margin: 0;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._discoverMuted_1idrk_587 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverEnd_1idrk_593 {\n position: relative;\n z-index: var(--wb-z-10);\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverBlocked_1idrk_602 {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n._discoverEmpty_1idrk_607 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-64) 0;\n text-align: center;\n}\n\n._discoverEmptyTitle_1idrk_616 {\n margin: var(--wb-len-8) 0 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverEmpty_1idrk_607 > button {\n margin-top: var(--wb-len-8);\n}\n\n._discoverDetail_1idrk_626 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverCrumb_1idrk_632 {\n align-self: flex-start;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n padding: 0;\n border: 0;\n background: 0 0;\n color: var(--dsw-alias-label-tertiary);\n font: inherit;\n font-size: var(--wb-font-12-5);\n cursor: pointer;\n}\n\n._discoverCrumb_1idrk_632:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._discoverCrumb_1idrk_632: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._discoverCrumbIcon_1idrk_655 {\n transform: rotate(90deg);\n}\n\n._discoverDetailHead_1idrk_659 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverDetailTitle_1idrk_665 {\n margin: 0;\n font: var(--dsw-font-l-20);\n font-weight: 500;\n}\n\n._discoverDetailText_1idrk_671 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._discoverDetailPanel_1idrk_678 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n min-width: 0;\n}\n\n._discoverDetailTabs_1idrk_685 {\n display: flex;\n margin-bottom: calc(0px - var(--wb-len-4));\n}\n\n._discoverDetailTabList_1idrk_690 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._discoverDocBody_1idrk_695 {\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n._discoverDocNotice_1idrk_700 {\n margin: var(--wb-len-16) 0 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverSection_1idrk_706 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n margin-top: var(--wb-len-16);\n}\n\n._discoverSectionTitle_1idrk_713 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverFacts_1idrk_719 {\n margin: 0;\n padding: 0;\n}\n\n._discoverFactRow_1idrk_724 {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--wb-len-16);\n min-height: var(--wb-len-44);\n padding: var(--wb-len-8) var(--wb-len-2);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverFactKind_1idrk_734 {\n flex: none;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverFactValue_1idrk_740 {\n min-width: 0;\n margin: 0;\n text-align: end;\n overflow-wrap: anywhere;\n font: var(--dsw-font-xs-13);\n}\n\n._discoverCode_1idrk_748 {\n padding: var(--wb-len-2) var(--wb-len-6);\n border-radius: var(--wb-radius-6);\n background: var(--dsw-alias-bg-module-platform);\n font-family: var(--ds-font-family-code);\n font-size: var(--dsw-font-xxs-12-font-size);\n box-decoration-break: clone;\n}\n\n._discoverTags_1idrk_757 {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: var(--wb-len-6);\n}\n\n._discoverLink_1idrk_764 {\n color: var(--dsw-alias-link);\n overflow-wrap: anywhere;\n text-decoration: none;\n}\n\n._discoverLink_1idrk_764:hover {\n text-decoration: underline;\n}\n\n._discoverVersions_1idrk_774 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverVersionRow_1idrk_782 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverVersionName_1idrk_790 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverError_1idrk_795 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._discoverFailure_1idrk_804 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._discoverLoading_1idrk_810 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xs-13);\n}\n\n._discoverNotice_1idrk_819 {\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 color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n}\n\n._discoverNotice_1idrk_819 svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverMore_1idrk_837 {\n align-self: center;\n}\n\n._discoverDialog_1idrk_841 {\n width: min(var(--wb-len-480), calc(100vw - var(--wb-len-32)));\n}\n\n._discoverDialogBody_1idrk_845 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._discoverSourceList_1idrk_851 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverSourceRow_1idrk_859 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverSourceCurrent_1idrk_868 {\n flex: none;\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n white-space: nowrap;\n}\n\n._discoverSourceLoading_1idrk_875 {\n display: flex;\n flex: none;\n align-items: center;\n gap: var(--wb-len-6);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n white-space: nowrap;\n}\n\n._discoverSourceHint_1idrk_885 {\n display: flex;\n flex-basis: 100%;\n align-items: center;\n gap: var(--wb-len-6);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n}\n\n._discoverSourceHint_1idrk_885 svg {\n flex: none;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverSourceError_1idrk_899 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._discoverSourceForm_1idrk_905 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverGrow_1idrk_911 {\n flex: 1;\n min-width: 0;\n}\n\n._discoverField_1idrk_916 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._discoverFieldLabel_1idrk_922 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverConfirmHead_1idrk_927 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverSkeletonFill_1idrk_933 {\n background: var(--dsw-alias-bg-skeleton);\n animation: _wb-skeleton_1idrk_1 var(--wb-dur-1-5) cubic-bezier(0.36, 0, 0.64, 1) infinite;\n}\n\n._discoverArtwork_1idrk_502._discoverSkeletonFill_1idrk_933 {\n border-color: transparent;\n}\n\n._discoverSkeletonBar_1idrk_942 {\n display: block;\n height: var(--wb-len-12);\n margin: var(--wb-len-4) 0;\n border-radius: var(--dsw-radius-xs);\n}\n\n._discoverSkeletonTitle_1idrk_949 {\n width: min(var(--wb-len-144), 60%);\n}\n\n._discoverSkeletonDesc_1idrk_953 {\n width: min(var(--wb-len-280), 85%);\n}\n\n@keyframes _wb-skeleton_1idrk_1 {\n 0% {\n opacity: 1;\n }\n 40% {\n opacity: 0.6;\n }\n 80%,\n to {\n opacity: 1;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._discoverSkeletonFill_1idrk_933 {\n animation: none;\n }\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_1lv8f_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_1lv8f_8 {\n width: min(var(--wb-len-560), 100%);\n max-height: min(var(--wb-len-800), 100%);\n}\n\n._content_1lv8f_13 {\n min-height: 0;\n overflow: auto;\n}\n\n._stack_1lv8f_18 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._body_1lv8f_25 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._field_1lv8f_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_1lv8f_39 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-14);\n}\n\n._registryField_1lv8f_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_1lv8f_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_1lv8f_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_1lv8f_59:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._guideToggle_1lv8f_59 svg,\n._registryToggle_1lv8f_78 svg {\n transition: transform var(--wb-dur-0-12) ease;\n}\n\n._guideToggle_1lv8f_59[aria-expanded='true'] svg,\n._registryToggle_1lv8f_78[aria-expanded='true'] svg {\n transform: rotate(180deg);\n}\n\n._registryWrap_1lv8f_87 {\n position: relative;\n flex: none;\n}\n\n._registryToggle_1lv8f_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_1lv8f_78:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._registryToggle_1lv8f_78:disabled {\n cursor: default;\n opacity: 0.6;\n}\n\n._registryToggle_1lv8f_78[aria-expanded='true'] {\n border-color: var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-3);\n}\n\n._registryChosen_1lv8f_121 {\n color: var(--dsw-alias-label-primary);\n font-weight: 500;\n}\n\n._registry_1lv8f_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_1lv8f_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_1lv8f_143 {\n flex-direction: row;\n align-items: flex-start;\n gap: var(--wb-len-10);\n}\n\n._registryPick_1lv8f_159 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n cursor: pointer;\n}\n\n._registryOption_1lv8f_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_1lv8f_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_1lv8f_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_1lv8f_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_1lv8f_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_1lv8f_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_1lv8f_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_1lv8f_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_1lv8f_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_1lv8f_244 {\n display: flex;\n flex-direction: column;\n flex: 1;\n gap: 0;\n min-width: 0;\n}\n\n._guideTitle_1lv8f_252 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n\n._guideHint_1lv8f_258 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._guideExample_1lv8f_264 {\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._guideExample_1lv8f_264 code {\n font-family: var(--dsw-font-mono, monospace);\n}\n\n._guideExampleLabel_1lv8f_274 {\n color: var(--dsw-alias-label-caption);\n}\n\n._footer_1lv8f_278 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-20);\n width: 100%;\n}\n\n._hero_1lv8f_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_1lv8f_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_1lv8f_294[data-state='done'] {\n color: var(--dsw-alias-state-success-secondary);\n}\n\n._heroIcon_1lv8f_294[data-state='error'] {\n color: var(--dsw-alias-state-warn-label);\n}\n\n._pendingTitle_1lv8f_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_1lv8f_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_1lv8f_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_1lv8f_337 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n overflow-wrap: anywhere;\n}\n\n._subjectMeta_1lv8f_343,\n._subjectDesc_1lv8f_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_1lv8f_351,\n._resultWarn_1lv8f_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_1lv8f_352 {\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 12%, transparent);\n}\n\n._resultMeta_1lv8f_365 {\n margin: 0;\n padding: 0 var(--wb-len-12);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._approval_1lv8f_373 {\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_1lv8f_383 {\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_1lv8f_390 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._approvalCaution_1lv8f_396 {\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_1lv8f_403 {\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_1lv8f_410 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._noteError_1lv8f_414 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._problem_1lv8f_418 {\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_1lv8f_425 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._detail_1lv8f_425 {\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._slot_1t7dx_1 {\n display: flex;\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._slot_1t7dx_1 > * {\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._action_1t7dx_12 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 1 0;\n width: 100%;\n min-width: 0;\n min-height: var(--wb-len-36);\n margin: 0 var(--wb-len-2);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: default;\n overflow: hidden;\n gap: var(--wb-len-4);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n}\n\n._live_1t7dx_31 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._paused_1t7dx_35 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._trouble_1t7dx_39 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._pulse_1t7dx_43 {\n animation: _wb-debug-breathe_1t7dx_1 var(--wb-dur-1-5) var(--ds-ease-in-out, ease-in-out) infinite;\n}\n\n@keyframes _wb-debug-breathe_1t7dx_1 {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.35;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._pulse_1t7dx_43 {\n animation: none;\n }\n}\n\n._entry_1t7dx_64 {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._entryInner_1t7dx_71 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._acts_1t7dx_78 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-2);\n flex: none;\n}\n\n._act_1t7dx_12 {\n appearance: none;\n border: 0;\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: 0;\n border-radius: var(--dsw-radius-sm, var(--wb-len-6));\n flex: none;\n cursor: pointer;\n}\n\n._act_1t7dx_12:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._act_1t7dx_12: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._actStop_1t7dx_110:hover,\n._actStop_1t7dx_110:focus-visible {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._actArmed_1t7dx_115,\n._actArmed_1t7dx_115:hover,\n._actArmed_1t7dx_115:focus-visible {\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);\n width: auto;\n color: var(--dsw-alias-state-error-primary);\n gap: var(--wb-len-4);\n padding: 0 var(--wb-len-7);\n}\n\n._actLabel_1t7dx_125 {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n._entryLine_1t7dx_131 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._actionRail_1t7dx_138 {\n justify-content: center;\n flex: none;\n width: var(--wb-len-36);\n min-width: var(--wb-len-36);\n height: var(--wb-len-36);\n margin: 0;\n padding: 0;\n corner-shape: round;\n border-radius: 50%;\n}\n\n._card_1t7dx_150 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._cardTitle_1t7dx_156 {\n color: var(--dsw-alias-label-primary);\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n}\n\n._cardNote_1t7dx_162 {\n color: var(--dsw-alias-label-secondary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n._slot_1gkj9_1 {\n display: flex;\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._slot_1gkj9_1 > * {\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._action_1gkj9_12 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 1 0;\n width: 100%;\n min-width: 0;\n min-height: var(--wb-len-36);\n margin: 0 var(--wb-len-2);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: default;\n overflow: hidden;\n gap: var(--wb-len-4);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n}\n\n._live_1gkj9_31 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._done_1gkj9_35 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._pulse_1gkj9_39 {\n animation: _wb-record-breathe_1gkj9_1 var(--wb-dur-1-5) var(--ds-ease-in-out, ease-in-out) infinite;\n}\n\n@keyframes _wb-record-breathe_1gkj9_1 {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.35;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._pulse_1gkj9_39 {\n animation: none;\n }\n}\n\n._entry_1gkj9_60 {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._entryInner_1gkj9_67 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._acts_1gkj9_74 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-2);\n flex: none;\n}\n\n._act_1gkj9_12 {\n appearance: none;\n border: 0;\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: var(--wb-len-22);\n padding: 0 var(--wb-len-7);\n border-radius: var(--dsw-radius-sm, var(--wb-len-6));\n flex: none;\n cursor: pointer;\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n._act_1gkj9_12:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._act_1gkj9_12: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._entryLine_1gkj9_108 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._actionRail_1gkj9_115 {\n justify-content: center;\n flex: none;\n width: var(--wb-len-36);\n min-width: var(--wb-len-36);\n height: var(--wb-len-36);\n margin: 0;\n padding: 0;\n corner-shape: round;\n border-radius: 50%;\n}\n\n._card_1gkj9_127 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._cardTitle_1gkj9_133 {\n color: var(--dsw-alias-label-primary);\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n}\n\n._cardNote_1gkj9_139 {\n color: var(--dsw-alias-label-secondary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n._item_lyox9_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n}\n\n._item_lyox9_1 + ._item_lyox9_1 {\n padding-top: var(--wb-len-14);\n border-top: var(--wb-len-0-5) solid var(--dsw-alias-settings-card-stroke);\n}\n\n._head_lyox9_12 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._title_lyox9_19 {\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-s-14-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._description_lyox9_31 {\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._rows_85r3w_1 {\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_85r3w_1 {\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_85r3w_20 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._pick_85r3w_27 {\n flex: 0 1 auto;\n min-width: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n._pick_85r3w_27 > span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._code_85r3w_39 {\n --dsl-code-block-background: var(--dsw-alias-bg-layer-1);\n margin: 0;\n}\n\n._missing_85r3w_44,\n._conflict_85r3w_45 {\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._body_11oac_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._sources_11oac_7 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._sourcesLabel_11oac_14 {\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-secondary);\n}\n\nbutton._sourceOn_11oac_19 {\n border-color: var(--dsw-alias-brand-primary);\n}\n._sourceCount_11oac_22 {\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_11oac_29 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._status_11oac_35 {\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_11oac_45 {\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_11oac_55 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._failureHint_11oac_62 {\n grid-column: 1;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._failureAction_11oac_67 {\n grid-column: 2;\n grid-row: 1;\n justify-self: end;\n}\n\n._foot_11oac_73 {\n display: flex;\n justify-content: flex-end;\n}\n._body_lox98_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._field_lox98_7 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._input_lox98_13 {\n width: 100%;\n}\n\n._label_lox98_17 {\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-secondary);\n}\n\n._hint_lox98_22 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._copy_lox98_28 {\n display: flex;\n flex-wrap: wrap;\n gap: var(--wb-len-8) var(--wb-len-16);\n margin: 0;\n padding: 0;\n border: 0;\n}\n\n._copy_lox98_28 legend {\n padding: 0;\n margin-bottom: var(--wb-len-6);\n}\n\n._actions_lox98_42 {\n display: flex;\n justify-content: flex-end;\n}\n\n._commandLabel_lox98_47 {\n display: block;\n margin-top: var(--wb-len-4);\n}\n\n._command_lox98_47 {\n display: block;\n margin-top: var(--wb-len-4);\n padding: var(--wb-len-6) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxs-12-font-size);\n overflow-wrap: anywhere;\n}\n._body_zi2j5_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._lead_zi2j5_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._title_zi2j5_14 {\n font-size: var(--wb-font-18);\n line-height: var(--wb-line-24);\n}\n._hint_zyzt3_1[hidden],\n._actions_zyzt3_2[hidden],\n._progress_zyzt3_3[hidden],\n._commandRow_zyzt3_4[hidden],\n._bridge_zyzt3_5[hidden],\n._raw_zyzt3_6[hidden] {\n display: none;\n}\n\n._gate_zyzt3_10 {\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_zyzt3_21 {\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_zyzt3_21:has(._actions_zyzt3_2:not([hidden])),\n._card_zyzt3_21:has(._bridge_zyzt3_5:not([hidden])) {\n max-width: var(--wb-len-520);\n}\n\n._title_zyzt3_36 {\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_zyzt3_1 {\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_zyzt3_51 {\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_zyzt3_51 {\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_zyzt3_51[data-status='running'] {\n color: var(--dsw-alias-label-primary);\n}\n\n._mark_zyzt3_78 {\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_zyzt3_51[data-status='ok'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._step_zyzt3_51[data-status='warn'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._step_zyzt3_51[data-status='failed'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._label_zyzt3_103 {\n flex: none;\n}\n\n._detail_zyzt3_107 {\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_zyzt3_3 {\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_zyzt3_125 {\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_zyzt3_133 {\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_zyzt3_4 {\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_zyzt3_159 {\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_zyzt3_159:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._command_zyzt3_4 {\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_zyzt3_192 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-12);\n}\n\n._mockSlot_zyzt3_199 {\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_zyzt3_192 {\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_zyzt3_192:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._button_zyzt3_192:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n._actions_zyzt3_2,\n._bridge_zyzt3_5 {\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_zyzt3_250 {\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_zyzt3_2 ._hint_zyzt3_1,\n._bridge_zyzt3_5 ._hint_zyzt3_1 {\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_zyzt3_2 ._commandRow_zyzt3_4,\n._bridge_zyzt3_5 ._commandRow_zyzt3_4 {\n margin: 0;\n}\n\n._actions_zyzt3_2 ._buttons_zyzt3_192,\n._bridge_zyzt3_5 ._buttons_zyzt3_192 {\n justify-content: flex-start;\n}\n\n._raw_zyzt3_6 {\n box-sizing: border-box;\n width: 100%;\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n text-align: left;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._rawSummary_zyzt3_286 {\n cursor: pointer;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._actions_zyzt3_2 ._error_zyzt3_133,\n._bridge_zyzt3_5 ._error_zyzt3_133 {\n margin-top: var(--wb-len-6);\n}\n\n._bridgeLines_zyzt3_296 {\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_zyzt3_296 a {\n display: block;\n margin-top: var(--wb-len-4);\n width: fit-content;\n}\n\n._link_zyzt3_313 {\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n}\n\n._link_zyzt3_313::after {\n content: '↗';\n margin-left: var(--wb-len-2);\n}\n\n._link_zyzt3_313:hover {\n text-decoration: underline;\n}\n\n._loading_zyzt3_327 {\n flex: none;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._loading_zyzt3_327[hidden] {\n display: none;\n}\n\n._loadingMotion_zyzt3_336 {\n transform-origin: center;\n animation: _wb-spin_zyzt3_1 var(--wb-dur-1-5) linear infinite;\n}\n\n._loadingTrack_zyzt3_341,\n._loadingArc_zyzt3_342 {\n fill: none;\n stroke: currentColor;\n stroke-width: 2;\n stroke-linecap: round;\n}\n\n._loadingTrack_zyzt3_341 {\n opacity: 0.25;\n}\n\n._loadingArc_zyzt3_342 {\n stroke-dasharray: 12 150;\n animation: _wb-dash_zyzt3_1 var(--wb-dur-1-5) ease-in-out infinite;\n}\n\n@keyframes _wb-spin_zyzt3_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes _wb-dash_zyzt3_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_zyzt3_336,\n ._loadingArc_zyzt3_342 {\n animation: none;\n }\n}\n._changelog_1q6pj_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n margin-top: var(--wb-len-10);\n min-width: 0;\n}\n\n._changelogTitle_1q6pj_9 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._changelogMissing_1q6pj_15 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-primary);\n}\n\n._changelogBody_1q6pj_21 {\n max-height: var(--wb-len-320);\n overflow: auto;\n padding: var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\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_1whum_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_1whum_1[data-fullscreen] {\n z-index: var(--wb-z-40);\n}\n\n._panel_1whum_1[data-open] {\n visibility: visible;\n}\n\n._columns_1whum_18 {\n display: block;\n column-gap: var(--wb-len-12);\n}\n\n._cell_1whum_23 {\n display: flow-root;\n min-width: 0;\n break-inside: avoid;\n margin-bottom: var(--wb-len-12);\n}\n._root_1cmz0_1 {\n position: relative;\n flex: none;\n margin: 0 var(--wb-len-2) var(--wb-len-4);\n}\n\n._rail_1cmz0_7 {\n margin: 0 0 var(--wb-len-4);\n}\n\n._glyphBox_1cmz0_11 {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n}\n\n._glyph_1cmz0_11 {\n position: relative;\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_1cmz0_30 {\n color: var(--dsw-alias-state-business-primary);\n}\n\n._triggerName_1cmz0_34 {\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_1cmz0_45 {\n flex: 0 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._name_1cmz0_53 {\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_1cmz0_34 ._name_1cmz0_53 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._row_1cmz0_66 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n width: 100%;\n min-width: 0;\n}\n\n._trailing_1cmz0_74 {\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_1cmz0_74 ._rowAction_1cmz0_84 {\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_1cmz0_66 ._name_1cmz0_53 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._current_1cmz0_97 {\n flex: none;\n display: inline-flex;\n align-items: center;\n color: var(--dsw-alias-label-primary);\n}\n._dot_sosf1_1 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n._overlay_sosf1_8 {\n position: absolute;\n inset-block-start: var(--wb-len-neg-3);\n inset-inline-end: var(--wb-len-neg-3);\n}\n._tag_g9dg8_1 {\n flex: none;\n margin-inline-start: auto;\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._dot_14w1n_1 {\n display: inline-flex;\n align-items: center;\n}\n\n._hover_14w1n_6 {\n display: inline-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-secondary);\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*/";
|
|
14382
14771
|
function workbenchCss() {
|
|
14383
14772
|
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}`;
|
|
14384
14773
|
}
|
|
@@ -14430,7 +14819,7 @@ window.__ModuleLoader__.load({
|
|
|
14430
14819
|
let disposeDictionary;
|
|
14431
14820
|
const publish = () => {
|
|
14432
14821
|
disposeDictionary?.();
|
|
14433
|
-
const { dictionaries: merged, problems } = mergeMessagesSkipping(dictionaries, messagesOf(units.all()));
|
|
14822
|
+
const { dictionaries: merged, problems } = mergeMessagesSkipping(dictionaries, [unitTitlesOf(units.manifests()), ...messagesOf(units.all())]);
|
|
14434
14823
|
for (const problem of problems) console.warn(`[dsh-workbench] 套件 ${problem.unit} 的文案没并进来(只有它少了这几句):${problem.reason}`);
|
|
14435
14824
|
disposeDictionary = ctx.locale.register(LOCALE_NS, merged);
|
|
14436
14825
|
};
|