dshmarket 1.11.2 → 1.12.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/README.md +10 -2
- package/README.zh.md +11 -2
- package/client/client.js +206 -124
- package/client/client.js.map +1 -1
- package/lib/hot.js +8 -2
- package/lib/index.js +6 -0
- package/lib/patch.js +7 -19
- package/lib/profile.js +32 -16
- package/lib/routes.js +42 -3
- package/lib/settings.js +51 -0
- package/lib/types/profile.d.ts +19 -0
- package/lib/types/settings.d.ts +45 -0
- package/lib/verify.js +24 -2
- package/package.json +14 -5
- package/src/client/Market.module.css +20 -1
- package/src/client/MarketSection.tsx +9 -1
- package/src/client/SettingsCard.tsx +96 -0
- package/src/client/index.ts +28 -0
- package/src/client/locales.ts +8 -0
- package/src/hot.ts +8 -2
- package/src/index.ts +6 -0
- package/src/patch.ts +7 -15
- package/src/profile.ts +34 -16
- package/src/routes.ts +42 -3
- package/src/settings.ts +67 -0
- package/src/verify.ts +24 -2
package/README.md
CHANGED
|
@@ -25,9 +25,15 @@ dsh plugin --profile web add dshmarket
|
|
|
25
25
|
|
|
26
26
|
Restart `dsh web`, then open **Settings → Plugin Market**.
|
|
27
27
|
|
|
28
|
+
**Requires dsh web 0.1.0-rc.6 or newer.** On an older host the market
|
|
29
|
+
disables itself and says so in the browser console rather than rendering
|
|
30
|
+
against primitives that are not there — if the Plugin Market entry never
|
|
31
|
+
appears, that is usually why. Worth checking when a desktop build bundles
|
|
32
|
+
its own dsh: it may be older than the one `npm` would give you (#139).
|
|
33
|
+
|
|
28
34
|
## What you get
|
|
29
35
|
|
|
30
|
-
- **Browse & search** the full community catalog (
|
|
36
|
+
- **Browse & search** the full community catalog (1250+ plugins, growing daily) — category filters, star counts, top/new sorting, bilingual descriptions that follow your UI language
|
|
31
37
|
- **Screenshots** — AppStore-style screenshots in the install dialog: author-curated via the registry, with automatic README extraction as fallback; images load from GitHub hosting only, and only after you open the dialog
|
|
32
38
|
- **Themes** — a dedicated tab for community themes and skins: install → active immediately, switch with one click (themes are mutually exclusive, your choice survives restarts), uninstall to revert
|
|
33
39
|
- **One-click install** — confirm the source, watch live progress; most plugins go live after a page refresh, no restart
|
|
@@ -37,9 +43,11 @@ Restart `dsh web`, then open **Settings → Plugin Market**.
|
|
|
37
43
|
- **Hot disable / enable** — toggles write `- id: …` + `disabled: true|false` into the profile's `cordis.patch.yml` (the official patch layer, mechanism ported from [dsh-plugin-hub](https://github.com/Noob-stupid/dsh-plugin-hub)): DSH's HMR re-composes within ~1s, no restart, and the loader re-applies the choice on every boot; hand-edited patch rows show as badges, host-infrastructure plugins are protected from toggling, and a malformed patch file is never made worse
|
|
38
44
|
- **Restart when needed** — changes that cannot hot-load show a one-click restart beside the pending-change banner; the action is restricted to same-origin loopback requests
|
|
39
45
|
- **Zero jargon** — if a component is missing (pnpm), the market detects it and offers a one-click automatic setup
|
|
40
|
-
- **Log export** — one click produces a sanitized plain-text log for bug reports (home paths and credential shapes are masked; nothing is ever sent anywhere)
|
|
46
|
+
- **Log export** — one click produces a sanitized plain-text log for bug reports (home paths and credential shapes are masked; nothing is ever sent anywhere). The market's version sits next to the page heading, so a screenshot of a problem already carries it
|
|
47
|
+
- **Settings card** — on dsh 0.1.0-rc.7 and newer the market puts its own option (whether one-click restart is allowed) on **Settings → Plugins → Plugin configuration**, so a host owned by systemd, launchd or pm2 is a switch rather than a hand-edited YAML line
|
|
41
48
|
- **Diagnostics** — the plugin load order and conflict surface, one page: bundle stack with official/community badges, duplicate loader entries, dependency version mismatches, multi-version core packages, overrides and invalid config entries. Plain-language terms, problem blocks highlighted, everything collapsible
|
|
42
49
|
|
|
50
|
+
- **Load order** — drag community bundles into the order you want, or take the suggested one derived from the plugins' own before/after rules. Nothing is written until a trial composition passes, and the panel tells you what the new order would change (overrides, invalid or duplicate entries) before you apply it
|
|
43
51
|
- **AI fix** — one click copies a diagnostics-driven fix prompt (errors/warnings/order conflicts + conservative scope instructions) to the clipboard; you paste it into a new conversation and decide whether to send
|
|
44
52
|
|
|
45
53
|
## Speed
|
package/README.zh.md
CHANGED
|
@@ -25,18 +25,27 @@ dsh plugin --profile web add dshmarket
|
|
|
25
25
|
|
|
26
26
|
重启 `dsh web`,打开 **设置 → 插件市场**。
|
|
27
27
|
|
|
28
|
+
**需要 dsh web 0.1.0-rc.6 或更新版本。** 宿主太旧时市场会自我禁用,并在浏览器
|
|
29
|
+
控制台说明原因,而不是拿缺失的原语去渲染——如果设置里根本没出现「插件市场」这
|
|
30
|
+
一项,通常就是这个原因。桌面端要留意:它可能内置了比 `npm` 装到的更旧的 dsh(#139)。
|
|
31
|
+
|
|
28
32
|
## 你会得到
|
|
29
33
|
|
|
30
|
-
- **逛与搜**——完整社区目录(
|
|
34
|
+
- **逛与搜**——完整社区目录(1250+ 插件,每天在涨),分类筛选、star 数、最热/最新排序,中英描述跟随界面语言
|
|
31
35
|
- **截图展示**——安装弹窗内 App Store 式截图:作者可在 registry 里策展,没有则自动从 README 抽取;图片仅从 GitHub 图床加载,且只在你打开弹窗后才发请求
|
|
32
36
|
- **主题**——独立主题页:装完立即生效,点一下切换(主题互斥、选择跨重启保留),卸载即恢复
|
|
33
37
|
- **一键安装**——确认来源,实时进度;多数插件刷新页面即可用,无需重启
|
|
34
38
|
- **备份与恢复**——把 profile 的插件清单与配置导出为可读 JSON,换机导入,存到 WebDAV 并每日自动备份,或通过私有 GitHub Gist 跨机器同步;恢复采用**合并**方式(备份之后新装的插件会保留),写入前校验、失败自动回滚
|
|
35
39
|
- **更新**——逐插件检测(npm 版本或锁定 commit 对比 HEAD),一键更新或全部更新;市场自己也走同一通道升级
|
|
36
40
|
- **卸载**——两步确认防误触;本次会话装的插件即点即卸
|
|
41
|
+
- **热禁用 / 启用**——开关会往 profile 的 `cordis.patch.yml`(官方补丁层,机制移植自 [dsh-plugin-hub](https://github.com/Noob-stupid/dsh-plugin-hub))写入 `- id: …` + `disabled: true|false`:DSH 的 HMR 约 1 秒内重新组合,无需重启,loader 每次启动都会重新应用这个选择;手工改过的补丁行会显示成徽标,宿主基础设施插件禁止开关,补丁文件格式不对时绝不会被写得更糟
|
|
37
42
|
- **按需重启**——无法热加载的变更会在待重启提示旁显示一键重启;操作仅接受本机同源请求
|
|
38
43
|
- **零术语**——缺组件(pnpm)时市场自己发现、一键自动装好,全程不见命令行
|
|
39
|
-
- **导出日志**——一键生成脱敏纯文本日志方便反馈(home
|
|
44
|
+
- **导出日志**——一键生成脱敏纯文本日志方便反馈(home 路径与密钥形状已打码;任何数据都不会被上传)。市场版本号就在标题旁边,截图反馈时自带版本信息
|
|
45
|
+
- **设置卡片**——dsh 0.1.0-rc.7 起,市场把自己的选项(是否允许一键重启)放到 **设置 → 插件 → 插件配置** 里。宿主由 systemd / launchd / pm2 托管时,这就是一个开关,不用再手改 YAML
|
|
46
|
+
- **诊断**——插件加载顺序与冲突一页看全:bundle 栈(官方/社区徽标)、重复的 loader 条目、依赖版本不一致、核心包多版本共存、覆盖项与非法配置条目。术语说人话,问题块高亮,全部可折叠
|
|
47
|
+
- **加载顺序**——拖拽调整社区 bundle 的顺序,或直接采用按插件自身 before/after 规则推导出的建议顺序。写入前先跑一次静态组合校验,通过才落盘;应用之前面板会告诉你这个顺序会改变什么(多少处覆盖、多少无效或重复条目)
|
|
48
|
+
- **AI 修复**——一键把诊断结果生成的修复 prompt(错误/警告/顺序冲突 + 保守的改动范围约束)复制到剪贴板,你粘进新对话,自己决定发不发
|
|
40
49
|
|
|
41
50
|
## 速度
|
|
42
51
|
|
package/client/client.js
CHANGED
|
@@ -34,6 +34,10 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
34
34
|
/** zh/en dictionaries for the Market settings section and install toast. */
|
|
35
35
|
const zh = {
|
|
36
36
|
nav: "插件市场",
|
|
37
|
+
setCardDesc: "控制市场能否重启宿主进程。",
|
|
38
|
+
setAllowRestart: "允许一键重启",
|
|
39
|
+
setAllowRestartHint: "关掉之后市场不再重启宿主,只提示有待生效的变更。如果 DSH 由 systemd / launchd / pm2 托管,应该关掉——重启该由它们负责。",
|
|
40
|
+
setRevert: "恢复默认",
|
|
37
41
|
versionHint: "插件市场版本 — 反馈问题时请把它一起截图",
|
|
38
42
|
subtitle: "发现社区为 DeepSeek Harness 打造的能力",
|
|
39
43
|
searchPh: "搜索插件,比如:通知、终端、记忆…",
|
|
@@ -313,6 +317,10 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
313
317
|
};
|
|
314
318
|
const en = {
|
|
315
319
|
nav: "Plugin Market",
|
|
320
|
+
setCardDesc: "Whether the market may relaunch the host process.",
|
|
321
|
+
setAllowRestart: "Allow one-click restart",
|
|
322
|
+
setAllowRestartHint: "With this off the market never relaunches the host; it only reports that changes are pending. Turn it off when systemd, launchd or pm2 owns the process — restarting is theirs to do.",
|
|
323
|
+
setRevert: "Revert to default",
|
|
316
324
|
versionHint: "Plugin market version — include it when reporting an issue",
|
|
317
325
|
subtitle: "Discover community plugins for DeepSeek Harness",
|
|
318
326
|
searchPh: "Search plugins: notify, terminal, memory…",
|
|
@@ -909,7 +917,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
909
917
|
}
|
|
910
918
|
//#endregion
|
|
911
919
|
//#region \0dsh-css:src/client/Market.module.css.mjs
|
|
912
|
-
const css = ".eGUBIq_root{min-width:0;height:100%;color:var(--dsw-alias-label-primary,#1f2328);flex-direction:column;display:flex;position:relative}.eGUBIq_head{flex-direction:column;gap:12px;padding:4px 4px 12px;display:flex}.eGUBIq_title{margin:0;font-size:16px;font-weight:500;line-height:24px}.eGUBIq_sub{color:var(--dsw-alias-label-tertiary,#8b93a1);align-items:center;gap:8px;margin:0;font-size:14px;line-height:22px;display:flex}.eGUBIq_tabs{border-bottom:1px solid var(--dsw-alias-border-l2,#e5e7eb);align-items:flex-end;gap:2px;display:flex}.eGUBIq_tab{font:inherit;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;padding:7px 12px;font-size:13px}.eGUBIq_tab.eGUBIq_on{color:var(--dsw-alias-brand-primary,#4f6ef7);border-bottom-color:var(--dsw-alias-brand-primary,#4f6ef7);font-weight:600}.eGUBIq_banner{background:var(--dsw-alias-bg-layer-2,#fdf3e3);border:1px solid var(--dsw-alias-border-l2,#f3e3c3);border-radius:8px;align-items:center;gap:8px;margin:0;padding:8px 12px;font-size:12px;display:flex}.eGUBIq_bannerIcon{color:var(--dsw-alias-label-secondary,#6b7280);flex-shrink:0}.eGUBIq_bannerHint{color:var(--dsw-alias-label-tertiary,#8b93a1);cursor:help;display:inline-flex}.eGUBIq_body{flex:1;padding:12px 4px 24px;overflow-x:hidden;overflow-y:auto}.eGUBIq_cats{z-index:5;background:var(--dsw-alias-bg-layer-2,#f7f8fa);margin:-12px -4px 2px;padding:12px 4px 4px;position:sticky;top:-13px}.eGUBIq_catsRow{align-items:flex-start;gap:8px;display:flex;position:relative}.eGUBIq_star{color:var(--dsw-alias-label-secondary,#9ca3af);font-size:11px}.eGUBIq_top{z-index:20;display:inline-flex;position:absolute;bottom:18px;right:18px}.eGUBIq_topBtn{border-radius:99px;width:38px;height:38px;padding:0}.eGUBIq_tag{border:1px solid var(--dsw-alias-border-l3,#d9dde3);color:var(--dsw-alias-label-secondary,#6b7280);border-radius:4px;flex-shrink:0;padding:1px 6px;font-size:11px;line-height:16px}.eGUBIq_okState{color:var(--dsw-alias-state-success-primary,#16a34a);white-space:nowrap;font-size:12px;font-weight:600}.eGUBIq_catsWrap{flex-wrap:wrap;flex:1;align-items:center;gap:6px;min-width:0;display:flex}.eGUBIq_catsCollapsed{max-height:62px;overflow:hidden}.eGUBIq_catsToggle.eGUBIq_catsToggle{height:26px;min-height:26px;color:var(--dsw-alias-label-secondary,#6b7280);padding:0 6px}.eGUBIq_shots{-webkit-overflow-scrolling:touch;scrollbar-width:thin;gap:8px;margin:0 0 8px;padding:2px 0 6px;display:flex;overflow-x:auto}.eGUBIq_shot{object-fit:cover;border:1px solid var(--dsw-alias-border-default,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f3f4f6);border-radius:8px;flex:none;max-width:260px;height:150px}.eGUBIq_cmd{background:var(--dsw-alias-bg-layer-2,#f3f4f6);word-break:break-all;border-radius:6px;margin:8px 0 0;padding:8px 10px;font-family:ui-monospace,Menlo,monospace;font-size:11px;line-height:18px}.eGUBIq_warnLine{color:var(--dsw-alias-state-warn-primary,#b45309);align-items:center;gap:4px;margin:0;font-size:12px;font-weight:600;line-height:18px;display:flex}.eGUBIq_modalNote{color:var(--dsw-alias-label-tertiary,#8b93a1);align-items:center;gap:4px;margin:12px 0 0;font-size:12px;line-height:18px;display:flex}.eGUBIq_grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;display:grid}.eGUBIq_swatches{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:8px;gap:0;height:34px;display:flex;overflow:hidden}.eGUBIq_themesGrid{margin-bottom:12px}.eGUBIq_swatches i{flex:1}.eGUBIq_card{background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:12px;flex-direction:column;gap:12px;padding:12px 14px;display:flex}.eGUBIq_row1{align-items:center;gap:10px;min-width:0;display:flex}.eGUBIq_srcBtn{flex-shrink:0;align-self:flex-start}.eGUBIq_av{color:#fff;object-fit:cover;background:var(--dsw-alias-bg-layer-2,#f3f4f6);border-radius:8px;flex-shrink:0;place-items:center;width:32px;height:32px;font-size:14px;font-weight:700;display:grid}.eGUBIq_nm{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:500;line-height:22px;overflow:hidden}.eGUBIq_owner{color:var(--dsw-alias-label-secondary,#9ca3af);font-size:11px}.eGUBIq_desc{color:var(--dsw-alias-label-tertiary,#8b93a1);min-height:36px;margin:0;font-size:12px;line-height:18px}.eGUBIq_foot{align-items:center;gap:8px;margin-top:auto;display:flex}.eGUBIq_grow{flex:1}.eGUBIq_titleRow{align-items:center;gap:10px;display:flex}.eGUBIq_version{color:var(--dsw-alias-label-tertiary,#8b93a1);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:12px;line-height:20px}.eGUBIq_descTight{min-height:0}.eGUBIq_src{color:var(--dsw-alias-label-secondary,#9ca3af);font-size:11px;text-decoration:none}.eGUBIq_src:hover{color:var(--dsw-alias-brand-primary,#4f6ef7)}.eGUBIq_dot{vertical-align:2px;margin-left:5px}.eGUBIq_act{flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;font-size:11px;display:flex}.eGUBIq_actLive{color:var(--dsw-alias-state-success-primary,#16a34a);align-items:center;gap:4px;font-weight:600;display:inline-flex}.eGUBIq_actWarn{color:var(--dsw-alias-state-warn-primary,#b45309);align-items:center;gap:4px;font-weight:600;display:inline-flex}.eGUBIq_actBroken{color:var(--dsw-alias-state-error-primary,#dc2626);align-items:center;gap:4px;font-weight:600;display:inline-flex}.eGUBIq_actWhy{color:var(--dsw-alias-label-secondary,#6b7280);margin-top:2px}.eGUBIq_loading{color:var(--dsw-alias-label-secondary,#9ca3af);flex-direction:column;align-items:center;gap:12px;padding:48px;font-size:13px;display:flex}.eGUBIq_spin{color:var(--dsw-alias-brand-primary,#4f6ef7);flex-shrink:0;animation:.8s linear infinite eGUBIq_sp;display:inline-flex}@keyframes eGUBIq_sp{to{transform:rotate(360deg)}}.eGUBIq_progress{background:var(--dsw-alias-bg-layer-2,#f3f4f6);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);color:var(--dsw-alias-label-secondary,#6b7280);border-radius:8px;flex-wrap:wrap;align-items:center;gap:9px;margin:0;padding:8px 12px;font-size:12px;display:flex}.eGUBIq_bar{background:var(--dsw-alias-border-l1,#e5e7eb);border-radius:99px;width:100%;height:4px;overflow:hidden}.eGUBIq_barFill{background:var(--dsw-alias-brand-primary,#4f6ef7);border-radius:99px;height:100%;transition:width .6s}.eGUBIq_barWave{width:30%;animation:1.2s ease-in-out infinite eGUBIq_dshmSlide}@keyframes eGUBIq_dshmSlide{0%{margin-left:-30%}to{margin-left:100%}}.eGUBIq_irow .eGUBIq_progress{margin-top:8px}.eGUBIq_progress code{text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,Menlo,monospace;font-size:11px;overflow:hidden}.eGUBIq_empty{color:var(--dsw-alias-label-secondary,#9ca3af);text-align:center;padding:32px;font-size:13px}.eGUBIq_err{color:var(--dsw-alias-state-error-primary,#dc2626);white-space:pre-wrap;word-break:break-all;margin:8px 0;font-size:12px}.eGUBIq_irow{background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:12px;align-items:center;gap:10px;margin-bottom:8px;padding:12px 14px;display:flex}.eGUBIq_irowMissing{filter:grayscale();opacity:.5}.eGUBIq_irow>.eGUBIq_src,.eGUBIq_irow>.eGUBIq_owner,.eGUBIq_irow button{white-space:nowrap;flex-shrink:0}.eGUBIq_tabSearchRow{padding:0 4px 10px;display:flex}.eGUBIq_tabSearch{width:260px}.eGUBIq_spec{color:var(--dsw-alias-label-secondary,#9ca3af);overflow-wrap:anywhere;min-width:0;font-family:ui-monospace,Menlo,monospace;font-size:11px}.eGUBIq_specTag{white-space:nowrap;border-radius:4px;flex-shrink:0;align-items:center;height:16px;padding:0 5px;font-size:10px;font-weight:600;display:inline-flex}.eGUBIq_specTagGit{color:#0b7285;background:#12a3c41f}.eGUBIq_specTagFile{color:#b07d1b;background:#f0b42924}.eGUBIq_backupCheckList .eGUBIq_grow{white-space:nowrap;text-overflow:ellipsis;flex:70%;min-width:0;overflow:hidden}.eGUBIq_backupCheckList .eGUBIq_spec{text-align:right;white-space:nowrap;text-overflow:ellipsis;flex:0 30%;max-width:30%;overflow:hidden}.eGUBIq_staleAction{margin-top:8px}.eGUBIq_pct{color:var(--dsw-alias-label-secondary,#6b7280);flex-shrink:0;font-size:11px;font-weight:600}.eGUBIq_pager{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin:16px 0 4px;display:flex}.eGUBIq_pagerPages{flex-wrap:wrap;flex:1;justify-content:center;align-items:center;gap:6px;min-width:0;display:flex}.eGUBIq_pageEllipsis{color:var(--dsw-alias-label-secondary,#9ca3af);padding:0 2px;font-size:12px}.eGUBIq_pageInfo{color:var(--dsw-alias-label-secondary,#6b7280);white-space:nowrap;font-size:12px}.eGUBIq_depBadge{border:1px solid var(--dsw-alias-state-warn-primary,#b45309);color:var(--dsw-alias-state-warn-primary,#b45309);white-space:nowrap;border-radius:4px;flex-shrink:0;margin-left:6px;padding:1px 6px;font-size:11px;font-weight:600;line-height:16px}.eGUBIq_deprecate{color:var(--dsw-alias-state-warn-primary,#b45309);background:var(--dsw-alias-bg-layer-2,#fdf3e3);border:1px solid var(--dsw-alias-border-l2,#f3e3c3);border-radius:8px;margin:0;padding:8px 10px;font-size:12px;line-height:18px}.eGUBIq_deprecate a{color:var(--dsw-alias-state-warn-primary,#b45309);text-decoration:underline}.eGUBIq_deprecate .eGUBIq_src{margin-left:8px}.eGUBIq_depLine{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.eGUBIq_switch{border:1px solid var(--dsw-alias-border-l2,#d9dde3);background:var(--dsw-alias-bg-layer-2,#e5e7eb);cursor:pointer;border-radius:99px;flex-shrink:0;width:38px;height:22px;padding:0;transition:background .15s,border-color .15s;position:relative}.eGUBIq_switchOn{background:var(--dsw-alias-state-success-primary,#16a34a);border-color:var(--dsw-alias-state-success-primary,#16a34a)}.eGUBIq_switchMixed{background:var(--dsw-alias-state-warn-primary,#b45309);border-color:var(--dsw-alias-state-warn-primary,#b45309)}.eGUBIq_switchKnob{background:#fff;border-radius:99px;width:16px;height:16px;transition:left .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #00000040}.eGUBIq_switchOn .eGUBIq_switchKnob,.eGUBIq_switchMixed .eGUBIq_switchKnob{left:18px}.eGUBIq_switch:disabled{opacity:.5;cursor:default}.eGUBIq_viewBar{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:8px;align-items:center;gap:2px;width:fit-content;margin-bottom:12px;padding:2px;display:flex}.eGUBIq_viewBtn{font:inherit;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:6px;padding:4px 10px;font-size:12px;line-height:18px}.eGUBIq_viewBtn:hover{color:var(--dsw-alias-brand-primary,#4f6ef7)}.eGUBIq_viewOn{background:var(--dsw-alias-bg-layer-2,#eef0f4);color:var(--dsw-alias-label-primary,#1f2328);font-weight:600}.eGUBIq_groupRow{background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:12px;margin-bottom:10px;padding:12px 14px}.eGUBIq_groupHead{align-items:center;gap:10px;min-width:0;display:flex}.eGUBIq_groupName{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;line-height:20px;overflow:hidden}.eGUBIq_groupActions{flex-shrink:0;align-items:center;gap:6px;display:flex}.eGUBIq_groupMembers{flex-direction:column;gap:6px;margin-top:10px;display:flex}.eGUBIq_groupMember{background:var(--dsw-alias-bg-layer-2,#f7f8fa);border-radius:8px;align-items:center;gap:8px;padding:6px 8px;font-size:12px;line-height:18px;display:flex}.eGUBIq_groupMember .eGUBIq_nm{flex:1;min-width:0;font-size:12px}.eGUBIq_groupAddPanel{border-top:1px dashed var(--dsw-alias-border-l2,#e5e7eb);flex-direction:column;gap:6px;margin-top:10px;padding-top:10px;display:flex}.eGUBIq_groupCreate{align-items:center;gap:8px;margin-bottom:10px;display:flex}.eGUBIq_inlineInput{flex:1;min-width:120px}.eGUBIq_assignRow{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.eGUBIq_assignSelect{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);background:var(--dsw-alias-bg-layer-1,#fff);color:var(--dsw-alias-label-primary,#1f2328);font:inherit;border-radius:6px;padding:3px 6px;font-size:12px;line-height:18px}.eGUBIq_groupHint{color:var(--dsw-alias-label-tertiary,#8b93a1);font-size:11px}.eGUBIq_sectAction{color:var(--dsw-alias-label-secondary,#6b7280);align-items:center;gap:8px;margin:14px 2px 8px;font-size:12px;font-weight:600;display:flex}.eGUBIq_backupGrid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;display:grid}.eGUBIq_backupCard{background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:12px;flex-direction:column;gap:10px;padding:16px;display:flex}.eGUBIq_backupCard h3{margin:0;font-size:14px}.eGUBIq_backupCard p{color:var(--dsw-alias-label-secondary,#6b7280);margin:0;font-size:12px;line-height:18px}.eGUBIq_backupActions{flex-wrap:wrap;gap:8px;display:flex;position:relative}.eGUBIq_hiddenFile{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.eGUBIq_backupInput{box-sizing:border-box;width:100%}.eGUBIq_backupCheck{cursor:pointer;align-items:center;gap:6px;font-size:12px;display:flex}.eGUBIq_backupWarn{margin:0;font-size:12px;line-height:18px;color:var(--dsw-alias-state-warn-primary,#b45309)!important}.eGUBIq_backupMessage{color:var(--dsw-alias-label-secondary,#6b7280);grid-column:1/-1;font-size:12px}.eGUBIq_backupCheckList{flex-direction:column;gap:6px;max-height:260px;margin:10px 0 4px;padding-right:4px;display:flex;overflow-y:auto}.eGUBIq_backupCheckList .eGUBIq_backupCheck{justify-content:space-between;gap:8px}.eGUBIq_diagPage{flex-direction:column;gap:12px;height:100%;min-height:0;display:flex;overflow-y:auto}.eGUBIq_diagSummary{background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:12px;flex-wrap:wrap;align-items:center;gap:12px;padding:10px 14px;font-size:12px;display:flex}.eGUBIq_diagSummaryItem{color:var(--dsw-alias-label-secondary,#6b7280);white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.eGUBIq_diagSummaryMeta{color:var(--dsw-alias-label-tertiary,#9ca3af);text-overflow:ellipsis;white-space:nowrap;max-width:320px;font-family:ui-monospace,Menlo,monospace;font-size:11px;overflow:hidden}.eGUBIq_diagSection{background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:12px;flex-direction:column;gap:8px;padding:12px 14px;display:flex}.eGUBIq_diagSection h3{color:var(--dsw-alias-label-primary,#1f2328);margin:0;font-size:13px;font-weight:600}.eGUBIq_diagCount{color:var(--dsw-alias-label-tertiary,#9ca3af);font-size:11px;font-weight:400}.eGUBIq_diagEmpty{color:var(--dsw-alias-label-secondary,#9ca3af);padding:8px 0;font-size:12px}.eGUBIq_diagBundle{border-top:1px solid var(--dsw-alias-border-l2,#f0f1f3);flex-direction:column;gap:6px;padding-top:8px;display:flex}.eGUBIq_diagBundle:first-of-type{border-top:none;padding-top:0}.eGUBIq_diagRow{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;font-size:12px;line-height:18px;display:flex}.eGUBIq_diagMeta{align-items:baseline;gap:8px;min-width:0;font-size:12px;display:flex}.eGUBIq_diagKey{color:var(--dsw-alias-label-tertiary,#9ca3af);flex-shrink:0;min-width:64px;font-size:11px}.eGUBIq_diagVal{color:var(--dsw-alias-label-primary,#1f2328);overflow-wrap:anywhere;min-width:0;font-family:ui-monospace,Menlo,monospace;font-size:12px;font-weight:500}.eGUBIq_diagIndex{background:var(--dsw-alias-bg-layer-2,#f3f4f6);min-width:18px;height:18px;color:var(--dsw-alias-label-secondary,#6b7280);border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;font-size:11px;font-weight:600;display:inline-flex}.eGUBIq_diagArrow{color:var(--dsw-alias-label-tertiary,#9ca3af);flex-shrink:0;font-size:12px}.eGUBIq_diagBadgeOfficial{background:var(--dsw-alias-brand-primary,#4f6ef7);color:#fff;border-radius:9px;flex-shrink:0;align-items:center;height:18px;padding:0 8px;font-size:11px;font-weight:600;display:inline-flex}.eGUBIq_diagBadgeCommunity{background:var(--dsw-alias-bg-layer-2,#f3f4f6);height:18px;color:var(--dsw-alias-label-secondary,#6b7280);border-radius:9px;flex-shrink:0;align-items:center;padding:0 8px;font-size:11px;display:inline-flex}.eGUBIq_diagBadgeShadow{background:var(--dsw-alias-state-error-primary,#dc2626);color:#fff;border-radius:9px;flex-shrink:0;align-items:center;height:18px;padding:0 8px;font-size:11px;font-weight:600;display:inline-flex}.eGUBIq_diagList{flex-direction:column;gap:6px;display:flex}.eGUBIq_sectionOverview{color:var(--dsw-alias-label-tertiary,#8b93a1);text-overflow:ellipsis;white-space:nowrap;max-width:100%;padding:2px 0 6px;font-size:12px;line-height:18px;overflow:hidden}.eGUBIq_diagAlert{color:var(--dsw-alias-state-warn-primary,#b45309)}.eGUBIq_ovRow{background:var(--dsw-alias-bg-layer-2,#f7f8fa);border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;min-width:0;padding:6px 10px;font-size:12px;line-height:18px;display:flex}.eGUBIq_ovArrow{color:var(--dsw-alias-label-tertiary,#9ca3af);flex-shrink:0;font-size:12px}.eGUBIq_ovByTag{background:var(--dsw-alias-brand-primary,#4f6ef7);color:#fff;text-overflow:ellipsis;white-space:nowrap;border-radius:9px;flex-shrink:0;align-items:center;max-width:260px;height:18px;padding:0 8px;font-size:11px;font-weight:600;display:inline-flex;overflow:hidden}.eGUBIq_ovFrom{color:var(--dsw-alias-label-secondary,#6b7280);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12px;overflow:hidden}.eGUBIq_orphRow{background:var(--dsw-alias-bg-layer-2,#f7f8fa);border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;min-width:0;padding:6px 10px;font-size:12px;line-height:18px;display:flex}.eGUBIq_orphBadge{background:var(--dsw-alias-state-warn-primary,#b45309);color:#fff;white-space:nowrap;border-radius:9px;flex-shrink:0;align-items:center;height:18px;padding:0 8px;font-size:11px;font-weight:600;display:inline-flex}.eGUBIq_dragHandle{width:20px;height:20px;color:var(--dsw-alias-label-tertiary,#9ca3af);cursor:grab;-webkit-user-select:none;user-select:none;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;line-height:20px;display:inline-flex}.eGUBIq_dragOver{outline:2px dashed var(--dsw-alias-brand-primary,#4f6ef7);outline-offset:2px;background:var(--dsw-alias-bg-layer-2,#f0f2f8);border-radius:8px}.eGUBIq_dragging{opacity:.45;background:var(--dsw-alias-bg-layer-2,#f3f4f6)}.eGUBIq_collapseHead{font:inherit;color:var(--dsw-alias-label-primary,#1f2328);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:8px;width:100%;padding:0;font-size:13px;font-weight:600;display:flex}.eGUBIq_collapseIcon{color:var(--dsw-alias-label-secondary,#6b7280);flex-shrink:0;display:inline-flex}.eGUBIq_collapseTitle{flex:1;min-width:0}.eGUBIq_collapseBody{border-top:1px solid var(--dsw-alias-border-l2,#f0f1f3);overflow-wrap:anywhere;flex-direction:column;gap:10px;min-width:0;margin-top:8px;padding-top:10px;display:flex}.eGUBIq_panelNote{color:var(--dsw-alias-label-secondary,#6b7280);margin:0;font-size:12px;line-height:18px}.eGUBIq_fixFallback{flex-direction:column;gap:6px;margin:8px 0;display:flex}.eGUBIq_fixFallbackText{box-sizing:border-box;width:100%;color:var(--dsw-alias-label-primary,#1f2328);background:var(--dsw-alias-bg-layer-2,#f3f4f6);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);resize:vertical;white-space:pre-wrap;word-break:break-all;border-radius:6px;padding:8px 10px;font-family:ui-monospace,Menlo,monospace;font-size:11px;line-height:16px}";
|
|
920
|
+
const css = ".eGUBIq_root{min-width:0;height:100%;color:var(--dsw-alias-label-primary,#1f2328);flex-direction:column;display:flex;position:relative}.eGUBIq_head{flex-direction:column;gap:12px;padding:4px 4px 12px;display:flex}.eGUBIq_title{margin:0;font-size:16px;font-weight:500;line-height:24px}.eGUBIq_sub{color:var(--dsw-alias-label-tertiary,#8b93a1);align-items:center;gap:8px;margin:0;font-size:14px;line-height:22px;display:flex}.eGUBIq_tabs{border-bottom:1px solid var(--dsw-alias-border-l2,#e5e7eb);align-items:flex-end;gap:2px;display:flex}.eGUBIq_tab{font:inherit;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;padding:7px 12px;font-size:13px}.eGUBIq_tab.eGUBIq_on{color:var(--dsw-alias-brand-primary,#4f6ef7);border-bottom-color:var(--dsw-alias-brand-primary,#4f6ef7);font-weight:600}.eGUBIq_banner{background:var(--dsw-alias-bg-layer-2,#fdf3e3);border:1px solid var(--dsw-alias-border-l2,#f3e3c3);border-radius:8px;align-items:center;gap:8px;margin:0;padding:8px 12px;font-size:12px;display:flex}.eGUBIq_bannerIcon{color:var(--dsw-alias-label-secondary,#6b7280);flex-shrink:0}.eGUBIq_bannerHint{color:var(--dsw-alias-label-tertiary,#8b93a1);cursor:help;display:inline-flex}.eGUBIq_body{flex:1;padding:12px 4px 24px;overflow-x:hidden;overflow-y:auto}.eGUBIq_cats{z-index:5;background:var(--dsw-alias-bg-layer-2,#f7f8fa);margin:0 -4px 2px;padding:12px 4px 4px;position:sticky;top:-1px}.eGUBIq_catsRow{align-items:flex-start;gap:8px;display:flex;position:relative}.eGUBIq_star{color:var(--dsw-alias-label-secondary,#9ca3af);font-size:11px}.eGUBIq_top{z-index:20;display:inline-flex;position:absolute;bottom:18px;right:18px}.eGUBIq_topBtn{border-radius:99px;width:38px;height:38px;padding:0}.eGUBIq_tag{border:1px solid var(--dsw-alias-border-l3,#d9dde3);color:var(--dsw-alias-label-secondary,#6b7280);border-radius:4px;flex-shrink:0;padding:1px 6px;font-size:11px;line-height:16px}.eGUBIq_okState{color:var(--dsw-alias-state-success-primary,#16a34a);white-space:nowrap;font-size:12px;font-weight:600}.eGUBIq_catsWrap{flex-wrap:wrap;flex:1;align-items:center;gap:6px;min-width:0;display:flex}.eGUBIq_catsCollapsed{max-height:62px;overflow:hidden}.eGUBIq_catsToggle.eGUBIq_catsToggle{height:26px;min-height:26px;color:var(--dsw-alias-label-secondary,#6b7280);padding:0 6px}.eGUBIq_shots{-webkit-overflow-scrolling:touch;scrollbar-width:thin;gap:8px;margin:0 0 8px;padding:2px 0 6px;display:flex;overflow-x:auto}.eGUBIq_shot{object-fit:cover;border:1px solid var(--dsw-alias-border-default,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f3f4f6);border-radius:8px;flex:none;max-width:260px;height:150px}.eGUBIq_cmd{background:var(--dsw-alias-bg-layer-2,#f3f4f6);word-break:break-all;border-radius:6px;margin:8px 0 0;padding:8px 10px;font-family:ui-monospace,Menlo,monospace;font-size:11px;line-height:18px}.eGUBIq_warnLine{color:var(--dsw-alias-state-warn-primary,#b45309);align-items:center;gap:4px;margin:0;font-size:12px;font-weight:600;line-height:18px;display:flex}.eGUBIq_modalNote{color:var(--dsw-alias-label-tertiary,#8b93a1);align-items:center;gap:4px;margin:12px 0 0;font-size:12px;line-height:18px;display:flex}.eGUBIq_grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;display:grid}.eGUBIq_swatches{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:8px;gap:0;height:34px;display:flex;overflow:hidden}.eGUBIq_themesGrid{margin-bottom:12px}.eGUBIq_swatches i{flex:1}.eGUBIq_card{background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:12px;flex-direction:column;gap:12px;padding:12px 14px;display:flex}.eGUBIq_row1{align-items:center;gap:10px;min-width:0;display:flex}.eGUBIq_srcBtn{flex-shrink:0;align-self:flex-start}.eGUBIq_av{color:#fff;object-fit:cover;background:var(--dsw-alias-bg-layer-2,#f3f4f6);border-radius:8px;flex-shrink:0;place-items:center;width:32px;height:32px;font-size:14px;font-weight:700;display:grid}.eGUBIq_nm{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:500;line-height:22px;overflow:hidden}.eGUBIq_owner{color:var(--dsw-alias-label-secondary,#9ca3af);font-size:11px}.eGUBIq_desc{color:var(--dsw-alias-label-tertiary,#8b93a1);min-height:36px;margin:0;font-size:12px;line-height:18px}.eGUBIq_foot{align-items:center;gap:8px;margin-top:auto;display:flex}.eGUBIq_grow{flex:1}.eGUBIq_titleRow{align-items:center;gap:10px;display:flex}.eGUBIq_version{color:var(--dsw-alias-label-tertiary,#8b93a1);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:12px;line-height:20px}.eGUBIq_descTight{min-height:0}.eGUBIq_src{color:var(--dsw-alias-label-secondary,#9ca3af);font-size:11px;text-decoration:none}.eGUBIq_src:hover{color:var(--dsw-alias-brand-primary,#4f6ef7)}.eGUBIq_dot{vertical-align:2px;margin-left:5px}.eGUBIq_act{flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;font-size:11px;display:flex}.eGUBIq_actLive{color:var(--dsw-alias-state-success-primary,#16a34a);align-items:center;gap:4px;font-weight:600;display:inline-flex}.eGUBIq_actWarn{color:var(--dsw-alias-state-warn-primary,#b45309);align-items:center;gap:4px;font-weight:600;display:inline-flex}.eGUBIq_actBroken{color:var(--dsw-alias-state-error-primary,#dc2626);align-items:center;gap:4px;font-weight:600;display:inline-flex}.eGUBIq_actWhy{color:var(--dsw-alias-label-secondary,#6b7280);margin-top:2px}.eGUBIq_loading{color:var(--dsw-alias-label-secondary,#9ca3af);flex-direction:column;align-items:center;gap:12px;padding:48px;font-size:13px;display:flex}.eGUBIq_spin{color:var(--dsw-alias-brand-primary,#4f6ef7);flex-shrink:0;animation:.8s linear infinite eGUBIq_sp;display:inline-flex}@keyframes eGUBIq_sp{to{transform:rotate(360deg)}}.eGUBIq_progress{background:var(--dsw-alias-bg-layer-2,#f3f4f6);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);color:var(--dsw-alias-label-secondary,#6b7280);border-radius:8px;flex-wrap:wrap;align-items:center;gap:9px;margin:0;padding:8px 12px;font-size:12px;display:flex}.eGUBIq_bar{background:var(--dsw-alias-border-l1,#e5e7eb);border-radius:99px;width:100%;height:4px;overflow:hidden}.eGUBIq_barFill{background:var(--dsw-alias-brand-primary,#4f6ef7);border-radius:99px;height:100%;transition:width .6s}.eGUBIq_barWave{width:30%;animation:1.2s ease-in-out infinite eGUBIq_dshmSlide}@keyframes eGUBIq_dshmSlide{0%{margin-left:-30%}to{margin-left:100%}}.eGUBIq_irow .eGUBIq_progress{margin-top:8px}.eGUBIq_progress code{text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,Menlo,monospace;font-size:11px;overflow:hidden}.eGUBIq_empty{color:var(--dsw-alias-label-secondary,#9ca3af);text-align:center;padding:32px;font-size:13px}.eGUBIq_err{color:var(--dsw-alias-state-error-primary,#dc2626);white-space:pre-wrap;word-break:break-all;margin:8px 0;font-size:12px}.eGUBIq_irow{background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:12px;align-items:center;gap:10px;margin-bottom:8px;padding:12px 14px;display:flex}.eGUBIq_irowMissing{filter:grayscale();opacity:.5}.eGUBIq_irow>.eGUBIq_src,.eGUBIq_irow>.eGUBIq_owner,.eGUBIq_irow button{white-space:nowrap;flex-shrink:0}.eGUBIq_tabSearchRow{padding:0 4px 10px;display:flex}.eGUBIq_tabSearch{width:260px}.eGUBIq_spec{color:var(--dsw-alias-label-secondary,#9ca3af);overflow-wrap:anywhere;min-width:0;font-family:ui-monospace,Menlo,monospace;font-size:11px}.eGUBIq_specTag{white-space:nowrap;border-radius:4px;flex-shrink:0;align-items:center;height:16px;padding:0 5px;font-size:10px;font-weight:600;display:inline-flex}.eGUBIq_specTagGit{color:#0b7285;background:#12a3c41f}.eGUBIq_specTagFile{color:#b07d1b;background:#f0b42924}.eGUBIq_backupCheckList .eGUBIq_grow{white-space:nowrap;text-overflow:ellipsis;flex:70%;min-width:0;overflow:hidden}.eGUBIq_backupCheckList .eGUBIq_spec{text-align:right;white-space:nowrap;text-overflow:ellipsis;flex:0 30%;max-width:30%;overflow:hidden}.eGUBIq_staleAction{margin-top:8px}.eGUBIq_pct{color:var(--dsw-alias-label-secondary,#6b7280);flex-shrink:0;font-size:11px;font-weight:600}.eGUBIq_pager{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin:16px 0 4px;display:flex}.eGUBIq_pagerPages{flex-wrap:wrap;flex:1;justify-content:center;align-items:center;gap:6px;min-width:0;display:flex}.eGUBIq_pageEllipsis{color:var(--dsw-alias-label-secondary,#9ca3af);padding:0 2px;font-size:12px}.eGUBIq_pageInfo{color:var(--dsw-alias-label-secondary,#6b7280);white-space:nowrap;font-size:12px}.eGUBIq_depBadge{border:1px solid var(--dsw-alias-state-warn-primary,#b45309);color:var(--dsw-alias-state-warn-primary,#b45309);white-space:nowrap;border-radius:4px;flex-shrink:0;margin-left:6px;padding:1px 6px;font-size:11px;font-weight:600;line-height:16px}.eGUBIq_deprecate{color:var(--dsw-alias-state-warn-primary,#b45309);background:var(--dsw-alias-bg-layer-2,#fdf3e3);border:1px solid var(--dsw-alias-border-l2,#f3e3c3);border-radius:8px;margin:0;padding:8px 10px;font-size:12px;line-height:18px}.eGUBIq_deprecate a{color:var(--dsw-alias-state-warn-primary,#b45309);text-decoration:underline}.eGUBIq_deprecate .eGUBIq_src{margin-left:8px}.eGUBIq_depLine{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.eGUBIq_switch{border:1px solid var(--dsw-alias-border-l2,#d9dde3);background:var(--dsw-alias-bg-layer-2,#e5e7eb);cursor:pointer;border-radius:99px;flex-shrink:0;width:38px;height:22px;padding:0;transition:background .15s,border-color .15s;position:relative}.eGUBIq_switchOn{background:var(--dsw-alias-state-success-primary,#16a34a);border-color:var(--dsw-alias-state-success-primary,#16a34a)}.eGUBIq_switchMixed{background:var(--dsw-alias-state-warn-primary,#b45309);border-color:var(--dsw-alias-state-warn-primary,#b45309)}.eGUBIq_switchKnob{background:#fff;border-radius:99px;width:16px;height:16px;transition:left .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #00000040}.eGUBIq_switchOn .eGUBIq_switchKnob,.eGUBIq_switchMixed .eGUBIq_switchKnob{left:18px}.eGUBIq_switch:disabled{opacity:.5;cursor:default}.eGUBIq_viewBar{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:8px;align-items:center;gap:2px;width:fit-content;margin-bottom:12px;padding:2px;display:flex}.eGUBIq_viewBtn{font:inherit;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:6px;padding:4px 10px;font-size:12px;line-height:18px}.eGUBIq_viewBtn:hover{color:var(--dsw-alias-brand-primary,#4f6ef7)}.eGUBIq_viewOn{background:var(--dsw-alias-bg-layer-2,#eef0f4);color:var(--dsw-alias-label-primary,#1f2328);font-weight:600}.eGUBIq_groupRow{background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:12px;margin-bottom:10px;padding:12px 14px}.eGUBIq_groupHead{align-items:center;gap:10px;min-width:0;display:flex}.eGUBIq_groupName{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;line-height:20px;overflow:hidden}.eGUBIq_groupActions{flex-shrink:0;align-items:center;gap:6px;display:flex}.eGUBIq_groupMembers{flex-direction:column;gap:6px;margin-top:10px;display:flex}.eGUBIq_groupMember{background:var(--dsw-alias-bg-layer-2,#f7f8fa);border-radius:8px;align-items:center;gap:8px;padding:6px 8px;font-size:12px;line-height:18px;display:flex}.eGUBIq_groupMember .eGUBIq_nm{flex:1;min-width:0;font-size:12px}.eGUBIq_groupAddPanel{border-top:1px dashed var(--dsw-alias-border-l2,#e5e7eb);flex-direction:column;gap:6px;margin-top:10px;padding-top:10px;display:flex}.eGUBIq_groupCreate{align-items:center;gap:8px;margin-bottom:10px;display:flex}.eGUBIq_inlineInput{flex:1;min-width:120px}.eGUBIq_assignRow{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.eGUBIq_assignSelect{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);background:var(--dsw-alias-bg-layer-1,#fff);color:var(--dsw-alias-label-primary,#1f2328);font:inherit;border-radius:6px;padding:3px 6px;font-size:12px;line-height:18px}.eGUBIq_groupHint{color:var(--dsw-alias-label-tertiary,#8b93a1);font-size:11px}.eGUBIq_sectAction{color:var(--dsw-alias-label-secondary,#6b7280);align-items:center;gap:8px;margin:14px 2px 8px;font-size:12px;font-weight:600;display:flex}.eGUBIq_backupGrid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;display:grid}.eGUBIq_backupCard{background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:12px;flex-direction:column;gap:10px;padding:16px;display:flex}.eGUBIq_backupCard h3{margin:0;font-size:14px}.eGUBIq_backupCard p{color:var(--dsw-alias-label-secondary,#6b7280);margin:0;font-size:12px;line-height:18px}.eGUBIq_backupActions{flex-wrap:wrap;gap:8px;display:flex;position:relative}.eGUBIq_hiddenFile{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.eGUBIq_backupInput{box-sizing:border-box;width:100%}.eGUBIq_backupCheck{cursor:pointer;align-items:center;gap:6px;font-size:12px;display:flex}.eGUBIq_backupWarn{margin:0;font-size:12px;line-height:18px;color:var(--dsw-alias-state-warn-primary,#b45309)!important}.eGUBIq_backupMessage{color:var(--dsw-alias-label-secondary,#6b7280);grid-column:1/-1;font-size:12px}.eGUBIq_backupCheckList{flex-direction:column;gap:6px;max-height:260px;margin:10px 0 4px;padding-right:4px;display:flex;overflow-y:auto}.eGUBIq_backupCheckList .eGUBIq_backupCheck{justify-content:space-between;gap:8px}.eGUBIq_diagPage{flex-direction:column;gap:12px;height:100%;min-height:0;display:flex;overflow-y:auto}.eGUBIq_diagSummary{background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:12px;flex-wrap:wrap;align-items:center;gap:12px;padding:10px 14px;font-size:12px;display:flex}.eGUBIq_diagSummaryItem{color:var(--dsw-alias-label-secondary,#6b7280);white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.eGUBIq_diagSummaryMeta{color:var(--dsw-alias-label-tertiary,#9ca3af);text-overflow:ellipsis;white-space:nowrap;max-width:320px;font-family:ui-monospace,Menlo,monospace;font-size:11px;overflow:hidden}.eGUBIq_diagSection{background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:12px;flex-direction:column;gap:8px;padding:12px 14px;display:flex}.eGUBIq_diagSection h3{color:var(--dsw-alias-label-primary,#1f2328);margin:0;font-size:13px;font-weight:600}.eGUBIq_diagCount{color:var(--dsw-alias-label-tertiary,#9ca3af);font-size:11px;font-weight:400}.eGUBIq_diagEmpty{color:var(--dsw-alias-label-secondary,#9ca3af);padding:8px 0;font-size:12px}.eGUBIq_diagBundle{border-top:1px solid var(--dsw-alias-border-l2,#f0f1f3);flex-direction:column;gap:6px;padding-top:8px;display:flex}.eGUBIq_diagBundle:first-of-type{border-top:none;padding-top:0}.eGUBIq_diagRow{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;font-size:12px;line-height:18px;display:flex}.eGUBIq_diagMeta{align-items:baseline;gap:8px;min-width:0;font-size:12px;display:flex}.eGUBIq_diagKey{color:var(--dsw-alias-label-tertiary,#9ca3af);flex-shrink:0;min-width:64px;font-size:11px}.eGUBIq_diagVal{color:var(--dsw-alias-label-primary,#1f2328);overflow-wrap:anywhere;min-width:0;font-family:ui-monospace,Menlo,monospace;font-size:12px;font-weight:500}.eGUBIq_diagIndex{background:var(--dsw-alias-bg-layer-2,#f3f4f6);min-width:18px;height:18px;color:var(--dsw-alias-label-secondary,#6b7280);border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;font-size:11px;font-weight:600;display:inline-flex}.eGUBIq_diagArrow{color:var(--dsw-alias-label-tertiary,#9ca3af);flex-shrink:0;font-size:12px}.eGUBIq_diagBadgeOfficial{background:var(--dsw-alias-brand-primary,#4f6ef7);color:#fff;border-radius:9px;flex-shrink:0;align-items:center;height:18px;padding:0 8px;font-size:11px;font-weight:600;display:inline-flex}.eGUBIq_diagBadgeCommunity{background:var(--dsw-alias-bg-layer-2,#f3f4f6);height:18px;color:var(--dsw-alias-label-secondary,#6b7280);border-radius:9px;flex-shrink:0;align-items:center;padding:0 8px;font-size:11px;display:inline-flex}.eGUBIq_diagBadgeShadow{background:var(--dsw-alias-state-error-primary,#dc2626);color:#fff;border-radius:9px;flex-shrink:0;align-items:center;height:18px;padding:0 8px;font-size:11px;font-weight:600;display:inline-flex}.eGUBIq_diagList{flex-direction:column;gap:6px;display:flex}.eGUBIq_sectionOverview{color:var(--dsw-alias-label-tertiary,#8b93a1);text-overflow:ellipsis;white-space:nowrap;max-width:100%;padding:2px 0 6px;font-size:12px;line-height:18px;overflow:hidden}.eGUBIq_diagAlert{color:var(--dsw-alias-state-warn-primary,#b45309)}.eGUBIq_ovRow{background:var(--dsw-alias-bg-layer-2,#f7f8fa);border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;min-width:0;padding:6px 10px;font-size:12px;line-height:18px;display:flex}.eGUBIq_ovArrow{color:var(--dsw-alias-label-tertiary,#9ca3af);flex-shrink:0;font-size:12px}.eGUBIq_ovByTag{background:var(--dsw-alias-brand-primary,#4f6ef7);color:#fff;text-overflow:ellipsis;white-space:nowrap;border-radius:9px;flex-shrink:0;align-items:center;max-width:260px;height:18px;padding:0 8px;font-size:11px;font-weight:600;display:inline-flex;overflow:hidden}.eGUBIq_ovFrom{color:var(--dsw-alias-label-secondary,#6b7280);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12px;overflow:hidden}.eGUBIq_orphRow{background:var(--dsw-alias-bg-layer-2,#f7f8fa);border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;min-width:0;padding:6px 10px;font-size:12px;line-height:18px;display:flex}.eGUBIq_orphBadge{background:var(--dsw-alias-state-warn-primary,#b45309);color:#fff;white-space:nowrap;border-radius:9px;flex-shrink:0;align-items:center;height:18px;padding:0 8px;font-size:11px;font-weight:600;display:inline-flex}.eGUBIq_dragHandle{width:20px;height:20px;color:var(--dsw-alias-label-tertiary,#9ca3af);cursor:grab;-webkit-user-select:none;user-select:none;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;line-height:20px;display:inline-flex}.eGUBIq_dragOver{outline:2px dashed var(--dsw-alias-brand-primary,#4f6ef7);outline-offset:2px;background:var(--dsw-alias-bg-layer-2,#f0f2f8);border-radius:8px}.eGUBIq_dragging{opacity:.45;background:var(--dsw-alias-bg-layer-2,#f3f4f6)}.eGUBIq_collapseHead{font:inherit;color:var(--dsw-alias-label-primary,#1f2328);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:8px;width:100%;padding:0;font-size:13px;font-weight:600;display:flex}.eGUBIq_collapseIcon{color:var(--dsw-alias-label-secondary,#6b7280);flex-shrink:0;display:inline-flex}.eGUBIq_collapseTitle{flex:1;min-width:0}.eGUBIq_collapseBody{border-top:1px solid var(--dsw-alias-border-l2,#f0f1f3);overflow-wrap:anywhere;flex-direction:column;gap:10px;min-width:0;margin-top:8px;padding-top:10px;display:flex}.eGUBIq_panelNote{color:var(--dsw-alias-label-secondary,#6b7280);margin:0;font-size:12px;line-height:18px}.eGUBIq_fixFallback{flex-direction:column;gap:6px;margin:8px 0;display:flex}.eGUBIq_fixFallbackText{box-sizing:border-box;width:100%;color:var(--dsw-alias-label-primary,#1f2328);background:var(--dsw-alias-bg-layer-2,#f3f4f6);border:1px solid var(--dsw-alias-border-l2,#e5e7eb);resize:vertical;white-space:pre-wrap;word-break:break-all;border-radius:6px;padding:8px 10px;font-family:ui-monospace,Menlo,monospace;font-size:11px;line-height:16px}.eGUBIq_setCard{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:12px;flex-direction:column;gap:14px;padding:16px 18px;display:flex}.eGUBIq_setHead{flex-direction:column;gap:4px;display:flex}.eGUBIq_setTitle{font-size:15px;font-weight:600;line-height:22px}.eGUBIq_setDesc{color:var(--dsw-alias-label-tertiary,#8b93a1);font-size:13px;line-height:20px}.eGUBIq_setRow{align-items:flex-start;gap:12px;display:flex}.eGUBIq_setLabelBox{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.eGUBIq_setLabel{font-size:13px;line-height:20px}.eGUBIq_setHint{color:var(--dsw-alias-label-tertiary,#8b93a1);font-size:12px;line-height:18px}.eGUBIq_setRevert{font:inherit;color:var(--dsw-alias-brand-primary,#4f6ef7);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:0;font-size:12px}.eGUBIq_setRevert:disabled{color:var(--dsw-alias-label-tertiary,#8b93a1);cursor:default}";
|
|
913
921
|
const tagId = "dshmarket/Market.module.css";
|
|
914
922
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
|
|
915
923
|
const tag = document.createElement("style");
|
|
@@ -919,146 +927,155 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
919
927
|
document.head.appendChild(tag);
|
|
920
928
|
}
|
|
921
929
|
var Market_module_css_default = {
|
|
930
|
+
"sub": "eGUBIq_sub",
|
|
931
|
+
"nm": "eGUBIq_nm",
|
|
932
|
+
"err": "eGUBIq_err",
|
|
933
|
+
"setDesc": "eGUBIq_setDesc",
|
|
934
|
+
"diagKey": "eGUBIq_diagKey",
|
|
935
|
+
"grid": "eGUBIq_grid",
|
|
936
|
+
"collapseIcon": "eGUBIq_collapseIcon",
|
|
937
|
+
"root": "eGUBIq_root",
|
|
938
|
+
"depBadge": "eGUBIq_depBadge",
|
|
939
|
+
"dshmSlide": "eGUBIq_dshmSlide",
|
|
940
|
+
"groupAddPanel": "eGUBIq_groupAddPanel",
|
|
941
|
+
"catsToggle": "eGUBIq_catsToggle",
|
|
942
|
+
"bannerIcon": "eGUBIq_bannerIcon",
|
|
943
|
+
"diagSection": "eGUBIq_diagSection",
|
|
944
|
+
"groupHead": "eGUBIq_groupHead",
|
|
945
|
+
"diagBadgeOfficial": "eGUBIq_diagBadgeOfficial",
|
|
946
|
+
"ovByTag": "eGUBIq_ovByTag",
|
|
947
|
+
"sectionOverview": "eGUBIq_sectionOverview",
|
|
948
|
+
"backupCard": "eGUBIq_backupCard",
|
|
949
|
+
"diagSummaryMeta": "eGUBIq_diagSummaryMeta",
|
|
950
|
+
"diagSummary": "eGUBIq_diagSummary",
|
|
951
|
+
"empty": "eGUBIq_empty",
|
|
952
|
+
"modalNote": "eGUBIq_modalNote",
|
|
953
|
+
"descTight": "eGUBIq_descTight",
|
|
954
|
+
"topBtn": "eGUBIq_topBtn",
|
|
955
|
+
"actWarn": "eGUBIq_actWarn",
|
|
956
|
+
"assignRow": "eGUBIq_assignRow",
|
|
957
|
+
"catsCollapsed": "eGUBIq_catsCollapsed",
|
|
958
|
+
"switch": "eGUBIq_switch",
|
|
959
|
+
"assignSelect": "eGUBIq_assignSelect",
|
|
960
|
+
"orphBadge": "eGUBIq_orphBadge",
|
|
961
|
+
"fixFallbackText": "eGUBIq_fixFallbackText",
|
|
962
|
+
"setRevert": "eGUBIq_setRevert",
|
|
963
|
+
"barFill": "eGUBIq_barFill",
|
|
964
|
+
"groupMembers": "eGUBIq_groupMembers",
|
|
965
|
+
"diagIndex": "eGUBIq_diagIndex",
|
|
966
|
+
"diagList": "eGUBIq_diagList",
|
|
967
|
+
"fixFallback": "eGUBIq_fixFallback",
|
|
968
|
+
"setTitle": "eGUBIq_setTitle",
|
|
969
|
+
"backupCheck": "eGUBIq_backupCheck",
|
|
970
|
+
"top": "eGUBIq_top",
|
|
971
|
+
"loading": "eGUBIq_loading",
|
|
972
|
+
"dragging": "eGUBIq_dragging",
|
|
973
|
+
"progress": "eGUBIq_progress",
|
|
974
|
+
"backupCheckList": "eGUBIq_backupCheckList",
|
|
975
|
+
"depLine": "eGUBIq_depLine",
|
|
976
|
+
"diagBundle": "eGUBIq_diagBundle",
|
|
977
|
+
"sectAction": "eGUBIq_sectAction",
|
|
978
|
+
"av": "eGUBIq_av",
|
|
979
|
+
"groupMember": "eGUBIq_groupMember",
|
|
980
|
+
"diagPage": "eGUBIq_diagPage",
|
|
922
981
|
"switchKnob": "eGUBIq_switchKnob",
|
|
923
|
-
"
|
|
924
|
-
"
|
|
982
|
+
"deprecate": "eGUBIq_deprecate",
|
|
983
|
+
"diagSummaryItem": "eGUBIq_diagSummaryItem",
|
|
984
|
+
"pagerPages": "eGUBIq_pagerPages",
|
|
985
|
+
"ovArrow": "eGUBIq_ovArrow",
|
|
925
986
|
"sp": "eGUBIq_sp",
|
|
926
|
-
"ovFrom": "eGUBIq_ovFrom",
|
|
927
|
-
"backupCheckList": "eGUBIq_backupCheckList",
|
|
928
|
-
"pageEllipsis": "eGUBIq_pageEllipsis",
|
|
929
|
-
"barFill": "eGUBIq_barFill",
|
|
930
|
-
"tabSearch": "eGUBIq_tabSearch",
|
|
931
|
-
"switchOn": "eGUBIq_switchOn",
|
|
932
|
-
"modalNote": "eGUBIq_modalNote",
|
|
933
987
|
"diagVal": "eGUBIq_diagVal",
|
|
934
|
-
"assignRow": "eGUBIq_assignRow",
|
|
935
|
-
"collapseHead": "eGUBIq_collapseHead",
|
|
936
|
-
"spec": "eGUBIq_spec",
|
|
937
988
|
"orphRow": "eGUBIq_orphRow",
|
|
938
|
-
"
|
|
939
|
-
"
|
|
940
|
-
"
|
|
989
|
+
"title": "eGUBIq_title",
|
|
990
|
+
"dragHandle": "eGUBIq_dragHandle",
|
|
991
|
+
"src": "eGUBIq_src",
|
|
992
|
+
"tabSearch": "eGUBIq_tabSearch",
|
|
993
|
+
"version": "eGUBIq_version",
|
|
994
|
+
"viewOn": "eGUBIq_viewOn",
|
|
995
|
+
"groupName": "eGUBIq_groupName",
|
|
941
996
|
"diagBadgeShadow": "eGUBIq_diagBadgeShadow",
|
|
942
|
-
"
|
|
943
|
-
"
|
|
944
|
-
"
|
|
945
|
-
"
|
|
946
|
-
"
|
|
947
|
-
"
|
|
948
|
-
"
|
|
949
|
-
"
|
|
997
|
+
"body": "eGUBIq_body",
|
|
998
|
+
"viewBar": "eGUBIq_viewBar",
|
|
999
|
+
"setLabel": "eGUBIq_setLabel",
|
|
1000
|
+
"catsWrap": "eGUBIq_catsWrap",
|
|
1001
|
+
"viewBtn": "eGUBIq_viewBtn",
|
|
1002
|
+
"barWave": "eGUBIq_barWave",
|
|
1003
|
+
"groupHint": "eGUBIq_groupHint",
|
|
1004
|
+
"spec": "eGUBIq_spec",
|
|
1005
|
+
"cmd": "eGUBIq_cmd",
|
|
1006
|
+
"shot": "eGUBIq_shot",
|
|
1007
|
+
"groupRow": "eGUBIq_groupRow",
|
|
950
1008
|
"panelNote": "eGUBIq_panelNote",
|
|
1009
|
+
"switchOn": "eGUBIq_switchOn",
|
|
1010
|
+
"setHead": "eGUBIq_setHead",
|
|
1011
|
+
"desc": "eGUBIq_desc",
|
|
1012
|
+
"setRow": "eGUBIq_setRow",
|
|
951
1013
|
"collapseTitle": "eGUBIq_collapseTitle",
|
|
952
|
-
"
|
|
953
|
-
"
|
|
954
|
-
"
|
|
955
|
-
"
|
|
956
|
-
"groupMembers": "eGUBIq_groupMembers",
|
|
957
|
-
"diagBadgeCommunity": "eGUBIq_diagBadgeCommunity",
|
|
1014
|
+
"ovRow": "eGUBIq_ovRow",
|
|
1015
|
+
"swatches": "eGUBIq_swatches",
|
|
1016
|
+
"hiddenFile": "eGUBIq_hiddenFile",
|
|
1017
|
+
"warnLine": "eGUBIq_warnLine",
|
|
958
1018
|
"backupWarn": "eGUBIq_backupWarn",
|
|
959
|
-
"
|
|
960
|
-
"
|
|
961
|
-
"
|
|
962
|
-
"
|
|
963
|
-
"
|
|
964
|
-
"
|
|
965
|
-
"
|
|
966
|
-
"
|
|
1019
|
+
"diagRow": "eGUBIq_diagRow",
|
|
1020
|
+
"actBroken": "eGUBIq_actBroken",
|
|
1021
|
+
"dragOver": "eGUBIq_dragOver",
|
|
1022
|
+
"catsRow": "eGUBIq_catsRow",
|
|
1023
|
+
"themesGrid": "eGUBIq_themesGrid",
|
|
1024
|
+
"staleAction": "eGUBIq_staleAction",
|
|
1025
|
+
"irow": "eGUBIq_irow",
|
|
1026
|
+
"card": "eGUBIq_card",
|
|
1027
|
+
"backupGrid": "eGUBIq_backupGrid",
|
|
1028
|
+
"foot": "eGUBIq_foot",
|
|
967
1029
|
"groupActions": "eGUBIq_groupActions",
|
|
968
|
-
"
|
|
969
|
-
"
|
|
970
|
-
"
|
|
971
|
-
"
|
|
972
|
-
"
|
|
973
|
-
"
|
|
974
|
-
"
|
|
975
|
-
"
|
|
976
|
-
"collapseIcon": "eGUBIq_collapseIcon",
|
|
977
|
-
"ovByTag": "eGUBIq_ovByTag",
|
|
978
|
-
"diagKey": "eGUBIq_diagKey",
|
|
1030
|
+
"act": "eGUBIq_act",
|
|
1031
|
+
"groupCreate": "eGUBIq_groupCreate",
|
|
1032
|
+
"backupInput": "eGUBIq_backupInput",
|
|
1033
|
+
"setLabelBox": "eGUBIq_setLabelBox",
|
|
1034
|
+
"ovFrom": "eGUBIq_ovFrom",
|
|
1035
|
+
"srcBtn": "eGUBIq_srcBtn",
|
|
1036
|
+
"spin": "eGUBIq_spin",
|
|
1037
|
+
"diagCount": "eGUBIq_diagCount",
|
|
979
1038
|
"tab": "eGUBIq_tab",
|
|
980
|
-
"
|
|
981
|
-
"
|
|
982
|
-
"
|
|
1039
|
+
"star": "eGUBIq_star",
|
|
1040
|
+
"bar": "eGUBIq_bar",
|
|
1041
|
+
"tag": "eGUBIq_tag",
|
|
1042
|
+
"collapseBody": "eGUBIq_collapseBody",
|
|
1043
|
+
"diagBadgeCommunity": "eGUBIq_diagBadgeCommunity",
|
|
1044
|
+
"pageEllipsis": "eGUBIq_pageEllipsis",
|
|
1045
|
+
"owner": "eGUBIq_owner",
|
|
1046
|
+
"specTag": "eGUBIq_specTag",
|
|
1047
|
+
"specTagGit": "eGUBIq_specTagGit",
|
|
1048
|
+
"shots": "eGUBIq_shots",
|
|
1049
|
+
"inlineInput": "eGUBIq_inlineInput",
|
|
1050
|
+
"titleRow": "eGUBIq_titleRow",
|
|
1051
|
+
"backupMessage": "eGUBIq_backupMessage",
|
|
1052
|
+
"on": "eGUBIq_on",
|
|
983
1053
|
"actWhy": "eGUBIq_actWhy",
|
|
984
|
-
"
|
|
985
|
-
"
|
|
986
|
-
"groupHint": "eGUBIq_groupHint",
|
|
987
|
-
"diagRow": "eGUBIq_diagRow",
|
|
988
|
-
"switch": "eGUBIq_switch",
|
|
989
|
-
"groupHead": "eGUBIq_groupHead",
|
|
990
|
-
"dot": "eGUBIq_dot",
|
|
1054
|
+
"pager": "eGUBIq_pager",
|
|
1055
|
+
"setHint": "eGUBIq_setHint",
|
|
991
1056
|
"head": "eGUBIq_head",
|
|
992
|
-
"
|
|
993
|
-
"hiddenFile": "eGUBIq_hiddenFile",
|
|
994
|
-
"backupInput": "eGUBIq_backupInput",
|
|
995
|
-
"grid": "eGUBIq_grid",
|
|
996
|
-
"irowMissing": "eGUBIq_irowMissing",
|
|
997
|
-
"okState": "eGUBIq_okState",
|
|
998
|
-
"diagPage": "eGUBIq_diagPage",
|
|
999
|
-
"dshmSlide": "eGUBIq_dshmSlide",
|
|
1000
|
-
"diagSection": "eGUBIq_diagSection",
|
|
1001
|
-
"err": "eGUBIq_err",
|
|
1057
|
+
"actLive": "eGUBIq_actLive",
|
|
1002
1058
|
"tabSearchRow": "eGUBIq_tabSearchRow",
|
|
1003
|
-
"depBadge": "eGUBIq_depBadge",
|
|
1004
|
-
"catsWrap": "eGUBIq_catsWrap",
|
|
1005
|
-
"av": "eGUBIq_av",
|
|
1006
|
-
"specTag": "eGUBIq_specTag",
|
|
1007
|
-
"ovRow": "eGUBIq_ovRow",
|
|
1008
|
-
"groupCreate": "eGUBIq_groupCreate",
|
|
1009
|
-
"body": "eGUBIq_body",
|
|
1010
|
-
"foot": "eGUBIq_foot",
|
|
1011
|
-
"on": "eGUBIq_on",
|
|
1012
|
-
"fixFallback": "eGUBIq_fixFallback",
|
|
1013
|
-
"themesGrid": "eGUBIq_themesGrid",
|
|
1014
|
-
"dragOver": "eGUBIq_dragOver",
|
|
1015
|
-
"topBtn": "eGUBIq_topBtn",
|
|
1016
|
-
"diagSummary": "eGUBIq_diagSummary",
|
|
1017
|
-
"loading": "eGUBIq_loading",
|
|
1018
|
-
"descTight": "eGUBIq_descTight",
|
|
1019
1059
|
"row1": "eGUBIq_row1",
|
|
1020
|
-
"
|
|
1021
|
-
"banner": "eGUBIq_banner",
|
|
1022
|
-
"owner": "eGUBIq_owner",
|
|
1023
|
-
"staleAction": "eGUBIq_staleAction",
|
|
1024
|
-
"actLive": "eGUBIq_actLive",
|
|
1025
|
-
"pager": "eGUBIq_pager",
|
|
1026
|
-
"diagBundle": "eGUBIq_diagBundle",
|
|
1027
|
-
"shot": "eGUBIq_shot",
|
|
1028
|
-
"pct": "eGUBIq_pct",
|
|
1029
|
-
"diagMeta": "eGUBIq_diagMeta",
|
|
1030
|
-
"specTagGit": "eGUBIq_specTagGit",
|
|
1031
|
-
"fixFallbackText": "eGUBIq_fixFallbackText",
|
|
1032
|
-
"groupRow": "eGUBIq_groupRow",
|
|
1033
|
-
"src": "eGUBIq_src",
|
|
1034
|
-
"diagCount": "eGUBIq_diagCount",
|
|
1035
|
-
"actBroken": "eGUBIq_actBroken",
|
|
1036
|
-
"backupCard": "eGUBIq_backupCard",
|
|
1060
|
+
"diagArrow": "eGUBIq_diagArrow",
|
|
1037
1061
|
"diagAlert": "eGUBIq_diagAlert",
|
|
1038
|
-
"
|
|
1039
|
-
"
|
|
1062
|
+
"backupActions": "eGUBIq_backupActions",
|
|
1063
|
+
"bannerHint": "eGUBIq_bannerHint",
|
|
1064
|
+
"cats": "eGUBIq_cats",
|
|
1065
|
+
"grow": "eGUBIq_grow",
|
|
1066
|
+
"dot": "eGUBIq_dot",
|
|
1040
1067
|
"switchMixed": "eGUBIq_switchMixed",
|
|
1041
|
-
"
|
|
1042
|
-
"
|
|
1043
|
-
"viewBtn": "eGUBIq_viewBtn",
|
|
1044
|
-
"backupMessage": "eGUBIq_backupMessage",
|
|
1045
|
-
"progress": "eGUBIq_progress",
|
|
1046
|
-
"pagerPages": "eGUBIq_pagerPages",
|
|
1047
|
-
"shots": "eGUBIq_shots",
|
|
1048
|
-
"ovArrow": "eGUBIq_ovArrow",
|
|
1068
|
+
"diagEmpty": "eGUBIq_diagEmpty",
|
|
1069
|
+
"okState": "eGUBIq_okState",
|
|
1049
1070
|
"tabs": "eGUBIq_tabs",
|
|
1050
|
-
"
|
|
1051
|
-
"
|
|
1052
|
-
"diagSummaryMeta": "eGUBIq_diagSummaryMeta",
|
|
1053
|
-
"title": "eGUBIq_title",
|
|
1054
|
-
"titleRow": "eGUBIq_titleRow",
|
|
1055
|
-
"diagSummaryItem": "eGUBIq_diagSummaryItem",
|
|
1056
|
-
"backupCheck": "eGUBIq_backupCheck",
|
|
1071
|
+
"diagMeta": "eGUBIq_diagMeta",
|
|
1072
|
+
"banner": "eGUBIq_banner",
|
|
1057
1073
|
"specTagFile": "eGUBIq_specTagFile",
|
|
1058
|
-
"
|
|
1059
|
-
"
|
|
1060
|
-
"
|
|
1061
|
-
"
|
|
1074
|
+
"setCard": "eGUBIq_setCard",
|
|
1075
|
+
"pct": "eGUBIq_pct",
|
|
1076
|
+
"pageInfo": "eGUBIq_pageInfo",
|
|
1077
|
+
"collapseHead": "eGUBIq_collapseHead",
|
|
1078
|
+
"irowMissing": "eGUBIq_irowMissing"
|
|
1062
1079
|
};
|
|
1063
1080
|
//#endregion
|
|
1064
1081
|
//#region src/client/Diagnostics.tsx
|
|
@@ -4256,7 +4273,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
4256
4273
|
className: Market_module_css_default.catsRow,
|
|
4257
4274
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
4258
4275
|
ref: catsWrapRef,
|
|
4259
|
-
className:
|
|
4276
|
+
className: visibleCats === null ? `${Market_module_css_default.catsWrap} ${Market_module_css_default.catsCollapsed}` : Market_module_css_default.catsWrap,
|
|
4260
4277
|
children: (() => {
|
|
4261
4278
|
const ordered = orderedCategories(categories, cat, catsOpen);
|
|
4262
4279
|
const shown = catsOpen || visibleCats === null ? ordered : ordered.slice(0, Math.max(0, visibleCats - 1));
|
|
@@ -5207,6 +5224,59 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
5207
5224
|
});
|
|
5208
5225
|
}
|
|
5209
5226
|
//#endregion
|
|
5227
|
+
//#region src/client/SettingsCard.tsx
|
|
5228
|
+
/**
|
|
5229
|
+
* The market's card on the plugin configuration page (dsh >= 0.1.0-rc.7).
|
|
5230
|
+
*
|
|
5231
|
+
* One switch: whether the market may relaunch the host. Turning it off is
|
|
5232
|
+
* the documented answer for a host owned by systemd, launchd or pm2, and
|
|
5233
|
+
* until this card the only way to say it was hand-editing YAML.
|
|
5234
|
+
*
|
|
5235
|
+
* The chrome is drawn here rather than imported: the section's own cards
|
|
5236
|
+
* come from `dsh-client-ui-settings-plugins`, and a VALUE import from that
|
|
5237
|
+
* package fails the client bundle-purity gate — a card is expected to own
|
|
5238
|
+
* its appearance. The switch reuses the market's existing one so a user
|
|
5239
|
+
* meets the same control on both pages.
|
|
5240
|
+
*
|
|
5241
|
+
* Writes go through the settings scope, which fences each one with the
|
|
5242
|
+
* revision it read, so two surfaces editing this namespace cannot silently
|
|
5243
|
+
* overwrite each other. A field counts as overridden by its PRESENCE in the
|
|
5244
|
+
* user layer, never by comparing values: an override that happens to equal
|
|
5245
|
+
* the composed default is still the user's choice, and reverting has to be
|
|
5246
|
+
* able to remove it.
|
|
5247
|
+
*/
|
|
5248
|
+
/** Whether the user layer carries this field — presence, not value. */
|
|
5249
|
+
function isOverridden(user, field) {
|
|
5250
|
+
return typeof user === "object" && user !== null && Object.hasOwn(user, field);
|
|
5251
|
+
}
|
|
5252
|
+
function SettingsCard({ scope, t }) {
|
|
5253
|
+
const snapshot = (0, react.useSyncExternalStore)((0, react.useCallback)((listener) => scope.subscribe(listener), [scope]), (0, react.useCallback)(() => scope.getSnapshot(), [scope]));
|
|
5254
|
+
const allowRestart = snapshot.value?.allowRestart !== false;
|
|
5255
|
+
const onToggle = (0, react.useCallback)(() => {
|
|
5256
|
+
scope.set("allowRestart", !allowRestart);
|
|
5257
|
+
}, [scope, allowRestart]);
|
|
5258
|
+
const onRevert = (0, react.useCallback)(() => {
|
|
5259
|
+
scope.unset("allowRestart");
|
|
5260
|
+
}, [scope]);
|
|
5261
|
+
if (snapshot.status === "unavailable") return null;
|
|
5262
|
+
const busy = !snapshot.writable || snapshot.status === "loading";
|
|
5263
|
+
const overridden = isOverridden(snapshot.user, "allowRestart");
|
|
5264
|
+
return (0, react.createElement)("div", { className: Market_module_css_default.setCard }, (0, react.createElement)("div", { className: Market_module_css_default.setHead }, (0, react.createElement)("div", { className: Market_module_css_default.setTitle }, t("nav")), (0, react.createElement)("div", { className: Market_module_css_default.setDesc }, t("setCardDesc"))), (0, react.createElement)("div", { className: Market_module_css_default.setRow }, (0, react.createElement)("button", {
|
|
5265
|
+
type: "button",
|
|
5266
|
+
role: "switch",
|
|
5267
|
+
"aria-checked": allowRestart,
|
|
5268
|
+
"aria-label": t("setAllowRestart"),
|
|
5269
|
+
className: allowRestart ? `${Market_module_css_default.switch} ${Market_module_css_default.switchOn}` : Market_module_css_default.switch,
|
|
5270
|
+
disabled: busy,
|
|
5271
|
+
onClick: onToggle
|
|
5272
|
+
}, (0, react.createElement)("span", { className: Market_module_css_default.switchKnob })), (0, react.createElement)("div", { className: Market_module_css_default.setLabelBox }, (0, react.createElement)("div", { className: Market_module_css_default.setLabel }, t("setAllowRestart")), (0, react.createElement)("div", { className: Market_module_css_default.setHint }, t("setAllowRestartHint"))), overridden ? (0, react.createElement)("button", {
|
|
5273
|
+
type: "button",
|
|
5274
|
+
className: Market_module_css_default.setRevert,
|
|
5275
|
+
disabled: busy,
|
|
5276
|
+
onClick: onRevert
|
|
5277
|
+
}, t("setRevert")) : null));
|
|
5278
|
+
}
|
|
5279
|
+
//#endregion
|
|
5210
5280
|
//#region src/client/index.ts
|
|
5211
5281
|
/**
|
|
5212
5282
|
* dsh-market client: registers a "Market" settings section rendering the
|
|
@@ -5265,6 +5335,18 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
5265
5335
|
getSnapshot: () => ctx.theme.getTheme()
|
|
5266
5336
|
}
|
|
5267
5337
|
})));
|
|
5338
|
+
ctx.inject(["settingsScope"], (scoped) => {
|
|
5339
|
+
const scope = scoped.settingsScope.bind({ namespace: NS });
|
|
5340
|
+
scoped.slots.inject("settings.plugin.item", () => scoped.slots.register({
|
|
5341
|
+
name: "settings.plugin.item",
|
|
5342
|
+
key: NS,
|
|
5343
|
+
locale: NS,
|
|
5344
|
+
inject: () => ({ t })
|
|
5345
|
+
}, () => (0, react.createElement)(SettingsCard, {
|
|
5346
|
+
scope,
|
|
5347
|
+
t
|
|
5348
|
+
})));
|
|
5349
|
+
});
|
|
5268
5350
|
const Toast = () => (0, react.createElement)(InstallToast, { t });
|
|
5269
5351
|
ctx.slots.inject("shell.overlay", () => ctx.slots.register({
|
|
5270
5352
|
name: "shell.overlay",
|