dsh-config-manager 0.1.86 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cli/web/page.js +2 -2
- package/lib/client.d.ts +86 -1
- package/lib/client.js +2371 -778
- package/lib/core/native-path-picker.d.ts +49 -0
- package/lib/core/native-path-picker.js +475 -0
- package/lib/core/path-browse.d.ts +42 -0
- package/lib/core/path-browse.js +134 -0
- package/lib/foreign/claude-sessions.d.ts +1 -1
- package/lib/foreign/claude-sessions.js +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +3 -3
- package/lib/market/security.js +1 -1
- package/lib/market/types.d.ts +1 -1
- package/lib/market/types.js +1 -1
- package/lib/routes/index.d.ts +1 -1
- package/lib/routes/index.js +2 -0
- package/lib/routes/kit.d.ts +2 -2
- package/lib/routes/path-browse.d.ts +3 -0
- package/lib/routes/path-browse.js +63 -0
- package/lib/security/secret-scanner.js +1 -1
- package/lib/ui/sync-settings-view.d.ts +18 -0
- package/lib/ui/sync-settings-view.js +20 -0
- package/package.json +2 -2
- package/src/cli/web/page.ts +2 -2
- package/src/client/ConfigManagerSection.tsx +20 -17
- package/src/client/api.ts +60 -1
- package/src/client/bundle-selfcontained.test.ts +9 -0
- package/src/client/chat/chat-entry-view.test.ts +1 -1
- package/src/client/chat/rollback-entry-view.test.ts +14 -0
- package/src/client/chat/rollback-entry-view.ts +2 -1
- package/src/client/common/CopyButton.tsx +21 -2
- package/src/client/common/Icon.tsx +7 -0
- package/src/client/common/routes.ts +5 -0
- package/src/client/config-manager.module.css +70 -0
- package/src/client/import/ImportWizardView.tsx +1 -0
- package/src/client/import/PathMappingForm.tsx +62 -8
- package/src/client/import/PathPickerDialog.tsx +172 -0
- package/src/client/import/dsh-directory-pick.test.ts +55 -0
- package/src/client/import/dsh-directory-pick.ts +55 -0
- package/src/client/import/import-wizard-steps.tsx +5 -2
- package/src/client/index.ts +12 -1
- package/src/client/locales.ts +25 -0
- package/src/client/lucide-icons.d.ts +2 -0
- package/src/client/sync/SyncPanel.tsx +4 -4
- package/src/client/sync/sync-view.ts +1 -1
- package/src/core/native-path-picker.test.ts +118 -0
- package/src/core/native-path-picker.ts +517 -0
- package/src/core/path-browse.test.ts +88 -0
- package/src/core/path-browse.ts +166 -0
- package/src/foreign/claude-sessions.ts +3 -3
- package/src/index.ts +3 -3
- package/src/market/security.ts +1 -1
- package/src/market/types.ts +1 -1
- package/src/routes/index.ts +3 -1
- package/src/routes/kit.ts +2 -2
- package/src/routes/path-browse.ts +70 -0
- package/src/security/secret-scanner.test.ts +1 -1
- package/src/security/secret-scanner.ts +1 -1
- package/src/ui/session-issue-labels.ts +1 -1
- package/src/ui/sync-settings-view.test.ts +18 -1
- package/src/ui/sync-settings-view.ts +21 -0
package/lib/client.js
CHANGED
|
@@ -50,6 +50,29 @@ react = __toESM(react, 1);
|
|
|
50
50
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
51
51
|
let react_dom = require("react-dom");
|
|
52
52
|
react_dom = __toESM(react_dom, 1);
|
|
53
|
+
// src/client/import/dsh-directory-pick.ts
|
|
54
|
+
/** 服务名按 DSH 版本从新到旧:0.2.x = uiWorkspace,更早 = workspaces。 */
|
|
55
|
+
const SERVICE_NAMES = ["uiWorkspace", "workspaces"];
|
|
56
|
+
function asService(value) {
|
|
57
|
+
if (typeof value !== "object" || value === null) return void 0;
|
|
58
|
+
const candidate = value;
|
|
59
|
+
return typeof candidate.pickDirectory === "function" ? candidate : void 0;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* 造一个惰取 thunk:每次都重新读服务(宿主重连/服务重建后旧快照会失效)。
|
|
63
|
+
* 找不到任何入口就抛错 —— 调用方据此归成 `unavailable` 并降级,绝不静默当成「用户取消」。
|
|
64
|
+
*/
|
|
65
|
+
function makeDshDirectoryPicker(sources) {
|
|
66
|
+
return async () => {
|
|
67
|
+
const desktop = sources.desktop;
|
|
68
|
+
if (desktop !== void 0 && typeof desktop.pick === "function") return desktop.pick();
|
|
69
|
+
for (const name of SERVICE_NAMES) {
|
|
70
|
+
const service = asService(sources.getService?.(name));
|
|
71
|
+
if (service?.pickDirectory !== void 0) return service.pickDirectory();
|
|
72
|
+
}
|
|
73
|
+
throw new Error("config-manager: DSH directory picker unavailable");
|
|
74
|
+
};
|
|
75
|
+
}
|
|
53
76
|
/**
|
|
54
77
|
* 分区注册表(**Record<SectionId, SectionMeta>**:漏注册/写错 id → 编译失败)。
|
|
55
78
|
*
|
|
@@ -1929,7 +1952,12 @@ const CONFIG_MANAGER_API = {
|
|
|
1929
1952
|
* F-2:官方 session.export 通道(**只读**)。缺 `sessionId` = 探测可用性(回结构化三态),
|
|
1930
1953
|
* 带 `sessionId` = 流式代理 DSH 自己的 `/api/session.export`(原始日志 ZIP,含子会话与附件)。
|
|
1931
1954
|
*/
|
|
1932
|
-
sessionExport: `${API_BASE}/session-export
|
|
1955
|
+
sessionExport: `${API_BASE}/session-export`,
|
|
1956
|
+
/**
|
|
1957
|
+
* 本机目录列举(**只读**):`?path=` 缺省 = 「此电脑」根列表。
|
|
1958
|
+
* 导入向导「路径映射 → 选本机路径」弹窗的唯一数据源(浏览器拿不到真实目录树)。
|
|
1959
|
+
*/
|
|
1960
|
+
pathBrowse: `${API_BASE}/path-browse`
|
|
1933
1961
|
};
|
|
1934
1962
|
/** 远程同步路由族(git / webdav 通道、GitHub device flow、历史快照、自动同步、分区选择)。 */
|
|
1935
1963
|
const SYNC_API = {
|
|
@@ -2243,6 +2271,8 @@ function resolveFailedSections(requested, response) {
|
|
|
2243
2271
|
const LONG_OPTS = { timeoutMs: LONG_REQUEST_TIMEOUT_MS };
|
|
2244
2272
|
/** 插件自更新请求的超时:宿主侧安装上限 15 分钟,客户端留出余量(16 分钟)避免误报「请求超时」。 */
|
|
2245
2273
|
const SELF_UPDATE_OPTS = { timeoutMs: 96e4 };
|
|
2274
|
+
/** 原生目录选择器:宿主侧 10 分钟上限,这里留出传输余量。 */
|
|
2275
|
+
const NATIVE_PICK_OPTS = { timeoutMs: 66e4 };
|
|
2246
2276
|
/** query-string 辅助(跳过 undefined/空串,与 dsh-ssh 一致) */
|
|
2247
2277
|
function query(params) {
|
|
2248
2278
|
const search = new URLSearchParams();
|
|
@@ -2278,8 +2308,15 @@ var ConfigManagerApi = class {
|
|
|
2278
2308
|
exportPassword = null;
|
|
2279
2309
|
/** 客户端展示层翻译器(zh 源 / en 镜像,见 ui/i18n.ts)。 */
|
|
2280
2310
|
t;
|
|
2281
|
-
|
|
2311
|
+
/**
|
|
2312
|
+
* DSH 自带目录选择器(桌面壳全局 `__DSH_DIRECTORY_PICKER__.pick` 或客户端服务 `ctx.get('uiWorkspace').pickDirectory`),
|
|
2313
|
+
* 由 `apply(ctx)` 注入的**惰取** thunk(解析顺序见 `import/dsh-directory-pick.ts`)。
|
|
2314
|
+
* 宿主没提供该能力时保持 `undefined`。
|
|
2315
|
+
*/
|
|
2316
|
+
dshDirectoryPicker;
|
|
2317
|
+
constructor(t, dshDirectoryPicker) {
|
|
2282
2318
|
this.t = t;
|
|
2319
|
+
this.dshDirectoryPicker = dshDirectoryPicker;
|
|
2283
2320
|
}
|
|
2284
2321
|
/** 健康/版本检查(主页横幅:插件版本 / DSH 版本 / 平台) */
|
|
2285
2322
|
async status() {
|
|
@@ -2435,6 +2472,55 @@ var ConfigManagerApi = class {
|
|
|
2435
2472
|
...opts.sessionFormatDisposition !== void 0 ? { sessionFormatDisposition: opts.sessionFormatDisposition } : {}
|
|
2436
2473
|
}, this.t, LONG_OPTS);
|
|
2437
2474
|
}
|
|
2475
|
+
/**
|
|
2476
|
+
* 列出一层本机目录(只读;路径映射「选本机路径」弹窗的数据源)。
|
|
2477
|
+
* `target` 缺省或空串 = 「此电脑」根列表(Windows 盘符 / POSIX `/`)。
|
|
2478
|
+
* 失败不抛异常:宿主回 `error: 'not-found'|'denied'|'failed'|'not-absolute'`,弹窗照常可用。
|
|
2479
|
+
*/
|
|
2480
|
+
async browsePath(target) {
|
|
2481
|
+
const suffix = target === void 0 || target === "" ? "" : query({ path: target });
|
|
2482
|
+
return getJson(CONFIG_MANAGER_API.pathBrowse + suffix, this.t);
|
|
2483
|
+
}
|
|
2484
|
+
/**
|
|
2485
|
+
* 弹**系统原生**目录选择器(同一端点的 POST 形态)。
|
|
2486
|
+
*
|
|
2487
|
+
* 用户可能在系统对话框里逛几分钟,所以超时必须远大于常规请求:内核侧 10 分钟兜底,这里再加一道。
|
|
2488
|
+
* 回 `reason: 'unsupported' | 'failed'` 时调用方回落到内置目录浏览器,不当错误处理。
|
|
2489
|
+
*/
|
|
2490
|
+
async pickNativePath(startPath, title) {
|
|
2491
|
+
const body = {};
|
|
2492
|
+
if (startPath !== void 0 && startPath !== "") body.startPath = startPath;
|
|
2493
|
+
if (title !== void 0 && title !== "") body.title = title;
|
|
2494
|
+
return postJson(CONFIG_MANAGER_API.pathBrowse, body, this.t, NATIVE_PICK_OPTS);
|
|
2495
|
+
}
|
|
2496
|
+
/**
|
|
2497
|
+
* 复用 **DSH 宿主自带**的原生目录选择器(就是「选择工作区目录」那个窗口)。
|
|
2498
|
+
*
|
|
2499
|
+
* 比插件自己起系统对话框更稳:窗口由 DSH 主进程弹,跟着宿主走,不受插件宿主的进程形态限制。
|
|
2500
|
+
* 完全不设客户端超时 —— 用户可能在原生窗口里逛几分钟,宿主侧 `host.pickDirectory` 也是 caller-signal-only。
|
|
2501
|
+
* 宿主没有该能力或调用抛错一律归成 `unavailable`,由调用方回落插件自己的原生对话框,不当错误处理。
|
|
2502
|
+
*/
|
|
2503
|
+
async pickDshPath() {
|
|
2504
|
+
if (this.dshDirectoryPicker === void 0) return {
|
|
2505
|
+
ok: false,
|
|
2506
|
+
reason: "unavailable"
|
|
2507
|
+
};
|
|
2508
|
+
try {
|
|
2509
|
+
const path = await this.dshDirectoryPicker();
|
|
2510
|
+
return typeof path === "string" && path !== "" ? {
|
|
2511
|
+
ok: true,
|
|
2512
|
+
path
|
|
2513
|
+
} : {
|
|
2514
|
+
ok: false,
|
|
2515
|
+
reason: "canceled"
|
|
2516
|
+
};
|
|
2517
|
+
} catch {
|
|
2518
|
+
return {
|
|
2519
|
+
ok: false,
|
|
2520
|
+
reason: "unavailable"
|
|
2521
|
+
};
|
|
2522
|
+
}
|
|
2523
|
+
}
|
|
2438
2524
|
/** ImportPort.decryptArchive:解锁整体加密备份容器 → 明文 ZIP 路径 + 解密覆盖的凭据 ref 名 */
|
|
2439
2525
|
async decryptArchive(zipPath, password) {
|
|
2440
2526
|
return postJson(CONFIG_MANAGER_API.decryptArchive, {
|
|
@@ -8759,7 +8845,7 @@ function createLucideIcon(iconDataOrName, iconNode = [], aliases = []) {
|
|
|
8759
8845
|
* This source code is licensed under the ISC license.
|
|
8760
8846
|
* See the LICENSE file in the root directory of this source tree.
|
|
8761
8847
|
*/
|
|
8762
|
-
const __iconData$
|
|
8848
|
+
const __iconData$27 = {
|
|
8763
8849
|
name: "arrow-right",
|
|
8764
8850
|
size: 24,
|
|
8765
8851
|
node: [["path", {
|
|
@@ -8770,8 +8856,8 @@ const __iconData$25 = {
|
|
|
8770
8856
|
key: "xquz4c"
|
|
8771
8857
|
}]]
|
|
8772
8858
|
};
|
|
8773
|
-
__iconData$
|
|
8774
|
-
const ArrowRight = createLucideIcon(__iconData$
|
|
8859
|
+
__iconData$27.node;
|
|
8860
|
+
const ArrowRight = createLucideIcon(__iconData$27);
|
|
8775
8861
|
// node_modules/lucide-react/dist/esm/icons/circle-check-big.mjs
|
|
8776
8862
|
/**
|
|
8777
8863
|
* @license lucide-react v1.61.0 - ISC
|
|
@@ -8779,7 +8865,7 @@ const ArrowRight = createLucideIcon(__iconData$25);
|
|
|
8779
8865
|
* This source code is licensed under the ISC license.
|
|
8780
8866
|
* See the LICENSE file in the root directory of this source tree.
|
|
8781
8867
|
*/
|
|
8782
|
-
const __iconData$
|
|
8868
|
+
const __iconData$26 = {
|
|
8783
8869
|
name: "circle-check-big",
|
|
8784
8870
|
size: 24,
|
|
8785
8871
|
node: [["path", {
|
|
@@ -8791,8 +8877,8 @@ const __iconData$24 = {
|
|
|
8791
8877
|
}]],
|
|
8792
8878
|
aliases: ["check-circle"]
|
|
8793
8879
|
};
|
|
8794
|
-
__iconData$
|
|
8795
|
-
const CircleCheckBig = createLucideIcon(__iconData$
|
|
8880
|
+
__iconData$26.node;
|
|
8881
|
+
const CircleCheckBig = createLucideIcon(__iconData$26);
|
|
8796
8882
|
// node_modules/lucide-react/dist/esm/icons/chevron-down.mjs
|
|
8797
8883
|
/**
|
|
8798
8884
|
* @license lucide-react v1.61.0 - ISC
|
|
@@ -8800,7 +8886,7 @@ const CircleCheckBig = createLucideIcon(__iconData$24);
|
|
|
8800
8886
|
* This source code is licensed under the ISC license.
|
|
8801
8887
|
* See the LICENSE file in the root directory of this source tree.
|
|
8802
8888
|
*/
|
|
8803
|
-
const __iconData$
|
|
8889
|
+
const __iconData$25 = {
|
|
8804
8890
|
name: "chevron-down",
|
|
8805
8891
|
size: 24,
|
|
8806
8892
|
node: [["path", {
|
|
@@ -8808,8 +8894,8 @@ const __iconData$23 = {
|
|
|
8808
8894
|
key: "qrunsl"
|
|
8809
8895
|
}]]
|
|
8810
8896
|
};
|
|
8811
|
-
__iconData$
|
|
8812
|
-
const ChevronDown$1 = createLucideIcon(__iconData$
|
|
8897
|
+
__iconData$25.node;
|
|
8898
|
+
const ChevronDown$1 = createLucideIcon(__iconData$25);
|
|
8813
8899
|
// node_modules/lucide-react/dist/esm/icons/chevron-right.mjs
|
|
8814
8900
|
/**
|
|
8815
8901
|
* @license lucide-react v1.61.0 - ISC
|
|
@@ -8817,7 +8903,7 @@ const ChevronDown$1 = createLucideIcon(__iconData$23);
|
|
|
8817
8903
|
* This source code is licensed under the ISC license.
|
|
8818
8904
|
* See the LICENSE file in the root directory of this source tree.
|
|
8819
8905
|
*/
|
|
8820
|
-
const __iconData$
|
|
8906
|
+
const __iconData$24 = {
|
|
8821
8907
|
name: "chevron-right",
|
|
8822
8908
|
size: 24,
|
|
8823
8909
|
node: [["path", {
|
|
@@ -8825,8 +8911,8 @@ const __iconData$22 = {
|
|
|
8825
8911
|
key: "mthhwq"
|
|
8826
8912
|
}]]
|
|
8827
8913
|
};
|
|
8828
|
-
__iconData$
|
|
8829
|
-
const ChevronRight$1 = createLucideIcon(__iconData$
|
|
8914
|
+
__iconData$24.node;
|
|
8915
|
+
const ChevronRight$1 = createLucideIcon(__iconData$24);
|
|
8830
8916
|
// node_modules/lucide-react/dist/esm/icons/clock.mjs
|
|
8831
8917
|
/**
|
|
8832
8918
|
* @license lucide-react v1.61.0 - ISC
|
|
@@ -8834,7 +8920,7 @@ const ChevronRight$1 = createLucideIcon(__iconData$22);
|
|
|
8834
8920
|
* This source code is licensed under the ISC license.
|
|
8835
8921
|
* See the LICENSE file in the root directory of this source tree.
|
|
8836
8922
|
*/
|
|
8837
|
-
const __iconData$
|
|
8923
|
+
const __iconData$23 = {
|
|
8838
8924
|
name: "clock",
|
|
8839
8925
|
size: 24,
|
|
8840
8926
|
node: [["circle", {
|
|
@@ -8847,8 +8933,8 @@ const __iconData$21 = {
|
|
|
8847
8933
|
key: "mmk7yg"
|
|
8848
8934
|
}]]
|
|
8849
8935
|
};
|
|
8850
|
-
__iconData$
|
|
8851
|
-
const Clock = createLucideIcon(__iconData$
|
|
8936
|
+
__iconData$23.node;
|
|
8937
|
+
const Clock = createLucideIcon(__iconData$23);
|
|
8852
8938
|
// node_modules/lucide-react/dist/esm/icons/circle-alert.mjs
|
|
8853
8939
|
/**
|
|
8854
8940
|
* @license lucide-react v1.61.0 - ISC
|
|
@@ -8856,7 +8942,7 @@ const Clock = createLucideIcon(__iconData$21);
|
|
|
8856
8942
|
* This source code is licensed under the ISC license.
|
|
8857
8943
|
* See the LICENSE file in the root directory of this source tree.
|
|
8858
8944
|
*/
|
|
8859
|
-
const __iconData$
|
|
8945
|
+
const __iconData$22 = {
|
|
8860
8946
|
name: "circle-alert",
|
|
8861
8947
|
size: 24,
|
|
8862
8948
|
node: [
|
|
@@ -8883,8 +8969,8 @@ const __iconData$20 = {
|
|
|
8883
8969
|
],
|
|
8884
8970
|
aliases: ["alert-circle"]
|
|
8885
8971
|
};
|
|
8886
|
-
__iconData$
|
|
8887
|
-
const CircleAlert = createLucideIcon(__iconData$
|
|
8972
|
+
__iconData$22.node;
|
|
8973
|
+
const CircleAlert = createLucideIcon(__iconData$22);
|
|
8888
8974
|
// node_modules/lucide-react/dist/esm/icons/copy.mjs
|
|
8889
8975
|
/**
|
|
8890
8976
|
* @license lucide-react v1.61.0 - ISC
|
|
@@ -8892,7 +8978,7 @@ const CircleAlert = createLucideIcon(__iconData$20);
|
|
|
8892
8978
|
* This source code is licensed under the ISC license.
|
|
8893
8979
|
* See the LICENSE file in the root directory of this source tree.
|
|
8894
8980
|
*/
|
|
8895
|
-
const __iconData$
|
|
8981
|
+
const __iconData$21 = {
|
|
8896
8982
|
name: "copy",
|
|
8897
8983
|
size: 24,
|
|
8898
8984
|
node: [["rect", {
|
|
@@ -8908,8 +8994,8 @@ const __iconData$19 = {
|
|
|
8908
8994
|
key: "zix9uf"
|
|
8909
8995
|
}]]
|
|
8910
8996
|
};
|
|
8911
|
-
__iconData$
|
|
8912
|
-
const Copy = createLucideIcon(__iconData$
|
|
8997
|
+
__iconData$21.node;
|
|
8998
|
+
const Copy = createLucideIcon(__iconData$21);
|
|
8913
8999
|
// node_modules/lucide-react/dist/esm/icons/database-backup.mjs
|
|
8914
9000
|
/**
|
|
8915
9001
|
* @license lucide-react v1.61.0 - ISC
|
|
@@ -8917,7 +9003,7 @@ const Copy = createLucideIcon(__iconData$19);
|
|
|
8917
9003
|
* This source code is licensed under the ISC license.
|
|
8918
9004
|
* See the LICENSE file in the root directory of this source tree.
|
|
8919
9005
|
*/
|
|
8920
|
-
const __iconData$
|
|
9006
|
+
const __iconData$20 = {
|
|
8921
9007
|
name: "database-backup",
|
|
8922
9008
|
size: 24,
|
|
8923
9009
|
node: [
|
|
@@ -8950,8 +9036,8 @@ const __iconData$18 = {
|
|
|
8950
9036
|
}]
|
|
8951
9037
|
]
|
|
8952
9038
|
};
|
|
8953
|
-
__iconData$
|
|
8954
|
-
const DatabaseBackup = createLucideIcon(__iconData$
|
|
9039
|
+
__iconData$20.node;
|
|
9040
|
+
const DatabaseBackup = createLucideIcon(__iconData$20);
|
|
8955
9041
|
// node_modules/lucide-react/dist/esm/icons/download.mjs
|
|
8956
9042
|
/**
|
|
8957
9043
|
* @license lucide-react v1.61.0 - ISC
|
|
@@ -8959,7 +9045,7 @@ const DatabaseBackup = createLucideIcon(__iconData$18);
|
|
|
8959
9045
|
* This source code is licensed under the ISC license.
|
|
8960
9046
|
* See the LICENSE file in the root directory of this source tree.
|
|
8961
9047
|
*/
|
|
8962
|
-
const __iconData$
|
|
9048
|
+
const __iconData$19 = {
|
|
8963
9049
|
name: "download",
|
|
8964
9050
|
size: 24,
|
|
8965
9051
|
node: [
|
|
@@ -8977,8 +9063,8 @@ const __iconData$17 = {
|
|
|
8977
9063
|
}]
|
|
8978
9064
|
]
|
|
8979
9065
|
};
|
|
8980
|
-
__iconData$
|
|
8981
|
-
const Download = createLucideIcon(__iconData$
|
|
9066
|
+
__iconData$19.node;
|
|
9067
|
+
const Download = createLucideIcon(__iconData$19);
|
|
8982
9068
|
// node_modules/lucide-react/dist/esm/icons/eye.mjs
|
|
8983
9069
|
/**
|
|
8984
9070
|
* @license lucide-react v1.61.0 - ISC
|
|
@@ -8986,7 +9072,7 @@ const Download = createLucideIcon(__iconData$17);
|
|
|
8986
9072
|
* This source code is licensed under the ISC license.
|
|
8987
9073
|
* See the LICENSE file in the root directory of this source tree.
|
|
8988
9074
|
*/
|
|
8989
|
-
const __iconData$
|
|
9075
|
+
const __iconData$18 = {
|
|
8990
9076
|
name: "eye",
|
|
8991
9077
|
size: 24,
|
|
8992
9078
|
node: [["path", {
|
|
@@ -8999,8 +9085,8 @@ const __iconData$16 = {
|
|
|
8999
9085
|
key: "1v7zrd"
|
|
9000
9086
|
}]]
|
|
9001
9087
|
};
|
|
9002
|
-
__iconData$
|
|
9003
|
-
const Eye = createLucideIcon(__iconData$
|
|
9088
|
+
__iconData$18.node;
|
|
9089
|
+
const Eye = createLucideIcon(__iconData$18);
|
|
9004
9090
|
// node_modules/lucide-react/dist/esm/icons/file.mjs
|
|
9005
9091
|
/**
|
|
9006
9092
|
* @license lucide-react v1.61.0 - ISC
|
|
@@ -9008,7 +9094,7 @@ const Eye = createLucideIcon(__iconData$16);
|
|
|
9008
9094
|
* This source code is licensed under the ISC license.
|
|
9009
9095
|
* See the LICENSE file in the root directory of this source tree.
|
|
9010
9096
|
*/
|
|
9011
|
-
const __iconData$
|
|
9097
|
+
const __iconData$17 = {
|
|
9012
9098
|
name: "file",
|
|
9013
9099
|
size: 24,
|
|
9014
9100
|
node: [["path", {
|
|
@@ -9019,8 +9105,25 @@ const __iconData$15 = {
|
|
|
9019
9105
|
key: "wfsgrz"
|
|
9020
9106
|
}]]
|
|
9021
9107
|
};
|
|
9022
|
-
__iconData$
|
|
9023
|
-
const File = createLucideIcon(__iconData$
|
|
9108
|
+
__iconData$17.node;
|
|
9109
|
+
const File = createLucideIcon(__iconData$17);
|
|
9110
|
+
// node_modules/lucide-react/dist/esm/icons/folder.mjs
|
|
9111
|
+
/**
|
|
9112
|
+
* @license lucide-react v1.61.0 - ISC
|
|
9113
|
+
*
|
|
9114
|
+
* This source code is licensed under the ISC license.
|
|
9115
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
9116
|
+
*/
|
|
9117
|
+
const __iconData$16 = {
|
|
9118
|
+
name: "folder",
|
|
9119
|
+
size: 24,
|
|
9120
|
+
node: [["path", {
|
|
9121
|
+
d: "M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",
|
|
9122
|
+
key: "1kt360"
|
|
9123
|
+
}]]
|
|
9124
|
+
};
|
|
9125
|
+
__iconData$16.node;
|
|
9126
|
+
const Folder = createLucideIcon(__iconData$16);
|
|
9024
9127
|
// node_modules/lucide-react/dist/esm/icons/folder-input.mjs
|
|
9025
9128
|
/**
|
|
9026
9129
|
* @license lucide-react v1.61.0 - ISC
|
|
@@ -9028,7 +9131,7 @@ const File = createLucideIcon(__iconData$15);
|
|
|
9028
9131
|
* This source code is licensed under the ISC license.
|
|
9029
9132
|
* See the LICENSE file in the root directory of this source tree.
|
|
9030
9133
|
*/
|
|
9031
|
-
const __iconData$
|
|
9134
|
+
const __iconData$15 = {
|
|
9032
9135
|
name: "folder-input",
|
|
9033
9136
|
size: 24,
|
|
9034
9137
|
node: [
|
|
@@ -9046,8 +9149,25 @@ const __iconData$14 = {
|
|
|
9046
9149
|
}]
|
|
9047
9150
|
]
|
|
9048
9151
|
};
|
|
9152
|
+
__iconData$15.node;
|
|
9153
|
+
const FolderInput = createLucideIcon(__iconData$15);
|
|
9154
|
+
// node_modules/lucide-react/dist/esm/icons/folder-open.mjs
|
|
9155
|
+
/**
|
|
9156
|
+
* @license lucide-react v1.61.0 - ISC
|
|
9157
|
+
*
|
|
9158
|
+
* This source code is licensed under the ISC license.
|
|
9159
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
9160
|
+
*/
|
|
9161
|
+
const __iconData$14 = {
|
|
9162
|
+
name: "folder-open",
|
|
9163
|
+
size: 24,
|
|
9164
|
+
node: [["path", {
|
|
9165
|
+
d: "m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",
|
|
9166
|
+
key: "usdka0"
|
|
9167
|
+
}]]
|
|
9168
|
+
};
|
|
9049
9169
|
__iconData$14.node;
|
|
9050
|
-
const
|
|
9170
|
+
const FolderOpen = createLucideIcon(__iconData$14);
|
|
9051
9171
|
// node_modules/lucide-react/dist/esm/icons/hard-drive-download.mjs
|
|
9052
9172
|
/**
|
|
9053
9173
|
* @license lucide-react v1.61.0 - ISC
|
|
@@ -9425,8 +9545,86 @@ const __iconData = {
|
|
|
9425
9545
|
};
|
|
9426
9546
|
__iconData.node;
|
|
9427
9547
|
const X = createLucideIcon(__iconData);
|
|
9548
|
+
// node_modules/morphicons/dist/spring-B_P92nf6.js
|
|
9549
|
+
/** Preallocated output buffers for a plan (zero allocation per frame). */
|
|
9550
|
+
function allocOutputs(plan) {
|
|
9551
|
+
return plan.items.map(() => new Float64Array(2 * plan.n));
|
|
9552
|
+
}
|
|
9553
|
+
function interpPolar(plan, t, out) {
|
|
9554
|
+
for (let k = 0; k < plan.items.length; k++) {
|
|
9555
|
+
const it = plan.items[k];
|
|
9556
|
+
const o = out[k];
|
|
9557
|
+
const n = plan.n;
|
|
9558
|
+
const s = Math.exp(it.lnSigma * t);
|
|
9559
|
+
const ang = it.theta * t;
|
|
9560
|
+
const cos = Math.cos(ang) * s;
|
|
9561
|
+
const sin = Math.sin(ang) * s;
|
|
9562
|
+
let cx;
|
|
9563
|
+
let cy;
|
|
9564
|
+
if (it.block) {
|
|
9565
|
+
const [ox, oy] = it.block.off;
|
|
9566
|
+
const [dx, dy] = it.block.drift;
|
|
9567
|
+
cx = it.ca[0] + dx * t + (ox * cos - oy * sin - ox);
|
|
9568
|
+
cy = it.ca[1] + dy * t + (ox * sin + oy * cos - oy);
|
|
9569
|
+
} else {
|
|
9570
|
+
cx = it.ca[0] + (it.cb[0] - it.ca[0]) * t;
|
|
9571
|
+
cy = it.ca[1] + (it.cb[1] - it.ca[1]) * t;
|
|
9572
|
+
}
|
|
9573
|
+
const m = it.half === void 0 ? t : Math.min(1, Math.max(0, 2 * t - it.half));
|
|
9574
|
+
for (let i = 0; i < n; i++) {
|
|
9575
|
+
const px = it.aC[2 * i] + (it.bT[2 * i] - it.aC[2 * i]) * m;
|
|
9576
|
+
const py = it.aC[2 * i + 1] + (it.bT[2 * i + 1] - it.aC[2 * i + 1]) * m;
|
|
9577
|
+
o[2 * i] = cx + px * cos - py * sin;
|
|
9578
|
+
o[2 * i + 1] = cy + px * sin + py * cos;
|
|
9579
|
+
}
|
|
9580
|
+
}
|
|
9581
|
+
}
|
|
9582
|
+
var Spring = class {
|
|
9583
|
+
x = 1;
|
|
9584
|
+
v = 0;
|
|
9585
|
+
k = 250;
|
|
9586
|
+
c = 24;
|
|
9587
|
+
config(k, c) {
|
|
9588
|
+
this.k = k;
|
|
9589
|
+
this.c = c;
|
|
9590
|
+
}
|
|
9591
|
+
/** Starts (or restarts mid-flight) preserving velocity. */
|
|
9592
|
+
start() {
|
|
9593
|
+
this.x = 0;
|
|
9594
|
+
if (this.v > 14) this.v = 14;
|
|
9595
|
+
if (this.v < -14) this.v = -14;
|
|
9596
|
+
}
|
|
9597
|
+
/** Advances dt seconds. Returns true on settle (|1−x| < 0.001 ∧ |v| < 0.02). */
|
|
9598
|
+
step(dt) {
|
|
9599
|
+
const steps = Math.max(1, Math.min(16, Math.ceil(dt / (1 / 240))));
|
|
9600
|
+
const s = dt / steps;
|
|
9601
|
+
for (let i = 0; i < steps; i++) {
|
|
9602
|
+
const a = this.k * (1 - this.x) - this.c * this.v;
|
|
9603
|
+
this.v += a * s;
|
|
9604
|
+
this.x += this.v * s;
|
|
9605
|
+
}
|
|
9606
|
+
return Math.abs(1 - this.x) < .001 && Math.abs(this.v) < .02;
|
|
9607
|
+
}
|
|
9608
|
+
};
|
|
9609
|
+
/** Spring presets (ζ = c/(2√k)) with the API's public names. */
|
|
9610
|
+
const SPRING_PRESETS = {
|
|
9611
|
+
/** ζ = 1.00 — critically damped, no overshoot. */
|
|
9612
|
+
smooth: {
|
|
9613
|
+
k: 170,
|
|
9614
|
+
c: 26
|
|
9615
|
+
},
|
|
9616
|
+
/** ζ = 0.73 — fast, subtle overshoot. */
|
|
9617
|
+
snappy: {
|
|
9618
|
+
k: 420,
|
|
9619
|
+
c: 30
|
|
9620
|
+
},
|
|
9621
|
+
/** ζ = 0.40 — playful. */
|
|
9622
|
+
bouncy: {
|
|
9623
|
+
k: 300,
|
|
9624
|
+
c: 14
|
|
9625
|
+
}
|
|
9626
|
+
};
|
|
9428
9627
|
// node_modules/morphicons/dist/normalize-CYnN3Npw.js
|
|
9429
|
-
const COMMANDS = "MmLlHhVvCcSsQqTtAaZz";
|
|
9430
9628
|
function parsePath(d) {
|
|
9431
9629
|
const subs = [];
|
|
9432
9630
|
const n = d.length;
|
|
@@ -9668,7 +9866,7 @@ function parsePath(d) {
|
|
|
9668
9866
|
}
|
|
9669
9867
|
return subs.filter((s) => s.segs.length > 0);
|
|
9670
9868
|
}
|
|
9671
|
-
function fmt(v) {
|
|
9869
|
+
function fmt$1(v) {
|
|
9672
9870
|
return String(Math.round(v * 100) / 100);
|
|
9673
9871
|
}
|
|
9674
9872
|
/** Sampled subpaths → polyline `d` attribute. `closed[k]` appends Z to
|
|
@@ -9678,8 +9876,8 @@ function serialize(subs, closed) {
|
|
|
9678
9876
|
for (let k = 0; k < subs.length; k++) {
|
|
9679
9877
|
const o = subs[k];
|
|
9680
9878
|
const n = o.length / 2;
|
|
9681
|
-
d += `M${fmt(o[0])} ${fmt(o[1])}`;
|
|
9682
|
-
for (let i = 1; i < n; i++) d += `L${fmt(o[2 * i])} ${fmt(o[2 * i + 1])}`;
|
|
9879
|
+
d += `M${fmt$1(o[0])} ${fmt$1(o[1])}`;
|
|
9880
|
+
for (let i = 1; i < n; i++) d += `L${fmt$1(o[2 * i])} ${fmt$1(o[2 * i + 1])}`;
|
|
9683
9881
|
if (closed?.[k]) d += "Z";
|
|
9684
9882
|
}
|
|
9685
9883
|
return d;
|
|
@@ -9698,9 +9896,6 @@ function cubicsToPathD(paths) {
|
|
|
9698
9896
|
}
|
|
9699
9897
|
return d;
|
|
9700
9898
|
}
|
|
9701
|
-
/** Control-point offset for a quarter circle: (4/3)·tan(π/8) ≈ 0.5523. */
|
|
9702
|
-
const KAPPA = 4 / 3 * Math.tan(Math.PI / 8);
|
|
9703
|
-
const TAU = 2 * Math.PI;
|
|
9704
9899
|
function builder(x0, y0) {
|
|
9705
9900
|
const pts = [x0, y0];
|
|
9706
9901
|
let cx = x0;
|
|
@@ -9923,52 +10118,13 @@ function iconToCubics(input) {
|
|
|
9923
10118
|
}
|
|
9924
10119
|
return out;
|
|
9925
10120
|
}
|
|
9926
|
-
|
|
9927
|
-
|
|
9928
|
-
|
|
9929
|
-
|
|
9930
|
-
|
|
9931
|
-
|
|
9932
|
-
|
|
9933
|
-
const it = plan.items[k];
|
|
9934
|
-
const o = out[k];
|
|
9935
|
-
const n = plan.n;
|
|
9936
|
-
const s = Math.exp(it.lnSigma * t);
|
|
9937
|
-
const ang = it.theta * t;
|
|
9938
|
-
const cos = Math.cos(ang) * s;
|
|
9939
|
-
const sin = Math.sin(ang) * s;
|
|
9940
|
-
let cx;
|
|
9941
|
-
let cy;
|
|
9942
|
-
if (it.block) {
|
|
9943
|
-
const [ox, oy] = it.block.off;
|
|
9944
|
-
const [dx, dy] = it.block.drift;
|
|
9945
|
-
cx = it.ca[0] + dx * t + (ox * cos - oy * sin - ox);
|
|
9946
|
-
cy = it.ca[1] + dy * t + (ox * sin + oy * cos - oy);
|
|
9947
|
-
} else {
|
|
9948
|
-
cx = it.ca[0] + (it.cb[0] - it.ca[0]) * t;
|
|
9949
|
-
cy = it.ca[1] + (it.cb[1] - it.ca[1]) * t;
|
|
9950
|
-
}
|
|
9951
|
-
for (let i = 0; i < n; i++) {
|
|
9952
|
-
const px = it.aC[2 * i] + (it.bT[2 * i] - it.aC[2 * i]) * t;
|
|
9953
|
-
const py = it.aC[2 * i + 1] + (it.bT[2 * i + 1] - it.aC[2 * i + 1]) * t;
|
|
9954
|
-
o[2 * i] = cx + px * cos - py * sin;
|
|
9955
|
-
o[2 * i + 1] = cy + px * sin + py * cos;
|
|
9956
|
-
}
|
|
9957
|
-
}
|
|
9958
|
-
}
|
|
9959
|
-
/** Weight of |ΔL| in the subpath pairing cost. */
|
|
9960
|
-
const LEN_WEIGHT = .35;
|
|
9961
|
-
/** λ of the minimal-rotation tie-break: score = res + λ·|θ|/π.
|
|
9962
|
-
* It exists because shapes symmetric under inversion (lines) tie in
|
|
9963
|
-
* residual for both traversal orientations yet produce different rotations. */
|
|
9964
|
-
const LAMBDA = .05;
|
|
9965
|
-
/** Global residual below which the whole icon counts as congruent and the
|
|
9966
|
-
* plan shares (θ, σ) across all items (hybrid variant of Procrustes). */
|
|
9967
|
-
const GLOBAL_EPS = .005;
|
|
9968
|
-
/** Bounds for exhaustive matching; above them it falls back to greedy with
|
|
9969
|
-
* repair. 8! = 40 320 permutations / 1e5 assignments — both sub-ms. */
|
|
9970
|
-
const PERM_MAX = 8;
|
|
9971
|
-
const SURJ_MAX = 1e5;
|
|
10121
|
+
var COMMANDS, KAPPA, TAU;
|
|
10122
|
+
var init_normalize_CYnN3Npw = __esmMin((() => {
|
|
10123
|
+
COMMANDS = "MmLlHhVvCcSsQqTtAaZz";
|
|
10124
|
+
KAPPA = 4 / 3 * Math.tan(Math.PI / 8);
|
|
10125
|
+
TAU = 2 * Math.PI;
|
|
10126
|
+
}));
|
|
10127
|
+
// node_modules/morphicons/dist/resample-CXlaZ5ZQ.js
|
|
9972
10128
|
function centroid(p) {
|
|
9973
10129
|
const n = p.length / 2;
|
|
9974
10130
|
let cx = 0;
|
|
@@ -10046,7 +10202,7 @@ function procrustes(a, b, ca, cb) {
|
|
|
10046
10202
|
* scoring with score = res + λ·|θ|/π. The freedom is applied to ONE cloud
|
|
10047
10203
|
* — the closed one (b if both are); varying both at once would be
|
|
10048
10204
|
* redundant. */
|
|
10049
|
-
function alignPair(aPts, bPts, aClosed = false, bClosed = false) {
|
|
10205
|
+
function alignPair(aPts, bPts, aClosed = false, bClosed = false, allowReverse = true, lambda = LAMBDA) {
|
|
10050
10206
|
const ca = centroid(aPts);
|
|
10051
10207
|
const cb = centroid(bPts);
|
|
10052
10208
|
const varyA = aClosed && !bClosed;
|
|
@@ -10059,12 +10215,12 @@ function alignPair(aPts, bPts, aClosed = false, bClosed = false) {
|
|
|
10059
10215
|
sigma: 1,
|
|
10060
10216
|
res: 0
|
|
10061
10217
|
};
|
|
10062
|
-
for (let dir = 0; dir < 2; dir++) {
|
|
10218
|
+
for (let dir = 0; dir < (allowReverse ? 2 : 1); dir++) {
|
|
10063
10219
|
const walk = dir ? reversePts(base) : base;
|
|
10064
10220
|
for (let off = 0; off < offs; off++) {
|
|
10065
10221
|
const cand = off ? rotatePts(walk, off) : walk;
|
|
10066
10222
|
const s = varyA ? procrustes(cand, bPts, ca, cb) : procrustes(aPts, cand, ca, cb);
|
|
10067
|
-
const score = s.res +
|
|
10223
|
+
const score = s.res + lambda * Math.abs(s.theta) / Math.PI;
|
|
10068
10224
|
if (score < bestScore) {
|
|
10069
10225
|
bestScore = score;
|
|
10070
10226
|
best = cand;
|
|
@@ -10135,7 +10291,7 @@ function bestPermutation(C) {
|
|
|
10135
10291
|
function bestSurjection(C) {
|
|
10136
10292
|
const B = C.length;
|
|
10137
10293
|
const S = C[0].length;
|
|
10138
|
-
if (S ** B >
|
|
10294
|
+
if (S ** B > 1e5) {
|
|
10139
10295
|
const f = C.map((row) => {
|
|
10140
10296
|
let m = 0;
|
|
10141
10297
|
for (let j = 1; j < row.length; j++) if (row[j] < row[m]) m = j;
|
|
@@ -10227,15 +10383,9 @@ function applyGlobal(items, n) {
|
|
|
10227
10383
|
};
|
|
10228
10384
|
}
|
|
10229
10385
|
}
|
|
10230
|
-
|
|
10231
|
-
|
|
10232
|
-
|
|
10233
|
-
function buildPlan(srcSubs, dstSubs) {
|
|
10234
|
-
const p = srcSubs.length;
|
|
10235
|
-
const q = dstSubs.length;
|
|
10236
|
-
if (p === 0 || q === 0) throw new Error("morphicons: icon has no subpaths");
|
|
10237
|
-
const A = srcSubs.map((s) => s.pts);
|
|
10238
|
-
const B = dstSubs.map((s) => s.pts);
|
|
10386
|
+
function pairUp(A, B) {
|
|
10387
|
+
const p = A.length;
|
|
10388
|
+
const q = B.length;
|
|
10239
10389
|
const pairs = [];
|
|
10240
10390
|
if (p === q) {
|
|
10241
10391
|
const perm = bestPermutation(costMatrix(A, B));
|
|
@@ -10247,59 +10397,58 @@ function buildPlan(srcSubs, dstSubs) {
|
|
|
10247
10397
|
const f = bestSurjection(costMatrix(A, B));
|
|
10248
10398
|
for (let i = 0; i < p; i++) pairs.push([i, f[i]]);
|
|
10249
10399
|
}
|
|
10250
|
-
|
|
10251
|
-
|
|
10252
|
-
|
|
10253
|
-
|
|
10254
|
-
|
|
10255
|
-
|
|
10256
|
-
|
|
10257
|
-
|
|
10258
|
-
|
|
10259
|
-
|
|
10260
|
-
|
|
10261
|
-
|
|
10262
|
-
|
|
10263
|
-
|
|
10264
|
-
|
|
10265
|
-
|
|
10266
|
-
|
|
10267
|
-
|
|
10268
|
-
|
|
10269
|
-
|
|
10270
|
-
|
|
10271
|
-
|
|
10272
|
-
|
|
10273
|
-
|
|
10274
|
-
|
|
10275
|
-
|
|
10276
|
-
|
|
10277
|
-
|
|
10278
|
-
|
|
10279
|
-
|
|
10280
|
-
|
|
10281
|
-
|
|
10282
|
-
|
|
10283
|
-
|
|
10400
|
+
return pairs;
|
|
10401
|
+
}
|
|
10402
|
+
function makeItem(aPts, bPts, aClosed, bClosed, allowReverse, lambda) {
|
|
10403
|
+
const n = aPts.length / 2;
|
|
10404
|
+
const al = alignPair(aPts, bPts, aClosed, bClosed, allowReverse, lambda);
|
|
10405
|
+
const a = al.a;
|
|
10406
|
+
const aC = new Float64Array(2 * n);
|
|
10407
|
+
const bT = new Float64Array(2 * n);
|
|
10408
|
+
const bO = new Float64Array(2 * n);
|
|
10409
|
+
const cos = Math.cos(-al.theta);
|
|
10410
|
+
const sin = Math.sin(-al.theta);
|
|
10411
|
+
for (let i = 0; i < n; i++) {
|
|
10412
|
+
aC[2 * i] = a[2 * i] - al.ca[0];
|
|
10413
|
+
aC[2 * i + 1] = a[2 * i + 1] - al.ca[1];
|
|
10414
|
+
const bx = al.b[2 * i] - al.cb[0];
|
|
10415
|
+
const by = al.b[2 * i + 1] - al.cb[1];
|
|
10416
|
+
bT[2 * i] = (bx * cos - by * sin) / al.sigma;
|
|
10417
|
+
bT[2 * i + 1] = (bx * sin + by * cos) / al.sigma;
|
|
10418
|
+
bO[2 * i] = al.b[2 * i];
|
|
10419
|
+
bO[2 * i + 1] = al.b[2 * i + 1];
|
|
10420
|
+
}
|
|
10421
|
+
return {
|
|
10422
|
+
a,
|
|
10423
|
+
aC,
|
|
10424
|
+
bT,
|
|
10425
|
+
bO,
|
|
10426
|
+
ca: al.ca,
|
|
10427
|
+
cb: al.cb,
|
|
10428
|
+
theta: al.theta,
|
|
10429
|
+
lnSigma: Math.log(al.sigma),
|
|
10430
|
+
res: al.res,
|
|
10431
|
+
closed: aClosed && bClosed,
|
|
10432
|
+
block: null
|
|
10433
|
+
};
|
|
10434
|
+
}
|
|
10435
|
+
/** Builds the morph plan between two lists of sampled subpaths. The plan is
|
|
10436
|
+
* cacheable and serializable; it accepts any list — including intermediate
|
|
10437
|
+
* shapes (interruptions). Filled regions use buildRegionPlan (lazy chunk,
|
|
10438
|
+
* src/region/plan.ts) instead. */
|
|
10439
|
+
function buildPlan(srcSubs, dstSubs) {
|
|
10440
|
+
const p = srcSubs.length;
|
|
10441
|
+
const q = dstSubs.length;
|
|
10442
|
+
if (p === 0 || q === 0) throw new Error("morphicons: icon has no subpaths");
|
|
10443
|
+
const A = srcSubs.map((s) => s.pts);
|
|
10444
|
+
const B = dstSubs.map((s) => s.pts);
|
|
10445
|
+
const items = pairUp(A, B).map(([si, di]) => makeItem(A[si], B[di], srcSubs[si].closed, dstSubs[di].closed, true));
|
|
10446
|
+
if (items.length > 1) applyGlobal(items, A[0].length / 2);
|
|
10284
10447
|
return {
|
|
10285
10448
|
items,
|
|
10286
|
-
n
|
|
10449
|
+
n: A[0].length / 2
|
|
10287
10450
|
};
|
|
10288
10451
|
}
|
|
10289
|
-
/** Default angular threshold for a segment joint to count as a corner. */
|
|
10290
|
-
const CORNER_THRESHOLD = Math.PI / 8;
|
|
10291
|
-
const GX = [
|
|
10292
|
-
.18343464249564978,
|
|
10293
|
-
.525532409916329,
|
|
10294
|
-
.7966664774136267,
|
|
10295
|
-
.9602898564975363
|
|
10296
|
-
];
|
|
10297
|
-
const GW = [
|
|
10298
|
-
.362683783378362,
|
|
10299
|
-
.31370664587788727,
|
|
10300
|
-
.22238103445337448,
|
|
10301
|
-
.10122853629037626
|
|
10302
|
-
];
|
|
10303
10452
|
function speed(p, k, t) {
|
|
10304
10453
|
const i = 6 * k;
|
|
10305
10454
|
const u = 1 - t;
|
|
@@ -10480,52 +10629,914 @@ function resampleIcon(input, N = 64) {
|
|
|
10480
10629
|
closed: path.closed
|
|
10481
10630
|
}));
|
|
10482
10631
|
}
|
|
10483
|
-
var
|
|
10484
|
-
|
|
10485
|
-
|
|
10486
|
-
|
|
10487
|
-
|
|
10488
|
-
|
|
10489
|
-
|
|
10490
|
-
|
|
10632
|
+
var LEN_WEIGHT, LAMBDA, GLOBAL_EPS, PERM_MAX, CORNER_THRESHOLD, GX, GW;
|
|
10633
|
+
var init_resample_CXlaZ5ZQ = __esmMin((() => {
|
|
10634
|
+
init_normalize_CYnN3Npw();
|
|
10635
|
+
LEN_WEIGHT = .35;
|
|
10636
|
+
LAMBDA = .05;
|
|
10637
|
+
GLOBAL_EPS = .005;
|
|
10638
|
+
PERM_MAX = 8;
|
|
10639
|
+
CORNER_THRESHOLD = Math.PI / 8;
|
|
10640
|
+
GX = [
|
|
10641
|
+
.18343464249564978,
|
|
10642
|
+
.525532409916329,
|
|
10643
|
+
.7966664774136267,
|
|
10644
|
+
.9602898564975363
|
|
10645
|
+
];
|
|
10646
|
+
GW = [
|
|
10647
|
+
.362683783378362,
|
|
10648
|
+
.31370664587788727,
|
|
10649
|
+
.22238103445337448,
|
|
10650
|
+
.10122853629037626
|
|
10651
|
+
];
|
|
10652
|
+
}));
|
|
10653
|
+
// node_modules/morphicons/dist/region-BjECuWZR.js
|
|
10654
|
+
/** Paint of an icon. Raw `d` strings and IconNodes that never declare a
|
|
10655
|
+
* painted fill are stroke icons — the historical contract, so every
|
|
10656
|
+
* existing input keeps its meaning. One element with a painted `fill` makes
|
|
10657
|
+
* the whole icon a fill icon (mixed stroke+fill icons need the region path
|
|
10658
|
+
* too: their silhouette is not a set of centerlines). */
|
|
10659
|
+
function paintOf(icon) {
|
|
10660
|
+
if (typeof icon === "string") return "stroke";
|
|
10661
|
+
for (const [, a] of icon) if (painted$1(a.fill)) return "fill";
|
|
10662
|
+
return "stroke";
|
|
10663
|
+
}
|
|
10664
|
+
/** The elements a fill icon actually draws: its translucent layers out. */
|
|
10665
|
+
function solid(icon) {
|
|
10666
|
+
return typeof icon === "string" || paintOf(icon) === "stroke" ? icon : icon.filter(([, a]) => !translucent(a));
|
|
10667
|
+
}
|
|
10668
|
+
/** True when the icon is already a normalized region (no work left). */
|
|
10669
|
+
function isRegion(icon) {
|
|
10670
|
+
return typeof icon !== "string" && icon.length === 1 && "data-region" in icon[0][1];
|
|
10671
|
+
}
|
|
10672
|
+
/** Even-odd point-in-polygon against a closed point cloud. */
|
|
10673
|
+
function inside(px, py, p) {
|
|
10674
|
+
const n = p.length / 2;
|
|
10675
|
+
let c = false;
|
|
10676
|
+
for (let i = 0, j = n - 1; i < n; j = i++) {
|
|
10677
|
+
const yi = p[2 * i + 1];
|
|
10678
|
+
const yj = p[2 * j + 1];
|
|
10679
|
+
if (yi > py !== yj > py && px < (p[2 * j] - p[2 * i]) * (py - yi) / (yj - yi) + p[2 * i]) c = !c;
|
|
10680
|
+
}
|
|
10681
|
+
return c;
|
|
10682
|
+
}
|
|
10683
|
+
/** Distance from (px, py) to the segment ab. */
|
|
10684
|
+
function distSeg(px, py, ax, ay, bx, by) {
|
|
10685
|
+
const dx = bx - ax;
|
|
10686
|
+
const dy = by - ay;
|
|
10687
|
+
const l2 = dx * dx + dy * dy;
|
|
10688
|
+
let t = l2 > 0 ? ((px - ax) * dx + (py - ay) * dy) / l2 : 0;
|
|
10689
|
+
t = t < 0 ? 0 : t > 1 ? 1 : t;
|
|
10690
|
+
const ex = px - ax - t * dx;
|
|
10691
|
+
const ey = py - ay - t * dy;
|
|
10692
|
+
return Math.sqrt(ex * ex + ey * ey);
|
|
10693
|
+
}
|
|
10694
|
+
/** Shoelace signed area of a closed point cloud (SVG axes: y down). */
|
|
10695
|
+
function signedArea(p) {
|
|
10696
|
+
const n = p.length / 2;
|
|
10697
|
+
let a = 0;
|
|
10698
|
+
for (let i = 0, j = n - 1; i < n; j = i++) a += p[2 * j] * p[2 * i + 1] - p[2 * i] * p[2 * j + 1];
|
|
10699
|
+
return a / 2;
|
|
10700
|
+
}
|
|
10701
|
+
var REGION_ATTR, painted$1, translucent;
|
|
10702
|
+
var init_region_BjECuWZR = __esmMin((() => {
|
|
10703
|
+
REGION_ATTR = "data-region";
|
|
10704
|
+
painted$1 = (v) => v !== void 0 && String(v).trim().toLowerCase() !== "none";
|
|
10705
|
+
translucent = (a) => Number.parseFloat(String(a.opacity)) < .5 || Number.parseFloat(String(a["fill-opacity"])) < .5;
|
|
10706
|
+
}));
|
|
10707
|
+
// node_modules/morphicons/dist/region.js
|
|
10708
|
+
var region_exports = /* @__PURE__ */ __exportAll({
|
|
10709
|
+
buildRegionPlan: () => buildRegionPlan,
|
|
10710
|
+
isRegion: () => isRegion,
|
|
10711
|
+
paintOf: () => paintOf,
|
|
10712
|
+
regionContours: () => regionContours,
|
|
10713
|
+
regionOf: () => regionOf,
|
|
10714
|
+
regionPlan: () => regionPlan,
|
|
10715
|
+
regionPlanFrom: () => regionPlanFrom,
|
|
10716
|
+
resampleRegion: () => resampleRegion,
|
|
10717
|
+
toRegion: () => toRegion
|
|
10718
|
+
});
|
|
10719
|
+
function coarse(path, s) {
|
|
10720
|
+
const n = s.length / 2;
|
|
10721
|
+
let j = 0;
|
|
10722
|
+
for (let v = 0; v < path.length; v += 6) for (let k = 0;; k++) {
|
|
10723
|
+
if (k === n) return true;
|
|
10724
|
+
const a = (j + k) % n;
|
|
10725
|
+
const b = (a + 1) % n;
|
|
10726
|
+
if (distSeg(path[v], path[v + 1], s[2 * a], s[2 * a + 1], s[2 * b], s[2 * b + 1]) <= FINE) {
|
|
10727
|
+
j = a;
|
|
10728
|
+
break;
|
|
10729
|
+
}
|
|
10491
10730
|
}
|
|
10492
|
-
|
|
10493
|
-
|
|
10494
|
-
|
|
10495
|
-
|
|
10496
|
-
|
|
10731
|
+
return false;
|
|
10732
|
+
}
|
|
10733
|
+
/** Samples a normalized region: one Sampled per contour, every one closed,
|
|
10734
|
+
* `hole` read from the winding (outers positive, holes negative). N per
|
|
10735
|
+
* contour: 64, or 128 for every contour of an icon that 64 can't follow
|
|
10736
|
+
* (snowflake tips, spiral turns: the landing would snap). */
|
|
10737
|
+
function resampleRegion(icon, N) {
|
|
10738
|
+
const paths = iconToCubics(icon);
|
|
10739
|
+
const at = (n) => paths.map((path) => {
|
|
10740
|
+
let pts;
|
|
10741
|
+
for (const th of REGION_THRESHOLDS) try {
|
|
10742
|
+
pts = resamplePath({
|
|
10743
|
+
pts: path.pts,
|
|
10744
|
+
closed: true
|
|
10745
|
+
}, n, th);
|
|
10746
|
+
break;
|
|
10747
|
+
} catch {}
|
|
10748
|
+
const s = pts;
|
|
10749
|
+
return {
|
|
10750
|
+
pts: s,
|
|
10751
|
+
closed: true,
|
|
10752
|
+
hole: signedArea(s) < 0
|
|
10753
|
+
};
|
|
10754
|
+
});
|
|
10755
|
+
const s = at(N ?? 64);
|
|
10756
|
+
return N || !paths.some((p, k) => coarse(p.pts, s[k].pts)) ? s : at(128);
|
|
10757
|
+
}
|
|
10758
|
+
function folds(a, b) {
|
|
10759
|
+
const L = a.length;
|
|
10760
|
+
const p = new Float64Array(L);
|
|
10761
|
+
for (let i = 0; i < L; i++) p[i] = (a[i] + b[i]) / 2;
|
|
10762
|
+
for (let i = 0; i < L; i += 2) {
|
|
10763
|
+
const ax = p[i];
|
|
10764
|
+
const ay = p[i + 1];
|
|
10765
|
+
const ux = p[(i + 2) % L] - ax;
|
|
10766
|
+
const uy = p[(i + 3) % L] - ay;
|
|
10767
|
+
for (let j = i + 4; j < L - (i ? 0 : 2); j += 2) {
|
|
10768
|
+
const cx = p[j];
|
|
10769
|
+
const cy = p[j + 1];
|
|
10770
|
+
const vx = p[(j + 2) % L] - cx;
|
|
10771
|
+
const vy = p[(j + 3) % L] - cy;
|
|
10772
|
+
if ((ux * (cy - ay) - uy * (cx - ax)) * (ux * (cy + vy - ay) - uy * (cx + vx - ax)) >= 0) continue;
|
|
10773
|
+
if ((vx * (ay - cy) - vy * (ax - cx)) * (vx * (ay + uy - cy) - vy * (ax + ux - cx)) < 0) return true;
|
|
10774
|
+
}
|
|
10497
10775
|
}
|
|
10498
|
-
|
|
10499
|
-
|
|
10500
|
-
|
|
10501
|
-
|
|
10502
|
-
|
|
10503
|
-
|
|
10504
|
-
|
|
10505
|
-
|
|
10776
|
+
return false;
|
|
10777
|
+
}
|
|
10778
|
+
function outerItem(a, b) {
|
|
10779
|
+
const n = a.length / 2;
|
|
10780
|
+
const k = n > 64 ? 2 : 1;
|
|
10781
|
+
const half = (p, o) => k > 1 ? p.filter((_, i) => (i >> 1) % 2 === o) : p;
|
|
10782
|
+
const as = half(a, 0);
|
|
10783
|
+
const ca = centroid(as);
|
|
10784
|
+
const bs = [half(b, 0), half(b, 1)];
|
|
10785
|
+
const cbs = bs.map(centroid);
|
|
10786
|
+
const offs = [];
|
|
10787
|
+
for (let off = 0; off < n; off++) {
|
|
10788
|
+
const j = off % k;
|
|
10789
|
+
const s = procrustes(as, rotatePts(bs[j], (off - j) / k), ca, cbs[j]);
|
|
10790
|
+
offs.push([off, s.res + REGION_LAMBDA * Math.abs(s.theta) / Math.PI]);
|
|
10791
|
+
}
|
|
10792
|
+
offs.sort((x, y) => x[1] - y[1]);
|
|
10793
|
+
let best;
|
|
10794
|
+
for (const [off, score] of offs.slice(0, FOLD_TRIES)) {
|
|
10795
|
+
if (score > offs[0][1] + FOLD_SLACK) break;
|
|
10796
|
+
const it = makeItem(a, rotatePts(b, off), false, false, false, REGION_LAMBDA);
|
|
10797
|
+
it.closed = true;
|
|
10798
|
+
best ??= it;
|
|
10799
|
+
if (!folds(half(it.aC, 0), half(it.bT, 0))) return it;
|
|
10800
|
+
}
|
|
10801
|
+
return best;
|
|
10802
|
+
}
|
|
10803
|
+
function parentOf(hole, subs) {
|
|
10804
|
+
const n = hole.length / 2;
|
|
10805
|
+
let best = -1;
|
|
10806
|
+
let bestArea = Infinity;
|
|
10807
|
+
subs.forEach((s, k) => {
|
|
10808
|
+
if (s.hole) return;
|
|
10809
|
+
let votes = 0;
|
|
10810
|
+
for (const v of [
|
|
10811
|
+
0,
|
|
10812
|
+
Math.floor(n / 3),
|
|
10813
|
+
Math.floor(2 * n / 3)
|
|
10814
|
+
]) if (inside(hole[2 * v], hole[2 * v + 1], s.pts)) votes++;
|
|
10815
|
+
if (votes < 2) return;
|
|
10816
|
+
const ar = Math.abs(signedArea(s.pts));
|
|
10817
|
+
if (ar < bestArea) {
|
|
10818
|
+
bestArea = ar;
|
|
10819
|
+
best = k;
|
|
10506
10820
|
}
|
|
10507
|
-
|
|
10821
|
+
});
|
|
10822
|
+
return best;
|
|
10823
|
+
}
|
|
10824
|
+
function assign(C, skip, one, cover) {
|
|
10825
|
+
const L = C.length;
|
|
10826
|
+
const S = one.length;
|
|
10827
|
+
const f = new Array(L).fill(-1);
|
|
10828
|
+
const mult = new Array(S).fill(0);
|
|
10829
|
+
if ((S + 1) ** L > 1e5) {
|
|
10830
|
+
const pairs = [];
|
|
10831
|
+
for (let i = 0; i < L; i++) for (let j = 0; j < S; j++) if (C[i][j] < Infinity) pairs.push([
|
|
10832
|
+
C[i][j],
|
|
10833
|
+
i,
|
|
10834
|
+
j
|
|
10835
|
+
]);
|
|
10836
|
+
pairs.sort((x, y) => x[0] - y[0]);
|
|
10837
|
+
for (const [, i, j] of pairs) if (f[i] < 0 && !mult[j]) {
|
|
10838
|
+
f[i] = j;
|
|
10839
|
+
mult[j] = 1;
|
|
10840
|
+
}
|
|
10841
|
+
for (let i = 0; i < L; i++) {
|
|
10842
|
+
if (f[i] >= 0) continue;
|
|
10843
|
+
for (let j = 0; j < S; j++) if (!one[j] && (f[i] < 0 || C[i][j] < C[i][f[i]])) f[i] = j;
|
|
10844
|
+
}
|
|
10845
|
+
return f;
|
|
10508
10846
|
}
|
|
10509
|
-
|
|
10510
|
-
|
|
10511
|
-
const
|
|
10512
|
-
|
|
10513
|
-
|
|
10514
|
-
|
|
10515
|
-
|
|
10516
|
-
|
|
10517
|
-
|
|
10518
|
-
|
|
10519
|
-
|
|
10520
|
-
|
|
10521
|
-
|
|
10522
|
-
|
|
10523
|
-
|
|
10524
|
-
|
|
10525
|
-
|
|
10847
|
+
let best = f.slice();
|
|
10848
|
+
let bc = Infinity;
|
|
10849
|
+
const rec = (i, acc, covered) => {
|
|
10850
|
+
if (acc >= bc || cover && S - covered > L - i) return;
|
|
10851
|
+
if (i === L) {
|
|
10852
|
+
bc = acc;
|
|
10853
|
+
best = f.slice();
|
|
10854
|
+
return;
|
|
10855
|
+
}
|
|
10856
|
+
for (let j = 0; j < S; j++) {
|
|
10857
|
+
if (one[j] && mult[j] || !(C[i][j] < Infinity)) continue;
|
|
10858
|
+
f[i] = j;
|
|
10859
|
+
mult[j]++;
|
|
10860
|
+
rec(i + 1, acc + C[i][j], covered + (mult[j] === 1 ? 1 : 0));
|
|
10861
|
+
mult[j]--;
|
|
10862
|
+
}
|
|
10863
|
+
f[i] = -1;
|
|
10864
|
+
rec(i + 1, acc + skip[i], covered);
|
|
10865
|
+
};
|
|
10866
|
+
rec(0, 0, 0);
|
|
10867
|
+
return best;
|
|
10868
|
+
}
|
|
10869
|
+
function carry(x, y, from, to, theta, s) {
|
|
10870
|
+
const c = Math.cos(theta) * s;
|
|
10871
|
+
const n = Math.sin(theta) * s;
|
|
10872
|
+
const dx = x - from[0];
|
|
10873
|
+
const dy = y - from[1];
|
|
10874
|
+
return [to[0] + dx * c - dy * n, to[1] + dx * n + dy * c];
|
|
10875
|
+
}
|
|
10876
|
+
function dots(c, n) {
|
|
10877
|
+
const d = new Float64Array(2 * n);
|
|
10878
|
+
for (let i = 0; i < 2 * n; i += 2) {
|
|
10879
|
+
d[i] = c[0];
|
|
10880
|
+
d[i + 1] = c[1];
|
|
10526
10881
|
}
|
|
10527
|
-
|
|
10882
|
+
return d;
|
|
10883
|
+
}
|
|
10884
|
+
function inFrame(a, b, f, hole, half) {
|
|
10885
|
+
const n = a.length / 2;
|
|
10886
|
+
const s = Math.exp(f.lnSigma);
|
|
10887
|
+
const aC = new Float64Array(2 * n);
|
|
10888
|
+
const bt = new Float64Array(2 * n);
|
|
10889
|
+
let nb = 0;
|
|
10890
|
+
for (let i = 0; i < 2 * n; i += 2) {
|
|
10891
|
+
aC[i] = a[i] - f.ca[0];
|
|
10892
|
+
aC[i + 1] = a[i + 1] - f.ca[1];
|
|
10893
|
+
[bt[i], bt[i + 1]] = carry(b[i], b[i + 1], f.cb, [0, 0], -f.theta, 1 / s);
|
|
10894
|
+
nb += (b[i] - f.cb[0]) ** 2 + (b[i + 1] - f.cb[1]) ** 2;
|
|
10895
|
+
}
|
|
10896
|
+
let off = 0;
|
|
10897
|
+
let be = Infinity;
|
|
10898
|
+
for (let o = 0; o < n && be > 0; o++) {
|
|
10899
|
+
let e = 0;
|
|
10900
|
+
for (let i = 0; i < n && e < be; i++) {
|
|
10901
|
+
const j = (i + o) % n;
|
|
10902
|
+
e += (aC[2 * i] - bt[2 * j]) ** 2 + (aC[2 * i + 1] - bt[2 * j + 1]) ** 2;
|
|
10903
|
+
}
|
|
10904
|
+
if (e < be) {
|
|
10905
|
+
be = e;
|
|
10906
|
+
off = o;
|
|
10907
|
+
}
|
|
10908
|
+
}
|
|
10909
|
+
return {
|
|
10910
|
+
a,
|
|
10911
|
+
aC,
|
|
10912
|
+
bT: rotatePts(bt, off),
|
|
10913
|
+
bO: rotatePts(b, off),
|
|
10914
|
+
ca: f.ca,
|
|
10915
|
+
cb: f.cb,
|
|
10916
|
+
theta: f.theta,
|
|
10917
|
+
lnSigma: f.lnSigma,
|
|
10918
|
+
res: nb > 1e-12 ? Math.sqrt(s * s * be / nb) : 0,
|
|
10919
|
+
closed: true,
|
|
10920
|
+
hole,
|
|
10921
|
+
half,
|
|
10922
|
+
block: f.block
|
|
10923
|
+
};
|
|
10924
|
+
}
|
|
10925
|
+
function vanishingHole(pts, outer, grow) {
|
|
10926
|
+
const s = Math.exp(outer.lnSigma);
|
|
10927
|
+
let [x, y] = centroid(pts);
|
|
10928
|
+
const { aC, bT } = outer;
|
|
10929
|
+
const near = grow ? outer.bO : outer.a;
|
|
10930
|
+
let w = 0;
|
|
10931
|
+
let dx = 0;
|
|
10932
|
+
let dy = 0;
|
|
10933
|
+
for (let i = 0; i < aC.length; i += 2) {
|
|
10934
|
+
const k = 1 / ((near[i] - x) ** 2 + (near[i + 1] - y) ** 2 + 1e-9);
|
|
10935
|
+
w += k;
|
|
10936
|
+
dx += k * (bT[i] - aC[i]);
|
|
10937
|
+
dy += k * (bT[i + 1] - aC[i + 1]);
|
|
10938
|
+
}
|
|
10939
|
+
w = (grow ? -.5 : .5) / w;
|
|
10940
|
+
if (grow) [x, y] = carry(x, y, outer.cb, outer.ca, -outer.theta, 1 / s);
|
|
10941
|
+
x += w * dx;
|
|
10942
|
+
y += w * dy;
|
|
10943
|
+
const dot = dots(grow ? [x, y] : carry(x, y, outer.ca, outer.cb, outer.theta, s), pts.length / 2);
|
|
10944
|
+
return grow ? inFrame(dot, pts, outer, true, 1) : inFrame(pts, dot, outer, true, 0);
|
|
10945
|
+
}
|
|
10946
|
+
function strays(h, o, holes) {
|
|
10947
|
+
let k = 0;
|
|
10948
|
+
for (const t of [
|
|
10949
|
+
.25,
|
|
10950
|
+
.5,
|
|
10951
|
+
.75
|
|
10952
|
+
]) {
|
|
10953
|
+
if (!(weight(h, t) % 1)) continue;
|
|
10954
|
+
const [H, O, ...G] = [
|
|
10955
|
+
h,
|
|
10956
|
+
o,
|
|
10957
|
+
...holes.filter((g) => g !== h)
|
|
10958
|
+
].map((it) => it.aC.map((v, i) => v + weight(it, t) * (it.bT[i] - v)));
|
|
10959
|
+
for (let i = 0; i < H.length; i += 2) if (!inside(H[i], H[i + 1], O) || G.some((p) => inside(H[i], H[i + 1], p))) k++;
|
|
10960
|
+
}
|
|
10961
|
+
return k;
|
|
10962
|
+
}
|
|
10963
|
+
function vanishingPiece(outer, holes, grow) {
|
|
10964
|
+
const c = centroid(outer);
|
|
10965
|
+
const f = {
|
|
10966
|
+
ca: c,
|
|
10967
|
+
cb: c,
|
|
10968
|
+
theta: 0,
|
|
10969
|
+
lnSigma: 0,
|
|
10970
|
+
block: null
|
|
10971
|
+
};
|
|
10972
|
+
const dot = dots(c, outer.length / 2);
|
|
10973
|
+
return [outer, ...holes].map((p, k) => grow ? inFrame(dot, p, f, k > 0) : inFrame(p, dot, f, k > 0));
|
|
10974
|
+
}
|
|
10975
|
+
function bbox(p) {
|
|
10976
|
+
const b = [
|
|
10977
|
+
p[0],
|
|
10978
|
+
p[1],
|
|
10979
|
+
p[0],
|
|
10980
|
+
p[1]
|
|
10981
|
+
];
|
|
10982
|
+
for (let i = 2; i < p.length; i += 2) {
|
|
10983
|
+
b[0] = Math.min(b[0], p[i]);
|
|
10984
|
+
b[1] = Math.min(b[1], p[i + 1]);
|
|
10985
|
+
b[2] = Math.max(b[2], p[i]);
|
|
10986
|
+
b[3] = Math.max(b[3], p[i + 1]);
|
|
10987
|
+
}
|
|
10988
|
+
return b;
|
|
10989
|
+
}
|
|
10990
|
+
function holeCosts(HA, HB, outer) {
|
|
10991
|
+
const s = Math.exp(outer.lnSigma);
|
|
10992
|
+
const C = costMatrix(HA, HB);
|
|
10993
|
+
const inA = HB.map((h) => {
|
|
10994
|
+
const q = new Float64Array(h.length);
|
|
10995
|
+
for (let i = 0; i < h.length; i += 2) [q[i], q[i + 1]] = carry(h[i], h[i + 1], outer.cb, outer.ca, -outer.theta, 1 / s);
|
|
10996
|
+
return bbox(q);
|
|
10997
|
+
});
|
|
10998
|
+
HA.forEach((h, i) => {
|
|
10999
|
+
const a = bbox(h);
|
|
11000
|
+
inA.forEach((b, j) => {
|
|
11001
|
+
const w = Math.min(a[2], b[2]) - Math.max(a[0], b[0]);
|
|
11002
|
+
const v = Math.min(a[3], b[3]) - Math.max(a[1], b[1]);
|
|
11003
|
+
const inter = w > 0 && v > 0 ? w * v : 0;
|
|
11004
|
+
const union = (a[2] - a[0]) * (a[3] - a[1]) + (b[2] - b[0]) * (b[3] - b[1]) - inter;
|
|
11005
|
+
if (!(inter >= HOLE_IOU * union)) C[i][j] = Infinity;
|
|
11006
|
+
});
|
|
11007
|
+
});
|
|
11008
|
+
return C;
|
|
11009
|
+
}
|
|
11010
|
+
function piecesOf(subs) {
|
|
11011
|
+
const idx = [];
|
|
11012
|
+
subs.forEach((s, k) => {
|
|
11013
|
+
if (!s.hole) idx.push(k);
|
|
11014
|
+
});
|
|
11015
|
+
const holes = idx.map(() => []);
|
|
11016
|
+
subs.forEach((s) => {
|
|
11017
|
+
if (!s.hole) return;
|
|
11018
|
+
let k = idx.indexOf(parentOf(s.pts, subs));
|
|
11019
|
+
if (k < 0) {
|
|
11020
|
+
const [hx, hy] = centroid(s.pts);
|
|
11021
|
+
let bd = Infinity;
|
|
11022
|
+
idx.forEach((o, m) => {
|
|
11023
|
+
const [ox, oy] = centroid(subs[o].pts);
|
|
11024
|
+
const d = Math.hypot(ox - hx, oy - hy);
|
|
11025
|
+
if (d < bd) {
|
|
11026
|
+
bd = d;
|
|
11027
|
+
k = m;
|
|
11028
|
+
}
|
|
11029
|
+
});
|
|
11030
|
+
}
|
|
11031
|
+
holes[k].push(s.pts);
|
|
11032
|
+
});
|
|
11033
|
+
return {
|
|
11034
|
+
outers: idx.map((k) => subs[k].pts),
|
|
11035
|
+
holes
|
|
11036
|
+
};
|
|
11037
|
+
}
|
|
11038
|
+
function doubled(p) {
|
|
11039
|
+
const m = p.length;
|
|
11040
|
+
const q = new Float64Array(2 * m);
|
|
11041
|
+
for (let i = 0; i < m; i += 2) {
|
|
11042
|
+
const j = (i + 2) % m;
|
|
11043
|
+
q[2 * i] = p[i];
|
|
11044
|
+
q[2 * i + 1] = p[i + 1];
|
|
11045
|
+
q[2 * i + 2] = (p[i] + p[j]) / 2;
|
|
11046
|
+
q[2 * i + 3] = (p[i + 1] + p[j + 1]) / 2;
|
|
11047
|
+
}
|
|
11048
|
+
return q;
|
|
11049
|
+
}
|
|
11050
|
+
/** Region plan: outers ↔ outers (holed contours never duplicated), holes ↔
|
|
11051
|
+
* overlapping holes of the paired outer, direction locked; whatever has no
|
|
11052
|
+
* partner collapses/grows without ever breaking the nesting (rules above).
|
|
11053
|
+
* Every item flies closed. */
|
|
11054
|
+
function buildRegionPlan(srcSubs, dstSubs) {
|
|
11055
|
+
const n = Math.max(srcSubs[0].pts.length, dstSubs[0].pts.length) / 2;
|
|
11056
|
+
const fit = (s) => s[0].pts.length / 2 < n ? s.map((c) => ({
|
|
11057
|
+
...c,
|
|
11058
|
+
pts: doubled(c.pts)
|
|
11059
|
+
})) : s;
|
|
11060
|
+
const A = piecesOf(fit(srcSubs));
|
|
11061
|
+
const B = piecesOf(fit(dstSubs));
|
|
11062
|
+
if (A.outers.length === 0 || B.outers.length === 0) throw new Error("morphicons: region has no outer contour");
|
|
11063
|
+
let pairs;
|
|
11064
|
+
const p = A.outers.length;
|
|
11065
|
+
const q = B.outers.length;
|
|
11066
|
+
const [large, small] = p < q ? [B, A] : [A, B];
|
|
11067
|
+
if (p === q || small.holes.every((h) => h.length === 0)) pairs = pairUp(A.outers, B.outers);
|
|
11068
|
+
else pairs = assign(costMatrix(large.outers, small.outers), large.outers.map((o) => SKIP + vanishCost(o)), small.holes.map((h) => h.length > 0), true).map((s, l) => p < q ? [s, l] : [l, s]);
|
|
11069
|
+
const items = [];
|
|
11070
|
+
let partial = false;
|
|
11071
|
+
for (const [i, j] of pairs) {
|
|
11072
|
+
if (i < 0 || j < 0) {
|
|
11073
|
+
partial = true;
|
|
11074
|
+
items.push(...i < 0 ? vanishingPiece(B.outers[j], B.holes[j], true) : vanishingPiece(A.outers[i], A.holes[i], false));
|
|
11075
|
+
continue;
|
|
11076
|
+
}
|
|
11077
|
+
const it = outerItem(A.outers[i], B.outers[j]);
|
|
11078
|
+
it.hole = false;
|
|
11079
|
+
items.push(it);
|
|
11080
|
+
const HA = A.holes[i];
|
|
11081
|
+
const HB = B.holes[j];
|
|
11082
|
+
const f = assign(holeCosts(HA, HB, it), HA.map(() => SKIP), HB.map(() => true), false);
|
|
11083
|
+
const holes = HA.map((h, k) => f[k] < 0 ? vanishingHole(h, it, false) : inFrame(h, HB[f[k]], it, true));
|
|
11084
|
+
HB.forEach((h, k) => {
|
|
11085
|
+
if (!f.includes(k)) holes.push(vanishingHole(h, it, true));
|
|
11086
|
+
});
|
|
11087
|
+
for (let k = 0; k < holes.length; k++) {
|
|
11088
|
+
const h = holes[k];
|
|
11089
|
+
if (h.half !== void 0) {
|
|
11090
|
+
partial = true;
|
|
11091
|
+
continue;
|
|
11092
|
+
}
|
|
11093
|
+
const c = strays(h, it, holes);
|
|
11094
|
+
if (!c) continue;
|
|
11095
|
+
holes.splice(k, 1, vanishingHole(h.a, it, false), vanishingHole(h.bO, it, true));
|
|
11096
|
+
if (strays(holes[k], it, holes) + strays(holes[k + 1], it, holes) >= c) holes.splice(k, 2, h);
|
|
11097
|
+
}
|
|
11098
|
+
items.push(...holes);
|
|
11099
|
+
}
|
|
11100
|
+
if (items.length > 1 && !partial) applyGlobal(items, n);
|
|
11101
|
+
return {
|
|
11102
|
+
items,
|
|
11103
|
+
n
|
|
11104
|
+
};
|
|
11105
|
+
}
|
|
11106
|
+
function flatten(input, tol) {
|
|
11107
|
+
const lines = [];
|
|
11108
|
+
const closed = [];
|
|
11109
|
+
for (const { pts, closed: c } of iconToCubics(input)) {
|
|
11110
|
+
const out = [pts[0], pts[1]];
|
|
11111
|
+
for (let i = 0; i + 7 < pts.length; i += 6) {
|
|
11112
|
+
const x0 = pts[i];
|
|
11113
|
+
const y0 = pts[i + 1];
|
|
11114
|
+
const x1 = pts[i + 2];
|
|
11115
|
+
const y1 = pts[i + 3];
|
|
11116
|
+
const x2 = pts[i + 4];
|
|
11117
|
+
const y2 = pts[i + 5];
|
|
11118
|
+
const x3 = pts[i + 6];
|
|
11119
|
+
const y3 = pts[i + 7];
|
|
11120
|
+
const dd = Math.max(Math.hypot(x0 - 2 * x1 + x2, y0 - 2 * y1 + y2), Math.hypot(x1 - 2 * x2 + x3, y1 - 2 * y2 + y3));
|
|
11121
|
+
const k = Math.min(128, Math.max(1, Math.ceil(Math.sqrt(6 * dd / (8 * tol)))));
|
|
11122
|
+
for (let s = 1; s <= k; s++) {
|
|
11123
|
+
const t = s / k;
|
|
11124
|
+
const u = 1 - t;
|
|
11125
|
+
out.push(u * u * u * x0 + 3 * u * u * t * x1 + 3 * u * t * t * x2 + t * t * t * x3, u * u * u * y0 + 3 * u * u * t * y1 + 3 * u * t * t * y2 + t * t * t * y3);
|
|
11126
|
+
}
|
|
11127
|
+
}
|
|
11128
|
+
lines.push(Float64Array.from(out));
|
|
11129
|
+
closed.push(c);
|
|
11130
|
+
}
|
|
11131
|
+
return {
|
|
11132
|
+
lines,
|
|
11133
|
+
closed
|
|
11134
|
+
};
|
|
11135
|
+
}
|
|
11136
|
+
function partsOf(input, width, tol) {
|
|
11137
|
+
if (typeof input === "string") return [{
|
|
11138
|
+
...flatten(input, tol),
|
|
11139
|
+
half: width / 2,
|
|
11140
|
+
fill: 0
|
|
11141
|
+
}];
|
|
11142
|
+
const fillIcon = paintOf(input) === "fill";
|
|
11143
|
+
const parts = [];
|
|
11144
|
+
for (const el of input) {
|
|
11145
|
+
const a = el[1];
|
|
11146
|
+
if (translucent(a)) continue;
|
|
11147
|
+
const strokeOn = fillIcon ? painted(a.stroke) : a.stroke === void 0 || painted(a.stroke);
|
|
11148
|
+
const fillOn = fillIcon && (painted(a.fill) || a.fill === void 0 && !strokeOn);
|
|
11149
|
+
if (!strokeOn && !fillOn) continue;
|
|
11150
|
+
parts.push({
|
|
11151
|
+
...flatten([el], tol),
|
|
11152
|
+
half: strokeOn ? num(a["stroke-width"], width) / 2 : 0,
|
|
11153
|
+
fill: fillOn ? String(a["fill-rule"] ?? "").trim() === "evenodd" ? 2 : 1 : 0
|
|
11154
|
+
});
|
|
11155
|
+
}
|
|
11156
|
+
return parts;
|
|
11157
|
+
}
|
|
11158
|
+
function eachNear(g, ax, ay, bx, by, r, fn) {
|
|
11159
|
+
const i0 = Math.max(0, Math.floor((Math.min(ax, bx) - r - g.x0) / g.h));
|
|
11160
|
+
const i1 = Math.min(g.nx - 1, Math.ceil((Math.max(ax, bx) + r - g.x0) / g.h));
|
|
11161
|
+
const j0 = Math.max(0, Math.floor((Math.min(ay, by) - r - g.y0) / g.h));
|
|
11162
|
+
const j1 = Math.min(g.ny - 1, Math.ceil((Math.max(ay, by) + r - g.y0) / g.h));
|
|
11163
|
+
for (let j = j0; j <= j1; j++) {
|
|
11164
|
+
const y = g.y0 + j * g.h;
|
|
11165
|
+
for (let i = i0; i <= i1; i++) fn(j * g.nx + i, g.x0 + i * g.h, y);
|
|
11166
|
+
}
|
|
11167
|
+
}
|
|
11168
|
+
function eachSeg(p, close, fn) {
|
|
11169
|
+
const n = p.length / 2;
|
|
11170
|
+
if (n === 1) fn(p[0], p[1], p[0], p[1]);
|
|
11171
|
+
for (let i = 0; i + 1 < n; i++) fn(p[2 * i], p[2 * i + 1], p[2 * i + 2], p[2 * i + 3]);
|
|
11172
|
+
if (close && n > 2) fn(p[2 * n - 2], p[2 * n - 1], p[0], p[1]);
|
|
11173
|
+
}
|
|
11174
|
+
function field(parts, g) {
|
|
11175
|
+
const F = new Float32Array(g.nx * g.ny).fill(BIG);
|
|
11176
|
+
const band = 2 * g.h;
|
|
11177
|
+
let D = null;
|
|
11178
|
+
for (const part of parts) {
|
|
11179
|
+
if (part.half > 0) {
|
|
11180
|
+
const r = part.half + band;
|
|
11181
|
+
part.lines.forEach((p, li) => {
|
|
11182
|
+
eachSeg(p, part.closed[li], (ax, ay, bx, by) => eachNear(g, ax, ay, bx, by, r, (k, x, y) => {
|
|
11183
|
+
const d = distSeg(x, y, ax, ay, bx, by) - part.half;
|
|
11184
|
+
if (d < F[k]) F[k] = d;
|
|
11185
|
+
}));
|
|
11186
|
+
});
|
|
11187
|
+
}
|
|
11188
|
+
if (part.fill) {
|
|
11189
|
+
D ??= new Float32Array(g.nx * g.ny);
|
|
11190
|
+
const Dm = D;
|
|
11191
|
+
Dm.fill(BIG);
|
|
11192
|
+
for (const p of part.lines) eachSeg(p, true, (ax, ay, bx, by) => eachNear(g, ax, ay, bx, by, band, (k, x, y) => {
|
|
11193
|
+
const d = distSeg(x, y, ax, ay, bx, by);
|
|
11194
|
+
if (d < Dm[k]) Dm[k] = d;
|
|
11195
|
+
}));
|
|
11196
|
+
const xs = [];
|
|
11197
|
+
const ws = [];
|
|
11198
|
+
for (let j = 0; j < g.ny; j++) {
|
|
11199
|
+
const y = g.y0 + j * g.h;
|
|
11200
|
+
const cross = [];
|
|
11201
|
+
for (const p of part.lines) eachSeg(p, true, (ax, ay, bx, by) => {
|
|
11202
|
+
if (ay <= y !== by <= y) cross.push([ax + (y - ay) * (bx - ax) / (by - ay), by > ay ? 1 : -1]);
|
|
11203
|
+
});
|
|
11204
|
+
cross.sort((u, v) => u[0] - v[0]);
|
|
11205
|
+
xs.length = 0;
|
|
11206
|
+
ws.length = 0;
|
|
11207
|
+
for (const [x, w] of cross) {
|
|
11208
|
+
xs.push(x);
|
|
11209
|
+
ws.push(w);
|
|
11210
|
+
}
|
|
11211
|
+
let c = 0;
|
|
11212
|
+
let wind = 0;
|
|
11213
|
+
for (let i = 0; i < g.nx; i++) {
|
|
11214
|
+
const x = g.x0 + i * g.h;
|
|
11215
|
+
while (c < xs.length && xs[c] < x) wind += ws[c++];
|
|
11216
|
+
const isIn = part.fill === 1 ? wind !== 0 : (wind & 1) === 1;
|
|
11217
|
+
const k = j * g.nx + i;
|
|
11218
|
+
const v = isIn ? -Dm[k] : Dm[k];
|
|
11219
|
+
if (v < F[k]) F[k] = v;
|
|
11220
|
+
}
|
|
11221
|
+
}
|
|
11222
|
+
}
|
|
11223
|
+
}
|
|
11224
|
+
return F;
|
|
11225
|
+
}
|
|
11226
|
+
function trace(F, g) {
|
|
11227
|
+
const { nx, ny, h, x0, y0 } = g;
|
|
11228
|
+
const pt = /* @__PURE__ */ new Map();
|
|
11229
|
+
const crossing = (key) => {
|
|
11230
|
+
if (pt.has(key)) return key;
|
|
11231
|
+
const node = key >> 1;
|
|
11232
|
+
const i = node % nx;
|
|
11233
|
+
const j = (node - i) / nx;
|
|
11234
|
+
const other = key & 1 ? node + nx : node + 1;
|
|
11235
|
+
const fa = F[node];
|
|
11236
|
+
const t = Math.min(Math.max(fa / (fa - F[other]), 1e-5), .99999);
|
|
11237
|
+
pt.set(key, key & 1 ? [x0 + i * h, y0 + (j + t) * h] : [x0 + (i + t) * h, y0 + j * h]);
|
|
11238
|
+
return key;
|
|
11239
|
+
};
|
|
11240
|
+
const adj = /* @__PURE__ */ new Map();
|
|
11241
|
+
const link = (a, b) => {
|
|
11242
|
+
const ka = crossing(a);
|
|
11243
|
+
const kb = crossing(b);
|
|
11244
|
+
const la = adj.get(ka);
|
|
11245
|
+
if (la) la.push(kb);
|
|
11246
|
+
else adj.set(ka, [kb]);
|
|
11247
|
+
const lb = adj.get(kb);
|
|
11248
|
+
if (lb) lb.push(ka);
|
|
11249
|
+
else adj.set(kb, [ka]);
|
|
11250
|
+
};
|
|
11251
|
+
for (let j = 0; j + 1 < ny; j++) for (let i = 0; i + 1 < nx; i++) {
|
|
11252
|
+
const a = j * nx + i;
|
|
11253
|
+
const b = a + 1;
|
|
11254
|
+
const c = a + nx + 1;
|
|
11255
|
+
const d = a + nx;
|
|
11256
|
+
const ia = F[a] < 0;
|
|
11257
|
+
const ib = F[b] < 0;
|
|
11258
|
+
const ic = F[c] < 0;
|
|
11259
|
+
const id = F[d] < 0;
|
|
11260
|
+
const top = 2 * a;
|
|
11261
|
+
const right = 2 * b + 1;
|
|
11262
|
+
const bottom = 2 * d;
|
|
11263
|
+
const left = 2 * a + 1;
|
|
11264
|
+
const edges = [];
|
|
11265
|
+
if (ia !== ib) edges.push(top);
|
|
11266
|
+
if (ib !== ic) edges.push(right);
|
|
11267
|
+
if (id !== ic) edges.push(bottom);
|
|
11268
|
+
if (ia !== id) edges.push(left);
|
|
11269
|
+
if (edges.length === 2) link(edges[0], edges[1]);
|
|
11270
|
+
else if (edges.length === 4) {
|
|
11271
|
+
if ((F[a] + F[b] + F[c] + F[d]) / 4 < 0 === ia) {
|
|
11272
|
+
link(top, right);
|
|
11273
|
+
link(bottom, left);
|
|
11274
|
+
} else {
|
|
11275
|
+
link(left, top);
|
|
11276
|
+
link(right, bottom);
|
|
11277
|
+
}
|
|
11278
|
+
}
|
|
11279
|
+
}
|
|
11280
|
+
const loops = [];
|
|
11281
|
+
const seen = /* @__PURE__ */ new Set();
|
|
11282
|
+
for (const start of adj.keys()) {
|
|
11283
|
+
if (seen.has(start)) continue;
|
|
11284
|
+
const ring = [];
|
|
11285
|
+
let prev = -1;
|
|
11286
|
+
let cur = start;
|
|
11287
|
+
while (!seen.has(cur)) {
|
|
11288
|
+
seen.add(cur);
|
|
11289
|
+
const p = pt.get(cur);
|
|
11290
|
+
ring.push(p[0], p[1]);
|
|
11291
|
+
const nb = adj.get(cur);
|
|
11292
|
+
const next = nb[0] !== prev ? nb[0] : nb[1];
|
|
11293
|
+
prev = cur;
|
|
11294
|
+
cur = next;
|
|
11295
|
+
}
|
|
11296
|
+
if (ring.length >= 6) loops.push(Float64Array.from(ring));
|
|
11297
|
+
}
|
|
11298
|
+
return loops;
|
|
11299
|
+
}
|
|
11300
|
+
function rdp(p, i0, i1, tol, keep) {
|
|
11301
|
+
const n = p.length / 2;
|
|
11302
|
+
const ax = p[2 * (i0 % n)];
|
|
11303
|
+
const ay = p[2 * (i0 % n) + 1];
|
|
11304
|
+
const bx = p[2 * (i1 % n)];
|
|
11305
|
+
const by = p[2 * (i1 % n) + 1];
|
|
11306
|
+
let worst = -1;
|
|
11307
|
+
let wd = tol;
|
|
11308
|
+
for (let i = i0 + 1; i < i1; i++) {
|
|
11309
|
+
const d = distSeg(p[2 * (i % n)], p[2 * (i % n) + 1], ax, ay, bx, by);
|
|
11310
|
+
if (d > wd) {
|
|
11311
|
+
wd = d;
|
|
11312
|
+
worst = i;
|
|
11313
|
+
}
|
|
11314
|
+
}
|
|
11315
|
+
if (worst < 0) return;
|
|
11316
|
+
keep[worst % n] = 1;
|
|
11317
|
+
rdp(p, i0, worst, tol, keep);
|
|
11318
|
+
rdp(p, worst, i1, tol, keep);
|
|
11319
|
+
}
|
|
11320
|
+
function simplify(p, tol) {
|
|
11321
|
+
const n = p.length / 2;
|
|
11322
|
+
if (n < 4) return p;
|
|
11323
|
+
let far = 0;
|
|
11324
|
+
let fd = -1;
|
|
11325
|
+
for (let i = 1; i < n; i++) {
|
|
11326
|
+
const d = Math.hypot(p[2 * i] - p[0], p[2 * i + 1] - p[1]);
|
|
11327
|
+
if (d > fd) {
|
|
11328
|
+
fd = d;
|
|
11329
|
+
far = i;
|
|
11330
|
+
}
|
|
11331
|
+
}
|
|
11332
|
+
const keep = new Uint8Array(n);
|
|
11333
|
+
keep[0] = 1;
|
|
11334
|
+
keep[far] = 1;
|
|
11335
|
+
rdp(p, 0, far, tol, keep);
|
|
11336
|
+
rdp(p, far, n, tol, keep);
|
|
11337
|
+
const out = [];
|
|
11338
|
+
for (let i = 0; i < n; i++) if (keep[i]) out.push(p[2 * i], p[2 * i + 1]);
|
|
11339
|
+
return Float64Array.from(out);
|
|
11340
|
+
}
|
|
11341
|
+
function recoverCorners(p, h) {
|
|
11342
|
+
const n = p.length / 2;
|
|
11343
|
+
if (n < 4) return p;
|
|
11344
|
+
const len = (k) => {
|
|
11345
|
+
const a = k % n;
|
|
11346
|
+
const b = (k + 1) % n;
|
|
11347
|
+
return Math.hypot(p[2 * b] - p[2 * a], p[2 * b + 1] - p[2 * a + 1]);
|
|
11348
|
+
};
|
|
11349
|
+
const long = [];
|
|
11350
|
+
for (let k = 0; k < n; k++) if (len(k) >= 2.5 * h) long.push(k);
|
|
11351
|
+
if (long.length < 2) return p;
|
|
11352
|
+
const drop = new Uint8Array(n);
|
|
11353
|
+
const moved = /* @__PURE__ */ new Map();
|
|
11354
|
+
for (let q = 0; q < long.length; q++) {
|
|
11355
|
+
const k1 = long[q];
|
|
11356
|
+
const k2 = long[(q + 1) % long.length];
|
|
11357
|
+
const gap = (k2 - k1 - 1 + n) % n;
|
|
11358
|
+
if (gap < 1 || gap > 3) continue;
|
|
11359
|
+
let gl = 0;
|
|
11360
|
+
for (let s = 1; s <= gap; s++) gl += len(k1 + s);
|
|
11361
|
+
if (gl > 3 * h) continue;
|
|
11362
|
+
const a0 = k1 % n;
|
|
11363
|
+
const a1 = (k1 + 1) % n;
|
|
11364
|
+
const b0 = k2 % n;
|
|
11365
|
+
const b1 = (k2 + 1) % n;
|
|
11366
|
+
const d1x = p[2 * a1] - p[2 * a0];
|
|
11367
|
+
const d1y = p[2 * a1 + 1] - p[2 * a0 + 1];
|
|
11368
|
+
const d2x = p[2 * b1] - p[2 * b0];
|
|
11369
|
+
const d2y = p[2 * b1 + 1] - p[2 * b0 + 1];
|
|
11370
|
+
const cr = d1x * d2y - d1y * d2x;
|
|
11371
|
+
if (Math.abs(Math.atan2(cr, d1x * d2x + d1y * d2y)) < Math.PI / 12) continue;
|
|
11372
|
+
const t = ((p[2 * b0] - p[2 * a0]) * d2y - (p[2 * b0 + 1] - p[2 * a0 + 1]) * d2x) / cr;
|
|
11373
|
+
const X = [p[2 * a0] + t * d1x, p[2 * a0 + 1] + t * d1y];
|
|
11374
|
+
const mx = (p[2 * a1] + p[2 * b0]) / 2;
|
|
11375
|
+
const my = (p[2 * a1 + 1] + p[2 * b0 + 1]) / 2;
|
|
11376
|
+
if (Math.hypot(X[0] - mx, X[1] - my) > 2 * h) continue;
|
|
11377
|
+
moved.set(a1, X);
|
|
11378
|
+
for (let s = 2; s <= gap + 1; s++) drop[(k1 + s) % n] = 1;
|
|
11379
|
+
}
|
|
11380
|
+
if (moved.size === 0) return p;
|
|
11381
|
+
const out = [];
|
|
11382
|
+
for (let i = 0; i < n; i++) {
|
|
11383
|
+
if (drop[i]) continue;
|
|
11384
|
+
const m = moved.get(i);
|
|
11385
|
+
if (m) out.push(m[0], m[1]);
|
|
11386
|
+
else out.push(p[2 * i], p[2 * i + 1]);
|
|
11387
|
+
}
|
|
11388
|
+
return Float64Array.from(out);
|
|
11389
|
+
}
|
|
11390
|
+
/** Contours of the visible surface: closed, non-overlapping, outers
|
|
11391
|
+
* positive / holes negative (nesting depth decides which is which). */
|
|
11392
|
+
function regionContours(input, options) {
|
|
11393
|
+
const h = options?.cell ?? .125;
|
|
11394
|
+
const parts = partsOf(input, options?.strokeWidth ?? 2, .004);
|
|
11395
|
+
let minX = Number.POSITIVE_INFINITY;
|
|
11396
|
+
let minY = Number.POSITIVE_INFINITY;
|
|
11397
|
+
let maxX = Number.NEGATIVE_INFINITY;
|
|
11398
|
+
let maxY = Number.NEGATIVE_INFINITY;
|
|
11399
|
+
let pad = 0;
|
|
11400
|
+
for (const part of parts) {
|
|
11401
|
+
pad = Math.max(pad, part.half);
|
|
11402
|
+
for (const p of part.lines) for (let i = 0; i < p.length; i += 2) {
|
|
11403
|
+
minX = Math.min(minX, p[i]);
|
|
11404
|
+
maxX = Math.max(maxX, p[i]);
|
|
11405
|
+
minY = Math.min(minY, p[i + 1]);
|
|
11406
|
+
maxY = Math.max(maxY, p[i + 1]);
|
|
11407
|
+
}
|
|
11408
|
+
}
|
|
11409
|
+
if (!(maxX >= minX)) return [];
|
|
11410
|
+
pad += 3 * h;
|
|
11411
|
+
const g = {
|
|
11412
|
+
x0: minX - pad,
|
|
11413
|
+
y0: minY - pad,
|
|
11414
|
+
h,
|
|
11415
|
+
nx: Math.ceil((maxX - minX + 2 * pad) / h) + 1,
|
|
11416
|
+
ny: Math.ceil((maxY - minY + 2 * pad) / h) + 1
|
|
11417
|
+
};
|
|
11418
|
+
const loops = trace(field(parts, g), g).filter((l) => Math.abs(signedArea(l)) > .01);
|
|
11419
|
+
return loops.map((l) => {
|
|
11420
|
+
let depth = 0;
|
|
11421
|
+
for (const o of loops) if (o !== l && inside(l[0], l[1], o)) depth++;
|
|
11422
|
+
const hole = depth % 2 === 1;
|
|
11423
|
+
return recoverCorners(simplify(signedArea(l) > 0 === !hole ? l : reversePts(l), h * .08), h);
|
|
11424
|
+
});
|
|
11425
|
+
}
|
|
11426
|
+
/** Any icon → its canonical region: one `<path>` (nonzero) whose contours
|
|
11427
|
+
* are the visible surface. Idempotent on regions. Stroke icons outline at
|
|
11428
|
+
* `strokeWidth` (round caps and joins — Lucide, Tabler, Feather,
|
|
11429
|
+
* Heroicons outline); fill icons honor each element's fill rule. */
|
|
11430
|
+
function toRegion(input, options) {
|
|
11431
|
+
if (isRegion(input)) return input;
|
|
11432
|
+
let d = "";
|
|
11433
|
+
for (const p of regionContours(input, options)) {
|
|
11434
|
+
d += `M${fmt(p[0])} ${fmt(p[1])}`;
|
|
11435
|
+
for (let i = 2; i < p.length; i += 2) d += `L${fmt(p[i])} ${fmt(p[i + 1])}`;
|
|
11436
|
+
d += "Z";
|
|
11437
|
+
}
|
|
11438
|
+
if (!d) throw new Error("morphicons: icon has no visible surface");
|
|
11439
|
+
return [["path", {
|
|
11440
|
+
d,
|
|
11441
|
+
fill: "currentColor",
|
|
11442
|
+
stroke: "none",
|
|
11443
|
+
"fill-rule": "nonzero",
|
|
11444
|
+
[REGION_ATTR]: "1"
|
|
11445
|
+
}]];
|
|
11446
|
+
}
|
|
11447
|
+
/** The region the driver draws for an icon (cached): a stroke icon
|
|
11448
|
+
* outlined at the element's stroke width, a fill icon as is. */
|
|
11449
|
+
function regionOf(icon, strokeWidth) {
|
|
11450
|
+
if (isRegion(icon)) return icon;
|
|
11451
|
+
const width = paintOf(icon) === "fill" && !icon.some(([, a]) => painted(a.stroke) && a["stroke-width"] === void 0) ? 0 : strokeWidth;
|
|
11452
|
+
let byWidth = typeof icon === "string" ? void 0 : forms.get(icon);
|
|
11453
|
+
let r = byWidth?.get(width);
|
|
11454
|
+
if (r) return r;
|
|
11455
|
+
const key = `${width}|${typeof icon === "string" ? icon : JSON.stringify(icon)}`;
|
|
11456
|
+
r = byContent.get(key);
|
|
11457
|
+
if (r) byContent.delete(key);
|
|
11458
|
+
else r = toRegion(icon, { strokeWidth });
|
|
11459
|
+
byContent.set(key, r);
|
|
11460
|
+
if (byContent.size > 64) byContent.delete(byContent.keys().next().value);
|
|
11461
|
+
if (typeof icon !== "string") {
|
|
11462
|
+
if (!byWidth) {
|
|
11463
|
+
byWidth = /* @__PURE__ */ new Map();
|
|
11464
|
+
forms.set(icon, byWidth);
|
|
11465
|
+
}
|
|
11466
|
+
byWidth.set(width, r);
|
|
11467
|
+
}
|
|
11468
|
+
return r;
|
|
11469
|
+
}
|
|
11470
|
+
function sampledOf$1(region) {
|
|
11471
|
+
let s = samples$1.get(region);
|
|
11472
|
+
if (!s) {
|
|
11473
|
+
s = resampleRegion(region);
|
|
11474
|
+
samples$1.set(region, s);
|
|
11475
|
+
}
|
|
11476
|
+
return s;
|
|
11477
|
+
}
|
|
11478
|
+
/** Region plan from `src` at rest to `dst` (cached by reference). */
|
|
11479
|
+
function regionPlan(src, dst, strokeWidth) {
|
|
11480
|
+
const a = regionOf(src, strokeWidth);
|
|
11481
|
+
const b = regionOf(dst, strokeWidth);
|
|
11482
|
+
let inner = plans$1.get(a);
|
|
11483
|
+
if (!inner) {
|
|
11484
|
+
inner = /* @__PURE__ */ new WeakMap();
|
|
11485
|
+
plans$1.set(a, inner);
|
|
11486
|
+
}
|
|
11487
|
+
let p = inner.get(b);
|
|
11488
|
+
if (!p) {
|
|
11489
|
+
p = buildRegionPlan(sampledOf$1(a), sampledOf$1(b));
|
|
11490
|
+
inner.set(b, p);
|
|
11491
|
+
}
|
|
11492
|
+
return p;
|
|
11493
|
+
}
|
|
11494
|
+
/** Region plan from the shape in flight to `dst` (never cached): region
|
|
11495
|
+
* samples as they are, or a centerline `d` (a stroke morph interrupted
|
|
11496
|
+
* toward a fill icon), outlined as it is. */
|
|
11497
|
+
function regionPlanFrom(shape, dst, strokeWidth) {
|
|
11498
|
+
return buildRegionPlan(typeof shape === "string" ? resampleRegion(regionOf(shape, strokeWidth)) : shape, sampledOf$1(regionOf(dst, strokeWidth)));
|
|
11499
|
+
}
|
|
11500
|
+
var REGION_THRESHOLDS, FINE, REGION_LAMBDA, FOLD_SLACK, FOLD_TRIES, SKIP, weight, vanishCost, HOLE_IOU, BIG, painted, num, fmt, forms, byContent, samples$1, plans$1;
|
|
11501
|
+
var init_region = __esmMin((() => {
|
|
11502
|
+
init_normalize_CYnN3Npw();
|
|
11503
|
+
init_resample_CXlaZ5ZQ();
|
|
11504
|
+
init_region_BjECuWZR();
|
|
11505
|
+
REGION_THRESHOLDS = [
|
|
11506
|
+
Math.PI / 4,
|
|
11507
|
+
Math.PI / 3,
|
|
11508
|
+
Math.PI / 2,
|
|
11509
|
+
Math.PI
|
|
11510
|
+
];
|
|
11511
|
+
FINE = .3;
|
|
11512
|
+
REGION_LAMBDA = .3;
|
|
11513
|
+
FOLD_SLACK = .1;
|
|
11514
|
+
FOLD_TRIES = 16;
|
|
11515
|
+
SKIP = 1e6;
|
|
11516
|
+
weight = (it, t) => Math.min(1, Math.max(0, 2 * t - (it.half ?? t)));
|
|
11517
|
+
vanishCost = (pts) => costMatrix([pts], [dots(centroid(pts), pts.length / 2)])[0][0];
|
|
11518
|
+
HOLE_IOU = .25;
|
|
11519
|
+
BIG = 1e9;
|
|
11520
|
+
painted = (v) => v !== void 0 && String(v).trim().toLowerCase() !== "none";
|
|
11521
|
+
num = (v, fallback) => {
|
|
11522
|
+
const x = typeof v === "number" ? v : Number.parseFloat(String(v ?? ""));
|
|
11523
|
+
return Number.isFinite(x) ? x : fallback;
|
|
11524
|
+
};
|
|
11525
|
+
fmt = (v) => String(Math.round(v * 1e3) / 1e3);
|
|
11526
|
+
forms = /* @__PURE__ */ new WeakMap();
|
|
11527
|
+
byContent = /* @__PURE__ */ new Map();
|
|
11528
|
+
samples$1 = /* @__PURE__ */ new WeakMap();
|
|
11529
|
+
plans$1 = /* @__PURE__ */ new WeakMap();
|
|
11530
|
+
globalThis[Symbol.for("morphicons.region")] = {
|
|
11531
|
+
regionOf,
|
|
11532
|
+
regionPlan,
|
|
11533
|
+
regionPlanFrom
|
|
11534
|
+
};
|
|
11535
|
+
}));
|
|
10528
11536
|
// node_modules/morphicons/dist/dom.js
|
|
11537
|
+
init_normalize_CYnN3Npw();
|
|
11538
|
+
init_resample_CXlaZ5ZQ();
|
|
11539
|
+
init_region_BjECuWZR();
|
|
10529
11540
|
const tickers = /* @__PURE__ */ new Set();
|
|
10530
11541
|
let rafId = 0;
|
|
10531
11542
|
let last = -1;
|
|
@@ -10557,11 +11568,33 @@ function removeTicker(tick) {
|
|
|
10557
11568
|
const samples = /* @__PURE__ */ new WeakMap();
|
|
10558
11569
|
const canon = /* @__PURE__ */ new WeakMap();
|
|
10559
11570
|
const plans = /* @__PURE__ */ new WeakMap();
|
|
11571
|
+
function cubicsOf(icon) {
|
|
11572
|
+
if (typeof icon === "string" || paintOf(icon) === "stroke") return iconToCubics(icon);
|
|
11573
|
+
return solid(icon).flatMap((el) => {
|
|
11574
|
+
const ps = iconToCubics([el]);
|
|
11575
|
+
const odd = String(el[1]["fill-rule"]).trim() === "evenodd";
|
|
11576
|
+
let sum = 0;
|
|
11577
|
+
for (const p of ps) sum += signedArea(p.pts);
|
|
11578
|
+
for (const p of ps) {
|
|
11579
|
+
let flip = sum < 0;
|
|
11580
|
+
if (odd) {
|
|
11581
|
+
let pos = true;
|
|
11582
|
+
for (const o of ps) if (o !== p && inside(p.pts[0], p.pts[1], o.pts)) pos = !pos;
|
|
11583
|
+
flip = signedArea(p.pts) > 0 !== pos;
|
|
11584
|
+
}
|
|
11585
|
+
if (flip) p.pts = reversePts(p.pts);
|
|
11586
|
+
}
|
|
11587
|
+
return ps;
|
|
11588
|
+
});
|
|
11589
|
+
}
|
|
10560
11590
|
function sampledOf(icon) {
|
|
10561
11591
|
if (typeof icon === "string") return resampleIcon(icon);
|
|
10562
11592
|
let s = samples.get(icon);
|
|
10563
11593
|
if (!s) {
|
|
10564
|
-
s =
|
|
11594
|
+
s = cubicsOf(icon).map((p) => ({
|
|
11595
|
+
pts: resamplePath(p, 64),
|
|
11596
|
+
closed: p.closed
|
|
11597
|
+
}));
|
|
10565
11598
|
samples.set(icon, s);
|
|
10566
11599
|
}
|
|
10567
11600
|
return s;
|
|
@@ -10569,12 +11602,13 @@ function sampledOf(icon) {
|
|
|
10569
11602
|
/** Canonical `d` of an icon: the input string verbatim, or the real cubics
|
|
10570
11603
|
* quantized to 4 decimals (the at-rest snap; engine-stable bytes so SSR
|
|
10571
11604
|
* hydration matches, see fmtCanon in core/serialize). Exported because it
|
|
10572
|
-
* is what a binding renders at SSR/rest before any runtime exists.
|
|
11605
|
+
* is what a binding renders at SSR/rest before any runtime exists. A fill
|
|
11606
|
+
* icon's translucent duotone layer is left out (one path can't paint it). */
|
|
10573
11607
|
function canonicalD(icon) {
|
|
10574
11608
|
if (typeof icon === "string") return icon;
|
|
10575
11609
|
let d = canon.get(icon);
|
|
10576
11610
|
if (!d) {
|
|
10577
|
-
d = cubicsToPathD(
|
|
11611
|
+
d = cubicsToPathD(cubicsOf(icon));
|
|
10578
11612
|
canon.set(icon, d);
|
|
10579
11613
|
}
|
|
10580
11614
|
return d;
|
|
@@ -10593,6 +11627,123 @@ function planBetween(src, dst) {
|
|
|
10593
11627
|
}
|
|
10594
11628
|
return p;
|
|
10595
11629
|
}
|
|
11630
|
+
let regionMod = null;
|
|
11631
|
+
let regionLoading = null;
|
|
11632
|
+
let regionSince = 0;
|
|
11633
|
+
let regionFailed = false;
|
|
11634
|
+
let regionUrl;
|
|
11635
|
+
let regionLoader = () => Promise.resolve().then(() => (init_region(), region_exports));
|
|
11636
|
+
const reload = (url) => new Promise((ok, ko) => {
|
|
11637
|
+
const s = document.createElement("script");
|
|
11638
|
+
s.type = "module";
|
|
11639
|
+
s.onload = s.onerror = () => {
|
|
11640
|
+
s.remove();
|
|
11641
|
+
const m = globalThis[Symbol.for("morphicons.region")];
|
|
11642
|
+
m ? ok(m) : ko(new Error(url));
|
|
11643
|
+
};
|
|
11644
|
+
s.src = `${url}#${Date.now()}`;
|
|
11645
|
+
document.head.append(s);
|
|
11646
|
+
});
|
|
11647
|
+
const fromSource = () => {
|
|
11648
|
+
const spec = /import\(\s*["'`]([^"'`]+)/.exec(String(regionLoader))?.[1];
|
|
11649
|
+
const here = /\w+:\/\/[^\s)]+?(?=:\d+:\d+)/.exec(String((/* @__PURE__ */ new Error()).stack))?.[0];
|
|
11650
|
+
try {
|
|
11651
|
+
return spec && new URL(spec, here).href;
|
|
11652
|
+
} catch {}
|
|
11653
|
+
};
|
|
11654
|
+
/** Starts (or joins) loading the region normalizer. Call it early — on
|
|
11655
|
+
* idle, on hover — to keep the first stroke↔fill morph off the network. */
|
|
11656
|
+
function preloadRegion() {
|
|
11657
|
+
if (regionMod) return Promise.resolve(regionMod);
|
|
11658
|
+
if (!regionLoading) {
|
|
11659
|
+
regionSince = Date.now();
|
|
11660
|
+
const url = regionUrl;
|
|
11661
|
+
regionLoading = regionLoader().catch((e) => url ? reload(url) : Promise.reject(e)).then((m) => {
|
|
11662
|
+
regionMod = m;
|
|
11663
|
+
return m;
|
|
11664
|
+
}, (e) => {
|
|
11665
|
+
regionLoading = null;
|
|
11666
|
+
regionFailed = true;
|
|
11667
|
+
regionUrl ??= /dynamically imported module:?\s*(\S+)/i.exec(String(e?.message))?.[1] ?? fromSource();
|
|
11668
|
+
throw e;
|
|
11669
|
+
});
|
|
11670
|
+
}
|
|
11671
|
+
return regionLoading;
|
|
11672
|
+
}
|
|
11673
|
+
const quietPreload = () => new Promise((ok, ko) => {
|
|
11674
|
+
if (typeof navigator === "undefined" ? false : navigator.connection?.saveData) return;
|
|
11675
|
+
const go = () => {
|
|
11676
|
+
regionFailed ? ko() : preloadRegion().then(ok, ko);
|
|
11677
|
+
};
|
|
11678
|
+
typeof requestIdleCallback === "function" ? requestIdleCallback(go, { timeout: 2e3 }) : setTimeout(go, 200);
|
|
11679
|
+
});
|
|
11680
|
+
/** How long a morph waits for the region chunk before flying the fallback
|
|
11681
|
+
* (RAIL's 100 ms response budget). A slow, failed or hanging load never
|
|
11682
|
+
* leaves the icon stuck on the old shape; the load goes on in the
|
|
11683
|
+
* background and the next morph flies. A load already older than the
|
|
11684
|
+
* budget isn't waited for again. */
|
|
11685
|
+
const REGION_WAIT_MS = 100;
|
|
11686
|
+
const paintAttrs = (p) => p === "stroke" ? {
|
|
11687
|
+
fill: "none",
|
|
11688
|
+
stroke: "inherit"
|
|
11689
|
+
} : {
|
|
11690
|
+
fill: "currentColor",
|
|
11691
|
+
stroke: p === "fill" ? "none" : "inherit",
|
|
11692
|
+
"fill-rule": "nonzero"
|
|
11693
|
+
};
|
|
11694
|
+
const looks = /* @__PURE__ */ new WeakMap();
|
|
11695
|
+
const paintedEls = /* @__PURE__ */ new WeakSet();
|
|
11696
|
+
function restLook(icon) {
|
|
11697
|
+
if (typeof icon === "string" || paintOf(icon) === "stroke") return "stroke";
|
|
11698
|
+
let look = looks.get(icon);
|
|
11699
|
+
if (look) return look;
|
|
11700
|
+
let filled = 0;
|
|
11701
|
+
let enclosed = -1;
|
|
11702
|
+
look = "fill";
|
|
11703
|
+
for (const el of solid(icon)) {
|
|
11704
|
+
const s = painted$1(el[1].stroke);
|
|
11705
|
+
const f = painted$1(el[1].fill) || el[1].fill === void 0 && !s;
|
|
11706
|
+
if (s) look = "both";
|
|
11707
|
+
let a = 0;
|
|
11708
|
+
for (const p of iconToCubics([el])) a += Math.abs(signedArea(p.pts));
|
|
11709
|
+
if (f) filled += a;
|
|
11710
|
+
else if (s) enclosed = Math.max(enclosed, 0) + a;
|
|
11711
|
+
}
|
|
11712
|
+
if (enclosed > 1.5 * filled) look = "stroke";
|
|
11713
|
+
looks.set(icon, look);
|
|
11714
|
+
return look;
|
|
11715
|
+
}
|
|
11716
|
+
/** The paint attributes a binding renders on the `<path>` with its first
|
|
11717
|
+
* icon (SSR included), so a fill icon is filled before any script runs.
|
|
11718
|
+
* None for a stroke icon: it inherits the `<svg>`'s stroke as always. */
|
|
11719
|
+
function restAttrs(icon) {
|
|
11720
|
+
if (icon === void 0 || paintOf(icon) === "stroke") return void 0;
|
|
11721
|
+
return paintAttrs(restLook(icon));
|
|
11722
|
+
}
|
|
11723
|
+
function popPlan(from, to) {
|
|
11724
|
+
const n = 64;
|
|
11725
|
+
const item = ({ pts, closed }, half) => {
|
|
11726
|
+
if (pts.length > 128) pts = pts.filter((_, i) => i % 4 < 2);
|
|
11727
|
+
const c = centroid(pts);
|
|
11728
|
+
const p = pts.map((v, i) => v - c[i & 1]);
|
|
11729
|
+
const z = /* @__PURE__ */ new Float64Array(128);
|
|
11730
|
+
return {
|
|
11731
|
+
aC: half ? z : p,
|
|
11732
|
+
bT: half ? p : z,
|
|
11733
|
+
ca: c,
|
|
11734
|
+
cb: c,
|
|
11735
|
+
theta: 0,
|
|
11736
|
+
lnSigma: 0,
|
|
11737
|
+
closed,
|
|
11738
|
+
half,
|
|
11739
|
+
block: null
|
|
11740
|
+
};
|
|
11741
|
+
};
|
|
11742
|
+
return {
|
|
11743
|
+
n,
|
|
11744
|
+
items: [...from.map((s) => item(s, 0)), ...to.map((s) => item(s, 1))]
|
|
11745
|
+
};
|
|
11746
|
+
}
|
|
10596
11747
|
function resolveSpring(s) {
|
|
10597
11748
|
if (typeof s === "string") return SPRING_PRESETS[s];
|
|
10598
11749
|
const d = SPRING_PRESETS.snappy;
|
|
@@ -10605,6 +11756,7 @@ function resolveSpring(s) {
|
|
|
10605
11756
|
function createMorph(el, icon, options) {
|
|
10606
11757
|
const spring = new Spring();
|
|
10607
11758
|
let reducedMotion = options?.reducedMotion ?? "never";
|
|
11759
|
+
let strokeWidth = options?.strokeWidth ?? 2;
|
|
10608
11760
|
let target = icon;
|
|
10609
11761
|
let rest = true;
|
|
10610
11762
|
let plan = null;
|
|
@@ -10613,7 +11765,35 @@ function createMorph(el, icon, options) {
|
|
|
10613
11765
|
let t = 1;
|
|
10614
11766
|
let flying = false;
|
|
10615
11767
|
let dead = false;
|
|
10616
|
-
|
|
11768
|
+
let regionFlight = false;
|
|
11769
|
+
let drawn = false;
|
|
11770
|
+
let pending = null;
|
|
11771
|
+
let paint = "stroke";
|
|
11772
|
+
let known = !paintedEls.has(el);
|
|
11773
|
+
let split = 0;
|
|
11774
|
+
let popFrom = "stroke";
|
|
11775
|
+
let popBase = null;
|
|
11776
|
+
const paintAs = (p) => {
|
|
11777
|
+
if (p === paint && known) return;
|
|
11778
|
+
for (const [k, v] of Object.entries(paintAttrs(p))) el.setAttribute(k, v);
|
|
11779
|
+
paint = p;
|
|
11780
|
+
known = true;
|
|
11781
|
+
paintedEls.add(el);
|
|
11782
|
+
};
|
|
11783
|
+
const paintRest = (ic) => {
|
|
11784
|
+
const r = regionMod && paintOf(ic) === "fill" ? regionMod.regionOf(ic, strokeWidth) : ic;
|
|
11785
|
+
el.setAttribute("d", canonicalD(r));
|
|
11786
|
+
paintAs(restLook(r));
|
|
11787
|
+
};
|
|
11788
|
+
const upgrade = (load) => {
|
|
11789
|
+
const icon = target;
|
|
11790
|
+
load.then(() => {
|
|
11791
|
+
if (!dead && rest && target === icon && pending === null) paintRest(icon);
|
|
11792
|
+
}, () => {});
|
|
11793
|
+
};
|
|
11794
|
+
paintRest(icon);
|
|
11795
|
+
if (paintOf(icon) === "fill" && !regionMod) upgrade(quietPreload());
|
|
11796
|
+
const shown = (tt) => !split ? [0, plan?.items.length ?? 0] : tt < .5 ? [0, split] : [split, plan?.items.length ?? 0];
|
|
10617
11797
|
const render = (tt) => {
|
|
10618
11798
|
const p = plan;
|
|
10619
11799
|
const o = out;
|
|
@@ -10621,7 +11801,10 @@ function createMorph(el, icon, options) {
|
|
|
10621
11801
|
if (!p || !o || !cl) return;
|
|
10622
11802
|
t = tt;
|
|
10623
11803
|
interpPolar(p, tt, o);
|
|
10624
|
-
|
|
11804
|
+
drawn = true;
|
|
11805
|
+
const [lo, hi] = shown(tt);
|
|
11806
|
+
if (split) paintAs(tt < .5 ? popFrom : restLook(target));
|
|
11807
|
+
el.setAttribute("d", serialize(o.slice(lo, hi), cl.slice(lo, hi)));
|
|
10625
11808
|
};
|
|
10626
11809
|
const stop = () => {
|
|
10627
11810
|
if (!flying) return;
|
|
@@ -10644,7 +11827,10 @@ function createMorph(el, icon, options) {
|
|
|
10644
11827
|
t = 1;
|
|
10645
11828
|
spring.x = 1;
|
|
10646
11829
|
spring.v = 0;
|
|
10647
|
-
|
|
11830
|
+
regionFlight = false;
|
|
11831
|
+
split = 0;
|
|
11832
|
+
paintRest(target);
|
|
11833
|
+
if (paintOf(target) === "fill" && !regionMod && (regionLoading || !regionFailed)) upgrade(preloadRegion());
|
|
10648
11834
|
};
|
|
10649
11835
|
/** The current shape as plan source: the at-rest icon, or the rendered
|
|
10650
11836
|
* buffers (already N points per subpath). */
|
|
@@ -10652,20 +11838,73 @@ function createMorph(el, icon, options) {
|
|
|
10652
11838
|
const p = plan;
|
|
10653
11839
|
const o = out;
|
|
10654
11840
|
if (rest || !p || !o) return sampledOf(target);
|
|
10655
|
-
|
|
11841
|
+
const [lo, hi] = shown(t);
|
|
11842
|
+
return o.slice(lo, hi).map((buf, k) => ({
|
|
10656
11843
|
pts: Float64Array.from(buf),
|
|
10657
|
-
closed: p.items[k].closed
|
|
11844
|
+
closed: p.items[lo + k].closed,
|
|
11845
|
+
hole: p.items[lo + k].hole
|
|
10658
11846
|
}));
|
|
10659
11847
|
};
|
|
10660
|
-
|
|
10661
|
-
|
|
11848
|
+
/** A morph from the current shape to `icon` needs regions when either
|
|
11849
|
+
* side is filled, or when the shape in flight already is a region. */
|
|
11850
|
+
const needsRegion = (icon) => !rest && regionFlight || paintOf(icon) === "fill" || paintOf(target) === "fill";
|
|
11851
|
+
const retarget = (icon, pop) => {
|
|
11852
|
+
if (!rest && plan && out && !drawn) {
|
|
11853
|
+
t = 0;
|
|
11854
|
+
interpPolar(plan, 0, out);
|
|
11855
|
+
}
|
|
11856
|
+
if (pop || !rest && split) {
|
|
11857
|
+
const from = snapshot();
|
|
11858
|
+
popBase = rest ? target : null;
|
|
11859
|
+
popFrom = paint;
|
|
11860
|
+
plan = popPlan(from, sampledOf(icon));
|
|
11861
|
+
split = from.length;
|
|
11862
|
+
regionFlight = false;
|
|
11863
|
+
} else if (needsRegion(icon)) {
|
|
11864
|
+
const mod = regionMod;
|
|
11865
|
+
plan = rest || !out ? mod.regionPlan(target, icon, strokeWidth) : mod.regionPlanFrom(regionFlight ? snapshot() : serialize(out, closed ?? void 0), icon, strokeWidth);
|
|
11866
|
+
regionFlight = true;
|
|
11867
|
+
split = 0;
|
|
11868
|
+
paintAs("fill");
|
|
11869
|
+
} else {
|
|
11870
|
+
plan = rest ? planBetween(target, icon) : buildPlan(snapshot(), sampledOf(icon));
|
|
11871
|
+
regionFlight = false;
|
|
11872
|
+
}
|
|
10662
11873
|
out = allocOutputs(plan);
|
|
11874
|
+
drawn = false;
|
|
10663
11875
|
closed = plan.items.map((it) => it.closed);
|
|
10664
11876
|
target = icon;
|
|
10665
11877
|
rest = false;
|
|
10666
11878
|
};
|
|
11879
|
+
const whenRegion = (icon, run, fallback) => {
|
|
11880
|
+
if (regionMod || !rest && split || !needsRegion(icon)) return false;
|
|
11881
|
+
const req = {};
|
|
11882
|
+
pending = req;
|
|
11883
|
+
const give = () => {
|
|
11884
|
+
if (dead || pending !== req) return;
|
|
11885
|
+
pending = null;
|
|
11886
|
+
fallback();
|
|
11887
|
+
};
|
|
11888
|
+
const load = preloadRegion();
|
|
11889
|
+
if (Date.now() - regionSince > REGION_WAIT_MS) {
|
|
11890
|
+
give();
|
|
11891
|
+
return true;
|
|
11892
|
+
}
|
|
11893
|
+
const timer = setTimeout(give, REGION_WAIT_MS - (Date.now() - regionSince));
|
|
11894
|
+
load.then(() => {
|
|
11895
|
+
clearTimeout(timer);
|
|
11896
|
+
if (dead || pending !== req) return;
|
|
11897
|
+
pending = null;
|
|
11898
|
+
run();
|
|
11899
|
+
}, () => {
|
|
11900
|
+
clearTimeout(timer);
|
|
11901
|
+
give();
|
|
11902
|
+
});
|
|
11903
|
+
return true;
|
|
11904
|
+
};
|
|
10667
11905
|
const setNow = (icon) => {
|
|
10668
11906
|
stop();
|
|
11907
|
+
pending = null;
|
|
10669
11908
|
target = icon;
|
|
10670
11909
|
settle();
|
|
10671
11910
|
};
|
|
@@ -10676,31 +11915,44 @@ function createMorph(el, icon, options) {
|
|
|
10676
11915
|
if (typeof matchMedia === "undefined") return false;
|
|
10677
11916
|
return matchMedia?.("(prefers-reduced-motion: reduce)").matches ?? false;
|
|
10678
11917
|
};
|
|
10679
|
-
const seek = (icon, tt) => {
|
|
11918
|
+
const seek = (icon, tt, pop = false) => {
|
|
10680
11919
|
if (dead) return;
|
|
10681
|
-
|
|
11920
|
+
if (!pop && whenRegion(icon, () => seek(icon, tt), () => seek(icon, tt, true))) return;
|
|
11921
|
+
pending = null;
|
|
11922
|
+
let reuse = !rest && plan !== null && icon === target;
|
|
11923
|
+
if (reuse && split && regionMod && popBase !== null) {
|
|
11924
|
+
target = popBase;
|
|
11925
|
+
rest = true;
|
|
11926
|
+
reuse = false;
|
|
11927
|
+
}
|
|
10682
11928
|
stop();
|
|
10683
11929
|
spring.v = 0;
|
|
10684
|
-
if (!reuse) retarget(icon);
|
|
11930
|
+
if (!reuse) retarget(icon, pop);
|
|
10685
11931
|
render(tt);
|
|
10686
11932
|
};
|
|
11933
|
+
const fly = (icon, sp, pop) => {
|
|
11934
|
+
if (dead) return;
|
|
11935
|
+
if (icon === target && (rest || flying)) {
|
|
11936
|
+
pending = null;
|
|
11937
|
+
return;
|
|
11938
|
+
}
|
|
11939
|
+
if (motionOff()) {
|
|
11940
|
+
setNow(icon);
|
|
11941
|
+
return;
|
|
11942
|
+
}
|
|
11943
|
+
if (!pop && whenRegion(icon, () => fly(icon, sp, false), () => fly(icon, sp, true))) return;
|
|
11944
|
+
pending = null;
|
|
11945
|
+
const { k, c } = resolveSpring(sp);
|
|
11946
|
+
spring.config(k, c);
|
|
11947
|
+
retarget(icon, pop);
|
|
11948
|
+
spring.start();
|
|
11949
|
+
if (!flying) {
|
|
11950
|
+
flying = true;
|
|
11951
|
+
addTicker(tick);
|
|
11952
|
+
}
|
|
11953
|
+
};
|
|
10687
11954
|
return {
|
|
10688
|
-
morphTo(icon, sp)
|
|
10689
|
-
if (dead) return;
|
|
10690
|
-
if (icon === target && (rest || flying)) return;
|
|
10691
|
-
if (motionOff()) {
|
|
10692
|
-
setNow(icon);
|
|
10693
|
-
return;
|
|
10694
|
-
}
|
|
10695
|
-
const { k, c } = resolveSpring(sp);
|
|
10696
|
-
spring.config(k, c);
|
|
10697
|
-
retarget(icon);
|
|
10698
|
-
spring.start();
|
|
10699
|
-
if (!flying) {
|
|
10700
|
-
flying = true;
|
|
10701
|
-
addTicker(tick);
|
|
10702
|
-
}
|
|
10703
|
-
},
|
|
11955
|
+
morphTo: (icon, sp) => fly(icon, sp, false),
|
|
10704
11956
|
set(icon) {
|
|
10705
11957
|
if (dead) return;
|
|
10706
11958
|
setNow(icon);
|
|
@@ -10718,22 +11970,42 @@ function createMorph(el, icon, options) {
|
|
|
10718
11970
|
set reducedMotion(v) {
|
|
10719
11971
|
reducedMotion = v;
|
|
10720
11972
|
},
|
|
11973
|
+
get strokeWidth() {
|
|
11974
|
+
return strokeWidth;
|
|
11975
|
+
},
|
|
11976
|
+
set strokeWidth(v) {
|
|
11977
|
+
strokeWidth = v;
|
|
11978
|
+
},
|
|
10721
11979
|
destroy() {
|
|
10722
11980
|
stop();
|
|
10723
11981
|
dead = true;
|
|
11982
|
+
pending = null;
|
|
10724
11983
|
plan = null;
|
|
10725
11984
|
out = null;
|
|
10726
11985
|
closed = null;
|
|
10727
11986
|
}
|
|
10728
11987
|
};
|
|
10729
11988
|
}
|
|
11989
|
+
// node_modules/morphicons/dist/controller--7SSBggk.js
|
|
11990
|
+
init_region_BjECuWZR();
|
|
11991
|
+
/** The endpoint a frozen controlled pair renders at rest at `t` (SSR
|
|
11992
|
+
* included), or null mid-way for a stroke pair, interpolated with the pure
|
|
11993
|
+
* core. A pair with a fill endpoint scrubs as a region morph, which only the
|
|
11994
|
+
* lazy chunk draws: mid-way it renders `from` until the client's first seek. */
|
|
11995
|
+
function frozenEnd(from, to, t) {
|
|
11996
|
+
if (t >= 1) return to;
|
|
11997
|
+
if (t <= 0 || paintOf(from) === "fill" || paintOf(to) === "fill") return from;
|
|
11998
|
+
return null;
|
|
11999
|
+
}
|
|
10730
12000
|
// node_modules/morphicons/dist/react.js
|
|
12001
|
+
init_normalize_CYnN3Npw();
|
|
12002
|
+
init_resample_CXlaZ5ZQ();
|
|
10731
12003
|
const useIsoLayoutEffect = typeof document === "undefined" ? react.useEffect : react.useLayoutEffect;
|
|
10732
12004
|
/** Frozen shape of the from→to pair at t, using the pure core (SSR-safe).
|
|
10733
12005
|
* At exact endpoints returns the canonical `d` (real curves, not polyline). */
|
|
10734
12006
|
function frozenD(from, to, t) {
|
|
10735
|
-
|
|
10736
|
-
if (
|
|
12007
|
+
const end = frozenEnd(from, to, t);
|
|
12008
|
+
if (end !== null) return canonicalD(end);
|
|
10737
12009
|
const plan = buildPlan(resampleIcon(from), resampleIcon(to));
|
|
10738
12010
|
const out = allocOutputs(plan);
|
|
10739
12011
|
interpPolar(plan, t, out);
|
|
@@ -10747,12 +12019,23 @@ const MorphIcon = (0, react.forwardRef)(function MorphIcon(props, ref) {
|
|
|
10747
12019
|
if (controlled) return frozenD(from, to, progress ?? 0);
|
|
10748
12020
|
return initialIcon !== void 0 ? canonicalD(initialIcon) : "";
|
|
10749
12021
|
});
|
|
12022
|
+
const [initialPaint] = (0, react.useState)(() => {
|
|
12023
|
+
const a = restAttrs(controlled ? frozenEnd(from, to, progress ?? 0) ?? ((progress ?? 0) < .5 ? from : to) : initialIcon);
|
|
12024
|
+
return a && {
|
|
12025
|
+
fill: a.fill,
|
|
12026
|
+
stroke: a.stroke,
|
|
12027
|
+
fillRule: a["fill-rule"]
|
|
12028
|
+
};
|
|
12029
|
+
});
|
|
10750
12030
|
const pathRef = (0, react.useRef)(null);
|
|
10751
12031
|
const morphRef = (0, react.useRef)(null);
|
|
10752
12032
|
const springRef = (0, react.useRef)(spring);
|
|
10753
12033
|
springRef.current = spring;
|
|
10754
12034
|
const rmRef = (0, react.useRef)(reducedMotion);
|
|
10755
12035
|
rmRef.current = reducedMotion;
|
|
12036
|
+
const gridSw = Number(absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth);
|
|
12037
|
+
const swRef = (0, react.useRef)(gridSw);
|
|
12038
|
+
swRef.current = gridSw;
|
|
10756
12039
|
const prevIcon = (0, react.useRef)(icon);
|
|
10757
12040
|
const prevControlled = (0, react.useRef)(controlled);
|
|
10758
12041
|
const dead = (0, react.useRef)(false);
|
|
@@ -10766,14 +12049,20 @@ const MorphIcon = (0, react.forwardRef)(function MorphIcon(props, ref) {
|
|
|
10766
12049
|
if (morphRef.current) return morphRef.current;
|
|
10767
12050
|
const el = pathRef.current;
|
|
10768
12051
|
if (dead.current || !el) return null;
|
|
10769
|
-
morphRef.current = createMorph(el, birth, {
|
|
12052
|
+
morphRef.current = createMorph(el, birth, {
|
|
12053
|
+
reducedMotion: rmRef.current,
|
|
12054
|
+
strokeWidth: swRef.current
|
|
12055
|
+
});
|
|
10770
12056
|
return morphRef.current;
|
|
10771
12057
|
}, []);
|
|
10772
12058
|
useIsoLayoutEffect(() => {
|
|
10773
12059
|
dead.current = false;
|
|
10774
12060
|
const el = pathRef.current;
|
|
10775
12061
|
if (el && initialIcon !== void 0) {
|
|
10776
|
-
const m = createMorph(el, controlled ? from : initialIcon, {
|
|
12062
|
+
const m = createMorph(el, controlled ? from : initialIcon, {
|
|
12063
|
+
reducedMotion: rmRef.current,
|
|
12064
|
+
strokeWidth: swRef.current
|
|
12065
|
+
});
|
|
10777
12066
|
morphRef.current = m;
|
|
10778
12067
|
if (controlled) {
|
|
10779
12068
|
pair.current = [from, to];
|
|
@@ -10798,6 +12087,10 @@ const MorphIcon = (0, react.forwardRef)(function MorphIcon(props, ref) {
|
|
|
10798
12087
|
const m = morphRef.current;
|
|
10799
12088
|
if (m) m.reducedMotion = reducedMotion ?? "never";
|
|
10800
12089
|
}, [reducedMotion]);
|
|
12090
|
+
(0, react.useEffect)(() => {
|
|
12091
|
+
const m = morphRef.current;
|
|
12092
|
+
if (m) m.strokeWidth = gridSw;
|
|
12093
|
+
}, [gridSw]);
|
|
10801
12094
|
(0, react.useEffect)(() => {
|
|
10802
12095
|
const left = prevControlled.current && !controlled;
|
|
10803
12096
|
prevControlled.current = controlled;
|
|
@@ -10868,6 +12161,7 @@ const MorphIcon = (0, react.forwardRef)(function MorphIcon(props, ref) {
|
|
|
10868
12161
|
viewBox: "0 0 24 24",
|
|
10869
12162
|
fill: "none",
|
|
10870
12163
|
stroke: color,
|
|
12164
|
+
color,
|
|
10871
12165
|
strokeWidth: sw,
|
|
10872
12166
|
strokeLinecap: "round",
|
|
10873
12167
|
strokeLinejoin: "round",
|
|
@@ -10876,7 +12170,8 @@ const MorphIcon = (0, react.forwardRef)(function MorphIcon(props, ref) {
|
|
|
10876
12170
|
...rest,
|
|
10877
12171
|
children: [label ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("title", { children: label }) : null, /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
10878
12172
|
ref: pathRef,
|
|
10879
|
-
d: initialD
|
|
12173
|
+
d: initialD,
|
|
12174
|
+
...initialPaint
|
|
10880
12175
|
})]
|
|
10881
12176
|
});
|
|
10882
12177
|
});
|
|
@@ -10964,6 +12259,8 @@ const ICONS = {
|
|
|
10964
12259
|
close: X,
|
|
10965
12260
|
delete: Trash,
|
|
10966
12261
|
file: File,
|
|
12262
|
+
folder: Folder,
|
|
12263
|
+
folderOpen: FolderOpen,
|
|
10967
12264
|
download: Download,
|
|
10968
12265
|
inspect: Search,
|
|
10969
12266
|
view: Eye,
|
|
@@ -11095,6 +12392,18 @@ const CloseIcon = (p) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, {
|
|
|
11095
12392
|
name: "close",
|
|
11096
12393
|
...p
|
|
11097
12394
|
});
|
|
12395
|
+
const FolderIcon = (p) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, {
|
|
12396
|
+
name: "folder",
|
|
12397
|
+
...p
|
|
12398
|
+
});
|
|
12399
|
+
const FolderOpenIcon = (p) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, {
|
|
12400
|
+
name: "folderOpen",
|
|
12401
|
+
...p
|
|
12402
|
+
});
|
|
12403
|
+
const FileIcon = (p) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, {
|
|
12404
|
+
name: "file",
|
|
12405
|
+
...p
|
|
12406
|
+
});
|
|
11098
12407
|
const ArrowRightIcon = (p) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, {
|
|
11099
12408
|
name: "arrowRight",
|
|
11100
12409
|
...p
|
|
@@ -14533,7 +15842,7 @@ function getState(open) {
|
|
|
14533
15842
|
}
|
|
14534
15843
|
__name(getState, "getState");
|
|
14535
15844
|
// \0config-manager-css:/home/runner/work/dsh-config-manager/dsh-config-manager/src/client/config-manager.module.css.js
|
|
14536
|
-
const css = "._367UGW_section{height:100%;min-height:0;font-family:var(--dsw-font-family);font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);flex-direction:column;line-height:1.5;display:flex;position:relative;overflow:hidden}body{--cm-disk-card-h:420px;--cm-text-1:var(--dsw-alias-label-primary);--cm-text-2:var(--dsw-alias-label-secondary);--cm-text-3:var(--dsw-alias-label-tertiary);--cm-text-on-accent:var(--dsw-alias-label-primary-foreground);--cm-surface-1:var(--dsw-alias-bg-layer-1);--cm-surface-2:var(--dsw-alias-bg-layer-2);--cm-surface-hover:var(--dsw-alias-interactive-bg-hover);--cm-line-1:var(--dsw-alias-border-l1);--cm-line-2:var(--dsw-alias-border-l2);--cm-input-bg:var(--dsw-specific-input-major);--cm-chat-bubble:var(--dsw-specific-bubble,color-mix(in srgb, var(--cm-text-1) 12%, transparent));--cm-accent:var(--dsw-alias-state-business-primary);--cm-accent-fill:var(--dsw-alias-button-info-fill);--cm-accent-hover:var(--dsw-alias-button-info-hover);--cm-ok:var(--dsw-alias-state-success-primary);--cm-info:var(--cm-accent);--cm-warn:var(--dsw-alias-state-warn-primary);--cm-error:var(--dsw-alias-state-error-primary);--cm-idle:var(--dsw-alias-state-idle-primary,var(--dsw-alias-label-tertiary));--cm-brand:var(--dsw-alias-brand-primary,var(--cm-accent));--cm-warn-label:var(--dsw-alias-state-warn-label,var(--cm-warn));--cm-fs-meta:var(--dsw-font-xxxs-11-font-size,11px);--cm-fs-table:var(--dsw-font-xxs-12-font-size,12px);--cm-fs-base:12.5px;--cm-fs-title:var(--dsw-font-xs-13-font-size,13px);--cm-sp-1:2px;--cm-sp-2:4px;--cm-sp-3:6px;--cm-sp-4:8px;--cm-sp-5:10px;--cm-sp-6:12px;--cm-sp-7:14px;--cm-sp-8:16px;--cm-sp-9:24px;--cm-r-1:var(--dsw-radius-xs,4px);--cm-r-2:var(--dsw-radius-sm,8px);--cm-r-3:var(--dsw-radius-md,12px);--cm-r-surface:var(--dsw-radius-lg,16px);--cm-r-pill:999px;--cm-h-sm:24px;--cm-h-md:28px;--cm-h-lg:32px;--cm-menu-surface:var(--dsw-menu-surface-fill,var(--dsw-alias-bg-layer-2));--cm-menu-backdrop:var(--dsw-menu-backdrop-filter,none);--cm-menu-icon:var(--dsw-alias-menu-icon,var(--dsw-alias-label-secondary));--cm-tooltip-bg:var(--dsw-alias-tooltip-bg,var(--dsw-alias-bg-layer-2));--cm-tooltip-fg:var(--dsw-static-neutral-bluish-00,var(--dsw-alias-label-primary));--cm-toast-bg:var(--dsw-alias-toast-bg,var(--dsw-alias-bg-layer-2));--cm-toast-fg:var(--dsw-alias-toast-label,var(--dsw-alias-label-primary));--cm-mask:var(--dsw-alias-bg-mask-1,color-mix(in srgb, var(--dsw-alias-bg-base) 55%, transparent));--cm-mask-blur:var(--dsw-mask-blur,none);--cm-skeleton:var(--dsw-alias-bg-skeleton,color-mix(in srgb, var(--dsw-alias-label-tertiary) 14%, transparent));--cm-hover:var(--dsw-alias-interactive-bg-hover);--cm-active:var(--dsw-alias-interactive-bg-active,var(--dsw-alias-interactive-bg-hover));--cm-hover-danger:var(--dsw-alias-interactive-bg-hover-danger,color-mix(in srgb, var(--cm-error) 12%, transparent));--cm-ghost-active-fill:var(--dsw-alias-button-ghost-active-fill,color-mix(in srgb, var(--cm-accent) 16%, transparent));--cm-ghost-active-border:var(--dsw-alias-button-ghost-active-border,color-mix(in srgb, var(--cm-accent) 45%, transparent));--cm-primary-fill:var(--dsw-alias-button-primary-fill,var(--cm-accent-fill));--cm-primary-hover:var(--dsw-alias-button-primary-hover,var(--cm-accent-hover));--cm-shadow-1:var(--dsw-elevation-soft,0 10px 26px color-mix(in srgb, var(--dsw-alias-bg-base) 45%, transparent));--cm-shadow-2:var(--dsw-elevation-prominent,0 12px 32px color-mix(in srgb, var(--dsw-alias-bg-base) 40%, transparent));--cm-focus-width:var(--dsw-focus-ring-width,2px);--cm-focus-color:var(--dsw-focus-ring-color,var(--cm-accent));--cm-z-raise:1;--cm-z-sticky:2;--cm-z-task:90;--cm-z-mask:100;--cm-z-modal:101;--cm-z-pop:110;--cm-z-toast:120;--cm-motion-fast:.12s;--cm-motion-base:.18s;--cm-motion-slow:.3s;--cm-motion-ease-out:cubic-bezier(.16, 1, .3, 1);--cm-motion-ease-in-out:cubic-bezier(.4, 0, .6, 1)}._367UGW_section :is(button,a,input,select,textarea,[role=tab]){transition-property:background-color,border-color,color;transition-duration:var(--cm-motion-fast);transition-timing-function:ease}._367UGW_section :is(button,a,input,select,textarea,[role=tab]):focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:2px}._367UGW_mono{font-variant-numeric:tabular-nums;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}._367UGW_section svg{color:inherit;flex:none}._367UGW_shellNav{flex:none;align-items:center;gap:8px;padding:8px;display:flex}._367UGW_navStrip{border-radius:var(--cm-r-3);background:var(--cm-hover);border:none;flex:auto;align-items:center;gap:2px;min-width:0;padding:2px;display:flex;overflow:hidden}._367UGW_navTab,._367UGW_navMore{border-radius:var(--cm-r-2);height:24px;font:inherit;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;flex:none;align-items:center;gap:4px;padding:0 10px;font-weight:500;display:inline-flex;position:relative}._367UGW_navTab:hover:not(:disabled),._367UGW_navMore:hover:not(:disabled){color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}._367UGW_navMore:disabled{opacity:.4;cursor:default}._367UGW_navTab:focus-visible,._367UGW_navMore:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px;border-radius:var(--cm-r-2)}._367UGW_navTab[data-active],._367UGW_navMore[data-active]{background:var(--cm-ghost-active-fill);box-shadow:inset 0 0 0 1px var(--cm-ghost-active-border);color:var(--dsw-alias-label-primary);font-weight:600}._367UGW_navDot{background:var(--cm-error);border-radius:50%;flex:none;width:6px;height:6px}._367UGW_navMoreRoot{flex:none}._367UGW_navMeasure{visibility:hidden;pointer-events:none;align-items:center;gap:2px;padding:2px;display:flex;position:absolute;top:0;left:-9999px}._367UGW_navActions{flex:none;align-items:center;gap:4px;margin-left:4px;display:flex}._367UGW_navActions ._367UGW_ghostButton[data-active]{border-color:color-mix(in srgb, var(--cm-accent) 55%, transparent);color:var(--cm-accent)}._367UGW_iconBtn{border-radius:var(--cm-r-2);width:28px;height:28px;font:inherit;font-size:var(--cm-fs-title);color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;justify-content:center;align-self:center;align-items:center;padding:0;line-height:1.25;display:inline-flex}._367UGW_iconBtn:hover{background:var(--cm-hover);color:var(--dsw-alias-label-primary)}._367UGW_iconBtn:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px}._367UGW_iconBtn:disabled{opacity:.4;cursor:default}._367UGW_iconBtn[data-size=sm]{border-radius:var(--cm-r-1);width:18px;height:18px}._367UGW_iconBtn[data-active]{background:var(--cm-ghost-active-fill);box-shadow:inset 0 0 0 1px var(--cm-ghost-active-border);color:var(--cm-accent)}._367UGW_iconBtn[data-danger]{color:var(--cm-error)}._367UGW_iconBtn[data-danger]:hover{background:color-mix(in srgb, var(--cm-error) 12%, transparent);border-color:var(--cm-error);color:var(--cm-error)}._367UGW_shellMain{overscroll-behavior:contain;flex-direction:column;flex:auto;min-height:0;display:flex;overflow-y:auto}._367UGW_pagePad{min-height:0;animation:_367UGW_pageEnter var(--cm-motion-base) var(--cm-motion-ease-out);flex-direction:column;flex:auto;padding:12px 16px 16px;display:flex}@keyframes _367UGW_pageEnter{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}._367UGW_snapshotList>*,._367UGW_dataTable tbody tr{animation:_367UGW_itemEnter var(--cm-motion-base) var(--cm-motion-ease-out) both}._367UGW_snapshotList>:nth-child(2),._367UGW_dataTable tbody tr:nth-child(2){animation-delay:24ms}._367UGW_snapshotList>:nth-child(3),._367UGW_dataTable tbody tr:nth-child(3){animation-delay:48ms}._367UGW_snapshotList>:nth-child(4),._367UGW_dataTable tbody tr:nth-child(4){animation-delay:72ms}._367UGW_snapshotList>:nth-child(n+5),._367UGW_dataTable tbody tr:nth-child(n+5){animation-delay:96ms}@keyframes _367UGW_itemEnter{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}._367UGW_viewEnter{animation:_367UGW_itemEnter var(--cm-motion-base) var(--cm-motion-ease-out);flex-direction:column;flex:auto;gap:10px;min-height:0;display:flex}._367UGW_collapse{visibility:hidden;transition:grid-template-rows var(--cm-motion-base) var(--cm-motion-ease-out), visibility 0s linear var(--cm-motion-base);grid-template-rows:0fr;display:grid}._367UGW_collapse[data-open]{visibility:visible;transition:grid-template-rows var(--cm-motion-base) var(--cm-motion-ease-out), visibility 0s;grid-template-rows:1fr}._367UGW_collapseInner{min-height:0;overflow:hidden}._367UGW_shellContent{flex-direction:column;flex:auto;min-height:0;display:flex;position:relative}._367UGW_taskPanel{z-index:var(--cm-z-task);background:var(--dsw-alias-bg-layer-1);min-height:0;animation:_367UGW_taskPanelIn var(--cm-motion-base) var(--cm-motion-ease-out);flex-direction:column;display:flex;position:absolute;inset:0}@keyframes _367UGW_taskPanelIn{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}._367UGW_taskHead{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:8px;height:44px;padding:0 12px;display:flex}._367UGW_taskTitle{font-size:var(--cm-fs-title);color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:700;overflow:hidden}._367UGW_taskBody{overscroll-behavior:contain;flex:auto;min-height:0;padding:12px 16px 16px;overflow-y:auto}@media (prefers-reduced-motion:reduce){._367UGW_taskPanel{animation:none}}._367UGW_statusBar{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);height:28px;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);white-space:nowrap;flex:none;align-items:center;gap:10px;margin:0 8px 8px;padding:0 10px;display:flex;overflow:hidden}._367UGW_bannerSlot{padding:8px 12px 0}._367UGW_syncChannelBody{margin-top:10px}._367UGW_syncChannelBody ._367UGW_collapseInner{flex-direction:column;gap:10px;display:flex}._367UGW_statusTask{color:var(--dsw-alias-label-secondary);font-weight:600}._367UGW_statusProgress{background:color-mix(in srgb, var(--cm-accent) 20%, transparent);border-radius:999px;flex:none;width:60px;height:4px;display:inline-block;position:relative;overflow:hidden}._367UGW_statusProgress:after{content:\"\";background:var(--cm-accent);width:40%;animation:_367UGW_statusIndeterminate 1.2s var(--cm-motion-ease-in-out) infinite;border-radius:999px;position:absolute;inset:0 auto 0 0}@keyframes _367UGW_statusIndeterminate{0%{transform:translate(-100%)}to{transform:translate(250%)}}._367UGW_statusDot{width:10px;height:10px;color:var(--cm-idle);transition:color var(--cm-motion-fast) ease;border-radius:50%;flex:none;display:inline-block}._367UGW_statusDot[data-kind=ok]{color:var(--cm-ok)}._367UGW_statusDot[data-kind=info]{color:var(--cm-accent)}._367UGW_statusDot[data-kind=warn]{color:var(--cm-warn)}._367UGW_statusDot[data-kind=error]{color:var(--cm-error)}._367UGW_statusDot[data-pulse]{animation:1.2s ease-in-out infinite _367UGW_statusPulse}._367UGW_statusDot:after{content:\"\";background:currentColor;border-radius:50%;width:60%;height:60%;margin:20%;display:block}@keyframes _367UGW_statusPulse{0%,to{opacity:1}50%{opacity:.35}}._367UGW_statusText{text-overflow:ellipsis;min-width:0;overflow:hidden}._367UGW_statusSpacer{flex:auto}._367UGW_primaryButton,._367UGW_ghostButton,._367UGW_dangerButton{border-radius:var(--cm-r-2);height:28px;font:inherit;font-size:var(--cm-fs-table);white-space:nowrap;cursor:pointer;user-select:none;border:.5px solid #0000;justify-content:center;align-items:center;gap:4px;padding:0 10px;font-weight:500;line-height:1.25;display:inline-flex}._367UGW_primaryButton{background:var(--cm-primary-fill);color:var(--cm-text-on-accent)}._367UGW_primaryButton:hover:not(:disabled){background:var(--cm-primary-hover)}._367UGW_ghostButton{border-color:var(--dsw-alias-border-l3);color:var(--dsw-alias-label-primary);background:0 0}._367UGW_ghostButton:hover:not(:disabled){background:var(--cm-hover)}._367UGW_ghostButton:active:not(:disabled){background:var(--cm-active)}._367UGW_dangerButton{border-color:color-mix(in srgb, var(--cm-error) 45%, transparent);color:var(--cm-error);background:0 0}._367UGW_dangerButton:hover:not(:disabled){background:var(--cm-hover-danger);border-color:var(--cm-error)}._367UGW_primaryButton:focus-visible,._367UGW_ghostButton:focus-visible,._367UGW_dangerButton:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px}._367UGW_primaryButton:disabled,._367UGW_ghostButton:disabled,._367UGW_dangerButton:disabled{opacity:.4;cursor:default}._367UGW_primaryButton[data-size=sm],._367UGW_ghostButton[data-size=sm],._367UGW_dangerButton[data-size=sm]{height:24px;font-size:var(--cm-fs-meta);border-radius:var(--cm-r-2);padding:0 8px}._367UGW_input{border:.5px solid var(--dsw-alias-border-l4);border-radius:var(--cm-r-2);background:var(--dsw-specific-input-major);height:28px;font:inherit;font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);box-sizing:border-box;padding:0 8px}._367UGW_field>._367UGW_input,._367UGW_field>._367UGW_selectRoot{width:100%;position:relative}._367UGW_input::placeholder{color:var(--dsw-alias-label-dimmed)}._367UGW_input:hover{border-color:color-mix(in srgb, var(--cm-accent) 40%, var(--dsw-alias-border-l2))}._367UGW_input:focus{border-color:var(--cm-accent);outline:none}._367UGW_input:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}._367UGW_input[type=password]{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-table)}._367UGW_selectRoot{vertical-align:middle;min-width:0;max-width:100%;font-size:var(--cm-fs-base);display:inline-block;position:relative}._367UGW_selectTrigger{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l4);border-radius:var(--cm-r-2);background:var(--dsw-specific-input-major);width:100%;height:28px;font:inherit;font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);text-align:left;cursor:pointer;transition:border-color var(--cm-motion-fast) ease, box-shadow var(--cm-motion-fast) ease;align-items:center;gap:6px;padding:0 8px;display:flex}._367UGW_selectTrigger:hover{border-color:color-mix(in srgb, var(--cm-accent) 40%, var(--dsw-alias-border-l2))}._367UGW_selectTrigger:focus-visible,._367UGW_selectRoot[data-open] ._367UGW_selectTrigger{border-color:var(--cm-accent);outline:none}._367UGW_selectTrigger:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}._367UGW_selectLabel{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}._367UGW_selectChevron{color:var(--dsw-alias-label-secondary);transition:transform var(--cm-motion-fast) var(--cm-motion-ease-out);flex:none}._367UGW_selectRoot[data-open] ._367UGW_selectChevron{transform:rotate(180deg)}._367UGW_selectMenu{z-index:var(--cm-z-pop);box-sizing:border-box;overscroll-behavior:contain;border-radius:var(--cm-r-surface);background:var(--cm-menu-surface);max-width:260px;max-height:220px;backdrop-filter:var(--cm-menu-backdrop);box-shadow:var(--cm-shadow-2);transform-origin:top;animation:_367UGW_selectMenuIn var(--cm-motion-fast) var(--cm-motion-ease-out);border:0;padding:4px;position:absolute;overflow-y:auto}._367UGW_selectRoot[data-align=end] ._367UGW_selectMenu{left:auto;right:0}._367UGW_selectMenuPortal{pointer-events:auto;visibility:hidden}._367UGW_selectMenuPortal[data-ready]{visibility:visible}@keyframes _367UGW_selectMenuIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}._367UGW_selectOption{border-radius:var(--cm-r-3);font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);cursor:pointer;align-items:center;gap:8px;padding:6px 8px;display:flex}._367UGW_selectOption[data-active]{background:var(--cm-hover)}._367UGW_selectOption[aria-selected=true],._367UGW_selectOption[aria-checked=true]{color:var(--cm-accent);background:var(--cm-ghost-active-fill);box-shadow:inset 2px 0 0 var(--cm-accent);font-weight:600}._367UGW_selectOption[data-disabled]{opacity:.4;cursor:default}._367UGW_selectOptionLabel{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}._367UGW_libraryFilters{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);flex:none;align-items:center;gap:2px;margin-top:8px;padding:2px;display:flex;overflow:hidden}._367UGW_libraryFilter{border-radius:var(--cm-r-2);height:24px;font:inherit;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;flex:none;align-items:center;gap:4px;padding:0 8px;display:inline-flex}._367UGW_libraryFilter:hover{background:var(--dsw-alias-interactive-bg-hover)}._367UGW_libraryFilter[data-active]{color:var(--cm-accent);background:color-mix(in srgb, var(--cm-accent) 16%, transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--cm-accent) 45%, transparent);font-weight:600}._367UGW_libraryFilterCount{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary)}._367UGW_libraryFilter[data-active] ._367UGW_libraryFilterCount{color:inherit}._367UGW_librarySearch{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);border-radius:var(--cm-r-2);background:var(--dsw-specific-input-major);width:100%;height:28px;font:inherit;font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);flex:none;margin-top:8px;padding:0 8px}._367UGW_librarySearch:focus-visible{border-color:var(--cm-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--cm-accent) 18%, transparent);outline:none}._367UGW_libraryFooter{border-top:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:8px;margin-top:8px;padding-top:8px;display:flex}._367UGW_libraryCount{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary)}._367UGW_artifactList{overscroll-behavior:contain;flex:auto;min-height:0;margin:0;padding:0;list-style:none;overflow-y:auto}._367UGW_libraryListState{flex-direction:column;flex:auto;justify-content:center;min-height:0;display:flex}._367UGW_librarySkeletonRegion{justify-content:flex-start;overflow:hidden}._367UGW_artifactRow{border-bottom:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 60%, transparent)}._367UGW_artifactRow:last-child{border-bottom:none}._367UGW_artifactRow[data-expanded]{background:color-mix(in srgb, var(--cm-accent) 5%, transparent)}._367UGW_artifactRowHead{box-sizing:border-box;cursor:pointer;align-items:center;gap:8px;min-height:52px;padding:8px 10px;display:flex}._367UGW_artifactRowHead:hover{background:var(--dsw-alias-interactive-bg-hover)}._367UGW_artifactExpand{border-radius:var(--cm-r-1);width:20px;height:20px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}._367UGW_artifactExpand:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px}._367UGW_artifactMain{flex:auto;min-width:0}._367UGW_artifactTitle{align-items:center;gap:6px;min-width:0;display:flex}._367UGW_artifactName{font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}._367UGW_artifactMeta{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;overflow:hidden}._367UGW_artifactBadges,._367UGW_artifactActions{flex:none;align-items:center;gap:4px;display:flex}._367UGW_artifactDetailWrap{transition:grid-template-rows var(--cm-motion-base) var(--cm-motion-ease-out);grid-template-rows:0fr;display:grid}._367UGW_artifactRow[data-expanded] ._367UGW_artifactDetailWrap{grid-template-rows:1fr}._367UGW_artifactDetailInner{min-height:0;transition:padding var(--cm-motion-base) var(--cm-motion-ease-out);padding:0 10px 0 38px;overflow:hidden}._367UGW_artifactRow[data-expanded] ._367UGW_artifactDetailInner{padding:2px 10px 10px 38px}._367UGW_artifactDetailInner>*{opacity:0;transition:opacity var(--cm-motion-fast) var(--cm-motion-ease-out)}._367UGW_artifactRow[data-expanded] ._367UGW_artifactDetailInner>*{opacity:1;transition-delay:60ms}._367UGW_artifactRow:not([data-expanded]) ._367UGW_artifactDetailInner>*{transition-delay:0s}._367UGW_paletteInput{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);border-radius:var(--cm-r-2);background:var(--dsw-specific-input-major);width:100%;height:32px;font:inherit;font-size:var(--cm-fs-title);color:var(--dsw-alias-label-primary);padding:0 10px}._367UGW_paletteInput:focus-visible{border-color:var(--cm-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--cm-accent) 18%, transparent);outline:none}._367UGW_paletteList{overscroll-behavior:contain;max-height:280px;margin-top:8px;overflow-y:auto}._367UGW_paletteGroup{font-size:var(--cm-fs-meta);letter-spacing:.02em;color:var(--dsw-alias-label-tertiary);user-select:none;padding:8px 8px 4px;font-weight:500}._367UGW_paletteGroup:not([data-first]){border-top:1px solid var(--dsw-alias-border-l1);margin-top:4px}._367UGW_paletteItem{border-radius:var(--cm-r-2);font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);cursor:pointer;align-items:center;gap:8px;padding:6px 8px;display:flex}._367UGW_paletteItem[data-active]{background:var(--dsw-alias-interactive-bg-hover)}._367UGW_paletteItem[data-disabled]{opacity:.45;cursor:default}._367UGW_paletteItemLabel{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}._367UGW_paletteItemGroup{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);flex:none}._367UGW_paletteEmpty{font-size:var(--cm-fs-base);color:var(--dsw-alias-label-tertiary);padding:10px 8px}._367UGW_paletteHint{border-top:1px solid var(--dsw-alias-border-l1);font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);margin-top:8px;padding-top:6px}._367UGW_checkboxRow,._367UGW_radioLabel{cursor:pointer;font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);align-items:flex-start;gap:6px;display:flex}._367UGW_checkboxRow input,._367UGW_radioLabel input{width:16px;height:16px;accent-color:var(--cm-brand);cursor:pointer;flex:none;margin:2px 0 0}._367UGW_checkboxRow input:focus-visible,._367UGW_radioLabel input:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:2px}._367UGW_badge{border-radius:var(--cm-r-pill);height:19px;font-size:var(--cm-fs-meta);white-space:nowrap;color:var(--dsw-alias-label-tertiary);border:none;align-items:center;gap:4px;padding:0 8px;font-weight:500;line-height:1.25;display:inline-flex}._367UGW_badge[data-kind=ok]{background:color-mix(in srgb, var(--cm-ok) 10%, transparent);color:var(--cm-ok)}._367UGW_badge[data-kind=info]{background:color-mix(in srgb, var(--cm-accent) 10%, transparent);color:var(--cm-accent)}._367UGW_badge[data-kind=warn]{background:color-mix(in srgb, var(--cm-warn) 12%, transparent);color:var(--cm-warn)}._367UGW_badge[data-kind=error]{background:color-mix(in srgb, var(--cm-error) 10%, transparent);color:var(--cm-error)}._367UGW_badgeHost{align-items:center;display:inline-flex}._367UGW_banner{animation:_367UGW_itemEnter var(--cm-motion-base) var(--cm-motion-ease-out);border-radius:var(--cm-r-3);border:.5px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);font-size:var(--cm-fs-base);box-sizing:border-box;flex-wrap:wrap;align-items:center;gap:6px 10px;width:100%;margin:0 0 10px;padding:8px 12px;display:flex}._367UGW_banner[data-kind=ok]{border-color:color-mix(in srgb, var(--cm-ok) 35%, transparent);background:color-mix(in srgb, var(--cm-ok) 10%, transparent)}._367UGW_banner[data-kind=info]{border-color:color-mix(in srgb, var(--cm-accent) 30%, transparent);background:color-mix(in srgb, var(--cm-accent) 10%, transparent)}._367UGW_banner[data-kind=warn]{border-color:color-mix(in srgb, var(--cm-warn) 40%, transparent);background:color-mix(in srgb, var(--cm-warn) 12%, transparent)}._367UGW_banner[data-kind=error]{border-color:color-mix(in srgb, var(--cm-error) 45%, transparent);background:color-mix(in srgb, var(--cm-error) 10%, transparent)}._367UGW_spinnerWrap{vertical-align:middle;align-items:center;gap:6px;display:inline-flex}._367UGW_spinner{vertical-align:middle;transform-origin:50%;flex:none;width:13px;height:13px;animation:.7s linear infinite _367UGW_spin;display:inline-block}._367UGW_spinnerTrack{fill:none;stroke:color-mix(in srgb, currentColor 30%, transparent);stroke-width:3px}._367UGW_spinnerArc{fill:none;stroke:currentColor;stroke-width:3px;stroke-linecap:round}@keyframes _367UGW_spin{to{transform:rotate(360deg)}}._367UGW_spinnerLabel{font-size:var(--cm-fs-table);color:inherit;opacity:.85}._367UGW_skeletonRoot{flex-direction:column;gap:8px;width:100%;margin-top:8px;display:flex}._367UGW_skeletonBars,._367UGW_skeletonCards{flex-direction:column;gap:8px;display:flex}._367UGW_skeletonBar{border-radius:var(--cm-r-1);background-color:var(--cm-skeleton);background-image:linear-gradient(90deg, transparent, color-mix(in srgb, var(--dsw-alias-label-tertiary) 26%, transparent), transparent);animation:_367UGW_skeletonShimmer 1.3s var(--cm-motion-ease-in-out) infinite;background-position:-160px 0;background-repeat:no-repeat;background-size:160px 100%;display:block}@keyframes _367UGW_skeletonShimmer{to{background-position:calc(100% + 160px) 0}}._367UGW_skeletonTitle{border-radius:var(--cm-r-2);width:42%;height:13px}._367UGW_skeletonLine{height:11px}._367UGW_skeletonBlock{border-radius:var(--cm-r-3);height:46px}._367UGW_skeletonRow{border-radius:var(--cm-r-2);height:30px}._367UGW_skeletonBars>._367UGW_skeletonBar:nth-child(4n+2){width:92%}._367UGW_skeletonBars>._367UGW_skeletonBar:nth-child(4n+3){width:78%}._367UGW_skeletonBars>._367UGW_skeletonBar:nth-child(4n){width:64%}._367UGW_skeletonBars>._367UGW_skeletonBar:nth-child(2){animation-delay:60ms}._367UGW_skeletonBars>._367UGW_skeletonBar:nth-child(3){animation-delay:.12s}._367UGW_skeletonBars>._367UGW_skeletonBar:nth-child(4){animation-delay:.18s}._367UGW_skeletonBars>._367UGW_skeletonBar:nth-child(n+5){animation-delay:.24s}._367UGW_skeletonCard{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);flex-direction:column;gap:8px;padding:12px;display:flex}._367UGW_skeletonCard>._367UGW_skeletonBar:nth-child(2){width:84%}._367UGW_skeletonCard>._367UGW_skeletonBar:nth-child(3){width:56%}._367UGW_skeletonTable{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);overflow:hidden}._367UGW_skeletonTableRow{border-bottom:1px solid var(--dsw-alias-border-l1);align-items:center;gap:10px;padding:8px 10px;display:flex}._367UGW_skeletonTableRow:last-child{border-bottom:none}._367UGW_skeletonTableCell{flex:1 1 0;height:11px}._367UGW_skeletonTableCell:first-child{flex:0 0 40%}._367UGW_skeletonTableCell:last-child{flex:0 0 20%}._367UGW_skeletonRows{flex-direction:column;display:flex}._367UGW_skeletonRowItem{box-sizing:border-box;border-bottom:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 60%, transparent);align-items:center;gap:8px;min-height:52px;padding:8px 10px;display:flex}._367UGW_skeletonRowItem:last-child{border-bottom:none}._367UGW_skeletonRowItem:nth-child(2) ._367UGW_skeletonBar{animation-delay:60ms}._367UGW_skeletonRowItem:nth-child(3) ._367UGW_skeletonBar{animation-delay:.12s}._367UGW_skeletonRowItem:nth-child(4) ._367UGW_skeletonBar{animation-delay:.18s}._367UGW_skeletonRowItem:nth-child(n+5) ._367UGW_skeletonBar{animation-delay:.24s}._367UGW_skeletonRowIcon{flex:none;width:20px;height:20px}._367UGW_skeletonRowBody{flex-direction:column;flex:auto;gap:6px;min-width:0;display:flex}._367UGW_skeletonRowTitle{width:38%;height:12px}._367UGW_skeletonRowMeta{width:24%;height:10px}._367UGW_skeletonRowAction{flex:none;width:56px;height:20px}._367UGW_statValueSkeleton{border-radius:var(--cm-r-1);width:26px;height:12px;display:inline-block}._367UGW_skeletonCaption{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary)}._367UGW_card{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);margin:0 0 10px;padding:12px}._367UGW_groupLabel{font-size:var(--cm-fs-meta);letter-spacing:.02em;color:var(--dsw-alias-label-tertiary);margin-bottom:8px;font-weight:700;display:block}._367UGW_groupHeader{align-items:baseline;gap:8px;margin-bottom:10px;display:flex}._367UGW_groupHeader ._367UGW_groupLabel{white-space:nowrap;flex:none;margin-bottom:0}._367UGW_groupNote{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary)}._367UGW_groupItems{flex-direction:column;gap:6px;display:flex}._367UGW_sectionOptionRow{flex-direction:column;gap:4px;display:flex}._367UGW_field{flex-direction:column;gap:4px;margin:0 0 10px;display:flex}._367UGW_fieldLabel{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);font-weight:600}._367UGW_hint{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);line-height:1.5}._367UGW_formError{font-size:var(--cm-fs-meta);color:var(--cm-error)}._367UGW_infoHint{vertical-align:middle;align-items:center;display:inline-flex}._367UGW_infoHintBtn{border-radius:var(--cm-r-1);width:18px;height:18px;font:inherit;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;line-height:1.25;display:inline-flex}._367UGW_infoHintBtn:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}._367UGW_infoHintBtn[data-open]:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px}._367UGW_infoHintBtn[data-open]{color:var(--dsw-alias-label-primary)}._367UGW_infoHintBtn[data-pinned]{background:color-mix(in srgb, var(--cm-accent) 14%, transparent);color:var(--cm-accent)}._367UGW_infoHintBubble{z-index:var(--cm-z-pop);box-sizing:border-box;border-radius:var(--cm-r-2);background:var(--cm-tooltip-bg);max-width:min(260px,100vw - 24px);max-height:min(480px,100vh - 16px);box-shadow:var(--cm-shadow-1);color:var(--cm-tooltip-fg);font-size:var(--cm-fs-table);white-space:pre-wrap;overflow-wrap:anywhere;pointer-events:none;visibility:hidden;border:0;padding:8px 10px;line-height:1.5;position:fixed;overflow-y:auto}._367UGW_infoHintBubble[data-ready]{visibility:visible;animation:_367UGW_infoHintIn var(--cm-motion-fast) var(--cm-motion-ease-out);transform-origin:top}._367UGW_infoHintBubble[data-ready][data-side=top]{transform-origin:bottom}@keyframes _367UGW_infoHintIn{0%{opacity:0}to{opacity:1}}._367UGW_controlRow{align-items:center;gap:8px;margin:0 0 10px;display:flex}._367UGW_sectionTitleBlock{min-width:0;margin:0 0 10px}._367UGW_sectionTitleRow{align-items:center;gap:8px;min-width:0;display:flex}._367UGW_sectionTitle{font-size:var(--cm-fs-title);color:var(--dsw-alias-label-primary);margin:0;font-weight:700;line-height:1.5}._367UGW_sectionSubtitle{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);margin:1px 0 0}._367UGW_empty{animation:_367UGW_itemEnter var(--cm-motion-base) var(--cm-motion-ease-out);border:1px dashed var(--dsw-alias-border-l2);border-radius:var(--cm-r-3);text-align:center;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-tertiary);box-sizing:border-box;flex-direction:column;justify-content:center;align-items:center;gap:4px;width:100%;padding:24px 16px;display:flex}._367UGW_emptySteps{margin:2px 0 10px}._367UGW_tableWrap{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);margin-bottom:10px;overflow:hidden}._367UGW_tableFixed th,._367UGW_tableFixed td{padding-left:12px;padding-right:12px}._367UGW_tableScroll{max-height:420px;overflow:auto}._367UGW_dataTable{border-collapse:collapse;width:100%;font-size:var(--cm-fs-table)}._367UGW_dataTable th,._367UGW_dataTable td{box-sizing:border-box}._367UGW_tableFixed{table-layout:fixed}._367UGW_tableFixed td,._367UGW_tableFixed th{text-overflow:ellipsis;overflow:hidden}._367UGW_tableCompact th,._367UGW_tableCompact td{padding-left:8px;padding-right:8px}._367UGW_dataTable td._367UGW_dim{white-space:nowrap}._367UGW_dataTable th{z-index:var(--cm-z-raise);text-align:left;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2);border-bottom:.5px solid var(--dsw-alias-border-l2);white-space:nowrap;padding:6px 10px;font-weight:600;position:sticky;top:0}._367UGW_dataTable td{border-bottom:.5px solid var(--dsw-alias-border-l2);vertical-align:middle;color:var(--dsw-alias-label-primary);padding:6px 10px}._367UGW_dataTable tbody tr:last-child td{border-bottom:none}._367UGW_dataTable tbody tr{transition:background-color .1s ease-out}._367UGW_dataTable tbody tr:hover{background:var(--dsw-alias-interactive-bg-hover)}._367UGW_dataTable tbody tr[data-selected]{background:color-mix(in srgb, var(--cm-accent) 9%, transparent)}._367UGW_dataTable ._367UGW_num{text-align:right;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-table);white-space:nowrap}._367UGW_dataTable ._367UGW_dim{color:var(--dsw-alias-label-secondary)}._367UGW_dataTable ._367UGW_cellActions{text-align:right;white-space:nowrap}._367UGW_dataTable td._367UGW_cellActions{text-overflow:clip;overflow:visible}._367UGW_rowActions{align-items:center;gap:2px;display:inline-flex}._367UGW_cellMain{flex-direction:column;justify-content:center;gap:1px;min-width:0;min-height:30px;display:flex}._367UGW_cellTitle{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}._367UGW_cellMeta{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);align-items:center;gap:6px;min-width:0;display:inline-flex;overflow:hidden}._367UGW_cellMetaNoteText{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}._367UGW_actionRow ._367UGW_banner{flex:auto;min-width:0;margin:0}._367UGW_warnText{color:var(--cm-warn)}._367UGW_kvRow{border-bottom:.5px solid var(--dsw-alias-border-l2);font-size:var(--cm-fs-table);align-items:baseline;gap:10px;min-width:0;padding:4px 0;display:flex}._367UGW_kvRow:last-child{border-bottom:none}._367UGW_kvRow+._367UGW_actionRow{margin-top:8px}._367UGW_checkboxRow+._367UGW_actionRow{margin-top:10px}._367UGW_kvKey{width:88px;color:var(--dsw-alias-label-tertiary);font-size:var(--cm-fs-meta);flex:none}._367UGW_kvValue{overflow-wrap:anywhere;flex:auto;min-width:0}._367UGW_kvValue._367UGW_mono{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary)}._367UGW_segGroup,._367UGW_modeTabs{border-radius:var(--cm-r-3);background:var(--cm-hover);border:none;align-items:center;gap:2px;margin:0 0 10px;padding:2px;display:inline-flex}._367UGW_segItem,._367UGW_modeTab{border-radius:var(--cm-r-2);height:24px;font:inherit;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;align-items:center;gap:4px;padding:0 10px;font-weight:500;display:inline-flex}._367UGW_segItem:hover,._367UGW_modeTab:hover{color:var(--dsw-alias-label-primary)}._367UGW_segItem:focus-visible,._367UGW_modeTab:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px}._367UGW_segItem[data-active],._367UGW_modeTab[data-active]{background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);box-shadow:var(--cm-shadow-1);font-weight:500}._367UGW_modeHint{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);margin:-4px 0 10px}._367UGW_stepperDot,._367UGW_stepperLabel{transition:background-color var(--cm-motion-fast) ease, border-color var(--cm-motion-fast) ease, color var(--cm-motion-fast) ease}._367UGW_stepper{scrollbar-width:none;align-items:center;padding:2px 0;display:flex;overflow-x:auto}._367UGW_stepper::-webkit-scrollbar{display:none}._367UGW_stepperStep{flex:none;align-items:center;gap:4px;display:inline-flex}._367UGW_stepperDot{border:1.5px solid var(--dsw-alias-border-l2);width:17px;height:17px;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2);border-radius:50%;flex:none;justify-content:center;align-items:center;font-weight:700;display:inline-flex}._367UGW_stepperDot[data-state=current]{border-color:var(--cm-accent);background:var(--cm-accent);color:var(--dsw-alias-label-primary-foreground)}._367UGW_stepperDot[data-state=done]{background:color-mix(in srgb, var(--cm-ok) 16%, transparent);color:var(--cm-ok);border-color:#0000}._367UGW_stepperLabel{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);white-space:nowrap}._367UGW_stepperStep[data-state=current] ._367UGW_stepperLabel{color:var(--dsw-alias-label-primary);font-weight:600}._367UGW_stepperStep[data-state=done] ._367UGW_stepperLabel{color:var(--dsw-alias-label-secondary)}._367UGW_stepperConnector{background:var(--dsw-alias-border-l2);flex:none;width:14px;height:1.5px;margin:0 4px}._367UGW_stepperStep[data-state=done] ._367UGW_stepperConnector{background:color-mix(in srgb, var(--cm-ok) 45%, transparent)}._367UGW_progressBlock{margin:0 0 10px}._367UGW_progressTrack{border-radius:var(--cm-r-1);background:color-mix(in srgb, var(--dsw-alias-border-l1) 80%, transparent);height:5px;position:relative;overflow:hidden}._367UGW_progressBar{border-radius:var(--cm-r-1);background:var(--cm-accent);transition:width var(--cm-motion-slow) var(--cm-motion-ease-out);position:absolute;inset:0 auto 0 0}._367UGW_progressBarDone{background:var(--cm-ok)}._367UGW_progressBarFailed{background:var(--cm-error)}._367UGW_progressIndeterminate{border-radius:var(--cm-r-1);background:var(--cm-accent);width:34%;animation:_367UGW_indet 1.15s var(--cm-motion-ease-in-out) infinite;position:absolute;top:0;bottom:0}@keyframes _367UGW_indet{0%{left:-34%}to{left:100%}}._367UGW_progressMeta{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);align-items:center;gap:8px;margin-top:4px;display:flex}._367UGW_progressLabel{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}._367UGW_progressPercent{color:var(--dsw-alias-label-tertiary);flex:none;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}._367UGW_progressBadge{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);flex:none;align-items:center;gap:4px;display:inline-flex}._367UGW_progressBadgeCount{border-radius:var(--cm-r-3);background:color-mix(in srgb, var(--cm-info) 14%, transparent);color:var(--dsw-alias-label-secondary);padding:0 4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}._367UGW_progressBadgeSection{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}._367UGW_progressDetail{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);margin-top:2px}._367UGW_planScroll,._367UGW_mergeScroll,._367UGW_reportScroll,._367UGW_confirmScroll,._367UGW_diffScroll,._367UGW_historyScroll,._367UGW_consultScroll{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-base);max-height:380px;overflow:auto}._367UGW_consultScroll{padding:0 6px}._367UGW_logScroll{background:var(--dsw-alias-bg-base);max-height:220px;overflow:auto}._367UGW_dialogMask{z-index:var(--cm-z-mask);background:var(--cm-mask);backdrop-filter:var(--cm-mask-blur);animation:_367UGW_maskIn var(--cm-motion-fast) var(--cm-motion-ease-out);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}@keyframes _367UGW_maskIn{0%{opacity:0}to{opacity:1}}._367UGW_dialogContentCenter{z-index:var(--cm-z-modal);animation:_367UGW_dialogIn var(--cm-motion-base) var(--cm-motion-ease-out);position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes _367UGW_dialogIn{0%{opacity:0}to{opacity:1}}._367UGW_dialogMask[data-state=closed]{animation:_367UGW_maskOut var(--cm-motion-fast) var(--cm-motion-ease-out)}._367UGW_dialogContentCenter[data-state=closed]{animation:_367UGW_dialogOut var(--cm-motion-fast) var(--cm-motion-ease-out)}@keyframes _367UGW_maskOut{to{opacity:0}}@keyframes _367UGW_dialogOut{to{opacity:0;transform:translate(-50%,-50%)scale(.98)}}._367UGW_dialogCard{border-radius:var(--cm-r-surface);background:var(--dsw-alias-bg-layer-2);width:min(640px,100vw - 48px,95%);max-width:calc(100vw - 48px);max-height:min(600px,100vh - 64px,92%);box-shadow:var(--cm-shadow-2);border:0;flex-direction:column;display:flex}._367UGW_dialogHeader{font-size:var(--cm-fs-title);color:var(--dsw-alias-label-primary);padding:12px 16px 0;font-weight:500}._367UGW_dialogHeaderRow{align-items:center;gap:8px;padding:12px 14px 0;display:flex}._367UGW_dialogHeaderRow ._367UGW_dialogHeader{padding:0}._367UGW_dialogClose{margin-left:auto}._367UGW_dialogBody{min-height:0;font-size:var(--cm-fs-base);color:var(--dsw-alias-label-secondary);flex:auto;padding:8px 16px 12px;overflow-y:auto}._367UGW_dialogBodyScroll{scrollbar-gutter:stable;max-height:460px;overflow-y:auto}._367UGW_dialogWide{width:min(720px,100vw - 48px,96%);max-height:min(620px,100vh - 64px,92%)}._367UGW_dialogFooter{border-top:.5px solid var(--dsw-alias-border-l2);justify-content:flex-end;gap:8px;margin:0;padding:10px 16px 14px}._367UGW_updateVersionRow{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;display:flex}._367UGW_updateVersionArrow{color:var(--dsw-alias-label-tertiary)}._367UGW_updateVersionTarget{font-size:var(--cm-fs-title);color:var(--dsw-alias-label-primary);font-weight:600}._367UGW_updateNotesLoading{justify-content:center;padding:24px 0;display:flex}._367UGW_toastViewport{z-index:var(--cm-z-toast);pointer-events:none;flex-direction:column;align-items:flex-end;gap:8px;max-width:calc(100% - 20px);display:flex;position:absolute;bottom:42px;right:10px}._367UGW_toast{pointer-events:auto;border-radius:var(--cm-r-surface);background:var(--cm-toast-bg);width:fit-content;max-width:420px;box-shadow:var(--cm-shadow-2);font-size:var(--cm-fs-title);color:var(--cm-toast-fg);animation:_367UGW_toastIn var(--cm-motion-base) var(--cm-motion-ease-out);border:0;align-items:flex-start;gap:8px;padding:12px 16px;line-height:1.5;display:flex}@keyframes _367UGW_toastIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}._367UGW_toast[data-kind=ok] ._367UGW_toastGlyph{color:var(--cm-ok)}._367UGW_toast[data-kind=info] ._367UGW_toastGlyph{color:var(--cm-accent)}._367UGW_toast[data-kind=warn] ._367UGW_toastGlyph{color:var(--cm-warn-label)}._367UGW_toast[data-kind=error] ._367UGW_toastGlyph{color:var(--cm-error)}._367UGW_toastGlyph{flex:none;margin-top:1px;display:inline-flex}._367UGW_toastText{word-break:break-word;min-width:0}._367UGW_toast>button{flex:none;width:18px;height:18px;margin-left:2px}._367UGW_statusAction{font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;min-width:0;padding:0;display:inline-flex}._367UGW_statusAction:hover{color:var(--dsw-alias-label-primary);text-decoration:underline}._367UGW_statusAction:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px;border-radius:var(--cm-r-1)}._367UGW_runsCenter{flex-direction:column;gap:10px;display:flex}._367UGW_runsSummary{flex-wrap:wrap;align-items:center;gap:8px;display:flex}._367UGW_runsSummaryTitle{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);font-weight:700}._367UGW_runsCardHead{flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 8px;display:flex}._367UGW_runsCardTitle{font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);font-weight:600}._367UGW_runsWarnNote{border:1px solid color-mix(in srgb, var(--cm-warn) 45%, transparent);border-radius:var(--cm-r-2);background:color-mix(in srgb, var(--cm-warn) 10%, transparent);font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);margin:8px 0 0;padding:6px 8px}._367UGW_runsWarnNoteDetail{color:var(--dsw-alias-label-tertiary);margin:4px 0 0}._367UGW_runsCardTime{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);white-space:nowrap;margin-left:auto}._367UGW_runsCounts{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);margin:8px 0 0}._367UGW_runsLogTail{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-2);background:var(--dsw-alias-bg-base);max-height:108px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);margin:8px 0 0;padding:6px 8px;line-height:1.5;overflow-y:auto}._367UGW_runsLogLine{white-space:pre-wrap;word-break:break-all}._367UGW_runsCardActions{flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0 0;display:flex}._367UGW_runsOption{border:1px solid var(--dsw-alias-border-l2);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);width:100%;font:inherit;color:var(--dsw-alias-label-primary);text-align:left;cursor:pointer;flex-direction:column;gap:2px;margin:0 0 8px;padding:8px 10px;display:flex}._367UGW_runsOption:hover{border-color:var(--cm-accent)}._367UGW_runsOption:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px}._367UGW_runsOption[data-active]{border-color:var(--cm-accent);background:color-mix(in srgb, var(--cm-accent) 8%, transparent)}._367UGW_runsOptionTitle{font-size:var(--cm-fs-base);align-items:center;gap:6px;font-weight:600;display:flex}._367UGW_runsOptionDesc{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary)}._367UGW_runsOptionTag{font-size:var(--cm-fs-meta);background:color-mix(in srgb, var(--cm-accent) 14%, transparent);color:var(--cm-accent);border-radius:999px;padding:0 4px;font-weight:600}._367UGW_actionRow{flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px;display:flex}._367UGW_actionRowTop{flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0;display:flex}._367UGW_headRow{flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px;display:flex}._367UGW_headRow ._367UGW_groupLabel{margin-bottom:0}._367UGW_authorRow{flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;display:flex}._367UGW_authorRow ._367UGW_groupLabel{margin-bottom:0}._367UGW_marketFilterGrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:8px;display:grid}._367UGW_marketFilterSearch{grid-column:1/-1}._367UGW_marketFilterMeta{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;display:flex}._367UGW_statStrip{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);flex-wrap:wrap;flex:none;align-items:stretch;gap:6px 0;min-height:32px;margin-bottom:10px;display:flex}._367UGW_statStrip>:last-child{padding-right:8px}._367UGW_statStrip[data-tone=error]{border-color:color-mix(in srgb, var(--cm-error) 45%, transparent);background:color-mix(in srgb, var(--cm-error) 7%, transparent)}._367UGW_statStrip[data-tone=warn]{border-color:color-mix(in srgb, var(--cm-warn) 40%, transparent);background:color-mix(in srgb, var(--cm-warn) 6%, transparent)}._367UGW_statHealth{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);white-space:nowrap;flex:none;align-items:center;gap:6px;padding:4px 8px;font-weight:600;display:flex}._367UGW_statHealthAction{font:inherit;font-size:var(--cm-fs-table);cursor:pointer;text-align:left;background:0 0;border:none;font-weight:600}._367UGW_statHealthAction:hover{background:var(--dsw-alias-interactive-bg-hover)}._367UGW_statHealthAction:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:-2px;border-radius:var(--cm-r-2)}._367UGW_statSeg{border:none;border-left:1px solid var(--dsw-alias-border-l1);font:inherit;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);white-space:nowrap;cursor:pointer;background:0 0;flex:none;align-items:center;gap:6px;padding:4px 8px;display:flex}._367UGW_statSeg>span:first-child{color:var(--dsw-alias-label-tertiary)}._367UGW_statSeg:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}._367UGW_statSeg:hover>span:first-child{color:var(--dsw-alias-label-secondary)}._367UGW_statSeg:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:-2px}._367UGW_statSeg b{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:700}._367UGW_statSegDim{color:var(--dsw-alias-label-tertiary)}._367UGW_toolRow{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;display:flex}._367UGW_infoValue{flex:auto;align-items:center;gap:8px;min-width:0;display:inline-flex}._367UGW_infoValue ._367UGW_mono{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._367UGW_copyBtn{border-radius:var(--cm-r-1);width:20px;height:20px;font:inherit;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;line-height:1.25;display:inline-flex}._367UGW_copyBtn:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}._367UGW_copyBtn:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px}._367UGW_activityRow ._367UGW_copyBtn{opacity:0}._367UGW_activityRow:hover ._367UGW_copyBtn,._367UGW_activityRow ._367UGW_copyBtn:focus-visible{opacity:1}._367UGW_activityCard{flex-direction:column;min-height:0;margin-bottom:0;display:flex}._367UGW_diskUsageCard{height:var(--cm-disk-card-h);min-height:var(--cm-disk-card-h);max-height:var(--cm-disk-card-h)}._367UGW_diskUsageScroll{flex:auto;min-height:0;max-height:none}._367UGW_activityHeader{align-items:center;gap:8px;margin-bottom:8px;display:flex}._367UGW_activityTitle{font-size:var(--cm-fs-meta);letter-spacing:.02em;color:var(--dsw-alias-label-tertiary);flex:auto;font-weight:700}._367UGW_activityRows{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-base);flex:auto;min-height:0;overflow-y:auto}._367UGW_activityRow{border-bottom:.5px solid var(--dsw-alias-border-l2);font-size:var(--cm-fs-table);grid-template-columns:72px minmax(0,1fr) auto;align-items:center;gap:10px;min-width:0;padding:4px 10px;line-height:1.5;display:grid}._367UGW_activityRow:last-child{border-bottom:none}._367UGW_activityTime{color:var(--dsw-alias-label-tertiary);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;line-height:1.5;font-size:var(--cm-fs-meta);white-space:nowrap;justify-self:end}._367UGW_activityKind{color:var(--dsw-alias-label-tertiary);line-height:1.5;font-size:var(--cm-fs-meta);white-space:nowrap;flex:none}._367UGW_activitySummary{min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;line-height:1.5;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);align-items:center;gap:6px;display:inline-flex}._367UGW_activitySummaryText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._367UGW_activityBadge{flex:none;justify-content:flex-end;align-items:center;line-height:1.5;display:inline-flex}._367UGW_activityResultOk{line-height:1.5;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);white-space:nowrap;align-items:center;gap:4px;display:inline-flex}._367UGW_factGrid{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px 12px;display:grid}._367UGW_factCell{flex-direction:column;gap:2px;min-width:0;display:flex}._367UGW_factLabel{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);white-space:nowrap}._367UGW_factValue{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}._367UGW_sectionGrid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:0 24px;display:grid}._367UGW_sectionRow{border-bottom:.5px solid var(--dsw-alias-border-l2);font-size:var(--cm-fs-table);grid-template-columns:minmax(0,1fr) auto 56px;align-items:center;gap:10px;min-width:0;padding:4px 0;display:grid}._367UGW_sectionRow:nth-last-child(-n+2){border-bottom:none}._367UGW_sectionName{min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._367UGW_sectionCount{color:var(--dsw-alias-label-tertiary);font-size:var(--cm-fs-meta);font-variant-numeric:tabular-nums;white-space:nowrap;justify-self:end}._367UGW_sectionSize{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;justify-self:end}._367UGW_activityEmpty{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);text-align:center;padding:16px}._367UGW_snapshotList{flex-direction:column;gap:10px;margin-bottom:12px;display:flex}._367UGW_snapshotRow{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);align-items:center;gap:10px;padding:12px 14px;display:flex}._367UGW_snapshotRow[data-selected]{border-color:var(--cm-accent);background:color-mix(in srgb, var(--cm-accent) 7%, transparent)}._367UGW_snapshotRowHeader{font-size:var(--cm-fs-table);align-items:center;gap:8px;display:flex}._367UGW_snapshotRowMain{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;font-weight:500;overflow:hidden}._367UGW_snapshotRowText{flex-direction:column;flex:auto;gap:4px;min-width:0;display:flex}._367UGW_snapshotRowName{font-weight:500;font-size:var(--cm-fs-base);word-break:break-all;line-height:1.5}._367UGW_snapshotRowMeta{min-width:0;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary);align-items:center;gap:10px;display:flex}._367UGW_snapshotRowFacts{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;flex:none}._367UGW_snapshotList._367UGW_reportScroll{background:var(--dsw-alias-bg-layer-2);margin-bottom:0;padding:10px 12px 10px 10px}._367UGW_reasonList{flex-direction:column;flex-basis:100%;gap:4px;min-width:0;display:flex}._367UGW_reasonLine{align-items:baseline;gap:6px;min-width:0;display:flex}._367UGW_reasonLine>span:first-child{overflow-wrap:anywhere;min-width:0}._367UGW_viewBody{flex-direction:column;flex:auto;min-width:0;min-height:0;display:flex}._367UGW_resultScroll{flex:auto;min-height:0;overflow-y:auto}._367UGW_resultFooter{border-top:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;margin:10px 0 0;padding-top:10px}._367UGW_fillCard{flex:auto;margin-bottom:0}._367UGW_fillViewport{flex-direction:column;flex:auto;min-height:0;margin-bottom:0;display:flex}._367UGW_fillViewport ._367UGW_tableScroll{flex:auto;max-height:none}._367UGW_compositionViewport{flex:auto;min-height:0;overflow:auto}._367UGW_sparseFill{flex-direction:column;flex:auto;justify-content:flex-start;align-items:flex-start;gap:10px;min-height:280px;display:flex}._367UGW_pickerRoot{flex-direction:column;gap:8px;min-width:0;display:flex;position:relative}._367UGW_pickerOverlay{z-index:var(--cm-z-sticky);animation:_367UGW_maskIn var(--cm-motion-fast) var(--cm-motion-ease-out);border-radius:var(--cm-r-3);background:color-mix(in srgb, var(--dsw-alias-bg-layer-2) 62%, transparent);backdrop-filter:blur(1px);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}._367UGW_pickerToolbar{align-items:center;gap:8px;min-width:0;display:flex}._367UGW_pickerToolbar ._367UGW_input{flex:auto;min-width:0}._367UGW_pickerList{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);max-height:320px;padding:4px 10px;overflow:auto}._367UGW_pickerModalBody{flex-direction:column;gap:8px;height:min(420px,62vh);min-height:0;display:flex}._367UGW_pickerModalBody ._367UGW_pickerRoot{flex:auto;min-height:0}._367UGW_pickerModalBody ._367UGW_pickerList{scrollbar-gutter:stable;flex:auto;min-height:0;max-height:none}._367UGW_pickerGroup+._367UGW_pickerGroup{border-top:.5px solid var(--dsw-alias-border-l2)}._367UGW_pickerUnit{animation:_367UGW_itemEnter var(--cm-motion-base) var(--cm-motion-ease-out);align-items:center;min-width:0;padding:2px 0 2px 16px;display:flex}._367UGW_pickerUnitName{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:280px;overflow:hidden}._367UGW_pickerTreeRow{align-items:center;gap:4px;min-width:0;padding:4px 0;display:flex}._367UGW_pickerTreeRow>:last-child{flex:auto;min-width:0}._367UGW_pickerChevronSpacer{flex:none;width:18px;height:18px;display:inline-block}._367UGW_pickerGroupTitle{border-top:1px solid var(--dsw-alias-border-l2);align-items:center;gap:6px;padding:8px 0 4px;display:flex}._367UGW_pickerGroupTitle:first-child{border-top:none;padding-top:0}._367UGW_pickerGroupTitleName{font-size:var(--cm-fs-meta);letter-spacing:.02em;color:var(--dsw-alias-label-secondary);font-weight:600}._367UGW_pickerSubgroup{padding-left:18px}._367UGW_pickerSubgroupName{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}._367UGW_pickerChildren{border-left:1px solid var(--dsw-alias-border-l1);margin-left:8px;padding-left:4px}._367UGW_pickerUnitNested{gap:4px}._367UGW_pickerMore{justify-content:center;align-items:center;gap:6px;padding:4px 0 2px 16px;display:flex}._367UGW_pickerUnitDetail{max-width:220px;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._367UGW_pickerCount{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap}._367UGW_pickerFooter{border-top:1px solid var(--dsw-alias-border-l1);font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);padding-top:6px}._367UGW_optionsRow{align-items:center;gap:16px;display:flex;& ._367UGW_noticeSlot{flex-direction:column;justify-content:center;min-height:40px;display:flex}& ._367UGW_noticeSlot ._367UGW_banner{margin:0}& ._367UGW_noticeLine{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}margin-bottom:4px}._367UGW_groupList{flex-direction:column;gap:8px;margin-bottom:10px;display:flex}._367UGW_groupCard{margin:0}._367UGW_categoryItem{flex-wrap:wrap;align-items:baseline;gap:8px;min-width:0;display:flex}._367UGW_categoryName{color:var(--dsw-alias-label-primary);flex:none;font-weight:500}._367UGW_categoryDesc{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);min-width:0}._367UGW_optionsCard{margin:0 0 10px}._367UGW_secretFields ._367UGW_field{margin-bottom:0}._367UGW_secretFields{background:0 0;border:none;border-radius:0;grid-template-columns:1fr 1fr;gap:0 10px;margin:6px 0 10px;padding:0;display:grid}._367UGW_warnList{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);margin:4px 0 0;padding-left:18px}._367UGW_wizardStepperRow{align-items:center;gap:10px;margin-bottom:10px;display:flex}._367UGW_conflictDetail{margin-top:2px}._367UGW_conflictList{flex-direction:column;gap:8px;margin-bottom:10px;display:flex}._367UGW_conflictItem{border:1px solid color-mix(in srgb, var(--cm-warn) 35%, transparent);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);padding:10px 12px}._367UGW_conflictHead{font-size:var(--cm-fs-table);align-items:center;gap:8px;margin-bottom:6px;display:flex}._367UGW_conflictId{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}._367UGW_conflictOptions{flex-wrap:wrap;gap:4px 14px;margin-top:6px;display:flex}._367UGW_conflictChoices{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:8px;display:grid}._367UGW_choiceCard{border:1px solid var(--dsw-alias-border-l2);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-base);font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary);cursor:pointer;align-items:center;gap:6px;padding:8px 10px;font-weight:500;transition:border-color .12s ease-out,background-color .12s ease-out;display:flex}._367UGW_choiceCard:hover{border-color:color-mix(in srgb, var(--cm-accent) 40%, var(--dsw-alias-border-l2))}._367UGW_choiceCard:focus-within{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px}._367UGW_choiceCard[data-selected]{border-color:var(--cm-accent);background:color-mix(in srgb, var(--cm-accent) 9%, transparent);color:var(--dsw-alias-label-primary)}._367UGW_choiceCard input{width:13px;height:13px;accent-color:var(--cm-accent);flex:none;margin:0}._367UGW_choiceTitle{min-width:0}._367UGW_conflictDetail{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-2);background:var(--dsw-alias-bg-base);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;white-space:normal;padding:8px 10px}._367UGW_conflictPrefix{color:var(--dsw-alias-label-tertiary);margin-bottom:4px}._367UGW_conflictLine{align-items:baseline;gap:8px;padding:4px 0;display:flex}._367UGW_conflictLine+._367UGW_conflictLine{border-top:.5px solid var(--dsw-alias-border-l2)}._367UGW_conflictLineLabel{min-width:56px;color:var(--dsw-alias-label-tertiary);flex:none;font-weight:600}._367UGW_conflictLineValue{overflow-wrap:anywhere;flex:auto;min-width:0}._367UGW_pathMappingList{flex-direction:column;gap:6px;margin-bottom:10px;display:flex}._367UGW_pathRow{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);flex-direction:column;align-items:stretch;gap:8px;padding:8px 10px;display:flex}._367UGW_pathOld,._367UGW_pathNew{border:1px solid var(--dsw-alias-border-l2);border-radius:var(--cm-r-2);background:var(--dsw-alias-bg-base);overflow-wrap:anywhere;flex-direction:column;flex:auto;width:100%;min-width:0;padding:4px 8px;display:flex}._367UGW_pathValue{color:var(--dsw-alias-label-secondary);white-space:pre-wrap;overflow-wrap:anywhere;margin:2px 0 0}._367UGW_pathIssueKind{flex:none}._367UGW_secretsList{flex-direction:column;display:flex}._367UGW_snapshotPickerRow{flex-wrap:nowrap;align-items:flex-end;gap:8px;margin-top:10px;margin-bottom:10px;display:flex}._367UGW_snapshotPickerRow ._367UGW_field{margin-bottom:0}._367UGW_pickerAction{flex:none;align-items:center;display:inline-flex}._367UGW_logPanel{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-base);margin-bottom:10px;overflow:hidden}._367UGW_logHeader{border-bottom:1px solid var(--dsw-alias-border-l1);font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2);align-items:center;gap:8px;padding:6px 10px;font-weight:600;display:flex}._367UGW_logLine{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);white-space:pre-wrap;overflow-wrap:anywhere;padding:1px 10px;line-height:1.5}._367UGW_logCounts{color:var(--dsw-alias-label-tertiary);font-weight:500}._367UGW_logFilterButton{font:inherit;font-size:var(--cm-fs-meta);color:var(--cm-accent);cursor:pointer;background:0 0;border:none;padding:0 4px}._367UGW_logFilterButton[data-active]{color:var(--dsw-alias-label-primary);font-weight:700}._367UGW_logEntry+._367UGW_logEntry{border-top:.5px solid var(--dsw-alias-border-l2)}._367UGW_logLine[data-level=fail]{color:var(--cm-error)}._367UGW_logLine[data-level=warn]{color:var(--cm-warn)}._367UGW_logLine[data-level=ok]{color:var(--cm-ok)}._367UGW_logLine[data-level=skip]{color:var(--dsw-alias-label-tertiary)}._367UGW_logLine[data-level=running]{color:var(--dsw-alias-label-primary)}._367UGW_logDetail{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);white-space:pre-wrap;overflow-wrap:anywhere;padding:0 10px 0 22px;line-height:1.5}._367UGW_logDetail[data-kind=command]{color:var(--dsw-alias-label-secondary)}._367UGW_logEmpty{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);text-align:center;padding:12px}._367UGW_logJumpButton{font:inherit;font-size:var(--cm-fs-meta);color:var(--cm-accent);cursor:pointer;background:0 0;border:none;margin-left:auto;padding:0 4px}._367UGW_reportView{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);margin-bottom:10px;overflow:hidden}._367UGW_reportList{flex-direction:column;display:flex}._367UGW_confirmItem{border-bottom:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 50%, transparent);padding:8px 10px}._367UGW_confirmItem:last-child{border-bottom:none}._367UGW_confirmItemHead{flex-wrap:wrap;align-items:center;gap:8px;display:flex}._367UGW_confirmItemDesc{min-width:0;font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;flex:200px}._367UGW_confirmItemHead+._367UGW_conflictItem{margin-top:8px}._367UGW_reportBlock{margin-bottom:10px}._367UGW_reportProblemRow{border-bottom:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 50%, transparent);padding:6px 10px}._367UGW_reportProblemRow:last-child{border-bottom:none}._367UGW_reportProblemHead{align-items:center;gap:6px;display:flex}._367UGW_reportProblemText{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);overflow-wrap:anywhere}._367UGW_reportProblemReason{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;margin-top:2px;line-height:1.5}._367UGW_reportSectionRow{align-items:center;gap:6px;padding:4px 0;display:flex}._367UGW_reportWarningRow{font-size:var(--cm-fs-meta);color:var(--cm-warn);overflow-wrap:anywhere;padding:2px 10px;line-height:1.5}._367UGW_reportDetails{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);margin-top:4px}._367UGW_reportDetails>summary{cursor:pointer;color:var(--dsw-alias-label-secondary);padding:2px 0}._367UGW_reportDetails ._367UGW_reportScroll{margin-top:6px}._367UGW_reportView ._367UGW_reportScroll{background:0 0;border:none;border-radius:0}._367UGW_reportBody{flex-direction:column;gap:2px;padding:8px 12px;display:flex}._367UGW_reportHeadline{font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);margin-bottom:2px;font-weight:600}._367UGW_reportText{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:8px 12px}._367UGW_reportFooter{border-top:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);align-items:center;gap:8px;padding:8px 12px;display:flex}._367UGW_errorBanner{border:1px solid color-mix(in srgb, var(--cm-error) 45%, transparent);border-radius:var(--cm-r-3);background:color-mix(in srgb, var(--cm-error) 8%, transparent);font-size:var(--cm-fs-table);align-items:flex-start;gap:8px;margin:0 0 10px;padding:8px 12px;display:flex}._367UGW_errorTitle{color:var(--cm-error);font-weight:600}._367UGW_errorLine{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--dsw-alias-label-secondary);margin:0}._367UGW_errorList{font-size:var(--cm-fs-meta);margin:4px 0 0;padding-left:18px}._367UGW_errorItem{overflow-wrap:anywhere}._367UGW_errorReason{white-space:pre-wrap;overflow-wrap:anywhere;min-width:0;color:var(--dsw-alias-label-tertiary);margin:0}._367UGW_errorFooter{margin-top:6px}._367UGW_errorAction{margin-right:8px}._367UGW_errorActionLabel{color:var(--cm-accent)}._367UGW_inspectGroup{margin-bottom:10px}._367UGW_kindTag{border-radius:var(--cm-r-1);background:var(--dsw-alias-interactive-bg-hover);height:16px;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);white-space:nowrap;align-items:center;padding:0 6px;font-weight:600;display:inline-flex}._367UGW_kindTagOk{background:color-mix(in srgb, var(--cm-ok) 13%, transparent);color:var(--cm-ok)}._367UGW_kindTagInfo{background:color-mix(in srgb, var(--cm-accent) 13%, transparent);color:var(--cm-accent)}._367UGW_kindTagWarn{background:color-mix(in srgb, var(--cm-warn) 13%, transparent);color:var(--cm-warn)}._367UGW_kindTagError{background:color-mix(in srgb, var(--cm-error) 13%, transparent);color:var(--cm-error)}._367UGW_restorePlan{animation:_367UGW_itemEnter var(--cm-motion-base) var(--cm-motion-ease-out);flex-direction:column;gap:10px;display:flex}._367UGW_restorePlanList{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}._367UGW_restorePlanRow,._367UGW_restorePlanRowStatic{border-radius:var(--cm-r-2);align-items:center;gap:8px;width:100%;padding:4px 6px;display:flex}._367UGW_restorePlanRow{color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none}._367UGW_restorePlanRow:hover{background:var(--dsw-alias-interactive-bg-hover)}._367UGW_restorePlanRow:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb, var(--cm-accent) 55%, transparent);outline:none}._367UGW_restorePlanPath{min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}._367UGW_restorePlanStat{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none}._367UGW_restorePlanChevron{color:var(--dsw-alias-label-tertiary);flex:none}._367UGW_restorePlanNote{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;padding:0 6px 4px 24px}._367UGW_restorePlanGroupHead{align-items:center;gap:8px;margin:0 0 4px;display:flex}._367UGW_restorePlanGroupHead ._367UGW_groupLabel{margin-bottom:0;display:inline}._367UGW_diffGroupToggle{color:var(--dsw-alias-label-secondary);font-size:var(--cm-fs-meta);cursor:pointer;background:0 0;border:none;padding:0;font-weight:700}._367UGW_diffGroupToggle:hover{color:var(--dsw-alias-label-primary)}._367UGW_diffGroupToggle:focus-visible{border-radius:var(--cm-r-1);box-shadow:0 0 0 2px color-mix(in srgb, var(--cm-accent) 55%, transparent);outline:none}._367UGW_diffStatTotal{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);font-variant-numeric:tabular-nums}._367UGW_diffStatAdd{color:var(--cm-ok)}._367UGW_diffStatDel{color:var(--cm-error)}._367UGW_rollbackTabIcon{flex:none;align-items:center;margin-right:6px;display:inline-flex}._367UGW_diffFileHead{border-bottom:1px solid var(--dsw-alias-border-l1);font-size:var(--cm-fs-table);flex:none;align-items:center;gap:8px;padding:2px 6px;line-height:1.5;display:flex}._367UGW_diffFilePath{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-secondary);flex:auto;overflow:hidden}._367UGW_diffFileStat{font-variant-numeric:tabular-nums;flex:none}._367UGW_diffPane{margin:2px 0 8px}._367UGW_diffPaneFill{flex-direction:column;height:100%;min-height:0;margin:0;display:flex}._367UGW_diffPane ._367UGW_diffScroll{max-height:min(80vh,800px)}._367UGW_dialogCard ._367UGW_diffPane ._367UGW_diffScroll{max-height:380px}._367UGW_diffPaneFill ._367UGW_diffScroll{flex:auto;min-height:0;max-height:calc(100vh - 90px)}._367UGW_diffTable{border-collapse:collapse;table-layout:fixed;width:100%;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-table);line-height:1.5}._367UGW_diffNoColW3{width:calc(3ch + 18px)}._367UGW_diffNoColW4{width:calc(4ch + 18px)}._367UGW_diffNoColW5{width:calc(5ch + 18px)}._367UGW_diffNoColW6{width:calc(6ch + 18px)}._367UGW_diffNoHead{border-bottom:1px solid var(--dsw-alias-border-l1);border-right:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-tertiary);font-size:var(--cm-fs-meta);text-align:left;padding:2px 6px;font-weight:600;line-height:1.5}._367UGW_diffNoHead+._367UGW_diffNoHead{border-left:1px solid var(--dsw-alias-border-l1)}._367UGW_diffHunkRow td{background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-tertiary);padding:2px 6px}._367UGW_diffTable tbody td:nth-child(3),._367UGW_diffHunkRow td+td{border-left:1px solid var(--dsw-alias-border-l1)}._367UGW_diffNo{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;text-align:right;vertical-align:top;user-select:none;padding:1px 4px}._367UGW_diffNoDel{background:color-mix(in srgb, var(--cm-error) 12%, transparent);color:var(--cm-error);box-shadow:inset 3px 0 0 var(--cm-error)}._367UGW_diffNoAdd{background:color-mix(in srgb, var(--cm-ok) 12%, transparent);color:var(--cm-ok);box-shadow:inset 3px 0 0 var(--cm-ok)}._367UGW_diffCell{color:var(--dsw-alias-label-secondary);white-space:pre-wrap;overflow-wrap:anywhere;vertical-align:top;padding:1px 6px}._367UGW_diffCellAdd{background:color-mix(in srgb, var(--cm-ok) 12%, transparent)}._367UGW_diffCellDel{background:color-mix(in srgb, var(--cm-error) 12%, transparent)}._367UGW_nextStepsGroup{margin-bottom:10px}._367UGW_nextStepsList{max-height:132px;overflow-y:auto}._367UGW_rollbackBox{border:1px solid var(--dsw-alias-border-l2);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-base);margin-bottom:10px;padding:8px 10px}._367UGW_statRow{flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;display:flex}._367UGW_statRow:not(:last-child){margin-bottom:10px}._367UGW_consultSection{margin-top:10px}._367UGW_consultSection:first-of-type{margin-top:8px}._367UGW_consultSection ._367UGW_statRow{margin-top:0}._367UGW_hiddenFile{display:none}._367UGW_cliName,._367UGW_cliCommand{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta)}._367UGW_cliCommand{color:var(--dsw-alias-label-secondary);white-space:pre-wrap;overflow-wrap:anywhere;margin:0}._367UGW_historyGroup{margin-bottom:12px}._367UGW_historyRow{border-bottom:.5px solid var(--dsw-alias-border-l2);font-size:var(--cm-fs-table);align-items:flex-start;gap:8px;padding:6px 8px;display:flex}._367UGW_historyRow:last-child{border-bottom:none}._367UGW_historyRowMain{flex:auto;min-width:0}._367UGW_historyMeta{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:2px;display:flex}._367UGW_historySummary{overflow-wrap:anywhere;color:var(--dsw-alias-label-secondary);display:block}._367UGW_historyTime{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);flex:none;padding-top:1px}._367UGW_historySections{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary)}._367UGW_profileRow{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);margin-bottom:6px;padding:8px 12px}._367UGW_profileRow[data-selected]{border-color:var(--cm-accent);background:color-mix(in srgb, var(--cm-accent) 7%, transparent)}._367UGW_profileRowHeader{font-size:var(--cm-fs-table);align-items:center;gap:8px;display:flex}._367UGW_profileRowMain{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;font-weight:500;overflow:hidden}button._367UGW_profileRowMain{font:inherit;color:var(--dsw-alias-label-primary);text-align:left;cursor:pointer;background:0 0;border:none;flex-direction:column;align-items:flex-start;gap:2px;padding:0;display:flex}._367UGW_profileRowTitle{align-items:center;gap:6px;min-width:0;max-width:100%;display:flex}._367UGW_profileRowName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._367UGW_profileRowMeta{max-width:100%;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-weight:400;display:block;overflow:hidden}._367UGW_detailLines{font-size:var(--cm-fs-meta);flex-direction:column;gap:2px;min-width:0;display:flex}button._367UGW_profileRowMain:hover{color:var(--cm-accent)}._367UGW_listHeaderRow{align-items:center;gap:8px;margin:0 0 8px;display:flex}._367UGW_listHeaderRow ._367UGW_groupLabel{margin-bottom:0}._367UGW_listHeaderRow ._367UGW_cellMeta{flex:auto;min-width:0}._367UGW_badgeRow{flex:none;align-items:center;gap:4px;display:inline-flex}._367UGW_actionRow[data-inline]{flex:none;margin:0}._367UGW_aboutLinkRow{flex-wrap:wrap;align-items:center;gap:8px;display:flex}._367UGW_aboutAuthor{font-size:var(--cm-fs-base);color:var(--cm-accent);overflow-wrap:anywhere;font-weight:600;text-decoration:none}._367UGW_aboutAuthor:hover{text-decoration:underline}._367UGW_aboutAuthor:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px;border-radius:var(--cm-r-1)}._367UGW_consultDimension{border-bottom:.5px solid var(--dsw-alias-border-l2);font-size:var(--cm-fs-table);padding:6px 0}._367UGW_consultDimension:last-child{border-bottom:none}._367UGW_severityError{color:var(--cm-error);font-weight:600}._367UGW_viewBody{gap:10px}._367UGW_viewBody>*{margin-bottom:0}._367UGW_viewBody>._367UGW_statRow{margin-top:0;margin-bottom:0}._367UGW_viewBody:after{content:\"\";flex:none;height:8px}@media (width<=900px){._367UGW_secretFields{grid-template-columns:1fr}._367UGW_pagePad{padding:10px 12px 12px}}._367UGW_marketReviewPage{flex-direction:column;flex:1 0 auto;gap:10px;min-height:200px;display:flex}._367UGW_marketReviewPage ._367UGW_pickerRoot{flex:auto}._367UGW_marketReviewScroll,._367UGW_marketReviewPage ._367UGW_pickerList{scrollbar-gutter:stable;flex:auto;min-height:200px;max-height:800px;overflow:auto}._367UGW_marketReviewScroll{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-base);padding:6px 10px}@media (prefers-reduced-motion:reduce){._367UGW_toast,._367UGW_statusDot[data-pulse],._367UGW_pagePad,._367UGW_dialogMask,._367UGW_dialogContentCenter,._367UGW_snapshotList>*,._367UGW_dataTable tbody tr,._367UGW_viewEnter,._367UGW_pickerOverlay,._367UGW_pickerUnit,._367UGW_banner,._367UGW_empty{animation:none}._367UGW_statusDot,._367UGW_stepperDot,._367UGW_stepperLabel{transition:none}._367UGW_selectMenu,._367UGW_selectChevron{transition:none;animation:none}._367UGW_artifactDetailWrap,._367UGW_artifactDetailWrap>*{transition:none}._367UGW_dialogMask[data-state=closed],._367UGW_dialogContentCenter[data-state=closed],._367UGW_restorePlan,._367UGW_infoHintBubble{animation:none}._367UGW_collapse{transition:none}._367UGW_skeletonBar{background-image:none;animation:none}}._367UGW_sourceList{flex-direction:column;gap:6px;margin-bottom:10px;display:flex}._367UGW_sourceRow{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);align-items:flex-start;gap:8px;min-width:0;padding:8px 10px;display:flex}._367UGW_sourceRow[data-selected]{border-color:var(--cm-accent);background:color-mix(in srgb, var(--cm-accent) 7%, transparent)}._367UGW_sourceRow[data-disabled]{opacity:.7}._367UGW_sourceRowMain{flex:auto;min-width:0}._367UGW_sourceRowHead{align-items:center;gap:8px;min-width:0;display:flex}._367UGW_sourceRowName{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}._367UGW_sourceRowHead>:not(._367UGW_sourceRowName){flex:none}._367UGW_sourcePaths{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;margin-top:4px;line-height:1.5;display:block}._367UGW_skipList{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);flex-direction:column;gap:4px;margin:6px 0 0;padding:0;display:flex}._367UGW_skipRow{flex-wrap:wrap;align-items:baseline;gap:6px;min-width:0;display:flex}._367UGW_skipCode{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);border-radius:var(--cm-r-1);background:color-mix(in srgb, var(--dsw-alias-label-tertiary) 12%, transparent);color:var(--dsw-alias-label-secondary);white-space:nowrap;flex:none;padding:1px 4px}._367UGW_skipText{overflow-wrap:anywhere;flex:auto;min-width:0}._367UGW_skipMeta{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex:none}._367UGW_chatEntryScope{--cm-text-1:var(--dsw-alias-label-primary);--cm-text-3:var(--dsw-alias-label-tertiary);--cm-surface-2:var(--dsw-alias-bg-layer-2);--cm-chat-bubble:var(--dsw-specific-bubble,color-mix(in srgb, var(--cm-text-1) 12%, transparent));--cm-line-1:var(--dsw-alias-border-l1);--cm-line-2:var(--dsw-alias-border-l2);--cm-fs-meta:11px;--cm-fs-base:var(--dsh-content-font-size,14px);--cm-lh-base:calc(22px + var(--dsh-content-font-delta,0px));--cm-text-2:var(--dsw-alias-label-secondary);--cm-r-chat:var(--dsw-radius-xl,20px);--cm-r-act:var(--dsw-radius-sm,8px);--cm-chat-card-bg:var(--dsw-specific-input-major,transparent);--cm-chat-hover-bg:var(--dsw-alias-interactive-bg-hover,var(--cm-line-1));--cm-fs-second:var(--dsh-content-font-size-secondary,13px);--cm-lh-second:calc(24px + var(--dsh-content-font-delta,0px));--cm-lh-ref:calc(18px + var(--dsh-content-font-delta-secondary,0px));--cm-fs-card:14px;--cm-lh-card:22px;--cm-lh-meta:15px;--cm-chat-action:calc(28px + var(--dsh-content-font-delta,0px));--cm-chat-glyph:calc(15px + var(--dsh-content-font-delta,0px));--cm-sp-2:4px;--cm-sp-3:6px;--cm-sp-4:8px;--cm-sp-5:10px;--cm-sp-6:12px;--cm-sp-8:16px;--cm-r-2:6px;--cm-r-3:8px;min-width:0;color:var(--cm-text-1);font-size:var(--cm-fs-base);line-height:var(--cm-lh-base);display:block}._367UGW_chatEntryRow{align-items:flex-end;gap:var(--cm-sp-3);flex-direction:column;display:flex}._367UGW_chatEntryStack{align-items:flex-end;gap:var(--cm-sp-4);min-width:0;max-width:min(calc(var(--dsh-chat-content-width,748px) * .702), 82%);flex-direction:column;display:flex}._367UGW_chatBubble{max-width:100%;padding:var(--cm-sp-5) var(--cm-sp-8);border-radius:var(--cm-r-chat);background:var(--cm-chat-bubble);color:var(--cm-text-1);white-space:pre-wrap;word-break:break-word}._367UGW_chatBubbleText{white-space:pre-wrap;word-break:break-word}._367UGW_chatFallbackBubble{border-left:2px solid var(--cm-text-1)}._367UGW_chatAttachmentRow{justify-content:flex-end;gap:var(--cm-sp-4);flex-wrap:wrap;max-width:100%;display:flex}._367UGW_chatFileCard{align-items:center;gap:var(--cm-sp-5);box-sizing:border-box;width:240px;min-height:64px;padding:var(--cm-sp-4) var(--cm-sp-6);border:.5px solid var(--cm-line-2);border-radius:var(--cm-r-chat);background:var(--cm-chat-card-bg);flex:0 0 240px;display:inline-flex}._367UGW_chatFileIcon{flex:none;width:28px;height:28px}._367UGW_chatFileContent{flex-direction:column;flex:1;min-width:0;display:flex}._367UGW_chatFileExt{border-radius:var(--cm-r-2);background:var(--cm-line-1);min-width:28px;height:28px;color:var(--cm-text-1);font-size:var(--cm-fs-meta);letter-spacing:.02em;flex:none;justify-content:center;align-items:center;display:inline-flex}._367UGW_chatFileName{color:var(--cm-text-1);font-size:var(--cm-fs-card);font-weight:500;line-height:var(--cm-lh-card);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._367UGW_chatFileMeta{color:var(--cm-text-3);font-size:12px;line-height:var(--cm-lh-meta);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._367UGW_chatRawBlock{font-size:var(--cm-fs-meta);color:var(--cm-text-3)}._367UGW_chatRawSummary{cursor:pointer}._367UGW_chatRawPre{max-height:220px;margin:var(--cm-sp-2) 0 0;padding:var(--cm-sp-3);border-radius:var(--cm-r-2);background:var(--cm-surface-2);color:var(--cm-text-3);white-space:pre-wrap;word-break:break-all;overflow:auto}._367UGW_chatEntryActions{align-items:center;gap:var(--cm-sp-4);height:var(--cm-chat-action);margin-top:var(--cm-sp-2);margin-left:calc(-1 * var(--cm-sp-3));display:flex}._367UGW_chatEntryTime{color:var(--cm-text-3);font-size:var(--cm-fs-second);line-height:var(--cm-lh-second);white-space:nowrap;padding-right:var(--cm-sp-6)}._367UGW_chatEntryNotice{max-width:min(calc(var(--dsh-chat-content-width,748px) * .702), 82%);color:var(--cm-text-3);font-size:var(--cm-fs-meta)}._367UGW_chatEntryReference{color:var(--cm-text-3);font-size:var(--cm-fs-second);line-height:var(--cm-lh-ref)}._367UGW_chatActionBtn{width:var(--cm-chat-action);height:var(--cm-chat-action);padding:var(--cm-sp-3);border-radius:var(--cm-r-act);color:var(--cm-text-3);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;display:inline-flex}._367UGW_chatActionBtn svg{width:var(--cm-chat-glyph);height:var(--cm-chat-glyph)}._367UGW_chatActionBtn:hover{background:var(--cm-chat-hover-bg);color:var(--cm-text-2)}@media (hover:hover){:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering]):has(~:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering])) ._367UGW_chatEntryActions{opacity:0;transition:opacity var(--cm-motion-fast)}:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering]):has(~:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering])):hover ._367UGW_chatEntryActions,:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering]):has(~:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering])):focus-within ._367UGW_chatEntryActions{opacity:1}}._367UGW_chatActionBtn:disabled{color:var(--cm-text-3);opacity:.5;cursor:not-allowed}._367UGW_rollbackFileList{margin-top:var(--cm-sp-2);flex-direction:column;display:flex}._367UGW_rollbackFileRow{align-items:center;gap:var(--cm-sp-3);padding:var(--cm-sp-3) 0 var(--cm-sp-3) var(--cm-sp-2);grid-template-columns:auto minmax(0,1fr) auto;display:grid;position:relative}._367UGW_rollbackFileRow:before{content:\"\";left:0;top:var(--cm-sp-2);bottom:var(--cm-sp-2);background:var(--cm-info);width:2px;position:absolute}._367UGW_rollbackFileRow[data-kind=create]:before{background:var(--cm-ok)}._367UGW_rollbackFileRow[data-kind=delete]:before{background:var(--cm-error)}._367UGW_rollbackFileRow:not([data-kind]):before{display:none}._367UGW_rollbackFileIcon{flex:none;align-items:center;display:inline-flex}._367UGW_rollbackFilePath{min-width:0;color:var(--cm-text-1);font-size:var(--cm-fs-table);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}._367UGW_rollbackFileDir{color:var(--cm-text-3);transition:color var(--cm-motion-fast) ease}._367UGW_rollbackFileStat{justify-content:flex-end;justify-self:end;align-items:baseline;gap:var(--cm-sp-2);display:inline-flex}._367UGW_rollbackAdded{color:var(--cm-ok);font-size:var(--cm-fs-table);font-variant-numeric:tabular-nums;flex:none}._367UGW_rollbackRemoved{color:var(--cm-error);font-size:var(--cm-fs-table);font-variant-numeric:tabular-nums;flex:none}._367UGW_rollbackDeleted{color:var(--cm-error);font-size:var(--cm-fs-table);flex:none}._367UGW_rollbackFilePath:is(button){font:inherit;font-size:var(--cm-fs-table);color:var(--cm-text-1);text-align:left;cursor:pointer;transition:color var(--cm-motion-fast) ease;background:0 0;border:0;padding:0}._367UGW_rollbackFilePath:is(button):hover:not(:disabled),._367UGW_rollbackFilePath:is(button):focus-visible,._367UGW_rollbackFilePath:is(button):hover:not(:disabled) ._367UGW_rollbackFileDir,._367UGW_rollbackFilePath:is(button):focus-visible ._367UGW_rollbackFileDir{color:var(--cm-accent)}._367UGW_rollbackFilePath:is(button):disabled{color:var(--cm-text-1);cursor:not-allowed;opacity:.7}._367UGW_previewChoiceRow{justify-content:space-between;align-items:baseline;gap:var(--cm-sp-4);margin:0 0 var(--cm-sp-2);display:flex}._367UGW_previewScope{align-items:baseline;gap:var(--cm-sp-3);font-size:var(--cm-fs-meta);color:var(--cm-text-2);font-variant-numeric:tabular-nums;flex:none;display:inline-flex}._367UGW_previewScopeStats{align-items:baseline;gap:var(--cm-sp-3);display:inline-flex}._367UGW_previewScope[data-off=true] ._367UGW_previewScopeStats{color:var(--cm-text-3);opacity:.75}._367UGW_previewScopeOff{color:var(--cm-text-3)}._367UGW_inlineDiffBox{gap:var(--cm-sp-2);margin-top:var(--cm-sp-2);padding:var(--cm-sp-2);border:1px solid var(--cm-line-1);border-radius:var(--cm-r-2);flex-direction:column;display:flex}._367UGW_rollbackWarnings{flex-direction:column;gap:4px;margin-bottom:10px;display:flex}._367UGW_rollbackToolbar{align-items:center;gap:8px;margin-bottom:8px;display:flex}._367UGW_rollbackSummary{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;font-weight:600}._367UGW_rollbackScroll{padding:8px}._367UGW_rollbackGroup{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);flex-direction:column;flex:auto;gap:8px;min-height:0;padding:8px 10px;display:flex}._367UGW_rollbackGroupHead{border-bottom:1px solid var(--dsw-alias-border-l1);flex-wrap:wrap;align-items:center;gap:6px;padding-bottom:6px;display:flex}._367UGW_rollbackGroupTitle{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;font-weight:600}._367UGW_rollbackGroupUnit{text-overflow:ellipsis;white-space:nowrap;text-align:right;min-width:0;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);flex:auto;margin-left:auto;overflow:hidden}._367UGW_rollbackPoints{flex-direction:column;gap:6px;display:flex}._367UGW_rollbackPoint{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-base);border-left-width:2px;flex-direction:column;gap:4px;padding:8px 10px;display:flex}._367UGW_rollbackPoint[data-kind=auto]{border-left-color:var(--cm-ok)}._367UGW_rollbackPoint[data-kind=guard]{border-left-color:var(--cm-info)}._367UGW_rollbackPoint[data-kind=unknown]{border-left-color:var(--cm-text-3)}._367UGW_rollbackPointTop{flex-wrap:wrap;align-items:center;gap:6px;display:flex}._367UGW_rollbackPointTurn{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:600}._367UGW_rollbackPointActions{flex:none;align-items:center;gap:6px;margin-left:auto;display:flex}._367UGW_rollbackPointMeta{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);flex-wrap:wrap;align-items:center;gap:6px;line-height:1.5;display:flex}._367UGW_rollbackMetaDot{color:var(--dsw-alias-label-tertiary);flex:none}._367UGW_rollbackLedger{align-items:stretch;gap:10px;height:340px;display:flex}._367UGW_rollbackSessions{flex-direction:column;flex:0 0 148px;gap:4px;height:100%;display:flex;overflow:auto}._367UGW_rollbackSessionItem{text-align:left;border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-2);background:var(--dsw-alias-bg-base);width:100%;color:var(--dsw-alias-label-secondary);cursor:pointer;flex-direction:column;gap:2px;padding:6px 8px;display:flex}._367UGW_rollbackSessionItem:hover{background:var(--dsw-alias-bg-layer-2)}._367UGW_rollbackSessionItem[data-active]{border-color:var(--cm-accent);background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary)}._367UGW_rollbackSessionId{font-size:var(--cm-fs-table);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._367UGW_rollbackSessionMeta{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);align-items:center;gap:2px;line-height:1.5;display:flex}._367UGW_rollbackLedgerMain{flex-direction:column;flex:auto;gap:8px;min-width:0;height:100%;display:flex}._367UGW_rollbackPointsScroll{flex:auto;min-height:0;padding:8px;overflow:auto}._367UGW_rollbackPointNote{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:100%;overflow:hidden}._367UGW_shHeaderTrailing{align-items:center;gap:8px;margin-left:auto;display:inline-flex}._367UGW_shHeaderTrailing~._367UGW_dialogClose{margin-left:0}._367UGW_shSummary{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);flex-direction:column;gap:10px;margin:0 0 10px;padding:12px 14px;display:flex}._367UGW_shMetrics{flex-wrap:wrap;align-items:flex-end;gap:8px 24px;display:flex}._367UGW_shMetric{flex-direction:column;gap:2px;min-width:0;display:flex}._367UGW_shMetricValue{font-size:var(--cm-fs-title);color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:600;line-height:1.25}._367UGW_shMetricLabel{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary)}._367UGW_shMetric[data-tone=warn] ._367UGW_shMetricValue{color:var(--cm-warn)}._367UGW_shMetric[data-tone=ok] ._367UGW_shMetricValue{color:var(--cm-ok)}._367UGW_shSeverities{flex-wrap:wrap;align-items:center;gap:6px;display:flex}._367UGW_shSeverity{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:2px 8px;line-height:1.5;display:inline-flex}._367UGW_shSeverityCount{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:600}._367UGW_shSeverity[data-severity=blocksStartup],._367UGW_shSeverity[data-severity=unloadable]{border-color:color-mix(in srgb, var(--cm-error) 45%, transparent)}._367UGW_shSeverity[data-severity=nextRequestFails],._367UGW_shSeverity[data-severity=invisible]{border-color:color-mix(in srgb, var(--cm-warn) 45%, transparent)}._367UGW_shNotes{border-top:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 60%, transparent);flex-direction:column;gap:4px;padding-top:8px;display:flex}._367UGW_shSectionHead{flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px;display:flex}._367UGW_shSectionHead ._367UGW_groupLabel{margin-bottom:0}._367UGW_shSectionTitle{font-size:var(--cm-fs-title);color:var(--dsw-alias-label-primary);font-weight:600;line-height:1.25}._367UGW_snapshotList._367UGW_shScroll{background:var(--dsw-alias-bg-base);padding:8px}._367UGW_shRow{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);border-left-width:2px;flex-direction:column;gap:4px;padding:8px 10px;display:flex}._367UGW_shRow[data-severity=blocksStartup],._367UGW_shRow[data-severity=unloadable]{border-left-color:var(--cm-error)}._367UGW_shRow[data-severity=nextRequestFails],._367UGW_shRow[data-severity=invisible]{border-left-color:var(--cm-warn)}._367UGW_shRow[data-severity=ok]{border-left-color:var(--cm-ok)}._367UGW_shRowTop{flex-wrap:wrap;align-items:center;gap:6px;display:flex}._367UGW_shRowId{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);flex:auto;font-weight:600;overflow:hidden}._367UGW_shRowActions{flex:none;align-items:center;gap:6px;margin-left:auto;display:flex}._367UGW_shRowMeta{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);flex-wrap:wrap;align-items:center;gap:6px;line-height:1.5;display:flex}._367UGW_shIssue{border-radius:var(--cm-r-1);background:color-mix(in srgb, var(--dsw-alias-label-tertiary) 12%, transparent);color:var(--dsw-alias-label-secondary);align-items:center;padding:2px 6px;display:inline-flex}._367UGW_shRowFacts{white-space:nowrap;font-variant-numeric:tabular-nums;flex:none;margin-left:auto}._367UGW_shMetaDot{color:var(--dsw-alias-label-tertiary);flex:none}._367UGW_shLines{flex-direction:column;gap:4px;display:flex}._367UGW_shPanel{border:1px solid var(--dsw-alias-border-l2);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-base);margin:0 0 10px;padding:10px 12px}._367UGW_shPanelHead{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:6px;display:flex}._367UGW_shPanelTitle{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);flex:auto;font-weight:600;overflow:hidden}._367UGW_shCommands{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);margin:0 0 10px;padding:0;list-style:none;overflow:hidden}._367UGW_shCommand{border-bottom:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 50%, transparent);align-items:center;gap:8px;padding:8px 10px;display:flex}._367UGW_shCommand:last-child{border-bottom:none}._367UGW_shCommand code{overflow-wrap:anywhere;min-width:0;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);flex:auto}._367UGW_mergeView{flex-direction:column;gap:10px;display:flex}._367UGW_mergeOverview{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}._367UGW_mergeTile{border:.5px solid var(--cm-line-1);border-radius:var(--cm-r-3);background:var(--cm-surface-1);flex-direction:column;gap:2px;padding:8px 10px;display:flex}._367UGW_mergeTile[data-tone=ok]{border-color:color-mix(in srgb, var(--cm-ok) 40%, transparent);background:color-mix(in srgb, var(--cm-ok) 8%, transparent)}._367UGW_mergeTile[data-tone=info]{border-color:color-mix(in srgb, var(--cm-info) 40%, transparent);background:color-mix(in srgb, var(--cm-info) 8%, transparent)}._367UGW_mergeTile[data-tone=warn]{border-color:color-mix(in srgb, var(--cm-warn) 40%, transparent);background:color-mix(in srgb, var(--cm-warn) 8%, transparent)}._367UGW_mergeTile[data-tone=error]{border-color:color-mix(in srgb, var(--cm-error) 40%, transparent);background:color-mix(in srgb, var(--cm-error) 8%, transparent)}._367UGW_mergeTileValue{font-size:var(--cm-fs-title);color:var(--cm-text-1);font-variant-numeric:tabular-nums;font-weight:600;line-height:1.25}._367UGW_mergeTileLabel{font-size:var(--cm-fs-meta);color:var(--cm-text-2);line-height:1.25}._367UGW_mergeToolbar{flex-wrap:wrap;align-items:center;gap:6px;display:flex}._367UGW_mergeToolbarLabel{font-size:var(--cm-fs-meta);color:var(--cm-text-3)}._367UGW_mergeIconLabel{align-items:center;gap:4px;display:inline-flex}._367UGW_mergeResult{border:.5px solid var(--cm-line-1);border-radius:var(--cm-r-3);background:var(--cm-surface-1);flex-direction:column;gap:2px;padding:10px 12px;display:flex}._367UGW_mergeFooterSummary{min-width:0;font-size:var(--cm-fs-meta);color:var(--cm-text-2);line-height:1.5}._367UGW_mergeSection{border:.5px solid var(--cm-line-1);border-radius:var(--cm-r-3);background:var(--cm-surface-1);padding:10px 12px}._367UGW_mergeSection+._367UGW_mergeSection{margin-top:8px}._367UGW_mergeSectionHead{flex-wrap:wrap;align-items:center;gap:8px;display:flex}._367UGW_mergeSectionName{font-size:var(--cm-fs-title);color:var(--cm-text-1);font-weight:600}._367UGW_mergeMeta{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary)}._367UGW_mergeActions{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}._367UGW_mergeActionActive{background:var(--cm-ghost-active-fill);border-color:var(--cm-ghost-active-border);font-weight:600}._367UGW_mergeConflictRow{border:.5px solid var(--cm-line-1);border-radius:var(--cm-r-2);background:color-mix(in srgb, var(--cm-text-1) 4%, transparent);margin-top:8px;padding:8px}._367UGW_mergeConflictPath{overflow-wrap:anywhere;min-width:0;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);align-items:baseline;gap:6px;display:flex}._367UGW_mergeKind{border-radius:var(--cm-r-1);background:color-mix(in srgb, var(--cm-text-1) 8%, transparent);font-size:var(--cm-fs-meta);color:var(--cm-text-2);flex:none;padding:0 6px;line-height:1.5}._367UGW_mergeConflictReason{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);margin-top:4px}._367UGW_mergeCols{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-top:6px;display:grid}._367UGW_mergeCol{min-width:0}._367UGW_mergeColLabel{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);display:block}._367UGW_mergeColValue{white-space:pre-wrap;overflow-wrap:anywhere;max-height:88px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);color:var(--cm-text-2);margin:0;overflow:auto}._367UGW_mergeScroll[data-fit=modal]{scrollbar-gutter:stable;max-height:46vh;padding:8px}._367UGW_syncActivity{flex-direction:column;gap:4px;margin-top:8px;display:flex}._367UGW_syncActivityTrack{display:block}._367UGW_syncActivityLabel{font-size:var(--cm-fs-meta);color:var(--cm-text-2);line-height:1.5}";
|
|
15845
|
+
const css = "._367UGW_section{height:100%;min-height:0;font-family:var(--dsw-font-family);font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);flex-direction:column;line-height:1.5;display:flex;position:relative;overflow:hidden}body{--cm-disk-card-h:420px;--cm-text-1:var(--dsw-alias-label-primary);--cm-text-2:var(--dsw-alias-label-secondary);--cm-text-3:var(--dsw-alias-label-tertiary);--cm-text-on-accent:var(--dsw-alias-label-primary-foreground);--cm-surface-1:var(--dsw-alias-bg-layer-1);--cm-surface-2:var(--dsw-alias-bg-layer-2);--cm-surface-hover:var(--dsw-alias-interactive-bg-hover);--cm-line-1:var(--dsw-alias-border-l1);--cm-line-2:var(--dsw-alias-border-l2);--cm-input-bg:var(--dsw-specific-input-major);--cm-chat-bubble:var(--dsw-specific-bubble,color-mix(in srgb, var(--cm-text-1) 12%, transparent));--cm-accent:var(--dsw-alias-state-business-primary);--cm-accent-fill:var(--dsw-alias-button-info-fill);--cm-accent-hover:var(--dsw-alias-button-info-hover);--cm-ok:var(--dsw-alias-state-success-primary);--cm-info:var(--cm-accent);--cm-warn:var(--dsw-alias-state-warn-primary);--cm-error:var(--dsw-alias-state-error-primary);--cm-idle:var(--dsw-alias-state-idle-primary,var(--dsw-alias-label-tertiary));--cm-brand:var(--dsw-alias-brand-primary,var(--cm-accent));--cm-warn-label:var(--dsw-alias-state-warn-label,var(--cm-warn));--cm-fs-meta:var(--dsw-font-xxxs-11-font-size,11px);--cm-fs-table:var(--dsw-font-xxs-12-font-size,12px);--cm-fs-base:12.5px;--cm-fs-title:var(--dsw-font-xs-13-font-size,13px);--cm-sp-1:2px;--cm-sp-2:4px;--cm-sp-3:6px;--cm-sp-4:8px;--cm-sp-5:10px;--cm-sp-6:12px;--cm-sp-7:14px;--cm-sp-8:16px;--cm-sp-9:24px;--cm-r-1:var(--dsw-radius-xs,4px);--cm-r-2:var(--dsw-radius-sm,8px);--cm-r-3:var(--dsw-radius-md,12px);--cm-r-surface:var(--dsw-radius-lg,16px);--cm-r-pill:999px;--cm-h-sm:24px;--cm-h-md:28px;--cm-h-lg:32px;--cm-menu-surface:var(--dsw-menu-surface-fill,var(--dsw-alias-bg-layer-2));--cm-menu-backdrop:var(--dsw-menu-backdrop-filter,none);--cm-menu-icon:var(--dsw-alias-menu-icon,var(--dsw-alias-label-secondary));--cm-tooltip-bg:var(--dsw-alias-tooltip-bg,var(--dsw-alias-bg-layer-2));--cm-tooltip-fg:var(--dsw-static-neutral-bluish-00,var(--dsw-alias-label-primary));--cm-toast-bg:var(--dsw-alias-toast-bg,var(--dsw-alias-bg-layer-2));--cm-toast-fg:var(--dsw-alias-toast-label,var(--dsw-alias-label-primary));--cm-mask:var(--dsw-alias-bg-mask-1,color-mix(in srgb, var(--dsw-alias-bg-base) 55%, transparent));--cm-mask-blur:var(--dsw-mask-blur,none);--cm-skeleton:var(--dsw-alias-bg-skeleton,color-mix(in srgb, var(--dsw-alias-label-tertiary) 14%, transparent));--cm-hover:var(--dsw-alias-interactive-bg-hover);--cm-active:var(--dsw-alias-interactive-bg-active,var(--dsw-alias-interactive-bg-hover));--cm-hover-danger:var(--dsw-alias-interactive-bg-hover-danger,color-mix(in srgb, var(--cm-error) 12%, transparent));--cm-ghost-active-fill:var(--dsw-alias-button-ghost-active-fill,color-mix(in srgb, var(--cm-accent) 16%, transparent));--cm-ghost-active-border:var(--dsw-alias-button-ghost-active-border,color-mix(in srgb, var(--cm-accent) 45%, transparent));--cm-primary-fill:var(--dsw-alias-button-primary-fill,var(--cm-accent-fill));--cm-primary-hover:var(--dsw-alias-button-primary-hover,var(--cm-accent-hover));--cm-shadow-1:var(--dsw-elevation-soft,0 10px 26px color-mix(in srgb, var(--dsw-alias-bg-base) 45%, transparent));--cm-shadow-2:var(--dsw-elevation-prominent,0 12px 32px color-mix(in srgb, var(--dsw-alias-bg-base) 40%, transparent));--cm-focus-width:var(--dsw-focus-ring-width,2px);--cm-focus-color:var(--dsw-focus-ring-color,var(--cm-accent));--cm-z-raise:1;--cm-z-sticky:2;--cm-z-task:90;--cm-z-mask:100;--cm-z-modal:101;--cm-z-pop:110;--cm-z-toast:120;--cm-motion-fast:.12s;--cm-motion-base:.18s;--cm-motion-slow:.3s;--cm-motion-ease-out:cubic-bezier(.16, 1, .3, 1);--cm-motion-ease-in-out:cubic-bezier(.4, 0, .6, 1)}._367UGW_section :is(button,a,input,select,textarea,[role=tab]){transition-property:background-color,border-color,color;transition-duration:var(--cm-motion-fast);transition-timing-function:ease}._367UGW_section :is(button,a,input,select,textarea,[role=tab]):focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:2px}._367UGW_mono{font-variant-numeric:tabular-nums;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}._367UGW_section svg{color:inherit;flex:none}._367UGW_shellNav{flex:none;align-items:center;gap:8px;padding:8px;display:flex}._367UGW_navStrip{border-radius:var(--cm-r-3);background:var(--cm-hover);border:none;flex:auto;align-items:center;gap:2px;min-width:0;padding:2px;display:flex;overflow:hidden}._367UGW_navTab,._367UGW_navMore{border-radius:var(--cm-r-2);height:24px;font:inherit;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;flex:none;align-items:center;gap:4px;padding:0 10px;font-weight:500;display:inline-flex;position:relative}._367UGW_navTab:hover:not(:disabled),._367UGW_navMore:hover:not(:disabled){color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}._367UGW_navMore:disabled{opacity:.4;cursor:default}._367UGW_navTab:focus-visible,._367UGW_navMore:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px;border-radius:var(--cm-r-2)}._367UGW_navTab[data-active],._367UGW_navMore[data-active]{background:var(--cm-ghost-active-fill);box-shadow:inset 0 0 0 1px var(--cm-ghost-active-border);color:var(--dsw-alias-label-primary);font-weight:600}._367UGW_navDot{background:var(--cm-error);border-radius:50%;flex:none;width:6px;height:6px}._367UGW_navMoreRoot{flex:none}._367UGW_navMeasure{visibility:hidden;pointer-events:none;align-items:center;gap:2px;padding:2px;display:flex;position:absolute;top:0;left:-9999px}._367UGW_navActions{flex:none;align-items:center;gap:4px;margin-left:4px;display:flex}._367UGW_navActions ._367UGW_ghostButton[data-active]{border-color:color-mix(in srgb, var(--cm-accent) 55%, transparent);color:var(--cm-accent)}._367UGW_iconBtn{border-radius:var(--cm-r-2);width:28px;height:28px;font:inherit;font-size:var(--cm-fs-title);color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;justify-content:center;align-self:center;align-items:center;padding:0;line-height:1.25;display:inline-flex}._367UGW_iconBtn:hover{background:var(--cm-hover);color:var(--dsw-alias-label-primary)}._367UGW_iconBtn:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px}._367UGW_iconBtn:disabled{opacity:.4;cursor:default}._367UGW_iconBtn[data-size=sm]{border-radius:var(--cm-r-1);width:18px;height:18px}._367UGW_iconBtn[data-active]{background:var(--cm-ghost-active-fill);box-shadow:inset 0 0 0 1px var(--cm-ghost-active-border);color:var(--cm-accent)}._367UGW_iconBtn[data-danger]{color:var(--cm-error)}._367UGW_iconBtn[data-danger]:hover{background:color-mix(in srgb, var(--cm-error) 12%, transparent);border-color:var(--cm-error);color:var(--cm-error)}._367UGW_shellMain{overscroll-behavior:contain;flex-direction:column;flex:auto;min-height:0;display:flex;overflow-y:auto}._367UGW_pagePad{min-height:0;animation:_367UGW_pageEnter var(--cm-motion-base) var(--cm-motion-ease-out);flex-direction:column;flex:auto;padding:12px 16px 16px;display:flex}@keyframes _367UGW_pageEnter{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}._367UGW_snapshotList>*,._367UGW_dataTable tbody tr{animation:_367UGW_itemEnter var(--cm-motion-base) var(--cm-motion-ease-out) both}._367UGW_snapshotList>:nth-child(2),._367UGW_dataTable tbody tr:nth-child(2){animation-delay:24ms}._367UGW_snapshotList>:nth-child(3),._367UGW_dataTable tbody tr:nth-child(3){animation-delay:48ms}._367UGW_snapshotList>:nth-child(4),._367UGW_dataTable tbody tr:nth-child(4){animation-delay:72ms}._367UGW_snapshotList>:nth-child(n+5),._367UGW_dataTable tbody tr:nth-child(n+5){animation-delay:96ms}@keyframes _367UGW_itemEnter{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}._367UGW_viewEnter{animation:_367UGW_itemEnter var(--cm-motion-base) var(--cm-motion-ease-out);flex-direction:column;flex:auto;gap:10px;min-height:0;display:flex}._367UGW_collapse{visibility:hidden;transition:grid-template-rows var(--cm-motion-base) var(--cm-motion-ease-out), visibility 0s linear var(--cm-motion-base);grid-template-rows:0fr;display:grid}._367UGW_collapse[data-open]{visibility:visible;transition:grid-template-rows var(--cm-motion-base) var(--cm-motion-ease-out), visibility 0s;grid-template-rows:1fr}._367UGW_collapseInner{min-height:0;overflow:hidden}._367UGW_shellContent{flex-direction:column;flex:auto;min-height:0;display:flex;position:relative}._367UGW_taskPanel{z-index:var(--cm-z-task);background:var(--dsw-alias-bg-layer-1);min-height:0;animation:_367UGW_taskPanelIn var(--cm-motion-base) var(--cm-motion-ease-out);flex-direction:column;display:flex;position:absolute;inset:0}@keyframes _367UGW_taskPanelIn{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}._367UGW_taskHead{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:8px;height:44px;padding:0 12px;display:flex}._367UGW_taskTitle{font-size:var(--cm-fs-title);color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:700;overflow:hidden}._367UGW_taskBody{overscroll-behavior:contain;flex:auto;min-height:0;padding:12px 16px 16px;overflow-y:auto}@media (prefers-reduced-motion:reduce){._367UGW_taskPanel{animation:none}}._367UGW_statusBar{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);height:28px;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);white-space:nowrap;flex:none;align-items:center;gap:10px;margin:0 8px 8px;padding:0 10px;display:flex;overflow:hidden}._367UGW_bannerSlot{padding:8px 12px 0}._367UGW_syncChannelBody{margin-top:10px}._367UGW_syncChannelBody ._367UGW_collapseInner{flex-direction:column;gap:10px;display:flex}._367UGW_statusTask{color:var(--dsw-alias-label-secondary);font-weight:600}._367UGW_statusProgress{background:color-mix(in srgb, var(--cm-accent) 20%, transparent);border-radius:999px;flex:none;width:60px;height:4px;display:inline-block;position:relative;overflow:hidden}._367UGW_statusProgress:after{content:\"\";background:var(--cm-accent);width:40%;animation:_367UGW_statusIndeterminate 1.2s var(--cm-motion-ease-in-out) infinite;border-radius:999px;position:absolute;inset:0 auto 0 0}@keyframes _367UGW_statusIndeterminate{0%{transform:translate(-100%)}to{transform:translate(250%)}}._367UGW_statusDot{width:10px;height:10px;color:var(--cm-idle);transition:color var(--cm-motion-fast) ease;border-radius:50%;flex:none;display:inline-block}._367UGW_statusDot[data-kind=ok]{color:var(--cm-ok)}._367UGW_statusDot[data-kind=info]{color:var(--cm-accent)}._367UGW_statusDot[data-kind=warn]{color:var(--cm-warn)}._367UGW_statusDot[data-kind=error]{color:var(--cm-error)}._367UGW_statusDot[data-pulse]{animation:1.2s ease-in-out infinite _367UGW_statusPulse}._367UGW_statusDot:after{content:\"\";background:currentColor;border-radius:50%;width:60%;height:60%;margin:20%;display:block}@keyframes _367UGW_statusPulse{0%,to{opacity:1}50%{opacity:.35}}._367UGW_statusText{text-overflow:ellipsis;min-width:0;overflow:hidden}._367UGW_statusSpacer{flex:auto}._367UGW_primaryButton,._367UGW_ghostButton,._367UGW_dangerButton{border-radius:var(--cm-r-2);height:28px;font:inherit;font-size:var(--cm-fs-table);white-space:nowrap;cursor:pointer;user-select:none;border:.5px solid #0000;justify-content:center;align-items:center;gap:4px;padding:0 10px;font-weight:500;line-height:1.25;display:inline-flex}._367UGW_primaryButton{background:var(--cm-primary-fill);color:var(--cm-text-on-accent)}._367UGW_primaryButton:hover:not(:disabled){background:var(--cm-primary-hover)}._367UGW_ghostButton{border-color:var(--dsw-alias-border-l3);color:var(--dsw-alias-label-primary);background:0 0}._367UGW_ghostButton:hover:not(:disabled){background:var(--cm-hover)}._367UGW_ghostButton:active:not(:disabled){background:var(--cm-active)}._367UGW_dangerButton{border-color:color-mix(in srgb, var(--cm-error) 45%, transparent);color:var(--cm-error);background:0 0}._367UGW_dangerButton:hover:not(:disabled){background:var(--cm-hover-danger);border-color:var(--cm-error)}._367UGW_primaryButton:focus-visible,._367UGW_ghostButton:focus-visible,._367UGW_dangerButton:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px}._367UGW_primaryButton:disabled,._367UGW_ghostButton:disabled,._367UGW_dangerButton:disabled{opacity:.4;cursor:default}._367UGW_primaryButton[data-size=sm],._367UGW_ghostButton[data-size=sm],._367UGW_dangerButton[data-size=sm]{height:24px;font-size:var(--cm-fs-meta);border-radius:var(--cm-r-2);padding:0 8px}._367UGW_input{border:.5px solid var(--dsw-alias-border-l4);border-radius:var(--cm-r-2);background:var(--dsw-specific-input-major);height:28px;font:inherit;font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);box-sizing:border-box;padding:0 8px}._367UGW_field>._367UGW_input,._367UGW_field>._367UGW_selectRoot{width:100%;position:relative}._367UGW_input::placeholder{color:var(--dsw-alias-label-dimmed)}._367UGW_input:hover{border-color:color-mix(in srgb, var(--cm-accent) 40%, var(--dsw-alias-border-l2))}._367UGW_input:focus{border-color:var(--cm-accent);outline:none}._367UGW_input:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}._367UGW_input[type=password]{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-table)}._367UGW_selectRoot{vertical-align:middle;min-width:0;max-width:100%;font-size:var(--cm-fs-base);display:inline-block;position:relative}._367UGW_selectTrigger{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l4);border-radius:var(--cm-r-2);background:var(--dsw-specific-input-major);width:100%;height:28px;font:inherit;font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);text-align:left;cursor:pointer;transition:border-color var(--cm-motion-fast) ease, box-shadow var(--cm-motion-fast) ease;align-items:center;gap:6px;padding:0 8px;display:flex}._367UGW_selectTrigger:hover{border-color:color-mix(in srgb, var(--cm-accent) 40%, var(--dsw-alias-border-l2))}._367UGW_selectTrigger:focus-visible,._367UGW_selectRoot[data-open] ._367UGW_selectTrigger{border-color:var(--cm-accent);outline:none}._367UGW_selectTrigger:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}._367UGW_selectLabel{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}._367UGW_selectChevron{color:var(--dsw-alias-label-secondary);transition:transform var(--cm-motion-fast) var(--cm-motion-ease-out);flex:none}._367UGW_selectRoot[data-open] ._367UGW_selectChevron{transform:rotate(180deg)}._367UGW_selectMenu{z-index:var(--cm-z-pop);box-sizing:border-box;overscroll-behavior:contain;border-radius:var(--cm-r-surface);background:var(--cm-menu-surface);max-width:260px;max-height:220px;backdrop-filter:var(--cm-menu-backdrop);box-shadow:var(--cm-shadow-2);transform-origin:top;animation:_367UGW_selectMenuIn var(--cm-motion-fast) var(--cm-motion-ease-out);border:0;padding:4px;position:absolute;overflow-y:auto}._367UGW_selectRoot[data-align=end] ._367UGW_selectMenu{left:auto;right:0}._367UGW_selectMenuPortal{pointer-events:auto;visibility:hidden}._367UGW_selectMenuPortal[data-ready]{visibility:visible}@keyframes _367UGW_selectMenuIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}._367UGW_selectOption{border-radius:var(--cm-r-3);font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);cursor:pointer;align-items:center;gap:8px;padding:6px 8px;display:flex}._367UGW_selectOption[data-active]{background:var(--cm-hover)}._367UGW_selectOption[aria-selected=true],._367UGW_selectOption[aria-checked=true]{color:var(--cm-accent);background:var(--cm-ghost-active-fill);box-shadow:inset 2px 0 0 var(--cm-accent);font-weight:600}._367UGW_selectOption[data-disabled]{opacity:.4;cursor:default}._367UGW_selectOptionLabel{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}._367UGW_libraryFilters{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);flex:none;align-items:center;gap:2px;margin-top:8px;padding:2px;display:flex;overflow:hidden}._367UGW_libraryFilter{border-radius:var(--cm-r-2);height:24px;font:inherit;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;flex:none;align-items:center;gap:4px;padding:0 8px;display:inline-flex}._367UGW_libraryFilter:hover{background:var(--dsw-alias-interactive-bg-hover)}._367UGW_libraryFilter[data-active]{color:var(--cm-accent);background:color-mix(in srgb, var(--cm-accent) 16%, transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--cm-accent) 45%, transparent);font-weight:600}._367UGW_libraryFilterCount{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary)}._367UGW_libraryFilter[data-active] ._367UGW_libraryFilterCount{color:inherit}._367UGW_librarySearch{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);border-radius:var(--cm-r-2);background:var(--dsw-specific-input-major);width:100%;height:28px;font:inherit;font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);flex:none;margin-top:8px;padding:0 8px}._367UGW_librarySearch:focus-visible{border-color:var(--cm-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--cm-accent) 18%, transparent);outline:none}._367UGW_libraryFooter{border-top:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:8px;margin-top:8px;padding-top:8px;display:flex}._367UGW_libraryCount{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary)}._367UGW_artifactList{overscroll-behavior:contain;flex:auto;min-height:0;margin:0;padding:0;list-style:none;overflow-y:auto}._367UGW_libraryListState{flex-direction:column;flex:auto;justify-content:center;min-height:0;display:flex}._367UGW_librarySkeletonRegion{justify-content:flex-start;overflow:hidden}._367UGW_artifactRow{border-bottom:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 60%, transparent)}._367UGW_artifactRow:last-child{border-bottom:none}._367UGW_artifactRow[data-expanded]{background:color-mix(in srgb, var(--cm-accent) 5%, transparent)}._367UGW_artifactRowHead{box-sizing:border-box;cursor:pointer;align-items:center;gap:8px;min-height:52px;padding:8px 10px;display:flex}._367UGW_artifactRowHead:hover{background:var(--dsw-alias-interactive-bg-hover)}._367UGW_artifactExpand{border-radius:var(--cm-r-1);width:20px;height:20px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}._367UGW_artifactExpand:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px}._367UGW_artifactMain{flex:auto;min-width:0}._367UGW_artifactTitle{align-items:center;gap:6px;min-width:0;display:flex}._367UGW_artifactName{font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}._367UGW_artifactMeta{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;overflow:hidden}._367UGW_artifactBadges,._367UGW_artifactActions{flex:none;align-items:center;gap:4px;display:flex}._367UGW_artifactDetailWrap{transition:grid-template-rows var(--cm-motion-base) var(--cm-motion-ease-out);grid-template-rows:0fr;display:grid}._367UGW_artifactRow[data-expanded] ._367UGW_artifactDetailWrap{grid-template-rows:1fr}._367UGW_artifactDetailInner{min-height:0;transition:padding var(--cm-motion-base) var(--cm-motion-ease-out);padding:0 10px 0 38px;overflow:hidden}._367UGW_artifactRow[data-expanded] ._367UGW_artifactDetailInner{padding:2px 10px 10px 38px}._367UGW_artifactDetailInner>*{opacity:0;transition:opacity var(--cm-motion-fast) var(--cm-motion-ease-out)}._367UGW_artifactRow[data-expanded] ._367UGW_artifactDetailInner>*{opacity:1;transition-delay:60ms}._367UGW_artifactRow:not([data-expanded]) ._367UGW_artifactDetailInner>*{transition-delay:0s}._367UGW_paletteInput{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);border-radius:var(--cm-r-2);background:var(--dsw-specific-input-major);width:100%;height:32px;font:inherit;font-size:var(--cm-fs-title);color:var(--dsw-alias-label-primary);padding:0 10px}._367UGW_paletteInput:focus-visible{border-color:var(--cm-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--cm-accent) 18%, transparent);outline:none}._367UGW_paletteList{overscroll-behavior:contain;max-height:280px;margin-top:8px;overflow-y:auto}._367UGW_paletteGroup{font-size:var(--cm-fs-meta);letter-spacing:.02em;color:var(--dsw-alias-label-tertiary);user-select:none;padding:8px 8px 4px;font-weight:500}._367UGW_paletteGroup:not([data-first]){border-top:1px solid var(--dsw-alias-border-l1);margin-top:4px}._367UGW_paletteItem{border-radius:var(--cm-r-2);font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);cursor:pointer;align-items:center;gap:8px;padding:6px 8px;display:flex}._367UGW_paletteItem[data-active]{background:var(--dsw-alias-interactive-bg-hover)}._367UGW_paletteItem[data-disabled]{opacity:.45;cursor:default}._367UGW_paletteItemLabel{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}._367UGW_paletteItemGroup{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);flex:none}._367UGW_paletteEmpty{font-size:var(--cm-fs-base);color:var(--dsw-alias-label-tertiary);padding:10px 8px}._367UGW_paletteHint{border-top:1px solid var(--dsw-alias-border-l1);font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);margin-top:8px;padding-top:6px}._367UGW_checkboxRow,._367UGW_radioLabel{cursor:pointer;font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);align-items:flex-start;gap:6px;display:flex}._367UGW_checkboxRow input,._367UGW_radioLabel input{width:16px;height:16px;accent-color:var(--cm-brand);cursor:pointer;flex:none;margin:2px 0 0}._367UGW_checkboxRow input:focus-visible,._367UGW_radioLabel input:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:2px}._367UGW_badge{border-radius:var(--cm-r-pill);height:19px;font-size:var(--cm-fs-meta);white-space:nowrap;color:var(--dsw-alias-label-tertiary);border:none;align-items:center;gap:4px;padding:0 8px;font-weight:500;line-height:1.25;display:inline-flex}._367UGW_badge[data-kind=ok]{background:color-mix(in srgb, var(--cm-ok) 10%, transparent);color:var(--cm-ok)}._367UGW_badge[data-kind=info]{background:color-mix(in srgb, var(--cm-accent) 10%, transparent);color:var(--cm-accent)}._367UGW_badge[data-kind=warn]{background:color-mix(in srgb, var(--cm-warn) 12%, transparent);color:var(--cm-warn)}._367UGW_badge[data-kind=error]{background:color-mix(in srgb, var(--cm-error) 10%, transparent);color:var(--cm-error)}._367UGW_badgeHost{align-items:center;display:inline-flex}._367UGW_banner{animation:_367UGW_itemEnter var(--cm-motion-base) var(--cm-motion-ease-out);border-radius:var(--cm-r-3);border:.5px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);font-size:var(--cm-fs-base);box-sizing:border-box;flex-wrap:wrap;align-items:center;gap:6px 10px;width:100%;margin:0 0 10px;padding:8px 12px;display:flex}._367UGW_banner[data-kind=ok]{border-color:color-mix(in srgb, var(--cm-ok) 35%, transparent);background:color-mix(in srgb, var(--cm-ok) 10%, transparent)}._367UGW_banner[data-kind=info]{border-color:color-mix(in srgb, var(--cm-accent) 30%, transparent);background:color-mix(in srgb, var(--cm-accent) 10%, transparent)}._367UGW_banner[data-kind=warn]{border-color:color-mix(in srgb, var(--cm-warn) 40%, transparent);background:color-mix(in srgb, var(--cm-warn) 12%, transparent)}._367UGW_banner[data-kind=error]{border-color:color-mix(in srgb, var(--cm-error) 45%, transparent);background:color-mix(in srgb, var(--cm-error) 10%, transparent)}._367UGW_spinnerWrap{vertical-align:middle;align-items:center;gap:6px;display:inline-flex}._367UGW_spinner{vertical-align:middle;transform-origin:50%;flex:none;width:13px;height:13px;animation:.7s linear infinite _367UGW_spin;display:inline-block}._367UGW_spinnerTrack{fill:none;stroke:color-mix(in srgb, currentColor 30%, transparent);stroke-width:3px}._367UGW_spinnerArc{fill:none;stroke:currentColor;stroke-width:3px;stroke-linecap:round}@keyframes _367UGW_spin{to{transform:rotate(360deg)}}._367UGW_spinnerLabel{font-size:var(--cm-fs-table);color:inherit;opacity:.85}._367UGW_skeletonRoot{flex-direction:column;gap:8px;width:100%;margin-top:8px;display:flex}._367UGW_skeletonBars,._367UGW_skeletonCards{flex-direction:column;gap:8px;display:flex}._367UGW_skeletonBar{border-radius:var(--cm-r-1);background-color:var(--cm-skeleton);background-image:linear-gradient(90deg, transparent, color-mix(in srgb, var(--dsw-alias-label-tertiary) 26%, transparent), transparent);animation:_367UGW_skeletonShimmer 1.3s var(--cm-motion-ease-in-out) infinite;background-position:-160px 0;background-repeat:no-repeat;background-size:160px 100%;display:block}@keyframes _367UGW_skeletonShimmer{to{background-position:calc(100% + 160px) 0}}._367UGW_skeletonTitle{border-radius:var(--cm-r-2);width:42%;height:13px}._367UGW_skeletonLine{height:11px}._367UGW_skeletonBlock{border-radius:var(--cm-r-3);height:46px}._367UGW_skeletonRow{border-radius:var(--cm-r-2);height:30px}._367UGW_skeletonBars>._367UGW_skeletonBar:nth-child(4n+2){width:92%}._367UGW_skeletonBars>._367UGW_skeletonBar:nth-child(4n+3){width:78%}._367UGW_skeletonBars>._367UGW_skeletonBar:nth-child(4n){width:64%}._367UGW_skeletonBars>._367UGW_skeletonBar:nth-child(2){animation-delay:60ms}._367UGW_skeletonBars>._367UGW_skeletonBar:nth-child(3){animation-delay:.12s}._367UGW_skeletonBars>._367UGW_skeletonBar:nth-child(4){animation-delay:.18s}._367UGW_skeletonBars>._367UGW_skeletonBar:nth-child(n+5){animation-delay:.24s}._367UGW_skeletonCard{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);flex-direction:column;gap:8px;padding:12px;display:flex}._367UGW_skeletonCard>._367UGW_skeletonBar:nth-child(2){width:84%}._367UGW_skeletonCard>._367UGW_skeletonBar:nth-child(3){width:56%}._367UGW_skeletonTable{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);overflow:hidden}._367UGW_skeletonTableRow{border-bottom:1px solid var(--dsw-alias-border-l1);align-items:center;gap:10px;padding:8px 10px;display:flex}._367UGW_skeletonTableRow:last-child{border-bottom:none}._367UGW_skeletonTableCell{flex:1 1 0;height:11px}._367UGW_skeletonTableCell:first-child{flex:0 0 40%}._367UGW_skeletonTableCell:last-child{flex:0 0 20%}._367UGW_skeletonRows{flex-direction:column;display:flex}._367UGW_skeletonRowItem{box-sizing:border-box;border-bottom:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 60%, transparent);align-items:center;gap:8px;min-height:52px;padding:8px 10px;display:flex}._367UGW_skeletonRowItem:last-child{border-bottom:none}._367UGW_skeletonRowItem:nth-child(2) ._367UGW_skeletonBar{animation-delay:60ms}._367UGW_skeletonRowItem:nth-child(3) ._367UGW_skeletonBar{animation-delay:.12s}._367UGW_skeletonRowItem:nth-child(4) ._367UGW_skeletonBar{animation-delay:.18s}._367UGW_skeletonRowItem:nth-child(n+5) ._367UGW_skeletonBar{animation-delay:.24s}._367UGW_skeletonRowIcon{flex:none;width:20px;height:20px}._367UGW_skeletonRowBody{flex-direction:column;flex:auto;gap:6px;min-width:0;display:flex}._367UGW_skeletonRowTitle{width:38%;height:12px}._367UGW_skeletonRowMeta{width:24%;height:10px}._367UGW_skeletonRowAction{flex:none;width:56px;height:20px}._367UGW_statValueSkeleton{border-radius:var(--cm-r-1);width:26px;height:12px;display:inline-block}._367UGW_skeletonCaption{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary)}._367UGW_card{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);margin:0 0 10px;padding:12px}._367UGW_groupLabel{font-size:var(--cm-fs-meta);letter-spacing:.02em;color:var(--dsw-alias-label-tertiary);margin-bottom:8px;font-weight:700;display:block}._367UGW_groupHeader{align-items:baseline;gap:8px;margin-bottom:10px;display:flex}._367UGW_groupHeader ._367UGW_groupLabel{white-space:nowrap;flex:none;margin-bottom:0}._367UGW_groupNote{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary)}._367UGW_groupItems{flex-direction:column;gap:6px;display:flex}._367UGW_sectionOptionRow{flex-direction:column;gap:4px;display:flex}._367UGW_field{flex-direction:column;gap:4px;margin:0 0 10px;display:flex}._367UGW_fieldLabel{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);font-weight:600}._367UGW_hint{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);line-height:1.5}._367UGW_formError{font-size:var(--cm-fs-meta);color:var(--cm-error)}._367UGW_infoHint{vertical-align:middle;align-items:center;display:inline-flex}._367UGW_infoHintBtn{border-radius:var(--cm-r-1);width:18px;height:18px;font:inherit;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;line-height:1.25;display:inline-flex}._367UGW_infoHintBtn:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}._367UGW_infoHintBtn[data-open]:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px}._367UGW_infoHintBtn[data-open]{color:var(--dsw-alias-label-primary)}._367UGW_infoHintBtn[data-pinned]{background:color-mix(in srgb, var(--cm-accent) 14%, transparent);color:var(--cm-accent)}._367UGW_infoHintBubble{z-index:var(--cm-z-pop);box-sizing:border-box;border-radius:var(--cm-r-2);background:var(--cm-tooltip-bg);max-width:min(260px,100vw - 24px);max-height:min(480px,100vh - 16px);box-shadow:var(--cm-shadow-1);color:var(--cm-tooltip-fg);font-size:var(--cm-fs-table);white-space:pre-wrap;overflow-wrap:anywhere;pointer-events:none;visibility:hidden;border:0;padding:8px 10px;line-height:1.5;position:fixed;overflow-y:auto}._367UGW_infoHintBubble[data-ready]{visibility:visible;animation:_367UGW_infoHintIn var(--cm-motion-fast) var(--cm-motion-ease-out);transform-origin:top}._367UGW_infoHintBubble[data-ready][data-side=top]{transform-origin:bottom}@keyframes _367UGW_infoHintIn{0%{opacity:0}to{opacity:1}}._367UGW_controlRow{align-items:center;gap:8px;margin:0 0 10px;display:flex}._367UGW_sectionTitleBlock{min-width:0;margin:0 0 10px}._367UGW_sectionTitleRow{align-items:center;gap:8px;min-width:0;display:flex}._367UGW_sectionTitle{font-size:var(--cm-fs-title);color:var(--dsw-alias-label-primary);margin:0;font-weight:700;line-height:1.5}._367UGW_sectionSubtitle{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);margin:1px 0 0}._367UGW_empty{animation:_367UGW_itemEnter var(--cm-motion-base) var(--cm-motion-ease-out);border:1px dashed var(--dsw-alias-border-l2);border-radius:var(--cm-r-3);text-align:center;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-tertiary);box-sizing:border-box;flex-direction:column;justify-content:center;align-items:center;gap:4px;width:100%;padding:24px 16px;display:flex}._367UGW_emptySteps{margin:2px 0 10px}._367UGW_tableWrap{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);margin-bottom:10px;overflow:hidden}._367UGW_tableFixed th,._367UGW_tableFixed td{padding-left:12px;padding-right:12px}._367UGW_tableScroll{max-height:420px;overflow:auto}._367UGW_dataTable{border-collapse:collapse;width:100%;font-size:var(--cm-fs-table)}._367UGW_dataTable th,._367UGW_dataTable td{box-sizing:border-box}._367UGW_tableFixed{table-layout:fixed}._367UGW_tableFixed td,._367UGW_tableFixed th{text-overflow:ellipsis;overflow:hidden}._367UGW_tableCompact th,._367UGW_tableCompact td{padding-left:8px;padding-right:8px}._367UGW_dataTable td._367UGW_dim{white-space:nowrap}._367UGW_dataTable th{z-index:var(--cm-z-raise);text-align:left;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2);border-bottom:.5px solid var(--dsw-alias-border-l2);white-space:nowrap;padding:6px 10px;font-weight:600;position:sticky;top:0}._367UGW_dataTable td{border-bottom:.5px solid var(--dsw-alias-border-l2);vertical-align:middle;color:var(--dsw-alias-label-primary);padding:6px 10px}._367UGW_dataTable tbody tr:last-child td{border-bottom:none}._367UGW_dataTable tbody tr{transition:background-color .1s ease-out}._367UGW_dataTable tbody tr:hover{background:var(--dsw-alias-interactive-bg-hover)}._367UGW_dataTable tbody tr[data-selected]{background:color-mix(in srgb, var(--cm-accent) 9%, transparent)}._367UGW_dataTable ._367UGW_num{text-align:right;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-table);white-space:nowrap}._367UGW_dataTable ._367UGW_dim{color:var(--dsw-alias-label-secondary)}._367UGW_dataTable ._367UGW_cellActions{text-align:right;white-space:nowrap}._367UGW_dataTable td._367UGW_cellActions{text-overflow:clip;overflow:visible}._367UGW_rowActions{align-items:center;gap:2px;display:inline-flex}._367UGW_cellMain{flex-direction:column;justify-content:center;gap:1px;min-width:0;min-height:30px;display:flex}._367UGW_cellTitle{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}._367UGW_cellMeta{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);align-items:center;gap:6px;min-width:0;display:inline-flex;overflow:hidden}._367UGW_cellMetaNoteText{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}._367UGW_actionRow ._367UGW_banner{flex:auto;min-width:0;margin:0}._367UGW_warnText{color:var(--cm-warn)}._367UGW_kvRow{border-bottom:.5px solid var(--dsw-alias-border-l2);font-size:var(--cm-fs-table);align-items:baseline;gap:10px;min-width:0;padding:4px 0;display:flex}._367UGW_kvRow:last-child{border-bottom:none}._367UGW_kvRow+._367UGW_actionRow{margin-top:8px}._367UGW_checkboxRow+._367UGW_actionRow{margin-top:10px}._367UGW_kvKey{width:88px;color:var(--dsw-alias-label-tertiary);font-size:var(--cm-fs-meta);flex:none}._367UGW_kvValue{overflow-wrap:anywhere;flex:auto;min-width:0}._367UGW_kvValue._367UGW_mono{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary)}._367UGW_segGroup,._367UGW_modeTabs{border-radius:var(--cm-r-3);background:var(--cm-hover);border:none;align-items:center;gap:2px;margin:0 0 10px;padding:2px;display:inline-flex}._367UGW_segItem,._367UGW_modeTab{border-radius:var(--cm-r-2);height:24px;font:inherit;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;align-items:center;gap:4px;padding:0 10px;font-weight:500;display:inline-flex}._367UGW_segItem:hover,._367UGW_modeTab:hover{color:var(--dsw-alias-label-primary)}._367UGW_segItem:focus-visible,._367UGW_modeTab:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px}._367UGW_segItem[data-active],._367UGW_modeTab[data-active]{background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);box-shadow:var(--cm-shadow-1);font-weight:500}._367UGW_modeHint{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);margin:-4px 0 10px}._367UGW_stepperDot,._367UGW_stepperLabel{transition:background-color var(--cm-motion-fast) ease, border-color var(--cm-motion-fast) ease, color var(--cm-motion-fast) ease}._367UGW_stepper{scrollbar-width:none;align-items:center;padding:2px 0;display:flex;overflow-x:auto}._367UGW_stepper::-webkit-scrollbar{display:none}._367UGW_stepperStep{flex:none;align-items:center;gap:4px;display:inline-flex}._367UGW_stepperDot{border:1.5px solid var(--dsw-alias-border-l2);width:17px;height:17px;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2);border-radius:50%;flex:none;justify-content:center;align-items:center;font-weight:700;display:inline-flex}._367UGW_stepperDot[data-state=current]{border-color:var(--cm-accent);background:var(--cm-accent);color:var(--dsw-alias-label-primary-foreground)}._367UGW_stepperDot[data-state=done]{background:color-mix(in srgb, var(--cm-ok) 16%, transparent);color:var(--cm-ok);border-color:#0000}._367UGW_stepperLabel{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);white-space:nowrap}._367UGW_stepperStep[data-state=current] ._367UGW_stepperLabel{color:var(--dsw-alias-label-primary);font-weight:600}._367UGW_stepperStep[data-state=done] ._367UGW_stepperLabel{color:var(--dsw-alias-label-secondary)}._367UGW_stepperConnector{background:var(--dsw-alias-border-l2);flex:none;width:14px;height:1.5px;margin:0 4px}._367UGW_stepperStep[data-state=done] ._367UGW_stepperConnector{background:color-mix(in srgb, var(--cm-ok) 45%, transparent)}._367UGW_progressBlock{margin:0 0 10px}._367UGW_progressTrack{border-radius:var(--cm-r-1);background:color-mix(in srgb, var(--dsw-alias-border-l1) 80%, transparent);height:5px;position:relative;overflow:hidden}._367UGW_progressBar{border-radius:var(--cm-r-1);background:var(--cm-accent);transition:width var(--cm-motion-slow) var(--cm-motion-ease-out);position:absolute;inset:0 auto 0 0}._367UGW_progressBarDone{background:var(--cm-ok)}._367UGW_progressBarFailed{background:var(--cm-error)}._367UGW_progressIndeterminate{border-radius:var(--cm-r-1);background:var(--cm-accent);width:34%;animation:_367UGW_indet 1.15s var(--cm-motion-ease-in-out) infinite;position:absolute;top:0;bottom:0}@keyframes _367UGW_indet{0%{left:-34%}to{left:100%}}._367UGW_progressMeta{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);align-items:center;gap:8px;margin-top:4px;display:flex}._367UGW_progressLabel{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}._367UGW_progressPercent{color:var(--dsw-alias-label-tertiary);flex:none;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}._367UGW_progressBadge{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);flex:none;align-items:center;gap:4px;display:inline-flex}._367UGW_progressBadgeCount{border-radius:var(--cm-r-3);background:color-mix(in srgb, var(--cm-info) 14%, transparent);color:var(--dsw-alias-label-secondary);padding:0 4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}._367UGW_progressBadgeSection{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}._367UGW_progressDetail{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);margin-top:2px}._367UGW_planScroll,._367UGW_mergeScroll,._367UGW_reportScroll,._367UGW_confirmScroll,._367UGW_diffScroll,._367UGW_historyScroll,._367UGW_consultScroll{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-base);max-height:380px;overflow:auto}._367UGW_consultScroll{padding:0 6px}._367UGW_logScroll{background:var(--dsw-alias-bg-base);max-height:220px;overflow:auto}._367UGW_dialogMask{z-index:var(--cm-z-mask);background:var(--cm-mask);backdrop-filter:var(--cm-mask-blur);animation:_367UGW_maskIn var(--cm-motion-fast) var(--cm-motion-ease-out);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}@keyframes _367UGW_maskIn{0%{opacity:0}to{opacity:1}}._367UGW_dialogContentCenter{z-index:var(--cm-z-modal);animation:_367UGW_dialogIn var(--cm-motion-base) var(--cm-motion-ease-out);position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes _367UGW_dialogIn{0%{opacity:0}to{opacity:1}}._367UGW_dialogMask[data-state=closed]{animation:_367UGW_maskOut var(--cm-motion-fast) var(--cm-motion-ease-out)}._367UGW_dialogContentCenter[data-state=closed]{animation:_367UGW_dialogOut var(--cm-motion-fast) var(--cm-motion-ease-out)}@keyframes _367UGW_maskOut{to{opacity:0}}@keyframes _367UGW_dialogOut{to{opacity:0;transform:translate(-50%,-50%)scale(.98)}}._367UGW_dialogCard{border-radius:var(--cm-r-surface);background:var(--dsw-alias-bg-layer-2);width:min(640px,100vw - 48px,95%);max-width:calc(100vw - 48px);max-height:min(600px,100vh - 64px,92%);box-shadow:var(--cm-shadow-2);border:0;flex-direction:column;display:flex}._367UGW_dialogHeader{font-size:var(--cm-fs-title);color:var(--dsw-alias-label-primary);padding:12px 16px 0;font-weight:500}._367UGW_dialogHeaderRow{align-items:center;gap:8px;padding:12px 14px 0;display:flex}._367UGW_dialogHeaderRow ._367UGW_dialogHeader{padding:0}._367UGW_dialogClose{margin-left:auto}._367UGW_dialogBody{min-height:0;font-size:var(--cm-fs-base);color:var(--dsw-alias-label-secondary);flex:auto;padding:8px 16px 12px;overflow-y:auto}._367UGW_dialogBodyScroll{scrollbar-gutter:stable;max-height:460px;overflow-y:auto}._367UGW_dialogWide{width:min(720px,100vw - 48px,96%);max-height:min(620px,100vh - 64px,92%)}._367UGW_dialogFooter{border-top:.5px solid var(--dsw-alias-border-l2);justify-content:flex-end;gap:8px;margin:0;padding:10px 16px 14px}._367UGW_updateVersionRow{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;display:flex}._367UGW_updateVersionArrow{color:var(--dsw-alias-label-tertiary)}._367UGW_updateVersionTarget{font-size:var(--cm-fs-title);color:var(--dsw-alias-label-primary);font-weight:600}._367UGW_updateNotesLoading{justify-content:center;padding:24px 0;display:flex}._367UGW_toastViewport{z-index:var(--cm-z-toast);pointer-events:none;flex-direction:column;align-items:flex-end;gap:8px;max-width:calc(100% - 20px);display:flex;position:absolute;bottom:42px;right:10px}._367UGW_toast{pointer-events:auto;border-radius:var(--cm-r-surface);background:var(--cm-toast-bg);width:fit-content;max-width:420px;box-shadow:var(--cm-shadow-2);font-size:var(--cm-fs-title);color:var(--cm-toast-fg);animation:_367UGW_toastIn var(--cm-motion-base) var(--cm-motion-ease-out);border:0;align-items:flex-start;gap:8px;padding:12px 16px;line-height:1.5;display:flex}@keyframes _367UGW_toastIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}._367UGW_toast[data-kind=ok] ._367UGW_toastGlyph{color:var(--cm-ok)}._367UGW_toast[data-kind=info] ._367UGW_toastGlyph{color:var(--cm-accent)}._367UGW_toast[data-kind=warn] ._367UGW_toastGlyph{color:var(--cm-warn-label)}._367UGW_toast[data-kind=error] ._367UGW_toastGlyph{color:var(--cm-error)}._367UGW_toastGlyph{flex:none;margin-top:1px;display:inline-flex}._367UGW_toastText{word-break:break-word;min-width:0}._367UGW_toast>button{flex:none;width:18px;height:18px;margin-left:2px}._367UGW_statusAction{font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;min-width:0;padding:0;display:inline-flex}._367UGW_statusAction:hover{color:var(--dsw-alias-label-primary);text-decoration:underline}._367UGW_statusAction:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px;border-radius:var(--cm-r-1)}._367UGW_runsCenter{flex-direction:column;gap:10px;display:flex}._367UGW_runsSummary{flex-wrap:wrap;align-items:center;gap:8px;display:flex}._367UGW_runsSummaryTitle{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);font-weight:700}._367UGW_runsCardHead{flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 8px;display:flex}._367UGW_runsCardTitle{font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);font-weight:600}._367UGW_runsWarnNote{border:1px solid color-mix(in srgb, var(--cm-warn) 45%, transparent);border-radius:var(--cm-r-2);background:color-mix(in srgb, var(--cm-warn) 10%, transparent);font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);margin:8px 0 0;padding:6px 8px}._367UGW_runsWarnNoteDetail{color:var(--dsw-alias-label-tertiary);margin:4px 0 0}._367UGW_runsCardTime{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);white-space:nowrap;margin-left:auto}._367UGW_runsCounts{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);margin:8px 0 0}._367UGW_runsLogTail{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-2);background:var(--dsw-alias-bg-base);max-height:108px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);margin:8px 0 0;padding:6px 8px;line-height:1.5;overflow-y:auto}._367UGW_runsLogLine{white-space:pre-wrap;word-break:break-all}._367UGW_runsCardActions{flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0 0;display:flex}._367UGW_runsOption{border:1px solid var(--dsw-alias-border-l2);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);width:100%;font:inherit;color:var(--dsw-alias-label-primary);text-align:left;cursor:pointer;flex-direction:column;gap:2px;margin:0 0 8px;padding:8px 10px;display:flex}._367UGW_runsOption:hover{border-color:var(--cm-accent)}._367UGW_runsOption:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px}._367UGW_runsOption[data-active]{border-color:var(--cm-accent);background:color-mix(in srgb, var(--cm-accent) 8%, transparent)}._367UGW_runsOptionTitle{font-size:var(--cm-fs-base);align-items:center;gap:6px;font-weight:600;display:flex}._367UGW_runsOptionDesc{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary)}._367UGW_runsOptionTag{font-size:var(--cm-fs-meta);background:color-mix(in srgb, var(--cm-accent) 14%, transparent);color:var(--cm-accent);border-radius:999px;padding:0 4px;font-weight:600}._367UGW_actionRow{flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px;display:flex}._367UGW_actionRowTop{flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0;display:flex}._367UGW_headRow{flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px;display:flex}._367UGW_headRow ._367UGW_groupLabel{margin-bottom:0}._367UGW_authorRow{flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;display:flex}._367UGW_authorRow ._367UGW_groupLabel{margin-bottom:0}._367UGW_marketFilterGrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:8px;display:grid}._367UGW_marketFilterSearch{grid-column:1/-1}._367UGW_marketFilterMeta{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;display:flex}._367UGW_statStrip{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);flex-wrap:wrap;flex:none;align-items:stretch;gap:6px 0;min-height:32px;margin-bottom:10px;display:flex}._367UGW_statStrip>:last-child{padding-right:8px}._367UGW_statStrip[data-tone=error]{border-color:color-mix(in srgb, var(--cm-error) 45%, transparent);background:color-mix(in srgb, var(--cm-error) 7%, transparent)}._367UGW_statStrip[data-tone=warn]{border-color:color-mix(in srgb, var(--cm-warn) 40%, transparent);background:color-mix(in srgb, var(--cm-warn) 6%, transparent)}._367UGW_statHealth{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);white-space:nowrap;flex:none;align-items:center;gap:6px;padding:4px 8px;font-weight:600;display:flex}._367UGW_statHealthAction{font:inherit;font-size:var(--cm-fs-table);cursor:pointer;text-align:left;background:0 0;border:none;font-weight:600}._367UGW_statHealthAction:hover{background:var(--dsw-alias-interactive-bg-hover)}._367UGW_statHealthAction:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:-2px;border-radius:var(--cm-r-2)}._367UGW_statSeg{border:none;border-left:1px solid var(--dsw-alias-border-l1);font:inherit;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);white-space:nowrap;cursor:pointer;background:0 0;flex:none;align-items:center;gap:6px;padding:4px 8px;display:flex}._367UGW_statSeg>span:first-child{color:var(--dsw-alias-label-tertiary)}._367UGW_statSeg:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}._367UGW_statSeg:hover>span:first-child{color:var(--dsw-alias-label-secondary)}._367UGW_statSeg:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:-2px}._367UGW_statSeg b{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:700}._367UGW_statSegDim{color:var(--dsw-alias-label-tertiary)}._367UGW_toolRow{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;display:flex}._367UGW_infoValue{flex:auto;align-items:center;gap:8px;min-width:0;display:inline-flex}._367UGW_infoValue ._367UGW_mono{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._367UGW_copyBtn{border-radius:var(--cm-r-1);width:20px;height:20px;font:inherit;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;line-height:1.25;display:inline-flex}._367UGW_copyBtn:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}._367UGW_copyBtn:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px}._367UGW_activityRow ._367UGW_copyBtn{opacity:0}._367UGW_activityRow:hover ._367UGW_copyBtn,._367UGW_activityRow ._367UGW_copyBtn:focus-visible{opacity:1}._367UGW_activityCard{flex-direction:column;min-height:0;margin-bottom:0;display:flex}._367UGW_diskUsageCard{height:var(--cm-disk-card-h);min-height:var(--cm-disk-card-h);max-height:var(--cm-disk-card-h)}._367UGW_diskUsageScroll{flex:auto;min-height:0;max-height:none}._367UGW_activityHeader{align-items:center;gap:8px;margin-bottom:8px;display:flex}._367UGW_activityTitle{font-size:var(--cm-fs-meta);letter-spacing:.02em;color:var(--dsw-alias-label-tertiary);flex:auto;font-weight:700}._367UGW_activityRows{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-base);flex:auto;min-height:0;overflow-y:auto}._367UGW_activityRow{border-bottom:.5px solid var(--dsw-alias-border-l2);font-size:var(--cm-fs-table);grid-template-columns:72px minmax(0,1fr) auto;align-items:center;gap:10px;min-width:0;padding:4px 10px;line-height:1.5;display:grid}._367UGW_activityRow:last-child{border-bottom:none}._367UGW_activityTime{color:var(--dsw-alias-label-tertiary);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;line-height:1.5;font-size:var(--cm-fs-meta);white-space:nowrap;justify-self:end}._367UGW_activityKind{color:var(--dsw-alias-label-tertiary);line-height:1.5;font-size:var(--cm-fs-meta);white-space:nowrap;flex:none}._367UGW_activitySummary{min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;line-height:1.5;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);align-items:center;gap:6px;display:inline-flex}._367UGW_activitySummaryText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._367UGW_activityBadge{flex:none;justify-content:flex-end;align-items:center;line-height:1.5;display:inline-flex}._367UGW_activityResultOk{line-height:1.5;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);white-space:nowrap;align-items:center;gap:4px;display:inline-flex}._367UGW_factGrid{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px 12px;display:grid}._367UGW_factCell{flex-direction:column;gap:2px;min-width:0;display:flex}._367UGW_factLabel{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);white-space:nowrap}._367UGW_factValue{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}._367UGW_sectionGrid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:0 24px;display:grid}._367UGW_sectionRow{border-bottom:.5px solid var(--dsw-alias-border-l2);font-size:var(--cm-fs-table);grid-template-columns:minmax(0,1fr) auto 56px;align-items:center;gap:10px;min-width:0;padding:4px 0;display:grid}._367UGW_sectionRow:nth-last-child(-n+2){border-bottom:none}._367UGW_sectionName{min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._367UGW_sectionCount{color:var(--dsw-alias-label-tertiary);font-size:var(--cm-fs-meta);font-variant-numeric:tabular-nums;white-space:nowrap;justify-self:end}._367UGW_sectionSize{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;justify-self:end}._367UGW_activityEmpty{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);text-align:center;padding:16px}._367UGW_snapshotList{flex-direction:column;gap:10px;margin-bottom:12px;display:flex}._367UGW_snapshotRow{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);align-items:center;gap:10px;padding:12px 14px;display:flex}._367UGW_snapshotRow[data-selected]{border-color:var(--cm-accent);background:color-mix(in srgb, var(--cm-accent) 7%, transparent)}._367UGW_snapshotRowHeader{font-size:var(--cm-fs-table);align-items:center;gap:8px;display:flex}._367UGW_snapshotRowMain{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;font-weight:500;overflow:hidden}._367UGW_snapshotRowText{flex-direction:column;flex:auto;gap:4px;min-width:0;display:flex}._367UGW_snapshotRowName{font-weight:500;font-size:var(--cm-fs-base);word-break:break-all;line-height:1.5}._367UGW_snapshotRowMeta{min-width:0;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary);align-items:center;gap:10px;display:flex}._367UGW_snapshotRowFacts{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;flex:none}._367UGW_snapshotList._367UGW_reportScroll{background:var(--dsw-alias-bg-layer-2);margin-bottom:0;padding:10px 12px 10px 10px}._367UGW_reasonList{flex-direction:column;flex-basis:100%;gap:4px;min-width:0;display:flex}._367UGW_reasonLine{align-items:baseline;gap:6px;min-width:0;display:flex}._367UGW_reasonLine>span:first-child{overflow-wrap:anywhere;min-width:0}._367UGW_viewBody{flex-direction:column;flex:auto;min-width:0;min-height:0;display:flex}._367UGW_resultScroll{flex:auto;min-height:0;overflow-y:auto}._367UGW_resultFooter{border-top:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;margin:10px 0 0;padding-top:10px}._367UGW_fillCard{flex:auto;margin-bottom:0}._367UGW_fillViewport{flex-direction:column;flex:auto;min-height:0;margin-bottom:0;display:flex}._367UGW_fillViewport ._367UGW_tableScroll{flex:auto;max-height:none}._367UGW_compositionViewport{flex:auto;min-height:0;overflow:auto}._367UGW_sparseFill{flex-direction:column;flex:auto;justify-content:flex-start;align-items:flex-start;gap:10px;min-height:280px;display:flex}._367UGW_pickerRoot{flex-direction:column;gap:8px;min-width:0;display:flex;position:relative}._367UGW_pickerOverlay{z-index:var(--cm-z-sticky);animation:_367UGW_maskIn var(--cm-motion-fast) var(--cm-motion-ease-out);border-radius:var(--cm-r-3);background:color-mix(in srgb, var(--dsw-alias-bg-layer-2) 62%, transparent);backdrop-filter:blur(1px);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}._367UGW_pickerToolbar{align-items:center;gap:8px;min-width:0;display:flex}._367UGW_pickerToolbar ._367UGW_input{flex:auto;min-width:0}._367UGW_pickerList{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);max-height:320px;padding:4px 10px;overflow:auto}._367UGW_pickerModalBody{flex-direction:column;gap:8px;height:min(420px,62vh);min-height:0;display:flex}._367UGW_pickerModalBody ._367UGW_pickerRoot{flex:auto;min-height:0}._367UGW_pickerModalBody ._367UGW_pickerList{scrollbar-gutter:stable;flex:auto;min-height:0;max-height:none}._367UGW_pickerGroup+._367UGW_pickerGroup{border-top:.5px solid var(--dsw-alias-border-l2)}._367UGW_pickerUnit{animation:_367UGW_itemEnter var(--cm-motion-base) var(--cm-motion-ease-out);align-items:center;min-width:0;padding:2px 0 2px 16px;display:flex}._367UGW_pickerUnitName{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:280px;overflow:hidden}._367UGW_pickerTreeRow{align-items:center;gap:4px;min-width:0;padding:4px 0;display:flex}._367UGW_pickerTreeRow>:last-child{flex:auto;min-width:0}._367UGW_pickerChevronSpacer{flex:none;width:18px;height:18px;display:inline-block}._367UGW_pickerGroupTitle{border-top:1px solid var(--dsw-alias-border-l2);align-items:center;gap:6px;padding:8px 0 4px;display:flex}._367UGW_pickerGroupTitle:first-child{border-top:none;padding-top:0}._367UGW_pickerGroupTitleName{font-size:var(--cm-fs-meta);letter-spacing:.02em;color:var(--dsw-alias-label-secondary);font-weight:600}._367UGW_pickerSubgroup{padding-left:18px}._367UGW_pickerSubgroupName{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}._367UGW_pickerChildren{border-left:1px solid var(--dsw-alias-border-l1);margin-left:8px;padding-left:4px}._367UGW_pickerUnitNested{gap:4px}._367UGW_pickerMore{justify-content:center;align-items:center;gap:6px;padding:4px 0 2px 16px;display:flex}._367UGW_pickerUnitDetail{max-width:220px;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._367UGW_pickerCount{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap}._367UGW_pickerFooter{border-top:1px solid var(--dsw-alias-border-l1);font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);padding-top:6px}._367UGW_optionsRow{align-items:center;gap:16px;display:flex;& ._367UGW_noticeSlot{flex-direction:column;justify-content:center;min-height:40px;display:flex}& ._367UGW_noticeSlot ._367UGW_banner{margin:0}& ._367UGW_noticeLine{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}margin-bottom:4px}._367UGW_groupList{flex-direction:column;gap:8px;margin-bottom:10px;display:flex}._367UGW_groupCard{margin:0}._367UGW_categoryItem{flex-wrap:wrap;align-items:baseline;gap:8px;min-width:0;display:flex}._367UGW_categoryName{color:var(--dsw-alias-label-primary);flex:none;font-weight:500}._367UGW_categoryDesc{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);min-width:0}._367UGW_optionsCard{margin:0 0 10px}._367UGW_secretFields ._367UGW_field{margin-bottom:0}._367UGW_secretFields{background:0 0;border:none;border-radius:0;grid-template-columns:1fr 1fr;gap:0 10px;margin:6px 0 10px;padding:0;display:grid}._367UGW_warnList{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);margin:4px 0 0;padding-left:18px}._367UGW_wizardStepperRow{align-items:center;gap:10px;margin-bottom:10px;display:flex}._367UGW_conflictDetail{margin-top:2px}._367UGW_conflictList{flex-direction:column;gap:8px;margin-bottom:10px;display:flex}._367UGW_conflictItem{border:1px solid color-mix(in srgb, var(--cm-warn) 35%, transparent);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);padding:10px 12px}._367UGW_conflictHead{font-size:var(--cm-fs-table);align-items:center;gap:8px;margin-bottom:6px;display:flex}._367UGW_conflictId{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}._367UGW_conflictOptions{flex-wrap:wrap;gap:4px 14px;margin-top:6px;display:flex}._367UGW_conflictChoices{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:8px;display:grid}._367UGW_choiceCard{border:1px solid var(--dsw-alias-border-l2);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-base);font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary);cursor:pointer;align-items:center;gap:6px;padding:8px 10px;font-weight:500;transition:border-color .12s ease-out,background-color .12s ease-out;display:flex}._367UGW_choiceCard:hover{border-color:color-mix(in srgb, var(--cm-accent) 40%, var(--dsw-alias-border-l2))}._367UGW_choiceCard:focus-within{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px}._367UGW_choiceCard[data-selected]{border-color:var(--cm-accent);background:color-mix(in srgb, var(--cm-accent) 9%, transparent);color:var(--dsw-alias-label-primary)}._367UGW_choiceCard input{width:13px;height:13px;accent-color:var(--cm-accent);flex:none;margin:0}._367UGW_choiceTitle{min-width:0}._367UGW_conflictDetail{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-2);background:var(--dsw-alias-bg-base);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;white-space:normal;padding:8px 10px}._367UGW_conflictPrefix{color:var(--dsw-alias-label-tertiary);margin-bottom:4px}._367UGW_conflictLine{align-items:baseline;gap:8px;padding:4px 0;display:flex}._367UGW_conflictLine+._367UGW_conflictLine{border-top:.5px solid var(--dsw-alias-border-l2)}._367UGW_conflictLineLabel{min-width:56px;color:var(--dsw-alias-label-tertiary);flex:none;font-weight:600}._367UGW_conflictLineValue{overflow-wrap:anywhere;flex:auto;min-width:0}._367UGW_pathMappingList{flex-direction:column;gap:6px;margin-bottom:10px;display:flex}._367UGW_pathRow{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);flex-direction:column;align-items:stretch;gap:8px;padding:8px 10px;display:flex}._367UGW_pathOld,._367UGW_pathNew{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);border-radius:var(--cm-r-2);background:var(--dsw-alias-bg-base);overflow-wrap:anywhere;flex-direction:column;flex:auto;width:100%;min-width:0;padding:4px 8px;display:flex}._367UGW_pathValue{color:var(--dsw-alias-label-secondary);white-space:pre-wrap;overflow-wrap:anywhere;margin:2px 0 0}._367UGW_pathIssueKind{flex:none}._367UGW_pathInputRow{align-items:center;gap:4px;min-width:0;display:flex}._367UGW_pathInputRow>._367UGW_input{flex:auto;min-width:0}._367UGW_pickerPath{box-sizing:border-box;border-radius:var(--cm-r-2);background:var(--dsw-alias-bg-layer-2);width:100%;color:var(--dsw-alias-label-secondary);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);overflow-wrap:anywhere;padding:4px 8px}._367UGW_pickerList{flex-direction:column;gap:2px;display:flex}._367UGW_pickerRow{box-sizing:border-box;border-radius:var(--cm-r-2);width:100%;min-width:0;color:inherit;font:inherit;font-size:var(--cm-fs-meta);text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;align-items:center;gap:6px;padding:4px 8px;display:flex}._367UGW_pickerRow:hover{background:var(--dsw-alias-bg-layer-2)}._367UGW_pickerRow:focus-visible{outline:2px solid var(--cm-accent);outline-offset:-1px}._367UGW_pickerName{overflow-wrap:anywhere;min-width:0}._367UGW_secretsList{flex-direction:column;display:flex}._367UGW_snapshotPickerRow{flex-wrap:nowrap;align-items:flex-end;gap:8px;margin-top:10px;margin-bottom:10px;display:flex}._367UGW_snapshotPickerRow ._367UGW_field{margin-bottom:0}._367UGW_pickerAction{flex:none;align-items:center;display:inline-flex}._367UGW_logPanel{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-base);margin-bottom:10px;overflow:hidden}._367UGW_logHeader{border-bottom:1px solid var(--dsw-alias-border-l1);font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2);align-items:center;gap:8px;padding:6px 10px;font-weight:600;display:flex}._367UGW_logLine{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);white-space:pre-wrap;overflow-wrap:anywhere;padding:1px 10px;line-height:1.5}._367UGW_logCounts{color:var(--dsw-alias-label-tertiary);font-weight:500}._367UGW_logFilterButton{font:inherit;font-size:var(--cm-fs-meta);color:var(--cm-accent);cursor:pointer;background:0 0;border:none;padding:0 4px}._367UGW_logFilterButton[data-active]{color:var(--dsw-alias-label-primary);font-weight:700}._367UGW_logEntry+._367UGW_logEntry{border-top:.5px solid var(--dsw-alias-border-l2)}._367UGW_logLine[data-level=fail]{color:var(--cm-error)}._367UGW_logLine[data-level=warn]{color:var(--cm-warn)}._367UGW_logLine[data-level=ok]{color:var(--cm-ok)}._367UGW_logLine[data-level=skip]{color:var(--dsw-alias-label-tertiary)}._367UGW_logLine[data-level=running]{color:var(--dsw-alias-label-primary)}._367UGW_logDetail{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);white-space:pre-wrap;overflow-wrap:anywhere;padding:0 10px 0 22px;line-height:1.5}._367UGW_logDetail[data-kind=command]{color:var(--dsw-alias-label-secondary)}._367UGW_logEmpty{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);text-align:center;padding:12px}._367UGW_logJumpButton{font:inherit;font-size:var(--cm-fs-meta);color:var(--cm-accent);cursor:pointer;background:0 0;border:none;margin-left:auto;padding:0 4px}._367UGW_reportView{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);margin-bottom:10px;overflow:hidden}._367UGW_reportList{flex-direction:column;display:flex}._367UGW_confirmItem{border-bottom:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 50%, transparent);padding:8px 10px}._367UGW_confirmItem:last-child{border-bottom:none}._367UGW_confirmItemHead{flex-wrap:wrap;align-items:center;gap:8px;display:flex}._367UGW_confirmItemDesc{min-width:0;font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;flex:200px}._367UGW_confirmItemHead+._367UGW_conflictItem{margin-top:8px}._367UGW_reportBlock{margin-bottom:10px}._367UGW_reportProblemRow{border-bottom:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 50%, transparent);padding:6px 10px}._367UGW_reportProblemRow:last-child{border-bottom:none}._367UGW_reportProblemHead{align-items:center;gap:6px;display:flex}._367UGW_reportProblemText{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);overflow-wrap:anywhere}._367UGW_reportProblemReason{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;margin-top:2px;line-height:1.5}._367UGW_reportSectionRow{align-items:center;gap:6px;padding:4px 0;display:flex}._367UGW_reportWarningRow{font-size:var(--cm-fs-meta);color:var(--cm-warn);overflow-wrap:anywhere;padding:2px 10px;line-height:1.5}._367UGW_reportDetails{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);margin-top:4px}._367UGW_reportDetails>summary{cursor:pointer;color:var(--dsw-alias-label-secondary);padding:2px 0}._367UGW_reportDetails ._367UGW_reportScroll{margin-top:6px}._367UGW_reportView ._367UGW_reportScroll{background:0 0;border:none;border-radius:0}._367UGW_reportBody{flex-direction:column;gap:2px;padding:8px 12px;display:flex}._367UGW_reportHeadline{font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);margin-bottom:2px;font-weight:600}._367UGW_reportText{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:8px 12px}._367UGW_reportFooter{border-top:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);align-items:center;gap:8px;padding:8px 12px;display:flex}._367UGW_errorBanner{border:1px solid color-mix(in srgb, var(--cm-error) 45%, transparent);border-radius:var(--cm-r-3);background:color-mix(in srgb, var(--cm-error) 8%, transparent);font-size:var(--cm-fs-table);align-items:flex-start;gap:8px;margin:0 0 10px;padding:8px 12px;display:flex}._367UGW_errorTitle{color:var(--cm-error);font-weight:600}._367UGW_errorLine{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--dsw-alias-label-secondary);margin:0}._367UGW_errorList{font-size:var(--cm-fs-meta);margin:4px 0 0;padding-left:18px}._367UGW_errorItem{overflow-wrap:anywhere}._367UGW_errorReason{white-space:pre-wrap;overflow-wrap:anywhere;min-width:0;color:var(--dsw-alias-label-tertiary);margin:0}._367UGW_errorFooter{margin-top:6px}._367UGW_errorAction{margin-right:8px}._367UGW_errorActionLabel{color:var(--cm-accent)}._367UGW_inspectGroup{margin-bottom:10px}._367UGW_kindTag{border-radius:var(--cm-r-1);background:var(--dsw-alias-interactive-bg-hover);height:16px;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);white-space:nowrap;align-items:center;padding:0 6px;font-weight:600;display:inline-flex}._367UGW_kindTagOk{background:color-mix(in srgb, var(--cm-ok) 13%, transparent);color:var(--cm-ok)}._367UGW_kindTagInfo{background:color-mix(in srgb, var(--cm-accent) 13%, transparent);color:var(--cm-accent)}._367UGW_kindTagWarn{background:color-mix(in srgb, var(--cm-warn) 13%, transparent);color:var(--cm-warn)}._367UGW_kindTagError{background:color-mix(in srgb, var(--cm-error) 13%, transparent);color:var(--cm-error)}._367UGW_restorePlan{animation:_367UGW_itemEnter var(--cm-motion-base) var(--cm-motion-ease-out);flex-direction:column;gap:10px;display:flex}._367UGW_restorePlanList{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}._367UGW_restorePlanRow,._367UGW_restorePlanRowStatic{border-radius:var(--cm-r-2);align-items:center;gap:8px;width:100%;padding:4px 6px;display:flex}._367UGW_restorePlanRow{color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none}._367UGW_restorePlanRow:hover{background:var(--dsw-alias-interactive-bg-hover)}._367UGW_restorePlanRow:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb, var(--cm-accent) 55%, transparent);outline:none}._367UGW_restorePlanPath{min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}._367UGW_restorePlanStat{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none}._367UGW_restorePlanChevron{color:var(--dsw-alias-label-tertiary);flex:none}._367UGW_restorePlanNote{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;padding:0 6px 4px 24px}._367UGW_restorePlanGroupHead{align-items:center;gap:8px;margin:0 0 4px;display:flex}._367UGW_restorePlanGroupHead ._367UGW_groupLabel{margin-bottom:0;display:inline}._367UGW_diffGroupToggle{color:var(--dsw-alias-label-secondary);font-size:var(--cm-fs-meta);cursor:pointer;background:0 0;border:none;padding:0;font-weight:700}._367UGW_diffGroupToggle:hover{color:var(--dsw-alias-label-primary)}._367UGW_diffGroupToggle:focus-visible{border-radius:var(--cm-r-1);box-shadow:0 0 0 2px color-mix(in srgb, var(--cm-accent) 55%, transparent);outline:none}._367UGW_diffStatTotal{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);font-variant-numeric:tabular-nums}._367UGW_diffStatAdd{color:var(--cm-ok)}._367UGW_diffStatDel{color:var(--cm-error)}._367UGW_rollbackTabIcon{flex:none;align-items:center;margin-right:6px;display:inline-flex}._367UGW_diffFileHead{border-bottom:1px solid var(--dsw-alias-border-l1);font-size:var(--cm-fs-table);flex:none;align-items:center;gap:8px;padding:2px 6px;line-height:1.5;display:flex}._367UGW_diffFilePath{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-secondary);flex:auto;overflow:hidden}._367UGW_diffFileStat{font-variant-numeric:tabular-nums;flex:none}._367UGW_diffPane{margin:2px 0 8px}._367UGW_diffPaneFill{flex-direction:column;height:100%;min-height:0;margin:0;display:flex}._367UGW_diffPane ._367UGW_diffScroll{max-height:min(80vh,800px)}._367UGW_dialogCard ._367UGW_diffPane ._367UGW_diffScroll{max-height:380px}._367UGW_diffPaneFill ._367UGW_diffScroll{flex:auto;min-height:0;max-height:calc(100vh - 90px)}._367UGW_diffTable{border-collapse:collapse;table-layout:fixed;width:100%;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-table);line-height:1.5}._367UGW_diffNoColW3{width:calc(3ch + 18px)}._367UGW_diffNoColW4{width:calc(4ch + 18px)}._367UGW_diffNoColW5{width:calc(5ch + 18px)}._367UGW_diffNoColW6{width:calc(6ch + 18px)}._367UGW_diffNoHead{border-bottom:1px solid var(--dsw-alias-border-l1);border-right:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-tertiary);font-size:var(--cm-fs-meta);text-align:left;padding:2px 6px;font-weight:600;line-height:1.5}._367UGW_diffNoHead+._367UGW_diffNoHead{border-left:1px solid var(--dsw-alias-border-l1)}._367UGW_diffHunkRow td{background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-tertiary);padding:2px 6px}._367UGW_diffTable tbody td:nth-child(3),._367UGW_diffHunkRow td+td{border-left:1px solid var(--dsw-alias-border-l1)}._367UGW_diffNo{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;text-align:right;vertical-align:top;user-select:none;padding:1px 4px}._367UGW_diffNoDel{background:color-mix(in srgb, var(--cm-error) 12%, transparent);color:var(--cm-error);box-shadow:inset 3px 0 0 var(--cm-error)}._367UGW_diffNoAdd{background:color-mix(in srgb, var(--cm-ok) 12%, transparent);color:var(--cm-ok);box-shadow:inset 3px 0 0 var(--cm-ok)}._367UGW_diffCell{color:var(--dsw-alias-label-secondary);white-space:pre-wrap;overflow-wrap:anywhere;vertical-align:top;padding:1px 6px}._367UGW_diffCellAdd{background:color-mix(in srgb, var(--cm-ok) 12%, transparent)}._367UGW_diffCellDel{background:color-mix(in srgb, var(--cm-error) 12%, transparent)}._367UGW_nextStepsGroup{margin-bottom:10px}._367UGW_nextStepsList{max-height:132px;overflow-y:auto}._367UGW_rollbackBox{border:1px solid var(--dsw-alias-border-l2);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-base);margin-bottom:10px;padding:8px 10px}._367UGW_statRow{flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;display:flex}._367UGW_statRow:not(:last-child){margin-bottom:10px}._367UGW_consultSection{margin-top:10px}._367UGW_consultSection:first-of-type{margin-top:8px}._367UGW_consultSection ._367UGW_statRow{margin-top:0}._367UGW_hiddenFile{display:none}._367UGW_cliName,._367UGW_cliCommand{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta)}._367UGW_cliCommand{color:var(--dsw-alias-label-secondary);white-space:pre-wrap;overflow-wrap:anywhere;margin:0}._367UGW_historyGroup{margin-bottom:12px}._367UGW_historyRow{border-bottom:.5px solid var(--dsw-alias-border-l2);font-size:var(--cm-fs-table);align-items:flex-start;gap:8px;padding:6px 8px;display:flex}._367UGW_historyRow:last-child{border-bottom:none}._367UGW_historyRowMain{flex:auto;min-width:0}._367UGW_historyMeta{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:2px;display:flex}._367UGW_historySummary{overflow-wrap:anywhere;color:var(--dsw-alias-label-secondary);display:block}._367UGW_historyTime{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);flex:none;padding-top:1px}._367UGW_historySections{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary)}._367UGW_profileRow{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);margin-bottom:6px;padding:8px 12px}._367UGW_profileRow[data-selected]{border-color:var(--cm-accent);background:color-mix(in srgb, var(--cm-accent) 7%, transparent)}._367UGW_profileRowHeader{font-size:var(--cm-fs-table);align-items:center;gap:8px;display:flex}._367UGW_profileRowMain{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;font-weight:500;overflow:hidden}button._367UGW_profileRowMain{font:inherit;color:var(--dsw-alias-label-primary);text-align:left;cursor:pointer;background:0 0;border:none;flex-direction:column;align-items:flex-start;gap:2px;padding:0;display:flex}._367UGW_profileRowTitle{align-items:center;gap:6px;min-width:0;max-width:100%;display:flex}._367UGW_profileRowName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._367UGW_profileRowMeta{max-width:100%;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-weight:400;display:block;overflow:hidden}._367UGW_detailLines{font-size:var(--cm-fs-meta);flex-direction:column;gap:2px;min-width:0;display:flex}button._367UGW_profileRowMain:hover{color:var(--cm-accent)}._367UGW_listHeaderRow{align-items:center;gap:8px;margin:0 0 8px;display:flex}._367UGW_listHeaderRow ._367UGW_groupLabel{margin-bottom:0}._367UGW_listHeaderRow ._367UGW_cellMeta{flex:auto;min-width:0}._367UGW_badgeRow{flex:none;align-items:center;gap:4px;display:inline-flex}._367UGW_actionRow[data-inline]{flex:none;margin:0}._367UGW_aboutLinkRow{flex-wrap:wrap;align-items:center;gap:8px;display:flex}._367UGW_aboutAuthor{font-size:var(--cm-fs-base);color:var(--cm-accent);overflow-wrap:anywhere;font-weight:600;text-decoration:none}._367UGW_aboutAuthor:hover{text-decoration:underline}._367UGW_aboutAuthor:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px;border-radius:var(--cm-r-1)}._367UGW_consultDimension{border-bottom:.5px solid var(--dsw-alias-border-l2);font-size:var(--cm-fs-table);padding:6px 0}._367UGW_consultDimension:last-child{border-bottom:none}._367UGW_severityError{color:var(--cm-error);font-weight:600}._367UGW_viewBody{gap:10px}._367UGW_viewBody>*{margin-bottom:0}._367UGW_viewBody>._367UGW_statRow{margin-top:0;margin-bottom:0}._367UGW_viewBody:after{content:\"\";flex:none;height:8px}@media (width<=900px){._367UGW_secretFields{grid-template-columns:1fr}._367UGW_pagePad{padding:10px 12px 12px}}._367UGW_marketReviewPage{flex-direction:column;flex:1 0 auto;gap:10px;min-height:200px;display:flex}._367UGW_marketReviewPage ._367UGW_pickerRoot{flex:auto}._367UGW_marketReviewScroll,._367UGW_marketReviewPage ._367UGW_pickerList{scrollbar-gutter:stable;flex:auto;min-height:200px;max-height:800px;overflow:auto}._367UGW_marketReviewScroll{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-base);padding:6px 10px}@media (prefers-reduced-motion:reduce){._367UGW_toast,._367UGW_statusDot[data-pulse],._367UGW_pagePad,._367UGW_dialogMask,._367UGW_dialogContentCenter,._367UGW_snapshotList>*,._367UGW_dataTable tbody tr,._367UGW_viewEnter,._367UGW_pickerOverlay,._367UGW_pickerUnit,._367UGW_banner,._367UGW_empty{animation:none}._367UGW_statusDot,._367UGW_stepperDot,._367UGW_stepperLabel{transition:none}._367UGW_selectMenu,._367UGW_selectChevron{transition:none;animation:none}._367UGW_artifactDetailWrap,._367UGW_artifactDetailWrap>*{transition:none}._367UGW_dialogMask[data-state=closed],._367UGW_dialogContentCenter[data-state=closed],._367UGW_restorePlan,._367UGW_infoHintBubble{animation:none}._367UGW_collapse{transition:none}._367UGW_skeletonBar{background-image:none;animation:none}}._367UGW_sourceList{flex-direction:column;gap:6px;margin-bottom:10px;display:flex}._367UGW_sourceRow{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);align-items:flex-start;gap:8px;min-width:0;padding:8px 10px;display:flex}._367UGW_sourceRow[data-selected]{border-color:var(--cm-accent);background:color-mix(in srgb, var(--cm-accent) 7%, transparent)}._367UGW_sourceRow[data-disabled]{opacity:.7}._367UGW_sourceRowMain{flex:auto;min-width:0}._367UGW_sourceRowHead{align-items:center;gap:8px;min-width:0;display:flex}._367UGW_sourceRowName{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}._367UGW_sourceRowHead>:not(._367UGW_sourceRowName){flex:none}._367UGW_sourcePaths{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;margin-top:4px;line-height:1.5;display:block}._367UGW_skipList{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);flex-direction:column;gap:4px;margin:6px 0 0;padding:0;display:flex}._367UGW_skipRow{flex-wrap:wrap;align-items:baseline;gap:6px;min-width:0;display:flex}._367UGW_skipCode{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);border-radius:var(--cm-r-1);background:color-mix(in srgb, var(--dsw-alias-label-tertiary) 12%, transparent);color:var(--dsw-alias-label-secondary);white-space:nowrap;flex:none;padding:1px 4px}._367UGW_skipText{overflow-wrap:anywhere;flex:auto;min-width:0}._367UGW_skipMeta{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex:none}._367UGW_chatEntryScope{--cm-text-1:var(--dsw-alias-label-primary);--cm-text-3:var(--dsw-alias-label-tertiary);--cm-surface-2:var(--dsw-alias-bg-layer-2);--cm-chat-bubble:var(--dsw-specific-bubble,color-mix(in srgb, var(--cm-text-1) 12%, transparent));--cm-line-1:var(--dsw-alias-border-l1);--cm-line-2:var(--dsw-alias-border-l2);--cm-fs-meta:11px;--cm-fs-base:var(--dsh-content-font-size,14px);--cm-lh-base:calc(22px + var(--dsh-content-font-delta,0px));--cm-text-2:var(--dsw-alias-label-secondary);--cm-r-chat:var(--dsw-radius-xl,20px);--cm-r-act:var(--dsw-radius-sm,8px);--cm-chat-card-bg:var(--dsw-specific-input-major,transparent);--cm-chat-hover-bg:var(--dsw-alias-interactive-bg-hover,var(--cm-line-1));--cm-fs-second:var(--dsh-content-font-size-secondary,13px);--cm-lh-second:calc(24px + var(--dsh-content-font-delta,0px));--cm-lh-ref:calc(18px + var(--dsh-content-font-delta-secondary,0px));--cm-fs-card:14px;--cm-lh-card:22px;--cm-lh-meta:15px;--cm-chat-action:calc(28px + var(--dsh-content-font-delta,0px));--cm-chat-glyph:calc(15px + var(--dsh-content-font-delta,0px));--cm-sp-2:4px;--cm-sp-3:6px;--cm-sp-4:8px;--cm-sp-5:10px;--cm-sp-6:12px;--cm-sp-8:16px;--cm-r-2:6px;--cm-r-3:8px;min-width:0;color:var(--cm-text-1);font-size:var(--cm-fs-base);line-height:var(--cm-lh-base);display:block}._367UGW_chatEntryRow{align-items:flex-end;gap:var(--cm-sp-3);flex-direction:column;display:flex}._367UGW_chatEntryStack{align-items:flex-end;gap:var(--cm-sp-4);min-width:0;max-width:min(calc(var(--dsh-chat-content-width,748px) * .702), 82%);flex-direction:column;display:flex}._367UGW_chatBubble{max-width:100%;padding:var(--cm-sp-5) var(--cm-sp-8);border-radius:var(--cm-r-chat);background:var(--cm-chat-bubble);color:var(--cm-text-1);white-space:pre-wrap;word-break:break-word}._367UGW_chatBubbleText{white-space:pre-wrap;word-break:break-word}._367UGW_chatFallbackBubble{border-left:2px solid var(--cm-text-1)}._367UGW_chatAttachmentRow{justify-content:flex-end;gap:var(--cm-sp-4);flex-wrap:wrap;max-width:100%;display:flex}._367UGW_chatFileCard{align-items:center;gap:var(--cm-sp-5);box-sizing:border-box;width:240px;min-height:64px;padding:var(--cm-sp-4) var(--cm-sp-6);border:.5px solid var(--cm-line-2);border-radius:var(--cm-r-chat);background:var(--cm-chat-card-bg);flex:0 0 240px;display:inline-flex}._367UGW_chatFileIcon{flex:none;width:28px;height:28px}._367UGW_chatFileContent{flex-direction:column;flex:1;min-width:0;display:flex}._367UGW_chatFileExt{border-radius:var(--cm-r-2);background:var(--cm-line-1);min-width:28px;height:28px;color:var(--cm-text-1);font-size:var(--cm-fs-meta);letter-spacing:.02em;flex:none;justify-content:center;align-items:center;display:inline-flex}._367UGW_chatFileName{color:var(--cm-text-1);font-size:var(--cm-fs-card);font-weight:500;line-height:var(--cm-lh-card);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._367UGW_chatFileMeta{color:var(--cm-text-3);font-size:12px;line-height:var(--cm-lh-meta);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._367UGW_chatRawBlock{font-size:var(--cm-fs-meta);color:var(--cm-text-3)}._367UGW_chatRawSummary{cursor:pointer}._367UGW_chatRawPre{max-height:220px;margin:var(--cm-sp-2) 0 0;padding:var(--cm-sp-3);border-radius:var(--cm-r-2);background:var(--cm-surface-2);color:var(--cm-text-3);white-space:pre-wrap;word-break:break-all;overflow:auto}._367UGW_chatEntryActions{align-items:center;gap:var(--cm-sp-4);height:var(--cm-chat-action);margin-top:var(--cm-sp-2);margin-left:calc(-1 * var(--cm-sp-3));display:flex}._367UGW_chatEntryTime{color:var(--cm-text-3);font-size:var(--cm-fs-second);line-height:var(--cm-lh-second);white-space:nowrap;padding-right:var(--cm-sp-6)}._367UGW_chatEntryNotice{max-width:min(calc(var(--dsh-chat-content-width,748px) * .702), 82%);color:var(--cm-text-3);font-size:var(--cm-fs-meta)}._367UGW_chatEntryReference{color:var(--cm-text-3);font-size:var(--cm-fs-second);line-height:var(--cm-lh-ref)}._367UGW_chatActionBtn{width:var(--cm-chat-action);height:var(--cm-chat-action);padding:var(--cm-sp-3);border-radius:var(--cm-r-act);color:var(--cm-text-3);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;display:inline-flex}._367UGW_chatActionBtn svg{width:var(--cm-chat-glyph);height:var(--cm-chat-glyph)}._367UGW_chatActionBtn:hover{background:var(--cm-chat-hover-bg);color:var(--cm-text-2)}@media (hover:hover){:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering]):has(~:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering])) ._367UGW_chatEntryActions{opacity:0;transition:opacity var(--cm-motion-fast)}:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering]):has(~:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering])):hover ._367UGW_chatEntryActions,:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering]):has(~:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering])):focus-within ._367UGW_chatEntryActions{opacity:1}}._367UGW_chatActionBtn:disabled{color:var(--cm-text-3);opacity:.5;cursor:not-allowed}._367UGW_rollbackFileList{margin-top:var(--cm-sp-2);flex-direction:column;display:flex}._367UGW_rollbackFileRow{align-items:center;gap:var(--cm-sp-3);padding:var(--cm-sp-3) 0 var(--cm-sp-3) var(--cm-sp-2);grid-template-columns:auto minmax(0,1fr) auto;display:grid;position:relative}._367UGW_rollbackFileRow:before{content:\"\";left:0;top:var(--cm-sp-2);bottom:var(--cm-sp-2);background:var(--cm-info);width:2px;position:absolute}._367UGW_rollbackFileRow[data-kind=create]:before{background:var(--cm-ok)}._367UGW_rollbackFileRow[data-kind=delete]:before{background:var(--cm-error)}._367UGW_rollbackFileRow:not([data-kind]):before{display:none}._367UGW_rollbackFileIcon{flex:none;align-items:center;display:inline-flex}._367UGW_rollbackFilePath{min-width:0;color:var(--cm-text-1);font-size:var(--cm-fs-table);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}._367UGW_rollbackFileDir{color:var(--cm-text-3);transition:color var(--cm-motion-fast) ease}._367UGW_rollbackFileStat{justify-content:flex-end;justify-self:end;align-items:baseline;gap:var(--cm-sp-2);display:inline-flex}._367UGW_rollbackAdded{color:var(--cm-ok);font-size:var(--cm-fs-table);font-variant-numeric:tabular-nums;flex:none}._367UGW_rollbackRemoved{color:var(--cm-error);font-size:var(--cm-fs-table);font-variant-numeric:tabular-nums;flex:none}._367UGW_rollbackDeleted{color:var(--cm-error);font-size:var(--cm-fs-table);flex:none}._367UGW_rollbackFilePath:is(button){font:inherit;font-size:var(--cm-fs-table);color:var(--cm-text-1);text-align:left;cursor:pointer;transition:color var(--cm-motion-fast) ease;background:0 0;border:0;padding:0}._367UGW_rollbackFilePath:is(button):hover:not(:disabled),._367UGW_rollbackFilePath:is(button):focus-visible,._367UGW_rollbackFilePath:is(button):hover:not(:disabled) ._367UGW_rollbackFileDir,._367UGW_rollbackFilePath:is(button):focus-visible ._367UGW_rollbackFileDir{color:var(--cm-accent)}._367UGW_rollbackFilePath:is(button):disabled{color:var(--cm-text-1);cursor:not-allowed;opacity:.7}._367UGW_previewChoiceRow{justify-content:space-between;align-items:baseline;gap:var(--cm-sp-4);margin:0 0 var(--cm-sp-2);display:flex}._367UGW_previewScope{align-items:baseline;gap:var(--cm-sp-3);font-size:var(--cm-fs-meta);color:var(--cm-text-2);font-variant-numeric:tabular-nums;flex:none;display:inline-flex}._367UGW_previewScopeStats{align-items:baseline;gap:var(--cm-sp-3);display:inline-flex}._367UGW_previewScope[data-off=true] ._367UGW_previewScopeStats{color:var(--cm-text-3);opacity:.75}._367UGW_previewScopeOff{color:var(--cm-text-3)}._367UGW_inlineDiffBox{gap:var(--cm-sp-2);margin-top:var(--cm-sp-2);padding:var(--cm-sp-2);border:1px solid var(--cm-line-1);border-radius:var(--cm-r-2);flex-direction:column;display:flex}._367UGW_rollbackWarnings{flex-direction:column;gap:4px;margin-bottom:10px;display:flex}._367UGW_rollbackToolbar{align-items:center;gap:8px;margin-bottom:8px;display:flex}._367UGW_rollbackSummary{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;font-weight:600}._367UGW_rollbackScroll{padding:8px}._367UGW_rollbackGroup{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);flex-direction:column;flex:auto;gap:8px;min-height:0;padding:8px 10px;display:flex}._367UGW_rollbackGroupHead{border-bottom:1px solid var(--dsw-alias-border-l1);flex-wrap:wrap;align-items:center;gap:6px;padding-bottom:6px;display:flex}._367UGW_rollbackGroupTitle{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;font-weight:600}._367UGW_rollbackGroupUnit{text-overflow:ellipsis;white-space:nowrap;text-align:right;min-width:0;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);flex:auto;margin-left:auto;overflow:hidden}._367UGW_rollbackPoints{flex-direction:column;gap:6px;display:flex}._367UGW_rollbackPoint{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-base);border-left-width:2px;flex-direction:column;gap:4px;padding:8px 10px;display:flex}._367UGW_rollbackPoint[data-kind=auto]{border-left-color:var(--cm-ok)}._367UGW_rollbackPoint[data-kind=guard]{border-left-color:var(--cm-info)}._367UGW_rollbackPoint[data-kind=unknown]{border-left-color:var(--cm-text-3)}._367UGW_rollbackPointTop{flex-wrap:wrap;align-items:center;gap:6px;display:flex}._367UGW_rollbackPointTurn{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:600}._367UGW_rollbackPointActions{flex:none;align-items:center;gap:6px;margin-left:auto;display:flex}._367UGW_rollbackPointMeta{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);flex-wrap:wrap;align-items:center;gap:6px;line-height:1.5;display:flex}._367UGW_rollbackMetaDot{color:var(--dsw-alias-label-tertiary);flex:none}._367UGW_rollbackLedger{align-items:stretch;gap:10px;height:340px;display:flex}._367UGW_rollbackSessions{flex-direction:column;flex:0 0 148px;gap:4px;height:100%;display:flex;overflow:auto}._367UGW_rollbackSessionItem{text-align:left;border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-2);background:var(--dsw-alias-bg-base);width:100%;color:var(--dsw-alias-label-secondary);cursor:pointer;flex-direction:column;gap:2px;padding:6px 8px;display:flex}._367UGW_rollbackSessionItem:hover{background:var(--dsw-alias-bg-layer-2)}._367UGW_rollbackSessionItem[data-active]{border-color:var(--cm-accent);background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary)}._367UGW_rollbackSessionId{font-size:var(--cm-fs-table);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._367UGW_rollbackSessionMeta{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);align-items:center;gap:2px;line-height:1.5;display:flex}._367UGW_rollbackLedgerMain{flex-direction:column;flex:auto;gap:8px;min-width:0;height:100%;display:flex}._367UGW_rollbackPointsScroll{flex:auto;min-height:0;padding:8px;overflow:auto}._367UGW_rollbackPointNote{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:100%;overflow:hidden}._367UGW_shHeaderTrailing{align-items:center;gap:8px;margin-left:auto;display:inline-flex}._367UGW_shHeaderTrailing~._367UGW_dialogClose{margin-left:0}._367UGW_shSummary{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);flex-direction:column;gap:10px;margin:0 0 10px;padding:12px 14px;display:flex}._367UGW_shMetrics{flex-wrap:wrap;align-items:flex-end;gap:8px 24px;display:flex}._367UGW_shMetric{flex-direction:column;gap:2px;min-width:0;display:flex}._367UGW_shMetricValue{font-size:var(--cm-fs-title);color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:600;line-height:1.25}._367UGW_shMetricLabel{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary)}._367UGW_shMetric[data-tone=warn] ._367UGW_shMetricValue{color:var(--cm-warn)}._367UGW_shMetric[data-tone=ok] ._367UGW_shMetricValue{color:var(--cm-ok)}._367UGW_shSeverities{flex-wrap:wrap;align-items:center;gap:6px;display:flex}._367UGW_shSeverity{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:2px 8px;line-height:1.5;display:inline-flex}._367UGW_shSeverityCount{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:600}._367UGW_shSeverity[data-severity=blocksStartup],._367UGW_shSeverity[data-severity=unloadable]{border-color:color-mix(in srgb, var(--cm-error) 45%, transparent)}._367UGW_shSeverity[data-severity=nextRequestFails],._367UGW_shSeverity[data-severity=invisible]{border-color:color-mix(in srgb, var(--cm-warn) 45%, transparent)}._367UGW_shNotes{border-top:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 60%, transparent);flex-direction:column;gap:4px;padding-top:8px;display:flex}._367UGW_shSectionHead{flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px;display:flex}._367UGW_shSectionHead ._367UGW_groupLabel{margin-bottom:0}._367UGW_shSectionTitle{font-size:var(--cm-fs-title);color:var(--dsw-alias-label-primary);font-weight:600;line-height:1.25}._367UGW_snapshotList._367UGW_shScroll{background:var(--dsw-alias-bg-base);padding:8px}._367UGW_shRow{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);border-left-width:2px;flex-direction:column;gap:4px;padding:8px 10px;display:flex}._367UGW_shRow[data-severity=blocksStartup],._367UGW_shRow[data-severity=unloadable]{border-left-color:var(--cm-error)}._367UGW_shRow[data-severity=nextRequestFails],._367UGW_shRow[data-severity=invisible]{border-left-color:var(--cm-warn)}._367UGW_shRow[data-severity=ok]{border-left-color:var(--cm-ok)}._367UGW_shRowTop{flex-wrap:wrap;align-items:center;gap:6px;display:flex}._367UGW_shRowId{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);flex:auto;font-weight:600;overflow:hidden}._367UGW_shRowActions{flex:none;align-items:center;gap:6px;margin-left:auto;display:flex}._367UGW_shRowMeta{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);flex-wrap:wrap;align-items:center;gap:6px;line-height:1.5;display:flex}._367UGW_shIssue{border-radius:var(--cm-r-1);background:color-mix(in srgb, var(--dsw-alias-label-tertiary) 12%, transparent);color:var(--dsw-alias-label-secondary);align-items:center;padding:2px 6px;display:inline-flex}._367UGW_shRowFacts{white-space:nowrap;font-variant-numeric:tabular-nums;flex:none;margin-left:auto}._367UGW_shMetaDot{color:var(--dsw-alias-label-tertiary);flex:none}._367UGW_shLines{flex-direction:column;gap:4px;display:flex}._367UGW_shPanel{border:1px solid var(--dsw-alias-border-l2);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-base);margin:0 0 10px;padding:10px 12px}._367UGW_shPanelHead{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:6px;display:flex}._367UGW_shPanelTitle{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);flex:auto;font-weight:600;overflow:hidden}._367UGW_shCommands{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);margin:0 0 10px;padding:0;list-style:none;overflow:hidden}._367UGW_shCommand{border-bottom:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 50%, transparent);align-items:center;gap:8px;padding:8px 10px;display:flex}._367UGW_shCommand:last-child{border-bottom:none}._367UGW_shCommand code{overflow-wrap:anywhere;min-width:0;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);flex:auto}._367UGW_mergeView{flex-direction:column;gap:10px;display:flex}._367UGW_mergeOverview{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}._367UGW_mergeTile{border:.5px solid var(--cm-line-1);border-radius:var(--cm-r-3);background:var(--cm-surface-1);flex-direction:column;gap:2px;padding:8px 10px;display:flex}._367UGW_mergeTile[data-tone=ok]{border-color:color-mix(in srgb, var(--cm-ok) 40%, transparent);background:color-mix(in srgb, var(--cm-ok) 8%, transparent)}._367UGW_mergeTile[data-tone=info]{border-color:color-mix(in srgb, var(--cm-info) 40%, transparent);background:color-mix(in srgb, var(--cm-info) 8%, transparent)}._367UGW_mergeTile[data-tone=warn]{border-color:color-mix(in srgb, var(--cm-warn) 40%, transparent);background:color-mix(in srgb, var(--cm-warn) 8%, transparent)}._367UGW_mergeTile[data-tone=error]{border-color:color-mix(in srgb, var(--cm-error) 40%, transparent);background:color-mix(in srgb, var(--cm-error) 8%, transparent)}._367UGW_mergeTileValue{font-size:var(--cm-fs-title);color:var(--cm-text-1);font-variant-numeric:tabular-nums;font-weight:600;line-height:1.25}._367UGW_mergeTileLabel{font-size:var(--cm-fs-meta);color:var(--cm-text-2);line-height:1.25}._367UGW_mergeToolbar{flex-wrap:wrap;align-items:center;gap:6px;display:flex}._367UGW_mergeToolbarLabel{font-size:var(--cm-fs-meta);color:var(--cm-text-3)}._367UGW_mergeIconLabel{align-items:center;gap:4px;display:inline-flex}._367UGW_mergeResult{border:.5px solid var(--cm-line-1);border-radius:var(--cm-r-3);background:var(--cm-surface-1);flex-direction:column;gap:2px;padding:10px 12px;display:flex}._367UGW_mergeFooterSummary{min-width:0;font-size:var(--cm-fs-meta);color:var(--cm-text-2);line-height:1.5}._367UGW_mergeSection{border:.5px solid var(--cm-line-1);border-radius:var(--cm-r-3);background:var(--cm-surface-1);padding:10px 12px}._367UGW_mergeSection+._367UGW_mergeSection{margin-top:8px}._367UGW_mergeSectionHead{flex-wrap:wrap;align-items:center;gap:8px;display:flex}._367UGW_mergeSectionName{font-size:var(--cm-fs-title);color:var(--cm-text-1);font-weight:600}._367UGW_mergeMeta{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary)}._367UGW_mergeActions{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}._367UGW_mergeActionActive{background:var(--cm-ghost-active-fill);border-color:var(--cm-ghost-active-border);font-weight:600}._367UGW_mergeConflictRow{border:.5px solid var(--cm-line-1);border-radius:var(--cm-r-2);background:color-mix(in srgb, var(--cm-text-1) 4%, transparent);margin-top:8px;padding:8px}._367UGW_mergeConflictPath{overflow-wrap:anywhere;min-width:0;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);align-items:baseline;gap:6px;display:flex}._367UGW_mergeKind{border-radius:var(--cm-r-1);background:color-mix(in srgb, var(--cm-text-1) 8%, transparent);font-size:var(--cm-fs-meta);color:var(--cm-text-2);flex:none;padding:0 6px;line-height:1.5}._367UGW_mergeConflictReason{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);margin-top:4px}._367UGW_mergeCols{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-top:6px;display:grid}._367UGW_mergeCol{min-width:0}._367UGW_mergeColLabel{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);display:block}._367UGW_mergeColValue{white-space:pre-wrap;overflow-wrap:anywhere;max-height:88px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);color:var(--cm-text-2);margin:0;overflow:auto}._367UGW_mergeScroll[data-fit=modal]{scrollbar-gutter:stable;max-height:46vh;padding:8px}._367UGW_syncActivity{flex-direction:column;gap:4px;margin-top:8px;display:flex}._367UGW_syncActivityTrack{display:block}._367UGW_syncActivityLabel{font-size:var(--cm-fs-meta);color:var(--cm-text-2);line-height:1.5}";
|
|
14537
15846
|
const tagId = "dsh-config-manager/config-manager.module.css";
|
|
14538
15847
|
if (typeof document !== "undefined" && document.querySelector("style[data-tag=\"dsh-config-manager/config-manager.module.css\"]") === null) {
|
|
14539
15848
|
const tag = document.createElement("style");
|
|
@@ -14543,559 +15852,563 @@ if (typeof document !== "undefined" && document.querySelector("style[data-tag=\"
|
|
|
14543
15852
|
document.head.appendChild(tag);
|
|
14544
15853
|
}
|
|
14545
15854
|
var config_manager_module_css_default = {
|
|
14546
|
-
"
|
|
14547
|
-
"
|
|
15855
|
+
"badgeRow": "_367UGW_badgeRow",
|
|
15856
|
+
"selectChevron": "_367UGW_selectChevron",
|
|
15857
|
+
"diskUsageCard": "_367UGW_diskUsageCard",
|
|
15858
|
+
"tableFixed": "_367UGW_tableFixed",
|
|
15859
|
+
"pickerName": "_367UGW_pickerName",
|
|
15860
|
+
"skipCode": "_367UGW_skipCode",
|
|
15861
|
+
"taskTitle": "_367UGW_taskTitle",
|
|
15862
|
+
"pathInputRow": "_367UGW_pathInputRow",
|
|
15863
|
+
"profileRowMain": "_367UGW_profileRowMain",
|
|
15864
|
+
"dim": "_367UGW_dim",
|
|
15865
|
+
"pickerMore": "_367UGW_pickerMore",
|
|
15866
|
+
"choiceTitle": "_367UGW_choiceTitle",
|
|
15867
|
+
"statStrip": "_367UGW_statStrip",
|
|
15868
|
+
"shRowFacts": "_367UGW_shRowFacts",
|
|
15869
|
+
"rollbackScroll": "_367UGW_rollbackScroll",
|
|
15870
|
+
"paletteItem": "_367UGW_paletteItem",
|
|
15871
|
+
"errorLine": "_367UGW_errorLine",
|
|
15872
|
+
"dialogMask": "_367UGW_dialogMask",
|
|
15873
|
+
"itemEnter": "_367UGW_itemEnter",
|
|
15874
|
+
"rollbackWarnings": "_367UGW_rollbackWarnings",
|
|
15875
|
+
"historySections": "_367UGW_historySections",
|
|
15876
|
+
"conflictOptions": "_367UGW_conflictOptions",
|
|
15877
|
+
"chatEntryStack": "_367UGW_chatEntryStack",
|
|
15878
|
+
"paletteGroup": "_367UGW_paletteGroup",
|
|
15879
|
+
"diffFilePath": "_367UGW_diffFilePath",
|
|
15880
|
+
"sectionTitle": "_367UGW_sectionTitle",
|
|
15881
|
+
"aboutAuthor": "_367UGW_aboutAuthor",
|
|
15882
|
+
"errorReason": "_367UGW_errorReason",
|
|
15883
|
+
"hint": "_367UGW_hint",
|
|
15884
|
+
"kvValue": "_367UGW_kvValue",
|
|
15885
|
+
"pickerChevronSpacer": "_367UGW_pickerChevronSpacer",
|
|
15886
|
+
"logJumpButton": "_367UGW_logJumpButton",
|
|
15887
|
+
"activityRows": "_367UGW_activityRows",
|
|
15888
|
+
"activityTitle": "_367UGW_activityTitle",
|
|
15889
|
+
"sectionName": "_367UGW_sectionName",
|
|
15890
|
+
"pathIssueKind": "_367UGW_pathIssueKind",
|
|
15891
|
+
"syncActivity": "_367UGW_syncActivity",
|
|
15892
|
+
"previewScope": "_367UGW_previewScope",
|
|
15893
|
+
"sectionTitleRow": "_367UGW_sectionTitleRow",
|
|
15894
|
+
"skeletonTableRow": "_367UGW_skeletonTableRow",
|
|
15895
|
+
"reportList": "_367UGW_reportList",
|
|
15896
|
+
"profileRowHeader": "_367UGW_profileRowHeader",
|
|
15897
|
+
"rollbackPointMeta": "_367UGW_rollbackPointMeta",
|
|
15898
|
+
"progressIndeterminate": "_367UGW_progressIndeterminate",
|
|
15899
|
+
"reportProblemRow": "_367UGW_reportProblemRow",
|
|
15900
|
+
"mergeActionActive": "_367UGW_mergeActionActive",
|
|
15901
|
+
"toastText": "_367UGW_toastText",
|
|
15902
|
+
"marketReviewScroll": "_367UGW_marketReviewScroll",
|
|
14548
15903
|
"shCommands": "_367UGW_shCommands",
|
|
14549
|
-
"
|
|
14550
|
-
"
|
|
14551
|
-
"
|
|
14552
|
-
"
|
|
14553
|
-
"
|
|
14554
|
-
"
|
|
15904
|
+
"snapshotRow": "_367UGW_snapshotRow",
|
|
15905
|
+
"mergeView": "_367UGW_mergeView",
|
|
15906
|
+
"dialogIn": "_367UGW_dialogIn",
|
|
15907
|
+
"marketReviewPage": "_367UGW_marketReviewPage",
|
|
15908
|
+
"reportView": "_367UGW_reportView",
|
|
15909
|
+
"cliName": "_367UGW_cliName",
|
|
15910
|
+
"toastViewport": "_367UGW_toastViewport",
|
|
15911
|
+
"groupLabel": "_367UGW_groupLabel",
|
|
15912
|
+
"statusBar": "_367UGW_statusBar",
|
|
15913
|
+
"headRow": "_367UGW_headRow",
|
|
15914
|
+
"diskUsageScroll": "_367UGW_diskUsageScroll",
|
|
15915
|
+
"factCell": "_367UGW_factCell",
|
|
15916
|
+
"resultScroll": "_367UGW_resultScroll",
|
|
15917
|
+
"fillCard": "_367UGW_fillCard",
|
|
15918
|
+
"snapshotRowMeta": "_367UGW_snapshotRowMeta",
|
|
15919
|
+
"cellMeta": "_367UGW_cellMeta",
|
|
15920
|
+
"restorePlanList": "_367UGW_restorePlanList",
|
|
15921
|
+
"conflictLineLabel": "_367UGW_conflictLineLabel",
|
|
15922
|
+
"pagePad": "_367UGW_pagePad",
|
|
15923
|
+
"profileRow": "_367UGW_profileRow",
|
|
15924
|
+
"chatActionBtn": "_367UGW_chatActionBtn",
|
|
15925
|
+
"rollbackLedgerMain": "_367UGW_rollbackLedgerMain",
|
|
15926
|
+
"rollbackPointTop": "_367UGW_rollbackPointTop",
|
|
15927
|
+
"shSeverities": "_367UGW_shSeverities",
|
|
15928
|
+
"spinnerTrack": "_367UGW_spinnerTrack",
|
|
15929
|
+
"chatFallbackBubble": "_367UGW_chatFallbackBubble",
|
|
15930
|
+
"shLines": "_367UGW_shLines",
|
|
15931
|
+
"paletteHint": "_367UGW_paletteHint",
|
|
15932
|
+
"statRow": "_367UGW_statRow",
|
|
15933
|
+
"dataTable": "_367UGW_dataTable",
|
|
15934
|
+
"progressBadgeCount": "_367UGW_progressBadgeCount",
|
|
15935
|
+
"marketFilterMeta": "_367UGW_marketFilterMeta",
|
|
15936
|
+
"skeletonRows": "_367UGW_skeletonRows",
|
|
15937
|
+
"bannerSlot": "_367UGW_bannerSlot",
|
|
15938
|
+
"stepperLabel": "_367UGW_stepperLabel",
|
|
15939
|
+
"taskPanelIn": "_367UGW_taskPanelIn",
|
|
15940
|
+
"libraryFooter": "_367UGW_libraryFooter",
|
|
15941
|
+
"pageEnter": "_367UGW_pageEnter",
|
|
15942
|
+
"diffNoColW4": "_367UGW_diffNoColW4",
|
|
15943
|
+
"rollbackFileIcon": "_367UGW_rollbackFileIcon",
|
|
15944
|
+
"rollbackGroupTitle": "_367UGW_rollbackGroupTitle",
|
|
15945
|
+
"snapshotPickerRow": "_367UGW_snapshotPickerRow",
|
|
15946
|
+
"shPanelHead": "_367UGW_shPanelHead",
|
|
15947
|
+
"viewBody": "_367UGW_viewBody",
|
|
15948
|
+
"reasonList": "_367UGW_reasonList",
|
|
15949
|
+
"pathMappingList": "_367UGW_pathMappingList",
|
|
14555
15950
|
"segGroup": "_367UGW_segGroup",
|
|
15951
|
+
"pickerUnitName": "_367UGW_pickerUnitName",
|
|
15952
|
+
"mergeCol": "_367UGW_mergeCol",
|
|
15953
|
+
"pickerPath": "_367UGW_pickerPath",
|
|
15954
|
+
"pathValue": "_367UGW_pathValue",
|
|
15955
|
+
"skeletonRowBody": "_367UGW_skeletonRowBody",
|
|
14556
15956
|
"mergeConflictRow": "_367UGW_mergeConflictRow",
|
|
14557
|
-
"
|
|
14558
|
-
"
|
|
14559
|
-
"
|
|
14560
|
-
"
|
|
14561
|
-
"
|
|
14562
|
-
"
|
|
14563
|
-
"
|
|
14564
|
-
"card": "_367UGW_card",
|
|
15957
|
+
"navMeasure": "_367UGW_navMeasure",
|
|
15958
|
+
"rollbackSessionItem": "_367UGW_rollbackSessionItem",
|
|
15959
|
+
"historyGroup": "_367UGW_historyGroup",
|
|
15960
|
+
"historySummary": "_367UGW_historySummary",
|
|
15961
|
+
"empty": "_367UGW_empty",
|
|
15962
|
+
"chatRawBlock": "_367UGW_chatRawBlock",
|
|
15963
|
+
"spinner": "_367UGW_spinner",
|
|
14565
15964
|
"infoHintBubble": "_367UGW_infoHintBubble",
|
|
14566
|
-
"
|
|
14567
|
-
"
|
|
14568
|
-
"libraryFilterCount": "_367UGW_libraryFilterCount",
|
|
14569
|
-
"num": "_367UGW_num",
|
|
14570
|
-
"reportList": "_367UGW_reportList",
|
|
14571
|
-
"aboutLinkRow": "_367UGW_aboutLinkRow",
|
|
14572
|
-
"checkboxRow": "_367UGW_checkboxRow",
|
|
14573
|
-
"marketFilterGrid": "_367UGW_marketFilterGrid",
|
|
14574
|
-
"runsLogLine": "_367UGW_runsLogLine",
|
|
14575
|
-
"listHeaderRow": "_367UGW_listHeaderRow",
|
|
14576
|
-
"skeletonRowBody": "_367UGW_skeletonRowBody",
|
|
14577
|
-
"dialogMask": "_367UGW_dialogMask",
|
|
14578
|
-
"pickerUnit": "_367UGW_pickerUnit",
|
|
14579
|
-
"selectMenu": "_367UGW_selectMenu",
|
|
14580
|
-
"logDetail": "_367UGW_logDetail",
|
|
14581
|
-
"shSectionTitle": "_367UGW_shSectionTitle",
|
|
14582
|
-
"libraryFilter": "_367UGW_libraryFilter",
|
|
14583
|
-
"skeletonCards": "_367UGW_skeletonCards",
|
|
14584
|
-
"actionRow": "_367UGW_actionRow",
|
|
14585
|
-
"shSeverity": "_367UGW_shSeverity",
|
|
14586
|
-
"optionsCard": "_367UGW_optionsCard",
|
|
14587
|
-
"logHeader": "_367UGW_logHeader",
|
|
14588
|
-
"sparseFill": "_367UGW_sparseFill",
|
|
14589
|
-
"shRowMeta": "_367UGW_shRowMeta",
|
|
14590
|
-
"mergeTile": "_367UGW_mergeTile",
|
|
14591
|
-
"groupLabel": "_367UGW_groupLabel",
|
|
14592
|
-
"mergeSectionHead": "_367UGW_mergeSectionHead",
|
|
14593
|
-
"runsCardActions": "_367UGW_runsCardActions",
|
|
14594
|
-
"rollbackGroupUnit": "_367UGW_rollbackGroupUnit",
|
|
14595
|
-
"toastViewport": "_367UGW_toastViewport",
|
|
14596
|
-
"dialogFooter": "_367UGW_dialogFooter",
|
|
14597
|
-
"pageEnter": "_367UGW_pageEnter",
|
|
14598
|
-
"artifactTitle": "_367UGW_artifactTitle",
|
|
14599
|
-
"taskPanel": "_367UGW_taskPanel",
|
|
14600
|
-
"skeletonCard": "_367UGW_skeletonCard",
|
|
14601
|
-
"skeletonRows": "_367UGW_skeletonRows",
|
|
14602
|
-
"actionRowTop": "_367UGW_actionRowTop",
|
|
14603
|
-
"marketFilterMeta": "_367UGW_marketFilterMeta",
|
|
14604
|
-
"skeletonRow": "_367UGW_skeletonRow",
|
|
14605
|
-
"fillViewport": "_367UGW_fillViewport",
|
|
14606
|
-
"pickerChildren": "_367UGW_pickerChildren",
|
|
14607
|
-
"historyRowMain": "_367UGW_historyRowMain",
|
|
14608
|
-
"profileRow": "_367UGW_profileRow",
|
|
14609
|
-
"skipText": "_367UGW_skipText",
|
|
14610
|
-
"rollbackFileDir": "_367UGW_rollbackFileDir",
|
|
15965
|
+
"rollbackPointsScroll": "_367UGW_rollbackPointsScroll",
|
|
15966
|
+
"runsLogTail": "_367UGW_runsLogTail",
|
|
14611
15967
|
"shSectionHead": "_367UGW_shSectionHead",
|
|
14612
|
-
"
|
|
14613
|
-
"
|
|
14614
|
-
"
|
|
14615
|
-
"
|
|
14616
|
-
"
|
|
14617
|
-
"
|
|
14618
|
-
"
|
|
14619
|
-
"
|
|
14620
|
-
"
|
|
14621
|
-
"
|
|
14622
|
-
"choiceCard": "_367UGW_choiceCard",
|
|
14623
|
-
"shCommand": "_367UGW_shCommand",
|
|
14624
|
-
"pagePad": "_367UGW_pagePad",
|
|
14625
|
-
"chatEntryStack": "_367UGW_chatEntryStack",
|
|
14626
|
-
"skeletonLine": "_367UGW_skeletonLine",
|
|
14627
|
-
"reportView": "_367UGW_reportView",
|
|
14628
|
-
"mono": "_367UGW_mono",
|
|
14629
|
-
"pickerGroupTitleName": "_367UGW_pickerGroupTitleName",
|
|
15968
|
+
"diffGroupToggle": "_367UGW_diffGroupToggle",
|
|
15969
|
+
"profileRowMeta": "_367UGW_profileRowMeta",
|
|
15970
|
+
"banner": "_367UGW_banner",
|
|
15971
|
+
"mergeKind": "_367UGW_mergeKind",
|
|
15972
|
+
"snapshotRowName": "_367UGW_snapshotRowName",
|
|
15973
|
+
"chatEntryTime": "_367UGW_chatEntryTime",
|
|
15974
|
+
"viewEnter": "_367UGW_viewEnter",
|
|
15975
|
+
"rowActions": "_367UGW_rowActions",
|
|
15976
|
+
"snapshotRowMain": "_367UGW_snapshotRowMain",
|
|
15977
|
+
"modeTab": "_367UGW_modeTab",
|
|
14630
15978
|
"pickerSubgroupName": "_367UGW_pickerSubgroupName",
|
|
14631
|
-
"
|
|
14632
|
-
"
|
|
14633
|
-
"
|
|
14634
|
-
"
|
|
14635
|
-
"
|
|
14636
|
-
"
|
|
14637
|
-
"radioLabel": "_367UGW_radioLabel",
|
|
14638
|
-
"dialogHeader": "_367UGW_dialogHeader",
|
|
14639
|
-
"pickerUnitDetail": "_367UGW_pickerUnitDetail",
|
|
14640
|
-
"shNotes": "_367UGW_shNotes",
|
|
14641
|
-
"selectTrigger": "_367UGW_selectTrigger",
|
|
14642
|
-
"spinnerTrack": "_367UGW_spinnerTrack",
|
|
14643
|
-
"runsCenter": "_367UGW_runsCenter",
|
|
14644
|
-
"conflictOptions": "_367UGW_conflictOptions",
|
|
14645
|
-
"mergeActionActive": "_367UGW_mergeActionActive",
|
|
14646
|
-
"statHealthAction": "_367UGW_statHealthAction",
|
|
14647
|
-
"diffNo": "_367UGW_diffNo",
|
|
14648
|
-
"statusAction": "_367UGW_statusAction",
|
|
14649
|
-
"reportSectionRow": "_367UGW_reportSectionRow",
|
|
14650
|
-
"runsCardTitle": "_367UGW_runsCardTitle",
|
|
14651
|
-
"activityCard": "_367UGW_activityCard",
|
|
14652
|
-
"aboutAuthor": "_367UGW_aboutAuthor",
|
|
14653
|
-
"profileRowTitle": "_367UGW_profileRowTitle",
|
|
14654
|
-
"hiddenFile": "_367UGW_hiddenFile",
|
|
14655
|
-
"rollbackRemoved": "_367UGW_rollbackRemoved",
|
|
14656
|
-
"rollbackPointsScroll": "_367UGW_rollbackPointsScroll",
|
|
14657
|
-
"shSeverityCount": "_367UGW_shSeverityCount",
|
|
14658
|
-
"pickerUnitNested": "_367UGW_pickerUnitNested",
|
|
14659
|
-
"indet": "_367UGW_indet",
|
|
14660
|
-
"rollbackScroll": "_367UGW_rollbackScroll",
|
|
14661
|
-
"pathMappingList": "_367UGW_pathMappingList",
|
|
15979
|
+
"actionRow": "_367UGW_actionRow",
|
|
15980
|
+
"conflictItem": "_367UGW_conflictItem",
|
|
15981
|
+
"logDetail": "_367UGW_logDetail",
|
|
15982
|
+
"confirmScroll": "_367UGW_confirmScroll",
|
|
15983
|
+
"statHealth": "_367UGW_statHealth",
|
|
15984
|
+
"restorePlanRow": "_367UGW_restorePlanRow",
|
|
14662
15985
|
"detailLines": "_367UGW_detailLines",
|
|
14663
|
-
"
|
|
14664
|
-
"
|
|
14665
|
-
"
|
|
15986
|
+
"chatBubble": "_367UGW_chatBubble",
|
|
15987
|
+
"runsWarnNote": "_367UGW_runsWarnNote",
|
|
15988
|
+
"historyMeta": "_367UGW_historyMeta",
|
|
15989
|
+
"consultScroll": "_367UGW_consultScroll",
|
|
15990
|
+
"chatRawPre": "_367UGW_chatRawPre",
|
|
15991
|
+
"errorList": "_367UGW_errorList",
|
|
15992
|
+
"shellMain": "_367UGW_shellMain",
|
|
15993
|
+
"libraryFilters": "_367UGW_libraryFilters",
|
|
15994
|
+
"artifactRowHead": "_367UGW_artifactRowHead",
|
|
15995
|
+
"cellTitle": "_367UGW_cellTitle",
|
|
15996
|
+
"nextStepsGroup": "_367UGW_nextStepsGroup",
|
|
15997
|
+
"dangerButton": "_367UGW_dangerButton",
|
|
14666
15998
|
"reportProblemHead": "_367UGW_reportProblemHead",
|
|
14667
|
-
"
|
|
14668
|
-
"
|
|
14669
|
-
"
|
|
14670
|
-
"
|
|
14671
|
-
"
|
|
14672
|
-
"selectMenuIn": "_367UGW_selectMenuIn",
|
|
14673
|
-
"rollbackFileRow": "_367UGW_rollbackFileRow",
|
|
14674
|
-
"progressIndeterminate": "_367UGW_progressIndeterminate",
|
|
14675
|
-
"statValueSkeleton": "_367UGW_statValueSkeleton",
|
|
14676
|
-
"cellMetaNoteText": "_367UGW_cellMetaNoteText",
|
|
14677
|
-
"nextStepsList": "_367UGW_nextStepsList",
|
|
14678
|
-
"dialogBodyScroll": "_367UGW_dialogBodyScroll",
|
|
14679
|
-
"rollbackPointActions": "_367UGW_rollbackPointActions",
|
|
14680
|
-
"authorRow": "_367UGW_authorRow",
|
|
14681
|
-
"ghostButton": "_367UGW_ghostButton",
|
|
14682
|
-
"rollbackPointTop": "_367UGW_rollbackPointTop",
|
|
14683
|
-
"logJumpButton": "_367UGW_logJumpButton",
|
|
14684
|
-
"rollbackFileStat": "_367UGW_rollbackFileStat",
|
|
14685
|
-
"rollbackBox": "_367UGW_rollbackBox",
|
|
14686
|
-
"runsOption": "_367UGW_runsOption",
|
|
14687
|
-
"pickerSubgroup": "_367UGW_pickerSubgroup",
|
|
14688
|
-
"paletteInput": "_367UGW_paletteInput",
|
|
14689
|
-
"infoHint": "_367UGW_infoHint",
|
|
14690
|
-
"skipMeta": "_367UGW_skipMeta",
|
|
14691
|
-
"hint": "_367UGW_hint",
|
|
14692
|
-
"artifactRow": "_367UGW_artifactRow",
|
|
14693
|
-
"inlineDiffBox": "_367UGW_inlineDiffBox",
|
|
14694
|
-
"groupHeader": "_367UGW_groupHeader",
|
|
14695
|
-
"mergeMeta": "_367UGW_mergeMeta",
|
|
15999
|
+
"dialogOut": "_367UGW_dialogOut",
|
|
16000
|
+
"restorePlanNote": "_367UGW_restorePlanNote",
|
|
16001
|
+
"chatEntryRow": "_367UGW_chatEntryRow",
|
|
16002
|
+
"skeletonCards": "_367UGW_skeletonCards",
|
|
16003
|
+
"activitySummaryText": "_367UGW_activitySummaryText",
|
|
14696
16004
|
"dialogHeaderRow": "_367UGW_dialogHeaderRow",
|
|
14697
|
-
"rollbackPoint": "_367UGW_rollbackPoint",
|
|
14698
|
-
"syncActivityLabel": "_367UGW_syncActivityLabel",
|
|
14699
|
-
"modeTab": "_367UGW_modeTab",
|
|
14700
16005
|
"rollbackPoints": "_367UGW_rollbackPoints",
|
|
14701
|
-
"
|
|
14702
|
-
"paletteEmpty": "_367UGW_paletteEmpty",
|
|
14703
|
-
"skeletonTableRow": "_367UGW_skeletonTableRow",
|
|
14704
|
-
"restorePlanNote": "_367UGW_restorePlanNote",
|
|
14705
|
-
"kvValue": "_367UGW_kvValue",
|
|
14706
|
-
"mergeScroll": "_367UGW_mergeScroll",
|
|
14707
|
-
"logEmpty": "_367UGW_logEmpty",
|
|
14708
|
-
"restorePlanPath": "_367UGW_restorePlanPath",
|
|
14709
|
-
"rollbackFileList": "_367UGW_rollbackFileList",
|
|
14710
|
-
"navMore": "_367UGW_navMore",
|
|
14711
|
-
"reportFooter": "_367UGW_reportFooter",
|
|
14712
|
-
"shRowActions": "_367UGW_shRowActions",
|
|
14713
|
-
"shellContent": "_367UGW_shellContent",
|
|
14714
|
-
"artifactExpand": "_367UGW_artifactExpand",
|
|
14715
|
-
"activityRows": "_367UGW_activityRows",
|
|
14716
|
-
"paletteItem": "_367UGW_paletteItem",
|
|
14717
|
-
"libraryFooter": "_367UGW_libraryFooter",
|
|
14718
|
-
"dialogBody": "_367UGW_dialogBody",
|
|
14719
|
-
"diffCell": "_367UGW_diffCell",
|
|
14720
|
-
"consultSection": "_367UGW_consultSection",
|
|
14721
|
-
"runsCardHead": "_367UGW_runsCardHead",
|
|
14722
|
-
"conflictList": "_367UGW_conflictList",
|
|
14723
|
-
"groupCard": "_367UGW_groupCard",
|
|
14724
|
-
"dialogCard": "_367UGW_dialogCard",
|
|
14725
|
-
"chatFileMeta": "_367UGW_chatFileMeta",
|
|
14726
|
-
"conflictChoices": "_367UGW_conflictChoices",
|
|
16006
|
+
"chatEntryReference": "_367UGW_chatEntryReference",
|
|
14727
16007
|
"shScroll": "_367UGW_shScroll",
|
|
14728
|
-
"
|
|
14729
|
-
"
|
|
14730
|
-
"
|
|
14731
|
-
"
|
|
14732
|
-
"
|
|
14733
|
-
"
|
|
14734
|
-
"
|
|
14735
|
-
"pickerChevronSpacer": "_367UGW_pickerChevronSpacer",
|
|
14736
|
-
"conflictLineLabel": "_367UGW_conflictLineLabel",
|
|
14737
|
-
"sourceList": "_367UGW_sourceList",
|
|
14738
|
-
"activityRow": "_367UGW_activityRow",
|
|
14739
|
-
"shPanel": "_367UGW_shPanel",
|
|
14740
|
-
"reportBlock": "_367UGW_reportBlock",
|
|
14741
|
-
"shHeaderTrailing": "_367UGW_shHeaderTrailing",
|
|
14742
|
-
"rollbackMetaDot": "_367UGW_rollbackMetaDot",
|
|
14743
|
-
"rollbackGroupHead": "_367UGW_rollbackGroupHead",
|
|
14744
|
-
"selectMenuPortal": "_367UGW_selectMenuPortal",
|
|
14745
|
-
"diffNoColW5": "_367UGW_diffNoColW5",
|
|
14746
|
-
"skeletonTable": "_367UGW_skeletonTable",
|
|
14747
|
-
"statStrip": "_367UGW_statStrip",
|
|
14748
|
-
"reportDetails": "_367UGW_reportDetails",
|
|
14749
|
-
"badgeHost": "_367UGW_badgeHost",
|
|
16008
|
+
"aboutLinkRow": "_367UGW_aboutLinkRow",
|
|
16009
|
+
"statusIndeterminate": "_367UGW_statusIndeterminate",
|
|
16010
|
+
"nextStepsList": "_367UGW_nextStepsList",
|
|
16011
|
+
"selectOptionLabel": "_367UGW_selectOptionLabel",
|
|
16012
|
+
"rollbackAdded": "_367UGW_rollbackAdded",
|
|
16013
|
+
"mergeTile": "_367UGW_mergeTile",
|
|
16014
|
+
"statSegDim": "_367UGW_statSegDim",
|
|
14750
16015
|
"pickerList": "_367UGW_pickerList",
|
|
14751
|
-
"
|
|
14752
|
-
"
|
|
14753
|
-
"dialogIn": "_367UGW_dialogIn",
|
|
14754
|
-
"artifactActions": "_367UGW_artifactActions",
|
|
14755
|
-
"reportProblemText": "_367UGW_reportProblemText",
|
|
14756
|
-
"infoHintIn": "_367UGW_infoHintIn",
|
|
14757
|
-
"navTab": "_367UGW_navTab",
|
|
14758
|
-
"fillCard": "_367UGW_fillCard",
|
|
14759
|
-
"historySummary": "_367UGW_historySummary",
|
|
14760
|
-
"rollbackSessionId": "_367UGW_rollbackSessionId",
|
|
14761
|
-
"mergeTileValue": "_367UGW_mergeTileValue",
|
|
14762
|
-
"resultFooter": "_367UGW_resultFooter",
|
|
14763
|
-
"tableWrap": "_367UGW_tableWrap",
|
|
14764
|
-
"snapshotRow": "_367UGW_snapshotRow",
|
|
14765
|
-
"librarySearch": "_367UGW_librarySearch",
|
|
14766
|
-
"maskOut": "_367UGW_maskOut",
|
|
14767
|
-
"compositionViewport": "_367UGW_compositionViewport",
|
|
14768
|
-
"chatFileIcon": "_367UGW_chatFileIcon",
|
|
14769
|
-
"viewEnter": "_367UGW_viewEnter",
|
|
14770
|
-
"updateNotesLoading": "_367UGW_updateNotesLoading",
|
|
16016
|
+
"rollbackPointActions": "_367UGW_rollbackPointActions",
|
|
16017
|
+
"card": "_367UGW_card",
|
|
14771
16018
|
"artifactMeta": "_367UGW_artifactMeta",
|
|
16019
|
+
"conflictPrefix": "_367UGW_conflictPrefix",
|
|
16020
|
+
"pathRow": "_367UGW_pathRow",
|
|
16021
|
+
"activityKind": "_367UGW_activityKind",
|
|
16022
|
+
"sourceRowHead": "_367UGW_sourceRowHead",
|
|
16023
|
+
"toastIn": "_367UGW_toastIn",
|
|
16024
|
+
"statusAction": "_367UGW_statusAction",
|
|
16025
|
+
"snapshotRowHeader": "_367UGW_snapshotRowHeader",
|
|
14772
16026
|
"diffNoHead": "_367UGW_diffNoHead",
|
|
14773
|
-
"
|
|
14774
|
-
"
|
|
14775
|
-
"artifactName": "_367UGW_artifactName",
|
|
14776
|
-
"reportProblemRow": "_367UGW_reportProblemRow",
|
|
14777
|
-
"stepperStep": "_367UGW_stepperStep",
|
|
14778
|
-
"mergeCols": "_367UGW_mergeCols",
|
|
14779
|
-
"kindTagInfo": "_367UGW_kindTagInfo",
|
|
14780
|
-
"sectionName": "_367UGW_sectionName",
|
|
16027
|
+
"mergeMeta": "_367UGW_mergeMeta",
|
|
16028
|
+
"mergeResult": "_367UGW_mergeResult",
|
|
14781
16029
|
"syncChannelBody": "_367UGW_syncChannelBody",
|
|
14782
|
-
"
|
|
14783
|
-
"
|
|
14784
|
-
"
|
|
14785
|
-
"
|
|
14786
|
-
"
|
|
16030
|
+
"shSummary": "_367UGW_shSummary",
|
|
16031
|
+
"skeletonBlock": "_367UGW_skeletonBlock",
|
|
16032
|
+
"groupItems": "_367UGW_groupItems",
|
|
16033
|
+
"choiceCard": "_367UGW_choiceCard",
|
|
16034
|
+
"statusPulse": "_367UGW_statusPulse",
|
|
16035
|
+
"wizardStepperRow": "_367UGW_wizardStepperRow",
|
|
16036
|
+
"chatEntryNotice": "_367UGW_chatEntryNotice",
|
|
16037
|
+
"historyTime": "_367UGW_historyTime",
|
|
16038
|
+
"progressBlock": "_367UGW_progressBlock",
|
|
16039
|
+
"skeletonRowMeta": "_367UGW_skeletonRowMeta",
|
|
16040
|
+
"kindTagOk": "_367UGW_kindTagOk",
|
|
16041
|
+
"diffTable": "_367UGW_diffTable",
|
|
16042
|
+
"activityEmpty": "_367UGW_activityEmpty",
|
|
16043
|
+
"mono": "_367UGW_mono",
|
|
16044
|
+
"rollbackTabIcon": "_367UGW_rollbackTabIcon",
|
|
16045
|
+
"shMetricLabel": "_367UGW_shMetricLabel",
|
|
16046
|
+
"skeletonTableCell": "_367UGW_skeletonTableCell",
|
|
16047
|
+
"infoHintIn": "_367UGW_infoHintIn",
|
|
16048
|
+
"toolRow": "_367UGW_toolRow",
|
|
16049
|
+
"pickerToolbar": "_367UGW_pickerToolbar",
|
|
16050
|
+
"reportProblemText": "_367UGW_reportProblemText",
|
|
16051
|
+
"artifactName": "_367UGW_artifactName",
|
|
16052
|
+
"chatFileMeta": "_367UGW_chatFileMeta",
|
|
16053
|
+
"dialogBody": "_367UGW_dialogBody",
|
|
16054
|
+
"pickerGroupTitleName": "_367UGW_pickerGroupTitleName",
|
|
16055
|
+
"mergeTileValue": "_367UGW_mergeTileValue",
|
|
16056
|
+
"fillViewport": "_367UGW_fillViewport",
|
|
16057
|
+
"runsSummaryTitle": "_367UGW_runsSummaryTitle",
|
|
16058
|
+
"iconBtn": "_367UGW_iconBtn",
|
|
16059
|
+
"pickerUnitNested": "_367UGW_pickerUnitNested",
|
|
16060
|
+
"reportScroll": "_367UGW_reportScroll",
|
|
16061
|
+
"tableCompact": "_367UGW_tableCompact",
|
|
16062
|
+
"selectOption": "_367UGW_selectOption",
|
|
16063
|
+
"diffCell": "_367UGW_diffCell",
|
|
16064
|
+
"rollbackFileDir": "_367UGW_rollbackFileDir",
|
|
16065
|
+
"toastGlyph": "_367UGW_toastGlyph",
|
|
16066
|
+
"progressTrack": "_367UGW_progressTrack",
|
|
16067
|
+
"navTab": "_367UGW_navTab",
|
|
16068
|
+
"groupNote": "_367UGW_groupNote",
|
|
16069
|
+
"taskPanel": "_367UGW_taskPanel",
|
|
16070
|
+
"selectMenuIn": "_367UGW_selectMenuIn",
|
|
16071
|
+
"formError": "_367UGW_formError",
|
|
16072
|
+
"syncActivityLabel": "_367UGW_syncActivityLabel",
|
|
16073
|
+
"updateVersionRow": "_367UGW_updateVersionRow",
|
|
16074
|
+
"artifactList": "_367UGW_artifactList",
|
|
16075
|
+
"kvKey": "_367UGW_kvKey",
|
|
16076
|
+
"skipRow": "_367UGW_skipRow",
|
|
16077
|
+
"restorePlanStat": "_367UGW_restorePlanStat",
|
|
16078
|
+
"diffScroll": "_367UGW_diffScroll",
|
|
14787
16079
|
"infoValue": "_367UGW_infoValue",
|
|
14788
|
-
"
|
|
14789
|
-
"shMetaDot": "_367UGW_shMetaDot",
|
|
14790
|
-
"mergeConflictPath": "_367UGW_mergeConflictPath",
|
|
14791
|
-
"pickerGroupTitle": "_367UGW_pickerGroupTitle",
|
|
16080
|
+
"factLabel": "_367UGW_factLabel",
|
|
14792
16081
|
"confirmItem": "_367UGW_confirmItem",
|
|
14793
|
-
"
|
|
14794
|
-
"
|
|
14795
|
-
"
|
|
14796
|
-
"
|
|
14797
|
-
"
|
|
14798
|
-
"
|
|
14799
|
-
"
|
|
14800
|
-
"
|
|
14801
|
-
"
|
|
14802
|
-
"
|
|
14803
|
-
"
|
|
14804
|
-
"
|
|
14805
|
-
"runsLogTail": "_367UGW_runsLogTail",
|
|
14806
|
-
"paletteItemGroup": "_367UGW_paletteItemGroup",
|
|
14807
|
-
"diffStatTotal": "_367UGW_diffStatTotal",
|
|
14808
|
-
"shPanelHead": "_367UGW_shPanelHead",
|
|
14809
|
-
"rollbackSummary": "_367UGW_rollbackSummary",
|
|
14810
|
-
"rollbackPointNote": "_367UGW_rollbackPointNote",
|
|
14811
|
-
"badgeRow": "_367UGW_badgeRow",
|
|
14812
|
-
"pickerGroup": "_367UGW_pickerGroup",
|
|
14813
|
-
"mergeColLabel": "_367UGW_mergeColLabel",
|
|
14814
|
-
"pickerOverlay": "_367UGW_pickerOverlay",
|
|
14815
|
-
"diffScroll": "_367UGW_diffScroll",
|
|
14816
|
-
"librarySkeletonRegion": "_367UGW_librarySkeletonRegion",
|
|
14817
|
-
"previewScopeOff": "_367UGW_previewScopeOff",
|
|
14818
|
-
"groupNote": "_367UGW_groupNote",
|
|
14819
|
-
"rollbackLedgerMain": "_367UGW_rollbackLedgerMain",
|
|
14820
|
-
"marketReviewScroll": "_367UGW_marketReviewScroll",
|
|
14821
|
-
"sourceRow": "_367UGW_sourceRow",
|
|
16082
|
+
"stepperStep": "_367UGW_stepperStep",
|
|
16083
|
+
"marketFilterSearch": "_367UGW_marketFilterSearch",
|
|
16084
|
+
"spinnerArc": "_367UGW_spinnerArc",
|
|
16085
|
+
"skipText": "_367UGW_skipText",
|
|
16086
|
+
"chatRawSummary": "_367UGW_chatRawSummary",
|
|
16087
|
+
"shSectionTitle": "_367UGW_shSectionTitle",
|
|
16088
|
+
"activityTime": "_367UGW_activityTime",
|
|
16089
|
+
"syncActivityTrack": "_367UGW_syncActivityTrack",
|
|
16090
|
+
"conflictDetail": "_367UGW_conflictDetail",
|
|
16091
|
+
"shellContent": "_367UGW_shellContent",
|
|
16092
|
+
"skeletonTitle": "_367UGW_skeletonTitle",
|
|
16093
|
+
"segItem": "_367UGW_segItem",
|
|
14822
16094
|
"sectionGrid": "_367UGW_sectionGrid",
|
|
14823
|
-
"
|
|
14824
|
-
"previewChoiceRow": "_367UGW_previewChoiceRow",
|
|
14825
|
-
"chatEntryActions": "_367UGW_chatEntryActions",
|
|
14826
|
-
"rollbackWarnings": "_367UGW_rollbackWarnings",
|
|
14827
|
-
"taskBody": "_367UGW_taskBody",
|
|
14828
|
-
"progressTrack": "_367UGW_progressTrack",
|
|
14829
|
-
"controlRow": "_367UGW_controlRow",
|
|
16095
|
+
"pathOld": "_367UGW_pathOld",
|
|
14830
16096
|
"pickerAction": "_367UGW_pickerAction",
|
|
14831
|
-
"
|
|
14832
|
-
"
|
|
14833
|
-
"
|
|
14834
|
-
"
|
|
14835
|
-
"
|
|
14836
|
-
"
|
|
14837
|
-
"
|
|
14838
|
-
"
|
|
14839
|
-
"
|
|
14840
|
-
"taskTitle": "_367UGW_taskTitle",
|
|
14841
|
-
"sectionTitle": "_367UGW_sectionTitle",
|
|
14842
|
-
"sectionSubtitle": "_367UGW_sectionSubtitle",
|
|
14843
|
-
"emptySteps": "_367UGW_emptySteps",
|
|
14844
|
-
"activityEmpty": "_367UGW_activityEmpty",
|
|
14845
|
-
"taskPanelIn": "_367UGW_taskPanelIn",
|
|
14846
|
-
"factValue": "_367UGW_factValue",
|
|
14847
|
-
"diffFileHead": "_367UGW_diffFileHead",
|
|
14848
|
-
"diffFileStat": "_367UGW_diffFileStat",
|
|
14849
|
-
"chatAttachmentRow": "_367UGW_chatAttachmentRow",
|
|
14850
|
-
"chatEntryNotice": "_367UGW_chatEntryNotice",
|
|
14851
|
-
"diffNoDel": "_367UGW_diffNoDel",
|
|
14852
|
-
"selectChevron": "_367UGW_selectChevron",
|
|
14853
|
-
"chatEntryReference": "_367UGW_chatEntryReference",
|
|
14854
|
-
"modeTabs": "_367UGW_modeTabs",
|
|
14855
|
-
"runsWarnNote": "_367UGW_runsWarnNote",
|
|
14856
|
-
"mergeKind": "_367UGW_mergeKind",
|
|
14857
|
-
"navActions": "_367UGW_navActions",
|
|
14858
|
-
"toastGlyph": "_367UGW_toastGlyph",
|
|
14859
|
-
"reportProblemReason": "_367UGW_reportProblemReason",
|
|
14860
|
-
"reportText": "_367UGW_reportText",
|
|
14861
|
-
"conflictDetail": "_367UGW_conflictDetail",
|
|
14862
|
-
"restorePlanGroupHead": "_367UGW_restorePlanGroupHead",
|
|
14863
|
-
"diffPaneFill": "_367UGW_diffPaneFill",
|
|
14864
|
-
"shMetric": "_367UGW_shMetric",
|
|
14865
|
-
"progressPercent": "_367UGW_progressPercent",
|
|
16097
|
+
"sectionCount": "_367UGW_sectionCount",
|
|
16098
|
+
"skeletonCaption": "_367UGW_skeletonCaption",
|
|
16099
|
+
"conflictHead": "_367UGW_conflictHead",
|
|
16100
|
+
"activityRow": "_367UGW_activityRow",
|
|
16101
|
+
"sectionOptionRow": "_367UGW_sectionOptionRow",
|
|
16102
|
+
"rollbackSessions": "_367UGW_rollbackSessions",
|
|
16103
|
+
"skeletonRowTitle": "_367UGW_skeletonRowTitle",
|
|
16104
|
+
"consultSection": "_367UGW_consultSection",
|
|
16105
|
+
"shIssue": "_367UGW_shIssue",
|
|
14866
16106
|
"shMetricValue": "_367UGW_shMetricValue",
|
|
14867
|
-
"
|
|
14868
|
-
"
|
|
14869
|
-
"
|
|
14870
|
-
"
|
|
14871
|
-
"
|
|
14872
|
-
"
|
|
14873
|
-
"
|
|
14874
|
-
"
|
|
14875
|
-
"
|
|
14876
|
-
"
|
|
14877
|
-
"
|
|
14878
|
-
"
|
|
14879
|
-
"
|
|
14880
|
-
"
|
|
14881
|
-
"
|
|
14882
|
-
"
|
|
14883
|
-
"
|
|
14884
|
-
"
|
|
16107
|
+
"activitySummary": "_367UGW_activitySummary",
|
|
16108
|
+
"conflictId": "_367UGW_conflictId",
|
|
16109
|
+
"pickerUnitDetail": "_367UGW_pickerUnitDetail",
|
|
16110
|
+
"confirmItemDesc": "_367UGW_confirmItemDesc",
|
|
16111
|
+
"logCounts": "_367UGW_logCounts",
|
|
16112
|
+
"fieldLabel": "_367UGW_fieldLabel",
|
|
16113
|
+
"activityBadge": "_367UGW_activityBadge",
|
|
16114
|
+
"reasonLine": "_367UGW_reasonLine",
|
|
16115
|
+
"runsOption": "_367UGW_runsOption",
|
|
16116
|
+
"copyBtn": "_367UGW_copyBtn",
|
|
16117
|
+
"listHeaderRow": "_367UGW_listHeaderRow",
|
|
16118
|
+
"paletteInput": "_367UGW_paletteInput",
|
|
16119
|
+
"updateVersionTarget": "_367UGW_updateVersionTarget",
|
|
16120
|
+
"reportProblemReason": "_367UGW_reportProblemReason",
|
|
16121
|
+
"runsCardHead": "_367UGW_runsCardHead",
|
|
16122
|
+
"historyRow": "_367UGW_historyRow",
|
|
16123
|
+
"mergeToolbarLabel": "_367UGW_mergeToolbarLabel",
|
|
16124
|
+
"rollbackRemoved": "_367UGW_rollbackRemoved",
|
|
16125
|
+
"primaryButton": "_367UGW_primaryButton",
|
|
16126
|
+
"libraryFilterCount": "_367UGW_libraryFilterCount",
|
|
16127
|
+
"previewChoiceRow": "_367UGW_previewChoiceRow",
|
|
16128
|
+
"selectRoot": "_367UGW_selectRoot",
|
|
16129
|
+
"section": "_367UGW_section",
|
|
16130
|
+
"historyScroll": "_367UGW_historyScroll",
|
|
16131
|
+
"rollbackToolbar": "_367UGW_rollbackToolbar",
|
|
16132
|
+
"restorePlanChevron": "_367UGW_restorePlanChevron",
|
|
16133
|
+
"progressLabel": "_367UGW_progressLabel",
|
|
16134
|
+
"ghostButton": "_367UGW_ghostButton",
|
|
14885
16135
|
"updateVersionArrow": "_367UGW_updateVersionArrow",
|
|
14886
|
-
"
|
|
14887
|
-
"
|
|
14888
|
-
"choiceTitle": "_367UGW_choiceTitle",
|
|
14889
|
-
"chatFileContent": "_367UGW_chatFileContent",
|
|
14890
|
-
"pickerFooter": "_367UGW_pickerFooter",
|
|
14891
|
-
"progressBlock": "_367UGW_progressBlock",
|
|
14892
|
-
"noticeSlot": "_367UGW_noticeSlot",
|
|
14893
|
-
"navMeasure": "_367UGW_navMeasure",
|
|
14894
|
-
"errorTitle": "_367UGW_errorTitle",
|
|
14895
|
-
"shRowId": "_367UGW_shRowId",
|
|
14896
|
-
"shSeverities": "_367UGW_shSeverities",
|
|
14897
|
-
"mergeIconLabel": "_367UGW_mergeIconLabel",
|
|
14898
|
-
"reportBody": "_367UGW_reportBody",
|
|
14899
|
-
"chatEntryTime": "_367UGW_chatEntryTime",
|
|
14900
|
-
"consultScroll": "_367UGW_consultScroll",
|
|
14901
|
-
"confirmScroll": "_367UGW_confirmScroll",
|
|
14902
|
-
"syncActivityTrack": "_367UGW_syncActivityTrack",
|
|
14903
|
-
"navMoreRoot": "_367UGW_navMoreRoot",
|
|
14904
|
-
"maskIn": "_367UGW_maskIn",
|
|
14905
|
-
"skeletonCaption": "_367UGW_skeletonCaption",
|
|
14906
|
-
"mergeSection": "_367UGW_mergeSection",
|
|
14907
|
-
"shRowFacts": "_367UGW_shRowFacts",
|
|
14908
|
-
"toastText": "_367UGW_toastText",
|
|
14909
|
-
"artifactList": "_367UGW_artifactList",
|
|
14910
|
-
"historySections": "_367UGW_historySections",
|
|
14911
|
-
"cellActions": "_367UGW_cellActions",
|
|
14912
|
-
"dangerButton": "_367UGW_dangerButton",
|
|
14913
|
-
"chatEntryScope": "_367UGW_chatEntryScope",
|
|
14914
|
-
"libraryFilters": "_367UGW_libraryFilters",
|
|
14915
|
-
"diffHunkRow": "_367UGW_diffHunkRow",
|
|
14916
|
-
"navDot": "_367UGW_navDot",
|
|
14917
|
-
"marketReviewPage": "_367UGW_marketReviewPage",
|
|
14918
|
-
"previewScope": "_367UGW_previewScope",
|
|
14919
|
-
"sectionTitleRow": "_367UGW_sectionTitleRow",
|
|
14920
|
-
"tableCompact": "_367UGW_tableCompact",
|
|
16136
|
+
"librarySkeletonRegion": "_367UGW_librarySkeletonRegion",
|
|
16137
|
+
"diffNoDel": "_367UGW_diffNoDel",
|
|
14921
16138
|
"sourcePaths": "_367UGW_sourcePaths",
|
|
14922
|
-
"
|
|
14923
|
-
"
|
|
14924
|
-
"
|
|
14925
|
-
"
|
|
14926
|
-
"
|
|
16139
|
+
"tableScroll": "_367UGW_tableScroll",
|
|
16140
|
+
"kindTagWarn": "_367UGW_kindTagWarn",
|
|
16141
|
+
"shCommand": "_367UGW_shCommand",
|
|
16142
|
+
"pickerSubgroup": "_367UGW_pickerSubgroup",
|
|
16143
|
+
"logFilterButton": "_367UGW_logFilterButton",
|
|
16144
|
+
"conflictList": "_367UGW_conflictList",
|
|
16145
|
+
"factGrid": "_367UGW_factGrid",
|
|
14927
16146
|
"logLine": "_367UGW_logLine",
|
|
14928
|
-
"
|
|
14929
|
-
"
|
|
14930
|
-
"
|
|
14931
|
-
"
|
|
14932
|
-
"
|
|
14933
|
-
"
|
|
14934
|
-
"
|
|
14935
|
-
"
|
|
14936
|
-
"
|
|
14937
|
-
"
|
|
16147
|
+
"pickerGroup": "_367UGW_pickerGroup",
|
|
16148
|
+
"skeletonRowItem": "_367UGW_skeletonRowItem",
|
|
16149
|
+
"noticeLine": "_367UGW_noticeLine",
|
|
16150
|
+
"restorePlanGroupHead": "_367UGW_restorePlanGroupHead",
|
|
16151
|
+
"shRowId": "_367UGW_shRowId",
|
|
16152
|
+
"artifactDetailWrap": "_367UGW_artifactDetailWrap",
|
|
16153
|
+
"chatFileCard": "_367UGW_chatFileCard",
|
|
16154
|
+
"toast": "_367UGW_toast",
|
|
16155
|
+
"statusSpacer": "_367UGW_statusSpacer",
|
|
16156
|
+
"maskOut": "_367UGW_maskOut",
|
|
16157
|
+
"rollbackPointNote": "_367UGW_rollbackPointNote",
|
|
16158
|
+
"mergeActions": "_367UGW_mergeActions",
|
|
16159
|
+
"statusDot": "_367UGW_statusDot",
|
|
16160
|
+
"runsWarnNoteDetail": "_367UGW_runsWarnNoteDetail",
|
|
14938
16161
|
"optionsRow": "_367UGW_optionsRow",
|
|
14939
|
-
"
|
|
14940
|
-
"
|
|
14941
|
-
"
|
|
16162
|
+
"mergeColLabel": "_367UGW_mergeColLabel",
|
|
16163
|
+
"sourceRowName": "_367UGW_sourceRowName",
|
|
16164
|
+
"pickerGroupTitle": "_367UGW_pickerGroupTitle",
|
|
16165
|
+
"checkboxRow": "_367UGW_checkboxRow",
|
|
16166
|
+
"rollbackBox": "_367UGW_rollbackBox",
|
|
16167
|
+
"profileRowTitle": "_367UGW_profileRowTitle",
|
|
16168
|
+
"statusText": "_367UGW_statusText",
|
|
16169
|
+
"badge": "_367UGW_badge",
|
|
16170
|
+
"runsSummary": "_367UGW_runsSummary",
|
|
16171
|
+
"reportText": "_367UGW_reportText",
|
|
16172
|
+
"categoryItem": "_367UGW_categoryItem",
|
|
16173
|
+
"paletteList": "_367UGW_paletteList",
|
|
16174
|
+
"kindTag": "_367UGW_kindTag",
|
|
16175
|
+
"skeletonRowIcon": "_367UGW_skeletonRowIcon",
|
|
16176
|
+
"inlineDiffBox": "_367UGW_inlineDiffBox",
|
|
16177
|
+
"progressBadgeSection": "_367UGW_progressBadgeSection",
|
|
16178
|
+
"noticeSlot": "_367UGW_noticeSlot",
|
|
16179
|
+
"inspectGroup": "_367UGW_inspectGroup",
|
|
16180
|
+
"kindTagError": "_367UGW_kindTagError",
|
|
16181
|
+
"shPanel": "_367UGW_shPanel",
|
|
16182
|
+
"groupHeader": "_367UGW_groupHeader",
|
|
16183
|
+
"cellMain": "_367UGW_cellMain",
|
|
16184
|
+
"shSeverityCount": "_367UGW_shSeverityCount",
|
|
16185
|
+
"categoryDesc": "_367UGW_categoryDesc",
|
|
16186
|
+
"chatFileContent": "_367UGW_chatFileContent",
|
|
16187
|
+
"mergeToolbar": "_367UGW_mergeToolbar",
|
|
16188
|
+
"consultDimension": "_367UGW_consultDimension",
|
|
16189
|
+
"mergeOverview": "_367UGW_mergeOverview",
|
|
16190
|
+
"sectionSubtitle": "_367UGW_sectionSubtitle",
|
|
16191
|
+
"stepperDot": "_367UGW_stepperDot",
|
|
16192
|
+
"dialogBodyScroll": "_367UGW_dialogBodyScroll",
|
|
16193
|
+
"reportHeadline": "_367UGW_reportHeadline",
|
|
16194
|
+
"historyRowMain": "_367UGW_historyRowMain",
|
|
16195
|
+
"taskBody": "_367UGW_taskBody",
|
|
16196
|
+
"logScroll": "_367UGW_logScroll",
|
|
16197
|
+
"runsOptionTag": "_367UGW_runsOptionTag",
|
|
16198
|
+
"spinnerWrap": "_367UGW_spinnerWrap",
|
|
16199
|
+
"navMoreRoot": "_367UGW_navMoreRoot",
|
|
16200
|
+
"confirmItemHead": "_367UGW_confirmItemHead",
|
|
16201
|
+
"conflictLineValue": "_367UGW_conflictLineValue",
|
|
16202
|
+
"skeletonBar": "_367UGW_skeletonBar",
|
|
16203
|
+
"mergeIconLabel": "_367UGW_mergeIconLabel",
|
|
16204
|
+
"sectionSize": "_367UGW_sectionSize",
|
|
16205
|
+
"skeletonBars": "_367UGW_skeletonBars",
|
|
16206
|
+
"runsCenter": "_367UGW_runsCenter",
|
|
16207
|
+
"kindTagInfo": "_367UGW_kindTagInfo",
|
|
16208
|
+
"cliCommand": "_367UGW_cliCommand",
|
|
16209
|
+
"errorAction": "_367UGW_errorAction",
|
|
16210
|
+
"sectionRow": "_367UGW_sectionRow",
|
|
16211
|
+
"shHeaderTrailing": "_367UGW_shHeaderTrailing",
|
|
14942
16212
|
"sourceRowMain": "_367UGW_sourceRowMain",
|
|
14943
|
-
"
|
|
14944
|
-
"
|
|
14945
|
-
"
|
|
14946
|
-
"
|
|
14947
|
-
"
|
|
14948
|
-
"
|
|
14949
|
-
"
|
|
14950
|
-
"
|
|
14951
|
-
"
|
|
16213
|
+
"diffPaneFill": "_367UGW_diffPaneFill",
|
|
16214
|
+
"navActions": "_367UGW_navActions",
|
|
16215
|
+
"conflictLine": "_367UGW_conflictLine",
|
|
16216
|
+
"chatBubbleText": "_367UGW_chatBubbleText",
|
|
16217
|
+
"shRowMeta": "_367UGW_shRowMeta",
|
|
16218
|
+
"rollbackGroup": "_367UGW_rollbackGroup",
|
|
16219
|
+
"reportSectionRow": "_367UGW_reportSectionRow",
|
|
16220
|
+
"rollbackSessionMeta": "_367UGW_rollbackSessionMeta",
|
|
16221
|
+
"mergeConflictReason": "_367UGW_mergeConflictReason",
|
|
16222
|
+
"chatFileName": "_367UGW_chatFileName",
|
|
16223
|
+
"paletteItemLabel": "_367UGW_paletteItemLabel",
|
|
16224
|
+
"updateNotesLoading": "_367UGW_updateNotesLoading",
|
|
16225
|
+
"progressBarDone": "_367UGW_progressBarDone",
|
|
14952
16226
|
"snapshotRowFacts": "_367UGW_snapshotRowFacts",
|
|
14953
|
-
"
|
|
14954
|
-
"
|
|
16227
|
+
"errorTitle": "_367UGW_errorTitle",
|
|
16228
|
+
"shellNav": "_367UGW_shellNav",
|
|
16229
|
+
"radioLabel": "_367UGW_radioLabel",
|
|
16230
|
+
"cellActions": "_367UGW_cellActions",
|
|
16231
|
+
"rollbackSessionId": "_367UGW_rollbackSessionId",
|
|
16232
|
+
"spinnerLabel": "_367UGW_spinnerLabel",
|
|
16233
|
+
"skeletonShimmer": "_367UGW_skeletonShimmer",
|
|
16234
|
+
"modeTabs": "_367UGW_modeTabs",
|
|
16235
|
+
"shNotes": "_367UGW_shNotes",
|
|
16236
|
+
"dialogWide": "_367UGW_dialogWide",
|
|
16237
|
+
"restorePlanRowStatic": "_367UGW_restorePlanRowStatic",
|
|
16238
|
+
"libraryListState": "_367UGW_libraryListState",
|
|
16239
|
+
"activityResultOk": "_367UGW_activityResultOk",
|
|
16240
|
+
"chatFileExt": "_367UGW_chatFileExt",
|
|
16241
|
+
"diffCellDel": "_367UGW_diffCellDel",
|
|
16242
|
+
"librarySearch": "_367UGW_librarySearch",
|
|
16243
|
+
"artifactRow": "_367UGW_artifactRow",
|
|
14955
16244
|
"pickerModalBody": "_367UGW_pickerModalBody",
|
|
14956
|
-
"
|
|
14957
|
-
"
|
|
14958
|
-
"
|
|
14959
|
-
"
|
|
16245
|
+
"mergeSectionHead": "_367UGW_mergeSectionHead",
|
|
16246
|
+
"skeletonRoot": "_367UGW_skeletonRoot",
|
|
16247
|
+
"secretFields": "_367UGW_secretFields",
|
|
16248
|
+
"shRowActions": "_367UGW_shRowActions",
|
|
16249
|
+
"controlRow": "_367UGW_controlRow",
|
|
16250
|
+
"input": "_367UGW_input",
|
|
16251
|
+
"dialogContentCenter": "_367UGW_dialogContentCenter",
|
|
16252
|
+
"logEntry": "_367UGW_logEntry",
|
|
16253
|
+
"sourceRow": "_367UGW_sourceRow",
|
|
16254
|
+
"dialogClose": "_367UGW_dialogClose",
|
|
14960
16255
|
"kvRow": "_367UGW_kvRow",
|
|
14961
|
-
"
|
|
16256
|
+
"diffNoColW3": "_367UGW_diffNoColW3",
|
|
16257
|
+
"conflictChoices": "_367UGW_conflictChoices",
|
|
16258
|
+
"rollbackMetaDot": "_367UGW_rollbackMetaDot",
|
|
16259
|
+
"rollbackLedger": "_367UGW_rollbackLedger",
|
|
16260
|
+
"artifactMain": "_367UGW_artifactMain",
|
|
16261
|
+
"pickerFooter": "_367UGW_pickerFooter",
|
|
16262
|
+
"activityCard": "_367UGW_activityCard",
|
|
16263
|
+
"errorFooter": "_367UGW_errorFooter",
|
|
16264
|
+
"runsOptionDesc": "_367UGW_runsOptionDesc",
|
|
16265
|
+
"statusProgress": "_367UGW_statusProgress",
|
|
16266
|
+
"indet": "_367UGW_indet",
|
|
14962
16267
|
"severityError": "_367UGW_severityError",
|
|
14963
|
-
"sourceRowName": "_367UGW_sourceRowName",
|
|
14964
|
-
"pickerToolbar": "_367UGW_pickerToolbar",
|
|
14965
|
-
"noticeLine": "_367UGW_noticeLine",
|
|
14966
|
-
"rollbackFileIcon": "_367UGW_rollbackFileIcon",
|
|
14967
|
-
"shellNav": "_367UGW_shellNav",
|
|
14968
|
-
"skeletonTableCell": "_367UGW_skeletonTableCell",
|
|
14969
|
-
"rollbackPointTurn": "_367UGW_rollbackPointTurn",
|
|
14970
|
-
"statusPulse": "_367UGW_statusPulse",
|
|
14971
|
-
"conflictLine": "_367UGW_conflictLine",
|
|
14972
|
-
"mergeFooterSummary": "_367UGW_mergeFooterSummary",
|
|
14973
|
-
"toolRow": "_367UGW_toolRow",
|
|
14974
|
-
"chatFileName": "_367UGW_chatFileName",
|
|
14975
|
-
"logScroll": "_367UGW_logScroll",
|
|
14976
|
-
"iconBtn": "_367UGW_iconBtn",
|
|
14977
16268
|
"runsCounts": "_367UGW_runsCounts",
|
|
14978
|
-
"skeletonRowTitle": "_367UGW_skeletonRowTitle",
|
|
14979
|
-
"mergeColValue": "_367UGW_mergeColValue",
|
|
14980
|
-
"paletteGroup": "_367UGW_paletteGroup",
|
|
14981
|
-
"sectionCount": "_367UGW_sectionCount",
|
|
14982
|
-
"viewBody": "_367UGW_viewBody",
|
|
14983
|
-
"conflictId": "_367UGW_conflictId",
|
|
14984
|
-
"chatEntryRow": "_367UGW_chatEntryRow",
|
|
14985
|
-
"categoryName": "_367UGW_categoryName",
|
|
14986
|
-
"selectOption": "_367UGW_selectOption",
|
|
14987
|
-
"kvKey": "_367UGW_kvKey",
|
|
14988
|
-
"skeletonRowIcon": "_367UGW_skeletonRowIcon",
|
|
14989
|
-
"activityHeader": "_367UGW_activityHeader",
|
|
14990
|
-
"groupList": "_367UGW_groupList",
|
|
14991
|
-
"shMetricLabel": "_367UGW_shMetricLabel",
|
|
14992
|
-
"updateVersionTarget": "_367UGW_updateVersionTarget",
|
|
14993
|
-
"mergeActions": "_367UGW_mergeActions",
|
|
14994
|
-
"skipCode": "_367UGW_skipCode",
|
|
14995
|
-
"shellMain": "_367UGW_shellMain",
|
|
14996
|
-
"mergeCol": "_367UGW_mergeCol",
|
|
14997
|
-
"mergeTileLabel": "_367UGW_mergeTileLabel",
|
|
14998
|
-
"factLabel": "_367UGW_factLabel",
|
|
14999
|
-
"profileRowHeader": "_367UGW_profileRowHeader",
|
|
15000
|
-
"libraryListState": "_367UGW_libraryListState",
|
|
15001
|
-
"itemEnter": "_367UGW_itemEnter",
|
|
15002
|
-
"historyGroup": "_367UGW_historyGroup",
|
|
15003
|
-
"runsSummary": "_367UGW_runsSummary",
|
|
15004
|
-
"snapshotRowMain": "_367UGW_snapshotRowMain",
|
|
15005
16269
|
"runsCardTime": "_367UGW_runsCardTime",
|
|
15006
|
-
"
|
|
15007
|
-
"
|
|
15008
|
-
"
|
|
15009
|
-
"
|
|
15010
|
-
"
|
|
15011
|
-
"
|
|
15012
|
-
"
|
|
15013
|
-
"
|
|
15014
|
-
"
|
|
15015
|
-
"
|
|
15016
|
-
"
|
|
15017
|
-
"
|
|
15018
|
-
"
|
|
15019
|
-
"
|
|
15020
|
-
"
|
|
15021
|
-
"
|
|
15022
|
-
"
|
|
16270
|
+
"groupList": "_367UGW_groupList",
|
|
16271
|
+
"errorActionLabel": "_367UGW_errorActionLabel",
|
|
16272
|
+
"previewScopeOff": "_367UGW_previewScopeOff",
|
|
16273
|
+
"selectMenuPortal": "_367UGW_selectMenuPortal",
|
|
16274
|
+
"factValue": "_367UGW_factValue",
|
|
16275
|
+
"skeletonLine": "_367UGW_skeletonLine",
|
|
16276
|
+
"libraryCount": "_367UGW_libraryCount",
|
|
16277
|
+
"statusTask": "_367UGW_statusTask",
|
|
16278
|
+
"tableWrap": "_367UGW_tableWrap",
|
|
16279
|
+
"marketFilterGrid": "_367UGW_marketFilterGrid",
|
|
16280
|
+
"infoHint": "_367UGW_infoHint",
|
|
16281
|
+
"pickerRoot": "_367UGW_pickerRoot",
|
|
16282
|
+
"pickerCount": "_367UGW_pickerCount",
|
|
16283
|
+
"reportDetails": "_367UGW_reportDetails",
|
|
16284
|
+
"paletteItemGroup": "_367UGW_paletteItemGroup",
|
|
16285
|
+
"runsLogLine": "_367UGW_runsLogLine",
|
|
16286
|
+
"pickerUnit": "_367UGW_pickerUnit",
|
|
16287
|
+
"progressMeta": "_367UGW_progressMeta",
|
|
16288
|
+
"mergeSection": "_367UGW_mergeSection",
|
|
16289
|
+
"compositionViewport": "_367UGW_compositionViewport",
|
|
16290
|
+
"skeletonTable": "_367UGW_skeletonTable",
|
|
16291
|
+
"cellMetaNoteText": "_367UGW_cellMetaNoteText",
|
|
16292
|
+
"shPanelTitle": "_367UGW_shPanelTitle",
|
|
16293
|
+
"chatAttachmentRow": "_367UGW_chatAttachmentRow",
|
|
16294
|
+
"selectLabel": "_367UGW_selectLabel",
|
|
16295
|
+
"sparseFill": "_367UGW_sparseFill",
|
|
16296
|
+
"diffNoAdd": "_367UGW_diffNoAdd",
|
|
16297
|
+
"dialogHeader": "_367UGW_dialogHeader",
|
|
16298
|
+
"skipMeta": "_367UGW_skipMeta",
|
|
16299
|
+
"selectMenu": "_367UGW_selectMenu",
|
|
16300
|
+
"navMore": "_367UGW_navMore",
|
|
15023
16301
|
"runsOptionTitle": "_367UGW_runsOptionTitle",
|
|
15024
|
-
"
|
|
15025
|
-
"
|
|
15026
|
-
"
|
|
15027
|
-
"
|
|
15028
|
-
"
|
|
15029
|
-
"
|
|
15030
|
-
"sourceRowHead": "_367UGW_sourceRowHead",
|
|
15031
|
-
"bannerSlot": "_367UGW_bannerSlot",
|
|
15032
|
-
"warnText": "_367UGW_warnText",
|
|
15033
|
-
"rollbackAdded": "_367UGW_rollbackAdded",
|
|
15034
|
-
"skeletonTitle": "_367UGW_skeletonTitle",
|
|
16302
|
+
"authorRow": "_367UGW_authorRow",
|
|
16303
|
+
"artifactTitle": "_367UGW_artifactTitle",
|
|
16304
|
+
"diffPane": "_367UGW_diffPane",
|
|
16305
|
+
"rollbackFileList": "_367UGW_rollbackFileList",
|
|
16306
|
+
"planScroll": "_367UGW_planScroll",
|
|
16307
|
+
"artifactDetailInner": "_367UGW_artifactDetailInner",
|
|
15035
16308
|
"progressDetail": "_367UGW_progressDetail",
|
|
15036
|
-
"
|
|
16309
|
+
"runsCardTitle": "_367UGW_runsCardTitle",
|
|
16310
|
+
"rollbackFileStat": "_367UGW_rollbackFileStat",
|
|
16311
|
+
"shRowTop": "_367UGW_shRowTop",
|
|
16312
|
+
"emptySteps": "_367UGW_emptySteps",
|
|
16313
|
+
"resultFooter": "_367UGW_resultFooter",
|
|
16314
|
+
"chatFileIcon": "_367UGW_chatFileIcon",
|
|
16315
|
+
"chatEntryActions": "_367UGW_chatEntryActions",
|
|
16316
|
+
"mergeFooterSummary": "_367UGW_mergeFooterSummary",
|
|
16317
|
+
"collapse": "_367UGW_collapse",
|
|
16318
|
+
"previewScopeStats": "_367UGW_previewScopeStats",
|
|
16319
|
+
"diffNoColW5": "_367UGW_diffNoColW5",
|
|
16320
|
+
"rollbackPoint": "_367UGW_rollbackPoint",
|
|
16321
|
+
"snapshotRowText": "_367UGW_snapshotRowText",
|
|
16322
|
+
"logEmpty": "_367UGW_logEmpty",
|
|
16323
|
+
"diffNo": "_367UGW_diffNo",
|
|
16324
|
+
"logHeader": "_367UGW_logHeader",
|
|
15037
16325
|
"progressBadge": "_367UGW_progressBadge",
|
|
15038
|
-
"
|
|
15039
|
-
"
|
|
15040
|
-
"
|
|
15041
|
-
"
|
|
15042
|
-
"
|
|
15043
|
-
"
|
|
15044
|
-
"
|
|
15045
|
-
"
|
|
15046
|
-
"
|
|
16326
|
+
"paletteEmpty": "_367UGW_paletteEmpty",
|
|
16327
|
+
"profileRowName": "_367UGW_profileRowName",
|
|
16328
|
+
"mergeColValue": "_367UGW_mergeColValue",
|
|
16329
|
+
"chatEntryScope": "_367UGW_chatEntryScope",
|
|
16330
|
+
"diffFileStat": "_367UGW_diffFileStat",
|
|
16331
|
+
"statSeg": "_367UGW_statSeg",
|
|
16332
|
+
"spin": "_367UGW_spin",
|
|
16333
|
+
"restorePlan": "_367UGW_restorePlan",
|
|
16334
|
+
"diffCellAdd": "_367UGW_diffCellAdd",
|
|
16335
|
+
"rollbackDeleted": "_367UGW_rollbackDeleted",
|
|
16336
|
+
"warnList": "_367UGW_warnList",
|
|
16337
|
+
"maskIn": "_367UGW_maskIn",
|
|
16338
|
+
"pickerChildren": "_367UGW_pickerChildren",
|
|
16339
|
+
"warnText": "_367UGW_warnText",
|
|
16340
|
+
"runsCardActions": "_367UGW_runsCardActions",
|
|
16341
|
+
"reportBlock": "_367UGW_reportBlock",
|
|
16342
|
+
"shMetrics": "_367UGW_shMetrics",
|
|
16343
|
+
"taskHead": "_367UGW_taskHead",
|
|
16344
|
+
"mergeTileLabel": "_367UGW_mergeTileLabel",
|
|
16345
|
+
"stepper": "_367UGW_stepper",
|
|
16346
|
+
"dialogCard": "_367UGW_dialogCard",
|
|
15047
16347
|
"progressBar": "_367UGW_progressBar",
|
|
15048
|
-
"
|
|
15049
|
-
"
|
|
15050
|
-
"
|
|
15051
|
-
"
|
|
15052
|
-
"
|
|
15053
|
-
"
|
|
15054
|
-
"
|
|
16348
|
+
"mergeCols": "_367UGW_mergeCols",
|
|
16349
|
+
"rollbackPointTurn": "_367UGW_rollbackPointTurn",
|
|
16350
|
+
"hiddenFile": "_367UGW_hiddenFile",
|
|
16351
|
+
"selectTrigger": "_367UGW_selectTrigger",
|
|
16352
|
+
"skipList": "_367UGW_skipList",
|
|
16353
|
+
"mergeSectionName": "_367UGW_mergeSectionName",
|
|
16354
|
+
"reportWarningRow": "_367UGW_reportWarningRow",
|
|
16355
|
+
"num": "_367UGW_num",
|
|
16356
|
+
"reportFooter": "_367UGW_reportFooter",
|
|
16357
|
+
"rollbackFileRow": "_367UGW_rollbackFileRow",
|
|
16358
|
+
"modeHint": "_367UGW_modeHint",
|
|
16359
|
+
"mergeConflictPath": "_367UGW_mergeConflictPath",
|
|
16360
|
+
"shSeverity": "_367UGW_shSeverity",
|
|
16361
|
+
"infoHintBtn": "_367UGW_infoHintBtn",
|
|
16362
|
+
"dialogFooter": "_367UGW_dialogFooter",
|
|
16363
|
+
"pickerOverlay": "_367UGW_pickerOverlay",
|
|
16364
|
+
"logPanel": "_367UGW_logPanel",
|
|
16365
|
+
"navStrip": "_367UGW_navStrip",
|
|
16366
|
+
"diffStatTotal": "_367UGW_diffStatTotal",
|
|
16367
|
+
"diffNoColW6": "_367UGW_diffNoColW6",
|
|
16368
|
+
"statHealthAction": "_367UGW_statHealthAction",
|
|
16369
|
+
"progressBarFailed": "_367UGW_progressBarFailed",
|
|
16370
|
+
"categoryName": "_367UGW_categoryName",
|
|
16371
|
+
"reportBody": "_367UGW_reportBody",
|
|
16372
|
+
"diffStatAdd": "_367UGW_diffStatAdd",
|
|
16373
|
+
"progressPercent": "_367UGW_progressPercent",
|
|
16374
|
+
"rollbackGroupHead": "_367UGW_rollbackGroupHead",
|
|
16375
|
+
"shRow": "_367UGW_shRow",
|
|
16376
|
+
"badgeHost": "_367UGW_badgeHost",
|
|
15055
16377
|
"pathNew": "_367UGW_pathNew",
|
|
15056
|
-
"
|
|
16378
|
+
"diffHunkRow": "_367UGW_diffHunkRow",
|
|
16379
|
+
"sectionTitleBlock": "_367UGW_sectionTitleBlock",
|
|
16380
|
+
"rollbackFilePath": "_367UGW_rollbackFilePath",
|
|
16381
|
+
"activityHeader": "_367UGW_activityHeader",
|
|
16382
|
+
"restorePlanPath": "_367UGW_restorePlanPath",
|
|
16383
|
+
"skeletonRowAction": "_367UGW_skeletonRowAction",
|
|
16384
|
+
"sourceList": "_367UGW_sourceList",
|
|
16385
|
+
"navDot": "_367UGW_navDot",
|
|
16386
|
+
"field": "_367UGW_field",
|
|
16387
|
+
"shMetric": "_367UGW_shMetric",
|
|
16388
|
+
"rollbackSummary": "_367UGW_rollbackSummary",
|
|
16389
|
+
"statValueSkeleton": "_367UGW_statValueSkeleton",
|
|
16390
|
+
"pickerTreeRow": "_367UGW_pickerTreeRow",
|
|
16391
|
+
"actionRowTop": "_367UGW_actionRowTop",
|
|
16392
|
+
"diffFileHead": "_367UGW_diffFileHead",
|
|
16393
|
+
"libraryFilter": "_367UGW_libraryFilter",
|
|
16394
|
+
"stepperConnector": "_367UGW_stepperConnector",
|
|
16395
|
+
"secretsList": "_367UGW_secretsList",
|
|
16396
|
+
"groupCard": "_367UGW_groupCard",
|
|
16397
|
+
"diffStatDel": "_367UGW_diffStatDel",
|
|
16398
|
+
"skeletonRow": "_367UGW_skeletonRow",
|
|
16399
|
+
"errorBanner": "_367UGW_errorBanner",
|
|
16400
|
+
"artifactBadges": "_367UGW_artifactBadges",
|
|
16401
|
+
"artifactActions": "_367UGW_artifactActions",
|
|
16402
|
+
"skeletonCard": "_367UGW_skeletonCard",
|
|
16403
|
+
"mergeScroll": "_367UGW_mergeScroll",
|
|
16404
|
+
"artifactExpand": "_367UGW_artifactExpand",
|
|
16405
|
+
"errorItem": "_367UGW_errorItem",
|
|
16406
|
+
"snapshotList": "_367UGW_snapshotList",
|
|
16407
|
+
"rollbackGroupUnit": "_367UGW_rollbackGroupUnit",
|
|
16408
|
+
"optionsCard": "_367UGW_optionsCard",
|
|
15057
16409
|
"collapseInner": "_367UGW_collapseInner",
|
|
15058
|
-
"
|
|
15059
|
-
"
|
|
15060
|
-
"historyTime": "_367UGW_historyTime",
|
|
15061
|
-
"mergeResult": "_367UGW_mergeResult",
|
|
15062
|
-
"secretFields": "_367UGW_secretFields",
|
|
15063
|
-
"statusSpacer": "_367UGW_statusSpacer",
|
|
15064
|
-
"libraryCount": "_367UGW_libraryCount",
|
|
15065
|
-
"restorePlanStat": "_367UGW_restorePlanStat",
|
|
15066
|
-
"diffPane": "_367UGW_diffPane",
|
|
15067
|
-
"activityTitle": "_367UGW_activityTitle",
|
|
15068
|
-
"logPanel": "_367UGW_logPanel",
|
|
15069
|
-
"errorReason": "_367UGW_errorReason",
|
|
15070
|
-
"mergeConflictReason": "_367UGW_mergeConflictReason",
|
|
15071
|
-
"pathOld": "_367UGW_pathOld",
|
|
15072
|
-
"diffNoAdd": "_367UGW_diffNoAdd",
|
|
15073
|
-
"sectionOptionRow": "_367UGW_sectionOptionRow",
|
|
15074
|
-
"tableScroll": "_367UGW_tableScroll",
|
|
15075
|
-
"errorAction": "_367UGW_errorAction",
|
|
15076
|
-
"chatFileCard": "_367UGW_chatFileCard",
|
|
15077
|
-
"rollbackLedger": "_367UGW_rollbackLedger",
|
|
15078
|
-
"stepper": "_367UGW_stepper",
|
|
15079
|
-
"taskHead": "_367UGW_taskHead",
|
|
15080
|
-
"artifactRowHead": "_367UGW_artifactRowHead",
|
|
15081
|
-
"snapshotRowText": "_367UGW_snapshotRowText",
|
|
15082
|
-
"stepperLabel": "_367UGW_stepperLabel",
|
|
15083
|
-
"diffCellDel": "_367UGW_diffCellDel",
|
|
15084
|
-
"rollbackGroupTitle": "_367UGW_rollbackGroupTitle",
|
|
15085
|
-
"shIssue": "_367UGW_shIssue",
|
|
15086
|
-
"selectRoot": "_367UGW_selectRoot",
|
|
15087
|
-
"logCounts": "_367UGW_logCounts",
|
|
15088
|
-
"reportWarningRow": "_367UGW_reportWarningRow",
|
|
15089
|
-
"chatRawPre": "_367UGW_chatRawPre",
|
|
15090
|
-
"rollbackSessionMeta": "_367UGW_rollbackSessionMeta",
|
|
15091
|
-
"shPanelTitle": "_367UGW_shPanelTitle",
|
|
15092
|
-
"diffCellAdd": "_367UGW_diffCellAdd",
|
|
15093
|
-
"diskUsageScroll": "_367UGW_diskUsageScroll",
|
|
15094
|
-
"rollbackTabIcon": "_367UGW_rollbackTabIcon",
|
|
15095
|
-
"diskUsageCard": "_367UGW_diskUsageCard",
|
|
15096
|
-
"skeletonRoot": "_367UGW_skeletonRoot",
|
|
15097
|
-
"pathValue": "_367UGW_pathValue",
|
|
15098
|
-
"toastIn": "_367UGW_toastIn"
|
|
16410
|
+
"pickerRow": "_367UGW_pickerRow",
|
|
16411
|
+
"shMetaDot": "_367UGW_shMetaDot"
|
|
15099
16412
|
};
|
|
15100
16413
|
// src/client/common/Modal.tsx
|
|
15101
16414
|
/**
|
|
@@ -16712,6 +18025,18 @@ const zh$4 = {
|
|
|
16712
18025
|
"import.paths.kind.homeMismatch": "基础路径不同",
|
|
16713
18026
|
"import.paths.unresolved": "还有 {count} 条路径未映射(留空将跳过该路径,可以继续)",
|
|
16714
18027
|
"import.paths.empty": "无需映射路径",
|
|
18028
|
+
"import.paths.browse": "选择本机路径",
|
|
18029
|
+
"import.paths.picker.title": "选择本机路径",
|
|
18030
|
+
"import.paths.picker.up": "上一层",
|
|
18031
|
+
"import.paths.picker.home": "主目录",
|
|
18032
|
+
"import.paths.picker.thisPc": "此电脑",
|
|
18033
|
+
"import.paths.picker.useCurrent": "使用当前目录",
|
|
18034
|
+
"import.paths.picker.empty": "这个目录里没有可进入的项",
|
|
18035
|
+
"import.paths.picker.truncated": "只显示前 {count} 项",
|
|
18036
|
+
"import.paths.picker.notFound": "这个路径不存在(已为你打开上一级)",
|
|
18037
|
+
"import.paths.picker.denied": "没有读取这个目录的权限",
|
|
18038
|
+
"import.paths.picker.notAbsolute": "请填绝对路径(如 D:\\ 或 /)",
|
|
18039
|
+
"import.paths.picker.failed": "读取这个目录失败",
|
|
16715
18040
|
"home.schedule.title": "定时备份",
|
|
16716
18041
|
"snapshots.selectHint": "选择快照以预览恢复计划(只读预览,不会改动任何设置):",
|
|
16717
18042
|
"snapshots.status": "状态",
|
|
@@ -17533,6 +18858,18 @@ const en$4 = {
|
|
|
17533
18858
|
"import.paths.kind.homeMismatch": "Different base path",
|
|
17534
18859
|
"import.paths.unresolved": "{count} path(s) unmapped (blank = skip that path, you can continue)",
|
|
17535
18860
|
"import.paths.empty": "No paths to map",
|
|
18861
|
+
"import.paths.browse": "Choose a local path",
|
|
18862
|
+
"import.paths.picker.title": "Choose a local path",
|
|
18863
|
+
"import.paths.picker.up": "Up one level",
|
|
18864
|
+
"import.paths.picker.home": "Home folder",
|
|
18865
|
+
"import.paths.picker.thisPc": "This PC",
|
|
18866
|
+
"import.paths.picker.useCurrent": "Use this folder",
|
|
18867
|
+
"import.paths.picker.empty": "Nothing to open in this folder",
|
|
18868
|
+
"import.paths.picker.truncated": "Showing the first {count} entries",
|
|
18869
|
+
"import.paths.picker.notFound": "That path does not exist (opened its parent instead)",
|
|
18870
|
+
"import.paths.picker.denied": "No permission to read this folder",
|
|
18871
|
+
"import.paths.picker.notAbsolute": "Enter an absolute path (e.g. D:\\ or /)",
|
|
18872
|
+
"import.paths.picker.failed": "Could not read this folder",
|
|
17536
18873
|
"home.schedule.title": "Schedule",
|
|
17537
18874
|
"snapshots.selectHint": "Select a snapshot to preview its restore plan (read-only preview, changes nothing):",
|
|
17538
18875
|
"snapshots.status": "Status",
|
|
@@ -21482,13 +22819,22 @@ function CopyButton({ text, label, t }) {
|
|
|
21482
22819
|
} else toast.warn(t("toast.copyFailed"));
|
|
21483
22820
|
});
|
|
21484
22821
|
};
|
|
22822
|
+
/**
|
|
22823
|
+
* 图标 = **对话(聊天)回退条用的那两颗宿主原生图**(2026-10-28 用户要求「复制图标统一替换成
|
|
22824
|
+
* 对话回退的复制 icon」):`IconCopyOutlineRegular → IconCheckOutlineRegular` 的**瞬时换图**,
|
|
22825
|
+
* 与宿主 MessageIconActions / ChatEntryCopyAction 同一对、同一字形与描边重量。
|
|
22826
|
+
* 拿不到宿主图标的老宿主回落 morphicons 的 `CopyStateIcon`(绝不能变成空白按钮)。
|
|
22827
|
+
*/
|
|
22828
|
+
const HostCopyIcon = hostIcon("IconCopyOutlineRegular");
|
|
22829
|
+
const HostCheckIcon = hostIcon("IconCheckOutlineRegular");
|
|
21485
22830
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
21486
22831
|
type: "button",
|
|
21487
22832
|
className: config_manager_module_css_default.copyBtn,
|
|
21488
22833
|
"aria-label": label,
|
|
21489
22834
|
title: label,
|
|
21490
22835
|
onClick,
|
|
21491
|
-
|
|
22836
|
+
"data-copy-state": copied ? "copied" : "idle",
|
|
22837
|
+
children: HostCopyIcon !== null && HostCheckIcon !== null ? copied ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(HostCheckIcon, { size: 12 }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(HostCopyIcon, { size: 12 }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CopyStateIcon, {
|
|
21492
22838
|
done: copied,
|
|
21493
22839
|
size: 12
|
|
21494
22840
|
})
|
|
@@ -25287,6 +26633,170 @@ function ConflictList({ collector, t, onChanged }) {
|
|
|
25287
26633
|
]
|
|
25288
26634
|
});
|
|
25289
26635
|
}
|
|
26636
|
+
// src/client/import/PathPickerDialog.tsx
|
|
26637
|
+
/**
|
|
26638
|
+
* 本机路径选择弹窗(导入 → 路径映射 → 每条「新路径」右侧的文件夹按钮)。
|
|
26639
|
+
*
|
|
26640
|
+
* 为什么需要它
|
|
26641
|
+
* ------------
|
|
26642
|
+
* 路径映射要求用户给一堆**绝对路径**指定本机新位置,而浏览器拿不到真实路径
|
|
26643
|
+
* (File System Access API 只给 handle,`<input type="file">` 只给文件名)。此前用户只能凭记忆
|
|
26644
|
+
* 手打 `D:\\Apps\\nodejs\\node_global\\gitnexus.cmd` 这类字符串 —— 打错一位就等于「导不进」。
|
|
26645
|
+
* 目录列举由宿主 `GET /path-browse` 提供(src/core/path-browse.ts,只读、有界),本组件只画界面。
|
|
26646
|
+
*
|
|
26647
|
+
* 交互约定
|
|
26648
|
+
* --------
|
|
26649
|
+
* - 点目录 = 进入;点文件 = 直接选中(原路径可能指向文件,如 .cmd / .json);
|
|
26650
|
+
* - 「使用当前目录」回填当前目录;「上一层」「主目录」是导航快捷入口;
|
|
26651
|
+
* - 起点 `startPath` 若是文件或不存在,宿主会同时给出 `parent`,这里上浮一层再列(只自动上浮一次,
|
|
26652
|
+
* 免得用户在空目录里被反复弹走)。
|
|
26653
|
+
*
|
|
26654
|
+
* 边界:组件不发请求做判断,不创建/改名/删除任何东西;错误码由字典翻译(引擎不产文案)。
|
|
26655
|
+
*/
|
|
26656
|
+
/** 列举失败原因码 → 字典键(与 core 的 `BrowseErrorCode` 一一对应)。 */
|
|
26657
|
+
const BROWSE_ERROR_LABEL = {
|
|
26658
|
+
"not-found": "import.paths.picker.notFound",
|
|
26659
|
+
denied: "import.paths.picker.denied",
|
|
26660
|
+
failed: "import.paths.picker.failed",
|
|
26661
|
+
"not-absolute": "import.paths.picker.notAbsolute"
|
|
26662
|
+
};
|
|
26663
|
+
/**
|
|
26664
|
+
* 目录浏览弹窗:列一层目录,点目录进入、点文件选中。
|
|
26665
|
+
*/
|
|
26666
|
+
function PathPickerDialog({ open, api, t, startPath, onPick, onClose }) {
|
|
26667
|
+
const [current, setCurrent] = (0, react.useState)(null);
|
|
26668
|
+
const [state, setState] = (0, react.useState)({ kind: "loading" });
|
|
26669
|
+
const risenFor = (0, react.useRef)(null);
|
|
26670
|
+
const trimmedStart = startPath.trim();
|
|
26671
|
+
(0, react.useEffect)(() => {
|
|
26672
|
+
if (!open) return;
|
|
26673
|
+
risenFor.current = null;
|
|
26674
|
+
setCurrent(trimmedStart === "" ? null : trimmedStart);
|
|
26675
|
+
}, [open, trimmedStart]);
|
|
26676
|
+
(0, react.useEffect)(() => {
|
|
26677
|
+
if (!open) return;
|
|
26678
|
+
let alive = true;
|
|
26679
|
+
setState({ kind: "loading" });
|
|
26680
|
+
api.browsePath(current ?? void 0).then((data) => {
|
|
26681
|
+
if (!alive) return;
|
|
26682
|
+
if (data.error === "not-found" && data.path === trimmedStart && data.parent !== null && risenFor.current !== data.path) {
|
|
26683
|
+
risenFor.current = data.path;
|
|
26684
|
+
setCurrent(data.parent);
|
|
26685
|
+
return;
|
|
26686
|
+
}
|
|
26687
|
+
setState({
|
|
26688
|
+
kind: "ready",
|
|
26689
|
+
data
|
|
26690
|
+
});
|
|
26691
|
+
}, (error) => {
|
|
26692
|
+
if (!alive) return;
|
|
26693
|
+
setState({
|
|
26694
|
+
kind: "failed",
|
|
26695
|
+
detail: error instanceof Error ? error.message : String(error)
|
|
26696
|
+
});
|
|
26697
|
+
});
|
|
26698
|
+
return () => {
|
|
26699
|
+
alive = false;
|
|
26700
|
+
};
|
|
26701
|
+
}, [
|
|
26702
|
+
open,
|
|
26703
|
+
current,
|
|
26704
|
+
trimmedStart,
|
|
26705
|
+
api
|
|
26706
|
+
]);
|
|
26707
|
+
const data = state.kind === "ready" ? state.data : null;
|
|
26708
|
+
const atRoots = data !== null && data.path === "";
|
|
26709
|
+
const canGoUp = data !== null && data.parent !== null;
|
|
26710
|
+
const pathLabel = atRoots ? t("import.paths.picker.thisPc") : data?.path ?? trimmedStart;
|
|
26711
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Modal, {
|
|
26712
|
+
open,
|
|
26713
|
+
onClose,
|
|
26714
|
+
title: t("import.paths.picker.title"),
|
|
26715
|
+
wide: true,
|
|
26716
|
+
children: [
|
|
26717
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Modal.Header, {
|
|
26718
|
+
title: t("import.paths.picker.title"),
|
|
26719
|
+
onClose,
|
|
26720
|
+
closeLabel: t("common.close")
|
|
26721
|
+
}),
|
|
26722
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Modal.Body, {
|
|
26723
|
+
scroll: true,
|
|
26724
|
+
style: { maxHeight: "56vh" },
|
|
26725
|
+
children: [
|
|
26726
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
26727
|
+
className: config_manager_module_css_default.pickerPath,
|
|
26728
|
+
title: pathLabel,
|
|
26729
|
+
children: pathLabel
|
|
26730
|
+
}),
|
|
26731
|
+
state.kind === "loading" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Spinner, { label: t("common.loading") }),
|
|
26732
|
+
state.kind === "failed" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Banner, {
|
|
26733
|
+
kind: "error",
|
|
26734
|
+
children: state.detail
|
|
26735
|
+
}),
|
|
26736
|
+
state.kind === "ready" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
26737
|
+
state.data.error !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Banner, {
|
|
26738
|
+
kind: "warn",
|
|
26739
|
+
children: t(BROWSE_ERROR_LABEL[state.data.error])
|
|
26740
|
+
}),
|
|
26741
|
+
state.data.error === null && state.data.truncated && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Banner, {
|
|
26742
|
+
kind: "info",
|
|
26743
|
+
children: t("import.paths.picker.truncated", { count: String(state.data.entries.length) })
|
|
26744
|
+
}),
|
|
26745
|
+
state.data.error === null && state.data.entries.length === 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
26746
|
+
className: config_manager_module_css_default.empty,
|
|
26747
|
+
children: t("import.paths.picker.empty")
|
|
26748
|
+
}),
|
|
26749
|
+
state.data.entries.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
26750
|
+
className: config_manager_module_css_default.pickerList,
|
|
26751
|
+
children: state.data.entries.map((entry) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
26752
|
+
type: "button",
|
|
26753
|
+
className: config_manager_module_css_default.pickerRow,
|
|
26754
|
+
"data-kind": entry.kind,
|
|
26755
|
+
title: entry.path,
|
|
26756
|
+
onClick: () => {
|
|
26757
|
+
if (entry.kind === "dir") setCurrent(entry.path);
|
|
26758
|
+
else onPick(entry.path);
|
|
26759
|
+
},
|
|
26760
|
+
children: [entry.kind === "dir" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FolderIcon, { size: 14 }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FileIcon, { size: 14 }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
26761
|
+
className: config_manager_module_css_default.pickerName,
|
|
26762
|
+
children: entry.name
|
|
26763
|
+
})]
|
|
26764
|
+
}, entry.path))
|
|
26765
|
+
})
|
|
26766
|
+
] })
|
|
26767
|
+
]
|
|
26768
|
+
}),
|
|
26769
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Modal.Footer, { children: [
|
|
26770
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Button, {
|
|
26771
|
+
onClick: () => {
|
|
26772
|
+
if (data?.parent != null) setCurrent(data.parent);
|
|
26773
|
+
},
|
|
26774
|
+
disabled: !canGoUp,
|
|
26775
|
+
children: t("import.paths.picker.up")
|
|
26776
|
+
}),
|
|
26777
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Button, {
|
|
26778
|
+
onClick: () => {
|
|
26779
|
+
if (data !== null) setCurrent(data.home);
|
|
26780
|
+
},
|
|
26781
|
+
disabled: data === null,
|
|
26782
|
+
children: t("import.paths.picker.home")
|
|
26783
|
+
}),
|
|
26784
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Button, {
|
|
26785
|
+
onClick: onClose,
|
|
26786
|
+
children: t("common.cancel")
|
|
26787
|
+
}),
|
|
26788
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Button, {
|
|
26789
|
+
variant: "primary",
|
|
26790
|
+
disabled: data === null || atRoots,
|
|
26791
|
+
onClick: () => {
|
|
26792
|
+
if (data !== null) onPick(data.path);
|
|
26793
|
+
},
|
|
26794
|
+
children: t("import.paths.picker.useCurrent")
|
|
26795
|
+
})
|
|
26796
|
+
] })
|
|
26797
|
+
]
|
|
26798
|
+
});
|
|
26799
|
+
}
|
|
25290
26800
|
// src/client/import/PathMappingForm.tsx
|
|
25291
26801
|
/**
|
|
25292
26802
|
* 路径映射表单(规范 §12,绑 src/ui/types.ts 的 PathMappingDraft 形状)。
|
|
@@ -25310,7 +26820,8 @@ const PATH_ISSUE_LABEL = {
|
|
|
25310
26820
|
* 路径映射表单:每条 PathIssue 一行(原路径 → 新路径输入框),
|
|
25311
26821
|
* 留空 = 该路径不映射(unresolved);填写 = 输出 core PathMapping[]。
|
|
25312
26822
|
*/
|
|
25313
|
-
function PathMappingForm({ issues, initial, t, onChange }) {
|
|
26823
|
+
function PathMappingForm({ issues, initial, t, onChange, api }) {
|
|
26824
|
+
const [pickingFor, setPickingFor] = (0, react.useState)(null);
|
|
25314
26825
|
const [drafts, setDrafts] = (0, react.useState)(() => {
|
|
25315
26826
|
const out = {};
|
|
25316
26827
|
for (const m of initial ?? []) out[m.oldPrefix] = m.newPrefix;
|
|
@@ -25328,6 +26839,32 @@ function PathMappingForm({ issues, initial, t, onChange }) {
|
|
|
25328
26839
|
appliesTo: []
|
|
25329
26840
|
})));
|
|
25330
26841
|
};
|
|
26842
|
+
/**
|
|
26843
|
+
* 文件夹按钮的完整动作,三层降级,任一层拿到绝对路径就回填:
|
|
26844
|
+
* ① **DSH 宿主自带**的目录选择器(就是「选择工作区目录」那个原生窗口,跟着宿主主进程走,最稳);
|
|
26845
|
+
* ② 插件自己的系统对话框(Windows = 资源管理器同款、macOS = Finder、Linux = zenity/kdialog);
|
|
26846
|
+
* ③ 内置目录浏览器(前两层都没有时才用)。
|
|
26847
|
+
*
|
|
26848
|
+
* 用户在任何一层点取消 ⇒ 什么都不做(不是错误,不弹红条)。
|
|
26849
|
+
*/
|
|
26850
|
+
const pickFolder = (oldPrefix) => {
|
|
26851
|
+
const startPath = (drafts[oldPrefix] ?? "").trim();
|
|
26852
|
+
(async () => {
|
|
26853
|
+
const viaHost = api.pickDshPath === void 0 ? void 0 : await api.pickDshPath();
|
|
26854
|
+
if (viaHost?.ok === true) {
|
|
26855
|
+
setNewPrefix(oldPrefix, viaHost.path);
|
|
26856
|
+
return;
|
|
26857
|
+
}
|
|
26858
|
+
if (viaHost?.reason === "canceled") return;
|
|
26859
|
+
const native = await api.pickNativePath(startPath, t("import.paths.picker.title")).catch(() => null);
|
|
26860
|
+
if (native !== null && native.ok) {
|
|
26861
|
+
setNewPrefix(oldPrefix, native.path);
|
|
26862
|
+
return;
|
|
26863
|
+
}
|
|
26864
|
+
if (native !== null && native.reason === "canceled") return;
|
|
26865
|
+
setPickingFor(oldPrefix);
|
|
26866
|
+
})();
|
|
26867
|
+
};
|
|
25331
26868
|
const unresolved = (0, react.useMemo)(() => {
|
|
25332
26869
|
return issues.filter((issue) => (drafts[issue.value] ?? "") === "");
|
|
25333
26870
|
}, [issues, drafts]);
|
|
@@ -25365,16 +26902,38 @@ function PathMappingForm({ issues, initial, t, onChange }) {
|
|
|
25365
26902
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
25366
26903
|
className: config_manager_module_css_default.fieldLabel,
|
|
25367
26904
|
children: t("import.paths.new")
|
|
25368
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.
|
|
25369
|
-
className: config_manager_module_css_default.
|
|
25370
|
-
|
|
25371
|
-
|
|
25372
|
-
|
|
25373
|
-
|
|
25374
|
-
|
|
26905
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
26906
|
+
className: config_manager_module_css_default.pathInputRow,
|
|
26907
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
26908
|
+
className: config_manager_module_css_default.input,
|
|
26909
|
+
value: drafts[issue.value] ?? "",
|
|
26910
|
+
placeholder: issue.mappedTo ?? "",
|
|
26911
|
+
onChange: (e) => {
|
|
26912
|
+
setNewPrefix(issue.value, e.target.value);
|
|
26913
|
+
}
|
|
26914
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconButton, {
|
|
26915
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FolderOpenIcon, { size: 14 }),
|
|
26916
|
+
label: t("import.paths.browse"),
|
|
26917
|
+
onClick: () => {
|
|
26918
|
+
pickFolder(issue.value);
|
|
26919
|
+
}
|
|
26920
|
+
})]
|
|
25375
26921
|
})]
|
|
25376
26922
|
})]
|
|
25377
|
-
}, issue.value))
|
|
26923
|
+
}, issue.value)),
|
|
26924
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(PathPickerDialog, {
|
|
26925
|
+
open: pickingFor !== null,
|
|
26926
|
+
api,
|
|
26927
|
+
t,
|
|
26928
|
+
startPath: pickingFor === null ? "" : drafts[pickingFor] ?? "",
|
|
26929
|
+
onPick: (path) => {
|
|
26930
|
+
if (pickingFor !== null) setNewPrefix(pickingFor, path);
|
|
26931
|
+
setPickingFor(null);
|
|
26932
|
+
},
|
|
26933
|
+
onClose: () => {
|
|
26934
|
+
setPickingFor(null);
|
|
26935
|
+
}
|
|
26936
|
+
})
|
|
25378
26937
|
]
|
|
25379
26938
|
});
|
|
25380
26939
|
}
|
|
@@ -25635,7 +27194,7 @@ function ConflictsStage(props) {
|
|
|
25635
27194
|
}
|
|
25636
27195
|
/** 路径映射(phase=path-mapping)。 */
|
|
25637
27196
|
function PathMappingStage(props) {
|
|
25638
|
-
const { issues, mappings, onMappingsChange, onBack, onNext, t } = props;
|
|
27197
|
+
const { issues, mappings, onMappingsChange, onBack, onNext, t, api } = props;
|
|
25639
27198
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
25640
27199
|
className: config_manager_module_css_default.viewBody,
|
|
25641
27200
|
children: [
|
|
@@ -25650,7 +27209,8 @@ function PathMappingStage(props) {
|
|
|
25650
27209
|
issues,
|
|
25651
27210
|
initial: mappings,
|
|
25652
27211
|
t,
|
|
25653
|
-
onChange: onMappingsChange
|
|
27212
|
+
onChange: onMappingsChange,
|
|
27213
|
+
api
|
|
25654
27214
|
}),
|
|
25655
27215
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
25656
27216
|
className: config_manager_module_css_default.actionRow,
|
|
@@ -27162,7 +28722,8 @@ function ImportWizardBody({ api, t, uiT, onOpenForeignImport }) {
|
|
|
27162
28722
|
setPhase("preview");
|
|
27163
28723
|
},
|
|
27164
28724
|
onNext: finishPathMapping,
|
|
27165
|
-
t
|
|
28725
|
+
t,
|
|
28726
|
+
api
|
|
27166
28727
|
});
|
|
27167
28728
|
if (phase === "secrets" && step === "preview") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SecretsStage, {
|
|
27168
28729
|
missing: pendingSecretRequests(selectedPlan, decryptRefs),
|
|
@@ -28715,6 +30276,22 @@ function workdirBacklog(workDir) {
|
|
|
28715
30276
|
remoteSnapshots
|
|
28716
30277
|
};
|
|
28717
30278
|
}
|
|
30279
|
+
/**
|
|
30280
|
+
* 「这一步该按哪个方向」—— 动作行只留一个 primary(issue 115:两个按钮并排、首次使用看不出该按哪个)。
|
|
30281
|
+
*
|
|
30282
|
+
* 判定只用**已确证**的远端事实,没证据就回落下行:一键同步先拉远端再三方合并、逐项确认,
|
|
30283
|
+
* 不会拿本机默认值覆盖远端历史;上行推送才是产生新快照、改写远端历史的那个动作。
|
|
30284
|
+
* 唯一让上行成为 primary 的情形是「远端确证零快照」(git 工作副本自检 remoteSnapshots === 0):
|
|
30285
|
+
* 此时同步无事可做,用户要的就是第一次备份。判定入口收在本函数里(channel 一并传入),
|
|
30286
|
+
* 组件不用在调用点再判一次通道 —— 判据只有一处。
|
|
30287
|
+
*/
|
|
30288
|
+
function pickSyncPrimary(statusInfo, channel) {
|
|
30289
|
+
if (channel !== "git") return "sync";
|
|
30290
|
+
const backlog = workdirBacklog(statusInfo?.workDir);
|
|
30291
|
+
if (backlog.kind === "never-synced") return "push";
|
|
30292
|
+
if (backlog.kind === "clean" && backlog.remoteSnapshots === 0) return "push";
|
|
30293
|
+
return "sync";
|
|
30294
|
+
}
|
|
28718
30295
|
function formatSyncUrlPreview(url, max = 60) {
|
|
28719
30296
|
return url.slice(0, max);
|
|
28720
30297
|
}
|
|
@@ -33315,7 +34892,7 @@ function SyncPanel({ api, t, cmT }) {
|
|
|
33315
34892
|
className: config_manager_module_css_default.actionRow,
|
|
33316
34893
|
children: [
|
|
33317
34894
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Button, {
|
|
33318
|
-
variant: "primary",
|
|
34895
|
+
variant: pickSyncPrimary(state.statusInfo, channel) === "sync" ? "primary" : "ghost",
|
|
33319
34896
|
disabled: busy,
|
|
33320
34897
|
loading: state.busy === "sync",
|
|
33321
34898
|
onClick: () => {
|
|
@@ -33324,6 +34901,7 @@ function SyncPanel({ api, t, cmT }) {
|
|
|
33324
34901
|
children: state.busy === "sync" ? syncPhase === "preview" ? t("syncflow.checkingRemote") : t("syncflow.syncing") : t("syncflow.button")
|
|
33325
34902
|
}),
|
|
33326
34903
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Button, {
|
|
34904
|
+
variant: pickSyncPrimary(state.statusInfo, channel) === "push" ? "primary" : "ghost",
|
|
33327
34905
|
disabled: !computeSyncButtons(state.busy, ready, uiT).canPush || githubBusy || !hasSelectedSections(cs) || computeEncryptInvalid(cs),
|
|
33328
34906
|
onClick: () => {
|
|
33329
34907
|
switchChannel(channel);
|
|
@@ -40256,7 +41834,7 @@ function navigationSourcesOf(ctx) {
|
|
|
40256
41834
|
return {
|
|
40257
41835
|
workspace: asWorkspaceSource(safeGet("uiWorkspace")),
|
|
40258
41836
|
sessions: asSessionListSource(safeGet("sessions")),
|
|
40259
|
-
workspaces: asArchiveSource(safeGet("workspaces"))
|
|
41837
|
+
workspaces: asArchiveSource(safeGet("uiWorkspace")) ?? asArchiveSource(safeGet("workspaces"))
|
|
40260
41838
|
};
|
|
40261
41839
|
}
|
|
40262
41840
|
/**
|
|
@@ -47934,14 +49512,6 @@ function ConfigManagerSection({ api, syncApi, syncT, marketApi, myConfigsApi, ma
|
|
|
47934
49512
|
* 切页会重挂面板,忙态若存面板里会随切页蒸发。
|
|
47935
49513
|
*/
|
|
47936
49514
|
const [libraryPending, setLibraryPending] = (0, react.useState)(null);
|
|
47937
|
-
/**
|
|
47938
|
-
* 导入面板当前是否停在「从其它 agent 导入」这一页(t17)。
|
|
47939
|
-
*
|
|
47940
|
-
* 为什么是壳层 state 而不是 runStore:它与「导入面板」同生命周期,且**不该被持久化** ——
|
|
47941
|
-
* 刷新后重放一个「正在选来源」的界面只会骗人(来源检测结果要重新拉)。
|
|
47942
|
-
* 关面板 / 切走即随组件卸载归零,与 libraryAction 同一档语义。
|
|
47943
|
-
*/
|
|
47944
|
-
const [foreignImportOpen, setForeignImportOpen] = (0, react.useState)(false);
|
|
47945
49515
|
const [starPromptOpen, setStarPromptOpen] = (0, react.useState)(false);
|
|
47946
49516
|
/** 弹窗展示的 GitHub 仓库地址(GET /star-prompt 返回;不落 store) */
|
|
47947
49517
|
const starRepoUrl = (0, react.useRef)("");
|
|
@@ -48194,8 +49764,7 @@ function ConfigManagerSection({ api, syncApi, syncT, marketApi, myConfigsApi, ma
|
|
|
48194
49764
|
openTask("market", { subView: "myconfigs" });
|
|
48195
49765
|
return;
|
|
48196
49766
|
case "import.foreign":
|
|
48197
|
-
openTask("import");
|
|
48198
|
-
setForeignImportOpen(true);
|
|
49767
|
+
openTask("import", { foreign: true });
|
|
48199
49768
|
return;
|
|
48200
49769
|
case "maintenance.open":
|
|
48201
49770
|
openMaintenance();
|
|
@@ -48232,8 +49801,7 @@ function ConfigManagerSection({ api, syncApi, syncT, marketApi, myConfigsApi, ma
|
|
|
48232
49801
|
t,
|
|
48233
49802
|
syncT,
|
|
48234
49803
|
openForeignImport: () => {
|
|
48235
|
-
openTask("import");
|
|
48236
|
-
setForeignImportOpen(true);
|
|
49804
|
+
openTask("import", { foreign: true });
|
|
48237
49805
|
}
|
|
48238
49806
|
});
|
|
48239
49807
|
break;
|
|
@@ -48415,23 +49983,31 @@ function ConfigManagerSection({ api, syncApi, syncT, marketApi, myConfigsApi, ma
|
|
|
48415
49983
|
api,
|
|
48416
49984
|
t
|
|
48417
49985
|
}),
|
|
48418
|
-
activeTask.kind === "import" && (
|
|
49986
|
+
activeTask.kind === "import" && (importTaskForeign(activeTask.payload) ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ForeignImportView, {
|
|
48419
49987
|
api,
|
|
48420
49988
|
t,
|
|
48421
49989
|
uiT,
|
|
48422
49990
|
onReady: (result) => {
|
|
48423
|
-
|
|
48424
|
-
|
|
48425
|
-
|
|
48426
|
-
|
|
48427
|
-
|
|
49991
|
+
runStore.patch({
|
|
49992
|
+
task: {
|
|
49993
|
+
...activeTask,
|
|
49994
|
+
payload: { foreign: false }
|
|
49995
|
+
},
|
|
49996
|
+
library: { pendingZip: {
|
|
49997
|
+
zipPath: result.zipPath,
|
|
49998
|
+
name: result.name
|
|
49999
|
+
} }
|
|
50000
|
+
});
|
|
48428
50001
|
}
|
|
48429
50002
|
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ImportWizardView, {
|
|
48430
50003
|
api,
|
|
48431
50004
|
t,
|
|
48432
50005
|
uiT,
|
|
48433
50006
|
onOpenForeignImport: () => {
|
|
48434
|
-
|
|
50007
|
+
runStore.patch({ task: {
|
|
50008
|
+
...activeTask,
|
|
50009
|
+
payload: { foreign: true }
|
|
50010
|
+
} });
|
|
48435
50011
|
}
|
|
48436
50012
|
})),
|
|
48437
50013
|
activeTask.kind === "market" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MarketPanel, {
|
|
@@ -48559,6 +50135,18 @@ function marketTaskSubView(payload) {
|
|
|
48559
50135
|
const v = payload.subView;
|
|
48560
50136
|
return v === "myconfigs" || v === "browse" ? v : void 0;
|
|
48561
50137
|
}
|
|
50138
|
+
/**
|
|
50139
|
+
* Task 入参里取「导入面板停在来源选择」(t17「从其它 agent 导入」)。
|
|
50140
|
+
*
|
|
50141
|
+
* 为什么放进 Task 入参而不是壳层 useState(原 bug 的根因):壳层 state 与「导入面板」**不同**
|
|
50142
|
+
* 生命周期 —— 关面板只是 `task: null`,壳层不重挂,于是「先点从其它 agent 导入 → 关掉 → 再点导入」
|
|
50143
|
+
* 会带着旧的 true 进来,看到的是来源选择页而不是导入向导。入参随 Task 一起生灭(且 Task 本身
|
|
50144
|
+
* 不持久化,见 run-store 的 `task: null`),开一个**新的**导入面板自然就是向导。
|
|
50145
|
+
*/
|
|
50146
|
+
function importTaskForeign(payload) {
|
|
50147
|
+
if (typeof payload !== "object" || payload === null) return false;
|
|
50148
|
+
return payload.foreign === true;
|
|
50149
|
+
}
|
|
48562
50150
|
function marketTaskItemId(payload) {
|
|
48563
50151
|
if (typeof payload !== "object" || payload === null) return void 0;
|
|
48564
50152
|
const id = payload.marketId;
|
|
@@ -51839,7 +53427,12 @@ function apply(ctx) {
|
|
|
51839
53427
|
const readLanguage = () => ctx.locale.getLocale().active;
|
|
51840
53428
|
setUiLanguageSource(readLanguage);
|
|
51841
53429
|
const uiT = makeLiveUiT(readLanguage);
|
|
51842
|
-
const api = new ConfigManagerApi(uiT
|
|
53430
|
+
const api = new ConfigManagerApi(uiT, makeDshDirectoryPicker({
|
|
53431
|
+
get desktop() {
|
|
53432
|
+
return globalThis.__DSH_DIRECTORY_PICKER__;
|
|
53433
|
+
},
|
|
53434
|
+
getService: (name) => ctx.get(name)
|
|
53435
|
+
}));
|
|
51843
53436
|
const syncT = ctx.locale.bind(SYNC_NS);
|
|
51844
53437
|
const syncApi = new SyncApi(uiT);
|
|
51845
53438
|
const marketT = ctx.locale.bind(MARKET_NS);
|