@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
|
@@ -2723,6 +2723,32 @@ var SIDEBAR_EDITION_RESOURCE = "sidebarEdition";
|
|
|
2723
2723
|
//#region ../shared/dist/contract/protocol/unit-manifests.js
|
|
2724
2724
|
var UNIT_MANIFESTS_ROUTE = "unit-manifests";
|
|
2725
2725
|
//#endregion
|
|
2726
|
+
//#region ../shared/dist/contract/unit.js
|
|
2727
|
+
/**
|
|
2728
|
+
* 外壳替模块名合成的词表键:模块自己不必写名字键,名字直接从清单里的 title 注册进来。
|
|
2729
|
+
* @param unit 单元 id。
|
|
2730
|
+
* @returns 该单元名字在词表里的键。
|
|
2731
|
+
*/
|
|
2732
|
+
function unitTitleKey(unit) {
|
|
2733
|
+
return `dsh-workbench.unit.${unit}.title`;
|
|
2734
|
+
}
|
|
2735
|
+
/**
|
|
2736
|
+
* 模块声明的全部环境需要(没写就是空表)。
|
|
2737
|
+
* @param manifest 模块清单。
|
|
2738
|
+
* @returns need 列表。
|
|
2739
|
+
*/
|
|
2740
|
+
function needsOf(manifest) {
|
|
2741
|
+
return manifest.needs ?? [];
|
|
2742
|
+
}
|
|
2743
|
+
/**
|
|
2744
|
+
* 市场门槛要看的那些需要:声明了 extension / lib 就算(不要求写了来源)。
|
|
2745
|
+
* @param manifest 模块清单。
|
|
2746
|
+
* @returns extension / lib 的 need 列表。
|
|
2747
|
+
*/
|
|
2748
|
+
function supplyNeedsOf(manifest) {
|
|
2749
|
+
return needsOf(manifest).filter((need) => need.kind === "extension" || need.kind === "lib");
|
|
2750
|
+
}
|
|
2751
|
+
//#endregion
|
|
2726
2752
|
//#region ../shared/dist/contract/needs.js
|
|
2727
2753
|
function text(value) {
|
|
2728
2754
|
return typeof value === "string" ? value.trim() : "";
|
|
@@ -2785,24 +2811,6 @@ Object.freeze({
|
|
|
2785
2811
|
})
|
|
2786
2812
|
});
|
|
2787
2813
|
//#endregion
|
|
2788
|
-
//#region ../shared/dist/contract/unit.js
|
|
2789
|
-
/**
|
|
2790
|
-
* 模块声明的全部环境需要(没写就是空表)。
|
|
2791
|
-
* @param manifest 模块清单。
|
|
2792
|
-
* @returns need 列表。
|
|
2793
|
-
*/
|
|
2794
|
-
function needsOf(manifest) {
|
|
2795
|
-
return manifest.needs ?? [];
|
|
2796
|
-
}
|
|
2797
|
-
/**
|
|
2798
|
-
* 市场门槛要看的那些需要:声明了 extension / lib 就算(不要求写了来源)。
|
|
2799
|
-
* @param manifest 模块清单。
|
|
2800
|
-
* @returns extension / lib 的 need 列表。
|
|
2801
|
-
*/
|
|
2802
|
-
function supplyNeedsOf(manifest) {
|
|
2803
|
-
return needsOf(manifest).filter((need) => need.kind === "extension" || need.kind === "lib");
|
|
2804
|
-
}
|
|
2805
|
-
//#endregion
|
|
2806
2814
|
//#region ../shared/dist/i18n/settings.js
|
|
2807
2815
|
/** 「工作台设置」这一组的词条:配置同步 / 新建工作台。 */
|
|
2808
2816
|
var zhSettings = {
|
|
@@ -3071,15 +3079,14 @@ var en = {
|
|
|
3071
3079
|
"panels.market.update": "Update",
|
|
3072
3080
|
"panels.market.swapSlow": "Not swapped yet — maybe a slow or failed download. Press Update again; if it stays like this, restart dsh.",
|
|
3073
3081
|
"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.",
|
|
3074
|
-
"panels.market.updateNoChange": "
|
|
3082
|
+
"panels.market.updateNoChange": "Update failed: still {from}. The newest on the registry is {latest} — press Update again.",
|
|
3075
3083
|
"panels.market.updateUnknownVersion": "(unknown)",
|
|
3076
|
-
"panels.market.updateGone": "
|
|
3077
|
-
"panels.market.updateRestored": "
|
|
3084
|
+
"panels.market.updateGone": "Update failed: the module is gone after the update.",
|
|
3085
|
+
"panels.market.updateRestored": "Update failed: the new version could not be found after the update, so {version} was put back.",
|
|
3078
3086
|
"panels.market.updateBehind": "Installed {installed}, but the newest on the registry is {latest} — not the latest; you can update once more.",
|
|
3079
|
-
"panels.market.selfUpdateFailed": "
|
|
3087
|
+
"panels.market.selfUpdateFailed": "Workbench update failed: {reason}",
|
|
3080
3088
|
"panels.market.selfUpdateUnknown": "the outside process left no reason (see ~/.dsh/workbench/self-update.log)",
|
|
3081
|
-
"panels.market.selfUpdateRolledBack": "
|
|
3082
|
-
"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).",
|
|
3089
|
+
"panels.market.selfUpdateRolledBack": "Workbench update failed; rolled back to {version}.",
|
|
3083
3090
|
"panels.market.uninstall": "Uninstall",
|
|
3084
3091
|
"panels.market.uninstallLabel": "Uninstall {name}",
|
|
3085
3092
|
"panels.market.installing": "Installing…",
|
|
@@ -3101,9 +3108,27 @@ var en = {
|
|
|
3101
3108
|
"panels.market.empty": "No modules available",
|
|
3102
3109
|
"panels.market.sectionPlugins": "Installed opencli plugins",
|
|
3103
3110
|
"panels.market.moduleOutdated": "update available",
|
|
3111
|
+
"panels.market.updateNeedsWorkbench": "this version needs a newer workbench first",
|
|
3112
|
+
"panels.market.updateIncompatible": "the new version does not match this workbench, so it cannot be installed now",
|
|
3104
3113
|
"panels.market.moduleRefused": "This module does not match this workbench, so it cannot be used for now.",
|
|
3105
3114
|
"panels.market.moduleRestartHint": "restart dsh once to bring it up",
|
|
3106
3115
|
"panels.market.pendingRestart": "restart required",
|
|
3116
|
+
"panels.market.pendingFollowUp": "old data to migrate",
|
|
3117
|
+
"panels.market.migrationHint": "old sessions and projects are not merged yet",
|
|
3118
|
+
"panels.market.migrateAction": "Migrate old data",
|
|
3119
|
+
"panels.market.migrating": "Migrating…",
|
|
3120
|
+
"panels.market.migrateConfirmTitle": "Migrate old data?",
|
|
3121
|
+
"panels.market.migrateConfirmDetail": "Quit dsh web / Desktop first. Only missing data is added; nothing is overwritten.",
|
|
3122
|
+
"panels.market.migrateConfirmAck": "I've quit dsh web / Desktop",
|
|
3123
|
+
"panels.market.migrateConfirmYes": "Start migration",
|
|
3124
|
+
"panels.market.migrateDone": "Migration complete: {added} projects added; restart the workbench and dsh web to see them.",
|
|
3125
|
+
"panels.market.dismissFollowUp": "Don't remind me",
|
|
3126
|
+
"panels.market.dismissing": "Dismissing…",
|
|
3127
|
+
"panels.market.dismissFollowUpTitle": "Stop reminding about this?",
|
|
3128
|
+
"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.",
|
|
3129
|
+
"panels.market.dismissFollowUpAck": "I understand the old data won't appear automatically",
|
|
3130
|
+
"panels.market.dismissFollowUpYes": "Don't remind me",
|
|
3131
|
+
"panels.market.dismissed": "No longer reminded; old data stays in the old directory and can still be migrated with dsh-workbench migrate.",
|
|
3107
3132
|
"panels.market.workbenchName": "Workbench",
|
|
3108
3133
|
"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.",
|
|
3109
3134
|
"panels.market.restartNeeded": "The new version is installed — restart once to pick it up.",
|
|
@@ -3187,7 +3212,7 @@ var en = {
|
|
|
3187
3212
|
"panels.market.add.exampleTitle": "Examples",
|
|
3188
3213
|
"panels.market.add.exampleFill": "Fill in an example",
|
|
3189
3214
|
"panels.market.add.registryLabel": "Source",
|
|
3190
|
-
"panels.market.add.registryProfile": "This
|
|
3215
|
+
"panels.market.add.registryProfile": "This workbench's registry",
|
|
3191
3216
|
"panels.market.add.registryPnpm": "pnpm's own registry",
|
|
3192
3217
|
"panels.market.add.check": "Check",
|
|
3193
3218
|
"panels.market.add.checking": "Checking…",
|
|
@@ -3208,12 +3233,16 @@ var en = {
|
|
|
3208
3233
|
"panels.market.tabs": "The two faces of the module market",
|
|
3209
3234
|
"panels.tab.discover": "Discover",
|
|
3210
3235
|
"panels.discover.loading": "Reading the index",
|
|
3236
|
+
"panels.discover.slowHint": "Slow to load: finish any authorization prompt, or switch sources.",
|
|
3211
3237
|
"panels.discover.lead": "Browse modules from an index source; install and go.",
|
|
3212
3238
|
"panels.discover.addSource": "Add",
|
|
3213
3239
|
"panels.discover.addingSource": "Adding…",
|
|
3214
3240
|
"panels.discover.addFirstSource": "Add index source",
|
|
3215
3241
|
"panels.discover.removeSource": "Remove",
|
|
3216
3242
|
"panels.discover.removeSourceNamed": "Remove {url}",
|
|
3243
|
+
"panels.discover.useSource": "Use",
|
|
3244
|
+
"panels.discover.useSourceNamed": "Use {label}",
|
|
3245
|
+
"panels.discover.sourceCurrent": "In use",
|
|
3217
3246
|
"panels.discover.refresh": "Refresh",
|
|
3218
3247
|
"panels.discover.search": "Search modules",
|
|
3219
3248
|
"panels.discover.all": "All",
|
|
@@ -3225,8 +3254,8 @@ var en = {
|
|
|
3225
3254
|
"panels.discover.sourcePlaceholder": "https://example.com/index.json or git@git.example.com:wb/market.git",
|
|
3226
3255
|
"panels.discover.sourceRef": "Branch",
|
|
3227
3256
|
"panels.discover.sourcePath": "Index file",
|
|
3228
|
-
"panels.discover.sourceLocal": "Local
|
|
3229
|
-
"panels.discover.sourceLocalHint": "Leave empty to
|
|
3257
|
+
"panels.discover.sourceLocal": "Local copy folder (optional)",
|
|
3258
|
+
"panels.discover.sourceLocalHint": "Leave empty to keep it in ~/.dsh/workbench/market-index/.",
|
|
3230
3259
|
"panels.discover.save": "Save and refresh",
|
|
3231
3260
|
"panels.discover.cancel": "Cancel",
|
|
3232
3261
|
"panels.discover.retry": "Retry",
|
|
@@ -3239,9 +3268,9 @@ var en = {
|
|
|
3239
3268
|
"panels.discover.missingIndex": "This repository has no {path} yet.",
|
|
3240
3269
|
"panels.discover.initTitle": "Initialize this repository as a module market index?",
|
|
3241
3270
|
"panels.discover.initCta": "Initialize market index",
|
|
3242
|
-
"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
|
|
3271
|
+
"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.",
|
|
3243
3272
|
"panels.discover.initBranch": "Branch",
|
|
3244
|
-
"panels.discover.initBranchHint": "The index and
|
|
3273
|
+
"panels.discover.initBranchHint": "The index and build files go to this branch; an empty repository gets it created.",
|
|
3245
3274
|
"panels.discover.initBranchBad": "Use only letters, digits, dots, underscores, slashes, or dashes in a branch name.",
|
|
3246
3275
|
"panels.discover.initOk": "Initialize",
|
|
3247
3276
|
"panels.discover.initBusy": "Initializing…",
|
|
@@ -3345,11 +3374,11 @@ var en = {
|
|
|
3345
3374
|
"panels.market.add.doneApplied": "Installed and live.",
|
|
3346
3375
|
"panels.market.add.doneRestart": "Installed — restart once to pick it up.",
|
|
3347
3376
|
"panels.market.add.restartWhy": "Why this needs a restart: {reason}",
|
|
3348
|
-
"panels.market.add.restartWhy.no-hmr": "this configuration only
|
|
3377
|
+
"panels.market.add.restartWhy.no-hmr": "this configuration is only read at startup, so a restart is needed",
|
|
3349
3378
|
"panels.market.add.restartWhy.package-moved": "an installed package now resolves to another directory, or the change replaced something dsh itself provides",
|
|
3350
3379
|
"panels.market.add.restartWhy.host-module": "the change reaches modules dsh itself loaded",
|
|
3351
|
-
"panels.market.add.restartWhy.unmanaged-plugin": "the change reaches a plugin running
|
|
3352
|
-
"panels.market.add.restartWhy.module-comparison": "dsh could not
|
|
3380
|
+
"panels.market.add.restartWhy.unmanaged-plugin": "the change reaches a plugin that is running but not on the install list",
|
|
3381
|
+
"panels.market.add.restartWhy.module-comparison": "dsh could not confirm that the running plugin is the copy installed on this machine",
|
|
3353
3382
|
"panels.market.add.cancelled": "Cancelled.",
|
|
3354
3383
|
"panels.market.add.failed": "Didn't work: {reason}",
|
|
3355
3384
|
"panels.market.add.removed": "It has been removed.",
|
|
@@ -3359,10 +3388,10 @@ var en = {
|
|
|
3359
3388
|
"panels.market.add.removedRestart": "Removed — restart once to finish.",
|
|
3360
3389
|
"panels.market.add.remove": "Remove it",
|
|
3361
3390
|
"panels.market.add.problem.invalidSpec": "That is not a spec we accept: it cannot be empty or start with a dash.",
|
|
3362
|
-
"panels.market.add.problem.alreadyInstalled": "That package is already in
|
|
3391
|
+
"panels.market.add.problem.alreadyInstalled": "That package is already in this workbench (add @version to switch versions).",
|
|
3363
3392
|
"panels.market.add.problem.notFound": "No such package on that source. Try another name or version.",
|
|
3364
3393
|
"panels.market.add.problem.notAPackage": "There is no package at that location. Pick a folder that contains a package.json.",
|
|
3365
|
-
"panels.market.add.problem.notABundle": "It is an npm package, but not a dsh plugin (
|
|
3394
|
+
"panels.market.add.problem.notABundle": "It is an npm package, but not a dsh plugin (dsh cannot find what to load inside it).",
|
|
3366
3395
|
"panels.market.add.problem.network": "The source is unreachable. Check the network and retry.",
|
|
3367
3396
|
"panels.market.add.problem.unknown": "The check did not pass (reason unknown). Open the install details for the raw output, or retry.",
|
|
3368
3397
|
"panels.market.add.reason.invalidSpec": "the spec is not accepted",
|
|
@@ -3370,7 +3399,7 @@ var en = {
|
|
|
3370
3399
|
"panels.market.add.reason.notBundle": "it is not a dsh plugin package",
|
|
3371
3400
|
"panels.market.add.reason.notRemovable": "it ships with the installation and cannot be removed",
|
|
3372
3401
|
"panels.market.add.reason.bundleInUse": "something is still using it",
|
|
3373
|
-
"panels.market.add.reason.stopProfile": "this configuration
|
|
3402
|
+
"panels.market.add.reason.stopProfile": "this configuration needs a restart, so stop the workbench first",
|
|
3374
3403
|
"panels.market.add.reason.staleApproval": "the scripts to allow changed — start over",
|
|
3375
3404
|
"panels.market.add.reason.operationError": "pnpm failed (see the install output)",
|
|
3376
3405
|
"panels.market.add.reason.buildBlocked": "pnpm blocked install scripts",
|
|
@@ -3400,8 +3429,8 @@ var en = {
|
|
|
3400
3429
|
"blocker.forbidden.titleGeneric": "No access",
|
|
3401
3430
|
"blocker.forbidden.hint": "You are signed in, but this project/repo is not permitted for your account.",
|
|
3402
3431
|
"blocker.forbidden.open": "Open permissions page",
|
|
3403
|
-
"blocker.timeout.hint": "The
|
|
3404
|
-
"blocker.exec.hint": "Make sure opencli is installed and
|
|
3432
|
+
"blocker.timeout.hint": "The background browser may not have started; retrying usually helps.",
|
|
3433
|
+
"blocker.exec.hint": "Make sure opencli is installed and runs from your terminal (which opencli).",
|
|
3405
3434
|
"blocker.unknown.title": "Something went wrong",
|
|
3406
3435
|
"panels.reading": "Reading the panel setup…",
|
|
3407
3436
|
"panels.cardBroken": "This module will not render: {unit} ({reason})",
|
|
@@ -3415,7 +3444,7 @@ var en = {
|
|
|
3415
3444
|
"env.elapsed": "Waiting {seconds}s",
|
|
3416
3445
|
"env.stepFailed.install": "install failed",
|
|
3417
3446
|
"env.stepFailed.path": "installed but not found",
|
|
3418
|
-
"env.stepFailed.shell": "
|
|
3447
|
+
"env.stepFailed.shell": "cannot reach the command line",
|
|
3419
3448
|
"env.toolchain.ok": "Looks good",
|
|
3420
3449
|
"env.toolchain.warn": "Almost ready",
|
|
3421
3450
|
"env.opencli.ok": "Ready",
|
|
@@ -3432,10 +3461,10 @@ var en = {
|
|
|
3432
3461
|
"env.fix.title": "How to fix it",
|
|
3433
3462
|
"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.",
|
|
3434
3463
|
"env.fix.whyPath": "The background tool is installed, but this environment cannot find it — usually a PATH or shell-session issue.",
|
|
3435
|
-
"env.fix.whyShell": "The workbench
|
|
3464
|
+
"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.",
|
|
3436
3465
|
"env.fix.step": "Run this in a terminal, then hit Retry:",
|
|
3437
3466
|
"env.fix.stepPath": "Open a new terminal window (or make sure npm’s global bin directory is on PATH), then hit Retry.",
|
|
3438
|
-
"env.fix.stepShell": "Restart the workbench (or dsh); if it keeps happening, the
|
|
3467
|
+
"env.fix.stepShell": "Restart the workbench (or dsh); if it keeps happening, the workbench still cannot reach the command line.",
|
|
3439
3468
|
"env.fix.permission": "Permission denied: rerun with sudo, or point npm’s global directory at your home.",
|
|
3440
3469
|
"env.fix.network": "Network unreachable: check your network or proxy, then retry.",
|
|
3441
3470
|
"env.fix.details": "Details (for troubleshooting)",
|
|
@@ -3464,9 +3493,9 @@ var en = {
|
|
|
3464
3493
|
"env.warm.done": "Ready ({n} sites)",
|
|
3465
3494
|
"env.warm.short": "Could not sign in early this time — nothing breaks; the first read fills it in",
|
|
3466
3495
|
"env.unit.failed": "This module cannot start",
|
|
3467
|
-
"env.unit.failedHint": "It failed while
|
|
3468
|
-
"env.unit.unchecked": "Cannot check: no
|
|
3469
|
-
"env.unit.uncheckedHint": "The module is not the problem — the
|
|
3496
|
+
"env.unit.failedHint": "It failed while starting up; other modules are unaffected.",
|
|
3497
|
+
"env.unit.unchecked": "Cannot check: no command line",
|
|
3498
|
+
"env.unit.uncheckedHint": "The module is not the problem — the workbench cannot reach the command line. Restart the workbench.",
|
|
3470
3499
|
"adapterSet.not-configured": "No adapter set configured; using the default.",
|
|
3471
3500
|
"adapterSet.no-profile": "No profile found, so the adapter set cannot load; using the default.",
|
|
3472
3501
|
"adapterSet.malformed": "An adapter set must be a package name (for example @acme/adapters-set); using the default.",
|
|
@@ -3509,7 +3538,7 @@ var en = {
|
|
|
3509
3538
|
"sidebarEdition.official": "Official",
|
|
3510
3539
|
"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.",
|
|
3511
3540
|
"sidebarEdition.custom": "Custom",
|
|
3512
|
-
"sidebarEdition.customHint": "Built for multi-project work: one project per dropdown, recency-first sessions,
|
|
3541
|
+
"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.",
|
|
3513
3542
|
"sidebarEdition.saving": "Configuring…",
|
|
3514
3543
|
"sidebarEdition.reloadRequired": "Saved. Reload the page to apply — no workbench restart needed.",
|
|
3515
3544
|
"sidebarEdition.reload": "Reload page",
|
|
@@ -3538,25 +3567,25 @@ var en = {
|
|
|
3538
3567
|
"record.act.halt": "Halt",
|
|
3539
3568
|
"approval.record.site": "Site",
|
|
3540
3569
|
"approval.record.what": "Records",
|
|
3541
|
-
"approval.record.lands": "
|
|
3570
|
+
"approval.record.lands": "Saves to",
|
|
3542
3571
|
"approval.record.noUrl": "no site given (this call gets refused)",
|
|
3543
3572
|
"approval.record.oneAction": "one action",
|
|
3544
3573
|
"approval.record.noSwitch": "it will not switch you back (the leftbar footer shows the state)",
|
|
3545
|
-
"approval.longTask.what": "
|
|
3546
|
-
"approval.longTask.signal": "stopping only sends an interrupt signal —
|
|
3574
|
+
"approval.longTask.what": "Task to stop",
|
|
3575
|
+
"approval.longTask.signal": "stopping only sends an interrupt signal — wrapping up the run is up to the module",
|
|
3547
3576
|
"approval.publish.module": "Module",
|
|
3548
3577
|
"approval.publish.target": "Target",
|
|
3549
3578
|
"approval.publish.version": "Version",
|
|
3550
3579
|
"approval.publish.author": "Author",
|
|
3551
|
-
"approval.publish.authorMissing": "unsigned
|
|
3580
|
+
"approval.publish.authorMissing": "unsigned",
|
|
3552
3581
|
"approval.publish.registry": "Registry",
|
|
3553
3582
|
"approval.publish.repo": "Repository",
|
|
3554
3583
|
"approval.publish.branch": "Branch",
|
|
3555
3584
|
"approval.publish.defaultBranch": "default branch",
|
|
3556
|
-
"approval.publish.artifacts": "
|
|
3585
|
+
"approval.publish.artifacts": "Build files",
|
|
3557
3586
|
"approval.publish.index": "Index",
|
|
3558
3587
|
"approval.publish.commits": "Commits",
|
|
3559
|
-
"approval.publish.twoCommits": "
|
|
3588
|
+
"approval.publish.twoCommits": "build files + market.json in 2 commits, one push",
|
|
3560
3589
|
"approval.publish.reading": "Reading…",
|
|
3561
3590
|
"approval.publish.changelog": "Changelog for {version}",
|
|
3562
3591
|
"approval.publish.changelogMissing": "No changelog entry for {version}; publishing will be blocked",
|
|
@@ -3704,15 +3733,14 @@ var dictionaries = {
|
|
|
3704
3733
|
"panels.market.update": "更新",
|
|
3705
3734
|
"panels.market.swapSlow": "还没换上:可能网慢或没装上。再点一次「更新」;一直这样就把 dsh 重启一遍。",
|
|
3706
3735
|
"panels.market.removeSlow": "还没卸掉:可能网慢或卸载没走完。等一下再看;一直这样就把 dsh 重启一遍。",
|
|
3707
|
-
"panels.market.updateNoChange": "
|
|
3736
|
+
"panels.market.updateNoChange": "更新失败:还是 {from};源上最新是 {latest},可以再点一次「更新」。",
|
|
3708
3737
|
"panels.market.updateUnknownVersion": "(问不到)",
|
|
3709
|
-
"panels.market.updateGone": "
|
|
3710
|
-
"panels.market.updateRestored": "
|
|
3738
|
+
"panels.market.updateGone": "更新失败:更新后找不到这个模块。",
|
|
3739
|
+
"panels.market.updateRestored": "更新失败:更新后找不到新版本,已把 {version} 装回去。",
|
|
3711
3740
|
"panels.market.updateBehind": "装上了 {installed},但源上最新是 {latest} —— 没更到最新,可以再点一次。",
|
|
3712
|
-
"panels.market.selfUpdateFailed": "
|
|
3741
|
+
"panels.market.selfUpdateFailed": "工作台更新失败:{reason}",
|
|
3713
3742
|
"panels.market.selfUpdateUnknown": "外部进程没留下原因(看 ~/.dsh/workbench/self-update.log)",
|
|
3714
|
-
"panels.market.selfUpdateRolledBack": "
|
|
3715
|
-
"panels.market.selfUpdateNeedsMigrate": "工作台已更新。旧会话 / 项目不会自动并:先退出所有 dsh,再运行 dsh-workbench migrate(--force 可补并)。",
|
|
3743
|
+
"panels.market.selfUpdateRolledBack": "工作台更新失败,已回滚到 {version}。",
|
|
3716
3744
|
"panels.market.uninstall": "卸载",
|
|
3717
3745
|
"panels.market.uninstallLabel": "卸载 {name}",
|
|
3718
3746
|
"panels.market.installing": "正在安装…",
|
|
@@ -3734,9 +3762,27 @@ var dictionaries = {
|
|
|
3734
3762
|
"panels.market.empty": "暂无可用模块",
|
|
3735
3763
|
"panels.market.sectionPlugins": "已安装 opencli 插件",
|
|
3736
3764
|
"panels.market.moduleOutdated": "有新版",
|
|
3765
|
+
"panels.market.updateNeedsWorkbench": "新版本要先把工作台升级才能用",
|
|
3766
|
+
"panels.market.updateIncompatible": "新版本和当前的工作台不匹配,暂时不能更新",
|
|
3737
3767
|
"panels.market.moduleRefused": "模块版本与工作台不匹配,暂时无法使用",
|
|
3738
3768
|
"panels.market.moduleRestartHint": "重启后生效",
|
|
3739
3769
|
"panels.market.pendingRestart": "重启后生效",
|
|
3770
|
+
"panels.market.pendingFollowUp": "旧数据待迁移",
|
|
3771
|
+
"panels.market.migrationHint": "旧会话和项目还没搬过来",
|
|
3772
|
+
"panels.market.migrateAction": "迁移旧数据",
|
|
3773
|
+
"panels.market.migrating": "正在迁移…",
|
|
3774
|
+
"panels.market.migrateConfirmTitle": "迁移旧数据?",
|
|
3775
|
+
"panels.market.migrateConfirmDetail": "先退出 dsh web / Desktop。迁移只补缺、不覆盖;旧目录保留。",
|
|
3776
|
+
"panels.market.migrateConfirmAck": "我已经退出 dsh web / Desktop",
|
|
3777
|
+
"panels.market.migrateConfirmYes": "开始迁移",
|
|
3778
|
+
"panels.market.migrateDone": "迁移完成:补了 {added} 个项目;重启工作台和 dsh web 后出现。",
|
|
3779
|
+
"panels.market.dismissFollowUp": "不再提醒",
|
|
3780
|
+
"panels.market.dismissing": "正在收起…",
|
|
3781
|
+
"panels.market.dismissFollowUpTitle": "不再提醒这件事?",
|
|
3782
|
+
"panels.market.dismissFollowUpDetail": "提示会从模块市场收起,但不会迁移或删除旧数据。旧会话和项目仍留在旧目录,新版本里看不到;以后需要时仍可运行 dsh-workbench migrate。",
|
|
3783
|
+
"panels.market.dismissFollowUpAck": "我知道旧数据不会自动出现",
|
|
3784
|
+
"panels.market.dismissFollowUpYes": "不再提醒",
|
|
3785
|
+
"panels.market.dismissed": "已不再提醒;旧数据仍在旧目录,需要时仍可运行 dsh-workbench migrate。",
|
|
3740
3786
|
"panels.market.workbenchName": "工作台",
|
|
3741
3787
|
"panels.market.pluginBroken": "这份插件装坏了:认不出它是什么。可以先卸载,再让 agent 按包名重装一次。",
|
|
3742
3788
|
"panels.market.restartNeeded": "新版装好了,重启一次才生效。",
|
|
@@ -3820,7 +3866,7 @@ var dictionaries = {
|
|
|
3820
3866
|
"panels.market.add.exampleTitle": "示例",
|
|
3821
3867
|
"panels.market.add.exampleFill": "填入示例",
|
|
3822
3868
|
"panels.market.add.registryLabel": "安装源",
|
|
3823
|
-
"panels.market.add.registryProfile": "
|
|
3869
|
+
"panels.market.add.registryProfile": "这份工作台配的源",
|
|
3824
3870
|
"panels.market.add.registryPnpm": "pnpm 自己配的源",
|
|
3825
3871
|
"panels.market.add.check": "预检",
|
|
3826
3872
|
"panels.market.add.checking": "正在预检…",
|
|
@@ -3841,12 +3887,16 @@ var dictionaries = {
|
|
|
3841
3887
|
"panels.market.tabs": "模块市场的两个面",
|
|
3842
3888
|
"panels.tab.discover": "发现",
|
|
3843
3889
|
"panels.discover.loading": "正在读取索引",
|
|
3890
|
+
"panels.discover.slowHint": "读取较慢:如有授权提示,先完成它,或换一个索引源。",
|
|
3844
3891
|
"panels.discover.lead": "从索引源浏览模块;装上就能用。",
|
|
3845
3892
|
"panels.discover.addSource": "添加",
|
|
3846
3893
|
"panels.discover.addingSource": "正在添加…",
|
|
3847
3894
|
"panels.discover.addFirstSource": "添加索引源",
|
|
3848
3895
|
"panels.discover.removeSource": "移除",
|
|
3849
3896
|
"panels.discover.removeSourceNamed": "移除 {url}",
|
|
3897
|
+
"panels.discover.useSource": "使用",
|
|
3898
|
+
"panels.discover.useSourceNamed": "使用 {label}",
|
|
3899
|
+
"panels.discover.sourceCurrent": "当前使用",
|
|
3850
3900
|
"panels.discover.refresh": "刷新",
|
|
3851
3901
|
"panels.discover.search": "搜索模块",
|
|
3852
3902
|
"panels.discover.all": "全部",
|
|
@@ -3858,8 +3908,8 @@ var dictionaries = {
|
|
|
3858
3908
|
"panels.discover.sourcePlaceholder": "https://example.com/index.json 或 git@git.example.com:wb/market.git",
|
|
3859
3909
|
"panels.discover.sourceRef": "分支",
|
|
3860
3910
|
"panels.discover.sourcePath": "索引文件",
|
|
3861
|
-
"panels.discover.sourceLocal": "
|
|
3862
|
-
"panels.discover.sourceLocalHint": "
|
|
3911
|
+
"panels.discover.sourceLocal": "本地副本目录(可选)",
|
|
3912
|
+
"panels.discover.sourceLocalHint": "不填就放到 ~/.dsh/workbench/market-index/。",
|
|
3863
3913
|
"panels.discover.save": "保存并刷新",
|
|
3864
3914
|
"panels.discover.cancel": "取消",
|
|
3865
3915
|
"panels.discover.retry": "重试",
|
|
@@ -3872,9 +3922,9 @@ var dictionaries = {
|
|
|
3872
3922
|
"panels.discover.missingIndex": "仓库里还没有索引文件 {path}",
|
|
3873
3923
|
"panels.discover.initTitle": "把这个仓库初始化成模块市场索引?",
|
|
3874
3924
|
"panels.discover.initCta": "初始化成市场索引",
|
|
3875
|
-
"panels.discover.initWhat": "会在 {branch} 分支写 market.json 与 README.md
|
|
3925
|
+
"panels.discover.initWhat": "会在 {branch} 分支写 market.json 与 README.md,提交一次并推上去;之后从这个工作台发布的模块会把打包好的文件提交到 packages/<unit>/。仓库的写权限归它的所有者。",
|
|
3876
3926
|
"panels.discover.initBranch": "分支",
|
|
3877
|
-
"panels.discover.initBranchHint": "
|
|
3927
|
+
"panels.discover.initBranchHint": "索引和打包文件都发到这个分支;空仓库会新建它。",
|
|
3878
3928
|
"panels.discover.initBranchBad": "分支名只能用字母、数字、点、下划线、斜杠或短横线",
|
|
3879
3929
|
"panels.discover.initOk": "初始化",
|
|
3880
3930
|
"panels.discover.initBusy": "正在初始化…",
|
|
@@ -3978,11 +4028,11 @@ var dictionaries = {
|
|
|
3978
4028
|
"panels.market.add.doneApplied": "装好了,已经生效。",
|
|
3979
4029
|
"panels.market.add.doneRestart": "装好了,重启一次才生效。",
|
|
3980
4030
|
"panels.market.add.restartWhy": "为什么这一版要重启:{reason}",
|
|
3981
|
-
"panels.market.add.restartWhy.no-hmr": "
|
|
4031
|
+
"panels.market.add.restartWhy.no-hmr": "这份配置只在启动时读一次,改了得重启",
|
|
3982
4032
|
"panels.market.add.restartWhy.package-moved": "某个已经装着的包换到了新的目录,或者这一下换掉了 dsh 自己提供的那份",
|
|
3983
4033
|
"panels.market.add.restartWhy.host-module": "这一下动到了 dsh 自己加载的模块",
|
|
3984
|
-
"panels.market.add.restartWhy.unmanaged-plugin": "
|
|
3985
|
-
"panels.market.add.restartWhy.module-comparison": "dsh
|
|
4034
|
+
"panels.market.add.restartWhy.unmanaged-plugin": "这一下动到了没登记过、正在运行的插件",
|
|
4035
|
+
"panels.market.add.restartWhy.module-comparison": "dsh 没法确认正在跑的插件就是这台机器上装好的那一份",
|
|
3986
4036
|
"panels.market.add.cancelled": "已取消。",
|
|
3987
4037
|
"panels.market.add.failed": "没成功:{reason}",
|
|
3988
4038
|
"panels.market.add.removed": "已经移除了。",
|
|
@@ -3992,10 +4042,10 @@ var dictionaries = {
|
|
|
3992
4042
|
"panels.market.add.removedRestart": "卸掉了,重启一次才彻底生效。",
|
|
3993
4043
|
"panels.market.add.remove": "移除它",
|
|
3994
4044
|
"panels.market.add.problem.invalidSpec": "这个写法不认:不能是空的,也不能以横杠开头。",
|
|
3995
|
-
"panels.market.add.problem.alreadyInstalled": "
|
|
4045
|
+
"panels.market.add.problem.alreadyInstalled": "这个包已经在这份工作台里了(要换版本请带上 @版本)。",
|
|
3996
4046
|
"panels.market.add.problem.notFound": "源上没有这个包。换个包名或版本再试。",
|
|
3997
4047
|
"panels.market.add.problem.notAPackage": "这个位置没有包。选一个包含 package.json 的目录。",
|
|
3998
|
-
"panels.market.add.problem.notABundle": "它是一个 npm 包,但不是 dsh
|
|
4048
|
+
"panels.market.add.problem.notABundle": "它是一个 npm 包,但不是 dsh 插件包(dsh 在里面找不到该加载什么)。",
|
|
3999
4049
|
"panels.market.add.problem.network": "源连不上。检查网络后重试。",
|
|
4000
4050
|
"panels.market.add.problem.unknown": "预检没通过(原因未知)。展开安装详情看原始输出,或重试。",
|
|
4001
4051
|
"panels.market.add.reason.invalidSpec": "写法不认",
|
|
@@ -4003,7 +4053,7 @@ var dictionaries = {
|
|
|
4003
4053
|
"panels.market.add.reason.notBundle": "它不是一个 dsh 插件包",
|
|
4004
4054
|
"panels.market.add.reason.notRemovable": "它是安装自带的组合包,不能卸",
|
|
4005
4055
|
"panels.market.add.reason.bundleInUse": "还有东西在用它,卸不掉",
|
|
4006
|
-
"panels.market.add.reason.stopProfile": "
|
|
4056
|
+
"panels.market.add.reason.stopProfile": "这份配置改了要重启,得先停掉工作台",
|
|
4007
4057
|
"panels.market.add.reason.staleApproval": "要允许的安装脚本已经变了,重新来一次",
|
|
4008
4058
|
"panels.market.add.reason.operationError": "pnpm 执行出错(详情见安装输出)",
|
|
4009
4059
|
"panels.market.add.reason.buildBlocked": "pnpm 拦下了安装脚本",
|
|
@@ -4026,15 +4076,15 @@ var dictionaries = {
|
|
|
4026
4076
|
"blocker.market.open": "去模块市场",
|
|
4027
4077
|
"blocker.login.title": "需要登录 {platform}",
|
|
4028
4078
|
"blocker.login.titleGeneric": "需要登录",
|
|
4029
|
-
"blocker.login.hint": "
|
|
4079
|
+
"blocker.login.hint": "工作台借你浏览器里的登录状态;登录一次就行,之后不用再登。",
|
|
4030
4080
|
"blocker.login.go": "去登录",
|
|
4031
4081
|
"blocker.login.manual": "在终端执行该插件的登录命令(见插件的文档),按提示完成登录后重试。",
|
|
4032
4082
|
"blocker.forbidden.title": "没有权限访问 {platform}",
|
|
4033
4083
|
"blocker.forbidden.titleGeneric": "没有权限",
|
|
4034
4084
|
"blocker.forbidden.hint": "账号已登录,但没有这个项目/仓库的权限;申请之后再试。",
|
|
4035
4085
|
"blocker.forbidden.open": "打开权限页",
|
|
4036
|
-
"blocker.timeout.hint": "
|
|
4037
|
-
"blocker.exec.hint": "确认 opencli
|
|
4086
|
+
"blocker.timeout.hint": "后台浏览器没起来,重试一次通常就好。",
|
|
4087
|
+
"blocker.exec.hint": "确认 opencli 已经装好、在终端里能直接运行(which opencli)。",
|
|
4038
4088
|
"blocker.unknown.title": "出了点问题",
|
|
4039
4089
|
"panels.reading": "正在读取面板配置…",
|
|
4040
4090
|
"panels.cardBroken": "这个模块起不来:{unit}({reason})",
|
|
@@ -4048,7 +4098,7 @@ var dictionaries = {
|
|
|
4048
4098
|
"env.elapsed": "已等待 {seconds} 秒",
|
|
4049
4099
|
"env.stepFailed.install": "装不上",
|
|
4050
4100
|
"env.stepFailed.path": "装了但还找不到",
|
|
4051
|
-
"env.stepFailed.shell": "
|
|
4101
|
+
"env.stepFailed.shell": "连不上命令行",
|
|
4052
4102
|
"env.toolchain.ok": "正常",
|
|
4053
4103
|
"env.toolchain.warn": "还没完全准备好",
|
|
4054
4104
|
"env.opencli.ok": "已就绪",
|
|
@@ -4065,10 +4115,10 @@ var dictionaries = {
|
|
|
4065
4115
|
"env.fix.title": "怎么解决",
|
|
4066
4116
|
"env.fix.why": "工作台用它自己那份后台工具(与你在终端里那套分开装,互不影响),这台机器上还没装好它。",
|
|
4067
4117
|
"env.fix.whyPath": "后台工具装上了,但当前环境还找不到它 —— 通常是 PATH 或终端会话的问题。",
|
|
4068
|
-
"env.fix.whyShell": "
|
|
4118
|
+
"env.fix.whyShell": "工作台拿不到这台机器的命令行,所以取不了数据 —— 这一步你装不了,需要有人处理后台环境。",
|
|
4069
4119
|
"env.fix.step": "在终端里运行下面这条命令,装好之后点「重试」:",
|
|
4070
4120
|
"env.fix.stepPath": "新开一个终端窗口(或确认 npm 的全局 bin 目录在 PATH 里),然后点「重试」。",
|
|
4071
|
-
"env.fix.stepShell": "重启一次工作台(或 dsh
|
|
4121
|
+
"env.fix.stepShell": "重启一次工作台(或 dsh);如果反复出现,说明工作台还是拿不到命令行。",
|
|
4072
4122
|
"env.fix.permission": "权限不够:在命令前加 sudo 重跑,或先把 npm 的全局目录配到你的用户目录。",
|
|
4073
4123
|
"env.fix.network": "网络不通:检查网络或代理设置后重试。",
|
|
4074
4124
|
"env.fix.details": "详细输出(排障用)",
|
|
@@ -4097,9 +4147,9 @@ var dictionaries = {
|
|
|
4097
4147
|
"env.warm.done": "已就绪({n} 个站点)",
|
|
4098
4148
|
"env.warm.short": "这次没提前连上 —— 不影响用,第一次取数会自己补",
|
|
4099
4149
|
"env.unit.failed": "这个模块起不来",
|
|
4100
|
-
"env.unit.failedHint": "
|
|
4101
|
-
"env.unit.unchecked": "
|
|
4102
|
-
"env.unit.uncheckedHint": "
|
|
4150
|
+
"env.unit.failedHint": "它自己启动时报了错,别的模块不受影响。",
|
|
4151
|
+
"env.unit.unchecked": "检测不了:拿不到命令行",
|
|
4152
|
+
"env.unit.uncheckedHint": "不是这个模块的问题,是工作台拿不到命令行 —— 重启一次工作台再试。",
|
|
4103
4153
|
"adapterSet.not-configured": "没配置适配器集合,用默认的。",
|
|
4104
4154
|
"adapterSet.no-profile": "找不到 profile,没法加载适配器集合;先用默认的。",
|
|
4105
4155
|
"adapterSet.malformed": "适配器集合要写包名(如 @acme/adapters-set);先用默认的。",
|
|
@@ -4142,7 +4192,7 @@ var dictionaries = {
|
|
|
4142
4192
|
"sidebarEdition.official": "官方",
|
|
4143
4193
|
"sidebarEdition.officialHint": "跟 dsh 官方一致、最稳:搜索、视图选项、显示更多、归档、添加工作区都齐,升级也不等我们适配。想省心就选它。",
|
|
4144
4194
|
"sidebarEdition.custom": "自定义",
|
|
4145
|
-
"sidebarEdition.customHint": "
|
|
4195
|
+
"sidebarEdition.customHint": "为多项目工作流做的:项目下拉一屏一个项目,会话按最近更新排,名字自动滚动、两侧渐隐,工坊 DIY 新会话。项目多时更顺手。",
|
|
4146
4196
|
"sidebarEdition.saving": "配置中…",
|
|
4147
4197
|
"sidebarEdition.reloadRequired": "已写入。刷新页面后生效(不用重启工作台)。",
|
|
4148
4198
|
"sidebarEdition.reload": "刷新页面",
|
|
@@ -4171,25 +4221,25 @@ var dictionaries = {
|
|
|
4171
4221
|
"record.act.halt": "停",
|
|
4172
4222
|
"approval.record.site": "站点",
|
|
4173
4223
|
"approval.record.what": "录制功能",
|
|
4174
|
-
"approval.record.lands": "
|
|
4224
|
+
"approval.record.lands": "保存到",
|
|
4175
4225
|
"approval.record.noUrl": "没给站点地址(这次会被当场拒)",
|
|
4176
4226
|
"approval.record.oneAction": "一次操作",
|
|
4177
4227
|
"approval.record.noSwitch": "录完不会替你切回来(左栏底部会亮一条状态)",
|
|
4178
|
-
"approval.longTask.what": "
|
|
4179
|
-
"approval.longTask.signal": "停了只是让工作台发出中断信号 ——
|
|
4228
|
+
"approval.longTask.what": "要停的那次任务",
|
|
4229
|
+
"approval.longTask.signal": "停了只是让工作台发出中断信号 —— 这次任务怎么收尾由模块自己负责",
|
|
4180
4230
|
"approval.publish.module": "模块",
|
|
4181
4231
|
"approval.publish.target": "目标",
|
|
4182
4232
|
"approval.publish.version": "版本",
|
|
4183
4233
|
"approval.publish.author": "作者",
|
|
4184
|
-
"approval.publish.authorMissing": "
|
|
4234
|
+
"approval.publish.authorMissing": "未署名",
|
|
4185
4235
|
"approval.publish.registry": "源",
|
|
4186
4236
|
"approval.publish.repo": "仓库",
|
|
4187
4237
|
"approval.publish.branch": "分支",
|
|
4188
4238
|
"approval.publish.defaultBranch": "默认分支",
|
|
4189
|
-
"approval.publish.artifacts": "
|
|
4239
|
+
"approval.publish.artifacts": "打包文件",
|
|
4190
4240
|
"approval.publish.index": "索引",
|
|
4191
4241
|
"approval.publish.commits": "提交",
|
|
4192
|
-
"approval.publish.twoCommits": "
|
|
4242
|
+
"approval.publish.twoCommits": "打包文件 + market.json 两次提交,一次推送",
|
|
4193
4243
|
"approval.publish.reading": "读取中…",
|
|
4194
4244
|
"approval.publish.changelog": "{version} 的更新日志",
|
|
4195
4245
|
"approval.publish.changelogMissing": "这一版还没有更新日志({version}),发布会被拦下",
|
|
@@ -4965,6 +5015,7 @@ var MARKET_STATE_KEY = {
|
|
|
4965
5015
|
broken: "panels.market.broken",
|
|
4966
5016
|
outdated: "panels.market.moduleOutdated",
|
|
4967
5017
|
"pending-restart": "panels.market.pendingRestart",
|
|
5018
|
+
"pending-followup": "panels.market.pendingFollowUp",
|
|
4968
5019
|
missing: "panels.market.missing",
|
|
4969
5020
|
unchecked: "panels.market.unchecked",
|
|
4970
5021
|
unknown: "panels.market.unchecked"
|
|
@@ -4977,6 +5028,7 @@ var MARKET_DOT = {
|
|
|
4977
5028
|
broken: "error",
|
|
4978
5029
|
outdated: "warning",
|
|
4979
5030
|
"pending-restart": "warning",
|
|
5031
|
+
"pending-followup": "warning",
|
|
4980
5032
|
missing: "idle",
|
|
4981
5033
|
unchecked: "idle",
|
|
4982
5034
|
unknown: "idle"
|
|
@@ -5001,35 +5053,32 @@ function refusalReasons(host, client) {
|
|
|
5001
5053
|
if (reported.length > 0) return reported;
|
|
5002
5054
|
return [...new Set(client ?? [])];
|
|
5003
5055
|
}
|
|
5004
|
-
function
|
|
5005
|
-
|
|
5006
|
-
for (const manifest of manifests) {
|
|
5007
|
-
const titleKey = manifest.card?.titleKey;
|
|
5008
|
-
if (titleKey === void 0 || known.has(manifest.id)) continue;
|
|
5009
|
-
next ??= new Map(known);
|
|
5010
|
-
next.set(manifest.id, titleKey);
|
|
5011
|
-
}
|
|
5012
|
-
return next ?? known;
|
|
5056
|
+
function updateBlockHintOf(block) {
|
|
5057
|
+
return block === "needs-workbench" ? "panels.market.updateNeedsWorkbench" : "panels.market.updateIncompatible";
|
|
5013
5058
|
}
|
|
5014
5059
|
function installedIdSet(installed) {
|
|
5015
5060
|
if (installed === void 0) return null;
|
|
5016
5061
|
return new Set(installed.map((item) => item.unit));
|
|
5017
5062
|
}
|
|
5018
|
-
function installedRows(modules, manifests, listed,
|
|
5063
|
+
function installedRows(modules, manifests, listed, names, defaults = /* @__PURE__ */ new Set(), changed = {}) {
|
|
5019
5064
|
const titles = new Map(manifests.map((manifest) => [manifest.id, manifest.card?.titleKey]));
|
|
5020
5065
|
const rows = [];
|
|
5021
5066
|
for (const module of modules) {
|
|
5022
5067
|
if (listed.has(module.unit)) continue;
|
|
5023
5068
|
const latest = module.local === true ? void 0 : module.latest;
|
|
5024
5069
|
const outdated = latest !== void 0 && latest !== module.installed;
|
|
5070
|
+
const blocked = outdated ? module.latestBlocked : void 0;
|
|
5025
5071
|
const loaded = titles.has(module.unit);
|
|
5026
5072
|
const refused = refusalReasons(module.refused, module.clientRefused);
|
|
5027
5073
|
const pending = !loaded && refused.length === 0;
|
|
5074
|
+
const titleKey = titles.get(module.unit);
|
|
5075
|
+
const remembered = titleKey === void 0 ? names?.get(module.unit) : void 0;
|
|
5028
5076
|
rows.push({
|
|
5029
5077
|
id: module.unit,
|
|
5030
|
-
titleKey:
|
|
5078
|
+
titleKey: titleKey ?? module.unit,
|
|
5079
|
+
...remembered === void 0 ? {} : { label: remembered },
|
|
5031
5080
|
state: outdated ? "outdated" : refused.length > 0 ? "unusable" : pending ? "inactive" : "installed",
|
|
5032
|
-
...pending ? { hint: "panels.market.moduleRestartHint" } : {},
|
|
5081
|
+
...pending ? { hint: "panels.market.moduleRestartHint" } : blocked === void 0 ? {} : { hint: updateBlockHintOf(blocked) },
|
|
5033
5082
|
...refused.length === 0 ? {} : { note: {
|
|
5034
5083
|
key: "panels.market.moduleRefused",
|
|
5035
5084
|
params: {}
|
|
@@ -5037,7 +5086,7 @@ function installedRows(modules, manifests, listed, known, defaults = /* @__PURE_
|
|
|
5037
5086
|
...module.local === true ? { local: true } : {},
|
|
5038
5087
|
pkg: module.pkg,
|
|
5039
5088
|
canInstall: false,
|
|
5040
|
-
canUpdate: outdated,
|
|
5089
|
+
canUpdate: outdated && blocked === void 0,
|
|
5041
5090
|
canUninstall: true,
|
|
5042
5091
|
version: {
|
|
5043
5092
|
installed: module.installed,
|
|
@@ -5045,7 +5094,8 @@ function installedRows(modules, manifests, listed, known, defaults = /* @__PURE_
|
|
|
5045
5094
|
},
|
|
5046
5095
|
...outdated ? { moduleUpdate: {
|
|
5047
5096
|
installed: module.installed,
|
|
5048
|
-
latest
|
|
5097
|
+
latest,
|
|
5098
|
+
...blocked === void 0 ? {} : { blocked }
|
|
5049
5099
|
} } : {},
|
|
5050
5100
|
defaultShown: defaults.has(module.unit),
|
|
5051
5101
|
defaultChanged: changed[module.unit] ?? 0
|
|
@@ -5058,11 +5108,14 @@ function marketSwitchLocked(row) {
|
|
|
5058
5108
|
return SWITCH_LOCKED.has(row.state);
|
|
5059
5109
|
}
|
|
5060
5110
|
function marketActions$1(row) {
|
|
5061
|
-
if (row.workbench === true)
|
|
5111
|
+
if (row.workbench === true) {
|
|
5112
|
+
if (row.followUp !== void 0 && row.state === "pending-followup") return row.followUp.hard ? ["migrate-workbench"] : ["migrate-workbench", "dismiss-followup"];
|
|
5113
|
+
return row.canUpdate ? ["update-workbench"] : [];
|
|
5114
|
+
}
|
|
5062
5115
|
if (row.plugin === true) return [...row.canUpdate ? ["update-plugin"] : [], ...row.canUninstall ? ["uninstall-plugin"] : []];
|
|
5063
5116
|
return [
|
|
5064
5117
|
...row.canInstall ? ["install"] : [],
|
|
5065
|
-
...row.moduleUpdate === void 0 ? row.canUpdate ? ["update"] : [] : ["update-bundle"],
|
|
5118
|
+
...row.moduleUpdate === void 0 ? row.canUpdate ? ["update"] : [] : row.moduleUpdate.blocked === void 0 ? ["update-bundle"] : [],
|
|
5066
5119
|
...row.canUninstall ? [row.pkg === void 0 ? "uninstall" : "remove-bundle"] : []
|
|
5067
5120
|
];
|
|
5068
5121
|
}
|
|
@@ -5140,7 +5193,7 @@ function liveManifests(manifests, capabilities, installed) {
|
|
|
5140
5193
|
return manifests.filter((manifest) => !gone.has(manifest.id));
|
|
5141
5194
|
}
|
|
5142
5195
|
function marketHasUpdates(rows, shared = []) {
|
|
5143
|
-
return rows.some((row) => row.state === "outdated"
|
|
5196
|
+
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");
|
|
5144
5197
|
}
|
|
5145
5198
|
function marketUpdatesOf(modules) {
|
|
5146
5199
|
if (modules === null) return {};
|
|
@@ -5150,6 +5203,7 @@ function marketUpdatesOf(modules) {
|
|
|
5150
5203
|
next[module.unit] = {
|
|
5151
5204
|
installed: module.installed,
|
|
5152
5205
|
...local || module.latest === void 0 ? {} : { latest: module.latest },
|
|
5206
|
+
...local || module.latest === void 0 || module.latestBlocked === void 0 ? {} : { blocked: module.latestBlocked },
|
|
5153
5207
|
...local ? { local: true } : {}
|
|
5154
5208
|
};
|
|
5155
5209
|
}
|
|
@@ -5188,9 +5242,11 @@ function marketRows(manifests, capabilities, updates = {}, defaults = /* @__PURE
|
|
|
5188
5242
|
const reAdopt = capability?.released === true && !installDeclared;
|
|
5189
5243
|
const moduleUpdate = entry === void 0 || entry.latest === void 0 || entry.latest === entry.installed ? void 0 : {
|
|
5190
5244
|
installed: entry.installed,
|
|
5191
|
-
latest: entry.latest
|
|
5245
|
+
latest: entry.latest,
|
|
5246
|
+
...entry.blocked === void 0 ? {} : { blocked: entry.blocked }
|
|
5192
5247
|
};
|
|
5193
5248
|
const shown = moduleUpdate === void 0 ? state : "outdated";
|
|
5249
|
+
const hint = moduleUpdate?.blocked === void 0 ? shown === "unknown" || shown === "unchecked" ? "panels.market.uncheckedHint" : void 0 : updateBlockHintOf(moduleUpdate.blocked);
|
|
5194
5250
|
rows.push({
|
|
5195
5251
|
id: manifest.id,
|
|
5196
5252
|
titleKey: manifest.card?.titleKey ?? manifest.id,
|
|
@@ -5198,7 +5254,7 @@ function marketRows(manifests, capabilities, updates = {}, defaults = /* @__PURE
|
|
|
5198
5254
|
canInstall: state !== "installed" && (install || reAdopt),
|
|
5199
5255
|
canUpdate: onMachine && isOutdated(capability),
|
|
5200
5256
|
canUninstall: onMachine,
|
|
5201
|
-
...
|
|
5257
|
+
...hint === void 0 ? {} : { hint },
|
|
5202
5258
|
...entry === void 0 ? {} : { version: {
|
|
5203
5259
|
installed: entry.installed,
|
|
5204
5260
|
...entry.latest === void 0 ? {} : { latest: entry.latest }
|
|
@@ -5263,11 +5319,14 @@ function workbenchRow(version) {
|
|
|
5263
5319
|
installed: version.installed,
|
|
5264
5320
|
latest
|
|
5265
5321
|
} : void 0;
|
|
5322
|
+
const stale = !local && version.running !== void 0 && version.running !== version.installed;
|
|
5323
|
+
const followUp = version.followUp;
|
|
5324
|
+
const followUpState = !stale && followUp !== void 0;
|
|
5266
5325
|
return {
|
|
5267
5326
|
id: WORKBENCH_ROW_ID,
|
|
5268
5327
|
titleKey: WORKBENCH_TITLE_KEY,
|
|
5269
5328
|
workbench: true,
|
|
5270
|
-
state:
|
|
5329
|
+
state: stale ? "pending-restart" : followUpState ? "pending-followup" : update === void 0 ? "installed" : "outdated",
|
|
5271
5330
|
canInstall: false,
|
|
5272
5331
|
canUpdate: update !== void 0,
|
|
5273
5332
|
canUninstall: false,
|
|
@@ -5277,6 +5336,8 @@ function workbenchRow(version) {
|
|
|
5277
5336
|
...latest === void 0 ? {} : { latest }
|
|
5278
5337
|
},
|
|
5279
5338
|
...update === void 0 ? {} : { moduleUpdate: update },
|
|
5339
|
+
...followUp === void 0 ? {} : { followUp },
|
|
5340
|
+
...followUpState ? { hint: "panels.market.migrationHint" } : {},
|
|
5280
5341
|
pkg: version.pkg
|
|
5281
5342
|
};
|
|
5282
5343
|
}
|
|
@@ -5284,6 +5345,7 @@ function workbenchRow(version) {
|
|
|
5284
5345
|
//#region src/app/layouts/rightbar/market-hint.ts
|
|
5285
5346
|
var PROBLEM_KEY = "panels.market.hasProblem";
|
|
5286
5347
|
var RESTART_KEY = "panels.market.pendingRestart";
|
|
5348
|
+
var FOLLOWUP_KEY = "panels.market.pendingFollowUp";
|
|
5287
5349
|
var UNKNOWN_KEY = "panels.market.unchecked";
|
|
5288
5350
|
var UPDATES_KEY = "panels.market.hasNew";
|
|
5289
5351
|
function isProblem(row) {
|
|
@@ -5314,12 +5376,14 @@ function marketHintOf(input) {
|
|
|
5314
5376
|
];
|
|
5315
5377
|
const problem = rows.some(isProblem);
|
|
5316
5378
|
const restart = rows.some(isRestart) || awaitsRestart(input.manifests, installed);
|
|
5379
|
+
const followUp = rows.some((row) => row.state === "pending-followup");
|
|
5317
5380
|
const rosterRead = input.modules !== null;
|
|
5318
5381
|
const unknown = rows.some((row) => isUnknown(row, rosterRead));
|
|
5319
5382
|
const updates = marketHasUpdates(rows, sharedRows(marketable, input.capabilities));
|
|
5320
5383
|
const more = [];
|
|
5321
5384
|
if (problem) {
|
|
5322
5385
|
if (restart) more.push(RESTART_KEY);
|
|
5386
|
+
if (followUp) more.push(FOLLOWUP_KEY);
|
|
5323
5387
|
if (unknown) more.push(UNKNOWN_KEY);
|
|
5324
5388
|
if (updates) more.push(UPDATES_KEY);
|
|
5325
5389
|
return {
|
|
@@ -5329,6 +5393,7 @@ function marketHintOf(input) {
|
|
|
5329
5393
|
};
|
|
5330
5394
|
}
|
|
5331
5395
|
if (restart) {
|
|
5396
|
+
if (followUp) more.push(FOLLOWUP_KEY);
|
|
5332
5397
|
if (unknown) more.push(UNKNOWN_KEY);
|
|
5333
5398
|
if (updates) more.push(UPDATES_KEY);
|
|
5334
5399
|
return {
|
|
@@ -5337,6 +5402,15 @@ function marketHintOf(input) {
|
|
|
5337
5402
|
...more.length === 0 ? {} : { moreKeys: more }
|
|
5338
5403
|
};
|
|
5339
5404
|
}
|
|
5405
|
+
if (followUp) {
|
|
5406
|
+
if (unknown) more.push(UNKNOWN_KEY);
|
|
5407
|
+
if (updates) more.push(UPDATES_KEY);
|
|
5408
|
+
return {
|
|
5409
|
+
labelKey: FOLLOWUP_KEY,
|
|
5410
|
+
tone: "warning",
|
|
5411
|
+
...more.length === 0 ? {} : { moreKeys: more }
|
|
5412
|
+
};
|
|
5413
|
+
}
|
|
5340
5414
|
if (unknown) {
|
|
5341
5415
|
if (updates) more.push(UPDATES_KEY);
|
|
5342
5416
|
return {
|
|
@@ -5632,114 +5706,118 @@ function useMarketTransient(input) {
|
|
|
5632
5706
|
};
|
|
5633
5707
|
}
|
|
5634
5708
|
var MarketPage_module_default = {
|
|
5635
|
-
marketList: "
|
|
5636
|
-
marketRow: "
|
|
5637
|
-
marketIcon: "
|
|
5638
|
-
marketMain: "
|
|
5639
|
-
marketName: "
|
|
5640
|
-
marketStatus: "
|
|
5641
|
-
marketStateText: "
|
|
5642
|
-
marketSep: "
|
|
5643
|
-
marketReason: "
|
|
5644
|
-
marketVersion: "
|
|
5645
|
-
marketLocalTag: "
|
|
5646
|
-
marketEnd: "
|
|
5647
|
-
marketSwitchSeat: "
|
|
5648
|
-
marketActions: "
|
|
5649
|
-
marketUpdateAction: "
|
|
5650
|
-
marketSelfDivider: "
|
|
5651
|
-
marketSection: "
|
|
5652
|
-
marketSectionHead: "
|
|
5653
|
-
marketSectionIcon: "
|
|
5654
|
-
marketSectionTitle: "
|
|
5655
|
-
marketSectionCount: "
|
|
5656
|
-
marketSectionQuiet: "
|
|
5657
|
-
marketProgress: "
|
|
5658
|
-
marketNote: "
|
|
5659
|
-
marketFailure: "
|
|
5660
|
-
marketEmpty: "
|
|
5661
|
-
marketPage: "
|
|
5662
|
-
marketPageHead: "
|
|
5663
|
-
marketPageTitle: "
|
|
5664
|
-
marketPageIntro: "
|
|
5665
|
-
marketPageTools: "
|
|
5666
|
-
marketPanel: "
|
|
5667
|
-
marketTabs: "
|
|
5668
|
-
marketTabList: "
|
|
5669
|
-
marketIconButton: "
|
|
5670
|
-
marketIconWrap: "
|
|
5671
|
-
marketIconButtonSpinning: "
|
|
5672
|
-
"wb-spin": "_wb-
|
|
5673
|
-
marketAddButton: "
|
|
5674
|
-
marketEmptyTitle: "
|
|
5675
|
-
discoverPage: "
|
|
5676
|
-
discoverBar: "
|
|
5677
|
-
discoverTools: "
|
|
5678
|
-
discoverMarket: "
|
|
5679
|
-
discoverMarketButton: "
|
|
5680
|
-
discoverMarketName: "
|
|
5681
|
-
discoverLabels: "
|
|
5682
|
-
discoverSort: "
|
|
5683
|
-
discoverRefresh: "
|
|
5684
|
-
discoverSearch: "
|
|
5685
|
-
discoverChips: "
|
|
5686
|
-
discoverList: "
|
|
5687
|
-
discoverCard: "
|
|
5688
|
-
discoverArtwork: "
|
|
5689
|
-
discoverArtworkImage: "
|
|
5690
|
-
discoverMain: "
|
|
5691
|
-
discoverTitleRow: "
|
|
5692
|
-
discoverCardOpen: "
|
|
5693
|
-
discoverStrong: "
|
|
5694
|
-
discoverDesc: "
|
|
5695
|
-
discoverMeta: "
|
|
5696
|
-
discoverMuted: "
|
|
5697
|
-
discoverEnd: "
|
|
5698
|
-
discoverBlocked: "
|
|
5699
|
-
discoverEmpty: "
|
|
5700
|
-
discoverEmptyTitle: "
|
|
5701
|
-
discoverDetail: "
|
|
5702
|
-
discoverCrumb: "
|
|
5703
|
-
discoverCrumbIcon: "
|
|
5704
|
-
discoverDetailHead: "
|
|
5705
|
-
discoverDetailTitle: "
|
|
5706
|
-
discoverDetailText: "
|
|
5707
|
-
discoverDetailPanel: "
|
|
5708
|
-
discoverDetailTabs: "
|
|
5709
|
-
discoverDetailTabList: "
|
|
5710
|
-
discoverDocBody: "
|
|
5711
|
-
discoverDocNotice: "
|
|
5712
|
-
discoverSection: "
|
|
5713
|
-
discoverSectionTitle: "
|
|
5714
|
-
discoverFacts: "
|
|
5715
|
-
discoverFactRow: "
|
|
5716
|
-
discoverFactKind: "
|
|
5717
|
-
discoverFactValue: "
|
|
5718
|
-
discoverCode: "
|
|
5719
|
-
discoverTags: "
|
|
5720
|
-
discoverLink: "
|
|
5721
|
-
discoverVersions: "
|
|
5722
|
-
discoverVersionRow: "
|
|
5723
|
-
discoverVersionName: "
|
|
5724
|
-
discoverError: "
|
|
5725
|
-
discoverFailure: "
|
|
5726
|
-
|
|
5727
|
-
|
|
5728
|
-
|
|
5729
|
-
|
|
5730
|
-
|
|
5731
|
-
|
|
5732
|
-
|
|
5733
|
-
|
|
5734
|
-
|
|
5735
|
-
|
|
5736
|
-
|
|
5737
|
-
|
|
5738
|
-
|
|
5739
|
-
|
|
5740
|
-
|
|
5741
|
-
|
|
5742
|
-
|
|
5709
|
+
marketList: "_marketList_bnt61_1",
|
|
5710
|
+
marketRow: "_marketRow_bnt61_10",
|
|
5711
|
+
marketIcon: "_marketIcon_bnt61_20",
|
|
5712
|
+
marketMain: "_marketMain_bnt61_32",
|
|
5713
|
+
marketName: "_marketName_bnt61_39",
|
|
5714
|
+
marketStatus: "_marketStatus_bnt61_48",
|
|
5715
|
+
marketStateText: "_marketStateText_bnt61_58",
|
|
5716
|
+
marketSep: "_marketSep_bnt61_62",
|
|
5717
|
+
marketReason: "_marketReason_bnt61_66",
|
|
5718
|
+
marketVersion: "_marketVersion_bnt61_72",
|
|
5719
|
+
marketLocalTag: "_marketLocalTag_bnt61_94",
|
|
5720
|
+
marketEnd: "_marketEnd_bnt61_105",
|
|
5721
|
+
marketSwitchSeat: "_marketSwitchSeat_bnt61_112",
|
|
5722
|
+
marketActions: "_marketActions_bnt61_125",
|
|
5723
|
+
marketUpdateAction: "_marketUpdateAction_bnt61_131",
|
|
5724
|
+
marketSelfDivider: "_marketSelfDivider_bnt61_137",
|
|
5725
|
+
marketSection: "_marketSection_bnt61_143",
|
|
5726
|
+
marketSectionHead: "_marketSectionHead_bnt61_150",
|
|
5727
|
+
marketSectionIcon: "_marketSectionIcon_bnt61_156",
|
|
5728
|
+
marketSectionTitle: "_marketSectionTitle_bnt61_163",
|
|
5729
|
+
marketSectionCount: "_marketSectionCount_bnt61_169",
|
|
5730
|
+
marketSectionQuiet: "_marketSectionQuiet_bnt61_175",
|
|
5731
|
+
marketProgress: "_marketProgress_bnt61_188",
|
|
5732
|
+
marketNote: "_marketNote_bnt61_198",
|
|
5733
|
+
marketFailure: "_marketFailure_bnt61_205",
|
|
5734
|
+
marketEmpty: "_marketEmpty_bnt61_212",
|
|
5735
|
+
marketPage: "_marketPage_bnt61_217",
|
|
5736
|
+
marketPageHead: "_marketPageHead_bnt61_235",
|
|
5737
|
+
marketPageTitle: "_marketPageTitle_bnt61_243",
|
|
5738
|
+
marketPageIntro: "_marketPageIntro_bnt61_248",
|
|
5739
|
+
marketPageTools: "_marketPageTools_bnt61_254",
|
|
5740
|
+
marketPanel: "_marketPanel_bnt61_263",
|
|
5741
|
+
marketTabs: "_marketTabs_bnt61_273",
|
|
5742
|
+
marketTabList: "_marketTabList_bnt61_278",
|
|
5743
|
+
marketIconButton: "_marketIconButton_bnt61_283",
|
|
5744
|
+
marketIconWrap: "_marketIconWrap_bnt61_308",
|
|
5745
|
+
marketIconButtonSpinning: "_marketIconButtonSpinning_bnt61_312",
|
|
5746
|
+
"wb-spin": "_wb-spin_bnt61_1",
|
|
5747
|
+
marketAddButton: "_marketAddButton_bnt61_316",
|
|
5748
|
+
marketEmptyTitle: "_marketEmptyTitle_bnt61_333",
|
|
5749
|
+
discoverPage: "_discoverPage_bnt61_347",
|
|
5750
|
+
discoverBar: "_discoverBar_bnt61_354",
|
|
5751
|
+
discoverTools: "_discoverTools_bnt61_361",
|
|
5752
|
+
discoverMarket: "_discoverMarket_bnt61_367",
|
|
5753
|
+
discoverMarketButton: "_discoverMarketButton_bnt61_372",
|
|
5754
|
+
discoverMarketName: "_discoverMarketName_bnt61_379",
|
|
5755
|
+
discoverLabels: "_discoverLabels_bnt61_385",
|
|
5756
|
+
discoverSort: "_discoverSort_bnt61_390",
|
|
5757
|
+
discoverRefresh: "_discoverRefresh_bnt61_395",
|
|
5758
|
+
discoverSearch: "_discoverSearch_bnt61_399",
|
|
5759
|
+
discoverChips: "_discoverChips_bnt61_440",
|
|
5760
|
+
discoverList: "_discoverList_bnt61_447",
|
|
5761
|
+
discoverCard: "_discoverCard_bnt61_456",
|
|
5762
|
+
discoverArtwork: "_discoverArtwork_bnt61_470",
|
|
5763
|
+
discoverArtworkImage: "_discoverArtworkImage_bnt61_482",
|
|
5764
|
+
discoverMain: "_discoverMain_bnt61_486",
|
|
5765
|
+
discoverTitleRow: "_discoverTitleRow_bnt61_494",
|
|
5766
|
+
discoverCardOpen: "_discoverCardOpen_bnt61_502",
|
|
5767
|
+
discoverStrong: "_discoverStrong_bnt61_533",
|
|
5768
|
+
discoverDesc: "_discoverDesc_bnt61_539",
|
|
5769
|
+
discoverMeta: "_discoverMeta_bnt61_548",
|
|
5770
|
+
discoverMuted: "_discoverMuted_bnt61_555",
|
|
5771
|
+
discoverEnd: "_discoverEnd_bnt61_561",
|
|
5772
|
+
discoverBlocked: "_discoverBlocked_bnt61_570",
|
|
5773
|
+
discoverEmpty: "_discoverEmpty_bnt61_575",
|
|
5774
|
+
discoverEmptyTitle: "_discoverEmptyTitle_bnt61_584",
|
|
5775
|
+
discoverDetail: "_discoverDetail_bnt61_594",
|
|
5776
|
+
discoverCrumb: "_discoverCrumb_bnt61_600",
|
|
5777
|
+
discoverCrumbIcon: "_discoverCrumbIcon_bnt61_623",
|
|
5778
|
+
discoverDetailHead: "_discoverDetailHead_bnt61_627",
|
|
5779
|
+
discoverDetailTitle: "_discoverDetailTitle_bnt61_633",
|
|
5780
|
+
discoverDetailText: "_discoverDetailText_bnt61_639",
|
|
5781
|
+
discoverDetailPanel: "_discoverDetailPanel_bnt61_646",
|
|
5782
|
+
discoverDetailTabs: "_discoverDetailTabs_bnt61_653",
|
|
5783
|
+
discoverDetailTabList: "_discoverDetailTabList_bnt61_658",
|
|
5784
|
+
discoverDocBody: "_discoverDocBody_bnt61_663",
|
|
5785
|
+
discoverDocNotice: "_discoverDocNotice_bnt61_668",
|
|
5786
|
+
discoverSection: "_discoverSection_bnt61_674",
|
|
5787
|
+
discoverSectionTitle: "_discoverSectionTitle_bnt61_681",
|
|
5788
|
+
discoverFacts: "_discoverFacts_bnt61_687",
|
|
5789
|
+
discoverFactRow: "_discoverFactRow_bnt61_692",
|
|
5790
|
+
discoverFactKind: "_discoverFactKind_bnt61_702",
|
|
5791
|
+
discoverFactValue: "_discoverFactValue_bnt61_708",
|
|
5792
|
+
discoverCode: "_discoverCode_bnt61_716",
|
|
5793
|
+
discoverTags: "_discoverTags_bnt61_725",
|
|
5794
|
+
discoverLink: "_discoverLink_bnt61_732",
|
|
5795
|
+
discoverVersions: "_discoverVersions_bnt61_742",
|
|
5796
|
+
discoverVersionRow: "_discoverVersionRow_bnt61_750",
|
|
5797
|
+
discoverVersionName: "_discoverVersionName_bnt61_758",
|
|
5798
|
+
discoverError: "_discoverError_bnt61_763",
|
|
5799
|
+
discoverFailure: "_discoverFailure_bnt61_772",
|
|
5800
|
+
discoverLoading: "_discoverLoading_bnt61_778",
|
|
5801
|
+
discoverNotice: "_discoverNotice_bnt61_787",
|
|
5802
|
+
discoverMore: "_discoverMore_bnt61_805",
|
|
5803
|
+
discoverDialog: "_discoverDialog_bnt61_809",
|
|
5804
|
+
discoverDialogBody: "_discoverDialogBody_bnt61_813",
|
|
5805
|
+
discoverSourceList: "_discoverSourceList_bnt61_819",
|
|
5806
|
+
discoverSourceRow: "_discoverSourceRow_bnt61_827",
|
|
5807
|
+
discoverSourceCurrent: "_discoverSourceCurrent_bnt61_836",
|
|
5808
|
+
discoverSourceLoading: "_discoverSourceLoading_bnt61_843",
|
|
5809
|
+
discoverSourceHint: "_discoverSourceHint_bnt61_853",
|
|
5810
|
+
discoverSourceError: "_discoverSourceError_bnt61_867",
|
|
5811
|
+
discoverSourceForm: "_discoverSourceForm_bnt61_873",
|
|
5812
|
+
discoverGrow: "_discoverGrow_bnt61_879",
|
|
5813
|
+
discoverField: "_discoverField_bnt61_884",
|
|
5814
|
+
discoverFieldLabel: "_discoverFieldLabel_bnt61_890",
|
|
5815
|
+
discoverConfirmHead: "_discoverConfirmHead_bnt61_895",
|
|
5816
|
+
discoverSkeletonFill: "_discoverSkeletonFill_bnt61_901",
|
|
5817
|
+
"wb-skeleton": "_wb-skeleton_bnt61_1",
|
|
5818
|
+
discoverSkeletonBar: "_discoverSkeletonBar_bnt61_910",
|
|
5819
|
+
discoverSkeletonTitle: "_discoverSkeletonTitle_bnt61_917",
|
|
5820
|
+
discoverSkeletonDesc: "_discoverSkeletonDesc_bnt61_921"
|
|
5743
5821
|
};
|
|
5744
5822
|
//#endregion
|
|
5745
5823
|
//#region src/app/layouts/market/discover-states.tsx
|
|
@@ -5763,6 +5841,13 @@ function DiscoverSkeleton({ label }) {
|
|
|
5763
5841
|
function DiscoverEmptyText({ text }) {
|
|
5764
5842
|
return /* @__PURE__ */ (0, react.createElement)("p", { className: MarketPage_module_default.discoverMuted }, text);
|
|
5765
5843
|
}
|
|
5844
|
+
function DiscoverLoading({ label }) {
|
|
5845
|
+
return /* @__PURE__ */ (0, react.createElement)("p", {
|
|
5846
|
+
className: MarketPage_module_default.discoverLoading,
|
|
5847
|
+
role: "status",
|
|
5848
|
+
"aria-live": "polite"
|
|
5849
|
+
}, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.StateDot, { state: "ongoing" }), label);
|
|
5850
|
+
}
|
|
5766
5851
|
function DiscoverFailure({ t, text, onRetry }) {
|
|
5767
5852
|
return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverFailure }, /* @__PURE__ */ (0, react.createElement)("p", {
|
|
5768
5853
|
className: MarketPage_module_default.discoverError,
|
|
@@ -5831,6 +5916,18 @@ function sharedRowKind(row) {
|
|
|
5831
5916
|
return row.kind === "extension" ? "plugin" : "lib";
|
|
5832
5917
|
}
|
|
5833
5918
|
//#endregion
|
|
5919
|
+
//#region src/app/layouts/rightbar/market-names.ts
|
|
5920
|
+
function namesOf(t, modules, titleOf) {
|
|
5921
|
+
const shown = /* @__PURE__ */ new Map();
|
|
5922
|
+
for (const module of modules) {
|
|
5923
|
+
const key = unitTitleKey(module.unit);
|
|
5924
|
+
const live = t(key);
|
|
5925
|
+
const name = live !== key && live !== "" ? live : titleOf(module.title);
|
|
5926
|
+
if (name !== "") shown.set(module.unit, name);
|
|
5927
|
+
}
|
|
5928
|
+
return shown;
|
|
5929
|
+
}
|
|
5930
|
+
//#endregion
|
|
5834
5931
|
//#region src/app/layouts/rightbar/market-view-text.ts
|
|
5835
5932
|
var PROGRESS_KEY = {
|
|
5836
5933
|
install: "panels.market.installing",
|
|
@@ -5841,7 +5938,9 @@ var PROGRESS_KEY = {
|
|
|
5841
5938
|
"update-dependency": "panels.market.updating",
|
|
5842
5939
|
"update-plugin": "panels.market.updating",
|
|
5843
5940
|
"uninstall-plugin": "panels.market.uninstalling",
|
|
5844
|
-
"update-workbench": "panels.market.updating"
|
|
5941
|
+
"update-workbench": "panels.market.updating",
|
|
5942
|
+
"migrate-workbench": "panels.market.migrating",
|
|
5943
|
+
"dismiss-followup": "panels.market.dismissing"
|
|
5845
5944
|
};
|
|
5846
5945
|
var ACTION_LABEL_KEY = {
|
|
5847
5946
|
install: "panels.market.install",
|
|
@@ -5852,7 +5951,9 @@ var ACTION_LABEL_KEY = {
|
|
|
5852
5951
|
"update-dependency": "panels.market.update",
|
|
5853
5952
|
"update-plugin": "panels.market.update",
|
|
5854
5953
|
"uninstall-plugin": "panels.market.uninstall",
|
|
5855
|
-
"update-workbench": "panels.market.update"
|
|
5954
|
+
"update-workbench": "panels.market.update",
|
|
5955
|
+
"migrate-workbench": "panels.market.migrateAction",
|
|
5956
|
+
"dismiss-followup": "panels.market.dismissFollowUp"
|
|
5856
5957
|
};
|
|
5857
5958
|
function holdOf(pending, application) {
|
|
5858
5959
|
if (pending === null || pending.row === void 0) return void 0;
|
|
@@ -5900,12 +6001,9 @@ function withPinnedRow(rows, pinned) {
|
|
|
5900
6001
|
function marketFootVisible(shown, installed) {
|
|
5901
6002
|
return shown.length > 0 || installed.length > 0;
|
|
5902
6003
|
}
|
|
5903
|
-
|
|
5904
|
-
|
|
5905
|
-
(
|
|
5906
|
-
if (!mocked) setTitles((known) => mergeTitles(known, manifests));
|
|
5907
|
-
}, [manifests, mocked]);
|
|
5908
|
-
return titles;
|
|
6004
|
+
var NO_NAMES = /* @__PURE__ */ new Map();
|
|
6005
|
+
function marketNamesOf(t, modules, titleOf, mocked) {
|
|
6006
|
+
return mocked ? NO_NAMES : namesOf(t, modules, titleOf);
|
|
5909
6007
|
}
|
|
5910
6008
|
function useHeldRow(pending, backInRoster) {
|
|
5911
6009
|
const [held, setHeld] = (0, react.useState)(void 0);
|
|
@@ -5941,10 +6039,11 @@ function pendingRowOf(input) {
|
|
|
5941
6039
|
const { pending, removing } = input;
|
|
5942
6040
|
if (removing === null || pending === null) return void 0;
|
|
5943
6041
|
if (input.rows.some((row) => row.id === removing)) return void 0;
|
|
6042
|
+
const name = pending.label ?? input.names.get(removing);
|
|
5944
6043
|
return {
|
|
5945
6044
|
id: removing,
|
|
5946
|
-
titleKey: pending.titleKey ??
|
|
5947
|
-
...
|
|
6045
|
+
titleKey: pending.titleKey ?? removing,
|
|
6046
|
+
...name === void 0 ? {} : { label: name },
|
|
5948
6047
|
state: "installed",
|
|
5949
6048
|
canInstall: false,
|
|
5950
6049
|
canUpdate: false,
|
|
@@ -6061,49 +6160,120 @@ var updateActions = [
|
|
|
6061
6160
|
"update-plugin",
|
|
6062
6161
|
"update-workbench"
|
|
6063
6162
|
];
|
|
6163
|
+
function MigrationConfirm({ t, onConfirm, onCancel }) {
|
|
6164
|
+
const [acknowledged, setAcknowledged] = (0, react.useState)(false);
|
|
6165
|
+
return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.RiskConfirmation, {
|
|
6166
|
+
open: true,
|
|
6167
|
+
title: t("panels.market.migrateConfirmTitle"),
|
|
6168
|
+
description: t("panels.market.migrateConfirmDetail"),
|
|
6169
|
+
acknowledgeLabel: t("panels.market.migrateConfirmAck"),
|
|
6170
|
+
cancelLabel: t("panels.market.confirmNo"),
|
|
6171
|
+
closeLabel: t("panels.market.confirmNo"),
|
|
6172
|
+
confirmLabel: t("panels.market.migrateConfirmYes"),
|
|
6173
|
+
acknowledged,
|
|
6174
|
+
onAcknowledgedChange: setAcknowledged,
|
|
6175
|
+
onCancel,
|
|
6176
|
+
onConfirm
|
|
6177
|
+
});
|
|
6178
|
+
}
|
|
6179
|
+
function DismissFollowUpConfirm({ t, onConfirm, onCancel }) {
|
|
6180
|
+
const [acknowledged, setAcknowledged] = (0, react.useState)(false);
|
|
6181
|
+
return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.RiskConfirmation, {
|
|
6182
|
+
open: true,
|
|
6183
|
+
title: t("panels.market.dismissFollowUpTitle"),
|
|
6184
|
+
description: t("panels.market.dismissFollowUpDetail"),
|
|
6185
|
+
acknowledgeLabel: t("panels.market.dismissFollowUpAck"),
|
|
6186
|
+
cancelLabel: t("panels.market.confirmNo"),
|
|
6187
|
+
closeLabel: t("panels.market.confirmNo"),
|
|
6188
|
+
confirmLabel: t("panels.market.dismissFollowUpYes"),
|
|
6189
|
+
acknowledged,
|
|
6190
|
+
onAcknowledgedChange: setAcknowledged,
|
|
6191
|
+
onCancel,
|
|
6192
|
+
onConfirm
|
|
6193
|
+
});
|
|
6194
|
+
}
|
|
6195
|
+
function MarketLineDialogs({ t, migrationOpen, dismissOpen, onMigrationCancel, onMigrationConfirm, onDismissCancel, onDismissConfirm }) {
|
|
6196
|
+
return /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, migrationOpen ? /* @__PURE__ */ (0, react.createElement)(MigrationConfirm, {
|
|
6197
|
+
t,
|
|
6198
|
+
onCancel: onMigrationCancel,
|
|
6199
|
+
onConfirm: onMigrationConfirm
|
|
6200
|
+
}) : null, dismissOpen ? /* @__PURE__ */ (0, react.createElement)(DismissFollowUpConfirm, {
|
|
6201
|
+
t,
|
|
6202
|
+
onCancel: onDismissCancel,
|
|
6203
|
+
onConfirm: onDismissConfirm
|
|
6204
|
+
}) : null);
|
|
6205
|
+
}
|
|
6206
|
+
function MarketLineStatus({ t, row, quiet }) {
|
|
6207
|
+
const stateText = t(MARKET_STATE_KEY[row.state]);
|
|
6208
|
+
const noteText = row.note === void 0 ? null : t(row.note.key, row.note.params);
|
|
6209
|
+
if (quiet) return null;
|
|
6210
|
+
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, {
|
|
6211
|
+
state: MARKET_DOT[row.state],
|
|
6212
|
+
size: 9
|
|
6213
|
+
}), /* @__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", {
|
|
6214
|
+
className: MarketPage_module_default.marketSep,
|
|
6215
|
+
"aria-hidden": "true"
|
|
6216
|
+
}, "·"), /* @__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", {
|
|
6217
|
+
className: MarketPage_module_default.marketSep,
|
|
6218
|
+
"aria-hidden": "true"
|
|
6219
|
+
}, "·"), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketReason }, noteText)));
|
|
6220
|
+
}
|
|
6064
6221
|
function MarketLine({ t, row, pending, failure, onAct, onDefault, boardBusy }) {
|
|
6065
6222
|
const running = pending !== null && pending.id === row.id ? pending : null;
|
|
6066
6223
|
const locked = pending !== null;
|
|
6224
|
+
const [migrationOpen, setMigrationOpen] = (0, react.useState)(false);
|
|
6225
|
+
const [dismissOpen, setDismissOpen] = (0, react.useState)(false);
|
|
6067
6226
|
const quiet = row.workbench === true && row.state === "installed" && row.hint === void 0;
|
|
6068
6227
|
const actions = marketActions$1(row);
|
|
6069
6228
|
const switchLocked = marketSwitchLocked(row);
|
|
6070
|
-
const stateText = t(MARKET_STATE_KEY[row.state]);
|
|
6071
|
-
const noteText = row.note === void 0 ? null : t(row.note.key, row.note.params);
|
|
6072
6229
|
return /* @__PURE__ */ (0, react.createElement)("li", { className: MarketPage_module_default.marketRow }, /* @__PURE__ */ (0, react.createElement)("span", {
|
|
6073
6230
|
className: MarketPage_module_default.marketIcon,
|
|
6074
6231
|
"aria-hidden": "true"
|
|
6075
6232
|
}, 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", {
|
|
6076
6233
|
from: row.version.installed,
|
|
6077
6234
|
to: row.version.latest
|
|
6078
|
-
}) : row.version.installed ?? row.version.latest ?? ""), row.local === true ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketLocalTag }, t("panels.market.localMark")) : null),
|
|
6079
|
-
|
|
6080
|
-
|
|
6081
|
-
|
|
6082
|
-
|
|
6083
|
-
"aria-hidden": "true"
|
|
6084
|
-
}, "·"), /* @__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", {
|
|
6085
|
-
className: MarketPage_module_default.marketSep,
|
|
6086
|
-
"aria-hidden": "true"
|
|
6087
|
-
}, "·"), /* @__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) => {
|
|
6235
|
+
}) : 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, {
|
|
6236
|
+
t,
|
|
6237
|
+
row,
|
|
6238
|
+
quiet
|
|
6239
|
+
})), /* @__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) => {
|
|
6088
6240
|
const danger = dangerActions.includes(action);
|
|
6089
6241
|
const update = updateActions.includes(action);
|
|
6090
6242
|
return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
6091
6243
|
key: action,
|
|
6092
6244
|
type: "button",
|
|
6093
6245
|
size: "sm",
|
|
6094
|
-
variant: action === "install" ? "primary" : "outline",
|
|
6246
|
+
variant: action === "install" || action === "migrate-workbench" ? "primary" : "outline",
|
|
6095
6247
|
className: danger ? "wb-dangerAction" : update ? MarketPage_module_default.marketUpdateAction : void 0,
|
|
6096
6248
|
icon: danger ? /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconTrashOutlineRegular, { size: 13 }) : void 0,
|
|
6097
6249
|
"aria-label": danger ? t("panels.market.uninstallLabel", { name: marketRowTitle(row, t) }) : void 0,
|
|
6098
6250
|
disabled: locked,
|
|
6099
|
-
onClick: () =>
|
|
6251
|
+
onClick: () => {
|
|
6252
|
+
if (action === "migrate-workbench") setMigrationOpen(true);
|
|
6253
|
+
else if (action === "dismiss-followup") setDismissOpen(true);
|
|
6254
|
+
else onAct(action);
|
|
6255
|
+
}
|
|
6100
6256
|
}, t(ACTION_LABEL_KEY[action]));
|
|
6101
6257
|
})), 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, {
|
|
6102
6258
|
checked: row.defaultShown,
|
|
6103
6259
|
disabled: boardBusy === true || locked || switchLocked,
|
|
6104
6260
|
label: `${marketRowTitle(row, t)} · ${t("panels.market.defaultLabel")}`,
|
|
6105
6261
|
onChange: (next) => onDefault?.(next)
|
|
6106
|
-
})))), failure === null ? null : /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketFailure }, failure))
|
|
6262
|
+
})))), failure === null ? null : /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketFailure }, failure), /* @__PURE__ */ (0, react.createElement)(MarketLineDialogs, {
|
|
6263
|
+
t,
|
|
6264
|
+
migrationOpen,
|
|
6265
|
+
dismissOpen,
|
|
6266
|
+
onMigrationCancel: () => setMigrationOpen(false),
|
|
6267
|
+
onMigrationConfirm: () => {
|
|
6268
|
+
setMigrationOpen(false);
|
|
6269
|
+
onAct("migrate-workbench");
|
|
6270
|
+
},
|
|
6271
|
+
onDismissCancel: () => setDismissOpen(false),
|
|
6272
|
+
onDismissConfirm: () => {
|
|
6273
|
+
setDismissOpen(false);
|
|
6274
|
+
onAct("dismiss-followup");
|
|
6275
|
+
}
|
|
6276
|
+
}));
|
|
6107
6277
|
}
|
|
6108
6278
|
function MarketSection({ t, titleKey, icon, rows, pending, failureOf, act, confirmActions, onConfirming, onDefault, boardBusy }) {
|
|
6109
6279
|
if (rows.length === 0) return null;
|
|
@@ -6418,10 +6588,13 @@ function marketActOf(options) {
|
|
|
6418
6588
|
seats.setConfirming(null);
|
|
6419
6589
|
seats.setFailed(null);
|
|
6420
6590
|
seats.setNotice(null);
|
|
6421
|
-
const outcome = await send(action === "
|
|
6591
|
+
const outcome = await send(action === "dismiss-followup" ? {
|
|
6592
|
+
action,
|
|
6593
|
+
id: row?.followUp?.id ?? ""
|
|
6594
|
+
} : action === "update-dependency" ? {
|
|
6422
6595
|
action,
|
|
6423
6596
|
id
|
|
6424
|
-
} : action === "remove-bundle" || action === "update-plugin" || action === "uninstall-plugin" || action === "update-workbench" ? {
|
|
6597
|
+
} : action === "remove-bundle" || action === "update-plugin" || action === "uninstall-plugin" || action === "update-workbench" || action === "migrate-workbench" ? {
|
|
6425
6598
|
action,
|
|
6426
6599
|
name: row?.pkg ?? ""
|
|
6427
6600
|
} : {
|
|
@@ -6439,6 +6612,21 @@ function marketActOf(options) {
|
|
|
6439
6612
|
return;
|
|
6440
6613
|
}
|
|
6441
6614
|
const value = outcome.value;
|
|
6615
|
+
if (action === "dismiss-followup") {
|
|
6616
|
+
onChanged({ force: true });
|
|
6617
|
+
seats.setPending(null);
|
|
6618
|
+
seats.setHeld(void 0);
|
|
6619
|
+
seats.setNotice(t("panels.market.dismissed"));
|
|
6620
|
+
return;
|
|
6621
|
+
}
|
|
6622
|
+
if (action === "migrate-workbench") {
|
|
6623
|
+
const added = recordOf(value)?.["added"];
|
|
6624
|
+
onChanged({ force: true });
|
|
6625
|
+
seats.setPending(null);
|
|
6626
|
+
seats.setHeld(void 0);
|
|
6627
|
+
seats.setNotice(t("panels.market.migrateDone", { added: typeof added === "number" ? String(added) : "0" }));
|
|
6628
|
+
return;
|
|
6629
|
+
}
|
|
6442
6630
|
const change = changeOf(value);
|
|
6443
6631
|
const failure = updateVerdictText(updateVerdictOf({
|
|
6444
6632
|
action,
|
|
@@ -6493,9 +6681,6 @@ var CONFIRM_UNINSTALL = [
|
|
|
6493
6681
|
"remove-bundle",
|
|
6494
6682
|
"uninstall-plugin"
|
|
6495
6683
|
];
|
|
6496
|
-
function marketMigrationNotice(t, update) {
|
|
6497
|
-
return update?.migration === "needed" ? t("panels.market.selfUpdateNeedsMigrate") : null;
|
|
6498
|
-
}
|
|
6499
6684
|
function ConfirmUninstall({ t, name, onConfirm, onCancel }) {
|
|
6500
6685
|
const [acknowledged, setAcknowledged] = (0, react.useState)(false);
|
|
6501
6686
|
return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.RiskConfirmation, {
|
|
@@ -6565,8 +6750,8 @@ function MarketBody({ t, self, shown, pluginList, installedList, shared, pending
|
|
|
6565
6750
|
}));
|
|
6566
6751
|
}
|
|
6567
6752
|
function useMarketScene(input) {
|
|
6568
|
-
const { manifests, installable, capabilities, updates, installed, settling, mock, defaults, changed, pending, failed } = input;
|
|
6569
|
-
const
|
|
6753
|
+
const { t, titleOf, manifests, installable, capabilities, updates, installed, settling, mock, defaults, changed, pending, failed } = input;
|
|
6754
|
+
const names = marketNamesOf(t, installed ?? [], titleOf, mock !== void 0);
|
|
6570
6755
|
const catalog = mock?.manifests ?? manifests;
|
|
6571
6756
|
const marketable = mock === void 0 ? marketCatalog(manifests, installable) : catalog;
|
|
6572
6757
|
const effective = mock === void 0 ? capabilities : mock.capabilities;
|
|
@@ -6580,13 +6765,13 @@ function useMarketScene(input) {
|
|
|
6580
6765
|
const pinned = pinnedRowOf(pending, steady.held);
|
|
6581
6766
|
const busyId = heldIdOf(pending, steady.held);
|
|
6582
6767
|
return {
|
|
6583
|
-
|
|
6768
|
+
names,
|
|
6584
6769
|
catalog,
|
|
6585
6770
|
effective,
|
|
6586
6771
|
updateMap,
|
|
6587
6772
|
rows,
|
|
6588
6773
|
shared,
|
|
6589
|
-
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)),
|
|
6774
|
+
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),
|
|
6590
6775
|
byDefault,
|
|
6591
6776
|
steady,
|
|
6592
6777
|
pinned,
|
|
@@ -6594,12 +6779,14 @@ function useMarketScene(input) {
|
|
|
6594
6779
|
busyId
|
|
6595
6780
|
};
|
|
6596
6781
|
}
|
|
6597
|
-
function MarketView({ t, manifests, installable, capabilities, freshness, onChanged, onPending, updates, installed, installedRead, workbench, selfUpdate, plugins, settling, mock, defaults = [], changed = {} }) {
|
|
6782
|
+
function MarketView({ t, titleOf, manifests, installable, capabilities, freshness, onChanged, onPending, updates, installed, installedRead, workbench, selfUpdate, plugins, settling, mock, defaults = [], changed = {} }) {
|
|
6598
6783
|
const { pending, setPending, confirming, setConfirming, failed, setFailed, notice, setNotice } = useMarketTransient({
|
|
6599
6784
|
mock,
|
|
6600
6785
|
onPending
|
|
6601
6786
|
});
|
|
6602
|
-
const {
|
|
6787
|
+
const { names, effective, updateMap, rows, shared, installedList, byDefault, steady, pinned, removing, busyId } = useMarketScene({
|
|
6788
|
+
t,
|
|
6789
|
+
titleOf,
|
|
6603
6790
|
manifests,
|
|
6604
6791
|
installable,
|
|
6605
6792
|
capabilities,
|
|
@@ -6644,7 +6831,7 @@ function MarketView({ t, manifests, installable, capabilities, freshness, onChan
|
|
|
6644
6831
|
pending,
|
|
6645
6832
|
removing,
|
|
6646
6833
|
rows,
|
|
6647
|
-
|
|
6834
|
+
names
|
|
6648
6835
|
});
|
|
6649
6836
|
const self = workbenchRow(mock === void 0 ? workbench : mock.workbench);
|
|
6650
6837
|
const shown = withPinnedRow(pendingRow === void 0 ? rows : [...rows, pendingRow], pinned);
|
|
@@ -6672,21 +6859,18 @@ function MarketView({ t, manifests, installable, capabilities, freshness, onChan
|
|
|
6672
6859
|
send: (body) => provision.send(body),
|
|
6673
6860
|
onChanged
|
|
6674
6861
|
});
|
|
6675
|
-
const landed = pendingLanded(pending, updateMap, effective, workbench?.installed, shared, pluginSource === null ? null : pluginList, {
|
|
6676
|
-
units: installed === void 0 ? null : new Set(installed.map((module) => module.unit)),
|
|
6677
|
-
plugins: pluginSource === null ? null : new Set(pluginList.map((row) => row.id))
|
|
6678
|
-
});
|
|
6679
|
-
const effectiveSelfUpdate = mock?.selfUpdate ?? selfUpdate;
|
|
6680
6862
|
useSettleHold({
|
|
6681
6863
|
pending,
|
|
6682
|
-
landed,
|
|
6864
|
+
landed: pendingLanded(pending, updateMap, effective, workbench?.installed, shared, pluginSource === null ? null : pluginList, {
|
|
6865
|
+
units: installed === void 0 ? null : new Set(installed.map((module) => module.unit)),
|
|
6866
|
+
plugins: pluginSource === null ? null : new Set(pluginList.map((row) => row.id))
|
|
6867
|
+
}),
|
|
6683
6868
|
t,
|
|
6684
6869
|
onChanged,
|
|
6685
|
-
selfUpdate:
|
|
6870
|
+
selfUpdate: mock?.selfUpdate ?? selfUpdate,
|
|
6686
6871
|
setPending,
|
|
6687
6872
|
setFailed
|
|
6688
6873
|
});
|
|
6689
|
-
const migrationNotice = marketMigrationNotice(t, effectiveSelfUpdate);
|
|
6690
6874
|
const settled = marketSettled(freshness, installedRead);
|
|
6691
6875
|
const nothing = shown.length === 0 && self === void 0 && installedList.length === 0 && pluginList.length === 0;
|
|
6692
6876
|
if (!settled || (settling?.size ?? 0) > 0 && shown.length === 0 && installedList.length === 0) return /* @__PURE__ */ (0, react.createElement)(MarketChecking, { t });
|
|
@@ -6700,7 +6884,7 @@ function MarketView({ t, manifests, installable, capabilities, freshness, onChan
|
|
|
6700
6884
|
shared,
|
|
6701
6885
|
pending,
|
|
6702
6886
|
failed,
|
|
6703
|
-
notice
|
|
6887
|
+
notice,
|
|
6704
6888
|
act,
|
|
6705
6889
|
onConfirming: setConfirming,
|
|
6706
6890
|
setDefault,
|
|
@@ -6916,7 +7100,7 @@ function sourceFromUrl(raw) {
|
|
|
6916
7100
|
if (url === "" || url.includes("#") || hasCredentials(url)) return { ok: false };
|
|
6917
7101
|
if (HTTP.test(url)) {
|
|
6918
7102
|
const asGit = REPO_FILE.test(url);
|
|
6919
|
-
const label = hostOf(url);
|
|
7103
|
+
const label = asGit ? sourceSuffix(url) || hostOf(url) : hostOf(url);
|
|
6920
7104
|
if (label === "") return { ok: false };
|
|
6921
7105
|
return {
|
|
6922
7106
|
ok: true,
|
|
@@ -6949,6 +7133,13 @@ function sameSourceUrl(left, right) {
|
|
|
6949
7133
|
function sourceSuffix(url) {
|
|
6950
7134
|
return (withoutTrailingSlash(url).split(/[/:]/).filter((part) => part !== "").pop() ?? "").replace(/\.git$/, "");
|
|
6951
7135
|
}
|
|
7136
|
+
function sourceTransport(url) {
|
|
7137
|
+
if (GIT_SSH.test(url) || /^ssh:\/\//i.test(url) || /^git\+ssh:\/\//i.test(url)) return "ssh";
|
|
7138
|
+
if (/^git:\/\//i.test(url)) return "git";
|
|
7139
|
+
if (/^https:\/\//i.test(url)) return "https";
|
|
7140
|
+
if (/^http:\/\//i.test(url)) return "http";
|
|
7141
|
+
return "";
|
|
7142
|
+
}
|
|
6952
7143
|
function sourceLabelsOf(sources) {
|
|
6953
7144
|
const counts = /* @__PURE__ */ new Map();
|
|
6954
7145
|
for (const source of sources) counts.set(source.label, (counts.get(source.label) ?? 0) + 1);
|
|
@@ -6959,7 +7150,8 @@ function sourceLabelsOf(sources) {
|
|
|
6959
7150
|
continue;
|
|
6960
7151
|
}
|
|
6961
7152
|
const suffix = sourceSuffix(source.url);
|
|
6962
|
-
|
|
7153
|
+
const detail = suffix !== "" && suffix !== source.label ? suffix : sourceTransport(source.url);
|
|
7154
|
+
labels.set(source.id, detail === "" ? source.url : `${detail} · ${source.label}`);
|
|
6963
7155
|
}
|
|
6964
7156
|
return labels;
|
|
6965
7157
|
}
|
|
@@ -7086,11 +7278,15 @@ function DiscoverVersions({ t, locale, entry, onInstall }) {
|
|
|
7086
7278
|
var MARKET_DISCOVER_ROUTE = "panels/market-discover";
|
|
7087
7279
|
var MARKET_DOC_ROUTE = "panels/market-doc";
|
|
7088
7280
|
var MARKET_PUBLISH_PREVIEW_ROUTE = "panels/market-publish-preview";
|
|
7281
|
+
var MARKET_SOURCES_ROUTE = "panels/market-sources";
|
|
7089
7282
|
//#endregion
|
|
7090
7283
|
//#region src/shared/hooks/market-queries.ts
|
|
7091
7284
|
function readMarketDiscover(options = {}) {
|
|
7092
7285
|
return apiGet(MARKET_DISCOVER_ROUTE, options.force === true ? { force: "1" } : {});
|
|
7093
7286
|
}
|
|
7287
|
+
function readMarketSources() {
|
|
7288
|
+
return apiGet(MARKET_SOURCES_ROUTE);
|
|
7289
|
+
}
|
|
7094
7290
|
function readMarketDoc(name, version, kind) {
|
|
7095
7291
|
return apiGet(MARKET_DOC_ROUTE, {
|
|
7096
7292
|
name,
|
|
@@ -7098,10 +7294,11 @@ function readMarketDoc(name, version, kind) {
|
|
|
7098
7294
|
kind
|
|
7099
7295
|
});
|
|
7100
7296
|
}
|
|
7101
|
-
function readPublishPreview(unit, version) {
|
|
7297
|
+
function readPublishPreview(unit, version, author) {
|
|
7102
7298
|
return apiGet(MARKET_PUBLISH_PREVIEW_ROUTE, {
|
|
7103
7299
|
unit,
|
|
7104
|
-
...version === void 0 || version === "" ? {} : { version }
|
|
7300
|
+
...version === void 0 || version === "" ? {} : { version },
|
|
7301
|
+
...author === void 0 || author === "" ? {} : { author }
|
|
7105
7302
|
});
|
|
7106
7303
|
}
|
|
7107
7304
|
//#endregion
|
|
@@ -7355,6 +7552,7 @@ function DiscoverSourcesDialog(props) {
|
|
|
7355
7552
|
const [url, setUrl] = (0, react.useState)("");
|
|
7356
7553
|
const [problem, setProblem] = (0, react.useState)(null);
|
|
7357
7554
|
const pending = props.busy || props.adding;
|
|
7555
|
+
const selectedVisible = props.sources.some((source) => source.id === props.selected);
|
|
7358
7556
|
const add = () => {
|
|
7359
7557
|
if (pending) return;
|
|
7360
7558
|
const parsed = sourceFromUrl(url);
|
|
@@ -7377,13 +7575,29 @@ function DiscoverSourcesDialog(props) {
|
|
|
7377
7575
|
closeLabel: t("panels.discover.close"),
|
|
7378
7576
|
description: t("panels.discover.sourcesIntro"),
|
|
7379
7577
|
className: MarketPage_module_default.discoverDialog
|
|
7380
|
-
}, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverDialogBody }, props.
|
|
7578
|
+
}, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverDialogBody }, props.loading && !selectedVisible ? props.slow ? /* @__PURE__ */ (0, react.createElement)("p", {
|
|
7579
|
+
className: MarketPage_module_default.discoverNotice,
|
|
7580
|
+
role: "note"
|
|
7581
|
+
}, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
|
|
7582
|
+
size: 14,
|
|
7583
|
+
"aria-hidden": "true"
|
|
7584
|
+
}), /* @__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", {
|
|
7381
7585
|
className: MarketPage_module_default.discoverSourceList,
|
|
7382
7586
|
"aria-label": t("panels.discover.sourcesLabel")
|
|
7383
7587
|
}, props.sources.map((source) => /* @__PURE__ */ (0, react.createElement)("li", {
|
|
7384
7588
|
key: source.id,
|
|
7385
7589
|
className: MarketPage_module_default.discoverSourceRow
|
|
7386
|
-
}, /* @__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.
|
|
7590
|
+
}, /* @__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, {
|
|
7591
|
+
type: "button",
|
|
7592
|
+
variant: "ghost",
|
|
7593
|
+
size: "sm",
|
|
7594
|
+
"aria-label": t("panels.discover.useSourceNamed", { label: source.label }),
|
|
7595
|
+
disabled: pending,
|
|
7596
|
+
onClick: () => {
|
|
7597
|
+
props.onSelect(source.id);
|
|
7598
|
+
props.onClose();
|
|
7599
|
+
}
|
|
7600
|
+
}, t("panels.discover.useSource")), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
7387
7601
|
label: t("panels.discover.removeSource"),
|
|
7388
7602
|
side: "bottom",
|
|
7389
7603
|
portal: true,
|
|
@@ -7396,7 +7610,13 @@ function DiscoverSourcesDialog(props) {
|
|
|
7396
7610
|
"aria-label": t("panels.discover.removeSourceNamed", { url: source.url }),
|
|
7397
7611
|
disabled: pending,
|
|
7398
7612
|
onClick: () => props.onRemove(source.id)
|
|
7399
|
-
}))
|
|
7613
|
+
})), source.id === props.selected && props.loading && props.slow ? /* @__PURE__ */ (0, react.createElement)("span", {
|
|
7614
|
+
className: MarketPage_module_default.discoverSourceHint,
|
|
7615
|
+
role: "note"
|
|
7616
|
+
}, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
|
|
7617
|
+
size: 12,
|
|
7618
|
+
"aria-hidden": "true"
|
|
7619
|
+
}), t("panels.discover.slowHint")) : null))), /* @__PURE__ */ (0, react.createElement)("form", {
|
|
7400
7620
|
className: MarketPage_module_default.discoverSourceForm,
|
|
7401
7621
|
onSubmit: (event) => {
|
|
7402
7622
|
event.preventDefault();
|
|
@@ -7439,12 +7659,16 @@ function DiscoverDialogs({ t, d }) {
|
|
|
7439
7659
|
t,
|
|
7440
7660
|
open: d.manageOpen,
|
|
7441
7661
|
sources: d.sources,
|
|
7662
|
+
selected: d.selected,
|
|
7663
|
+
loading: d.loading,
|
|
7664
|
+
slow: d.slow,
|
|
7442
7665
|
problem: d.problem,
|
|
7443
7666
|
busy: d.busy,
|
|
7444
7667
|
adding: d.addingSource,
|
|
7445
7668
|
onClose: () => d.setManageOpen(false),
|
|
7446
7669
|
onAdd: d.addSource,
|
|
7447
|
-
onRemove: d.removeSourceById
|
|
7670
|
+
onRemove: d.removeSourceById,
|
|
7671
|
+
onSelect: d.selectSource
|
|
7448
7672
|
}), /* @__PURE__ */ (0, react.createElement)(DiscoverConfirm, {
|
|
7449
7673
|
t,
|
|
7450
7674
|
locale: d.locale,
|
|
@@ -7541,6 +7765,7 @@ function DiscoverToolbar(props) {
|
|
|
7541
7765
|
value: text,
|
|
7542
7766
|
placeholder: t("panels.discover.search"),
|
|
7543
7767
|
"aria-label": t("panels.discover.search"),
|
|
7768
|
+
disabled: props.loading,
|
|
7544
7769
|
onChange: (event) => setText(event.currentTarget.value)
|
|
7545
7770
|
}), props.labels.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Menu, {
|
|
7546
7771
|
className: MarketPage_module_default.discoverLabels,
|
|
@@ -7589,6 +7814,7 @@ function DiscoverToolbar(props) {
|
|
|
7589
7814
|
variant: "ghost",
|
|
7590
7815
|
"aria-haspopup": "menu",
|
|
7591
7816
|
"aria-expanded": open === "sort",
|
|
7817
|
+
disabled: props.loading,
|
|
7592
7818
|
onClick: () => setOpen(open === "sort" ? null : "sort")
|
|
7593
7819
|
}, t("panels.discover.sortWith", { label: sortName }), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutlineRegular, {
|
|
7594
7820
|
size: 12,
|
|
@@ -7627,6 +7853,12 @@ var SHIPPED = [
|
|
|
7627
7853
|
"restart-required",
|
|
7628
7854
|
"overridden"
|
|
7629
7855
|
];
|
|
7856
|
+
function sourceRowsOf(sources) {
|
|
7857
|
+
return sources.map((source) => ({
|
|
7858
|
+
...source,
|
|
7859
|
+
writable: source.kind === "http" ? false : null
|
|
7860
|
+
}));
|
|
7861
|
+
}
|
|
7630
7862
|
function installVerdictOf(value, t) {
|
|
7631
7863
|
const change = changeOf(value);
|
|
7632
7864
|
if (change === void 0) return { kind: "quiet" };
|
|
@@ -7640,6 +7872,7 @@ function installVerdictOf(value, t) {
|
|
|
7640
7872
|
function useDiscover(t, active, onInstalled) {
|
|
7641
7873
|
const [payload, setPayload] = (0, react.useState)(null);
|
|
7642
7874
|
const [loading, setLoading] = (0, react.useState)(true);
|
|
7875
|
+
const [slow, setSlow] = (0, react.useState)(false);
|
|
7643
7876
|
const [failure, setFailure] = (0, react.useState)(null);
|
|
7644
7877
|
const [query, setQuery] = (0, react.useState)("");
|
|
7645
7878
|
const [category, setCategory] = (0, react.useState)(null);
|
|
@@ -7652,7 +7885,10 @@ function useDiscover(t, active, onInstalled) {
|
|
|
7652
7885
|
const [choice, setChoice] = (0, react.useState)(null);
|
|
7653
7886
|
const [notice, setNotice] = (0, react.useState)(null);
|
|
7654
7887
|
const [addingSource, setAddingSource] = (0, react.useState)(false);
|
|
7888
|
+
const [knownSources, setKnownSources] = (0, react.useState)(null);
|
|
7655
7889
|
const loaded = (0, react.useRef)(false);
|
|
7890
|
+
const loadTicket = (0, react.useRef)(0);
|
|
7891
|
+
const sourceTicket = (0, react.useRef)(0);
|
|
7656
7892
|
const locale = (0, react.useMemo)(() => localeNow(), []);
|
|
7657
7893
|
const sources = useHostWrite({
|
|
7658
7894
|
channel: "actions",
|
|
@@ -7663,11 +7899,27 @@ function useDiscover(t, active, onInstalled) {
|
|
|
7663
7899
|
channel: "provision",
|
|
7664
7900
|
networkText: t("panels.discover.failed")
|
|
7665
7901
|
});
|
|
7902
|
+
const loadSources = (0, react.useCallback)(async () => {
|
|
7903
|
+
const ticket = sourceTicket.current + 1;
|
|
7904
|
+
sourceTicket.current = ticket;
|
|
7905
|
+
const response = await readMarketSources().catch(() => null);
|
|
7906
|
+
if (sourceTicket.current !== ticket) return;
|
|
7907
|
+
if (response === null || !response.ok) return;
|
|
7908
|
+
setKnownSources({
|
|
7909
|
+
sources: sourceRowsOf(response.sources),
|
|
7910
|
+
selected: response.selected
|
|
7911
|
+
});
|
|
7912
|
+
}, []);
|
|
7666
7913
|
const load = (0, react.useCallback)(async (force = false) => {
|
|
7914
|
+
const ticket = loadTicket.current + 1;
|
|
7915
|
+
loadTicket.current = ticket;
|
|
7667
7916
|
setLoading(true);
|
|
7917
|
+
setSlow(false);
|
|
7668
7918
|
setFailure(null);
|
|
7669
7919
|
const response = await readMarketDiscover({ force }).catch(() => null);
|
|
7920
|
+
if (loadTicket.current !== ticket) return;
|
|
7670
7921
|
setLoading(false);
|
|
7922
|
+
setSlow(false);
|
|
7671
7923
|
if (response === null || !response.ok) {
|
|
7672
7924
|
setFailure(t("panels.discover.unreadable"));
|
|
7673
7925
|
return;
|
|
@@ -7675,11 +7927,29 @@ function useDiscover(t, active, onInstalled) {
|
|
|
7675
7927
|
setPayload(response);
|
|
7676
7928
|
setLimit(50);
|
|
7677
7929
|
}, [t]);
|
|
7930
|
+
const beginSwitch = () => {
|
|
7931
|
+
loadTicket.current += 1;
|
|
7932
|
+
sourceTicket.current += 1;
|
|
7933
|
+
setFailure(null);
|
|
7934
|
+
setPayload(null);
|
|
7935
|
+
setLoading(true);
|
|
7936
|
+
setSlow(false);
|
|
7937
|
+
};
|
|
7678
7938
|
(0, react.useEffect)(() => {
|
|
7679
7939
|
if (!active || loaded.current) return;
|
|
7680
7940
|
loaded.current = true;
|
|
7941
|
+
loadSources();
|
|
7681
7942
|
load();
|
|
7682
|
-
}, [
|
|
7943
|
+
}, [
|
|
7944
|
+
active,
|
|
7945
|
+
load,
|
|
7946
|
+
loadSources
|
|
7947
|
+
]);
|
|
7948
|
+
(0, react.useEffect)(() => {
|
|
7949
|
+
if (!loading) return void 0;
|
|
7950
|
+
const timer = setTimeout(() => setSlow(true), 8e3);
|
|
7951
|
+
return () => clearTimeout(timer);
|
|
7952
|
+
}, [loading]);
|
|
7683
7953
|
(0, react.useEffect)(() => subscribeFactRevision(CAPABILITY_FACT, () => {
|
|
7684
7954
|
if (!loaded.current) return;
|
|
7685
7955
|
load(true);
|
|
@@ -7733,6 +8003,8 @@ function useDiscover(t, active, onInstalled) {
|
|
|
7733
8003
|
const done = typeof value?.["branch"] === "string" ? value["branch"] : branch;
|
|
7734
8004
|
setInitOpen(false);
|
|
7735
8005
|
setNotice(t("panels.discover.initDone", { branch: done }));
|
|
8006
|
+
beginSwitch();
|
|
8007
|
+
await loadSources();
|
|
7736
8008
|
await load(true);
|
|
7737
8009
|
});
|
|
7738
8010
|
};
|
|
@@ -7750,8 +8022,11 @@ function useDiscover(t, active, onInstalled) {
|
|
|
7750
8022
|
id
|
|
7751
8023
|
},
|
|
7752
8024
|
select: true
|
|
7753
|
-
}).then(
|
|
7754
|
-
if (outcome.ok)
|
|
8025
|
+
}).then((outcome) => {
|
|
8026
|
+
if (!outcome.ok) return;
|
|
8027
|
+
beginSwitch();
|
|
8028
|
+
loadSources();
|
|
8029
|
+
load(true);
|
|
7755
8030
|
}).finally(() => setAddingSource(false));
|
|
7756
8031
|
};
|
|
7757
8032
|
const removeSourceById = (id) => {
|
|
@@ -7763,6 +8038,8 @@ function useDiscover(t, active, onInstalled) {
|
|
|
7763
8038
|
}).then(async (outcome) => {
|
|
7764
8039
|
if (!outcome.ok) return;
|
|
7765
8040
|
setDetail(null);
|
|
8041
|
+
beginSwitch();
|
|
8042
|
+
await loadSources();
|
|
7766
8043
|
await load(true);
|
|
7767
8044
|
});
|
|
7768
8045
|
};
|
|
@@ -7775,11 +8052,23 @@ function useDiscover(t, active, onInstalled) {
|
|
|
7775
8052
|
setSelectedLabels([]);
|
|
7776
8053
|
setSort("default");
|
|
7777
8054
|
setDetail(null);
|
|
8055
|
+
beginSwitch();
|
|
8056
|
+
setKnownSources((current) => current === null ? current : {
|
|
8057
|
+
sources: current.sources,
|
|
8058
|
+
selected: id
|
|
8059
|
+
});
|
|
7778
8060
|
sources.send({
|
|
7779
8061
|
action: "select",
|
|
7780
8062
|
id
|
|
7781
8063
|
}).then(async (outcome) => {
|
|
7782
|
-
if (outcome.ok)
|
|
8064
|
+
if (!outcome.ok) {
|
|
8065
|
+
setLoading(false);
|
|
8066
|
+
setSlow(false);
|
|
8067
|
+
loadSources();
|
|
8068
|
+
return;
|
|
8069
|
+
}
|
|
8070
|
+
await loadSources();
|
|
8071
|
+
await load(true);
|
|
7783
8072
|
});
|
|
7784
8073
|
};
|
|
7785
8074
|
const install = () => {
|
|
@@ -7814,9 +8103,10 @@ function useDiscover(t, active, onInstalled) {
|
|
|
7814
8103
|
locale,
|
|
7815
8104
|
payload,
|
|
7816
8105
|
loading,
|
|
8106
|
+
slow,
|
|
7817
8107
|
failure,
|
|
7818
|
-
sources: payload?.sources ?? [],
|
|
7819
|
-
selected: payload?.selected ?? null,
|
|
8108
|
+
sources: payload?.sources ?? knownSources?.sources ?? [],
|
|
8109
|
+
selected: payload?.selected ?? knownSources?.selected ?? null,
|
|
7820
8110
|
entries,
|
|
7821
8111
|
shown,
|
|
7822
8112
|
total: sorted.length,
|
|
@@ -7887,35 +8177,45 @@ function DiscoverPanel({ t, active, onInstalled, onShowInstalled }) {
|
|
|
7887
8177
|
t,
|
|
7888
8178
|
d
|
|
7889
8179
|
});
|
|
7890
|
-
|
|
8180
|
+
const slowHint = !d.manageOpen && d.loading && d.slow ? /* @__PURE__ */ (0, react.createElement)("p", {
|
|
8181
|
+
className: MarketPage_module_default.discoverNotice,
|
|
8182
|
+
role: "note"
|
|
8183
|
+
}, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
|
|
8184
|
+
size: 14,
|
|
8185
|
+
"aria-hidden": "true"
|
|
8186
|
+
}), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.slowHint"))) : null;
|
|
8187
|
+
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, {
|
|
7891
8188
|
t,
|
|
7892
8189
|
text: t("panels.discover.sourcesFailed"),
|
|
7893
8190
|
onRetry: d.reload
|
|
7894
|
-
}), dialogs);
|
|
8191
|
+
}), slowHint, d.writeFailed === null ? null : /* @__PURE__ */ (0, react.createElement)("p", { className: MarketPage_module_default.discoverError }, d.writeFailed), dialogs);
|
|
7895
8192
|
if (d.payload.state === "no-source") return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverPage }, /* @__PURE__ */ (0, react.createElement)(DiscoverNoSource, {
|
|
7896
8193
|
t,
|
|
7897
8194
|
onAdd: () => d.setManageOpen(true)
|
|
7898
8195
|
}), dialogs);
|
|
7899
|
-
const
|
|
8196
|
+
const failed = d.payload.state === "invalid" || d.payload.state === "unreadable";
|
|
8197
|
+
const readFailed = !d.loading && failed ? d.payload.state === "invalid" ? t("panels.discover.invalid") : t("panels.discover.unreadable") : null;
|
|
8198
|
+
const uninitialized = d.loading ? null : d.uninitialized;
|
|
8199
|
+
const retrying = d.loading && failed;
|
|
7900
8200
|
const emptyText = unfiltered({
|
|
7901
8201
|
query: d.query,
|
|
7902
8202
|
category: d.category,
|
|
7903
8203
|
labels: d.selectedLabels
|
|
7904
8204
|
}) ? t("panels.discover.empty") : t("panels.discover.noMatch");
|
|
7905
|
-
return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverPage }, toolbar, d.payload.stale === true ? /* @__PURE__ */ (0, react.createElement)("p", {
|
|
8205
|
+
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", {
|
|
7906
8206
|
className: MarketPage_module_default.discoverNotice,
|
|
7907
8207
|
role: "note"
|
|
7908
8208
|
}, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
|
|
7909
8209
|
size: 14,
|
|
7910
8210
|
"aria-hidden": "true"
|
|
7911
|
-
}), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.stale"))) : null,
|
|
8211
|
+
}), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.stale"))) : null, uninitialized === null ? readFailed === null ? null : /* @__PURE__ */ (0, react.createElement)(DiscoverFailure, {
|
|
7912
8212
|
t,
|
|
7913
8213
|
text: readFailed,
|
|
7914
8214
|
onRetry: d.reload
|
|
7915
8215
|
}) : /* @__PURE__ */ (0, react.createElement)(DiscoverUninitialized, {
|
|
7916
8216
|
t,
|
|
7917
|
-
path:
|
|
7918
|
-
empty:
|
|
8217
|
+
path: uninitialized.path,
|
|
8218
|
+
empty: uninitialized.empty,
|
|
7919
8219
|
onInit: () => d.setInitOpen(true)
|
|
7920
8220
|
}), d.notice === null ? null : /* @__PURE__ */ (0, react.createElement)("p", {
|
|
7921
8221
|
className: MarketPage_module_default.discoverNotice,
|
|
@@ -7934,7 +8234,7 @@ function DiscoverPanel({ t, active, onInstalled, onShowInstalled }) {
|
|
|
7934
8234
|
version
|
|
7935
8235
|
}),
|
|
7936
8236
|
onShowInstalled
|
|
7937
|
-
}) : readFailed !== null ||
|
|
8237
|
+
}) : readFailed !== null || uninitialized !== null || retrying ? null : d.shown.length === 0 ? /* @__PURE__ */ (0, react.createElement)(DiscoverEmptyText, { text: emptyText }) : /* @__PURE__ */ (0, react.createElement)(DiscoverRows, {
|
|
7938
8238
|
t,
|
|
7939
8239
|
locale: d.locale,
|
|
7940
8240
|
entries: d.shown,
|
|
@@ -8715,7 +9015,7 @@ function newRequestId() {
|
|
|
8715
9015
|
return crypto.randomUUID();
|
|
8716
9016
|
}
|
|
8717
9017
|
function useAddModule(options) {
|
|
8718
|
-
const {
|
|
9018
|
+
const { onInstalled, failedText } = options;
|
|
8719
9019
|
const [spec, setSpec] = (0, react.useState)("");
|
|
8720
9020
|
const [choice, setChoice] = (0, react.useState)({
|
|
8721
9021
|
kind: "default",
|
|
@@ -8746,7 +9046,6 @@ function useAddModule(options) {
|
|
|
8746
9046
|
networkText: failedText
|
|
8747
9047
|
});
|
|
8748
9048
|
(0, react.useEffect)(() => {
|
|
8749
|
-
if (!open) return void 0;
|
|
8750
9049
|
let alive = true;
|
|
8751
9050
|
readBundleRegistries().then((response) => {
|
|
8752
9051
|
if (!alive) return;
|
|
@@ -8755,19 +9054,8 @@ function useAddModule(options) {
|
|
|
8755
9054
|
return () => {
|
|
8756
9055
|
alive = false;
|
|
8757
9056
|
};
|
|
8758
|
-
}, [
|
|
9057
|
+
}, []);
|
|
8759
9058
|
const registry = registryOf(choice, custom);
|
|
8760
|
-
(0, react.useEffect)(() => {
|
|
8761
|
-
if (open) return;
|
|
8762
|
-
generationRef.current += 1;
|
|
8763
|
-
setGuideOpen(false);
|
|
8764
|
-
setRegistryOpen(false);
|
|
8765
|
-
setProblem(null);
|
|
8766
|
-
setPreview(null);
|
|
8767
|
-
setOutcome(null);
|
|
8768
|
-
setFailure(null);
|
|
8769
|
-
setPhase("idle");
|
|
8770
|
-
}, [open]);
|
|
8771
9059
|
const check = (0, react.useCallback)(() => {
|
|
8772
9060
|
const wanted = spec.trim();
|
|
8773
9061
|
if (wanted === "") return;
|
|
@@ -8904,15 +9192,21 @@ function useAddModule(options) {
|
|
|
8904
9192
|
//#endregion
|
|
8905
9193
|
//#region src/app/layouts/market/AddModuleDialog.tsx
|
|
8906
9194
|
function AddModuleDialog({ t, open, onClose, onInstalled }) {
|
|
9195
|
+
if (!open) return null;
|
|
9196
|
+
return /* @__PURE__ */ (0, react.createElement)(AddModuleContent, {
|
|
9197
|
+
t,
|
|
9198
|
+
onClose,
|
|
9199
|
+
onInstalled
|
|
9200
|
+
});
|
|
9201
|
+
}
|
|
9202
|
+
function AddModuleContent({ t, onClose, onInstalled }) {
|
|
8907
9203
|
const real = useAddModule({
|
|
8908
|
-
open,
|
|
8909
9204
|
onInstalled,
|
|
8910
9205
|
failedText: t("panels.failed")
|
|
8911
9206
|
});
|
|
8912
9207
|
const devAdd = devSurface.useStrips("addModule", []);
|
|
8913
9208
|
const mock = devAdd.current;
|
|
8914
9209
|
const state = mock === void 0 ? real : devSurface.addModuleState(real, mock);
|
|
8915
|
-
if (!open) return null;
|
|
8916
9210
|
const installing = state.phase === "installing";
|
|
8917
9211
|
const checking = state.phase === "inspecting";
|
|
8918
9212
|
const empty = state.spec.trim() === "";
|
|
@@ -8972,7 +9266,7 @@ function AddModuleDialog({ t, open, onClose, onInstalled }) {
|
|
|
8972
9266
|
onClick: () => state.install()
|
|
8973
9267
|
}, t("panels.market.add.retry")) : null) : null);
|
|
8974
9268
|
return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
|
|
8975
|
-
open,
|
|
9269
|
+
open: true,
|
|
8976
9270
|
onClose: () => {
|
|
8977
9271
|
if (!installing) onClose();
|
|
8978
9272
|
},
|
|
@@ -9045,7 +9339,7 @@ function makeMarketEntryIcon(units) {
|
|
|
9045
9339
|
return /* @__PURE__ */ (0, react.createElement)(IconModules, { size });
|
|
9046
9340
|
};
|
|
9047
9341
|
}
|
|
9048
|
-
function MarketPanel({ t, units }) {
|
|
9342
|
+
function MarketPanel({ t, units, titleOf }) {
|
|
9049
9343
|
const manifests = useLiveManifests(units);
|
|
9050
9344
|
const installable = useInstallableUnits(units);
|
|
9051
9345
|
const { capabilities, checkedAt, checking, forceProbe, reload: reloadCapability } = useCapabilityMap(0);
|
|
@@ -9143,6 +9437,7 @@ function MarketPanel({ t, units }) {
|
|
|
9143
9437
|
}, /* @__PURE__ */ (0, react.createElement)(MarketView, {
|
|
9144
9438
|
key: `${mock?.id ?? "real-market"}-${mockNonce}`,
|
|
9145
9439
|
t,
|
|
9440
|
+
titleOf,
|
|
9146
9441
|
manifests,
|
|
9147
9442
|
installable,
|
|
9148
9443
|
capabilities,
|
|
@@ -9178,6 +9473,10 @@ function MarketPanel({ t, units }) {
|
|
|
9178
9473
|
}
|
|
9179
9474
|
function registerMarketPanel(ctx, units) {
|
|
9180
9475
|
const t = ctx.locale.bind(LOCALE_NS);
|
|
9476
|
+
const titleOf = (title) => title === void 0 ? "" : ctx.locale.resolveText?.({
|
|
9477
|
+
zh: title.zh,
|
|
9478
|
+
en: title.en
|
|
9479
|
+
}) ?? title.zh;
|
|
9181
9480
|
ctx.slots.inject("sidebar.panellist", () => ctx.slots.register({
|
|
9182
9481
|
name: "sidebar.panellist",
|
|
9183
9482
|
id: MARKET_PANEL_ID,
|
|
@@ -9189,7 +9488,10 @@ function registerMarketPanel(ctx, units) {
|
|
|
9189
9488
|
name: "main",
|
|
9190
9489
|
key: MARKET_PANEL_ID,
|
|
9191
9490
|
locale: LOCALE_NS,
|
|
9192
|
-
inject: () => ({
|
|
9491
|
+
inject: () => ({
|
|
9492
|
+
units,
|
|
9493
|
+
titleOf
|
|
9494
|
+
})
|
|
9193
9495
|
}, MarketPanel));
|
|
9194
9496
|
}
|
|
9195
9497
|
//#endregion
|
|
@@ -9241,6 +9543,14 @@ function flush() {
|
|
|
9241
9543
|
}).catch(() => void 0);
|
|
9242
9544
|
}
|
|
9243
9545
|
//#endregion
|
|
9546
|
+
//#region src/shared/hooks/resource-view.ts
|
|
9547
|
+
var IDLE = { phase: "idle" };
|
|
9548
|
+
var LOADING = { phase: "loading" };
|
|
9549
|
+
function resourceViewOf(enabled, current, identity) {
|
|
9550
|
+
if (!enabled) return IDLE;
|
|
9551
|
+
return current.identity === identity ? current.state : LOADING;
|
|
9552
|
+
}
|
|
9553
|
+
//#endregion
|
|
9244
9554
|
//#region src/shared/hooks/use-api-resource.ts
|
|
9245
9555
|
var use_api_resource_exports = /* @__PURE__ */ __exportAll({
|
|
9246
9556
|
readKeyOf: () => readKeyOf,
|
|
@@ -9312,7 +9622,10 @@ function useApiResource(route, query, refreshToken, options = {}) {
|
|
|
9312
9622
|
const identity = resourceIdentity(route, query, options.key);
|
|
9313
9623
|
const factRev = useFactRevision(options.fact ?? factOfRoute(route));
|
|
9314
9624
|
const key = readKeyOf(identity, refreshToken, factRev);
|
|
9315
|
-
const [
|
|
9625
|
+
const [current, setCurrent] = (0, react.useState)(() => ({
|
|
9626
|
+
identity,
|
|
9627
|
+
state: enabled ? LOADING : IDLE
|
|
9628
|
+
}));
|
|
9316
9629
|
const lastIdentity = (0, react.useRef)(null);
|
|
9317
9630
|
const queryRef = (0, react.useRef)(query);
|
|
9318
9631
|
(0, react.useEffect)(() => {
|
|
@@ -9321,17 +9634,23 @@ function useApiResource(route, query, refreshToken, options = {}) {
|
|
|
9321
9634
|
(0, react.useEffect)(() => {
|
|
9322
9635
|
if (!enabled) {
|
|
9323
9636
|
lastIdentity.current = null;
|
|
9324
|
-
setState({ phase: "idle" });
|
|
9325
9637
|
return;
|
|
9326
9638
|
}
|
|
9327
9639
|
let cancelled = false;
|
|
9640
|
+
const put = (state) => setCurrent({
|
|
9641
|
+
identity,
|
|
9642
|
+
state
|
|
9643
|
+
});
|
|
9328
9644
|
const sameIdentity = lastIdentity.current === identity;
|
|
9329
9645
|
lastIdentity.current = identity;
|
|
9330
|
-
|
|
9331
|
-
|
|
9332
|
-
|
|
9333
|
-
|
|
9334
|
-
|
|
9646
|
+
setCurrent((prev) => ({
|
|
9647
|
+
identity,
|
|
9648
|
+
state: sameIdentity && prev.state.value !== void 0 ? {
|
|
9649
|
+
phase: "loading",
|
|
9650
|
+
value: prev.state.value,
|
|
9651
|
+
...prev.state.at === void 0 ? {} : { at: prev.state.at }
|
|
9652
|
+
} : LOADING
|
|
9653
|
+
}));
|
|
9335
9654
|
const flight = requestResource(route, queryRef.current, key);
|
|
9336
9655
|
const owner = options.report === false ? null : unitOfRoute(route);
|
|
9337
9656
|
if (owner !== null) reportPanelRead({
|
|
@@ -9342,7 +9661,7 @@ function useApiResource(route, query, refreshToken, options = {}) {
|
|
|
9342
9661
|
flight.task.then((response) => {
|
|
9343
9662
|
if (cancelled) return;
|
|
9344
9663
|
if (response.ok) {
|
|
9345
|
-
|
|
9664
|
+
put({
|
|
9346
9665
|
phase: "ready",
|
|
9347
9666
|
value: response,
|
|
9348
9667
|
at: Date.now()
|
|
@@ -9354,7 +9673,7 @@ function useApiResource(route, query, refreshToken, options = {}) {
|
|
|
9354
9673
|
});
|
|
9355
9674
|
return;
|
|
9356
9675
|
}
|
|
9357
|
-
|
|
9676
|
+
put({
|
|
9358
9677
|
phase: "error",
|
|
9359
9678
|
error: response.error
|
|
9360
9679
|
});
|
|
@@ -9370,7 +9689,7 @@ function useApiResource(route, query, refreshToken, options = {}) {
|
|
|
9370
9689
|
}).catch((reason) => {
|
|
9371
9690
|
if (cancelled) return;
|
|
9372
9691
|
const message = reason instanceof Error ? reason.message : String(reason);
|
|
9373
|
-
|
|
9692
|
+
put({
|
|
9374
9693
|
phase: "error",
|
|
9375
9694
|
error: {
|
|
9376
9695
|
code: "network",
|
|
@@ -9401,7 +9720,7 @@ function useApiResource(route, query, refreshToken, options = {}) {
|
|
|
9401
9720
|
options.fact,
|
|
9402
9721
|
options.report
|
|
9403
9722
|
]);
|
|
9404
|
-
return
|
|
9723
|
+
return resourceViewOf(enabled, current, identity);
|
|
9405
9724
|
}
|
|
9406
9725
|
//#endregion
|
|
9407
9726
|
//#region src/shared/hooks/use-diy-debug.ts
|
|
@@ -10448,6 +10767,26 @@ function assembleClientUnits(registry) {
|
|
|
10448
10767
|
for (const face of CLIENT_UNITS) registry.register(face);
|
|
10449
10768
|
}
|
|
10450
10769
|
//#endregion
|
|
10770
|
+
//#region src/app/units/unit-titles.ts
|
|
10771
|
+
var UNIT_TITLES_OWNER = "dsh-workbench";
|
|
10772
|
+
function unitTitlesOf(manifests) {
|
|
10773
|
+
const zh = {};
|
|
10774
|
+
const en = {};
|
|
10775
|
+
for (const manifest of manifests) {
|
|
10776
|
+
const title = manifest.title;
|
|
10777
|
+
if (title === void 0 || title.zh.trim() === "" || title.en.trim() === "") continue;
|
|
10778
|
+
zh[unitTitleKey(manifest.id)] = title.zh;
|
|
10779
|
+
en[unitTitleKey(manifest.id)] = title.en;
|
|
10780
|
+
}
|
|
10781
|
+
return {
|
|
10782
|
+
unit: UNIT_TITLES_OWNER,
|
|
10783
|
+
messages: {
|
|
10784
|
+
zh,
|
|
10785
|
+
en
|
|
10786
|
+
}
|
|
10787
|
+
};
|
|
10788
|
+
}
|
|
10789
|
+
//#endregion
|
|
10451
10790
|
//#region src/kernel/client/board-registry.ts
|
|
10452
10791
|
function createBoardRegistry() {
|
|
10453
10792
|
const modules = [];
|
|
@@ -10523,6 +10862,10 @@ function createClientUnitRegistry(options = {}) {
|
|
|
10523
10862
|
let installableIds = null;
|
|
10524
10863
|
let revision = 0;
|
|
10525
10864
|
let manifestsCache;
|
|
10865
|
+
let titleSignature = "";
|
|
10866
|
+
function titlesOf(manifests) {
|
|
10867
|
+
return manifests.flatMap((manifest) => manifest.title === void 0 ? [] : [`${manifest.id}=${manifest.title.zh}/${manifest.title.en}`]).join("|");
|
|
10868
|
+
}
|
|
10526
10869
|
function notify() {
|
|
10527
10870
|
revision += 1;
|
|
10528
10871
|
for (const listener of [...listeners]) try {
|
|
@@ -10602,7 +10945,10 @@ function createClientUnitRegistry(options = {}) {
|
|
|
10602
10945
|
for (const entry of registrations) {
|
|
10603
10946
|
const next = known.get(entry.unit);
|
|
10604
10947
|
if (entry.mounted === null) {
|
|
10605
|
-
if (next !== void 0
|
|
10948
|
+
if (next !== void 0) {
|
|
10949
|
+
attach(entry);
|
|
10950
|
+
changed = true;
|
|
10951
|
+
}
|
|
10606
10952
|
continue;
|
|
10607
10953
|
}
|
|
10608
10954
|
if (next === void 0) {
|
|
@@ -10611,6 +10957,11 @@ function createClientUnitRegistry(options = {}) {
|
|
|
10611
10957
|
changed = true;
|
|
10612
10958
|
}
|
|
10613
10959
|
}
|
|
10960
|
+
const titles = titlesOf(manifests);
|
|
10961
|
+
if (titles !== titleSignature) {
|
|
10962
|
+
titleSignature = titles;
|
|
10963
|
+
changed = true;
|
|
10964
|
+
}
|
|
10614
10965
|
if (!changed) return;
|
|
10615
10966
|
manifestsCache = void 0;
|
|
10616
10967
|
notify();
|
|
@@ -11381,6 +11732,7 @@ function publishRows(args, preview, t) {
|
|
|
11381
11732
|
const unit = textOf(args, "unit");
|
|
11382
11733
|
const target = textOf(args, "target");
|
|
11383
11734
|
const version = textOf(args, "version");
|
|
11735
|
+
const author = textOf(args, "author");
|
|
11384
11736
|
const rows = [
|
|
11385
11737
|
{
|
|
11386
11738
|
label: t("approval.publish.module"),
|
|
@@ -11396,7 +11748,7 @@ function publishRows(args, preview, t) {
|
|
|
11396
11748
|
},
|
|
11397
11749
|
{
|
|
11398
11750
|
label: t("approval.publish.author"),
|
|
11399
|
-
value: preview === void 0 ? t("approval.publish.reading") : preview?.author === void 0 || preview.author === "" ? t("approval.publish.authorMissing") : preview.author
|
|
11751
|
+
value: author !== "" ? author : preview === void 0 ? t("approval.publish.reading") : preview?.author === void 0 || preview.author === "" ? t("approval.publish.authorMissing") : preview.author
|
|
11400
11752
|
}
|
|
11401
11753
|
];
|
|
11402
11754
|
const market = preview?.market;
|
|
@@ -11443,17 +11795,22 @@ function PublishChangelogSeat({ changelog, t }) {
|
|
|
11443
11795
|
function PublishApprovalSeat({ args, t }) {
|
|
11444
11796
|
const unit = textOf(args, "unit");
|
|
11445
11797
|
const version = textOf(args, "version");
|
|
11798
|
+
const author = textOf(args, "author");
|
|
11446
11799
|
const [preview, setPreview] = (0, react.useState)(() => unit === "" ? null : void 0);
|
|
11447
11800
|
(0, react.useEffect)(() => {
|
|
11448
11801
|
if (unit === "") return;
|
|
11449
11802
|
let live = true;
|
|
11450
|
-
readPublishPreview(unit, version).then((response) => {
|
|
11803
|
+
readPublishPreview(unit, version, author).then((response) => {
|
|
11451
11804
|
if (live) setPreview(response.ok ? response.preview : null);
|
|
11452
11805
|
});
|
|
11453
11806
|
return () => {
|
|
11454
11807
|
live = false;
|
|
11455
11808
|
};
|
|
11456
|
-
}, [
|
|
11809
|
+
}, [
|
|
11810
|
+
unit,
|
|
11811
|
+
version,
|
|
11812
|
+
author
|
|
11813
|
+
]);
|
|
11457
11814
|
return (0, react.createElement)(ApprovalPlan, { rows: publishRows(args, preview, t) }, (0, react.createElement)(PublishChangelogSeat, {
|
|
11458
11815
|
changelog: preview?.changelog,
|
|
11459
11816
|
t
|
|
@@ -12218,10 +12575,10 @@ function dismissPanelByPointer(next, scope, onOpenChange) {
|
|
|
12218
12575
|
//#region src/app/layouts/rightbar/PanelModules.tsx
|
|
12219
12576
|
function PanelModules({ t, open, onOpenChange, enabledUnits, workspace, refreshToken, manifests, onOpenMarket }) {
|
|
12220
12577
|
const { capabilities, checkedAt, forceProbe } = useCapabilityMap(refreshToken);
|
|
12221
|
-
const
|
|
12578
|
+
const decided = (0, react.useRef)(false);
|
|
12222
12579
|
(0, react.useEffect)(() => {
|
|
12223
|
-
if (!open || decided) return;
|
|
12224
|
-
|
|
12580
|
+
if (!open || decided.current) return;
|
|
12581
|
+
decided.current = true;
|
|
12225
12582
|
if (!shouldProbeOnEnter({
|
|
12226
12583
|
checkedAt,
|
|
12227
12584
|
now: Date.now(),
|
|
@@ -12231,7 +12588,6 @@ function PanelModules({ t, open, onOpenChange, enabledUnits, workspace, refreshT
|
|
|
12231
12588
|
forceProbe();
|
|
12232
12589
|
}, [
|
|
12233
12590
|
open,
|
|
12234
|
-
decided,
|
|
12235
12591
|
checkedAt,
|
|
12236
12592
|
forceProbe
|
|
12237
12593
|
]);
|
|
@@ -14371,7 +14727,7 @@ function messagesOf(units) {
|
|
|
14371
14727
|
...face.messages === void 0 ? {} : { messages: face.messages }
|
|
14372
14728
|
}));
|
|
14373
14729
|
}
|
|
14374
|
-
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*/";
|
|
14730
|
+
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*/";
|
|
14375
14731
|
function workbenchCss() {
|
|
14376
14732
|
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}`;
|
|
14377
14733
|
}
|
|
@@ -14423,7 +14779,7 @@ function mount(ctx) {
|
|
|
14423
14779
|
let disposeDictionary;
|
|
14424
14780
|
const publish = () => {
|
|
14425
14781
|
disposeDictionary?.();
|
|
14426
|
-
const { dictionaries: merged, problems } = mergeMessagesSkipping(dictionaries, messagesOf(units.all()));
|
|
14782
|
+
const { dictionaries: merged, problems } = mergeMessagesSkipping(dictionaries, [unitTitlesOf(units.manifests()), ...messagesOf(units.all())]);
|
|
14427
14783
|
for (const problem of problems) console.warn(`[dsh-workbench] 套件 ${problem.unit} 的文案没并进来(只有它少了这几句):${problem.reason}`);
|
|
14428
14784
|
disposeDictionary = ctx.locale.register(LOCALE_NS, merged);
|
|
14429
14785
|
};
|