@dsh-workbench/core 1.0.1 → 1.1.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 +3 -0
- package/client.js +675 -319
- package/dist/client/client.body.js +675 -319
- package/dist/client/index.js +675 -319
- package/dist/host/index.js +445 -37
- package/dist/types/app/layouts/market/discover-sources-dialog.d.ts +4 -0
- package/dist/types/app/layouts/market/discover-states.d.ts +3 -0
- package/dist/types/app/layouts/market/use-add-module.d.ts +0 -1
- package/dist/types/app/layouts/market/use-discover.d.ts +1 -0
- package/dist/types/app/layouts/rightbar/MarketView.d.ts +3 -1
- package/dist/types/app/layouts/rightbar/market-names.d.ts +8 -0
- package/dist/types/app/layouts/rightbar/market-row-types.d.ts +11 -3
- package/dist/types/app/layouts/rightbar/market-rows.d.ts +6 -4
- package/dist/types/app/layouts/rightbar/market-view-text.d.ts +4 -3
- package/dist/types/app/units/unit-titles.d.ts +3 -0
- package/dist/types/kernel/contract/bundle-install.d.ts +1 -1
- package/dist/types/kernel/contract/market-index.d.ts +1 -1
- package/dist/types/modules/panels/model/diy-tools.d.ts +1 -1
- package/dist/types/modules/panels/model/market-dispatch.d.ts +8 -0
- package/dist/types/modules/panels/model/market-follow-up.d.ts +16 -0
- package/dist/types/modules/panels/model/market-sources-act.d.ts +2 -0
- package/dist/types/modules/panels/model/market-types.d.ts +5 -0
- package/dist/types/modules/panels/model/market.d.ts +2 -0
- package/dist/types/modules/panels/model/publish-preview-routes.d.ts +1 -1
- package/dist/types/shared/api/host/diy-publish-preview.d.ts +11 -0
- package/dist/types/shared/api/host/follow-up-dismiss.d.ts +2 -0
- package/dist/types/shared/api/host/migrate-workbench.d.ts +20 -0
- package/dist/types/shared/api/host/migration-follow-up.d.ts +12 -0
- package/dist/types/shared/hooks/market-queries.d.ts +3 -2
- package/dist/types/shared/hooks/resource-view.d.ts +14 -0
- package/dist/types/shared/hooks/use-api-resource.d.ts +3 -7
- package/package.json +3 -3
- package/skills/workbench-module-diy/FAMILY.md +1 -1
- package/skills/workbench-module-diy/REVIEW.md +2 -2
- package/skills/workbench-module-diy/SKILL.md +1 -0
- package/skills/workbench-module-diy/TOOLS.md +1 -1
- package/skills/workbench-module-diy/WIRING.md +3 -1
- package/skills/workbench-module-diy/WRITES.md +1 -1
package/client.js
CHANGED
|
@@ -2730,6 +2730,32 @@ window.__ModuleLoader__.load({
|
|
|
2730
2730
|
//#region ../shared/dist/contract/protocol/unit-manifests.js
|
|
2731
2731
|
var UNIT_MANIFESTS_ROUTE = "unit-manifests";
|
|
2732
2732
|
//#endregion
|
|
2733
|
+
//#region ../shared/dist/contract/unit.js
|
|
2734
|
+
/**
|
|
2735
|
+
* 外壳替模块名合成的词表键:模块自己不必写名字键,名字直接从清单里的 title 注册进来。
|
|
2736
|
+
* @param unit 单元 id。
|
|
2737
|
+
* @returns 该单元名字在词表里的键。
|
|
2738
|
+
*/
|
|
2739
|
+
function unitTitleKey(unit) {
|
|
2740
|
+
return `dsh-workbench.unit.${unit}.title`;
|
|
2741
|
+
}
|
|
2742
|
+
/**
|
|
2743
|
+
* 模块声明的全部环境需要(没写就是空表)。
|
|
2744
|
+
* @param manifest 模块清单。
|
|
2745
|
+
* @returns need 列表。
|
|
2746
|
+
*/
|
|
2747
|
+
function needsOf(manifest) {
|
|
2748
|
+
return manifest.needs ?? [];
|
|
2749
|
+
}
|
|
2750
|
+
/**
|
|
2751
|
+
* 市场门槛要看的那些需要:声明了 extension / lib 就算(不要求写了来源)。
|
|
2752
|
+
* @param manifest 模块清单。
|
|
2753
|
+
* @returns extension / lib 的 need 列表。
|
|
2754
|
+
*/
|
|
2755
|
+
function supplyNeedsOf(manifest) {
|
|
2756
|
+
return needsOf(manifest).filter((need) => need.kind === "extension" || need.kind === "lib");
|
|
2757
|
+
}
|
|
2758
|
+
//#endregion
|
|
2733
2759
|
//#region ../shared/dist/contract/needs.js
|
|
2734
2760
|
function text(value) {
|
|
2735
2761
|
return typeof value === "string" ? value.trim() : "";
|
|
@@ -2792,24 +2818,6 @@ window.__ModuleLoader__.load({
|
|
|
2792
2818
|
})
|
|
2793
2819
|
});
|
|
2794
2820
|
//#endregion
|
|
2795
|
-
//#region ../shared/dist/contract/unit.js
|
|
2796
|
-
/**
|
|
2797
|
-
* 模块声明的全部环境需要(没写就是空表)。
|
|
2798
|
-
* @param manifest 模块清单。
|
|
2799
|
-
* @returns need 列表。
|
|
2800
|
-
*/
|
|
2801
|
-
function needsOf(manifest) {
|
|
2802
|
-
return manifest.needs ?? [];
|
|
2803
|
-
}
|
|
2804
|
-
/**
|
|
2805
|
-
* 市场门槛要看的那些需要:声明了 extension / lib 就算(不要求写了来源)。
|
|
2806
|
-
* @param manifest 模块清单。
|
|
2807
|
-
* @returns extension / lib 的 need 列表。
|
|
2808
|
-
*/
|
|
2809
|
-
function supplyNeedsOf(manifest) {
|
|
2810
|
-
return needsOf(manifest).filter((need) => need.kind === "extension" || need.kind === "lib");
|
|
2811
|
-
}
|
|
2812
|
-
//#endregion
|
|
2813
2821
|
//#region ../shared/dist/i18n/settings.js
|
|
2814
2822
|
/** 「工作台设置」这一组的词条:配置同步 / 新建工作台。 */
|
|
2815
2823
|
var zhSettings = {
|
|
@@ -3078,15 +3086,14 @@ window.__ModuleLoader__.load({
|
|
|
3078
3086
|
"panels.market.update": "Update",
|
|
3079
3087
|
"panels.market.swapSlow": "Not swapped yet — maybe a slow or failed download. Press Update again; if it stays like this, restart dsh.",
|
|
3080
3088
|
"panels.market.removeSlow": "Not removed yet — maybe a slow network or an uninstall that did not finish. Check again in a moment; if it stays like this, restart dsh.",
|
|
3081
|
-
"panels.market.updateNoChange": "
|
|
3089
|
+
"panels.market.updateNoChange": "Update failed: still {from}. The newest on the registry is {latest} — press Update again.",
|
|
3082
3090
|
"panels.market.updateUnknownVersion": "(unknown)",
|
|
3083
|
-
"panels.market.updateGone": "
|
|
3084
|
-
"panels.market.updateRestored": "
|
|
3091
|
+
"panels.market.updateGone": "Update failed: the module is gone after the update.",
|
|
3092
|
+
"panels.market.updateRestored": "Update failed: the new version could not be found after the update, so {version} was put back.",
|
|
3085
3093
|
"panels.market.updateBehind": "Installed {installed}, but the newest on the registry is {latest} — not the latest; you can update once more.",
|
|
3086
|
-
"panels.market.selfUpdateFailed": "
|
|
3094
|
+
"panels.market.selfUpdateFailed": "Workbench update failed: {reason}",
|
|
3087
3095
|
"panels.market.selfUpdateUnknown": "the outside process left no reason (see ~/.dsh/workbench/self-update.log)",
|
|
3088
|
-
"panels.market.selfUpdateRolledBack": "
|
|
3089
|
-
"panels.market.selfUpdateNeedsMigrate": "Workbench updated. Old sessions and projects are not merged automatically: quit every dsh, then run dsh-workbench migrate (--force to merge again).",
|
|
3096
|
+
"panels.market.selfUpdateRolledBack": "Workbench update failed; rolled back to {version}.",
|
|
3090
3097
|
"panels.market.uninstall": "Uninstall",
|
|
3091
3098
|
"panels.market.uninstallLabel": "Uninstall {name}",
|
|
3092
3099
|
"panels.market.installing": "Installing…",
|
|
@@ -3108,9 +3115,27 @@ window.__ModuleLoader__.load({
|
|
|
3108
3115
|
"panels.market.empty": "No modules available",
|
|
3109
3116
|
"panels.market.sectionPlugins": "Installed opencli plugins",
|
|
3110
3117
|
"panels.market.moduleOutdated": "update available",
|
|
3118
|
+
"panels.market.updateNeedsWorkbench": "this version needs a newer workbench first",
|
|
3119
|
+
"panels.market.updateIncompatible": "the new version does not match this workbench, so it cannot be installed now",
|
|
3111
3120
|
"panels.market.moduleRefused": "This module does not match this workbench, so it cannot be used for now.",
|
|
3112
3121
|
"panels.market.moduleRestartHint": "restart dsh once to bring it up",
|
|
3113
3122
|
"panels.market.pendingRestart": "restart required",
|
|
3123
|
+
"panels.market.pendingFollowUp": "old data to migrate",
|
|
3124
|
+
"panels.market.migrationHint": "old sessions and projects are not merged yet",
|
|
3125
|
+
"panels.market.migrateAction": "Migrate old data",
|
|
3126
|
+
"panels.market.migrating": "Migrating…",
|
|
3127
|
+
"panels.market.migrateConfirmTitle": "Migrate old data?",
|
|
3128
|
+
"panels.market.migrateConfirmDetail": "Quit dsh web / Desktop first. Only missing data is added; nothing is overwritten.",
|
|
3129
|
+
"panels.market.migrateConfirmAck": "I've quit dsh web / Desktop",
|
|
3130
|
+
"panels.market.migrateConfirmYes": "Start migration",
|
|
3131
|
+
"panels.market.migrateDone": "Migration complete: {added} projects added; restart the workbench and dsh web to see them.",
|
|
3132
|
+
"panels.market.dismissFollowUp": "Don't remind me",
|
|
3133
|
+
"panels.market.dismissing": "Dismissing…",
|
|
3134
|
+
"panels.market.dismissFollowUpTitle": "Stop reminding about this?",
|
|
3135
|
+
"panels.market.dismissFollowUpDetail": "The reminder will be hidden from the market, but old data will not be migrated or deleted. Old sessions and projects stay in the old directory and won't appear in the new version; you can still run dsh-workbench migrate later.",
|
|
3136
|
+
"panels.market.dismissFollowUpAck": "I understand the old data won't appear automatically",
|
|
3137
|
+
"panels.market.dismissFollowUpYes": "Don't remind me",
|
|
3138
|
+
"panels.market.dismissed": "No longer reminded; old data stays in the old directory and can still be migrated with dsh-workbench migrate.",
|
|
3114
3139
|
"panels.market.workbenchName": "Workbench",
|
|
3115
3140
|
"panels.market.pluginBroken": "This plugin install is broken: it cannot be identified. Uninstall it first, then ask the agent to reinstall it by package name.",
|
|
3116
3141
|
"panels.market.restartNeeded": "The new version is installed — restart once to pick it up.",
|
|
@@ -3194,7 +3219,7 @@ window.__ModuleLoader__.load({
|
|
|
3194
3219
|
"panels.market.add.exampleTitle": "Examples",
|
|
3195
3220
|
"panels.market.add.exampleFill": "Fill in an example",
|
|
3196
3221
|
"panels.market.add.registryLabel": "Source",
|
|
3197
|
-
"panels.market.add.registryProfile": "This
|
|
3222
|
+
"panels.market.add.registryProfile": "This workbench's registry",
|
|
3198
3223
|
"panels.market.add.registryPnpm": "pnpm's own registry",
|
|
3199
3224
|
"panels.market.add.check": "Check",
|
|
3200
3225
|
"panels.market.add.checking": "Checking…",
|
|
@@ -3215,12 +3240,16 @@ window.__ModuleLoader__.load({
|
|
|
3215
3240
|
"panels.market.tabs": "The two faces of the module market",
|
|
3216
3241
|
"panels.tab.discover": "Discover",
|
|
3217
3242
|
"panels.discover.loading": "Reading the index",
|
|
3243
|
+
"panels.discover.slowHint": "Slow to load: finish any authorization prompt, or switch sources.",
|
|
3218
3244
|
"panels.discover.lead": "Browse modules from an index source; install and go.",
|
|
3219
3245
|
"panels.discover.addSource": "Add",
|
|
3220
3246
|
"panels.discover.addingSource": "Adding…",
|
|
3221
3247
|
"panels.discover.addFirstSource": "Add index source",
|
|
3222
3248
|
"panels.discover.removeSource": "Remove",
|
|
3223
3249
|
"panels.discover.removeSourceNamed": "Remove {url}",
|
|
3250
|
+
"panels.discover.useSource": "Use",
|
|
3251
|
+
"panels.discover.useSourceNamed": "Use {label}",
|
|
3252
|
+
"panels.discover.sourceCurrent": "In use",
|
|
3224
3253
|
"panels.discover.refresh": "Refresh",
|
|
3225
3254
|
"panels.discover.search": "Search modules",
|
|
3226
3255
|
"panels.discover.all": "All",
|
|
@@ -3232,8 +3261,8 @@ window.__ModuleLoader__.load({
|
|
|
3232
3261
|
"panels.discover.sourcePlaceholder": "https://example.com/index.json or git@git.example.com:wb/market.git",
|
|
3233
3262
|
"panels.discover.sourceRef": "Branch",
|
|
3234
3263
|
"panels.discover.sourcePath": "Index file",
|
|
3235
|
-
"panels.discover.sourceLocal": "Local
|
|
3236
|
-
"panels.discover.sourceLocalHint": "Leave empty to
|
|
3264
|
+
"panels.discover.sourceLocal": "Local copy folder (optional)",
|
|
3265
|
+
"panels.discover.sourceLocalHint": "Leave empty to keep it in ~/.dsh/workbench/market-index/.",
|
|
3237
3266
|
"panels.discover.save": "Save and refresh",
|
|
3238
3267
|
"panels.discover.cancel": "Cancel",
|
|
3239
3268
|
"panels.discover.retry": "Retry",
|
|
@@ -3246,9 +3275,9 @@ window.__ModuleLoader__.load({
|
|
|
3246
3275
|
"panels.discover.missingIndex": "This repository has no {path} yet.",
|
|
3247
3276
|
"panels.discover.initTitle": "Initialize this repository as a module market index?",
|
|
3248
3277
|
"panels.discover.initCta": "Initialize market index",
|
|
3249
|
-
"panels.discover.initWhat": "It will write market.json and README.md on {branch}, commit once, and push. Modules you publish from this workbench will commit their
|
|
3278
|
+
"panels.discover.initWhat": "It will write market.json and README.md on {branch}, commit once, and push. Modules you publish from this workbench will commit their build files under packages/<unit>/. The repository stays owned by its owner.",
|
|
3250
3279
|
"panels.discover.initBranch": "Branch",
|
|
3251
|
-
"panels.discover.initBranchHint": "The index and
|
|
3280
|
+
"panels.discover.initBranchHint": "The index and build files go to this branch; an empty repository gets it created.",
|
|
3252
3281
|
"panels.discover.initBranchBad": "Use only letters, digits, dots, underscores, slashes, or dashes in a branch name.",
|
|
3253
3282
|
"panels.discover.initOk": "Initialize",
|
|
3254
3283
|
"panels.discover.initBusy": "Initializing…",
|
|
@@ -3352,11 +3381,11 @@ window.__ModuleLoader__.load({
|
|
|
3352
3381
|
"panels.market.add.doneApplied": "Installed and live.",
|
|
3353
3382
|
"panels.market.add.doneRestart": "Installed — restart once to pick it up.",
|
|
3354
3383
|
"panels.market.add.restartWhy": "Why this needs a restart: {reason}",
|
|
3355
|
-
"panels.market.add.restartWhy.no-hmr": "this configuration only
|
|
3384
|
+
"panels.market.add.restartWhy.no-hmr": "this configuration is only read at startup, so a restart is needed",
|
|
3356
3385
|
"panels.market.add.restartWhy.package-moved": "an installed package now resolves to another directory, or the change replaced something dsh itself provides",
|
|
3357
3386
|
"panels.market.add.restartWhy.host-module": "the change reaches modules dsh itself loaded",
|
|
3358
|
-
"panels.market.add.restartWhy.unmanaged-plugin": "the change reaches a plugin running
|
|
3359
|
-
"panels.market.add.restartWhy.module-comparison": "dsh could not
|
|
3387
|
+
"panels.market.add.restartWhy.unmanaged-plugin": "the change reaches a plugin that is running but not on the install list",
|
|
3388
|
+
"panels.market.add.restartWhy.module-comparison": "dsh could not confirm that the running plugin is the copy installed on this machine",
|
|
3360
3389
|
"panels.market.add.cancelled": "Cancelled.",
|
|
3361
3390
|
"panels.market.add.failed": "Didn't work: {reason}",
|
|
3362
3391
|
"panels.market.add.removed": "It has been removed.",
|
|
@@ -3366,10 +3395,10 @@ window.__ModuleLoader__.load({
|
|
|
3366
3395
|
"panels.market.add.removedRestart": "Removed — restart once to finish.",
|
|
3367
3396
|
"panels.market.add.remove": "Remove it",
|
|
3368
3397
|
"panels.market.add.problem.invalidSpec": "That is not a spec we accept: it cannot be empty or start with a dash.",
|
|
3369
|
-
"panels.market.add.problem.alreadyInstalled": "That package is already in
|
|
3398
|
+
"panels.market.add.problem.alreadyInstalled": "That package is already in this workbench (add @version to switch versions).",
|
|
3370
3399
|
"panels.market.add.problem.notFound": "No such package on that source. Try another name or version.",
|
|
3371
3400
|
"panels.market.add.problem.notAPackage": "There is no package at that location. Pick a folder that contains a package.json.",
|
|
3372
|
-
"panels.market.add.problem.notABundle": "It is an npm package, but not a dsh plugin (
|
|
3401
|
+
"panels.market.add.problem.notABundle": "It is an npm package, but not a dsh plugin (dsh cannot find what to load inside it).",
|
|
3373
3402
|
"panels.market.add.problem.network": "The source is unreachable. Check the network and retry.",
|
|
3374
3403
|
"panels.market.add.problem.unknown": "The check did not pass (reason unknown). Open the install details for the raw output, or retry.",
|
|
3375
3404
|
"panels.market.add.reason.invalidSpec": "the spec is not accepted",
|
|
@@ -3377,7 +3406,7 @@ window.__ModuleLoader__.load({
|
|
|
3377
3406
|
"panels.market.add.reason.notBundle": "it is not a dsh plugin package",
|
|
3378
3407
|
"panels.market.add.reason.notRemovable": "it ships with the installation and cannot be removed",
|
|
3379
3408
|
"panels.market.add.reason.bundleInUse": "something is still using it",
|
|
3380
|
-
"panels.market.add.reason.stopProfile": "this configuration
|
|
3409
|
+
"panels.market.add.reason.stopProfile": "this configuration needs a restart, so stop the workbench first",
|
|
3381
3410
|
"panels.market.add.reason.staleApproval": "the scripts to allow changed — start over",
|
|
3382
3411
|
"panels.market.add.reason.operationError": "pnpm failed (see the install output)",
|
|
3383
3412
|
"panels.market.add.reason.buildBlocked": "pnpm blocked install scripts",
|
|
@@ -3407,8 +3436,8 @@ window.__ModuleLoader__.load({
|
|
|
3407
3436
|
"blocker.forbidden.titleGeneric": "No access",
|
|
3408
3437
|
"blocker.forbidden.hint": "You are signed in, but this project/repo is not permitted for your account.",
|
|
3409
3438
|
"blocker.forbidden.open": "Open permissions page",
|
|
3410
|
-
"blocker.timeout.hint": "The
|
|
3411
|
-
"blocker.exec.hint": "Make sure opencli is installed and
|
|
3439
|
+
"blocker.timeout.hint": "The background browser may not have started; retrying usually helps.",
|
|
3440
|
+
"blocker.exec.hint": "Make sure opencli is installed and runs from your terminal (which opencli).",
|
|
3412
3441
|
"blocker.unknown.title": "Something went wrong",
|
|
3413
3442
|
"panels.reading": "Reading the panel setup…",
|
|
3414
3443
|
"panels.cardBroken": "This module will not render: {unit} ({reason})",
|
|
@@ -3422,7 +3451,7 @@ window.__ModuleLoader__.load({
|
|
|
3422
3451
|
"env.elapsed": "Waiting {seconds}s",
|
|
3423
3452
|
"env.stepFailed.install": "install failed",
|
|
3424
3453
|
"env.stepFailed.path": "installed but not found",
|
|
3425
|
-
"env.stepFailed.shell": "
|
|
3454
|
+
"env.stepFailed.shell": "cannot reach the command line",
|
|
3426
3455
|
"env.toolchain.ok": "Looks good",
|
|
3427
3456
|
"env.toolchain.warn": "Almost ready",
|
|
3428
3457
|
"env.opencli.ok": "Ready",
|
|
@@ -3439,10 +3468,10 @@ window.__ModuleLoader__.load({
|
|
|
3439
3468
|
"env.fix.title": "How to fix it",
|
|
3440
3469
|
"env.fix.why": "The workbench uses its own background tool (installed separately from the one in your terminal), and it is not set up on this machine yet.",
|
|
3441
3470
|
"env.fix.whyPath": "The background tool is installed, but this environment cannot find it — usually a PATH or shell-session issue.",
|
|
3442
|
-
"env.fix.whyShell": "The workbench
|
|
3471
|
+
"env.fix.whyShell": "The workbench cannot reach the command line on this machine, so it cannot fetch data — you cannot install this from here; someone needs to fix the background environment.",
|
|
3443
3472
|
"env.fix.step": "Run this in a terminal, then hit Retry:",
|
|
3444
3473
|
"env.fix.stepPath": "Open a new terminal window (or make sure npm’s global bin directory is on PATH), then hit Retry.",
|
|
3445
|
-
"env.fix.stepShell": "Restart the workbench (or dsh); if it keeps happening, the
|
|
3474
|
+
"env.fix.stepShell": "Restart the workbench (or dsh); if it keeps happening, the workbench still cannot reach the command line.",
|
|
3446
3475
|
"env.fix.permission": "Permission denied: rerun with sudo, or point npm’s global directory at your home.",
|
|
3447
3476
|
"env.fix.network": "Network unreachable: check your network or proxy, then retry.",
|
|
3448
3477
|
"env.fix.details": "Details (for troubleshooting)",
|
|
@@ -3471,9 +3500,9 @@ window.__ModuleLoader__.load({
|
|
|
3471
3500
|
"env.warm.done": "Ready ({n} sites)",
|
|
3472
3501
|
"env.warm.short": "Could not sign in early this time — nothing breaks; the first read fills it in",
|
|
3473
3502
|
"env.unit.failed": "This module cannot start",
|
|
3474
|
-
"env.unit.failedHint": "It failed while
|
|
3475
|
-
"env.unit.unchecked": "Cannot check: no
|
|
3476
|
-
"env.unit.uncheckedHint": "The module is not the problem — the
|
|
3503
|
+
"env.unit.failedHint": "It failed while starting up; other modules are unaffected.",
|
|
3504
|
+
"env.unit.unchecked": "Cannot check: no command line",
|
|
3505
|
+
"env.unit.uncheckedHint": "The module is not the problem — the workbench cannot reach the command line. Restart the workbench.",
|
|
3477
3506
|
"adapterSet.not-configured": "No adapter set configured; using the default.",
|
|
3478
3507
|
"adapterSet.no-profile": "No profile found, so the adapter set cannot load; using the default.",
|
|
3479
3508
|
"adapterSet.malformed": "An adapter set must be a package name (for example @acme/adapters-set); using the default.",
|
|
@@ -3516,7 +3545,7 @@ window.__ModuleLoader__.load({
|
|
|
3516
3545
|
"sidebarEdition.official": "Official",
|
|
3517
3546
|
"sidebarEdition.officialHint": "Matches dsh exactly and stays stable: search, view options, show more, archive, add workspace — no waiting for us to catch up. Pick it to keep things simple.",
|
|
3518
3547
|
"sidebarEdition.custom": "Custom",
|
|
3519
|
-
"sidebarEdition.customHint": "Built for multi-project work: one project per dropdown, recency-first sessions,
|
|
3548
|
+
"sidebarEdition.customHint": "Built for multi-project work: one project per dropdown, recency-first sessions, long names scroll, edges fade, DIY new session. Easier when you juggle projects.",
|
|
3520
3549
|
"sidebarEdition.saving": "Configuring…",
|
|
3521
3550
|
"sidebarEdition.reloadRequired": "Saved. Reload the page to apply — no workbench restart needed.",
|
|
3522
3551
|
"sidebarEdition.reload": "Reload page",
|
|
@@ -3545,25 +3574,25 @@ window.__ModuleLoader__.load({
|
|
|
3545
3574
|
"record.act.halt": "Halt",
|
|
3546
3575
|
"approval.record.site": "Site",
|
|
3547
3576
|
"approval.record.what": "Records",
|
|
3548
|
-
"approval.record.lands": "
|
|
3577
|
+
"approval.record.lands": "Saves to",
|
|
3549
3578
|
"approval.record.noUrl": "no site given (this call gets refused)",
|
|
3550
3579
|
"approval.record.oneAction": "one action",
|
|
3551
3580
|
"approval.record.noSwitch": "it will not switch you back (the leftbar footer shows the state)",
|
|
3552
|
-
"approval.longTask.what": "
|
|
3553
|
-
"approval.longTask.signal": "stopping only sends an interrupt signal —
|
|
3581
|
+
"approval.longTask.what": "Task to stop",
|
|
3582
|
+
"approval.longTask.signal": "stopping only sends an interrupt signal — wrapping up the run is up to the module",
|
|
3554
3583
|
"approval.publish.module": "Module",
|
|
3555
3584
|
"approval.publish.target": "Target",
|
|
3556
3585
|
"approval.publish.version": "Version",
|
|
3557
3586
|
"approval.publish.author": "Author",
|
|
3558
|
-
"approval.publish.authorMissing": "unsigned
|
|
3587
|
+
"approval.publish.authorMissing": "unsigned",
|
|
3559
3588
|
"approval.publish.registry": "Registry",
|
|
3560
3589
|
"approval.publish.repo": "Repository",
|
|
3561
3590
|
"approval.publish.branch": "Branch",
|
|
3562
3591
|
"approval.publish.defaultBranch": "default branch",
|
|
3563
|
-
"approval.publish.artifacts": "
|
|
3592
|
+
"approval.publish.artifacts": "Build files",
|
|
3564
3593
|
"approval.publish.index": "Index",
|
|
3565
3594
|
"approval.publish.commits": "Commits",
|
|
3566
|
-
"approval.publish.twoCommits": "
|
|
3595
|
+
"approval.publish.twoCommits": "build files + market.json in 2 commits, one push",
|
|
3567
3596
|
"approval.publish.reading": "Reading…",
|
|
3568
3597
|
"approval.publish.changelog": "Changelog for {version}",
|
|
3569
3598
|
"approval.publish.changelogMissing": "No changelog entry for {version}; publishing will be blocked",
|
|
@@ -3711,15 +3740,14 @@ window.__ModuleLoader__.load({
|
|
|
3711
3740
|
"panels.market.update": "更新",
|
|
3712
3741
|
"panels.market.swapSlow": "还没换上:可能网慢或没装上。再点一次「更新」;一直这样就把 dsh 重启一遍。",
|
|
3713
3742
|
"panels.market.removeSlow": "还没卸掉:可能网慢或卸载没走完。等一下再看;一直这样就把 dsh 重启一遍。",
|
|
3714
|
-
"panels.market.updateNoChange": "
|
|
3743
|
+
"panels.market.updateNoChange": "更新失败:还是 {from};源上最新是 {latest},可以再点一次「更新」。",
|
|
3715
3744
|
"panels.market.updateUnknownVersion": "(问不到)",
|
|
3716
|
-
"panels.market.updateGone": "
|
|
3717
|
-
"panels.market.updateRestored": "
|
|
3745
|
+
"panels.market.updateGone": "更新失败:更新后找不到这个模块。",
|
|
3746
|
+
"panels.market.updateRestored": "更新失败:更新后找不到新版本,已把 {version} 装回去。",
|
|
3718
3747
|
"panels.market.updateBehind": "装上了 {installed},但源上最新是 {latest} —— 没更到最新,可以再点一次。",
|
|
3719
|
-
"panels.market.selfUpdateFailed": "
|
|
3748
|
+
"panels.market.selfUpdateFailed": "工作台更新失败:{reason}",
|
|
3720
3749
|
"panels.market.selfUpdateUnknown": "外部进程没留下原因(看 ~/.dsh/workbench/self-update.log)",
|
|
3721
|
-
"panels.market.selfUpdateRolledBack": "
|
|
3722
|
-
"panels.market.selfUpdateNeedsMigrate": "工作台已更新。旧会话 / 项目不会自动并:先退出所有 dsh,再运行 dsh-workbench migrate(--force 可补并)。",
|
|
3750
|
+
"panels.market.selfUpdateRolledBack": "工作台更新失败,已回滚到 {version}。",
|
|
3723
3751
|
"panels.market.uninstall": "卸载",
|
|
3724
3752
|
"panels.market.uninstallLabel": "卸载 {name}",
|
|
3725
3753
|
"panels.market.installing": "正在安装…",
|
|
@@ -3741,9 +3769,27 @@ window.__ModuleLoader__.load({
|
|
|
3741
3769
|
"panels.market.empty": "暂无可用模块",
|
|
3742
3770
|
"panels.market.sectionPlugins": "已安装 opencli 插件",
|
|
3743
3771
|
"panels.market.moduleOutdated": "有新版",
|
|
3772
|
+
"panels.market.updateNeedsWorkbench": "新版本要先把工作台升级才能用",
|
|
3773
|
+
"panels.market.updateIncompatible": "新版本和当前的工作台不匹配,暂时不能更新",
|
|
3744
3774
|
"panels.market.moduleRefused": "模块版本与工作台不匹配,暂时无法使用",
|
|
3745
3775
|
"panels.market.moduleRestartHint": "重启后生效",
|
|
3746
3776
|
"panels.market.pendingRestart": "重启后生效",
|
|
3777
|
+
"panels.market.pendingFollowUp": "旧数据待迁移",
|
|
3778
|
+
"panels.market.migrationHint": "旧会话和项目还没搬过来",
|
|
3779
|
+
"panels.market.migrateAction": "迁移旧数据",
|
|
3780
|
+
"panels.market.migrating": "正在迁移…",
|
|
3781
|
+
"panels.market.migrateConfirmTitle": "迁移旧数据?",
|
|
3782
|
+
"panels.market.migrateConfirmDetail": "先退出 dsh web / Desktop。迁移只补缺、不覆盖;旧目录保留。",
|
|
3783
|
+
"panels.market.migrateConfirmAck": "我已经退出 dsh web / Desktop",
|
|
3784
|
+
"panels.market.migrateConfirmYes": "开始迁移",
|
|
3785
|
+
"panels.market.migrateDone": "迁移完成:补了 {added} 个项目;重启工作台和 dsh web 后出现。",
|
|
3786
|
+
"panels.market.dismissFollowUp": "不再提醒",
|
|
3787
|
+
"panels.market.dismissing": "正在收起…",
|
|
3788
|
+
"panels.market.dismissFollowUpTitle": "不再提醒这件事?",
|
|
3789
|
+
"panels.market.dismissFollowUpDetail": "提示会从模块市场收起,但不会迁移或删除旧数据。旧会话和项目仍留在旧目录,新版本里看不到;以后需要时仍可运行 dsh-workbench migrate。",
|
|
3790
|
+
"panels.market.dismissFollowUpAck": "我知道旧数据不会自动出现",
|
|
3791
|
+
"panels.market.dismissFollowUpYes": "不再提醒",
|
|
3792
|
+
"panels.market.dismissed": "已不再提醒;旧数据仍在旧目录,需要时仍可运行 dsh-workbench migrate。",
|
|
3747
3793
|
"panels.market.workbenchName": "工作台",
|
|
3748
3794
|
"panels.market.pluginBroken": "这份插件装坏了:认不出它是什么。可以先卸载,再让 agent 按包名重装一次。",
|
|
3749
3795
|
"panels.market.restartNeeded": "新版装好了,重启一次才生效。",
|
|
@@ -3827,7 +3873,7 @@ window.__ModuleLoader__.load({
|
|
|
3827
3873
|
"panels.market.add.exampleTitle": "示例",
|
|
3828
3874
|
"panels.market.add.exampleFill": "填入示例",
|
|
3829
3875
|
"panels.market.add.registryLabel": "安装源",
|
|
3830
|
-
"panels.market.add.registryProfile": "
|
|
3876
|
+
"panels.market.add.registryProfile": "这份工作台配的源",
|
|
3831
3877
|
"panels.market.add.registryPnpm": "pnpm 自己配的源",
|
|
3832
3878
|
"panels.market.add.check": "预检",
|
|
3833
3879
|
"panels.market.add.checking": "正在预检…",
|
|
@@ -3848,12 +3894,16 @@ window.__ModuleLoader__.load({
|
|
|
3848
3894
|
"panels.market.tabs": "模块市场的两个面",
|
|
3849
3895
|
"panels.tab.discover": "发现",
|
|
3850
3896
|
"panels.discover.loading": "正在读取索引",
|
|
3897
|
+
"panels.discover.slowHint": "读取较慢:如有授权提示,先完成它,或换一个索引源。",
|
|
3851
3898
|
"panels.discover.lead": "从索引源浏览模块;装上就能用。",
|
|
3852
3899
|
"panels.discover.addSource": "添加",
|
|
3853
3900
|
"panels.discover.addingSource": "正在添加…",
|
|
3854
3901
|
"panels.discover.addFirstSource": "添加索引源",
|
|
3855
3902
|
"panels.discover.removeSource": "移除",
|
|
3856
3903
|
"panels.discover.removeSourceNamed": "移除 {url}",
|
|
3904
|
+
"panels.discover.useSource": "使用",
|
|
3905
|
+
"panels.discover.useSourceNamed": "使用 {label}",
|
|
3906
|
+
"panels.discover.sourceCurrent": "当前使用",
|
|
3857
3907
|
"panels.discover.refresh": "刷新",
|
|
3858
3908
|
"panels.discover.search": "搜索模块",
|
|
3859
3909
|
"panels.discover.all": "全部",
|
|
@@ -3865,8 +3915,8 @@ window.__ModuleLoader__.load({
|
|
|
3865
3915
|
"panels.discover.sourcePlaceholder": "https://example.com/index.json 或 git@git.example.com:wb/market.git",
|
|
3866
3916
|
"panels.discover.sourceRef": "分支",
|
|
3867
3917
|
"panels.discover.sourcePath": "索引文件",
|
|
3868
|
-
"panels.discover.sourceLocal": "
|
|
3869
|
-
"panels.discover.sourceLocalHint": "
|
|
3918
|
+
"panels.discover.sourceLocal": "本地副本目录(可选)",
|
|
3919
|
+
"panels.discover.sourceLocalHint": "不填就放到 ~/.dsh/workbench/market-index/。",
|
|
3870
3920
|
"panels.discover.save": "保存并刷新",
|
|
3871
3921
|
"panels.discover.cancel": "取消",
|
|
3872
3922
|
"panels.discover.retry": "重试",
|
|
@@ -3879,9 +3929,9 @@ window.__ModuleLoader__.load({
|
|
|
3879
3929
|
"panels.discover.missingIndex": "仓库里还没有索引文件 {path}",
|
|
3880
3930
|
"panels.discover.initTitle": "把这个仓库初始化成模块市场索引?",
|
|
3881
3931
|
"panels.discover.initCta": "初始化成市场索引",
|
|
3882
|
-
"panels.discover.initWhat": "会在 {branch} 分支写 market.json 与 README.md
|
|
3932
|
+
"panels.discover.initWhat": "会在 {branch} 分支写 market.json 与 README.md,提交一次并推上去;之后从这个工作台发布的模块会把打包好的文件提交到 packages/<unit>/。仓库的写权限归它的所有者。",
|
|
3883
3933
|
"panels.discover.initBranch": "分支",
|
|
3884
|
-
"panels.discover.initBranchHint": "
|
|
3934
|
+
"panels.discover.initBranchHint": "索引和打包文件都发到这个分支;空仓库会新建它。",
|
|
3885
3935
|
"panels.discover.initBranchBad": "分支名只能用字母、数字、点、下划线、斜杠或短横线",
|
|
3886
3936
|
"panels.discover.initOk": "初始化",
|
|
3887
3937
|
"panels.discover.initBusy": "正在初始化…",
|
|
@@ -3985,11 +4035,11 @@ window.__ModuleLoader__.load({
|
|
|
3985
4035
|
"panels.market.add.doneApplied": "装好了,已经生效。",
|
|
3986
4036
|
"panels.market.add.doneRestart": "装好了,重启一次才生效。",
|
|
3987
4037
|
"panels.market.add.restartWhy": "为什么这一版要重启:{reason}",
|
|
3988
|
-
"panels.market.add.restartWhy.no-hmr": "
|
|
4038
|
+
"panels.market.add.restartWhy.no-hmr": "这份配置只在启动时读一次,改了得重启",
|
|
3989
4039
|
"panels.market.add.restartWhy.package-moved": "某个已经装着的包换到了新的目录,或者这一下换掉了 dsh 自己提供的那份",
|
|
3990
4040
|
"panels.market.add.restartWhy.host-module": "这一下动到了 dsh 自己加载的模块",
|
|
3991
|
-
"panels.market.add.restartWhy.unmanaged-plugin": "
|
|
3992
|
-
"panels.market.add.restartWhy.module-comparison": "dsh
|
|
4041
|
+
"panels.market.add.restartWhy.unmanaged-plugin": "这一下动到了没登记过、正在运行的插件",
|
|
4042
|
+
"panels.market.add.restartWhy.module-comparison": "dsh 没法确认正在跑的插件就是这台机器上装好的那一份",
|
|
3993
4043
|
"panels.market.add.cancelled": "已取消。",
|
|
3994
4044
|
"panels.market.add.failed": "没成功:{reason}",
|
|
3995
4045
|
"panels.market.add.removed": "已经移除了。",
|
|
@@ -3999,10 +4049,10 @@ window.__ModuleLoader__.load({
|
|
|
3999
4049
|
"panels.market.add.removedRestart": "卸掉了,重启一次才彻底生效。",
|
|
4000
4050
|
"panels.market.add.remove": "移除它",
|
|
4001
4051
|
"panels.market.add.problem.invalidSpec": "这个写法不认:不能是空的,也不能以横杠开头。",
|
|
4002
|
-
"panels.market.add.problem.alreadyInstalled": "
|
|
4052
|
+
"panels.market.add.problem.alreadyInstalled": "这个包已经在这份工作台里了(要换版本请带上 @版本)。",
|
|
4003
4053
|
"panels.market.add.problem.notFound": "源上没有这个包。换个包名或版本再试。",
|
|
4004
4054
|
"panels.market.add.problem.notAPackage": "这个位置没有包。选一个包含 package.json 的目录。",
|
|
4005
|
-
"panels.market.add.problem.notABundle": "它是一个 npm 包,但不是 dsh
|
|
4055
|
+
"panels.market.add.problem.notABundle": "它是一个 npm 包,但不是 dsh 插件包(dsh 在里面找不到该加载什么)。",
|
|
4006
4056
|
"panels.market.add.problem.network": "源连不上。检查网络后重试。",
|
|
4007
4057
|
"panels.market.add.problem.unknown": "预检没通过(原因未知)。展开安装详情看原始输出,或重试。",
|
|
4008
4058
|
"panels.market.add.reason.invalidSpec": "写法不认",
|
|
@@ -4010,7 +4060,7 @@ window.__ModuleLoader__.load({
|
|
|
4010
4060
|
"panels.market.add.reason.notBundle": "它不是一个 dsh 插件包",
|
|
4011
4061
|
"panels.market.add.reason.notRemovable": "它是安装自带的组合包,不能卸",
|
|
4012
4062
|
"panels.market.add.reason.bundleInUse": "还有东西在用它,卸不掉",
|
|
4013
|
-
"panels.market.add.reason.stopProfile": "
|
|
4063
|
+
"panels.market.add.reason.stopProfile": "这份配置改了要重启,得先停掉工作台",
|
|
4014
4064
|
"panels.market.add.reason.staleApproval": "要允许的安装脚本已经变了,重新来一次",
|
|
4015
4065
|
"panels.market.add.reason.operationError": "pnpm 执行出错(详情见安装输出)",
|
|
4016
4066
|
"panels.market.add.reason.buildBlocked": "pnpm 拦下了安装脚本",
|
|
@@ -4033,15 +4083,15 @@ window.__ModuleLoader__.load({
|
|
|
4033
4083
|
"blocker.market.open": "去模块市场",
|
|
4034
4084
|
"blocker.login.title": "需要登录 {platform}",
|
|
4035
4085
|
"blocker.login.titleGeneric": "需要登录",
|
|
4036
|
-
"blocker.login.hint": "
|
|
4086
|
+
"blocker.login.hint": "工作台借你浏览器里的登录状态;登录一次就行,之后不用再登。",
|
|
4037
4087
|
"blocker.login.go": "去登录",
|
|
4038
4088
|
"blocker.login.manual": "在终端执行该插件的登录命令(见插件的文档),按提示完成登录后重试。",
|
|
4039
4089
|
"blocker.forbidden.title": "没有权限访问 {platform}",
|
|
4040
4090
|
"blocker.forbidden.titleGeneric": "没有权限",
|
|
4041
4091
|
"blocker.forbidden.hint": "账号已登录,但没有这个项目/仓库的权限;申请之后再试。",
|
|
4042
4092
|
"blocker.forbidden.open": "打开权限页",
|
|
4043
|
-
"blocker.timeout.hint": "
|
|
4044
|
-
"blocker.exec.hint": "确认 opencli
|
|
4093
|
+
"blocker.timeout.hint": "后台浏览器没起来,重试一次通常就好。",
|
|
4094
|
+
"blocker.exec.hint": "确认 opencli 已经装好、在终端里能直接运行(which opencli)。",
|
|
4045
4095
|
"blocker.unknown.title": "出了点问题",
|
|
4046
4096
|
"panels.reading": "正在读取面板配置…",
|
|
4047
4097
|
"panels.cardBroken": "这个模块起不来:{unit}({reason})",
|
|
@@ -4055,7 +4105,7 @@ window.__ModuleLoader__.load({
|
|
|
4055
4105
|
"env.elapsed": "已等待 {seconds} 秒",
|
|
4056
4106
|
"env.stepFailed.install": "装不上",
|
|
4057
4107
|
"env.stepFailed.path": "装了但还找不到",
|
|
4058
|
-
"env.stepFailed.shell": "
|
|
4108
|
+
"env.stepFailed.shell": "连不上命令行",
|
|
4059
4109
|
"env.toolchain.ok": "正常",
|
|
4060
4110
|
"env.toolchain.warn": "还没完全准备好",
|
|
4061
4111
|
"env.opencli.ok": "已就绪",
|
|
@@ -4072,10 +4122,10 @@ window.__ModuleLoader__.load({
|
|
|
4072
4122
|
"env.fix.title": "怎么解决",
|
|
4073
4123
|
"env.fix.why": "工作台用它自己那份后台工具(与你在终端里那套分开装,互不影响),这台机器上还没装好它。",
|
|
4074
4124
|
"env.fix.whyPath": "后台工具装上了,但当前环境还找不到它 —— 通常是 PATH 或终端会话的问题。",
|
|
4075
|
-
"env.fix.whyShell": "
|
|
4125
|
+
"env.fix.whyShell": "工作台拿不到这台机器的命令行,所以取不了数据 —— 这一步你装不了,需要有人处理后台环境。",
|
|
4076
4126
|
"env.fix.step": "在终端里运行下面这条命令,装好之后点「重试」:",
|
|
4077
4127
|
"env.fix.stepPath": "新开一个终端窗口(或确认 npm 的全局 bin 目录在 PATH 里),然后点「重试」。",
|
|
4078
|
-
"env.fix.stepShell": "重启一次工作台(或 dsh
|
|
4128
|
+
"env.fix.stepShell": "重启一次工作台(或 dsh);如果反复出现,说明工作台还是拿不到命令行。",
|
|
4079
4129
|
"env.fix.permission": "权限不够:在命令前加 sudo 重跑,或先把 npm 的全局目录配到你的用户目录。",
|
|
4080
4130
|
"env.fix.network": "网络不通:检查网络或代理设置后重试。",
|
|
4081
4131
|
"env.fix.details": "详细输出(排障用)",
|
|
@@ -4104,9 +4154,9 @@ window.__ModuleLoader__.load({
|
|
|
4104
4154
|
"env.warm.done": "已就绪({n} 个站点)",
|
|
4105
4155
|
"env.warm.short": "这次没提前连上 —— 不影响用,第一次取数会自己补",
|
|
4106
4156
|
"env.unit.failed": "这个模块起不来",
|
|
4107
|
-
"env.unit.failedHint": "
|
|
4108
|
-
"env.unit.unchecked": "
|
|
4109
|
-
"env.unit.uncheckedHint": "
|
|
4157
|
+
"env.unit.failedHint": "它自己启动时报了错,别的模块不受影响。",
|
|
4158
|
+
"env.unit.unchecked": "检测不了:拿不到命令行",
|
|
4159
|
+
"env.unit.uncheckedHint": "不是这个模块的问题,是工作台拿不到命令行 —— 重启一次工作台再试。",
|
|
4110
4160
|
"adapterSet.not-configured": "没配置适配器集合,用默认的。",
|
|
4111
4161
|
"adapterSet.no-profile": "找不到 profile,没法加载适配器集合;先用默认的。",
|
|
4112
4162
|
"adapterSet.malformed": "适配器集合要写包名(如 @acme/adapters-set);先用默认的。",
|
|
@@ -4149,7 +4199,7 @@ window.__ModuleLoader__.load({
|
|
|
4149
4199
|
"sidebarEdition.official": "官方",
|
|
4150
4200
|
"sidebarEdition.officialHint": "跟 dsh 官方一致、最稳:搜索、视图选项、显示更多、归档、添加工作区都齐,升级也不等我们适配。想省心就选它。",
|
|
4151
4201
|
"sidebarEdition.custom": "自定义",
|
|
4152
|
-
"sidebarEdition.customHint": "
|
|
4202
|
+
"sidebarEdition.customHint": "为多项目工作流做的:项目下拉一屏一个项目,会话按最近更新排,名字自动滚动、两侧渐隐,工坊 DIY 新会话。项目多时更顺手。",
|
|
4153
4203
|
"sidebarEdition.saving": "配置中…",
|
|
4154
4204
|
"sidebarEdition.reloadRequired": "已写入。刷新页面后生效(不用重启工作台)。",
|
|
4155
4205
|
"sidebarEdition.reload": "刷新页面",
|
|
@@ -4178,25 +4228,25 @@ window.__ModuleLoader__.load({
|
|
|
4178
4228
|
"record.act.halt": "停",
|
|
4179
4229
|
"approval.record.site": "站点",
|
|
4180
4230
|
"approval.record.what": "录制功能",
|
|
4181
|
-
"approval.record.lands": "
|
|
4231
|
+
"approval.record.lands": "保存到",
|
|
4182
4232
|
"approval.record.noUrl": "没给站点地址(这次会被当场拒)",
|
|
4183
4233
|
"approval.record.oneAction": "一次操作",
|
|
4184
4234
|
"approval.record.noSwitch": "录完不会替你切回来(左栏底部会亮一条状态)",
|
|
4185
|
-
"approval.longTask.what": "
|
|
4186
|
-
"approval.longTask.signal": "停了只是让工作台发出中断信号 ——
|
|
4235
|
+
"approval.longTask.what": "要停的那次任务",
|
|
4236
|
+
"approval.longTask.signal": "停了只是让工作台发出中断信号 —— 这次任务怎么收尾由模块自己负责",
|
|
4187
4237
|
"approval.publish.module": "模块",
|
|
4188
4238
|
"approval.publish.target": "目标",
|
|
4189
4239
|
"approval.publish.version": "版本",
|
|
4190
4240
|
"approval.publish.author": "作者",
|
|
4191
|
-
"approval.publish.authorMissing": "
|
|
4241
|
+
"approval.publish.authorMissing": "未署名",
|
|
4192
4242
|
"approval.publish.registry": "源",
|
|
4193
4243
|
"approval.publish.repo": "仓库",
|
|
4194
4244
|
"approval.publish.branch": "分支",
|
|
4195
4245
|
"approval.publish.defaultBranch": "默认分支",
|
|
4196
|
-
"approval.publish.artifacts": "
|
|
4246
|
+
"approval.publish.artifacts": "打包文件",
|
|
4197
4247
|
"approval.publish.index": "索引",
|
|
4198
4248
|
"approval.publish.commits": "提交",
|
|
4199
|
-
"approval.publish.twoCommits": "
|
|
4249
|
+
"approval.publish.twoCommits": "打包文件 + market.json 两次提交,一次推送",
|
|
4200
4250
|
"approval.publish.reading": "读取中…",
|
|
4201
4251
|
"approval.publish.changelog": "{version} 的更新日志",
|
|
4202
4252
|
"approval.publish.changelogMissing": "这一版还没有更新日志({version}),发布会被拦下",
|
|
@@ -4972,6 +5022,7 @@ window.__ModuleLoader__.load({
|
|
|
4972
5022
|
broken: "panels.market.broken",
|
|
4973
5023
|
outdated: "panels.market.moduleOutdated",
|
|
4974
5024
|
"pending-restart": "panels.market.pendingRestart",
|
|
5025
|
+
"pending-followup": "panels.market.pendingFollowUp",
|
|
4975
5026
|
missing: "panels.market.missing",
|
|
4976
5027
|
unchecked: "panels.market.unchecked",
|
|
4977
5028
|
unknown: "panels.market.unchecked"
|
|
@@ -4984,6 +5035,7 @@ window.__ModuleLoader__.load({
|
|
|
4984
5035
|
broken: "error",
|
|
4985
5036
|
outdated: "warning",
|
|
4986
5037
|
"pending-restart": "warning",
|
|
5038
|
+
"pending-followup": "warning",
|
|
4987
5039
|
missing: "idle",
|
|
4988
5040
|
unchecked: "idle",
|
|
4989
5041
|
unknown: "idle"
|
|
@@ -5008,35 +5060,32 @@ window.__ModuleLoader__.load({
|
|
|
5008
5060
|
if (reported.length > 0) return reported;
|
|
5009
5061
|
return [...new Set(client ?? [])];
|
|
5010
5062
|
}
|
|
5011
|
-
function
|
|
5012
|
-
|
|
5013
|
-
for (const manifest of manifests) {
|
|
5014
|
-
const titleKey = manifest.card?.titleKey;
|
|
5015
|
-
if (titleKey === void 0 || known.has(manifest.id)) continue;
|
|
5016
|
-
next ??= new Map(known);
|
|
5017
|
-
next.set(manifest.id, titleKey);
|
|
5018
|
-
}
|
|
5019
|
-
return next ?? known;
|
|
5063
|
+
function updateBlockHintOf(block) {
|
|
5064
|
+
return block === "needs-workbench" ? "panels.market.updateNeedsWorkbench" : "panels.market.updateIncompatible";
|
|
5020
5065
|
}
|
|
5021
5066
|
function installedIdSet(installed) {
|
|
5022
5067
|
if (installed === void 0) return null;
|
|
5023
5068
|
return new Set(installed.map((item) => item.unit));
|
|
5024
5069
|
}
|
|
5025
|
-
function installedRows(modules, manifests, listed,
|
|
5070
|
+
function installedRows(modules, manifests, listed, names, defaults = /* @__PURE__ */ new Set(), changed = {}) {
|
|
5026
5071
|
const titles = new Map(manifests.map((manifest) => [manifest.id, manifest.card?.titleKey]));
|
|
5027
5072
|
const rows = [];
|
|
5028
5073
|
for (const module of modules) {
|
|
5029
5074
|
if (listed.has(module.unit)) continue;
|
|
5030
5075
|
const latest = module.local === true ? void 0 : module.latest;
|
|
5031
5076
|
const outdated = latest !== void 0 && latest !== module.installed;
|
|
5077
|
+
const blocked = outdated ? module.latestBlocked : void 0;
|
|
5032
5078
|
const loaded = titles.has(module.unit);
|
|
5033
5079
|
const refused = refusalReasons(module.refused, module.clientRefused);
|
|
5034
5080
|
const pending = !loaded && refused.length === 0;
|
|
5081
|
+
const titleKey = titles.get(module.unit);
|
|
5082
|
+
const remembered = titleKey === void 0 ? names?.get(module.unit) : void 0;
|
|
5035
5083
|
rows.push({
|
|
5036
5084
|
id: module.unit,
|
|
5037
|
-
titleKey:
|
|
5085
|
+
titleKey: titleKey ?? module.unit,
|
|
5086
|
+
...remembered === void 0 ? {} : { label: remembered },
|
|
5038
5087
|
state: outdated ? "outdated" : refused.length > 0 ? "unusable" : pending ? "inactive" : "installed",
|
|
5039
|
-
...pending ? { hint: "panels.market.moduleRestartHint" } : {},
|
|
5088
|
+
...pending ? { hint: "panels.market.moduleRestartHint" } : blocked === void 0 ? {} : { hint: updateBlockHintOf(blocked) },
|
|
5040
5089
|
...refused.length === 0 ? {} : { note: {
|
|
5041
5090
|
key: "panels.market.moduleRefused",
|
|
5042
5091
|
params: {}
|
|
@@ -5044,7 +5093,7 @@ window.__ModuleLoader__.load({
|
|
|
5044
5093
|
...module.local === true ? { local: true } : {},
|
|
5045
5094
|
pkg: module.pkg,
|
|
5046
5095
|
canInstall: false,
|
|
5047
|
-
canUpdate: outdated,
|
|
5096
|
+
canUpdate: outdated && blocked === void 0,
|
|
5048
5097
|
canUninstall: true,
|
|
5049
5098
|
version: {
|
|
5050
5099
|
installed: module.installed,
|
|
@@ -5052,7 +5101,8 @@ window.__ModuleLoader__.load({
|
|
|
5052
5101
|
},
|
|
5053
5102
|
...outdated ? { moduleUpdate: {
|
|
5054
5103
|
installed: module.installed,
|
|
5055
|
-
latest
|
|
5104
|
+
latest,
|
|
5105
|
+
...blocked === void 0 ? {} : { blocked }
|
|
5056
5106
|
} } : {},
|
|
5057
5107
|
defaultShown: defaults.has(module.unit),
|
|
5058
5108
|
defaultChanged: changed[module.unit] ?? 0
|
|
@@ -5065,11 +5115,14 @@ window.__ModuleLoader__.load({
|
|
|
5065
5115
|
return SWITCH_LOCKED.has(row.state);
|
|
5066
5116
|
}
|
|
5067
5117
|
function marketActions$1(row) {
|
|
5068
|
-
if (row.workbench === true)
|
|
5118
|
+
if (row.workbench === true) {
|
|
5119
|
+
if (row.followUp !== void 0 && row.state === "pending-followup") return row.followUp.hard ? ["migrate-workbench"] : ["migrate-workbench", "dismiss-followup"];
|
|
5120
|
+
return row.canUpdate ? ["update-workbench"] : [];
|
|
5121
|
+
}
|
|
5069
5122
|
if (row.plugin === true) return [...row.canUpdate ? ["update-plugin"] : [], ...row.canUninstall ? ["uninstall-plugin"] : []];
|
|
5070
5123
|
return [
|
|
5071
5124
|
...row.canInstall ? ["install"] : [],
|
|
5072
|
-
...row.moduleUpdate === void 0 ? row.canUpdate ? ["update"] : [] : ["update-bundle"],
|
|
5125
|
+
...row.moduleUpdate === void 0 ? row.canUpdate ? ["update"] : [] : row.moduleUpdate.blocked === void 0 ? ["update-bundle"] : [],
|
|
5073
5126
|
...row.canUninstall ? [row.pkg === void 0 ? "uninstall" : "remove-bundle"] : []
|
|
5074
5127
|
];
|
|
5075
5128
|
}
|
|
@@ -5147,7 +5200,7 @@ window.__ModuleLoader__.load({
|
|
|
5147
5200
|
return manifests.filter((manifest) => !gone.has(manifest.id));
|
|
5148
5201
|
}
|
|
5149
5202
|
function marketHasUpdates(rows, shared = []) {
|
|
5150
|
-
return rows.some((row) => row.state === "outdated"
|
|
5203
|
+
return rows.some((row) => row.moduleUpdate === void 0 ? row.state === "outdated" : row.moduleUpdate.blocked === void 0) || shared.some((row) => row.state === "outdated" || row.state === "unsatisfied");
|
|
5151
5204
|
}
|
|
5152
5205
|
function marketUpdatesOf(modules) {
|
|
5153
5206
|
if (modules === null) return {};
|
|
@@ -5157,6 +5210,7 @@ window.__ModuleLoader__.load({
|
|
|
5157
5210
|
next[module.unit] = {
|
|
5158
5211
|
installed: module.installed,
|
|
5159
5212
|
...local || module.latest === void 0 ? {} : { latest: module.latest },
|
|
5213
|
+
...local || module.latest === void 0 || module.latestBlocked === void 0 ? {} : { blocked: module.latestBlocked },
|
|
5160
5214
|
...local ? { local: true } : {}
|
|
5161
5215
|
};
|
|
5162
5216
|
}
|
|
@@ -5195,9 +5249,11 @@ window.__ModuleLoader__.load({
|
|
|
5195
5249
|
const reAdopt = capability?.released === true && !installDeclared;
|
|
5196
5250
|
const moduleUpdate = entry === void 0 || entry.latest === void 0 || entry.latest === entry.installed ? void 0 : {
|
|
5197
5251
|
installed: entry.installed,
|
|
5198
|
-
latest: entry.latest
|
|
5252
|
+
latest: entry.latest,
|
|
5253
|
+
...entry.blocked === void 0 ? {} : { blocked: entry.blocked }
|
|
5199
5254
|
};
|
|
5200
5255
|
const shown = moduleUpdate === void 0 ? state : "outdated";
|
|
5256
|
+
const hint = moduleUpdate?.blocked === void 0 ? shown === "unknown" || shown === "unchecked" ? "panels.market.uncheckedHint" : void 0 : updateBlockHintOf(moduleUpdate.blocked);
|
|
5201
5257
|
rows.push({
|
|
5202
5258
|
id: manifest.id,
|
|
5203
5259
|
titleKey: manifest.card?.titleKey ?? manifest.id,
|
|
@@ -5205,7 +5261,7 @@ window.__ModuleLoader__.load({
|
|
|
5205
5261
|
canInstall: state !== "installed" && (install || reAdopt),
|
|
5206
5262
|
canUpdate: onMachine && isOutdated(capability),
|
|
5207
5263
|
canUninstall: onMachine,
|
|
5208
|
-
...
|
|
5264
|
+
...hint === void 0 ? {} : { hint },
|
|
5209
5265
|
...entry === void 0 ? {} : { version: {
|
|
5210
5266
|
installed: entry.installed,
|
|
5211
5267
|
...entry.latest === void 0 ? {} : { latest: entry.latest }
|
|
@@ -5270,11 +5326,14 @@ window.__ModuleLoader__.load({
|
|
|
5270
5326
|
installed: version.installed,
|
|
5271
5327
|
latest
|
|
5272
5328
|
} : void 0;
|
|
5329
|
+
const stale = !local && version.running !== void 0 && version.running !== version.installed;
|
|
5330
|
+
const followUp = version.followUp;
|
|
5331
|
+
const followUpState = !stale && followUp !== void 0;
|
|
5273
5332
|
return {
|
|
5274
5333
|
id: WORKBENCH_ROW_ID,
|
|
5275
5334
|
titleKey: WORKBENCH_TITLE_KEY,
|
|
5276
5335
|
workbench: true,
|
|
5277
|
-
state:
|
|
5336
|
+
state: stale ? "pending-restart" : followUpState ? "pending-followup" : update === void 0 ? "installed" : "outdated",
|
|
5278
5337
|
canInstall: false,
|
|
5279
5338
|
canUpdate: update !== void 0,
|
|
5280
5339
|
canUninstall: false,
|
|
@@ -5284,6 +5343,8 @@ window.__ModuleLoader__.load({
|
|
|
5284
5343
|
...latest === void 0 ? {} : { latest }
|
|
5285
5344
|
},
|
|
5286
5345
|
...update === void 0 ? {} : { moduleUpdate: update },
|
|
5346
|
+
...followUp === void 0 ? {} : { followUp },
|
|
5347
|
+
...followUpState ? { hint: "panels.market.migrationHint" } : {},
|
|
5287
5348
|
pkg: version.pkg
|
|
5288
5349
|
};
|
|
5289
5350
|
}
|
|
@@ -5291,6 +5352,7 @@ window.__ModuleLoader__.load({
|
|
|
5291
5352
|
//#region src/app/layouts/rightbar/market-hint.ts
|
|
5292
5353
|
var PROBLEM_KEY = "panels.market.hasProblem";
|
|
5293
5354
|
var RESTART_KEY = "panels.market.pendingRestart";
|
|
5355
|
+
var FOLLOWUP_KEY = "panels.market.pendingFollowUp";
|
|
5294
5356
|
var UNKNOWN_KEY = "panels.market.unchecked";
|
|
5295
5357
|
var UPDATES_KEY = "panels.market.hasNew";
|
|
5296
5358
|
function isProblem(row) {
|
|
@@ -5321,12 +5383,14 @@ window.__ModuleLoader__.load({
|
|
|
5321
5383
|
];
|
|
5322
5384
|
const problem = rows.some(isProblem);
|
|
5323
5385
|
const restart = rows.some(isRestart) || awaitsRestart(input.manifests, installed);
|
|
5386
|
+
const followUp = rows.some((row) => row.state === "pending-followup");
|
|
5324
5387
|
const rosterRead = input.modules !== null;
|
|
5325
5388
|
const unknown = rows.some((row) => isUnknown(row, rosterRead));
|
|
5326
5389
|
const updates = marketHasUpdates(rows, sharedRows(marketable, input.capabilities));
|
|
5327
5390
|
const more = [];
|
|
5328
5391
|
if (problem) {
|
|
5329
5392
|
if (restart) more.push(RESTART_KEY);
|
|
5393
|
+
if (followUp) more.push(FOLLOWUP_KEY);
|
|
5330
5394
|
if (unknown) more.push(UNKNOWN_KEY);
|
|
5331
5395
|
if (updates) more.push(UPDATES_KEY);
|
|
5332
5396
|
return {
|
|
@@ -5336,6 +5400,7 @@ window.__ModuleLoader__.load({
|
|
|
5336
5400
|
};
|
|
5337
5401
|
}
|
|
5338
5402
|
if (restart) {
|
|
5403
|
+
if (followUp) more.push(FOLLOWUP_KEY);
|
|
5339
5404
|
if (unknown) more.push(UNKNOWN_KEY);
|
|
5340
5405
|
if (updates) more.push(UPDATES_KEY);
|
|
5341
5406
|
return {
|
|
@@ -5344,6 +5409,15 @@ window.__ModuleLoader__.load({
|
|
|
5344
5409
|
...more.length === 0 ? {} : { moreKeys: more }
|
|
5345
5410
|
};
|
|
5346
5411
|
}
|
|
5412
|
+
if (followUp) {
|
|
5413
|
+
if (unknown) more.push(UNKNOWN_KEY);
|
|
5414
|
+
if (updates) more.push(UPDATES_KEY);
|
|
5415
|
+
return {
|
|
5416
|
+
labelKey: FOLLOWUP_KEY,
|
|
5417
|
+
tone: "warning",
|
|
5418
|
+
...more.length === 0 ? {} : { moreKeys: more }
|
|
5419
|
+
};
|
|
5420
|
+
}
|
|
5347
5421
|
if (unknown) {
|
|
5348
5422
|
if (updates) more.push(UPDATES_KEY);
|
|
5349
5423
|
return {
|
|
@@ -5639,114 +5713,118 @@ window.__ModuleLoader__.load({
|
|
|
5639
5713
|
};
|
|
5640
5714
|
}
|
|
5641
5715
|
var MarketPage_module_default = {
|
|
5642
|
-
marketList: "
|
|
5643
|
-
marketRow: "
|
|
5644
|
-
marketIcon: "
|
|
5645
|
-
marketMain: "
|
|
5646
|
-
marketName: "
|
|
5647
|
-
marketStatus: "
|
|
5648
|
-
marketStateText: "
|
|
5649
|
-
marketSep: "
|
|
5650
|
-
marketReason: "
|
|
5651
|
-
marketVersion: "
|
|
5652
|
-
marketLocalTag: "
|
|
5653
|
-
marketEnd: "
|
|
5654
|
-
marketSwitchSeat: "
|
|
5655
|
-
marketActions: "
|
|
5656
|
-
marketUpdateAction: "
|
|
5657
|
-
marketSelfDivider: "
|
|
5658
|
-
marketSection: "
|
|
5659
|
-
marketSectionHead: "
|
|
5660
|
-
marketSectionIcon: "
|
|
5661
|
-
marketSectionTitle: "
|
|
5662
|
-
marketSectionCount: "
|
|
5663
|
-
marketSectionQuiet: "
|
|
5664
|
-
marketProgress: "
|
|
5665
|
-
marketNote: "
|
|
5666
|
-
marketFailure: "
|
|
5667
|
-
marketEmpty: "
|
|
5668
|
-
marketPage: "
|
|
5669
|
-
marketPageHead: "
|
|
5670
|
-
marketPageTitle: "
|
|
5671
|
-
marketPageIntro: "
|
|
5672
|
-
marketPageTools: "
|
|
5673
|
-
marketPanel: "
|
|
5674
|
-
marketTabs: "
|
|
5675
|
-
marketTabList: "
|
|
5676
|
-
marketIconButton: "
|
|
5677
|
-
marketIconWrap: "
|
|
5678
|
-
marketIconButtonSpinning: "
|
|
5679
|
-
"wb-spin": "_wb-
|
|
5680
|
-
marketAddButton: "
|
|
5681
|
-
marketEmptyTitle: "
|
|
5682
|
-
discoverPage: "
|
|
5683
|
-
discoverBar: "
|
|
5684
|
-
discoverTools: "
|
|
5685
|
-
discoverMarket: "
|
|
5686
|
-
discoverMarketButton: "
|
|
5687
|
-
discoverMarketName: "
|
|
5688
|
-
discoverLabels: "
|
|
5689
|
-
discoverSort: "
|
|
5690
|
-
discoverRefresh: "
|
|
5691
|
-
discoverSearch: "
|
|
5692
|
-
discoverChips: "
|
|
5693
|
-
discoverList: "
|
|
5694
|
-
discoverCard: "
|
|
5695
|
-
discoverArtwork: "
|
|
5696
|
-
discoverArtworkImage: "
|
|
5697
|
-
discoverMain: "
|
|
5698
|
-
discoverTitleRow: "
|
|
5699
|
-
discoverCardOpen: "
|
|
5700
|
-
discoverStrong: "
|
|
5701
|
-
discoverDesc: "
|
|
5702
|
-
discoverMeta: "
|
|
5703
|
-
discoverMuted: "
|
|
5704
|
-
discoverEnd: "
|
|
5705
|
-
discoverBlocked: "
|
|
5706
|
-
discoverEmpty: "
|
|
5707
|
-
discoverEmptyTitle: "
|
|
5708
|
-
discoverDetail: "
|
|
5709
|
-
discoverCrumb: "
|
|
5710
|
-
discoverCrumbIcon: "
|
|
5711
|
-
discoverDetailHead: "
|
|
5712
|
-
discoverDetailTitle: "
|
|
5713
|
-
discoverDetailText: "
|
|
5714
|
-
discoverDetailPanel: "
|
|
5715
|
-
discoverDetailTabs: "
|
|
5716
|
-
discoverDetailTabList: "
|
|
5717
|
-
discoverDocBody: "
|
|
5718
|
-
discoverDocNotice: "
|
|
5719
|
-
discoverSection: "
|
|
5720
|
-
discoverSectionTitle: "
|
|
5721
|
-
discoverFacts: "
|
|
5722
|
-
discoverFactRow: "
|
|
5723
|
-
discoverFactKind: "
|
|
5724
|
-
discoverFactValue: "
|
|
5725
|
-
discoverCode: "
|
|
5726
|
-
discoverTags: "
|
|
5727
|
-
discoverLink: "
|
|
5728
|
-
discoverVersions: "
|
|
5729
|
-
discoverVersionRow: "
|
|
5730
|
-
discoverVersionName: "
|
|
5731
|
-
discoverError: "
|
|
5732
|
-
discoverFailure: "
|
|
5733
|
-
|
|
5734
|
-
|
|
5735
|
-
|
|
5736
|
-
|
|
5737
|
-
|
|
5738
|
-
|
|
5739
|
-
|
|
5740
|
-
|
|
5741
|
-
|
|
5742
|
-
|
|
5743
|
-
|
|
5744
|
-
|
|
5745
|
-
|
|
5746
|
-
|
|
5747
|
-
|
|
5748
|
-
|
|
5749
|
-
|
|
5716
|
+
marketList: "_marketList_bnt61_1",
|
|
5717
|
+
marketRow: "_marketRow_bnt61_10",
|
|
5718
|
+
marketIcon: "_marketIcon_bnt61_20",
|
|
5719
|
+
marketMain: "_marketMain_bnt61_32",
|
|
5720
|
+
marketName: "_marketName_bnt61_39",
|
|
5721
|
+
marketStatus: "_marketStatus_bnt61_48",
|
|
5722
|
+
marketStateText: "_marketStateText_bnt61_58",
|
|
5723
|
+
marketSep: "_marketSep_bnt61_62",
|
|
5724
|
+
marketReason: "_marketReason_bnt61_66",
|
|
5725
|
+
marketVersion: "_marketVersion_bnt61_72",
|
|
5726
|
+
marketLocalTag: "_marketLocalTag_bnt61_94",
|
|
5727
|
+
marketEnd: "_marketEnd_bnt61_105",
|
|
5728
|
+
marketSwitchSeat: "_marketSwitchSeat_bnt61_112",
|
|
5729
|
+
marketActions: "_marketActions_bnt61_125",
|
|
5730
|
+
marketUpdateAction: "_marketUpdateAction_bnt61_131",
|
|
5731
|
+
marketSelfDivider: "_marketSelfDivider_bnt61_137",
|
|
5732
|
+
marketSection: "_marketSection_bnt61_143",
|
|
5733
|
+
marketSectionHead: "_marketSectionHead_bnt61_150",
|
|
5734
|
+
marketSectionIcon: "_marketSectionIcon_bnt61_156",
|
|
5735
|
+
marketSectionTitle: "_marketSectionTitle_bnt61_163",
|
|
5736
|
+
marketSectionCount: "_marketSectionCount_bnt61_169",
|
|
5737
|
+
marketSectionQuiet: "_marketSectionQuiet_bnt61_175",
|
|
5738
|
+
marketProgress: "_marketProgress_bnt61_188",
|
|
5739
|
+
marketNote: "_marketNote_bnt61_198",
|
|
5740
|
+
marketFailure: "_marketFailure_bnt61_205",
|
|
5741
|
+
marketEmpty: "_marketEmpty_bnt61_212",
|
|
5742
|
+
marketPage: "_marketPage_bnt61_217",
|
|
5743
|
+
marketPageHead: "_marketPageHead_bnt61_235",
|
|
5744
|
+
marketPageTitle: "_marketPageTitle_bnt61_243",
|
|
5745
|
+
marketPageIntro: "_marketPageIntro_bnt61_248",
|
|
5746
|
+
marketPageTools: "_marketPageTools_bnt61_254",
|
|
5747
|
+
marketPanel: "_marketPanel_bnt61_263",
|
|
5748
|
+
marketTabs: "_marketTabs_bnt61_273",
|
|
5749
|
+
marketTabList: "_marketTabList_bnt61_278",
|
|
5750
|
+
marketIconButton: "_marketIconButton_bnt61_283",
|
|
5751
|
+
marketIconWrap: "_marketIconWrap_bnt61_308",
|
|
5752
|
+
marketIconButtonSpinning: "_marketIconButtonSpinning_bnt61_312",
|
|
5753
|
+
"wb-spin": "_wb-spin_bnt61_1",
|
|
5754
|
+
marketAddButton: "_marketAddButton_bnt61_316",
|
|
5755
|
+
marketEmptyTitle: "_marketEmptyTitle_bnt61_333",
|
|
5756
|
+
discoverPage: "_discoverPage_bnt61_347",
|
|
5757
|
+
discoverBar: "_discoverBar_bnt61_354",
|
|
5758
|
+
discoverTools: "_discoverTools_bnt61_361",
|
|
5759
|
+
discoverMarket: "_discoverMarket_bnt61_367",
|
|
5760
|
+
discoverMarketButton: "_discoverMarketButton_bnt61_372",
|
|
5761
|
+
discoverMarketName: "_discoverMarketName_bnt61_379",
|
|
5762
|
+
discoverLabels: "_discoverLabels_bnt61_385",
|
|
5763
|
+
discoverSort: "_discoverSort_bnt61_390",
|
|
5764
|
+
discoverRefresh: "_discoverRefresh_bnt61_395",
|
|
5765
|
+
discoverSearch: "_discoverSearch_bnt61_399",
|
|
5766
|
+
discoverChips: "_discoverChips_bnt61_440",
|
|
5767
|
+
discoverList: "_discoverList_bnt61_447",
|
|
5768
|
+
discoverCard: "_discoverCard_bnt61_456",
|
|
5769
|
+
discoverArtwork: "_discoverArtwork_bnt61_470",
|
|
5770
|
+
discoverArtworkImage: "_discoverArtworkImage_bnt61_482",
|
|
5771
|
+
discoverMain: "_discoverMain_bnt61_486",
|
|
5772
|
+
discoverTitleRow: "_discoverTitleRow_bnt61_494",
|
|
5773
|
+
discoverCardOpen: "_discoverCardOpen_bnt61_502",
|
|
5774
|
+
discoverStrong: "_discoverStrong_bnt61_533",
|
|
5775
|
+
discoverDesc: "_discoverDesc_bnt61_539",
|
|
5776
|
+
discoverMeta: "_discoverMeta_bnt61_548",
|
|
5777
|
+
discoverMuted: "_discoverMuted_bnt61_555",
|
|
5778
|
+
discoverEnd: "_discoverEnd_bnt61_561",
|
|
5779
|
+
discoverBlocked: "_discoverBlocked_bnt61_570",
|
|
5780
|
+
discoverEmpty: "_discoverEmpty_bnt61_575",
|
|
5781
|
+
discoverEmptyTitle: "_discoverEmptyTitle_bnt61_584",
|
|
5782
|
+
discoverDetail: "_discoverDetail_bnt61_594",
|
|
5783
|
+
discoverCrumb: "_discoverCrumb_bnt61_600",
|
|
5784
|
+
discoverCrumbIcon: "_discoverCrumbIcon_bnt61_623",
|
|
5785
|
+
discoverDetailHead: "_discoverDetailHead_bnt61_627",
|
|
5786
|
+
discoverDetailTitle: "_discoverDetailTitle_bnt61_633",
|
|
5787
|
+
discoverDetailText: "_discoverDetailText_bnt61_639",
|
|
5788
|
+
discoverDetailPanel: "_discoverDetailPanel_bnt61_646",
|
|
5789
|
+
discoverDetailTabs: "_discoverDetailTabs_bnt61_653",
|
|
5790
|
+
discoverDetailTabList: "_discoverDetailTabList_bnt61_658",
|
|
5791
|
+
discoverDocBody: "_discoverDocBody_bnt61_663",
|
|
5792
|
+
discoverDocNotice: "_discoverDocNotice_bnt61_668",
|
|
5793
|
+
discoverSection: "_discoverSection_bnt61_674",
|
|
5794
|
+
discoverSectionTitle: "_discoverSectionTitle_bnt61_681",
|
|
5795
|
+
discoverFacts: "_discoverFacts_bnt61_687",
|
|
5796
|
+
discoverFactRow: "_discoverFactRow_bnt61_692",
|
|
5797
|
+
discoverFactKind: "_discoverFactKind_bnt61_702",
|
|
5798
|
+
discoverFactValue: "_discoverFactValue_bnt61_708",
|
|
5799
|
+
discoverCode: "_discoverCode_bnt61_716",
|
|
5800
|
+
discoverTags: "_discoverTags_bnt61_725",
|
|
5801
|
+
discoverLink: "_discoverLink_bnt61_732",
|
|
5802
|
+
discoverVersions: "_discoverVersions_bnt61_742",
|
|
5803
|
+
discoverVersionRow: "_discoverVersionRow_bnt61_750",
|
|
5804
|
+
discoverVersionName: "_discoverVersionName_bnt61_758",
|
|
5805
|
+
discoverError: "_discoverError_bnt61_763",
|
|
5806
|
+
discoverFailure: "_discoverFailure_bnt61_772",
|
|
5807
|
+
discoverLoading: "_discoverLoading_bnt61_778",
|
|
5808
|
+
discoverNotice: "_discoverNotice_bnt61_787",
|
|
5809
|
+
discoverMore: "_discoverMore_bnt61_805",
|
|
5810
|
+
discoverDialog: "_discoverDialog_bnt61_809",
|
|
5811
|
+
discoverDialogBody: "_discoverDialogBody_bnt61_813",
|
|
5812
|
+
discoverSourceList: "_discoverSourceList_bnt61_819",
|
|
5813
|
+
discoverSourceRow: "_discoverSourceRow_bnt61_827",
|
|
5814
|
+
discoverSourceCurrent: "_discoverSourceCurrent_bnt61_836",
|
|
5815
|
+
discoverSourceLoading: "_discoverSourceLoading_bnt61_843",
|
|
5816
|
+
discoverSourceHint: "_discoverSourceHint_bnt61_853",
|
|
5817
|
+
discoverSourceError: "_discoverSourceError_bnt61_867",
|
|
5818
|
+
discoverSourceForm: "_discoverSourceForm_bnt61_873",
|
|
5819
|
+
discoverGrow: "_discoverGrow_bnt61_879",
|
|
5820
|
+
discoverField: "_discoverField_bnt61_884",
|
|
5821
|
+
discoverFieldLabel: "_discoverFieldLabel_bnt61_890",
|
|
5822
|
+
discoverConfirmHead: "_discoverConfirmHead_bnt61_895",
|
|
5823
|
+
discoverSkeletonFill: "_discoverSkeletonFill_bnt61_901",
|
|
5824
|
+
"wb-skeleton": "_wb-skeleton_bnt61_1",
|
|
5825
|
+
discoverSkeletonBar: "_discoverSkeletonBar_bnt61_910",
|
|
5826
|
+
discoverSkeletonTitle: "_discoverSkeletonTitle_bnt61_917",
|
|
5827
|
+
discoverSkeletonDesc: "_discoverSkeletonDesc_bnt61_921"
|
|
5750
5828
|
};
|
|
5751
5829
|
//#endregion
|
|
5752
5830
|
//#region src/app/layouts/market/discover-states.tsx
|
|
@@ -5770,6 +5848,13 @@ window.__ModuleLoader__.load({
|
|
|
5770
5848
|
function DiscoverEmptyText({ text }) {
|
|
5771
5849
|
return /* @__PURE__ */ (0, react.createElement)("p", { className: MarketPage_module_default.discoverMuted }, text);
|
|
5772
5850
|
}
|
|
5851
|
+
function DiscoverLoading({ label }) {
|
|
5852
|
+
return /* @__PURE__ */ (0, react.createElement)("p", {
|
|
5853
|
+
className: MarketPage_module_default.discoverLoading,
|
|
5854
|
+
role: "status",
|
|
5855
|
+
"aria-live": "polite"
|
|
5856
|
+
}, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.StateDot, { state: "ongoing" }), label);
|
|
5857
|
+
}
|
|
5773
5858
|
function DiscoverFailure({ t, text, onRetry }) {
|
|
5774
5859
|
return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverFailure }, /* @__PURE__ */ (0, react.createElement)("p", {
|
|
5775
5860
|
className: MarketPage_module_default.discoverError,
|
|
@@ -5838,6 +5923,18 @@ window.__ModuleLoader__.load({
|
|
|
5838
5923
|
return row.kind === "extension" ? "plugin" : "lib";
|
|
5839
5924
|
}
|
|
5840
5925
|
//#endregion
|
|
5926
|
+
//#region src/app/layouts/rightbar/market-names.ts
|
|
5927
|
+
function namesOf(t, modules, titleOf) {
|
|
5928
|
+
const shown = /* @__PURE__ */ new Map();
|
|
5929
|
+
for (const module of modules) {
|
|
5930
|
+
const key = unitTitleKey(module.unit);
|
|
5931
|
+
const live = t(key);
|
|
5932
|
+
const name = live !== key && live !== "" ? live : titleOf(module.title);
|
|
5933
|
+
if (name !== "") shown.set(module.unit, name);
|
|
5934
|
+
}
|
|
5935
|
+
return shown;
|
|
5936
|
+
}
|
|
5937
|
+
//#endregion
|
|
5841
5938
|
//#region src/app/layouts/rightbar/market-view-text.ts
|
|
5842
5939
|
var PROGRESS_KEY = {
|
|
5843
5940
|
install: "panels.market.installing",
|
|
@@ -5848,7 +5945,9 @@ window.__ModuleLoader__.load({
|
|
|
5848
5945
|
"update-dependency": "panels.market.updating",
|
|
5849
5946
|
"update-plugin": "panels.market.updating",
|
|
5850
5947
|
"uninstall-plugin": "panels.market.uninstalling",
|
|
5851
|
-
"update-workbench": "panels.market.updating"
|
|
5948
|
+
"update-workbench": "panels.market.updating",
|
|
5949
|
+
"migrate-workbench": "panels.market.migrating",
|
|
5950
|
+
"dismiss-followup": "panels.market.dismissing"
|
|
5852
5951
|
};
|
|
5853
5952
|
var ACTION_LABEL_KEY = {
|
|
5854
5953
|
install: "panels.market.install",
|
|
@@ -5859,7 +5958,9 @@ window.__ModuleLoader__.load({
|
|
|
5859
5958
|
"update-dependency": "panels.market.update",
|
|
5860
5959
|
"update-plugin": "panels.market.update",
|
|
5861
5960
|
"uninstall-plugin": "panels.market.uninstall",
|
|
5862
|
-
"update-workbench": "panels.market.update"
|
|
5961
|
+
"update-workbench": "panels.market.update",
|
|
5962
|
+
"migrate-workbench": "panels.market.migrateAction",
|
|
5963
|
+
"dismiss-followup": "panels.market.dismissFollowUp"
|
|
5863
5964
|
};
|
|
5864
5965
|
function holdOf(pending, application) {
|
|
5865
5966
|
if (pending === null || pending.row === void 0) return void 0;
|
|
@@ -5907,12 +6008,9 @@ window.__ModuleLoader__.load({
|
|
|
5907
6008
|
function marketFootVisible(shown, installed) {
|
|
5908
6009
|
return shown.length > 0 || installed.length > 0;
|
|
5909
6010
|
}
|
|
5910
|
-
|
|
5911
|
-
|
|
5912
|
-
(
|
|
5913
|
-
if (!mocked) setTitles((known) => mergeTitles(known, manifests));
|
|
5914
|
-
}, [manifests, mocked]);
|
|
5915
|
-
return titles;
|
|
6011
|
+
var NO_NAMES = /* @__PURE__ */ new Map();
|
|
6012
|
+
function marketNamesOf(t, modules, titleOf, mocked) {
|
|
6013
|
+
return mocked ? NO_NAMES : namesOf(t, modules, titleOf);
|
|
5916
6014
|
}
|
|
5917
6015
|
function useHeldRow(pending, backInRoster) {
|
|
5918
6016
|
const [held, setHeld] = (0, react.useState)(void 0);
|
|
@@ -5948,10 +6046,11 @@ window.__ModuleLoader__.load({
|
|
|
5948
6046
|
const { pending, removing } = input;
|
|
5949
6047
|
if (removing === null || pending === null) return void 0;
|
|
5950
6048
|
if (input.rows.some((row) => row.id === removing)) return void 0;
|
|
6049
|
+
const name = pending.label ?? input.names.get(removing);
|
|
5951
6050
|
return {
|
|
5952
6051
|
id: removing,
|
|
5953
|
-
titleKey: pending.titleKey ??
|
|
5954
|
-
...
|
|
6052
|
+
titleKey: pending.titleKey ?? removing,
|
|
6053
|
+
...name === void 0 ? {} : { label: name },
|
|
5955
6054
|
state: "installed",
|
|
5956
6055
|
canInstall: false,
|
|
5957
6056
|
canUpdate: false,
|
|
@@ -6068,49 +6167,120 @@ window.__ModuleLoader__.load({
|
|
|
6068
6167
|
"update-plugin",
|
|
6069
6168
|
"update-workbench"
|
|
6070
6169
|
];
|
|
6170
|
+
function MigrationConfirm({ t, onConfirm, onCancel }) {
|
|
6171
|
+
const [acknowledged, setAcknowledged] = (0, react.useState)(false);
|
|
6172
|
+
return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.RiskConfirmation, {
|
|
6173
|
+
open: true,
|
|
6174
|
+
title: t("panels.market.migrateConfirmTitle"),
|
|
6175
|
+
description: t("panels.market.migrateConfirmDetail"),
|
|
6176
|
+
acknowledgeLabel: t("panels.market.migrateConfirmAck"),
|
|
6177
|
+
cancelLabel: t("panels.market.confirmNo"),
|
|
6178
|
+
closeLabel: t("panels.market.confirmNo"),
|
|
6179
|
+
confirmLabel: t("panels.market.migrateConfirmYes"),
|
|
6180
|
+
acknowledged,
|
|
6181
|
+
onAcknowledgedChange: setAcknowledged,
|
|
6182
|
+
onCancel,
|
|
6183
|
+
onConfirm
|
|
6184
|
+
});
|
|
6185
|
+
}
|
|
6186
|
+
function DismissFollowUpConfirm({ t, onConfirm, onCancel }) {
|
|
6187
|
+
const [acknowledged, setAcknowledged] = (0, react.useState)(false);
|
|
6188
|
+
return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.RiskConfirmation, {
|
|
6189
|
+
open: true,
|
|
6190
|
+
title: t("panels.market.dismissFollowUpTitle"),
|
|
6191
|
+
description: t("panels.market.dismissFollowUpDetail"),
|
|
6192
|
+
acknowledgeLabel: t("panels.market.dismissFollowUpAck"),
|
|
6193
|
+
cancelLabel: t("panels.market.confirmNo"),
|
|
6194
|
+
closeLabel: t("panels.market.confirmNo"),
|
|
6195
|
+
confirmLabel: t("panels.market.dismissFollowUpYes"),
|
|
6196
|
+
acknowledged,
|
|
6197
|
+
onAcknowledgedChange: setAcknowledged,
|
|
6198
|
+
onCancel,
|
|
6199
|
+
onConfirm
|
|
6200
|
+
});
|
|
6201
|
+
}
|
|
6202
|
+
function MarketLineDialogs({ t, migrationOpen, dismissOpen, onMigrationCancel, onMigrationConfirm, onDismissCancel, onDismissConfirm }) {
|
|
6203
|
+
return /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, migrationOpen ? /* @__PURE__ */ (0, react.createElement)(MigrationConfirm, {
|
|
6204
|
+
t,
|
|
6205
|
+
onCancel: onMigrationCancel,
|
|
6206
|
+
onConfirm: onMigrationConfirm
|
|
6207
|
+
}) : null, dismissOpen ? /* @__PURE__ */ (0, react.createElement)(DismissFollowUpConfirm, {
|
|
6208
|
+
t,
|
|
6209
|
+
onCancel: onDismissCancel,
|
|
6210
|
+
onConfirm: onDismissConfirm
|
|
6211
|
+
}) : null);
|
|
6212
|
+
}
|
|
6213
|
+
function MarketLineStatus({ t, row, quiet }) {
|
|
6214
|
+
const stateText = t(MARKET_STATE_KEY[row.state]);
|
|
6215
|
+
const noteText = row.note === void 0 ? null : t(row.note.key, row.note.params);
|
|
6216
|
+
if (quiet) return null;
|
|
6217
|
+
return /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketStatus }, row.state === "checking" ? /* @__PURE__ */ (0, react.createElement)(Spinner, { size: 14 }) : /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
|
|
6218
|
+
state: MARKET_DOT[row.state],
|
|
6219
|
+
size: 9
|
|
6220
|
+
}), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketStateText }, stateText), row.hint === void 0 ? null : /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)("span", {
|
|
6221
|
+
className: MarketPage_module_default.marketSep,
|
|
6222
|
+
"aria-hidden": "true"
|
|
6223
|
+
}, "·"), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketReason }, t(row.hint))), noteText === null ? null : /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)("span", {
|
|
6224
|
+
className: MarketPage_module_default.marketSep,
|
|
6225
|
+
"aria-hidden": "true"
|
|
6226
|
+
}, "·"), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketReason }, noteText)));
|
|
6227
|
+
}
|
|
6071
6228
|
function MarketLine({ t, row, pending, failure, onAct, onDefault, boardBusy }) {
|
|
6072
6229
|
const running = pending !== null && pending.id === row.id ? pending : null;
|
|
6073
6230
|
const locked = pending !== null;
|
|
6231
|
+
const [migrationOpen, setMigrationOpen] = (0, react.useState)(false);
|
|
6232
|
+
const [dismissOpen, setDismissOpen] = (0, react.useState)(false);
|
|
6074
6233
|
const quiet = row.workbench === true && row.state === "installed" && row.hint === void 0;
|
|
6075
6234
|
const actions = marketActions$1(row);
|
|
6076
6235
|
const switchLocked = marketSwitchLocked(row);
|
|
6077
|
-
const stateText = t(MARKET_STATE_KEY[row.state]);
|
|
6078
|
-
const noteText = row.note === void 0 ? null : t(row.note.key, row.note.params);
|
|
6079
6236
|
return /* @__PURE__ */ (0, react.createElement)("li", { className: MarketPage_module_default.marketRow }, /* @__PURE__ */ (0, react.createElement)("span", {
|
|
6080
6237
|
className: MarketPage_module_default.marketIcon,
|
|
6081
6238
|
"aria-hidden": "true"
|
|
6082
6239
|
}, packageIcon(marketRowKind(row))), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketMain }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketName }, marketRowTitle(row, t), row.versionLabel === void 0 ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketVersion }, row.versionLabel), row.version === void 0 || row.versionLabel !== void 0 ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketVersion }, row.version.installed !== void 0 && row.version.latest !== void 0 && row.version.installed !== row.version.latest ? t("panels.market.versionArrow", {
|
|
6083
6240
|
from: row.version.installed,
|
|
6084
6241
|
to: row.version.latest
|
|
6085
|
-
}) : row.version.installed ?? row.version.latest ?? ""), row.local === true ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketLocalTag }, t("panels.market.localMark")) : null),
|
|
6086
|
-
|
|
6087
|
-
|
|
6088
|
-
|
|
6089
|
-
|
|
6090
|
-
"aria-hidden": "true"
|
|
6091
|
-
}, "·"), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketReason }, t(row.hint))), noteText === null ? null : /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)("span", {
|
|
6092
|
-
className: MarketPage_module_default.marketSep,
|
|
6093
|
-
"aria-hidden": "true"
|
|
6094
|
-
}, "·"), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketReason }, noteText)))), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketEnd }, running !== null ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketProgress }, /* @__PURE__ */ (0, react.createElement)(Spinner, { size: 14 }), t(PROGRESS_KEY[running.action])) : actions.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketActions }, actions.map((action) => {
|
|
6242
|
+
}) : row.version.installed ?? row.version.latest ?? ""), row.local === true ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketLocalTag }, t("panels.market.localMark")) : null), /* @__PURE__ */ (0, react.createElement)(MarketLineStatus, {
|
|
6243
|
+
t,
|
|
6244
|
+
row,
|
|
6245
|
+
quiet
|
|
6246
|
+
})), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketEnd }, running !== null ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketProgress }, /* @__PURE__ */ (0, react.createElement)(Spinner, { size: 14 }), t(PROGRESS_KEY[running.action])) : actions.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketActions }, actions.map((action) => {
|
|
6095
6247
|
const danger = dangerActions.includes(action);
|
|
6096
6248
|
const update = updateActions.includes(action);
|
|
6097
6249
|
return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
6098
6250
|
key: action,
|
|
6099
6251
|
type: "button",
|
|
6100
6252
|
size: "sm",
|
|
6101
|
-
variant: action === "install" ? "primary" : "outline",
|
|
6253
|
+
variant: action === "install" || action === "migrate-workbench" ? "primary" : "outline",
|
|
6102
6254
|
className: danger ? "wb-dangerAction" : update ? MarketPage_module_default.marketUpdateAction : void 0,
|
|
6103
6255
|
icon: danger ? /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconTrashOutlineRegular, { size: 13 }) : void 0,
|
|
6104
6256
|
"aria-label": danger ? t("panels.market.uninstallLabel", { name: marketRowTitle(row, t) }) : void 0,
|
|
6105
6257
|
disabled: locked,
|
|
6106
|
-
onClick: () =>
|
|
6258
|
+
onClick: () => {
|
|
6259
|
+
if (action === "migrate-workbench") setMigrationOpen(true);
|
|
6260
|
+
else if (action === "dismiss-followup") setDismissOpen(true);
|
|
6261
|
+
else onAct(action);
|
|
6262
|
+
}
|
|
6107
6263
|
}, t(ACTION_LABEL_KEY[action]));
|
|
6108
6264
|
})), row.defaultShown === void 0 ? null : /* @__PURE__ */ (0, react.createElement)(Tip, { label: t(switchLocked ? "panels.market.defaultLocked" : "panels.market.defaultHint") }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketSwitchSeat }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Switch, {
|
|
6109
6265
|
checked: row.defaultShown,
|
|
6110
6266
|
disabled: boardBusy === true || locked || switchLocked,
|
|
6111
6267
|
label: `${marketRowTitle(row, t)} · ${t("panels.market.defaultLabel")}`,
|
|
6112
6268
|
onChange: (next) => onDefault?.(next)
|
|
6113
|
-
})))), failure === null ? null : /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketFailure }, failure))
|
|
6269
|
+
})))), failure === null ? null : /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketFailure }, failure), /* @__PURE__ */ (0, react.createElement)(MarketLineDialogs, {
|
|
6270
|
+
t,
|
|
6271
|
+
migrationOpen,
|
|
6272
|
+
dismissOpen,
|
|
6273
|
+
onMigrationCancel: () => setMigrationOpen(false),
|
|
6274
|
+
onMigrationConfirm: () => {
|
|
6275
|
+
setMigrationOpen(false);
|
|
6276
|
+
onAct("migrate-workbench");
|
|
6277
|
+
},
|
|
6278
|
+
onDismissCancel: () => setDismissOpen(false),
|
|
6279
|
+
onDismissConfirm: () => {
|
|
6280
|
+
setDismissOpen(false);
|
|
6281
|
+
onAct("dismiss-followup");
|
|
6282
|
+
}
|
|
6283
|
+
}));
|
|
6114
6284
|
}
|
|
6115
6285
|
function MarketSection({ t, titleKey, icon, rows, pending, failureOf, act, confirmActions, onConfirming, onDefault, boardBusy }) {
|
|
6116
6286
|
if (rows.length === 0) return null;
|
|
@@ -6425,10 +6595,13 @@ window.__ModuleLoader__.load({
|
|
|
6425
6595
|
seats.setConfirming(null);
|
|
6426
6596
|
seats.setFailed(null);
|
|
6427
6597
|
seats.setNotice(null);
|
|
6428
|
-
const outcome = await send(action === "
|
|
6598
|
+
const outcome = await send(action === "dismiss-followup" ? {
|
|
6599
|
+
action,
|
|
6600
|
+
id: row?.followUp?.id ?? ""
|
|
6601
|
+
} : action === "update-dependency" ? {
|
|
6429
6602
|
action,
|
|
6430
6603
|
id
|
|
6431
|
-
} : action === "remove-bundle" || action === "update-plugin" || action === "uninstall-plugin" || action === "update-workbench" ? {
|
|
6604
|
+
} : action === "remove-bundle" || action === "update-plugin" || action === "uninstall-plugin" || action === "update-workbench" || action === "migrate-workbench" ? {
|
|
6432
6605
|
action,
|
|
6433
6606
|
name: row?.pkg ?? ""
|
|
6434
6607
|
} : {
|
|
@@ -6446,6 +6619,21 @@ window.__ModuleLoader__.load({
|
|
|
6446
6619
|
return;
|
|
6447
6620
|
}
|
|
6448
6621
|
const value = outcome.value;
|
|
6622
|
+
if (action === "dismiss-followup") {
|
|
6623
|
+
onChanged({ force: true });
|
|
6624
|
+
seats.setPending(null);
|
|
6625
|
+
seats.setHeld(void 0);
|
|
6626
|
+
seats.setNotice(t("panels.market.dismissed"));
|
|
6627
|
+
return;
|
|
6628
|
+
}
|
|
6629
|
+
if (action === "migrate-workbench") {
|
|
6630
|
+
const added = recordOf(value)?.["added"];
|
|
6631
|
+
onChanged({ force: true });
|
|
6632
|
+
seats.setPending(null);
|
|
6633
|
+
seats.setHeld(void 0);
|
|
6634
|
+
seats.setNotice(t("panels.market.migrateDone", { added: typeof added === "number" ? String(added) : "0" }));
|
|
6635
|
+
return;
|
|
6636
|
+
}
|
|
6449
6637
|
const change = changeOf(value);
|
|
6450
6638
|
const failure = updateVerdictText(updateVerdictOf({
|
|
6451
6639
|
action,
|
|
@@ -6500,9 +6688,6 @@ window.__ModuleLoader__.load({
|
|
|
6500
6688
|
"remove-bundle",
|
|
6501
6689
|
"uninstall-plugin"
|
|
6502
6690
|
];
|
|
6503
|
-
function marketMigrationNotice(t, update) {
|
|
6504
|
-
return update?.migration === "needed" ? t("panels.market.selfUpdateNeedsMigrate") : null;
|
|
6505
|
-
}
|
|
6506
6691
|
function ConfirmUninstall({ t, name, onConfirm, onCancel }) {
|
|
6507
6692
|
const [acknowledged, setAcknowledged] = (0, react.useState)(false);
|
|
6508
6693
|
return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.RiskConfirmation, {
|
|
@@ -6572,8 +6757,8 @@ window.__ModuleLoader__.load({
|
|
|
6572
6757
|
}));
|
|
6573
6758
|
}
|
|
6574
6759
|
function useMarketScene(input) {
|
|
6575
|
-
const { manifests, installable, capabilities, updates, installed, settling, mock, defaults, changed, pending, failed } = input;
|
|
6576
|
-
const
|
|
6760
|
+
const { t, titleOf, manifests, installable, capabilities, updates, installed, settling, mock, defaults, changed, pending, failed } = input;
|
|
6761
|
+
const names = marketNamesOf(t, installed ?? [], titleOf, mock !== void 0);
|
|
6577
6762
|
const catalog = mock?.manifests ?? manifests;
|
|
6578
6763
|
const marketable = mock === void 0 ? marketCatalog(manifests, installable) : catalog;
|
|
6579
6764
|
const effective = mock === void 0 ? capabilities : mock.capabilities;
|
|
@@ -6587,13 +6772,13 @@ window.__ModuleLoader__.load({
|
|
|
6587
6772
|
const pinned = pinnedRowOf(pending, steady.held);
|
|
6588
6773
|
const busyId = heldIdOf(pending, steady.held);
|
|
6589
6774
|
return {
|
|
6590
|
-
|
|
6775
|
+
names,
|
|
6591
6776
|
catalog,
|
|
6592
6777
|
effective,
|
|
6593
6778
|
updateMap,
|
|
6594
6779
|
rows,
|
|
6595
6780
|
shared,
|
|
6596
|
-
installedList: installedRows((mock?.installed ?? installed ?? []).filter((module) => module.unit !== pinned?.id && (!(settling?.has(module.unit) ?? false) || module.unit === busyId) && module.unit !== removing), catalog, new Set(rows.map((row) => row.id)),
|
|
6781
|
+
installedList: installedRows((mock?.installed ?? installed ?? []).filter((module) => module.unit !== pinned?.id && (!(settling?.has(module.unit) ?? false) || module.unit === busyId) && module.unit !== removing), catalog, new Set(rows.map((row) => row.id)), mock === void 0 ? names : void 0, byDefault, changed),
|
|
6597
6782
|
byDefault,
|
|
6598
6783
|
steady,
|
|
6599
6784
|
pinned,
|
|
@@ -6601,12 +6786,14 @@ window.__ModuleLoader__.load({
|
|
|
6601
6786
|
busyId
|
|
6602
6787
|
};
|
|
6603
6788
|
}
|
|
6604
|
-
function MarketView({ t, manifests, installable, capabilities, freshness, onChanged, onPending, updates, installed, installedRead, workbench, selfUpdate, plugins, settling, mock, defaults = [], changed = {} }) {
|
|
6789
|
+
function MarketView({ t, titleOf, manifests, installable, capabilities, freshness, onChanged, onPending, updates, installed, installedRead, workbench, selfUpdate, plugins, settling, mock, defaults = [], changed = {} }) {
|
|
6605
6790
|
const { pending, setPending, confirming, setConfirming, failed, setFailed, notice, setNotice } = useMarketTransient({
|
|
6606
6791
|
mock,
|
|
6607
6792
|
onPending
|
|
6608
6793
|
});
|
|
6609
|
-
const {
|
|
6794
|
+
const { names, effective, updateMap, rows, shared, installedList, byDefault, steady, pinned, removing, busyId } = useMarketScene({
|
|
6795
|
+
t,
|
|
6796
|
+
titleOf,
|
|
6610
6797
|
manifests,
|
|
6611
6798
|
installable,
|
|
6612
6799
|
capabilities,
|
|
@@ -6651,7 +6838,7 @@ window.__ModuleLoader__.load({
|
|
|
6651
6838
|
pending,
|
|
6652
6839
|
removing,
|
|
6653
6840
|
rows,
|
|
6654
|
-
|
|
6841
|
+
names
|
|
6655
6842
|
});
|
|
6656
6843
|
const self = workbenchRow(mock === void 0 ? workbench : mock.workbench);
|
|
6657
6844
|
const shown = withPinnedRow(pendingRow === void 0 ? rows : [...rows, pendingRow], pinned);
|
|
@@ -6679,21 +6866,18 @@ window.__ModuleLoader__.load({
|
|
|
6679
6866
|
send: (body) => provision.send(body),
|
|
6680
6867
|
onChanged
|
|
6681
6868
|
});
|
|
6682
|
-
const landed = pendingLanded(pending, updateMap, effective, workbench?.installed, shared, pluginSource === null ? null : pluginList, {
|
|
6683
|
-
units: installed === void 0 ? null : new Set(installed.map((module) => module.unit)),
|
|
6684
|
-
plugins: pluginSource === null ? null : new Set(pluginList.map((row) => row.id))
|
|
6685
|
-
});
|
|
6686
|
-
const effectiveSelfUpdate = mock?.selfUpdate ?? selfUpdate;
|
|
6687
6869
|
useSettleHold({
|
|
6688
6870
|
pending,
|
|
6689
|
-
landed,
|
|
6871
|
+
landed: pendingLanded(pending, updateMap, effective, workbench?.installed, shared, pluginSource === null ? null : pluginList, {
|
|
6872
|
+
units: installed === void 0 ? null : new Set(installed.map((module) => module.unit)),
|
|
6873
|
+
plugins: pluginSource === null ? null : new Set(pluginList.map((row) => row.id))
|
|
6874
|
+
}),
|
|
6690
6875
|
t,
|
|
6691
6876
|
onChanged,
|
|
6692
|
-
selfUpdate:
|
|
6877
|
+
selfUpdate: mock?.selfUpdate ?? selfUpdate,
|
|
6693
6878
|
setPending,
|
|
6694
6879
|
setFailed
|
|
6695
6880
|
});
|
|
6696
|
-
const migrationNotice = marketMigrationNotice(t, effectiveSelfUpdate);
|
|
6697
6881
|
const settled = marketSettled(freshness, installedRead);
|
|
6698
6882
|
const nothing = shown.length === 0 && self === void 0 && installedList.length === 0 && pluginList.length === 0;
|
|
6699
6883
|
if (!settled || (settling?.size ?? 0) > 0 && shown.length === 0 && installedList.length === 0) return /* @__PURE__ */ (0, react.createElement)(MarketChecking, { t });
|
|
@@ -6707,7 +6891,7 @@ window.__ModuleLoader__.load({
|
|
|
6707
6891
|
shared,
|
|
6708
6892
|
pending,
|
|
6709
6893
|
failed,
|
|
6710
|
-
notice
|
|
6894
|
+
notice,
|
|
6711
6895
|
act,
|
|
6712
6896
|
onConfirming: setConfirming,
|
|
6713
6897
|
setDefault,
|
|
@@ -6923,7 +7107,7 @@ window.__ModuleLoader__.load({
|
|
|
6923
7107
|
if (url === "" || url.includes("#") || hasCredentials(url)) return { ok: false };
|
|
6924
7108
|
if (HTTP.test(url)) {
|
|
6925
7109
|
const asGit = REPO_FILE.test(url);
|
|
6926
|
-
const label = hostOf(url);
|
|
7110
|
+
const label = asGit ? sourceSuffix(url) || hostOf(url) : hostOf(url);
|
|
6927
7111
|
if (label === "") return { ok: false };
|
|
6928
7112
|
return {
|
|
6929
7113
|
ok: true,
|
|
@@ -6956,6 +7140,13 @@ window.__ModuleLoader__.load({
|
|
|
6956
7140
|
function sourceSuffix(url) {
|
|
6957
7141
|
return (withoutTrailingSlash(url).split(/[/:]/).filter((part) => part !== "").pop() ?? "").replace(/\.git$/, "");
|
|
6958
7142
|
}
|
|
7143
|
+
function sourceTransport(url) {
|
|
7144
|
+
if (GIT_SSH.test(url) || /^ssh:\/\//i.test(url) || /^git\+ssh:\/\//i.test(url)) return "ssh";
|
|
7145
|
+
if (/^git:\/\//i.test(url)) return "git";
|
|
7146
|
+
if (/^https:\/\//i.test(url)) return "https";
|
|
7147
|
+
if (/^http:\/\//i.test(url)) return "http";
|
|
7148
|
+
return "";
|
|
7149
|
+
}
|
|
6959
7150
|
function sourceLabelsOf(sources) {
|
|
6960
7151
|
const counts = /* @__PURE__ */ new Map();
|
|
6961
7152
|
for (const source of sources) counts.set(source.label, (counts.get(source.label) ?? 0) + 1);
|
|
@@ -6966,7 +7157,8 @@ window.__ModuleLoader__.load({
|
|
|
6966
7157
|
continue;
|
|
6967
7158
|
}
|
|
6968
7159
|
const suffix = sourceSuffix(source.url);
|
|
6969
|
-
|
|
7160
|
+
const detail = suffix !== "" && suffix !== source.label ? suffix : sourceTransport(source.url);
|
|
7161
|
+
labels.set(source.id, detail === "" ? source.url : `${detail} · ${source.label}`);
|
|
6970
7162
|
}
|
|
6971
7163
|
return labels;
|
|
6972
7164
|
}
|
|
@@ -7093,11 +7285,15 @@ window.__ModuleLoader__.load({
|
|
|
7093
7285
|
var MARKET_DISCOVER_ROUTE = "panels/market-discover";
|
|
7094
7286
|
var MARKET_DOC_ROUTE = "panels/market-doc";
|
|
7095
7287
|
var MARKET_PUBLISH_PREVIEW_ROUTE = "panels/market-publish-preview";
|
|
7288
|
+
var MARKET_SOURCES_ROUTE = "panels/market-sources";
|
|
7096
7289
|
//#endregion
|
|
7097
7290
|
//#region src/shared/hooks/market-queries.ts
|
|
7098
7291
|
function readMarketDiscover(options = {}) {
|
|
7099
7292
|
return apiGet(MARKET_DISCOVER_ROUTE, options.force === true ? { force: "1" } : {});
|
|
7100
7293
|
}
|
|
7294
|
+
function readMarketSources() {
|
|
7295
|
+
return apiGet(MARKET_SOURCES_ROUTE);
|
|
7296
|
+
}
|
|
7101
7297
|
function readMarketDoc(name, version, kind) {
|
|
7102
7298
|
return apiGet(MARKET_DOC_ROUTE, {
|
|
7103
7299
|
name,
|
|
@@ -7105,10 +7301,11 @@ window.__ModuleLoader__.load({
|
|
|
7105
7301
|
kind
|
|
7106
7302
|
});
|
|
7107
7303
|
}
|
|
7108
|
-
function readPublishPreview(unit, version) {
|
|
7304
|
+
function readPublishPreview(unit, version, author) {
|
|
7109
7305
|
return apiGet(MARKET_PUBLISH_PREVIEW_ROUTE, {
|
|
7110
7306
|
unit,
|
|
7111
|
-
...version === void 0 || version === "" ? {} : { version }
|
|
7307
|
+
...version === void 0 || version === "" ? {} : { version },
|
|
7308
|
+
...author === void 0 || author === "" ? {} : { author }
|
|
7112
7309
|
});
|
|
7113
7310
|
}
|
|
7114
7311
|
//#endregion
|
|
@@ -7362,6 +7559,7 @@ window.__ModuleLoader__.load({
|
|
|
7362
7559
|
const [url, setUrl] = (0, react.useState)("");
|
|
7363
7560
|
const [problem, setProblem] = (0, react.useState)(null);
|
|
7364
7561
|
const pending = props.busy || props.adding;
|
|
7562
|
+
const selectedVisible = props.sources.some((source) => source.id === props.selected);
|
|
7365
7563
|
const add = () => {
|
|
7366
7564
|
if (pending) return;
|
|
7367
7565
|
const parsed = sourceFromUrl(url);
|
|
@@ -7384,13 +7582,29 @@ window.__ModuleLoader__.load({
|
|
|
7384
7582
|
closeLabel: t("panels.discover.close"),
|
|
7385
7583
|
description: t("panels.discover.sourcesIntro"),
|
|
7386
7584
|
className: MarketPage_module_default.discoverDialog
|
|
7387
|
-
}, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverDialogBody }, props.
|
|
7585
|
+
}, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverDialogBody }, props.loading && !selectedVisible ? props.slow ? /* @__PURE__ */ (0, react.createElement)("p", {
|
|
7586
|
+
className: MarketPage_module_default.discoverNotice,
|
|
7587
|
+
role: "note"
|
|
7588
|
+
}, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
|
|
7589
|
+
size: 14,
|
|
7590
|
+
"aria-hidden": "true"
|
|
7591
|
+
}), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.slowHint"))) : /* @__PURE__ */ (0, react.createElement)(DiscoverLoading, { label: t("panels.discover.loading") }) : null, props.sources.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)("ul", {
|
|
7388
7592
|
className: MarketPage_module_default.discoverSourceList,
|
|
7389
7593
|
"aria-label": t("panels.discover.sourcesLabel")
|
|
7390
7594
|
}, props.sources.map((source) => /* @__PURE__ */ (0, react.createElement)("li", {
|
|
7391
7595
|
key: source.id,
|
|
7392
7596
|
className: MarketPage_module_default.discoverSourceRow
|
|
7393
|
-
}, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverMain }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverStrong }, source.label), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverMeta }, source.url), props.problem?.id === source.id ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSourceError }, props.problem.detail) : null), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.
|
|
7597
|
+
}, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverMain }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverStrong }, source.label), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverMeta }, source.url), !props.loading && props.problem?.id === source.id ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSourceError }, props.problem.detail) : null), source.id === props.selected ? props.loading ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSourceLoading }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.StateDot, { state: "ongoing" }), t("panels.discover.loading")) : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSourceCurrent }, t("panels.discover.sourceCurrent")) : /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
7598
|
+
type: "button",
|
|
7599
|
+
variant: "ghost",
|
|
7600
|
+
size: "sm",
|
|
7601
|
+
"aria-label": t("panels.discover.useSourceNamed", { label: source.label }),
|
|
7602
|
+
disabled: pending,
|
|
7603
|
+
onClick: () => {
|
|
7604
|
+
props.onSelect(source.id);
|
|
7605
|
+
props.onClose();
|
|
7606
|
+
}
|
|
7607
|
+
}, t("panels.discover.useSource")), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
7394
7608
|
label: t("panels.discover.removeSource"),
|
|
7395
7609
|
side: "bottom",
|
|
7396
7610
|
portal: true,
|
|
@@ -7403,7 +7617,13 @@ window.__ModuleLoader__.load({
|
|
|
7403
7617
|
"aria-label": t("panels.discover.removeSourceNamed", { url: source.url }),
|
|
7404
7618
|
disabled: pending,
|
|
7405
7619
|
onClick: () => props.onRemove(source.id)
|
|
7406
|
-
}))
|
|
7620
|
+
})), source.id === props.selected && props.loading && props.slow ? /* @__PURE__ */ (0, react.createElement)("span", {
|
|
7621
|
+
className: MarketPage_module_default.discoverSourceHint,
|
|
7622
|
+
role: "note"
|
|
7623
|
+
}, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
|
|
7624
|
+
size: 12,
|
|
7625
|
+
"aria-hidden": "true"
|
|
7626
|
+
}), t("panels.discover.slowHint")) : null))), /* @__PURE__ */ (0, react.createElement)("form", {
|
|
7407
7627
|
className: MarketPage_module_default.discoverSourceForm,
|
|
7408
7628
|
onSubmit: (event) => {
|
|
7409
7629
|
event.preventDefault();
|
|
@@ -7446,12 +7666,16 @@ window.__ModuleLoader__.load({
|
|
|
7446
7666
|
t,
|
|
7447
7667
|
open: d.manageOpen,
|
|
7448
7668
|
sources: d.sources,
|
|
7669
|
+
selected: d.selected,
|
|
7670
|
+
loading: d.loading,
|
|
7671
|
+
slow: d.slow,
|
|
7449
7672
|
problem: d.problem,
|
|
7450
7673
|
busy: d.busy,
|
|
7451
7674
|
adding: d.addingSource,
|
|
7452
7675
|
onClose: () => d.setManageOpen(false),
|
|
7453
7676
|
onAdd: d.addSource,
|
|
7454
|
-
onRemove: d.removeSourceById
|
|
7677
|
+
onRemove: d.removeSourceById,
|
|
7678
|
+
onSelect: d.selectSource
|
|
7455
7679
|
}), /* @__PURE__ */ (0, react.createElement)(DiscoverConfirm, {
|
|
7456
7680
|
t,
|
|
7457
7681
|
locale: d.locale,
|
|
@@ -7548,6 +7772,7 @@ window.__ModuleLoader__.load({
|
|
|
7548
7772
|
value: text,
|
|
7549
7773
|
placeholder: t("panels.discover.search"),
|
|
7550
7774
|
"aria-label": t("panels.discover.search"),
|
|
7775
|
+
disabled: props.loading,
|
|
7551
7776
|
onChange: (event) => setText(event.currentTarget.value)
|
|
7552
7777
|
}), props.labels.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Menu, {
|
|
7553
7778
|
className: MarketPage_module_default.discoverLabels,
|
|
@@ -7596,6 +7821,7 @@ window.__ModuleLoader__.load({
|
|
|
7596
7821
|
variant: "ghost",
|
|
7597
7822
|
"aria-haspopup": "menu",
|
|
7598
7823
|
"aria-expanded": open === "sort",
|
|
7824
|
+
disabled: props.loading,
|
|
7599
7825
|
onClick: () => setOpen(open === "sort" ? null : "sort")
|
|
7600
7826
|
}, t("panels.discover.sortWith", { label: sortName }), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutlineRegular, {
|
|
7601
7827
|
size: 12,
|
|
@@ -7634,6 +7860,12 @@ window.__ModuleLoader__.load({
|
|
|
7634
7860
|
"restart-required",
|
|
7635
7861
|
"overridden"
|
|
7636
7862
|
];
|
|
7863
|
+
function sourceRowsOf(sources) {
|
|
7864
|
+
return sources.map((source) => ({
|
|
7865
|
+
...source,
|
|
7866
|
+
writable: source.kind === "http" ? false : null
|
|
7867
|
+
}));
|
|
7868
|
+
}
|
|
7637
7869
|
function installVerdictOf(value, t) {
|
|
7638
7870
|
const change = changeOf(value);
|
|
7639
7871
|
if (change === void 0) return { kind: "quiet" };
|
|
@@ -7647,6 +7879,7 @@ window.__ModuleLoader__.load({
|
|
|
7647
7879
|
function useDiscover(t, active, onInstalled) {
|
|
7648
7880
|
const [payload, setPayload] = (0, react.useState)(null);
|
|
7649
7881
|
const [loading, setLoading] = (0, react.useState)(true);
|
|
7882
|
+
const [slow, setSlow] = (0, react.useState)(false);
|
|
7650
7883
|
const [failure, setFailure] = (0, react.useState)(null);
|
|
7651
7884
|
const [query, setQuery] = (0, react.useState)("");
|
|
7652
7885
|
const [category, setCategory] = (0, react.useState)(null);
|
|
@@ -7659,7 +7892,10 @@ window.__ModuleLoader__.load({
|
|
|
7659
7892
|
const [choice, setChoice] = (0, react.useState)(null);
|
|
7660
7893
|
const [notice, setNotice] = (0, react.useState)(null);
|
|
7661
7894
|
const [addingSource, setAddingSource] = (0, react.useState)(false);
|
|
7895
|
+
const [knownSources, setKnownSources] = (0, react.useState)(null);
|
|
7662
7896
|
const loaded = (0, react.useRef)(false);
|
|
7897
|
+
const loadTicket = (0, react.useRef)(0);
|
|
7898
|
+
const sourceTicket = (0, react.useRef)(0);
|
|
7663
7899
|
const locale = (0, react.useMemo)(() => localeNow(), []);
|
|
7664
7900
|
const sources = useHostWrite({
|
|
7665
7901
|
channel: "actions",
|
|
@@ -7670,11 +7906,27 @@ window.__ModuleLoader__.load({
|
|
|
7670
7906
|
channel: "provision",
|
|
7671
7907
|
networkText: t("panels.discover.failed")
|
|
7672
7908
|
});
|
|
7909
|
+
const loadSources = (0, react.useCallback)(async () => {
|
|
7910
|
+
const ticket = sourceTicket.current + 1;
|
|
7911
|
+
sourceTicket.current = ticket;
|
|
7912
|
+
const response = await readMarketSources().catch(() => null);
|
|
7913
|
+
if (sourceTicket.current !== ticket) return;
|
|
7914
|
+
if (response === null || !response.ok) return;
|
|
7915
|
+
setKnownSources({
|
|
7916
|
+
sources: sourceRowsOf(response.sources),
|
|
7917
|
+
selected: response.selected
|
|
7918
|
+
});
|
|
7919
|
+
}, []);
|
|
7673
7920
|
const load = (0, react.useCallback)(async (force = false) => {
|
|
7921
|
+
const ticket = loadTicket.current + 1;
|
|
7922
|
+
loadTicket.current = ticket;
|
|
7674
7923
|
setLoading(true);
|
|
7924
|
+
setSlow(false);
|
|
7675
7925
|
setFailure(null);
|
|
7676
7926
|
const response = await readMarketDiscover({ force }).catch(() => null);
|
|
7927
|
+
if (loadTicket.current !== ticket) return;
|
|
7677
7928
|
setLoading(false);
|
|
7929
|
+
setSlow(false);
|
|
7678
7930
|
if (response === null || !response.ok) {
|
|
7679
7931
|
setFailure(t("panels.discover.unreadable"));
|
|
7680
7932
|
return;
|
|
@@ -7682,11 +7934,29 @@ window.__ModuleLoader__.load({
|
|
|
7682
7934
|
setPayload(response);
|
|
7683
7935
|
setLimit(50);
|
|
7684
7936
|
}, [t]);
|
|
7937
|
+
const beginSwitch = () => {
|
|
7938
|
+
loadTicket.current += 1;
|
|
7939
|
+
sourceTicket.current += 1;
|
|
7940
|
+
setFailure(null);
|
|
7941
|
+
setPayload(null);
|
|
7942
|
+
setLoading(true);
|
|
7943
|
+
setSlow(false);
|
|
7944
|
+
};
|
|
7685
7945
|
(0, react.useEffect)(() => {
|
|
7686
7946
|
if (!active || loaded.current) return;
|
|
7687
7947
|
loaded.current = true;
|
|
7948
|
+
loadSources();
|
|
7688
7949
|
load();
|
|
7689
|
-
}, [
|
|
7950
|
+
}, [
|
|
7951
|
+
active,
|
|
7952
|
+
load,
|
|
7953
|
+
loadSources
|
|
7954
|
+
]);
|
|
7955
|
+
(0, react.useEffect)(() => {
|
|
7956
|
+
if (!loading) return void 0;
|
|
7957
|
+
const timer = setTimeout(() => setSlow(true), 8e3);
|
|
7958
|
+
return () => clearTimeout(timer);
|
|
7959
|
+
}, [loading]);
|
|
7690
7960
|
(0, react.useEffect)(() => subscribeFactRevision(CAPABILITY_FACT, () => {
|
|
7691
7961
|
if (!loaded.current) return;
|
|
7692
7962
|
load(true);
|
|
@@ -7740,6 +8010,8 @@ window.__ModuleLoader__.load({
|
|
|
7740
8010
|
const done = typeof value?.["branch"] === "string" ? value["branch"] : branch;
|
|
7741
8011
|
setInitOpen(false);
|
|
7742
8012
|
setNotice(t("panels.discover.initDone", { branch: done }));
|
|
8013
|
+
beginSwitch();
|
|
8014
|
+
await loadSources();
|
|
7743
8015
|
await load(true);
|
|
7744
8016
|
});
|
|
7745
8017
|
};
|
|
@@ -7757,8 +8029,11 @@ window.__ModuleLoader__.load({
|
|
|
7757
8029
|
id
|
|
7758
8030
|
},
|
|
7759
8031
|
select: true
|
|
7760
|
-
}).then(
|
|
7761
|
-
if (outcome.ok)
|
|
8032
|
+
}).then((outcome) => {
|
|
8033
|
+
if (!outcome.ok) return;
|
|
8034
|
+
beginSwitch();
|
|
8035
|
+
loadSources();
|
|
8036
|
+
load(true);
|
|
7762
8037
|
}).finally(() => setAddingSource(false));
|
|
7763
8038
|
};
|
|
7764
8039
|
const removeSourceById = (id) => {
|
|
@@ -7770,6 +8045,8 @@ window.__ModuleLoader__.load({
|
|
|
7770
8045
|
}).then(async (outcome) => {
|
|
7771
8046
|
if (!outcome.ok) return;
|
|
7772
8047
|
setDetail(null);
|
|
8048
|
+
beginSwitch();
|
|
8049
|
+
await loadSources();
|
|
7773
8050
|
await load(true);
|
|
7774
8051
|
});
|
|
7775
8052
|
};
|
|
@@ -7782,11 +8059,23 @@ window.__ModuleLoader__.load({
|
|
|
7782
8059
|
setSelectedLabels([]);
|
|
7783
8060
|
setSort("default");
|
|
7784
8061
|
setDetail(null);
|
|
8062
|
+
beginSwitch();
|
|
8063
|
+
setKnownSources((current) => current === null ? current : {
|
|
8064
|
+
sources: current.sources,
|
|
8065
|
+
selected: id
|
|
8066
|
+
});
|
|
7785
8067
|
sources.send({
|
|
7786
8068
|
action: "select",
|
|
7787
8069
|
id
|
|
7788
8070
|
}).then(async (outcome) => {
|
|
7789
|
-
if (outcome.ok)
|
|
8071
|
+
if (!outcome.ok) {
|
|
8072
|
+
setLoading(false);
|
|
8073
|
+
setSlow(false);
|
|
8074
|
+
loadSources();
|
|
8075
|
+
return;
|
|
8076
|
+
}
|
|
8077
|
+
await loadSources();
|
|
8078
|
+
await load(true);
|
|
7790
8079
|
});
|
|
7791
8080
|
};
|
|
7792
8081
|
const install = () => {
|
|
@@ -7821,9 +8110,10 @@ window.__ModuleLoader__.load({
|
|
|
7821
8110
|
locale,
|
|
7822
8111
|
payload,
|
|
7823
8112
|
loading,
|
|
8113
|
+
slow,
|
|
7824
8114
|
failure,
|
|
7825
|
-
sources: payload?.sources ?? [],
|
|
7826
|
-
selected: payload?.selected ?? null,
|
|
8115
|
+
sources: payload?.sources ?? knownSources?.sources ?? [],
|
|
8116
|
+
selected: payload?.selected ?? knownSources?.selected ?? null,
|
|
7827
8117
|
entries,
|
|
7828
8118
|
shown,
|
|
7829
8119
|
total: sorted.length,
|
|
@@ -7894,35 +8184,45 @@ window.__ModuleLoader__.load({
|
|
|
7894
8184
|
t,
|
|
7895
8185
|
d
|
|
7896
8186
|
});
|
|
7897
|
-
|
|
8187
|
+
const slowHint = !d.manageOpen && d.loading && d.slow ? /* @__PURE__ */ (0, react.createElement)("p", {
|
|
8188
|
+
className: MarketPage_module_default.discoverNotice,
|
|
8189
|
+
role: "note"
|
|
8190
|
+
}, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
|
|
8191
|
+
size: 14,
|
|
8192
|
+
"aria-hidden": "true"
|
|
8193
|
+
}), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.slowHint"))) : null;
|
|
8194
|
+
if (d.payload === null) return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverPage }, d.sources.length === 0 ? null : toolbar, d.loading ? /* @__PURE__ */ (0, react.createElement)(DiscoverSkeleton, { label: t("panels.discover.loading") }) : /* @__PURE__ */ (0, react.createElement)(DiscoverFailure, {
|
|
7898
8195
|
t,
|
|
7899
8196
|
text: t("panels.discover.sourcesFailed"),
|
|
7900
8197
|
onRetry: d.reload
|
|
7901
|
-
}), dialogs);
|
|
8198
|
+
}), slowHint, d.writeFailed === null ? null : /* @__PURE__ */ (0, react.createElement)("p", { className: MarketPage_module_default.discoverError }, d.writeFailed), dialogs);
|
|
7902
8199
|
if (d.payload.state === "no-source") return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverPage }, /* @__PURE__ */ (0, react.createElement)(DiscoverNoSource, {
|
|
7903
8200
|
t,
|
|
7904
8201
|
onAdd: () => d.setManageOpen(true)
|
|
7905
8202
|
}), dialogs);
|
|
7906
|
-
const
|
|
8203
|
+
const failed = d.payload.state === "invalid" || d.payload.state === "unreadable";
|
|
8204
|
+
const readFailed = !d.loading && failed ? d.payload.state === "invalid" ? t("panels.discover.invalid") : t("panels.discover.unreadable") : null;
|
|
8205
|
+
const uninitialized = d.loading ? null : d.uninitialized;
|
|
8206
|
+
const retrying = d.loading && failed;
|
|
7907
8207
|
const emptyText = unfiltered({
|
|
7908
8208
|
query: d.query,
|
|
7909
8209
|
category: d.category,
|
|
7910
8210
|
labels: d.selectedLabels
|
|
7911
8211
|
}) ? t("panels.discover.empty") : t("panels.discover.noMatch");
|
|
7912
|
-
return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverPage }, toolbar, d.payload.stale === true ? /* @__PURE__ */ (0, react.createElement)("p", {
|
|
8212
|
+
return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverPage }, toolbar, d.loading && !d.manageOpen ? /* @__PURE__ */ (0, react.createElement)(DiscoverLoading, { label: t("panels.discover.loading") }) : null, slowHint, !d.loading && d.payload.stale === true ? /* @__PURE__ */ (0, react.createElement)("p", {
|
|
7913
8213
|
className: MarketPage_module_default.discoverNotice,
|
|
7914
8214
|
role: "note"
|
|
7915
8215
|
}, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
|
|
7916
8216
|
size: 14,
|
|
7917
8217
|
"aria-hidden": "true"
|
|
7918
|
-
}), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.stale"))) : null,
|
|
8218
|
+
}), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.stale"))) : null, uninitialized === null ? readFailed === null ? null : /* @__PURE__ */ (0, react.createElement)(DiscoverFailure, {
|
|
7919
8219
|
t,
|
|
7920
8220
|
text: readFailed,
|
|
7921
8221
|
onRetry: d.reload
|
|
7922
8222
|
}) : /* @__PURE__ */ (0, react.createElement)(DiscoverUninitialized, {
|
|
7923
8223
|
t,
|
|
7924
|
-
path:
|
|
7925
|
-
empty:
|
|
8224
|
+
path: uninitialized.path,
|
|
8225
|
+
empty: uninitialized.empty,
|
|
7926
8226
|
onInit: () => d.setInitOpen(true)
|
|
7927
8227
|
}), d.notice === null ? null : /* @__PURE__ */ (0, react.createElement)("p", {
|
|
7928
8228
|
className: MarketPage_module_default.discoverNotice,
|
|
@@ -7941,7 +8241,7 @@ window.__ModuleLoader__.load({
|
|
|
7941
8241
|
version
|
|
7942
8242
|
}),
|
|
7943
8243
|
onShowInstalled
|
|
7944
|
-
}) : readFailed !== null ||
|
|
8244
|
+
}) : readFailed !== null || uninitialized !== null || retrying ? null : d.shown.length === 0 ? /* @__PURE__ */ (0, react.createElement)(DiscoverEmptyText, { text: emptyText }) : /* @__PURE__ */ (0, react.createElement)(DiscoverRows, {
|
|
7945
8245
|
t,
|
|
7946
8246
|
locale: d.locale,
|
|
7947
8247
|
entries: d.shown,
|
|
@@ -8722,7 +9022,7 @@ window.__ModuleLoader__.load({
|
|
|
8722
9022
|
return crypto.randomUUID();
|
|
8723
9023
|
}
|
|
8724
9024
|
function useAddModule(options) {
|
|
8725
|
-
const {
|
|
9025
|
+
const { onInstalled, failedText } = options;
|
|
8726
9026
|
const [spec, setSpec] = (0, react.useState)("");
|
|
8727
9027
|
const [choice, setChoice] = (0, react.useState)({
|
|
8728
9028
|
kind: "default",
|
|
@@ -8753,7 +9053,6 @@ window.__ModuleLoader__.load({
|
|
|
8753
9053
|
networkText: failedText
|
|
8754
9054
|
});
|
|
8755
9055
|
(0, react.useEffect)(() => {
|
|
8756
|
-
if (!open) return void 0;
|
|
8757
9056
|
let alive = true;
|
|
8758
9057
|
readBundleRegistries().then((response) => {
|
|
8759
9058
|
if (!alive) return;
|
|
@@ -8762,19 +9061,8 @@ window.__ModuleLoader__.load({
|
|
|
8762
9061
|
return () => {
|
|
8763
9062
|
alive = false;
|
|
8764
9063
|
};
|
|
8765
|
-
}, [
|
|
9064
|
+
}, []);
|
|
8766
9065
|
const registry = registryOf(choice, custom);
|
|
8767
|
-
(0, react.useEffect)(() => {
|
|
8768
|
-
if (open) return;
|
|
8769
|
-
generationRef.current += 1;
|
|
8770
|
-
setGuideOpen(false);
|
|
8771
|
-
setRegistryOpen(false);
|
|
8772
|
-
setProblem(null);
|
|
8773
|
-
setPreview(null);
|
|
8774
|
-
setOutcome(null);
|
|
8775
|
-
setFailure(null);
|
|
8776
|
-
setPhase("idle");
|
|
8777
|
-
}, [open]);
|
|
8778
9066
|
const check = (0, react.useCallback)(() => {
|
|
8779
9067
|
const wanted = spec.trim();
|
|
8780
9068
|
if (wanted === "") return;
|
|
@@ -8911,15 +9199,21 @@ window.__ModuleLoader__.load({
|
|
|
8911
9199
|
//#endregion
|
|
8912
9200
|
//#region src/app/layouts/market/AddModuleDialog.tsx
|
|
8913
9201
|
function AddModuleDialog({ t, open, onClose, onInstalled }) {
|
|
9202
|
+
if (!open) return null;
|
|
9203
|
+
return /* @__PURE__ */ (0, react.createElement)(AddModuleContent, {
|
|
9204
|
+
t,
|
|
9205
|
+
onClose,
|
|
9206
|
+
onInstalled
|
|
9207
|
+
});
|
|
9208
|
+
}
|
|
9209
|
+
function AddModuleContent({ t, onClose, onInstalled }) {
|
|
8914
9210
|
const real = useAddModule({
|
|
8915
|
-
open,
|
|
8916
9211
|
onInstalled,
|
|
8917
9212
|
failedText: t("panels.failed")
|
|
8918
9213
|
});
|
|
8919
9214
|
const devAdd = devSurface.useStrips("addModule", []);
|
|
8920
9215
|
const mock = devAdd.current;
|
|
8921
9216
|
const state = mock === void 0 ? real : devSurface.addModuleState(real, mock);
|
|
8922
|
-
if (!open) return null;
|
|
8923
9217
|
const installing = state.phase === "installing";
|
|
8924
9218
|
const checking = state.phase === "inspecting";
|
|
8925
9219
|
const empty = state.spec.trim() === "";
|
|
@@ -8979,7 +9273,7 @@ window.__ModuleLoader__.load({
|
|
|
8979
9273
|
onClick: () => state.install()
|
|
8980
9274
|
}, t("panels.market.add.retry")) : null) : null);
|
|
8981
9275
|
return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
|
|
8982
|
-
open,
|
|
9276
|
+
open: true,
|
|
8983
9277
|
onClose: () => {
|
|
8984
9278
|
if (!installing) onClose();
|
|
8985
9279
|
},
|
|
@@ -9052,7 +9346,7 @@ window.__ModuleLoader__.load({
|
|
|
9052
9346
|
return /* @__PURE__ */ (0, react.createElement)(IconModules, { size });
|
|
9053
9347
|
};
|
|
9054
9348
|
}
|
|
9055
|
-
function MarketPanel({ t, units }) {
|
|
9349
|
+
function MarketPanel({ t, units, titleOf }) {
|
|
9056
9350
|
const manifests = useLiveManifests(units);
|
|
9057
9351
|
const installable = useInstallableUnits(units);
|
|
9058
9352
|
const { capabilities, checkedAt, checking, forceProbe, reload: reloadCapability } = useCapabilityMap(0);
|
|
@@ -9150,6 +9444,7 @@ window.__ModuleLoader__.load({
|
|
|
9150
9444
|
}, /* @__PURE__ */ (0, react.createElement)(MarketView, {
|
|
9151
9445
|
key: `${mock?.id ?? "real-market"}-${mockNonce}`,
|
|
9152
9446
|
t,
|
|
9447
|
+
titleOf,
|
|
9153
9448
|
manifests,
|
|
9154
9449
|
installable,
|
|
9155
9450
|
capabilities,
|
|
@@ -9185,6 +9480,10 @@ window.__ModuleLoader__.load({
|
|
|
9185
9480
|
}
|
|
9186
9481
|
function registerMarketPanel(ctx, units) {
|
|
9187
9482
|
const t = ctx.locale.bind(LOCALE_NS);
|
|
9483
|
+
const titleOf = (title) => title === void 0 ? "" : ctx.locale.resolveText?.({
|
|
9484
|
+
zh: title.zh,
|
|
9485
|
+
en: title.en
|
|
9486
|
+
}) ?? title.zh;
|
|
9188
9487
|
ctx.slots.inject("sidebar.panellist", () => ctx.slots.register({
|
|
9189
9488
|
name: "sidebar.panellist",
|
|
9190
9489
|
id: MARKET_PANEL_ID,
|
|
@@ -9196,7 +9495,10 @@ window.__ModuleLoader__.load({
|
|
|
9196
9495
|
name: "main",
|
|
9197
9496
|
key: MARKET_PANEL_ID,
|
|
9198
9497
|
locale: LOCALE_NS,
|
|
9199
|
-
inject: () => ({
|
|
9498
|
+
inject: () => ({
|
|
9499
|
+
units,
|
|
9500
|
+
titleOf
|
|
9501
|
+
})
|
|
9200
9502
|
}, MarketPanel));
|
|
9201
9503
|
}
|
|
9202
9504
|
//#endregion
|
|
@@ -9248,6 +9550,14 @@ window.__ModuleLoader__.load({
|
|
|
9248
9550
|
}).catch(() => void 0);
|
|
9249
9551
|
}
|
|
9250
9552
|
//#endregion
|
|
9553
|
+
//#region src/shared/hooks/resource-view.ts
|
|
9554
|
+
var IDLE = { phase: "idle" };
|
|
9555
|
+
var LOADING = { phase: "loading" };
|
|
9556
|
+
function resourceViewOf(enabled, current, identity) {
|
|
9557
|
+
if (!enabled) return IDLE;
|
|
9558
|
+
return current.identity === identity ? current.state : LOADING;
|
|
9559
|
+
}
|
|
9560
|
+
//#endregion
|
|
9251
9561
|
//#region src/shared/hooks/use-api-resource.ts
|
|
9252
9562
|
var use_api_resource_exports = /* @__PURE__ */ __exportAll({
|
|
9253
9563
|
readKeyOf: () => readKeyOf,
|
|
@@ -9319,7 +9629,10 @@ window.__ModuleLoader__.load({
|
|
|
9319
9629
|
const identity = resourceIdentity(route, query, options.key);
|
|
9320
9630
|
const factRev = useFactRevision(options.fact ?? factOfRoute(route));
|
|
9321
9631
|
const key = readKeyOf(identity, refreshToken, factRev);
|
|
9322
|
-
const [
|
|
9632
|
+
const [current, setCurrent] = (0, react.useState)(() => ({
|
|
9633
|
+
identity,
|
|
9634
|
+
state: enabled ? LOADING : IDLE
|
|
9635
|
+
}));
|
|
9323
9636
|
const lastIdentity = (0, react.useRef)(null);
|
|
9324
9637
|
const queryRef = (0, react.useRef)(query);
|
|
9325
9638
|
(0, react.useEffect)(() => {
|
|
@@ -9328,17 +9641,23 @@ window.__ModuleLoader__.load({
|
|
|
9328
9641
|
(0, react.useEffect)(() => {
|
|
9329
9642
|
if (!enabled) {
|
|
9330
9643
|
lastIdentity.current = null;
|
|
9331
|
-
setState({ phase: "idle" });
|
|
9332
9644
|
return;
|
|
9333
9645
|
}
|
|
9334
9646
|
let cancelled = false;
|
|
9647
|
+
const put = (state) => setCurrent({
|
|
9648
|
+
identity,
|
|
9649
|
+
state
|
|
9650
|
+
});
|
|
9335
9651
|
const sameIdentity = lastIdentity.current === identity;
|
|
9336
9652
|
lastIdentity.current = identity;
|
|
9337
|
-
|
|
9338
|
-
|
|
9339
|
-
|
|
9340
|
-
|
|
9341
|
-
|
|
9653
|
+
setCurrent((prev) => ({
|
|
9654
|
+
identity,
|
|
9655
|
+
state: sameIdentity && prev.state.value !== void 0 ? {
|
|
9656
|
+
phase: "loading",
|
|
9657
|
+
value: prev.state.value,
|
|
9658
|
+
...prev.state.at === void 0 ? {} : { at: prev.state.at }
|
|
9659
|
+
} : LOADING
|
|
9660
|
+
}));
|
|
9342
9661
|
const flight = requestResource(route, queryRef.current, key);
|
|
9343
9662
|
const owner = options.report === false ? null : unitOfRoute(route);
|
|
9344
9663
|
if (owner !== null) reportPanelRead({
|
|
@@ -9349,7 +9668,7 @@ window.__ModuleLoader__.load({
|
|
|
9349
9668
|
flight.task.then((response) => {
|
|
9350
9669
|
if (cancelled) return;
|
|
9351
9670
|
if (response.ok) {
|
|
9352
|
-
|
|
9671
|
+
put({
|
|
9353
9672
|
phase: "ready",
|
|
9354
9673
|
value: response,
|
|
9355
9674
|
at: Date.now()
|
|
@@ -9361,7 +9680,7 @@ window.__ModuleLoader__.load({
|
|
|
9361
9680
|
});
|
|
9362
9681
|
return;
|
|
9363
9682
|
}
|
|
9364
|
-
|
|
9683
|
+
put({
|
|
9365
9684
|
phase: "error",
|
|
9366
9685
|
error: response.error
|
|
9367
9686
|
});
|
|
@@ -9377,7 +9696,7 @@ window.__ModuleLoader__.load({
|
|
|
9377
9696
|
}).catch((reason) => {
|
|
9378
9697
|
if (cancelled) return;
|
|
9379
9698
|
const message = reason instanceof Error ? reason.message : String(reason);
|
|
9380
|
-
|
|
9699
|
+
put({
|
|
9381
9700
|
phase: "error",
|
|
9382
9701
|
error: {
|
|
9383
9702
|
code: "network",
|
|
@@ -9408,7 +9727,7 @@ window.__ModuleLoader__.load({
|
|
|
9408
9727
|
options.fact,
|
|
9409
9728
|
options.report
|
|
9410
9729
|
]);
|
|
9411
|
-
return
|
|
9730
|
+
return resourceViewOf(enabled, current, identity);
|
|
9412
9731
|
}
|
|
9413
9732
|
//#endregion
|
|
9414
9733
|
//#region src/shared/hooks/use-diy-debug.ts
|
|
@@ -10455,6 +10774,26 @@ window.__ModuleLoader__.load({
|
|
|
10455
10774
|
for (const face of CLIENT_UNITS) registry.register(face);
|
|
10456
10775
|
}
|
|
10457
10776
|
//#endregion
|
|
10777
|
+
//#region src/app/units/unit-titles.ts
|
|
10778
|
+
var UNIT_TITLES_OWNER = "dsh-workbench";
|
|
10779
|
+
function unitTitlesOf(manifests) {
|
|
10780
|
+
const zh = {};
|
|
10781
|
+
const en = {};
|
|
10782
|
+
for (const manifest of manifests) {
|
|
10783
|
+
const title = manifest.title;
|
|
10784
|
+
if (title === void 0 || title.zh.trim() === "" || title.en.trim() === "") continue;
|
|
10785
|
+
zh[unitTitleKey(manifest.id)] = title.zh;
|
|
10786
|
+
en[unitTitleKey(manifest.id)] = title.en;
|
|
10787
|
+
}
|
|
10788
|
+
return {
|
|
10789
|
+
unit: UNIT_TITLES_OWNER,
|
|
10790
|
+
messages: {
|
|
10791
|
+
zh,
|
|
10792
|
+
en
|
|
10793
|
+
}
|
|
10794
|
+
};
|
|
10795
|
+
}
|
|
10796
|
+
//#endregion
|
|
10458
10797
|
//#region src/kernel/client/board-registry.ts
|
|
10459
10798
|
function createBoardRegistry() {
|
|
10460
10799
|
const modules = [];
|
|
@@ -10530,6 +10869,10 @@ window.__ModuleLoader__.load({
|
|
|
10530
10869
|
let installableIds = null;
|
|
10531
10870
|
let revision = 0;
|
|
10532
10871
|
let manifestsCache;
|
|
10872
|
+
let titleSignature = "";
|
|
10873
|
+
function titlesOf(manifests) {
|
|
10874
|
+
return manifests.flatMap((manifest) => manifest.title === void 0 ? [] : [`${manifest.id}=${manifest.title.zh}/${manifest.title.en}`]).join("|");
|
|
10875
|
+
}
|
|
10533
10876
|
function notify() {
|
|
10534
10877
|
revision += 1;
|
|
10535
10878
|
for (const listener of [...listeners]) try {
|
|
@@ -10609,7 +10952,10 @@ window.__ModuleLoader__.load({
|
|
|
10609
10952
|
for (const entry of registrations) {
|
|
10610
10953
|
const next = known.get(entry.unit);
|
|
10611
10954
|
if (entry.mounted === null) {
|
|
10612
|
-
if (next !== void 0
|
|
10955
|
+
if (next !== void 0) {
|
|
10956
|
+
attach(entry);
|
|
10957
|
+
changed = true;
|
|
10958
|
+
}
|
|
10613
10959
|
continue;
|
|
10614
10960
|
}
|
|
10615
10961
|
if (next === void 0) {
|
|
@@ -10618,6 +10964,11 @@ window.__ModuleLoader__.load({
|
|
|
10618
10964
|
changed = true;
|
|
10619
10965
|
}
|
|
10620
10966
|
}
|
|
10967
|
+
const titles = titlesOf(manifests);
|
|
10968
|
+
if (titles !== titleSignature) {
|
|
10969
|
+
titleSignature = titles;
|
|
10970
|
+
changed = true;
|
|
10971
|
+
}
|
|
10621
10972
|
if (!changed) return;
|
|
10622
10973
|
manifestsCache = void 0;
|
|
10623
10974
|
notify();
|
|
@@ -11388,6 +11739,7 @@ window.__ModuleLoader__.load({
|
|
|
11388
11739
|
const unit = textOf(args, "unit");
|
|
11389
11740
|
const target = textOf(args, "target");
|
|
11390
11741
|
const version = textOf(args, "version");
|
|
11742
|
+
const author = textOf(args, "author");
|
|
11391
11743
|
const rows = [
|
|
11392
11744
|
{
|
|
11393
11745
|
label: t("approval.publish.module"),
|
|
@@ -11403,7 +11755,7 @@ window.__ModuleLoader__.load({
|
|
|
11403
11755
|
},
|
|
11404
11756
|
{
|
|
11405
11757
|
label: t("approval.publish.author"),
|
|
11406
|
-
value: preview === void 0 ? t("approval.publish.reading") : preview?.author === void 0 || preview.author === "" ? t("approval.publish.authorMissing") : preview.author
|
|
11758
|
+
value: author !== "" ? author : preview === void 0 ? t("approval.publish.reading") : preview?.author === void 0 || preview.author === "" ? t("approval.publish.authorMissing") : preview.author
|
|
11407
11759
|
}
|
|
11408
11760
|
];
|
|
11409
11761
|
const market = preview?.market;
|
|
@@ -11450,17 +11802,22 @@ window.__ModuleLoader__.load({
|
|
|
11450
11802
|
function PublishApprovalSeat({ args, t }) {
|
|
11451
11803
|
const unit = textOf(args, "unit");
|
|
11452
11804
|
const version = textOf(args, "version");
|
|
11805
|
+
const author = textOf(args, "author");
|
|
11453
11806
|
const [preview, setPreview] = (0, react.useState)(() => unit === "" ? null : void 0);
|
|
11454
11807
|
(0, react.useEffect)(() => {
|
|
11455
11808
|
if (unit === "") return;
|
|
11456
11809
|
let live = true;
|
|
11457
|
-
readPublishPreview(unit, version).then((response) => {
|
|
11810
|
+
readPublishPreview(unit, version, author).then((response) => {
|
|
11458
11811
|
if (live) setPreview(response.ok ? response.preview : null);
|
|
11459
11812
|
});
|
|
11460
11813
|
return () => {
|
|
11461
11814
|
live = false;
|
|
11462
11815
|
};
|
|
11463
|
-
}, [
|
|
11816
|
+
}, [
|
|
11817
|
+
unit,
|
|
11818
|
+
version,
|
|
11819
|
+
author
|
|
11820
|
+
]);
|
|
11464
11821
|
return (0, react.createElement)(ApprovalPlan, { rows: publishRows(args, preview, t) }, (0, react.createElement)(PublishChangelogSeat, {
|
|
11465
11822
|
changelog: preview?.changelog,
|
|
11466
11823
|
t
|
|
@@ -12225,10 +12582,10 @@ window.__ModuleLoader__.load({
|
|
|
12225
12582
|
//#region src/app/layouts/rightbar/PanelModules.tsx
|
|
12226
12583
|
function PanelModules({ t, open, onOpenChange, enabledUnits, workspace, refreshToken, manifests, onOpenMarket }) {
|
|
12227
12584
|
const { capabilities, checkedAt, forceProbe } = useCapabilityMap(refreshToken);
|
|
12228
|
-
const
|
|
12585
|
+
const decided = (0, react.useRef)(false);
|
|
12229
12586
|
(0, react.useEffect)(() => {
|
|
12230
|
-
if (!open || decided) return;
|
|
12231
|
-
|
|
12587
|
+
if (!open || decided.current) return;
|
|
12588
|
+
decided.current = true;
|
|
12232
12589
|
if (!shouldProbeOnEnter({
|
|
12233
12590
|
checkedAt,
|
|
12234
12591
|
now: Date.now(),
|
|
@@ -12238,7 +12595,6 @@ window.__ModuleLoader__.load({
|
|
|
12238
12595
|
forceProbe();
|
|
12239
12596
|
}, [
|
|
12240
12597
|
open,
|
|
12241
|
-
decided,
|
|
12242
12598
|
checkedAt,
|
|
12243
12599
|
forceProbe
|
|
12244
12600
|
]);
|
|
@@ -14378,7 +14734,7 @@ window.__ModuleLoader__.load({
|
|
|
14378
14734
|
...face.messages === void 0 ? {} : { messages: face.messages }
|
|
14379
14735
|
}));
|
|
14380
14736
|
}
|
|
14381
|
-
var COMPONENT_CSS_MARKER = ".wb-activityBlock {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n padding-top: var(--wb-len-10);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n.wb-activityBlock:first-child {\n padding-top: 0;\n border-top: none;\n}\n\n.wb-activityBlockHead {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-8);\n}\n\n.wb-activityLine {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-activityLineText {\n flex: none;\n min-width: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n max-height: var(--wb-len-72);\n overflow-y: auto;\n}\n\n.wb-activityLineAt {\n flex: none;\n margin-left: auto;\n font-size: var(--wb-font-10);\n line-height: var(--wb-line-16);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-activityLine > .wb-activityLineAt,\n.wb-activityLine > .wb-activityLineActions {\n margin-left: auto;\n}\n\n.wb-activityLine > .wb-activityLineAt + .wb-activityLineActions {\n margin-left: 0;\n}\n\n.wb-activityLineActions {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n.wb-activityActionFailed {\n color: var(--dsw-alias-state-error-primary);\n}\n.wb-note {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-problem {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n.wb-approvalCommand {\n max-width: 100%;\n}\n.wb-approvalPlan {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n.wb-approvalHint {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n.wb-approvalRows {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n margin: 0;\n}\n.wb-approvalRow {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n.wb-approvalLabel {\n flex: none;\n width: var(--wb-len-56);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-approvalValue {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n.wb-approvalWarn {\n color: var(--dsw-alias-label-secondary);\n}\n.wb-cardHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n flex: none;\n padding: var(--wb-len-8) var(--wb-len-10) var(--wb-len-8) var(--wb-card-gutter);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n.wb-cardTitle {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n font-weight: 600;\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-cardMeta {\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-cardMeta::before {\n content: '\\00b7';\n margin-right: var(--wb-len-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardOpen {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n margin-left: auto;\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-4);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardOpen ~ .wb-cardRefresh {\n margin-left: 0;\n}\n\n.wb-cardOpen:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-cardRefresh {\n margin-left: auto;\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-4);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardRefresh:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-cardRefresh:disabled {\n cursor: default;\n opacity: 1;\n}\n\n.wb-cardGear {\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-3);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardGear:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n.wb-card {\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-xl);\n background: var(--dsw-alias-bg-layer-1);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n flex: none;\n}\n.wb-cardBody {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n padding: var(--wb-len-12) var(--wb-card-gutter);\n font-size: var(--dsw-font-xxs-12-font-size);\n}\n.wb-cardBleed {\n margin-inline: calc(-1 * var(--wb-card-gutter));\n}\n._anchor_yq4s2_1 {\n display: contents;\n}\n.wb-spinner {\n display: inline-flex;\n align-items: center;\n flex: none;\n}\n.wb-choiceMenu {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n background: transparent;\n}\n\n.wb-choiceMenu[data-variant='boxed'] {\n padding: var(--wb-len-4);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n}\n\n.wb-choiceOption {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: pointer;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-choiceOptionOn {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-checkbox {\n position: absolute;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: 0;\n opacity: 0;\n pointer-events: none;\n}\n\n.wb-checkboxBox {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n border: 1px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-xs);\n corner-shape: round;\n color: var(--dsw-alias-label-primary-foreground);\n transition:\n background-color var(--wb-dur-0-12) ease, border-color var(--wb-dur-0-12) ease;\n}\n\n.wb-choiceOption:hover .wb-checkboxBox {\n border-color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-checkbox:checked + .wb-checkboxBox {\n border-color: var(--dsw-alias-brand-primary);\n background: var(--dsw-alias-brand-primary);\n}\n\n.wb-checkbox:disabled + .wb-checkboxBox {\n cursor: default;\n}\n\n.wb-checkbox:focus-visible + .wb-checkboxBox {\n outline: var(--dsw-focus-ring-width, var(--wb-len-2)) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n.wb-choiceOption:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-choiceOption:has(:disabled) {\n cursor: default;\n opacity: 0.5;\n}\n\n.wb-choiceOption:has(:disabled),\n.wb-choiceOption:has(:disabled):hover {\n background: transparent;\n}\n\n.wb-choiceLabel {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.wb-choiceLabelText {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-choiceLabel:has(.wb-choiceDescription) .wb-choiceLabelText {\n overflow: visible;\n white-space: normal;\n overflow-wrap: anywhere;\n}\n\n.wb-choiceDescription {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n.wb-choiceLoading {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-choiceLoadingText {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-choiceEmpty {\n display: flex;\n align-items: center;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-radio {\n appearance: none;\n -webkit-appearance: none;\n flex: none;\n box-sizing: border-box;\n width: var(--wb-len-12);\n height: var(--wb-len-12);\n margin: 0;\n border: 1px solid var(--dsw-alias-border-l3);\n border-radius: 50%;\n corner-shape: round;\n background-color: transparent;\n cursor: pointer;\n transition:\n background-color var(--wb-dur-0-12) ease, border-color var(--wb-dur-0-12) ease;\n}\n\n.wb-radio:not(:checked):hover {\n border-color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-radio:checked {\n border-color: var(--dsw-alias-brand-primary);\n background-image: radial-gradient(\n circle at center,\n var(--dsw-alias-brand-primary) 0 3px,\n transparent 3px\n );\n}\n\n.wb-radio:disabled {\n cursor: default;\n}\n\n.wb-radio:focus-visible {\n outline: var(--dsw-focus-ring-width, var(--wb-len-2)) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n.wb-formActions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\n}\n\n.wb-formActionDanger {\n color: var(--dsw-alias-state-error-primary);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 30%, transparent);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-error-primary) 8%, transparent);\n}\n.wb-rows {\n display: grid;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n column-gap: var(--wb-len-8);\n}\n.wb-rows > :not(.wb-row) {\n grid-column: 1 / -1;\n}\n.wb-row {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n align-items: baseline;\n gap: var(--wb-len-8);\n padding: var(--wb-len-4) 0;\n}\n.wb-row + .wb-row {\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n.wb-rowKey {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-rowValue {\n min-width: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n\n.wb-rows > .wb-row {\n grid-template-columns: subgrid;\n}\n\n@supports not (grid-template-columns: subgrid) {\n .wb-rows > .wb-row {\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n }\n}\n.wb-confirmBar {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n width: 100%;\n box-sizing: border-box;\n padding: var(--wb-len-10) var(--wb-len-12);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n}\n.wb-confirmBarTitle {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 600;\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n.wb-confirmBarHint {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n.wb-field {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n.wb-fieldLabel {\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-fieldHint {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-field:has(:disabled) .wb-fieldLabel {\n opacity: 0.4;\n}\n.wb-formRows {\n display: grid;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n column-gap: var(--wb-len-8);\n row-gap: var(--wb-len-12);\n}\n\n.wb-formRows > :not(.wb-formRow) {\n grid-column: 1 / -1;\n}\n\n.wb-formRow {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n align-items: center;\n column-gap: var(--wb-len-8);\n row-gap: var(--wb-len-8);\n}\n\n.wb-formRow[data-layout='stacked'] {\n grid-template-columns: minmax(0, 1fr);\n align-items: stretch;\n gap: var(--wb-len-6);\n}\n\n.wb-formRows > .wb-formRow[data-layout='stacked'] {\n grid-template-columns: minmax(0, 1fr);\n}\n\n.wb-formLabel {\n justify-self: start;\n min-width: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n white-space: nowrap;\n}\n\n.wb-formRow[data-layout='stacked'] .wb-formLabel {\n white-space: normal;\n}\n\n.wb-formRow[data-layout='stacked'] .wb-formHint,\n.wb-formRow[data-layout='stacked'] .wb-formProblem {\n grid-column: 1 / -1;\n}\n\n.wb-formControl {\n display: flex;\n align-items: center;\n min-width: 0;\n}\n\n.wb-formControl\n > :where(\n .wb-selectAnchor,\n .wb-choiceMenu,\n input:not(\n [type='checkbox'],\n [type='radio'],\n [type='button'],\n [type='submit'],\n [type='reset'],\n [type='image'],\n [type='color'],\n [type='range']\n ),\n select,\n textarea\n ) {\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n}\n\n.wb-formHint {\n grid-column: 2;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-formProblem {\n grid-column: 2;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-formRow:has(.wb-formProblem) .wb-formLabel {\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-formRow:has(:disabled) .wb-formLabel {\n opacity: 0.4;\n}\n\n.wb-formRows > .wb-formRow {\n grid-template-columns: subgrid;\n}\n\n@supports not (grid-template-columns: subgrid) {\n .wb-formRows > .wb-formRow {\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n }\n}\n.wb-form {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n width: 100%;\n}\n:where(.wb-link) {\n margin-left: var(--wb-len-2);\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n font: inherit;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n white-space: nowrap;\n vertical-align: baseline;\n}\n\n:where(.wb-link:hover) {\n text-decoration: underline;\n}\n\n:where(.wb-link:focus-visible) {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n.wb-longTask {\n padding-top: var(--wb-len-12);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n.wb-longTaskHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n}\n\n.wb-longTaskLink {\n flex: none;\n}\n\n.wb-longTaskHeadline {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-longTaskProblem {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n.wb-longTaskDump {\n margin: var(--wb-len-2) 0 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-longTaskDump pre {\n margin: var(--wb-len-4) 0 0;\n max-height: var(--wb-len-220);\n overflow: auto;\n}\n\n.wb-longTaskStop {\n display: inline-flex;\n flex: none;\n align-items: center;\n align-self: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n padding: 0;\n margin-left: auto;\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-specific-menu);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n.wb-longTaskStop:hover:not(:disabled),\n.wb-longTaskStop:focus-visible {\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-longTaskStop:disabled {\n cursor: default;\n}\n\n.wb-longTaskStopArmed,\n.wb-longTaskStopArmed:hover:not(:disabled),\n.wb-longTaskStopArmed:focus-visible {\n gap: var(--wb-len-4);\n width: auto;\n padding: 0 var(--wb-len-7);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent);\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-longTaskStopLabel {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n.wb-longTaskStopWhy {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n.wb-centered.wb-centeredCompact {\n flex: none;\n min-height: 0;\n gap: var(--wb-len-8);\n padding: var(--wb-len-20) var(--wb-len-16);\n}\n\n.wb-centered.wb-centeredCompact .wb-centeredHero {\n margin-bottom: var(--wb-len-4);\n}\n\n.wb-skeleton {\n display: flex;\n flex-direction: column;\n}\n\n.wb-skeletonRow {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n}\n\n.wb-skeletonRow + .wb-skeletonRow::before {\n content: '';\n align-self: stretch;\n height: var(--wb-len-0-5);\n margin: 0 var(--wb-len-8) var(--wb-len-neg-0-5);\n background: var(--dsw-alias-border-l2);\n}\n\n.wb-skeletonBar {\n display: block;\n height: var(--wb-len-13);\n border-radius: var(--dsw-radius-xs);\n background: var(--dsw-alias-bg-skeleton);\n animation: wb-skeleton-pulse var(--wb-dur-1-4) var(--ds-ease-in-out) infinite;\n}\n\n.wb-skeletonBarTitle {\n width: 62%;\n}\n\n.wb-skeletonBarMeta {\n width: 32%;\n height: var(--wb-len-10);\n}\n\n.wb-skeletonRow:nth-child(2n) .wb-skeletonBarTitle {\n width: 74%;\n}\n\n.wb-skeletonRow:nth-child(3n) .wb-skeletonBarTitle {\n width: 52%;\n}\n\n@keyframes wb-skeleton-pulse {\n 50% {\n opacity: 0.45;\n }\n}\n\n.wb-centered {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: var(--wb-len-14);\n flex: 1;\n min-height: var(--wb-len-240);\n padding: 0 var(--wb-len-24) var(--wb-len-24);\n text-align: center;\n}\n\n.wb-centeredHero {\n display: flex;\n margin-bottom: var(--wb-len-16);\n color: var(--dsw-alias-label-dimmed);\n}\n\n.wb-centeredTitle {\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-centeredHint {\n max-width: var(--wb-len-300);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-centeredDetail {\n max-width: var(--wb-len-320);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-dimmed);\n word-break: break-all;\n}\n\n.wb-centeredAction {\n display: flex;\n justify-content: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-2);\n}\n@media (prefers-reduced-motion: reduce) {\n .wb-skeletonBar {\n animation: none;\n }}\n.wb-textField {\n box-sizing: border-box;\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-primary);\n outline: none;\n}\n\n.wb-textField:focus {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-textField:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.wb-textField[aria-invalid='true'] {\n border-color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-textField[aria-invalid='true']:focus {\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-error-primary);\n}\n\n:where(.wb-textField) {\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n}\n:where(.wb-selectTrigger) {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n width: 100%;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-primary);\n text-align: left;\n cursor: pointer;\n}\n\n.wb-selectTrigger:focus-visible {\n outline: none;\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-selectTrigger[aria-invalid='true'] {\n border-color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-selectTrigger[aria-invalid='true']:focus-visible {\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-error-primary);\n}\n\n.wb-selectTrigger:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.wb-selectLoading:disabled {\n cursor: default;\n opacity: 1;\n}\n\n.wb-selectGhost {\n gap: var(--wb-gap-xs);\n min-height: 0;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: none;\n background: transparent;\n font-size: var(--wb-font-row);\n}\n\n.wb-selectGhost:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-selectGhost:focus-visible {\n outline: var(--dsw-focus-ring-width) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n border-color: transparent;\n box-shadow: none;\n}\n\n.wb-selectIconOnly {\n width: var(--wb-len-36);\n height: var(--wb-len-36);\n min-height: 0;\n gap: 0;\n padding: 0;\n justify-content: center;\n}\n\n.wb-selectReveal {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.wb-selectIconOnly .wb-selectIcon {\n width: 100%;\n height: 100%;\n}\n\n.wb-selectAnchor {\n display: block;\n width: 100%;\n}\n\n.wb-selectIcon {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-16);\n height: var(--wb-len-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-selectValue {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-6);\n line-height: var(--wb-line-20);\n overflow: hidden;\n}\n\n.wb-selectPlaceholder {\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-selectChevron {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-caption);\n}\n\n.wb-selectMenu {\n min-width: var(--wb-len-240);\n max-width: var(--wb-len-360);\n max-height: min(var(--wb-len-320), calc(100vh - var(--wb-len-24)));\n}\n\n:where(.wb-selectSearch) {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n width: 100%;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n}\n\n.wb-selectSearch:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-selectSearch.wb-selectGhost {\n gap: var(--wb-gap-xs);\n min-height: 0;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: 0.5px solid var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n.wb-selectSearch.wb-selectGhost:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: none;\n}\n\n.wb-selectSearchIcon {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-textField.wb-selectSearchInput {\n flex: 1;\n min-width: 0;\n min-height: 0;\n padding: 0;\n border: none;\n background: transparent;\n}\n\n.wb-textField.wb-selectSearchInput:focus {\n box-shadow: none;\n}\n\n.wb-selectFallback {\n width: 100%;\n}\n\n.wb-selectHint {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\nsection.wb-settings {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n padding: var(--wb-len-12) var(--wb-len-16);\n border: 0;\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-settings-card-fill);\n}\n.wb-settingsHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n.wb-settings .wb-settingsTitle {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-s-strong-14-font-size);\n line-height: var(--wb-line-24);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n.wb-stack {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n min-height: 0;\n}\n.wb-stateBlock {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n.wb-stateBlockTitle {\n margin: 0;\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n}\n.wb-stateBlockHint {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-stateBlockActions {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-2);\n}\n.wb-stateBlockResolving {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._marketList_9dzu9_1 {\n list-style: none;\n margin: 0;\n padding: var(--wb-len-6);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._marketRow_9dzu9_10 {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: center;\n column-gap: var(--wb-len-14);\n row-gap: var(--wb-len-4);\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-lg);\n}\n\n._marketIcon_9dzu9_20 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-48);\n height: var(--wb-len-48);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketMain_9dzu9_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._marketName_9dzu9_39 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketStatus_9dzu9_48 {\n display: inline-flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketStateText_9dzu9_58 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSep_9dzu9_62 {\n color: var(--dsw-alias-label-caption);\n}\n\n._marketReason_9dzu9_66 {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._marketName_9dzu9_39 ._marketVersion_9dzu9_72 {\n margin-left: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 400;\n line-height: var(--wb-line-18);\n}\n\n._marketVersion_9dzu9_72 {\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketVersion_9dzu9_72::before {\n content: '';\n display: inline-block;\n width: var(--wb-len-1);\n height: var(--wb-len-10);\n margin: 0 var(--wb-len-8) 0 var(--wb-len-2);\n vertical-align: -1px;\n background: var(--dsw-alias-border-l2);\n}\n\n._marketLocalTag_9dzu9_94 {\n margin-left: var(--wb-len-8);\n padding: 0 var(--wb-len-6);\n border: var(--wb-len-1) solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 400;\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-caption);\n}\n\n._marketEnd_9dzu9_105 {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_9dzu9_112 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_9dzu9_112::before {\n content: '';\n width: 0;\n height: var(--wb-len-14);\n border-left: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n._marketActions_9dzu9_125 {\n flex: none;\n display: flex;\n gap: var(--wb-len-6);\n}\n\n._marketUpdateAction_9dzu9_131 {\n color: var(--dsw-alias-state-warn-primary);\n border-color: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 30%, transparent);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._marketSelfDivider_9dzu9_137 {\n height: 0;\n margin-top: calc(0px - var(--wb-len-16));\n border-top: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n._marketSection_9dzu9_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._marketSectionHead_9dzu9_150 {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n\n._marketSectionIcon_9dzu9_156 {\n display: inline-flex;\n align-items: center;\n align-self: center;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionTitle_9dzu9_163 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketSectionCount_9dzu9_169 {\n font: var(--dsw-font-s-14);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionQuiet_9dzu9_175 ._marketSectionTitle_9dzu9_163 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_9dzu9_175 ._marketName_9dzu9_39 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_9dzu9_175 ._marketIcon_9dzu9_20 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n\n._marketProgress_9dzu9_188 {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-height: var(--wb-len-32);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketNote_9dzu9_198 {\n grid-column: 2 / -1;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-warn-primary);\n overflow-wrap: anywhere;\n}\n\n._marketFailure_9dzu9_205 {\n grid-column: 2 / -1;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._marketEmpty_9dzu9_212 {\n padding: var(--wb-len-18) var(--wb-len-16);\n text-align: center;\n}\n\n._marketPage_9dzu9_217 {\n box-sizing: border-box;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-32);\n padding: 0 clamp(var(--wb-len-24), 4vw, var(--wb-len-48)) var(--wb-len-48);\n overflow-x: hidden;\n overflow-y: auto;\n color: var(--dsw-alias-label-primary);\n}\n\n._marketPage_9dzu9_217 > * {\n width: 100%;\n max-width: var(--wb-len-960);\n}\n\n._marketPageHead_9dzu9_235 {\n box-sizing: border-box;\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-16);\n padding-top: var(--wb-len-28);\n}\n\n._marketPageTitle_9dzu9_243 {\n margin: 0;\n font: var(--dsw-font-l-20);\n}\n\n._marketPageIntro_9dzu9_248 {\n margin: var(--wb-len-4) 0 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketPageTools_9dzu9_254 {\n flex: none;\n align-self: center;\n margin-left: auto;\n display: flex;\n align-items: center;\n gap: var(--wb-len-16);\n}\n\n._marketPanel_9dzu9_263 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-32);\n}\n\n._marketPanel_9dzu9_263[hidden] {\n display: none;\n}\n\n._marketTabs_9dzu9_273 {\n display: flex;\n margin: calc(0px - var(--wb-len-16)) 0;\n}\n\n._marketTabList_9dzu9_278 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._marketIconButton_9dzu9_283 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n border: 0;\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n color: var(--dsw-alias-label-caption);\n cursor: pointer;\n}\n\n._marketIconButton_9dzu9_283:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketIconButton_9dzu9_283:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._marketIconWrap_9dzu9_308 {\n display: inline-flex;\n}\n\n._marketIconButtonSpinning_9dzu9_312 svg {\n animation: _wb-spin_9dzu9_1 var(--wb-dur-0-9) linear infinite;\n}\n\n._marketAddButton_9dzu9_316 {\n height: var(--wb-len-32);\n padding: 0 var(--wb-len-12);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n border-radius: var(--dsw-radius-md);\n}\n\n._marketEmpty_9dzu9_212 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-64) var(--wb-len-16);\n text-align: center;\n}\n\n._marketEmptyTitle_9dzu9_333 {\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n@keyframes _wb-spin_9dzu9_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n._discoverPage_9dzu9_347 {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverBar_9dzu9_354 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n container-type: inline-size;\n}\n\n._discoverTools_9dzu9_361 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverMarket_9dzu9_367 {\n flex: 0 1 auto;\n min-width: 0;\n}\n\n._discoverMarketButton_9dzu9_372 {\n min-width: 0;\n max-width: var(--wb-len-240);\n margin-left: calc(0px - var(--wb-len-8));\n font-weight: 500;\n}\n\n._discoverMarketName_9dzu9_379 {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._discoverLabels_9dzu9_385 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverSort_9dzu9_390 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverRefresh_9dzu9_395 {\n flex: none;\n}\n\n._discoverSearch_9dzu9_399 {\n box-sizing: border-box;\n flex: 1 1 var(--wb-len-120);\n min-width: var(--wb-len-120);\n}\n\n@container (max-width: 560px) {\n ._discoverTools_9dzu9_361 {\n display: grid;\n grid-template-columns: minmax(0, auto) minmax(var(--wb-len-120), 1fr) auto;\n grid-template-areas:\n 'market search refresh'\n 'labels sort sort';\n }\n\n ._discoverMarket_9dzu9_367 {\n grid-area: market;\n }\n\n ._discoverMarketButton_9dzu9_372 {\n margin-left: 0;\n }\n\n ._discoverLabels_9dzu9_385 {\n grid-area: labels;\n }\n\n ._discoverSearch_9dzu9_399 {\n grid-area: search;\n }\n\n ._discoverSort_9dzu9_390 {\n grid-area: sort;\n justify-self: end;\n }\n\n ._discoverRefresh_9dzu9_395 {\n grid-area: refresh;\n }\n}\n\n._discoverChips_9dzu9_440 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n._discoverList_9dzu9_447 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._discoverCard_9dzu9_456 {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n margin: 0 calc(0px - var(--wb-len-8));\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCard_9dzu9_456:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._discoverArtwork_9dzu9_470 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-48);\n height: var(--wb-len-48);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverArtworkImage_9dzu9_482 {\n object-fit: contain;\n}\n\n._discoverMain_9dzu9_486 {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--wb-len-2);\n min-width: 0;\n}\n\n._discoverTitleRow_9dzu9_494 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._discoverCardOpen_9dzu9_502 {\n max-width: 100%;\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n text-align: left;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n cursor: pointer;\n}\n\n._discoverCardOpen_9dzu9_502::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCardOpen_9dzu9_502:focus-visible {\n outline: none;\n}\n\n._discoverCardOpen_9dzu9_502:focus-visible::after {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n._discoverStrong_9dzu9_533 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n overflow-wrap: anywhere;\n}\n\n._discoverDesc_9dzu9_539 {\n display: -webkit-box;\n overflow: hidden;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverMeta_9dzu9_548 {\n margin: 0;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._discoverMuted_9dzu9_555 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverEnd_9dzu9_561 {\n position: relative;\n z-index: var(--wb-z-10);\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverBlocked_9dzu9_570 {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n._discoverEmpty_9dzu9_575 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-64) 0;\n text-align: center;\n}\n\n._discoverEmptyTitle_9dzu9_584 {\n margin: var(--wb-len-8) 0 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverEmpty_9dzu9_575 > button {\n margin-top: var(--wb-len-8);\n}\n\n._discoverDetail_9dzu9_594 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverCrumb_9dzu9_600 {\n align-self: flex-start;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n padding: 0;\n border: 0;\n background: 0 0;\n color: var(--dsw-alias-label-tertiary);\n font: inherit;\n font-size: var(--wb-font-12-5);\n cursor: pointer;\n}\n\n._discoverCrumb_9dzu9_600:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._discoverCrumb_9dzu9_600:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n._discoverCrumbIcon_9dzu9_623 {\n transform: rotate(90deg);\n}\n\n._discoverDetailHead_9dzu9_627 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverDetailTitle_9dzu9_633 {\n margin: 0;\n font: var(--dsw-font-l-20);\n font-weight: 500;\n}\n\n._discoverDetailText_9dzu9_639 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._discoverDetailPanel_9dzu9_646 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n min-width: 0;\n}\n\n._discoverDetailTabs_9dzu9_653 {\n display: flex;\n margin-bottom: calc(0px - var(--wb-len-4));\n}\n\n._discoverDetailTabList_9dzu9_658 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._discoverDocBody_9dzu9_663 {\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n._discoverDocNotice_9dzu9_668 {\n margin: var(--wb-len-16) 0 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverSection_9dzu9_674 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n margin-top: var(--wb-len-16);\n}\n\n._discoverSectionTitle_9dzu9_681 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverFacts_9dzu9_687 {\n margin: 0;\n padding: 0;\n}\n\n._discoverFactRow_9dzu9_692 {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--wb-len-16);\n min-height: var(--wb-len-44);\n padding: var(--wb-len-8) var(--wb-len-2);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverFactKind_9dzu9_702 {\n flex: none;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverFactValue_9dzu9_708 {\n min-width: 0;\n margin: 0;\n text-align: end;\n overflow-wrap: anywhere;\n font: var(--dsw-font-xs-13);\n}\n\n._discoverCode_9dzu9_716 {\n padding: var(--wb-len-2) var(--wb-len-6);\n border-radius: var(--wb-radius-6);\n background: var(--dsw-alias-bg-module-platform);\n font-family: var(--ds-font-family-code);\n font-size: var(--dsw-font-xxs-12-font-size);\n box-decoration-break: clone;\n}\n\n._discoverTags_9dzu9_725 {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: var(--wb-len-6);\n}\n\n._discoverLink_9dzu9_732 {\n color: var(--dsw-alias-link);\n overflow-wrap: anywhere;\n text-decoration: none;\n}\n\n._discoverLink_9dzu9_732:hover {\n text-decoration: underline;\n}\n\n._discoverVersions_9dzu9_742 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverVersionRow_9dzu9_750 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverVersionName_9dzu9_758 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverError_9dzu9_763 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._discoverFailure_9dzu9_772 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._discoverNotice_9dzu9_778 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-10) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-state-warn-tertiary);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n}\n\n._discoverNotice_9dzu9_778 svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverMore_9dzu9_796 {\n align-self: center;\n}\n\n._discoverDialog_9dzu9_800 {\n width: min(var(--wb-len-480), calc(100vw - var(--wb-len-32)));\n}\n\n._discoverDialogBody_9dzu9_804 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._discoverSourceList_9dzu9_810 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverSourceRow_9dzu9_818 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverSourceError_9dzu9_826 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._discoverSourceForm_9dzu9_832 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverGrow_9dzu9_838 {\n flex: 1;\n min-width: 0;\n}\n\n._discoverField_9dzu9_843 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._discoverFieldLabel_9dzu9_849 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverConfirmHead_9dzu9_854 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverSkeletonFill_9dzu9_860 {\n background: var(--dsw-alias-bg-skeleton);\n animation: _wb-skeleton_9dzu9_1 var(--wb-dur-1-5) cubic-bezier(0.36, 0, 0.64, 1) infinite;\n}\n\n._discoverArtwork_9dzu9_470._discoverSkeletonFill_9dzu9_860 {\n border-color: transparent;\n}\n\n._discoverSkeletonBar_9dzu9_869 {\n display: block;\n height: var(--wb-len-12);\n margin: var(--wb-len-4) 0;\n border-radius: var(--dsw-radius-xs);\n}\n\n._discoverSkeletonTitle_9dzu9_876 {\n width: min(var(--wb-len-144), 60%);\n}\n\n._discoverSkeletonDesc_9dzu9_880 {\n width: min(var(--wb-len-280), 85%);\n}\n\n@keyframes _wb-skeleton_9dzu9_1 {\n 0% {\n opacity: 1;\n }\n 40% {\n opacity: 0.6;\n }\n 80%,\n to {\n opacity: 1;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._discoverSkeletonFill_9dzu9_860 {\n animation: none;\n }\n}\n\n._foot_1ud1j_1 {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) var(--wb-len-14) var(--wb-len-10);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._footText_1ud1j_13 {\n flex: 1;\n min-width: 0;\n}\n\n._footTextMd_1ud1j_18 {\n flex: 1;\n min-width: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n._wide_1lv8f_1 {\n justify-content: center;\n width: 100%;\n height: var(--wb-len-40);\n border-radius: var(--dsw-radius-md);\n}\n\n._dialog_1lv8f_8 {\n width: min(var(--wb-len-560), 100%);\n max-height: min(var(--wb-len-800), 100%);\n}\n\n._content_1lv8f_13 {\n min-height: 0;\n overflow: auto;\n}\n\n._stack_1lv8f_18 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._body_1lv8f_25 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._field_1lv8f_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n._input_1lv8f_39 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-14);\n}\n\n._registryField_1lv8f_45 {\n height: var(--wb-len-32);\n margin-left: var(--wb-len-26);\n padding: 0 var(--wb-len-10);\n}\n\n._options_1lv8f_51 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-8) var(--wb-len-12);\n}\n\n._guideToggle_1lv8f_59 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-4);\n align-self: flex-start;\n margin-top: var(--wb-len-4);\n padding: 0;\n border: 0;\n background: transparent;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._guideToggle_1lv8f_59:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._guideToggle_1lv8f_59 svg,\n._registryToggle_1lv8f_78 svg {\n transition: transform var(--wb-dur-0-12) ease;\n}\n\n._guideToggle_1lv8f_59[aria-expanded='true'] svg,\n._registryToggle_1lv8f_78[aria-expanded='true'] svg {\n transform: rotate(180deg);\n}\n\n._registryWrap_1lv8f_87 {\n position: relative;\n flex: none;\n}\n\n._registryToggle_1lv8f_78 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n height: var(--wb-len-26);\n padding: 0 var(--wb-len-8) 0 var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-2);\n font: inherit;\n font-size: var(--wb-font-12-5);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._registryToggle_1lv8f_78:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._registryToggle_1lv8f_78:disabled {\n cursor: default;\n opacity: 0.6;\n}\n\n._registryToggle_1lv8f_78[aria-expanded='true'] {\n border-color: var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-3);\n}\n\n._registryChosen_1lv8f_121 {\n color: var(--dsw-alias-label-primary);\n font-weight: 500;\n}\n\n._registry_1lv8f_45 {\n position: fixed;\n z-index: var(--wb-z-1100);\n box-sizing: border-box;\n width: min(var(--wb-len-440), 100vw - var(--wb-len-24));\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10) var(--wb-len-12);\n border: 0;\n border-radius: var(--dsw-radius-lg);\n background: var(--dsw-alias-bg-layer-2);\n --dsw-elevation-stroke-color: var(--dsw-alias-border-l3);\n box-shadow: var(--dsw-elevation-prominent);\n}\n\n._registryOption_1lv8f_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid transparent;\n border-radius: var(--dsw-radius-lg);\n cursor: pointer;\n}\n\nlabel._registryOption_1lv8f_143 {\n flex-direction: row;\n align-items: flex-start;\n gap: var(--wb-len-10);\n}\n\n._registryPick_1lv8f_159 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n cursor: pointer;\n}\n\n._registryOption_1lv8f_143[data-checked='true'] {\n border-color: color-mix(in srgb, var(--dsw-alias-brand-primary) 40%, transparent);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n._registryOption_1lv8f_143 input[type='radio'] {\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: var(--wb-len-2) 0 0;\n accent-color: var(--dsw-alias-brand-primary);\n}\n\n._registryTitle_1lv8f_179 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n font: var(--dsw-font-xs-13);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-primary);\n}\n\n._registryHint_1lv8f_189 {\n margin-left: var(--wb-len-26);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._inputError_1lv8f_197 {\n margin: var(--wb-len-neg-4) 0 0 var(--wb-len-26);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._guide_1lv8f_59 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) var(--wb-len-14) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-lg);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._guideList_1lv8f_214 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n._guideItem_1lv8f_223 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) 0;\n}\n\n._guideIndex_1lv8f_230 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n border-radius: var(--wb-radius-pill);\n corner-shape: round;\n background: var(--dsw-alias-bg-module-platform);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._guideMain_1lv8f_244 {\n display: flex;\n flex-direction: column;\n flex: 1;\n gap: 0;\n min-width: 0;\n}\n\n._guideTitle_1lv8f_252 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n\n._guideHint_1lv8f_258 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._guideExample_1lv8f_264 {\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._guideExample_1lv8f_264 code {\n font-family: var(--dsw-font-mono, monospace);\n}\n\n._guideExampleLabel_1lv8f_274 {\n color: var(--dsw-alias-label-caption);\n}\n\n._footer_1lv8f_278 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-20);\n width: 100%;\n}\n\n._hero_1lv8f_285 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) 0 var(--wb-len-4);\n text-align: center;\n}\n\n._heroIcon_1lv8f_294 {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-44);\n height: var(--wb-len-44);\n color: var(--dsw-alias-label-secondary);\n}\n\n._heroIcon_1lv8f_294[data-state='done'] {\n color: var(--dsw-alias-state-success-secondary);\n}\n\n._heroIcon_1lv8f_294[data-state='error'] {\n color: var(--dsw-alias-state-warn-label);\n}\n\n._pendingTitle_1lv8f_311 {\n margin: 0;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n font-weight: 500;\n color: var(--dsw-alias-label-secondary);\n}\n\n._wizardTitle_1lv8f_319 {\n margin: 0;\n font-size: var(--wb-font-18);\n line-height: var(--wb-len-26);\n font-weight: 600;\n}\n\n._subject_1lv8f_326 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-6);\n padding: var(--wb-len-16);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n text-align: center;\n}\n\n._subjectName_1lv8f_337 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n overflow-wrap: anywhere;\n}\n\n._subjectMeta_1lv8f_343,\n._subjectDesc_1lv8f_344 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._result_1lv8f_351,\n._resultWarn_1lv8f_352 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: color-mix(in srgb, var(--dsw-alias-state-success-primary) 10%, transparent);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-primary);\n}\n\n._resultWarn_1lv8f_352 {\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 12%, transparent);\n}\n\n._resultMeta_1lv8f_365 {\n margin: 0;\n padding: 0 var(--wb-len-12);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._approval_1lv8f_373 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-12) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-state-warn-primary);\n border-radius: var(--dsw-radius-lg);\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._approvalTitle_1lv8f_383 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._approvalText_1lv8f_390 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._approvalCaution_1lv8f_396 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n font-weight: 600;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._note_1lv8f_403 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._noteWarn_1lv8f_410 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._noteError_1lv8f_414 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._problem_1lv8f_418 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._detailLabel_1lv8f_425 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._detail_1lv8f_425 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l1);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-3);\n font-family: var(--dsw-font-mono, monospace);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n}\n._note_1enlz_1 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-10) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-state-warn-tertiary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n._note_1enlz_1 > svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n._slot_1t7dx_1 {\n display: flex;\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._slot_1t7dx_1 > * {\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._action_1t7dx_12 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 1 0;\n width: 100%;\n min-width: 0;\n min-height: var(--wb-len-36);\n margin: 0 var(--wb-len-2);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: default;\n overflow: hidden;\n gap: var(--wb-len-4);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n}\n\n._live_1t7dx_31 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._paused_1t7dx_35 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._trouble_1t7dx_39 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._pulse_1t7dx_43 {\n animation: _wb-debug-breathe_1t7dx_1 var(--wb-dur-1-5) var(--ds-ease-in-out, ease-in-out) infinite;\n}\n\n@keyframes _wb-debug-breathe_1t7dx_1 {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.35;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._pulse_1t7dx_43 {\n animation: none;\n }\n}\n\n._entry_1t7dx_64 {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._entryInner_1t7dx_71 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._acts_1t7dx_78 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-2);\n flex: none;\n}\n\n._act_1t7dx_12 {\n appearance: none;\n border: 0;\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: 0;\n border-radius: var(--dsw-radius-sm, var(--wb-len-6));\n flex: none;\n cursor: pointer;\n}\n\n._act_1t7dx_12:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._act_1t7dx_12:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n\n._actStop_1t7dx_110:hover,\n._actStop_1t7dx_110:focus-visible {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._actArmed_1t7dx_115,\n._actArmed_1t7dx_115:hover,\n._actArmed_1t7dx_115:focus-visible {\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);\n width: auto;\n color: var(--dsw-alias-state-error-primary);\n gap: var(--wb-len-4);\n padding: 0 var(--wb-len-7);\n}\n\n._actLabel_1t7dx_125 {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n._entryLine_1t7dx_131 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._actionRail_1t7dx_138 {\n justify-content: center;\n flex: none;\n width: var(--wb-len-36);\n min-width: var(--wb-len-36);\n height: var(--wb-len-36);\n margin: 0;\n padding: 0;\n corner-shape: round;\n border-radius: 50%;\n}\n\n._card_1t7dx_150 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._cardTitle_1t7dx_156 {\n color: var(--dsw-alias-label-primary);\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n}\n\n._cardNote_1t7dx_162 {\n color: var(--dsw-alias-label-secondary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n._slot_1gkj9_1 {\n display: flex;\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._slot_1gkj9_1 > * {\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._action_1gkj9_12 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 1 0;\n width: 100%;\n min-width: 0;\n min-height: var(--wb-len-36);\n margin: 0 var(--wb-len-2);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: default;\n overflow: hidden;\n gap: var(--wb-len-4);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n}\n\n._live_1gkj9_31 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._done_1gkj9_35 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._pulse_1gkj9_39 {\n animation: _wb-record-breathe_1gkj9_1 var(--wb-dur-1-5) var(--ds-ease-in-out, ease-in-out) infinite;\n}\n\n@keyframes _wb-record-breathe_1gkj9_1 {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.35;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._pulse_1gkj9_39 {\n animation: none;\n }\n}\n\n._entry_1gkj9_60 {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._entryInner_1gkj9_67 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._acts_1gkj9_74 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-2);\n flex: none;\n}\n\n._act_1gkj9_12 {\n appearance: none;\n border: 0;\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: var(--wb-len-22);\n padding: 0 var(--wb-len-7);\n border-radius: var(--dsw-radius-sm, var(--wb-len-6));\n flex: none;\n cursor: pointer;\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n._act_1gkj9_12:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._act_1gkj9_12:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n\n._entryLine_1gkj9_108 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._actionRail_1gkj9_115 {\n justify-content: center;\n flex: none;\n width: var(--wb-len-36);\n min-width: var(--wb-len-36);\n height: var(--wb-len-36);\n margin: 0;\n padding: 0;\n corner-shape: round;\n border-radius: 50%;\n}\n\n._card_1gkj9_127 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._cardTitle_1gkj9_133 {\n color: var(--dsw-alias-label-primary);\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n}\n\n._cardNote_1gkj9_139 {\n color: var(--dsw-alias-label-secondary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n._item_lyox9_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n}\n\n._item_lyox9_1 + ._item_lyox9_1 {\n padding-top: var(--wb-len-14);\n border-top: var(--wb-len-0-5) solid var(--dsw-alias-settings-card-stroke);\n}\n\n._head_lyox9_12 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._title_lyox9_19 {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._description_lyox9_31 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._rows_85r3w_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n._row_85r3w_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n padding: var(--wb-len-12) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-settings-card-stroke);\n border-radius: var(--dsw-radius-xl);\n background: var(--dsw-alias-settings-card-fill);\n}\n\n._head_85r3w_20 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._pick_85r3w_27 {\n flex: 0 1 auto;\n min-width: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n._pick_85r3w_27 > span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._code_85r3w_39 {\n --dsl-code-block-background: var(--dsw-alias-bg-layer-1);\n margin: 0;\n}\n\n._missing_85r3w_44,\n._conflict_85r3w_45 {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-warn-primary);\n}\n._body_11oac_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._sources_11oac_7 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._sourcesLabel_11oac_14 {\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-secondary);\n}\n\nbutton._sourceOn_11oac_19 {\n border-color: var(--dsw-alias-brand-primary);\n}\n._sourceCount_11oac_22 {\n margin-left: var(--wb-len-4);\n font-variant-numeric: tabular-nums;\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._reading_11oac_29 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._status_11oac_35 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._failure_11oac_45 {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n column-gap: var(--wb-len-10);\n row-gap: var(--wb-len-2);\n color: var(--dsw-alias-state-error-primary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n\n._failureTitle_11oac_55 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._failureHint_11oac_62 {\n grid-column: 1;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._failureAction_11oac_67 {\n grid-column: 2;\n grid-row: 1;\n justify-self: end;\n}\n\n._foot_11oac_73 {\n display: flex;\n justify-content: flex-end;\n}\n._body_lox98_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._field_lox98_7 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._input_lox98_13 {\n width: 100%;\n}\n\n._label_lox98_17 {\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-secondary);\n}\n\n._hint_lox98_22 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._copy_lox98_28 {\n display: flex;\n flex-wrap: wrap;\n gap: var(--wb-len-8) var(--wb-len-16);\n margin: 0;\n padding: 0;\n border: 0;\n}\n\n._copy_lox98_28 legend {\n padding: 0;\n margin-bottom: var(--wb-len-6);\n}\n\n._actions_lox98_42 {\n display: flex;\n justify-content: flex-end;\n}\n\n._commandLabel_lox98_47 {\n display: block;\n margin-top: var(--wb-len-4);\n}\n\n._command_lox98_47 {\n display: block;\n margin-top: var(--wb-len-4);\n padding: var(--wb-len-6) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxs-12-font-size);\n overflow-wrap: anywhere;\n}\n._body_zi2j5_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._lead_zi2j5_7 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n._title_zi2j5_14 {\n font-size: var(--wb-font-18);\n line-height: var(--wb-line-24);\n}\n._hint_zyzt3_1[hidden],\n._actions_zyzt3_2[hidden],\n._progress_zyzt3_3[hidden],\n._commandRow_zyzt3_4[hidden],\n._bridge_zyzt3_5[hidden],\n._raw_zyzt3_6[hidden] {\n display: none;\n}\n\n._gate_zyzt3_10 {\n position: fixed;\n inset: 0;\n z-index: var(--wb-z-top);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--wb-len-24);\n background: var(--dsw-alias-bg-base);\n}\n\n._card_zyzt3_21 {\n width: 100%;\n max-width: var(--wb-len-420);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-16);\n text-align: center;\n}\n\n._card_zyzt3_21:has(._actions_zyzt3_2:not([hidden])),\n._card_zyzt3_21:has(._bridge_zyzt3_5:not([hidden])) {\n max-width: var(--wb-len-520);\n}\n\n._title_zyzt3_36 {\n margin: 0;\n font-size: var(--dsw-font-base-16-font-size);\n line-height: var(--wb-line-24);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._hint_zyzt3_1 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._steps_zyzt3_51 {\n list-style: none;\n margin: var(--wb-len-6) 0 0;\n padding: 0;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n text-align: left;\n}\n\n._step_zyzt3_51 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-6) var(--wb-len-10);\n border-radius: var(--dsw-radius-sm);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._step_zyzt3_51[data-status='running'] {\n color: var(--dsw-alias-label-primary);\n}\n\n._mark_zyzt3_78 {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-14);\n height: var(--wb-len-14);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n}\n\n._step_zyzt3_51[data-status='ok'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._step_zyzt3_51[data-status='warn'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._step_zyzt3_51[data-status='failed'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._label_zyzt3_103 {\n flex: none;\n}\n\n._detail_zyzt3_107 {\n margin-left: auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._progress_zyzt3_3 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._elapsed_zyzt3_125 {\n flex: none;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n}\n\n._error_zyzt3_133 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n max-height: var(--wb-len-120);\n overflow: auto;\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n white-space: pre-wrap;\n word-break: break-all;\n text-align: left;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._commandRow_zyzt3_4 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-4);\n margin: 0 0 var(--wb-len-8);\n padding-right: var(--wb-len-4);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n._copy_zyzt3_159 {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-24);\n height: var(--wb-len-24);\n padding: 0;\n border: none;\n border-radius: var(--wb-radius-6);\n background: transparent;\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._copy_zyzt3_159:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._command_zyzt3_4 {\n flex: 1;\n min-width: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n overflow-wrap: anywhere;\n color: var(--dsw-alias-label-primary);\n}\n\n._buttons_zyzt3_192 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-12);\n}\n\n._mockSlot_zyzt3_199 {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n justify-content: center;\n background: var(--dsw-alias-bg-base);\n}\n\n._button_zyzt3_192 {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: var(--wb-len-28);\n padding: 0 var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n font: inherit;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n}\n\n._button_zyzt3_192:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._button_zyzt3_192:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n._actions_zyzt3_2,\n._bridge_zyzt3_5 {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--wb-len-10);\n margin-top: var(--wb-len-4);\n padding: var(--wb-len-14) var(--wb-len-16);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-14);\n background: var(--dsw-alias-bg-layer-1);\n text-align: left;\n}\n\n._fixTitle_zyzt3_250 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._actions_zyzt3_2 ._hint_zyzt3_1,\n._bridge_zyzt3_5 ._hint_zyzt3_1 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-19);\n color: var(--dsw-alias-label-secondary);\n}\n\n._actions_zyzt3_2 ._commandRow_zyzt3_4,\n._bridge_zyzt3_5 ._commandRow_zyzt3_4 {\n margin: 0;\n}\n\n._actions_zyzt3_2 ._buttons_zyzt3_192,\n._bridge_zyzt3_5 ._buttons_zyzt3_192 {\n justify-content: flex-start;\n}\n\n._raw_zyzt3_6 {\n box-sizing: border-box;\n width: 100%;\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n text-align: left;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._rawSummary_zyzt3_286 {\n cursor: pointer;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._actions_zyzt3_2 ._error_zyzt3_133,\n._bridge_zyzt3_5 ._error_zyzt3_133 {\n margin-top: var(--wb-len-6);\n}\n\n._bridgeLines_zyzt3_296 {\n margin: 0;\n padding-left: var(--wb-len-18);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-19);\n color: var(--dsw-alias-label-secondary);\n}\n\n._bridgeLine_zyzt3_296 a {\n display: block;\n margin-top: var(--wb-len-4);\n width: fit-content;\n}\n\n._link_zyzt3_313 {\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n}\n\n._link_zyzt3_313::after {\n content: '↗';\n margin-left: var(--wb-len-2);\n}\n\n._link_zyzt3_313:hover {\n text-decoration: underline;\n}\n\n._loading_zyzt3_327 {\n flex: none;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._loading_zyzt3_327[hidden] {\n display: none;\n}\n\n._loadingMotion_zyzt3_336 {\n transform-origin: center;\n animation: _wb-spin_zyzt3_1 var(--wb-dur-1-5) linear infinite;\n}\n\n._loadingTrack_zyzt3_341,\n._loadingArc_zyzt3_342 {\n fill: none;\n stroke: currentColor;\n stroke-width: 2;\n stroke-linecap: round;\n}\n\n._loadingTrack_zyzt3_341 {\n opacity: 0.25;\n}\n\n._loadingArc_zyzt3_342 {\n stroke-dasharray: 12 150;\n animation: _wb-dash_zyzt3_1 var(--wb-dur-1-5) ease-in-out infinite;\n}\n\n@keyframes _wb-spin_zyzt3_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes _wb-dash_zyzt3_1 {\n 0% {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 24 150;\n stroke-dashoffset: -6;\n }\n to {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._loadingMotion_zyzt3_336,\n ._loadingArc_zyzt3_342 {\n animation: none;\n }\n}\n._changelog_1q6pj_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n margin-top: var(--wb-len-10);\n min-width: 0;\n}\n\n._changelogTitle_1q6pj_9 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._changelogMissing_1q6pj_15 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-primary);\n}\n\n._changelogBody_1q6pj_21 {\n max-height: var(--wb-len-320);\n overflow: auto;\n padding: var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n}\n._group_1hxis_1 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n}\n\n._button_1hxis_7 {\n flex: none;\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n color: var(--dsw-alias-label-secondary);\n}\n\n._button_1hxis_7:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._active_1hxis_19 {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._icon_1hxis_23 {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n._icon_1hxis_23 svg {\n display: block;\n width: var(--wb-len-15);\n height: var(--wb-len-15);\n}\n\n._mirror_1hxis_35 {\n transform: scaleX(-1);\n}\n._stripTabs_1dqp4_1 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-4);\n min-width: 0;\n overflow: hidden;\n}\n\n._tab_1dqp4_9 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n flex: none;\n height: var(--wb-len-28);\n padding: 0 var(--wb-len-10);\n border: 0;\n border-radius: var(--dsw-radius-sm);\n background: none;\n font: inherit;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-16);\n max-width: 100%;\n}\n\n._tabActive_1dqp4_25 {\n color: var(--dsw-alias-label-primary);\n}\n\n._tabQuiet_1dqp4_29 {\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._tabQuiet_1dqp4_29:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._tabTitle_1dqp4_39 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._sep_1dqp4_49 {\n flex: none;\n color: var(--dsw-alias-label-dimmed);\n}\n._trigger_15ptp_1 {\n display: flex;\n align-items: center;\n}\n\n._pop_15ptp_6 {\n position: absolute;\n top: calc(var(--wb-len-38) + var(--wb-len-8));\n right: var(--wb-len-6);\n z-index: var(--wb-z-30);\n width: min(var(--wb-len-360), calc(100% - var(--wb-len-12)));\n max-width: calc(100vw - var(--wb-len-48));\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-14);\n background: var(--dsw-alias-bg-layer-2);\n box-shadow: var(--dsw-shadow-lv3);\n overflow: hidden;\n}\n\n._head_15ptp_20 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-10) var(--wb-len-12) var(--wb-len-9) var(--wb-len-14);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._title_15ptp_28 {\n flex: 1;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._rowControls_15ptp_36 {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._reset_15ptp_43 {\n flex: none;\n padding: var(--wb-len-3) var(--wb-len-8);\n border: none;\n border-radius: var(--wb-radius-6);\n background: transparent;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._reset_15ptp_43:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._reset_15ptp_43:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._list_15ptp_65 {\n list-style: none;\n margin: 0;\n padding: var(--wb-len-6);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._row_15ptp_36 {\n position: relative;\n display: grid;\n grid-template-columns: 12px minmax(0, 1fr) auto;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-sm);\n cursor: default;\n}\n\n._rowDragging_15ptp_85 {\n cursor: grabbing;\n}\n\n._rowBlocked_15ptp_89 {\n cursor: not-allowed;\n}\n\n._listDragging_15ptp_93 ._rowControls_15ptp_36 {\n pointer-events: none;\n}\n\n._row_15ptp_36:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._rowOff_15ptp_101 {\n opacity: 0.55;\n}\n\n._rowOff_15ptp_101:hover {\n opacity: 1;\n}\n\n._rowOver_15ptp_109::before {\n content: '';\n position: absolute;\n top: var(--wb-len-neg-3);\n left: var(--wb-len-8);\n right: var(--wb-len-8);\n height: var(--wb-len-2);\n background: var(--dsw-alias-brand-primary);\n}\n\n._ghost_15ptp_119 {\n position: fixed;\n z-index: var(--wb-z-40);\n pointer-events: none;\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n box-shadow: var(--wb-static-shadow-ghost);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n white-space: nowrap;\n}\n\n._grip_15ptp_134 {\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n text-align: center;\n color: var(--dsw-alias-label-tertiary);\n user-select: none;\n cursor: grab;\n touch-action: none;\n}\n\n._gripDragging_15ptp_144 {\n cursor: grabbing;\n}\n\n._gripBlocked_15ptp_148 {\n cursor: not-allowed;\n}\n\n._label_15ptp_152 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._name_15ptp_159 {\n min-width: 0;\n flex: 0 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n}\n\n._error_15ptp_170 {\n margin: 0;\n padding: 0 var(--wb-len-14) var(--wb-len-10);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._dep_15ptp_178 {\n flex: none;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n white-space: nowrap;\n}\n\n._group_15ptp_186 {\n padding-top: var(--wb-len-6);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._groupTitle_15ptp_191 {\n margin: 0;\n padding: var(--wb-len-2) var(--wb-len-8) 0 var(--wb-len-14);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n font-weight: 400;\n color: var(--dsw-alias-label-tertiary);\n}\n._panel_1whum_1 {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: var(--wb-z-10);\n visibility: hidden;\n}\n\n._panel_1whum_1[data-fullscreen] {\n z-index: var(--wb-z-40);\n}\n\n._panel_1whum_1[data-open] {\n visibility: visible;\n}\n\n._columns_1whum_18 {\n display: block;\n column-gap: var(--wb-len-12);\n}\n\n._cell_1whum_23 {\n display: flow-root;\n min-width: 0;\n break-inside: avoid;\n margin-bottom: var(--wb-len-12);\n}\n._root_1cmz0_1 {\n position: relative;\n flex: none;\n margin: 0 var(--wb-len-2) var(--wb-len-4);\n}\n\n._rail_1cmz0_7 {\n margin: 0 0 var(--wb-len-4);\n}\n\n._glyphBox_1cmz0_11 {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n}\n\n._glyph_1cmz0_11 {\n position: relative;\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-16);\n height: var(--wb-len-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._glyphActive_1cmz0_30 {\n color: var(--dsw-alias-state-business-primary);\n}\n\n._triggerName_1cmz0_34 {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-6);\n font-size: var(--wb-font-row);\n line-height: var(--wb-line-20);\n overflow: hidden;\n}\n\n._dir_1cmz0_45 {\n flex: 0 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._name_1cmz0_53 {\n flex: 0 1 auto;\n max-width: 50%;\n font-size: var(--dsw-font-xxs-12-font-size);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._triggerName_1cmz0_34 ._name_1cmz0_53 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._row_1cmz0_66 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n width: 100%;\n min-width: 0;\n}\n\n._trailing_1cmz0_74 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n margin-inline-start: auto;\n}\n\n._trailing_1cmz0_74 ._rowAction_1cmz0_84 {\n width: var(--wb-len-20);\n min-width: var(--wb-len-20);\n height: var(--wb-len-20);\n min-height: var(--wb-len-20);\n padding: 0;\n border-radius: var(--dsw-radius-sm);\n}\n\n._row_1cmz0_66 ._name_1cmz0_53 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._current_1cmz0_97 {\n flex: none;\n display: inline-flex;\n align-items: center;\n color: var(--dsw-alias-label-primary);\n}\n._dot_sosf1_1 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n._overlay_sosf1_8 {\n position: absolute;\n inset-block-start: var(--wb-len-neg-3);\n inset-inline-end: var(--wb-len-neg-3);\n}\n._tag_g9dg8_1 {\n flex: none;\n margin-inline-start: auto;\n}\n._dialog_1vye5_1 {\n width: min(var(--wb-len-420), 100%);\n}\n\n._stack_1vye5_5 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._input_1vye5_12 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-12);\n}\n\n._meta_1vye5_18 {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n._dot_14w1n_1 {\n display: inline-flex;\n align-items: center;\n}\n\n._hover_14w1n_6 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._blocker_1oaj0_1 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-6);\n padding: var(--wb-len-20) var(--wb-len-16);\n text-align: center;\n}\n\n._icon_1oaj0_10 {\n display: flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._title_1oaj0_15 {\n margin: var(--wb-len-2) 0 0;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._hint_1oaj0_23 {\n margin: 0;\n max-width: var(--wb-len-42em);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n text-wrap: pretty;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 {\n align-items: flex-start;\n gap: var(--wb-len-6);\n padding: var(--wb-len-4) 0 var(--wb-len-2);\n text-align: left;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._title_1oaj0_15 {\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._hint_1oaj0_23 {\n max-width: 100%;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._actions_1oaj0_48 {\n margin-top: var(--wb-len-8);\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._raw_1oaj0_52 {\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._actions_1oaj0_48 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n margin-top: var(--wb-len-6);\n}\n\n._raw_1oaj0_52 {\n margin-top: var(--wb-len-10);\n width: 100%;\n max-width: var(--wb-len-360);\n text-align: left;\n}\n\n._notice_1oaj0_71 {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: start;\n column-gap: var(--wb-len-10);\n margin: 0 0 var(--wb-len-10);\n padding: var(--wb-len-10) var(--wb-len-12);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-left: 2px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._notice_1oaj0_71._noticeFlat_1oaj0_84 {\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n}\n\n._noticeText_1oaj0_91 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-3);\n min-width: 0;\n}\n\n._noticeTitle_1oaj0_98 {\n font-size: var(--wb-font-12-5);\n line-height: var(--wb-line-18);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._noticeHint_1oaj0_105 {\n font-size: var(--wb-font-11-5);\n line-height: var(--wb-line-17);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._noticeActions_1oaj0_112 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin-top: var(--wb-len-neg-2);\n}\n\n._failure_1oaj0_119 {\n margin: var(--wb-len-8) 0 0;\n font-size: var(--wb-font-11-5);\n line-height: var(--wb-line-17);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._failureDetail_1oaj0_127 {\n display: block;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-label-tertiary);\n white-space: pre-wrap;\n}\n\n._inlineAction_1oaj0_134 {\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n}\n\n._inlineAction_1oaj0_134:disabled {\n opacity: 0.6;\n cursor: default;\n}\n\n._rawText_1oaj0_146 {\n margin: var(--wb-len-6) 0 0;\n max-width: 100%;\n}\n/*$vite$:1*/";
|
|
14737
|
+
var COMPONENT_CSS_MARKER = ".wb-activityBlock {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n padding-top: var(--wb-len-10);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n.wb-activityBlock:first-child {\n padding-top: 0;\n border-top: none;\n}\n\n.wb-activityBlockHead {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-8);\n}\n\n.wb-activityLine {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-activityLineText {\n flex: none;\n min-width: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n max-height: var(--wb-len-72);\n overflow-y: auto;\n}\n\n.wb-activityLineAt {\n flex: none;\n margin-left: auto;\n font-size: var(--wb-font-10);\n line-height: var(--wb-line-16);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-activityLine > .wb-activityLineAt,\n.wb-activityLine > .wb-activityLineActions {\n margin-left: auto;\n}\n\n.wb-activityLine > .wb-activityLineAt + .wb-activityLineActions {\n margin-left: 0;\n}\n\n.wb-activityLineActions {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n.wb-activityActionFailed {\n color: var(--dsw-alias-state-error-primary);\n}\n.wb-note {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-problem {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n.wb-approvalCommand {\n max-width: 100%;\n}\n.wb-approvalPlan {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n.wb-approvalHint {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n.wb-approvalRows {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n margin: 0;\n}\n.wb-approvalRow {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n.wb-approvalLabel {\n flex: none;\n width: var(--wb-len-56);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-approvalValue {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n.wb-approvalWarn {\n color: var(--dsw-alias-label-secondary);\n}\n.wb-cardHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n flex: none;\n padding: var(--wb-len-8) var(--wb-len-10) var(--wb-len-8) var(--wb-card-gutter);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n.wb-cardTitle {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n font-weight: 600;\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-cardMeta {\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-cardMeta::before {\n content: '\\00b7';\n margin-right: var(--wb-len-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardOpen {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n margin-left: auto;\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-4);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardOpen ~ .wb-cardRefresh {\n margin-left: 0;\n}\n\n.wb-cardOpen:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-cardRefresh {\n margin-left: auto;\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-4);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardRefresh:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-cardRefresh:disabled {\n cursor: default;\n opacity: 1;\n}\n\n.wb-cardGear {\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-3);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardGear:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n.wb-card {\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-xl);\n background: var(--dsw-alias-bg-layer-1);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n flex: none;\n}\n.wb-cardBody {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n padding: var(--wb-len-12) var(--wb-card-gutter);\n font-size: var(--dsw-font-xxs-12-font-size);\n}\n.wb-cardBleed {\n margin-inline: calc(-1 * var(--wb-card-gutter));\n}\n._anchor_yq4s2_1 {\n display: contents;\n}\n.wb-spinner {\n display: inline-flex;\n align-items: center;\n flex: none;\n}\n.wb-choiceMenu {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n background: transparent;\n}\n\n.wb-choiceMenu[data-variant='boxed'] {\n padding: var(--wb-len-4);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n}\n\n.wb-choiceOption {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: pointer;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-choiceOptionOn {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-checkbox {\n position: absolute;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: 0;\n opacity: 0;\n pointer-events: none;\n}\n\n.wb-checkboxBox {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n border: 1px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-xs);\n corner-shape: round;\n color: var(--dsw-alias-label-primary-foreground);\n transition:\n background-color var(--wb-dur-0-12) ease, border-color var(--wb-dur-0-12) ease;\n}\n\n.wb-choiceOption:hover .wb-checkboxBox {\n border-color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-checkbox:checked + .wb-checkboxBox {\n border-color: var(--dsw-alias-brand-primary);\n background: var(--dsw-alias-brand-primary);\n}\n\n.wb-checkbox:disabled + .wb-checkboxBox {\n cursor: default;\n}\n\n.wb-checkbox:focus-visible + .wb-checkboxBox {\n outline: var(--dsw-focus-ring-width, var(--wb-len-2)) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n.wb-choiceOption:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-choiceOption:has(:disabled) {\n cursor: default;\n opacity: 0.5;\n}\n\n.wb-choiceOption:has(:disabled),\n.wb-choiceOption:has(:disabled):hover {\n background: transparent;\n}\n\n.wb-choiceLabel {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.wb-choiceLabelText {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-choiceLabel:has(.wb-choiceDescription) .wb-choiceLabelText {\n overflow: visible;\n white-space: normal;\n overflow-wrap: anywhere;\n}\n\n.wb-choiceDescription {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n.wb-choiceLoading {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-choiceLoadingText {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-choiceEmpty {\n display: flex;\n align-items: center;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-radio {\n appearance: none;\n -webkit-appearance: none;\n flex: none;\n box-sizing: border-box;\n width: var(--wb-len-12);\n height: var(--wb-len-12);\n margin: 0;\n border: 1px solid var(--dsw-alias-border-l3);\n border-radius: 50%;\n corner-shape: round;\n background-color: transparent;\n cursor: pointer;\n transition:\n background-color var(--wb-dur-0-12) ease, border-color var(--wb-dur-0-12) ease;\n}\n\n.wb-radio:not(:checked):hover {\n border-color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-radio:checked {\n border-color: var(--dsw-alias-brand-primary);\n background-image: radial-gradient(\n circle at center,\n var(--dsw-alias-brand-primary) 0 3px,\n transparent 3px\n );\n}\n\n.wb-radio:disabled {\n cursor: default;\n}\n\n.wb-radio:focus-visible {\n outline: var(--dsw-focus-ring-width, var(--wb-len-2)) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n.wb-formActions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\n}\n\n.wb-formActionDanger {\n color: var(--dsw-alias-state-error-primary);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 30%, transparent);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-error-primary) 8%, transparent);\n}\n.wb-rows {\n display: grid;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n column-gap: var(--wb-len-8);\n}\n.wb-rows > :not(.wb-row) {\n grid-column: 1 / -1;\n}\n.wb-row {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n align-items: baseline;\n gap: var(--wb-len-8);\n padding: var(--wb-len-4) 0;\n}\n.wb-row + .wb-row {\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n.wb-rowKey {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-rowValue {\n min-width: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n\n.wb-rows > .wb-row {\n grid-template-columns: subgrid;\n}\n\n@supports not (grid-template-columns: subgrid) {\n .wb-rows > .wb-row {\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n }\n}\n.wb-confirmBar {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n width: 100%;\n box-sizing: border-box;\n padding: var(--wb-len-10) var(--wb-len-12);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n}\n.wb-confirmBarTitle {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 600;\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n.wb-confirmBarHint {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n.wb-field {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n.wb-fieldLabel {\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-fieldHint {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-field:has(:disabled) .wb-fieldLabel {\n opacity: 0.4;\n}\n.wb-formRows {\n display: grid;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n column-gap: var(--wb-len-8);\n row-gap: var(--wb-len-12);\n}\n\n.wb-formRows > :not(.wb-formRow) {\n grid-column: 1 / -1;\n}\n\n.wb-formRow {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n align-items: center;\n column-gap: var(--wb-len-8);\n row-gap: var(--wb-len-8);\n}\n\n.wb-formRow[data-layout='stacked'] {\n grid-template-columns: minmax(0, 1fr);\n align-items: stretch;\n gap: var(--wb-len-6);\n}\n\n.wb-formRows > .wb-formRow[data-layout='stacked'] {\n grid-template-columns: minmax(0, 1fr);\n}\n\n.wb-formLabel {\n justify-self: start;\n min-width: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n white-space: nowrap;\n}\n\n.wb-formRow[data-layout='stacked'] .wb-formLabel {\n white-space: normal;\n}\n\n.wb-formRow[data-layout='stacked'] .wb-formHint,\n.wb-formRow[data-layout='stacked'] .wb-formProblem {\n grid-column: 1 / -1;\n}\n\n.wb-formControl {\n display: flex;\n align-items: center;\n min-width: 0;\n}\n\n.wb-formControl\n > :where(\n .wb-selectAnchor,\n .wb-choiceMenu,\n input:not(\n [type='checkbox'],\n [type='radio'],\n [type='button'],\n [type='submit'],\n [type='reset'],\n [type='image'],\n [type='color'],\n [type='range']\n ),\n select,\n textarea\n ) {\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n}\n\n.wb-formHint {\n grid-column: 2;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-formProblem {\n grid-column: 2;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-formRow:has(.wb-formProblem) .wb-formLabel {\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-formRow:has(:disabled) .wb-formLabel {\n opacity: 0.4;\n}\n\n.wb-formRows > .wb-formRow {\n grid-template-columns: subgrid;\n}\n\n@supports not (grid-template-columns: subgrid) {\n .wb-formRows > .wb-formRow {\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n }\n}\n.wb-form {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n width: 100%;\n}\n:where(.wb-link) {\n margin-left: var(--wb-len-2);\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n font: inherit;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n white-space: nowrap;\n vertical-align: baseline;\n}\n\n:where(.wb-link:hover) {\n text-decoration: underline;\n}\n\n:where(.wb-link:focus-visible) {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n.wb-longTask {\n padding-top: var(--wb-len-12);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n.wb-longTaskHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n}\n\n.wb-longTaskLink {\n flex: none;\n}\n\n.wb-longTaskHeadline {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-longTaskProblem {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n.wb-longTaskDump {\n margin: var(--wb-len-2) 0 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-longTaskDump pre {\n margin: var(--wb-len-4) 0 0;\n max-height: var(--wb-len-220);\n overflow: auto;\n}\n\n.wb-longTaskStop {\n display: inline-flex;\n flex: none;\n align-items: center;\n align-self: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n padding: 0;\n margin-left: auto;\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-specific-menu);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n.wb-longTaskStop:hover:not(:disabled),\n.wb-longTaskStop:focus-visible {\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-longTaskStop:disabled {\n cursor: default;\n}\n\n.wb-longTaskStopArmed,\n.wb-longTaskStopArmed:hover:not(:disabled),\n.wb-longTaskStopArmed:focus-visible {\n gap: var(--wb-len-4);\n width: auto;\n padding: 0 var(--wb-len-7);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent);\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-longTaskStopLabel {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n.wb-longTaskStopWhy {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n.wb-centered.wb-centeredCompact {\n flex: none;\n min-height: 0;\n gap: var(--wb-len-8);\n padding: var(--wb-len-20) var(--wb-len-16);\n}\n\n.wb-centered.wb-centeredCompact .wb-centeredHero {\n margin-bottom: var(--wb-len-4);\n}\n\n.wb-skeleton {\n display: flex;\n flex-direction: column;\n}\n\n.wb-skeletonRow {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n}\n\n.wb-skeletonRow + .wb-skeletonRow::before {\n content: '';\n align-self: stretch;\n height: var(--wb-len-0-5);\n margin: 0 var(--wb-len-8) var(--wb-len-neg-0-5);\n background: var(--dsw-alias-border-l2);\n}\n\n.wb-skeletonBar {\n display: block;\n height: var(--wb-len-13);\n border-radius: var(--dsw-radius-xs);\n background: var(--dsw-alias-bg-skeleton);\n animation: wb-skeleton-pulse var(--wb-dur-1-4) var(--ds-ease-in-out) infinite;\n}\n\n.wb-skeletonBarTitle {\n width: 62%;\n}\n\n.wb-skeletonBarMeta {\n width: 32%;\n height: var(--wb-len-10);\n}\n\n.wb-skeletonRow:nth-child(2n) .wb-skeletonBarTitle {\n width: 74%;\n}\n\n.wb-skeletonRow:nth-child(3n) .wb-skeletonBarTitle {\n width: 52%;\n}\n\n@keyframes wb-skeleton-pulse {\n 50% {\n opacity: 0.45;\n }\n}\n\n.wb-centered {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: var(--wb-len-14);\n flex: 1;\n min-height: var(--wb-len-240);\n padding: 0 var(--wb-len-24) var(--wb-len-24);\n text-align: center;\n}\n\n.wb-centeredHero {\n display: flex;\n margin-bottom: var(--wb-len-16);\n color: var(--dsw-alias-label-dimmed);\n}\n\n.wb-centeredTitle {\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-centeredHint {\n max-width: var(--wb-len-300);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-centeredDetail {\n max-width: var(--wb-len-320);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-dimmed);\n word-break: break-all;\n}\n\n.wb-centeredAction {\n display: flex;\n justify-content: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-2);\n}\n@media (prefers-reduced-motion: reduce) {\n .wb-skeletonBar {\n animation: none;\n }}\n.wb-textField {\n box-sizing: border-box;\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-primary);\n outline: none;\n}\n\n.wb-textField:focus {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-textField:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.wb-textField[aria-invalid='true'] {\n border-color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-textField[aria-invalid='true']:focus {\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-error-primary);\n}\n\n:where(.wb-textField) {\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n}\n:where(.wb-selectTrigger) {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n width: 100%;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-primary);\n text-align: left;\n cursor: pointer;\n}\n\n.wb-selectTrigger:focus-visible {\n outline: none;\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-selectTrigger[aria-invalid='true'] {\n border-color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-selectTrigger[aria-invalid='true']:focus-visible {\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-error-primary);\n}\n\n.wb-selectTrigger:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.wb-selectLoading:disabled {\n cursor: default;\n opacity: 1;\n}\n\n.wb-selectGhost {\n gap: var(--wb-gap-xs);\n min-height: 0;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: none;\n background: transparent;\n font-size: var(--wb-font-row);\n}\n\n.wb-selectGhost:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-selectGhost:focus-visible {\n outline: var(--dsw-focus-ring-width) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n border-color: transparent;\n box-shadow: none;\n}\n\n.wb-selectIconOnly {\n width: var(--wb-len-36);\n height: var(--wb-len-36);\n min-height: 0;\n gap: 0;\n padding: 0;\n justify-content: center;\n}\n\n.wb-selectReveal {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.wb-selectIconOnly .wb-selectIcon {\n width: 100%;\n height: 100%;\n}\n\n.wb-selectAnchor {\n display: block;\n width: 100%;\n}\n\n.wb-selectIcon {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-16);\n height: var(--wb-len-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-selectValue {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-6);\n line-height: var(--wb-line-20);\n overflow: hidden;\n}\n\n.wb-selectPlaceholder {\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-selectChevron {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-caption);\n}\n\n.wb-selectMenu {\n min-width: var(--wb-len-240);\n max-width: var(--wb-len-360);\n max-height: min(var(--wb-len-320), calc(100vh - var(--wb-len-24)));\n}\n\n:where(.wb-selectSearch) {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n width: 100%;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n}\n\n.wb-selectSearch:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-selectSearch.wb-selectGhost {\n gap: var(--wb-gap-xs);\n min-height: 0;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: 0.5px solid var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n.wb-selectSearch.wb-selectGhost:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: none;\n}\n\n.wb-selectSearchIcon {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-textField.wb-selectSearchInput {\n flex: 1;\n min-width: 0;\n min-height: 0;\n padding: 0;\n border: none;\n background: transparent;\n}\n\n.wb-textField.wb-selectSearchInput:focus {\n box-shadow: none;\n}\n\n.wb-selectFallback {\n width: 100%;\n}\n\n.wb-selectHint {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\nsection.wb-settings {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n padding: var(--wb-len-12) var(--wb-len-16);\n border: 0;\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-settings-card-fill);\n}\n.wb-settingsHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n.wb-settings .wb-settingsTitle {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-s-strong-14-font-size);\n line-height: var(--wb-line-24);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n.wb-stack {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n min-height: 0;\n}\n.wb-stateBlock {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n.wb-stateBlockTitle {\n margin: 0;\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n}\n.wb-stateBlockHint {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-stateBlockActions {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-2);\n}\n.wb-stateBlockResolving {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._marketList_bnt61_1 {\n list-style: none;\n margin: 0;\n padding: var(--wb-len-6);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._marketRow_bnt61_10 {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: center;\n column-gap: var(--wb-len-14);\n row-gap: var(--wb-len-4);\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-lg);\n}\n\n._marketIcon_bnt61_20 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-48);\n height: var(--wb-len-48);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketMain_bnt61_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._marketName_bnt61_39 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketStatus_bnt61_48 {\n display: inline-flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketStateText_bnt61_58 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSep_bnt61_62 {\n color: var(--dsw-alias-label-caption);\n}\n\n._marketReason_bnt61_66 {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._marketName_bnt61_39 ._marketVersion_bnt61_72 {\n margin-left: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 400;\n line-height: var(--wb-line-18);\n}\n\n._marketVersion_bnt61_72 {\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketVersion_bnt61_72::before {\n content: '';\n display: inline-block;\n width: var(--wb-len-1);\n height: var(--wb-len-10);\n margin: 0 var(--wb-len-8) 0 var(--wb-len-2);\n vertical-align: -1px;\n background: var(--dsw-alias-border-l2);\n}\n\n._marketLocalTag_bnt61_94 {\n margin-left: var(--wb-len-8);\n padding: 0 var(--wb-len-6);\n border: var(--wb-len-1) solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 400;\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-caption);\n}\n\n._marketEnd_bnt61_105 {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_bnt61_112 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_bnt61_112::before {\n content: '';\n width: 0;\n height: var(--wb-len-14);\n border-left: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n._marketActions_bnt61_125 {\n flex: none;\n display: flex;\n gap: var(--wb-len-6);\n}\n\n._marketUpdateAction_bnt61_131 {\n color: var(--dsw-alias-state-warn-primary);\n border-color: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 30%, transparent);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._marketSelfDivider_bnt61_137 {\n height: 0;\n margin-top: calc(0px - var(--wb-len-16));\n border-top: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n._marketSection_bnt61_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._marketSectionHead_bnt61_150 {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n\n._marketSectionIcon_bnt61_156 {\n display: inline-flex;\n align-items: center;\n align-self: center;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionTitle_bnt61_163 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketSectionCount_bnt61_169 {\n font: var(--dsw-font-s-14);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionQuiet_bnt61_175 ._marketSectionTitle_bnt61_163 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_bnt61_175 ._marketName_bnt61_39 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_bnt61_175 ._marketIcon_bnt61_20 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n\n._marketProgress_bnt61_188 {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-height: var(--wb-len-32);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketNote_bnt61_198 {\n grid-column: 2 / -1;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-warn-primary);\n overflow-wrap: anywhere;\n}\n\n._marketFailure_bnt61_205 {\n grid-column: 2 / -1;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._marketEmpty_bnt61_212 {\n padding: var(--wb-len-18) var(--wb-len-16);\n text-align: center;\n}\n\n._marketPage_bnt61_217 {\n box-sizing: border-box;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-32);\n padding: 0 clamp(var(--wb-len-24), 4vw, var(--wb-len-48)) var(--wb-len-48);\n overflow-x: hidden;\n overflow-y: auto;\n color: var(--dsw-alias-label-primary);\n}\n\n._marketPage_bnt61_217 > * {\n width: 100%;\n max-width: var(--wb-len-960);\n}\n\n._marketPageHead_bnt61_235 {\n box-sizing: border-box;\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-16);\n padding-top: var(--wb-len-28);\n}\n\n._marketPageTitle_bnt61_243 {\n margin: 0;\n font: var(--dsw-font-l-20);\n}\n\n._marketPageIntro_bnt61_248 {\n margin: var(--wb-len-4) 0 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketPageTools_bnt61_254 {\n flex: none;\n align-self: center;\n margin-left: auto;\n display: flex;\n align-items: center;\n gap: var(--wb-len-16);\n}\n\n._marketPanel_bnt61_263 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-32);\n}\n\n._marketPanel_bnt61_263[hidden] {\n display: none;\n}\n\n._marketTabs_bnt61_273 {\n display: flex;\n margin: calc(0px - var(--wb-len-16)) 0;\n}\n\n._marketTabList_bnt61_278 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._marketIconButton_bnt61_283 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n border: 0;\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n color: var(--dsw-alias-label-caption);\n cursor: pointer;\n}\n\n._marketIconButton_bnt61_283:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketIconButton_bnt61_283:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._marketIconWrap_bnt61_308 {\n display: inline-flex;\n}\n\n._marketIconButtonSpinning_bnt61_312 svg {\n animation: _wb-spin_bnt61_1 var(--wb-dur-0-9) linear infinite;\n}\n\n._marketAddButton_bnt61_316 {\n height: var(--wb-len-32);\n padding: 0 var(--wb-len-12);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n border-radius: var(--dsw-radius-md);\n}\n\n._marketEmpty_bnt61_212 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-64) var(--wb-len-16);\n text-align: center;\n}\n\n._marketEmptyTitle_bnt61_333 {\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n@keyframes _wb-spin_bnt61_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n._discoverPage_bnt61_347 {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverBar_bnt61_354 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n container-type: inline-size;\n}\n\n._discoverTools_bnt61_361 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverMarket_bnt61_367 {\n flex: 0 1 auto;\n min-width: 0;\n}\n\n._discoverMarketButton_bnt61_372 {\n min-width: 0;\n max-width: var(--wb-len-240);\n margin-left: calc(0px - var(--wb-len-8));\n font-weight: 500;\n}\n\n._discoverMarketName_bnt61_379 {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._discoverLabels_bnt61_385 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverSort_bnt61_390 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverRefresh_bnt61_395 {\n flex: none;\n}\n\n._discoverSearch_bnt61_399 {\n box-sizing: border-box;\n flex: 1 1 var(--wb-len-120);\n min-width: var(--wb-len-120);\n}\n\n@container (max-width: 560px) {\n ._discoverTools_bnt61_361 {\n display: grid;\n grid-template-columns: minmax(0, auto) minmax(var(--wb-len-120), 1fr) auto;\n grid-template-areas:\n 'market search refresh'\n 'labels sort sort';\n }\n\n ._discoverMarket_bnt61_367 {\n grid-area: market;\n }\n\n ._discoverMarketButton_bnt61_372 {\n margin-left: 0;\n }\n\n ._discoverLabels_bnt61_385 {\n grid-area: labels;\n }\n\n ._discoverSearch_bnt61_399 {\n grid-area: search;\n }\n\n ._discoverSort_bnt61_390 {\n grid-area: sort;\n justify-self: end;\n }\n\n ._discoverRefresh_bnt61_395 {\n grid-area: refresh;\n }\n}\n\n._discoverChips_bnt61_440 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n._discoverList_bnt61_447 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._discoverCard_bnt61_456 {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n margin: 0 calc(0px - var(--wb-len-8));\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCard_bnt61_456:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._discoverArtwork_bnt61_470 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-48);\n height: var(--wb-len-48);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverArtworkImage_bnt61_482 {\n object-fit: contain;\n}\n\n._discoverMain_bnt61_486 {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--wb-len-2);\n min-width: 0;\n}\n\n._discoverTitleRow_bnt61_494 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._discoverCardOpen_bnt61_502 {\n max-width: 100%;\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n text-align: left;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n cursor: pointer;\n}\n\n._discoverCardOpen_bnt61_502::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCardOpen_bnt61_502:focus-visible {\n outline: none;\n}\n\n._discoverCardOpen_bnt61_502:focus-visible::after {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n._discoverStrong_bnt61_533 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n overflow-wrap: anywhere;\n}\n\n._discoverDesc_bnt61_539 {\n display: -webkit-box;\n overflow: hidden;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverMeta_bnt61_548 {\n margin: 0;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._discoverMuted_bnt61_555 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverEnd_bnt61_561 {\n position: relative;\n z-index: var(--wb-z-10);\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverBlocked_bnt61_570 {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n._discoverEmpty_bnt61_575 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-64) 0;\n text-align: center;\n}\n\n._discoverEmptyTitle_bnt61_584 {\n margin: var(--wb-len-8) 0 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverEmpty_bnt61_575 > button {\n margin-top: var(--wb-len-8);\n}\n\n._discoverDetail_bnt61_594 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverCrumb_bnt61_600 {\n align-self: flex-start;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n padding: 0;\n border: 0;\n background: 0 0;\n color: var(--dsw-alias-label-tertiary);\n font: inherit;\n font-size: var(--wb-font-12-5);\n cursor: pointer;\n}\n\n._discoverCrumb_bnt61_600:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._discoverCrumb_bnt61_600:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n._discoverCrumbIcon_bnt61_623 {\n transform: rotate(90deg);\n}\n\n._discoverDetailHead_bnt61_627 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverDetailTitle_bnt61_633 {\n margin: 0;\n font: var(--dsw-font-l-20);\n font-weight: 500;\n}\n\n._discoverDetailText_bnt61_639 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._discoverDetailPanel_bnt61_646 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n min-width: 0;\n}\n\n._discoverDetailTabs_bnt61_653 {\n display: flex;\n margin-bottom: calc(0px - var(--wb-len-4));\n}\n\n._discoverDetailTabList_bnt61_658 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._discoverDocBody_bnt61_663 {\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n._discoverDocNotice_bnt61_668 {\n margin: var(--wb-len-16) 0 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverSection_bnt61_674 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n margin-top: var(--wb-len-16);\n}\n\n._discoverSectionTitle_bnt61_681 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverFacts_bnt61_687 {\n margin: 0;\n padding: 0;\n}\n\n._discoverFactRow_bnt61_692 {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--wb-len-16);\n min-height: var(--wb-len-44);\n padding: var(--wb-len-8) var(--wb-len-2);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverFactKind_bnt61_702 {\n flex: none;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverFactValue_bnt61_708 {\n min-width: 0;\n margin: 0;\n text-align: end;\n overflow-wrap: anywhere;\n font: var(--dsw-font-xs-13);\n}\n\n._discoverCode_bnt61_716 {\n padding: var(--wb-len-2) var(--wb-len-6);\n border-radius: var(--wb-radius-6);\n background: var(--dsw-alias-bg-module-platform);\n font-family: var(--ds-font-family-code);\n font-size: var(--dsw-font-xxs-12-font-size);\n box-decoration-break: clone;\n}\n\n._discoverTags_bnt61_725 {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: var(--wb-len-6);\n}\n\n._discoverLink_bnt61_732 {\n color: var(--dsw-alias-link);\n overflow-wrap: anywhere;\n text-decoration: none;\n}\n\n._discoverLink_bnt61_732:hover {\n text-decoration: underline;\n}\n\n._discoverVersions_bnt61_742 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverVersionRow_bnt61_750 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverVersionName_bnt61_758 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverError_bnt61_763 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._discoverFailure_bnt61_772 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._discoverLoading_bnt61_778 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xs-13);\n}\n\n._discoverNotice_bnt61_787 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-10) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-state-warn-tertiary);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n}\n\n._discoverNotice_bnt61_787 svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverMore_bnt61_805 {\n align-self: center;\n}\n\n._discoverDialog_bnt61_809 {\n width: min(var(--wb-len-480), calc(100vw - var(--wb-len-32)));\n}\n\n._discoverDialogBody_bnt61_813 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._discoverSourceList_bnt61_819 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverSourceRow_bnt61_827 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverSourceCurrent_bnt61_836 {\n flex: none;\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n white-space: nowrap;\n}\n\n._discoverSourceLoading_bnt61_843 {\n display: flex;\n flex: none;\n align-items: center;\n gap: var(--wb-len-6);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n white-space: nowrap;\n}\n\n._discoverSourceHint_bnt61_853 {\n display: flex;\n flex-basis: 100%;\n align-items: center;\n gap: var(--wb-len-6);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n}\n\n._discoverSourceHint_bnt61_853 svg {\n flex: none;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverSourceError_bnt61_867 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._discoverSourceForm_bnt61_873 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverGrow_bnt61_879 {\n flex: 1;\n min-width: 0;\n}\n\n._discoverField_bnt61_884 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._discoverFieldLabel_bnt61_890 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverConfirmHead_bnt61_895 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverSkeletonFill_bnt61_901 {\n background: var(--dsw-alias-bg-skeleton);\n animation: _wb-skeleton_bnt61_1 var(--wb-dur-1-5) cubic-bezier(0.36, 0, 0.64, 1) infinite;\n}\n\n._discoverArtwork_bnt61_470._discoverSkeletonFill_bnt61_901 {\n border-color: transparent;\n}\n\n._discoverSkeletonBar_bnt61_910 {\n display: block;\n height: var(--wb-len-12);\n margin: var(--wb-len-4) 0;\n border-radius: var(--dsw-radius-xs);\n}\n\n._discoverSkeletonTitle_bnt61_917 {\n width: min(var(--wb-len-144), 60%);\n}\n\n._discoverSkeletonDesc_bnt61_921 {\n width: min(var(--wb-len-280), 85%);\n}\n\n@keyframes _wb-skeleton_bnt61_1 {\n 0% {\n opacity: 1;\n }\n 40% {\n opacity: 0.6;\n }\n 80%,\n to {\n opacity: 1;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._discoverSkeletonFill_bnt61_901 {\n animation: none;\n }\n}\n\n._foot_1ud1j_1 {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) var(--wb-len-14) var(--wb-len-10);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._footText_1ud1j_13 {\n flex: 1;\n min-width: 0;\n}\n\n._footTextMd_1ud1j_18 {\n flex: 1;\n min-width: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n._wide_1lv8f_1 {\n justify-content: center;\n width: 100%;\n height: var(--wb-len-40);\n border-radius: var(--dsw-radius-md);\n}\n\n._dialog_1lv8f_8 {\n width: min(var(--wb-len-560), 100%);\n max-height: min(var(--wb-len-800), 100%);\n}\n\n._content_1lv8f_13 {\n min-height: 0;\n overflow: auto;\n}\n\n._stack_1lv8f_18 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._body_1lv8f_25 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._field_1lv8f_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n._input_1lv8f_39 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-14);\n}\n\n._registryField_1lv8f_45 {\n height: var(--wb-len-32);\n margin-left: var(--wb-len-26);\n padding: 0 var(--wb-len-10);\n}\n\n._options_1lv8f_51 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-8) var(--wb-len-12);\n}\n\n._guideToggle_1lv8f_59 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-4);\n align-self: flex-start;\n margin-top: var(--wb-len-4);\n padding: 0;\n border: 0;\n background: transparent;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._guideToggle_1lv8f_59:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._guideToggle_1lv8f_59 svg,\n._registryToggle_1lv8f_78 svg {\n transition: transform var(--wb-dur-0-12) ease;\n}\n\n._guideToggle_1lv8f_59[aria-expanded='true'] svg,\n._registryToggle_1lv8f_78[aria-expanded='true'] svg {\n transform: rotate(180deg);\n}\n\n._registryWrap_1lv8f_87 {\n position: relative;\n flex: none;\n}\n\n._registryToggle_1lv8f_78 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n height: var(--wb-len-26);\n padding: 0 var(--wb-len-8) 0 var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-2);\n font: inherit;\n font-size: var(--wb-font-12-5);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._registryToggle_1lv8f_78:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._registryToggle_1lv8f_78:disabled {\n cursor: default;\n opacity: 0.6;\n}\n\n._registryToggle_1lv8f_78[aria-expanded='true'] {\n border-color: var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-3);\n}\n\n._registryChosen_1lv8f_121 {\n color: var(--dsw-alias-label-primary);\n font-weight: 500;\n}\n\n._registry_1lv8f_45 {\n position: fixed;\n z-index: var(--wb-z-1100);\n box-sizing: border-box;\n width: min(var(--wb-len-440), 100vw - var(--wb-len-24));\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10) var(--wb-len-12);\n border: 0;\n border-radius: var(--dsw-radius-lg);\n background: var(--dsw-alias-bg-layer-2);\n --dsw-elevation-stroke-color: var(--dsw-alias-border-l3);\n box-shadow: var(--dsw-elevation-prominent);\n}\n\n._registryOption_1lv8f_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid transparent;\n border-radius: var(--dsw-radius-lg);\n cursor: pointer;\n}\n\nlabel._registryOption_1lv8f_143 {\n flex-direction: row;\n align-items: flex-start;\n gap: var(--wb-len-10);\n}\n\n._registryPick_1lv8f_159 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n cursor: pointer;\n}\n\n._registryOption_1lv8f_143[data-checked='true'] {\n border-color: color-mix(in srgb, var(--dsw-alias-brand-primary) 40%, transparent);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n._registryOption_1lv8f_143 input[type='radio'] {\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: var(--wb-len-2) 0 0;\n accent-color: var(--dsw-alias-brand-primary);\n}\n\n._registryTitle_1lv8f_179 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n font: var(--dsw-font-xs-13);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-primary);\n}\n\n._registryHint_1lv8f_189 {\n margin-left: var(--wb-len-26);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._inputError_1lv8f_197 {\n margin: var(--wb-len-neg-4) 0 0 var(--wb-len-26);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._guide_1lv8f_59 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) var(--wb-len-14) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-lg);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._guideList_1lv8f_214 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n._guideItem_1lv8f_223 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) 0;\n}\n\n._guideIndex_1lv8f_230 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n border-radius: var(--wb-radius-pill);\n corner-shape: round;\n background: var(--dsw-alias-bg-module-platform);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._guideMain_1lv8f_244 {\n display: flex;\n flex-direction: column;\n flex: 1;\n gap: 0;\n min-width: 0;\n}\n\n._guideTitle_1lv8f_252 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n\n._guideHint_1lv8f_258 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._guideExample_1lv8f_264 {\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._guideExample_1lv8f_264 code {\n font-family: var(--dsw-font-mono, monospace);\n}\n\n._guideExampleLabel_1lv8f_274 {\n color: var(--dsw-alias-label-caption);\n}\n\n._footer_1lv8f_278 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-20);\n width: 100%;\n}\n\n._hero_1lv8f_285 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) 0 var(--wb-len-4);\n text-align: center;\n}\n\n._heroIcon_1lv8f_294 {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-44);\n height: var(--wb-len-44);\n color: var(--dsw-alias-label-secondary);\n}\n\n._heroIcon_1lv8f_294[data-state='done'] {\n color: var(--dsw-alias-state-success-secondary);\n}\n\n._heroIcon_1lv8f_294[data-state='error'] {\n color: var(--dsw-alias-state-warn-label);\n}\n\n._pendingTitle_1lv8f_311 {\n margin: 0;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n font-weight: 500;\n color: var(--dsw-alias-label-secondary);\n}\n\n._wizardTitle_1lv8f_319 {\n margin: 0;\n font-size: var(--wb-font-18);\n line-height: var(--wb-len-26);\n font-weight: 600;\n}\n\n._subject_1lv8f_326 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-6);\n padding: var(--wb-len-16);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n text-align: center;\n}\n\n._subjectName_1lv8f_337 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n overflow-wrap: anywhere;\n}\n\n._subjectMeta_1lv8f_343,\n._subjectDesc_1lv8f_344 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._result_1lv8f_351,\n._resultWarn_1lv8f_352 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: color-mix(in srgb, var(--dsw-alias-state-success-primary) 10%, transparent);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-primary);\n}\n\n._resultWarn_1lv8f_352 {\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 12%, transparent);\n}\n\n._resultMeta_1lv8f_365 {\n margin: 0;\n padding: 0 var(--wb-len-12);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._approval_1lv8f_373 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-12) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-state-warn-primary);\n border-radius: var(--dsw-radius-lg);\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._approvalTitle_1lv8f_383 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._approvalText_1lv8f_390 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._approvalCaution_1lv8f_396 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n font-weight: 600;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._note_1lv8f_403 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._noteWarn_1lv8f_410 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._noteError_1lv8f_414 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._problem_1lv8f_418 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._detailLabel_1lv8f_425 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._detail_1lv8f_425 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l1);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-3);\n font-family: var(--dsw-font-mono, monospace);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n}\n._note_1enlz_1 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-10) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-state-warn-tertiary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n._note_1enlz_1 > svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n._slot_1t7dx_1 {\n display: flex;\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._slot_1t7dx_1 > * {\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._action_1t7dx_12 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 1 0;\n width: 100%;\n min-width: 0;\n min-height: var(--wb-len-36);\n margin: 0 var(--wb-len-2);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: default;\n overflow: hidden;\n gap: var(--wb-len-4);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n}\n\n._live_1t7dx_31 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._paused_1t7dx_35 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._trouble_1t7dx_39 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._pulse_1t7dx_43 {\n animation: _wb-debug-breathe_1t7dx_1 var(--wb-dur-1-5) var(--ds-ease-in-out, ease-in-out) infinite;\n}\n\n@keyframes _wb-debug-breathe_1t7dx_1 {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.35;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._pulse_1t7dx_43 {\n animation: none;\n }\n}\n\n._entry_1t7dx_64 {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._entryInner_1t7dx_71 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._acts_1t7dx_78 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-2);\n flex: none;\n}\n\n._act_1t7dx_12 {\n appearance: none;\n border: 0;\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: 0;\n border-radius: var(--dsw-radius-sm, var(--wb-len-6));\n flex: none;\n cursor: pointer;\n}\n\n._act_1t7dx_12:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._act_1t7dx_12:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n\n._actStop_1t7dx_110:hover,\n._actStop_1t7dx_110:focus-visible {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._actArmed_1t7dx_115,\n._actArmed_1t7dx_115:hover,\n._actArmed_1t7dx_115:focus-visible {\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);\n width: auto;\n color: var(--dsw-alias-state-error-primary);\n gap: var(--wb-len-4);\n padding: 0 var(--wb-len-7);\n}\n\n._actLabel_1t7dx_125 {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n._entryLine_1t7dx_131 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._actionRail_1t7dx_138 {\n justify-content: center;\n flex: none;\n width: var(--wb-len-36);\n min-width: var(--wb-len-36);\n height: var(--wb-len-36);\n margin: 0;\n padding: 0;\n corner-shape: round;\n border-radius: 50%;\n}\n\n._card_1t7dx_150 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._cardTitle_1t7dx_156 {\n color: var(--dsw-alias-label-primary);\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n}\n\n._cardNote_1t7dx_162 {\n color: var(--dsw-alias-label-secondary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n._slot_1gkj9_1 {\n display: flex;\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._slot_1gkj9_1 > * {\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._action_1gkj9_12 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 1 0;\n width: 100%;\n min-width: 0;\n min-height: var(--wb-len-36);\n margin: 0 var(--wb-len-2);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: default;\n overflow: hidden;\n gap: var(--wb-len-4);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n}\n\n._live_1gkj9_31 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._done_1gkj9_35 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._pulse_1gkj9_39 {\n animation: _wb-record-breathe_1gkj9_1 var(--wb-dur-1-5) var(--ds-ease-in-out, ease-in-out) infinite;\n}\n\n@keyframes _wb-record-breathe_1gkj9_1 {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.35;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._pulse_1gkj9_39 {\n animation: none;\n }\n}\n\n._entry_1gkj9_60 {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._entryInner_1gkj9_67 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._acts_1gkj9_74 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-2);\n flex: none;\n}\n\n._act_1gkj9_12 {\n appearance: none;\n border: 0;\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: var(--wb-len-22);\n padding: 0 var(--wb-len-7);\n border-radius: var(--dsw-radius-sm, var(--wb-len-6));\n flex: none;\n cursor: pointer;\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n._act_1gkj9_12:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._act_1gkj9_12:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n\n._entryLine_1gkj9_108 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._actionRail_1gkj9_115 {\n justify-content: center;\n flex: none;\n width: var(--wb-len-36);\n min-width: var(--wb-len-36);\n height: var(--wb-len-36);\n margin: 0;\n padding: 0;\n corner-shape: round;\n border-radius: 50%;\n}\n\n._card_1gkj9_127 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._cardTitle_1gkj9_133 {\n color: var(--dsw-alias-label-primary);\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n}\n\n._cardNote_1gkj9_139 {\n color: var(--dsw-alias-label-secondary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n._item_lyox9_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n}\n\n._item_lyox9_1 + ._item_lyox9_1 {\n padding-top: var(--wb-len-14);\n border-top: var(--wb-len-0-5) solid var(--dsw-alias-settings-card-stroke);\n}\n\n._head_lyox9_12 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._title_lyox9_19 {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._description_lyox9_31 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._rows_85r3w_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n._row_85r3w_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n padding: var(--wb-len-12) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-settings-card-stroke);\n border-radius: var(--dsw-radius-xl);\n background: var(--dsw-alias-settings-card-fill);\n}\n\n._head_85r3w_20 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._pick_85r3w_27 {\n flex: 0 1 auto;\n min-width: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n._pick_85r3w_27 > span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._code_85r3w_39 {\n --dsl-code-block-background: var(--dsw-alias-bg-layer-1);\n margin: 0;\n}\n\n._missing_85r3w_44,\n._conflict_85r3w_45 {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-warn-primary);\n}\n._body_11oac_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._sources_11oac_7 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._sourcesLabel_11oac_14 {\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-secondary);\n}\n\nbutton._sourceOn_11oac_19 {\n border-color: var(--dsw-alias-brand-primary);\n}\n._sourceCount_11oac_22 {\n margin-left: var(--wb-len-4);\n font-variant-numeric: tabular-nums;\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._reading_11oac_29 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._status_11oac_35 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._failure_11oac_45 {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n column-gap: var(--wb-len-10);\n row-gap: var(--wb-len-2);\n color: var(--dsw-alias-state-error-primary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n\n._failureTitle_11oac_55 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._failureHint_11oac_62 {\n grid-column: 1;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._failureAction_11oac_67 {\n grid-column: 2;\n grid-row: 1;\n justify-self: end;\n}\n\n._foot_11oac_73 {\n display: flex;\n justify-content: flex-end;\n}\n._body_lox98_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._field_lox98_7 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._input_lox98_13 {\n width: 100%;\n}\n\n._label_lox98_17 {\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-secondary);\n}\n\n._hint_lox98_22 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._copy_lox98_28 {\n display: flex;\n flex-wrap: wrap;\n gap: var(--wb-len-8) var(--wb-len-16);\n margin: 0;\n padding: 0;\n border: 0;\n}\n\n._copy_lox98_28 legend {\n padding: 0;\n margin-bottom: var(--wb-len-6);\n}\n\n._actions_lox98_42 {\n display: flex;\n justify-content: flex-end;\n}\n\n._commandLabel_lox98_47 {\n display: block;\n margin-top: var(--wb-len-4);\n}\n\n._command_lox98_47 {\n display: block;\n margin-top: var(--wb-len-4);\n padding: var(--wb-len-6) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxs-12-font-size);\n overflow-wrap: anywhere;\n}\n._body_zi2j5_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._lead_zi2j5_7 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n._title_zi2j5_14 {\n font-size: var(--wb-font-18);\n line-height: var(--wb-line-24);\n}\n._hint_zyzt3_1[hidden],\n._actions_zyzt3_2[hidden],\n._progress_zyzt3_3[hidden],\n._commandRow_zyzt3_4[hidden],\n._bridge_zyzt3_5[hidden],\n._raw_zyzt3_6[hidden] {\n display: none;\n}\n\n._gate_zyzt3_10 {\n position: fixed;\n inset: 0;\n z-index: var(--wb-z-top);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--wb-len-24);\n background: var(--dsw-alias-bg-base);\n}\n\n._card_zyzt3_21 {\n width: 100%;\n max-width: var(--wb-len-420);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-16);\n text-align: center;\n}\n\n._card_zyzt3_21:has(._actions_zyzt3_2:not([hidden])),\n._card_zyzt3_21:has(._bridge_zyzt3_5:not([hidden])) {\n max-width: var(--wb-len-520);\n}\n\n._title_zyzt3_36 {\n margin: 0;\n font-size: var(--dsw-font-base-16-font-size);\n line-height: var(--wb-line-24);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._hint_zyzt3_1 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._steps_zyzt3_51 {\n list-style: none;\n margin: var(--wb-len-6) 0 0;\n padding: 0;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n text-align: left;\n}\n\n._step_zyzt3_51 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-6) var(--wb-len-10);\n border-radius: var(--dsw-radius-sm);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._step_zyzt3_51[data-status='running'] {\n color: var(--dsw-alias-label-primary);\n}\n\n._mark_zyzt3_78 {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-14);\n height: var(--wb-len-14);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n}\n\n._step_zyzt3_51[data-status='ok'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._step_zyzt3_51[data-status='warn'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._step_zyzt3_51[data-status='failed'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._label_zyzt3_103 {\n flex: none;\n}\n\n._detail_zyzt3_107 {\n margin-left: auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._progress_zyzt3_3 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._elapsed_zyzt3_125 {\n flex: none;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n}\n\n._error_zyzt3_133 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n max-height: var(--wb-len-120);\n overflow: auto;\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n white-space: pre-wrap;\n word-break: break-all;\n text-align: left;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._commandRow_zyzt3_4 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-4);\n margin: 0 0 var(--wb-len-8);\n padding-right: var(--wb-len-4);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n._copy_zyzt3_159 {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-24);\n height: var(--wb-len-24);\n padding: 0;\n border: none;\n border-radius: var(--wb-radius-6);\n background: transparent;\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._copy_zyzt3_159:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._command_zyzt3_4 {\n flex: 1;\n min-width: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n overflow-wrap: anywhere;\n color: var(--dsw-alias-label-primary);\n}\n\n._buttons_zyzt3_192 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-12);\n}\n\n._mockSlot_zyzt3_199 {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n justify-content: center;\n background: var(--dsw-alias-bg-base);\n}\n\n._button_zyzt3_192 {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: var(--wb-len-28);\n padding: 0 var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n font: inherit;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n}\n\n._button_zyzt3_192:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._button_zyzt3_192:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n._actions_zyzt3_2,\n._bridge_zyzt3_5 {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--wb-len-10);\n margin-top: var(--wb-len-4);\n padding: var(--wb-len-14) var(--wb-len-16);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-14);\n background: var(--dsw-alias-bg-layer-1);\n text-align: left;\n}\n\n._fixTitle_zyzt3_250 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._actions_zyzt3_2 ._hint_zyzt3_1,\n._bridge_zyzt3_5 ._hint_zyzt3_1 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-19);\n color: var(--dsw-alias-label-secondary);\n}\n\n._actions_zyzt3_2 ._commandRow_zyzt3_4,\n._bridge_zyzt3_5 ._commandRow_zyzt3_4 {\n margin: 0;\n}\n\n._actions_zyzt3_2 ._buttons_zyzt3_192,\n._bridge_zyzt3_5 ._buttons_zyzt3_192 {\n justify-content: flex-start;\n}\n\n._raw_zyzt3_6 {\n box-sizing: border-box;\n width: 100%;\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n text-align: left;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._rawSummary_zyzt3_286 {\n cursor: pointer;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._actions_zyzt3_2 ._error_zyzt3_133,\n._bridge_zyzt3_5 ._error_zyzt3_133 {\n margin-top: var(--wb-len-6);\n}\n\n._bridgeLines_zyzt3_296 {\n margin: 0;\n padding-left: var(--wb-len-18);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-19);\n color: var(--dsw-alias-label-secondary);\n}\n\n._bridgeLine_zyzt3_296 a {\n display: block;\n margin-top: var(--wb-len-4);\n width: fit-content;\n}\n\n._link_zyzt3_313 {\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n}\n\n._link_zyzt3_313::after {\n content: '↗';\n margin-left: var(--wb-len-2);\n}\n\n._link_zyzt3_313:hover {\n text-decoration: underline;\n}\n\n._loading_zyzt3_327 {\n flex: none;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._loading_zyzt3_327[hidden] {\n display: none;\n}\n\n._loadingMotion_zyzt3_336 {\n transform-origin: center;\n animation: _wb-spin_zyzt3_1 var(--wb-dur-1-5) linear infinite;\n}\n\n._loadingTrack_zyzt3_341,\n._loadingArc_zyzt3_342 {\n fill: none;\n stroke: currentColor;\n stroke-width: 2;\n stroke-linecap: round;\n}\n\n._loadingTrack_zyzt3_341 {\n opacity: 0.25;\n}\n\n._loadingArc_zyzt3_342 {\n stroke-dasharray: 12 150;\n animation: _wb-dash_zyzt3_1 var(--wb-dur-1-5) ease-in-out infinite;\n}\n\n@keyframes _wb-spin_zyzt3_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes _wb-dash_zyzt3_1 {\n 0% {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 24 150;\n stroke-dashoffset: -6;\n }\n to {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._loadingMotion_zyzt3_336,\n ._loadingArc_zyzt3_342 {\n animation: none;\n }\n}\n._changelog_1q6pj_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n margin-top: var(--wb-len-10);\n min-width: 0;\n}\n\n._changelogTitle_1q6pj_9 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._changelogMissing_1q6pj_15 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-primary);\n}\n\n._changelogBody_1q6pj_21 {\n max-height: var(--wb-len-320);\n overflow: auto;\n padding: var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n}\n._group_1hxis_1 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n}\n\n._button_1hxis_7 {\n flex: none;\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n color: var(--dsw-alias-label-secondary);\n}\n\n._button_1hxis_7:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._active_1hxis_19 {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._icon_1hxis_23 {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n._icon_1hxis_23 svg {\n display: block;\n width: var(--wb-len-15);\n height: var(--wb-len-15);\n}\n\n._mirror_1hxis_35 {\n transform: scaleX(-1);\n}\n._stripTabs_1dqp4_1 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-4);\n min-width: 0;\n overflow: hidden;\n}\n\n._tab_1dqp4_9 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n flex: none;\n height: var(--wb-len-28);\n padding: 0 var(--wb-len-10);\n border: 0;\n border-radius: var(--dsw-radius-sm);\n background: none;\n font: inherit;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-16);\n max-width: 100%;\n}\n\n._tabActive_1dqp4_25 {\n color: var(--dsw-alias-label-primary);\n}\n\n._tabQuiet_1dqp4_29 {\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._tabQuiet_1dqp4_29:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._tabTitle_1dqp4_39 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._sep_1dqp4_49 {\n flex: none;\n color: var(--dsw-alias-label-dimmed);\n}\n._trigger_15ptp_1 {\n display: flex;\n align-items: center;\n}\n\n._pop_15ptp_6 {\n position: absolute;\n top: calc(var(--wb-len-38) + var(--wb-len-8));\n right: var(--wb-len-6);\n z-index: var(--wb-z-30);\n width: min(var(--wb-len-360), calc(100% - var(--wb-len-12)));\n max-width: calc(100vw - var(--wb-len-48));\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-14);\n background: var(--dsw-alias-bg-layer-2);\n box-shadow: var(--dsw-shadow-lv3);\n overflow: hidden;\n}\n\n._head_15ptp_20 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-10) var(--wb-len-12) var(--wb-len-9) var(--wb-len-14);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._title_15ptp_28 {\n flex: 1;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._rowControls_15ptp_36 {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._reset_15ptp_43 {\n flex: none;\n padding: var(--wb-len-3) var(--wb-len-8);\n border: none;\n border-radius: var(--wb-radius-6);\n background: transparent;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._reset_15ptp_43:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._reset_15ptp_43:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._list_15ptp_65 {\n list-style: none;\n margin: 0;\n padding: var(--wb-len-6);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._row_15ptp_36 {\n position: relative;\n display: grid;\n grid-template-columns: 12px minmax(0, 1fr) auto;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-sm);\n cursor: default;\n}\n\n._rowDragging_15ptp_85 {\n cursor: grabbing;\n}\n\n._rowBlocked_15ptp_89 {\n cursor: not-allowed;\n}\n\n._listDragging_15ptp_93 ._rowControls_15ptp_36 {\n pointer-events: none;\n}\n\n._row_15ptp_36:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._rowOff_15ptp_101 {\n opacity: 0.55;\n}\n\n._rowOff_15ptp_101:hover {\n opacity: 1;\n}\n\n._rowOver_15ptp_109::before {\n content: '';\n position: absolute;\n top: var(--wb-len-neg-3);\n left: var(--wb-len-8);\n right: var(--wb-len-8);\n height: var(--wb-len-2);\n background: var(--dsw-alias-brand-primary);\n}\n\n._ghost_15ptp_119 {\n position: fixed;\n z-index: var(--wb-z-40);\n pointer-events: none;\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n box-shadow: var(--wb-static-shadow-ghost);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n white-space: nowrap;\n}\n\n._grip_15ptp_134 {\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n text-align: center;\n color: var(--dsw-alias-label-tertiary);\n user-select: none;\n cursor: grab;\n touch-action: none;\n}\n\n._gripDragging_15ptp_144 {\n cursor: grabbing;\n}\n\n._gripBlocked_15ptp_148 {\n cursor: not-allowed;\n}\n\n._label_15ptp_152 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._name_15ptp_159 {\n min-width: 0;\n flex: 0 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n}\n\n._error_15ptp_170 {\n margin: 0;\n padding: 0 var(--wb-len-14) var(--wb-len-10);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._dep_15ptp_178 {\n flex: none;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n white-space: nowrap;\n}\n\n._group_15ptp_186 {\n padding-top: var(--wb-len-6);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._groupTitle_15ptp_191 {\n margin: 0;\n padding: var(--wb-len-2) var(--wb-len-8) 0 var(--wb-len-14);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n font-weight: 400;\n color: var(--dsw-alias-label-tertiary);\n}\n._panel_1whum_1 {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: var(--wb-z-10);\n visibility: hidden;\n}\n\n._panel_1whum_1[data-fullscreen] {\n z-index: var(--wb-z-40);\n}\n\n._panel_1whum_1[data-open] {\n visibility: visible;\n}\n\n._columns_1whum_18 {\n display: block;\n column-gap: var(--wb-len-12);\n}\n\n._cell_1whum_23 {\n display: flow-root;\n min-width: 0;\n break-inside: avoid;\n margin-bottom: var(--wb-len-12);\n}\n._root_1cmz0_1 {\n position: relative;\n flex: none;\n margin: 0 var(--wb-len-2) var(--wb-len-4);\n}\n\n._rail_1cmz0_7 {\n margin: 0 0 var(--wb-len-4);\n}\n\n._glyphBox_1cmz0_11 {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n}\n\n._glyph_1cmz0_11 {\n position: relative;\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-16);\n height: var(--wb-len-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._glyphActive_1cmz0_30 {\n color: var(--dsw-alias-state-business-primary);\n}\n\n._triggerName_1cmz0_34 {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-6);\n font-size: var(--wb-font-row);\n line-height: var(--wb-line-20);\n overflow: hidden;\n}\n\n._dir_1cmz0_45 {\n flex: 0 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._name_1cmz0_53 {\n flex: 0 1 auto;\n max-width: 50%;\n font-size: var(--dsw-font-xxs-12-font-size);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._triggerName_1cmz0_34 ._name_1cmz0_53 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._row_1cmz0_66 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n width: 100%;\n min-width: 0;\n}\n\n._trailing_1cmz0_74 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n margin-inline-start: auto;\n}\n\n._trailing_1cmz0_74 ._rowAction_1cmz0_84 {\n width: var(--wb-len-20);\n min-width: var(--wb-len-20);\n height: var(--wb-len-20);\n min-height: var(--wb-len-20);\n padding: 0;\n border-radius: var(--dsw-radius-sm);\n}\n\n._row_1cmz0_66 ._name_1cmz0_53 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._current_1cmz0_97 {\n flex: none;\n display: inline-flex;\n align-items: center;\n color: var(--dsw-alias-label-primary);\n}\n._dot_sosf1_1 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n._overlay_sosf1_8 {\n position: absolute;\n inset-block-start: var(--wb-len-neg-3);\n inset-inline-end: var(--wb-len-neg-3);\n}\n._tag_g9dg8_1 {\n flex: none;\n margin-inline-start: auto;\n}\n._dialog_1vye5_1 {\n width: min(var(--wb-len-420), 100%);\n}\n\n._stack_1vye5_5 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._input_1vye5_12 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-12);\n}\n\n._meta_1vye5_18 {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n._dot_14w1n_1 {\n display: inline-flex;\n align-items: center;\n}\n\n._hover_14w1n_6 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._blocker_1oaj0_1 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-6);\n padding: var(--wb-len-20) var(--wb-len-16);\n text-align: center;\n}\n\n._icon_1oaj0_10 {\n display: flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._title_1oaj0_15 {\n margin: var(--wb-len-2) 0 0;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._hint_1oaj0_23 {\n margin: 0;\n max-width: var(--wb-len-42em);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n text-wrap: pretty;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 {\n align-items: flex-start;\n gap: var(--wb-len-6);\n padding: var(--wb-len-4) 0 var(--wb-len-2);\n text-align: left;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._title_1oaj0_15 {\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._hint_1oaj0_23 {\n max-width: 100%;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._actions_1oaj0_48 {\n margin-top: var(--wb-len-8);\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._raw_1oaj0_52 {\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._actions_1oaj0_48 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n margin-top: var(--wb-len-6);\n}\n\n._raw_1oaj0_52 {\n margin-top: var(--wb-len-10);\n width: 100%;\n max-width: var(--wb-len-360);\n text-align: left;\n}\n\n._notice_1oaj0_71 {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: start;\n column-gap: var(--wb-len-10);\n margin: 0 0 var(--wb-len-10);\n padding: var(--wb-len-10) var(--wb-len-12);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-left: 2px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._notice_1oaj0_71._noticeFlat_1oaj0_84 {\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n}\n\n._noticeText_1oaj0_91 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-3);\n min-width: 0;\n}\n\n._noticeTitle_1oaj0_98 {\n font-size: var(--wb-font-12-5);\n line-height: var(--wb-line-18);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._noticeHint_1oaj0_105 {\n font-size: var(--wb-font-11-5);\n line-height: var(--wb-line-17);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._noticeActions_1oaj0_112 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin-top: var(--wb-len-neg-2);\n}\n\n._failure_1oaj0_119 {\n margin: var(--wb-len-8) 0 0;\n font-size: var(--wb-font-11-5);\n line-height: var(--wb-line-17);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._failureDetail_1oaj0_127 {\n display: block;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-label-tertiary);\n white-space: pre-wrap;\n}\n\n._inlineAction_1oaj0_134 {\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n}\n\n._inlineAction_1oaj0_134:disabled {\n opacity: 0.6;\n cursor: default;\n}\n\n._rawText_1oaj0_146 {\n margin: var(--wb-len-6) 0 0;\n max-width: 100%;\n}\n/*$vite$:1*/";
|
|
14382
14738
|
function workbenchCss() {
|
|
14383
14739
|
return `${tokens_default}\n${palette_default}\n${scale_default}\n${sidebar_default}\n${sidebar_app_default}\n${rightbar_default}\n${chrome_default}\n${board_default}\n${motion_default}\n${COMPONENT_CSS_MARKER}`;
|
|
14384
14740
|
}
|
|
@@ -14430,7 +14786,7 @@ window.__ModuleLoader__.load({
|
|
|
14430
14786
|
let disposeDictionary;
|
|
14431
14787
|
const publish = () => {
|
|
14432
14788
|
disposeDictionary?.();
|
|
14433
|
-
const { dictionaries: merged, problems } = mergeMessagesSkipping(dictionaries, messagesOf(units.all()));
|
|
14789
|
+
const { dictionaries: merged, problems } = mergeMessagesSkipping(dictionaries, [unitTitlesOf(units.manifests()), ...messagesOf(units.all())]);
|
|
14434
14790
|
for (const problem of problems) console.warn(`[dsh-workbench] 套件 ${problem.unit} 的文案没并进来(只有它少了这几句):${problem.reason}`);
|
|
14435
14791
|
disposeDictionary = ctx.locale.register(LOCALE_NS, merged);
|
|
14436
14792
|
};
|