@dsh-workbench/core 1.0.1 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/client.js +849 -460
- package/dist/client/client.body.js +849 -460
- package/dist/client/index.js +720 -331
- package/dist/host/index.js +448 -41
- package/dist/types/app/layouts/market/discover-search.d.ts +8 -0
- package/dist/types/app/layouts/market/discover-sources-dialog.d.ts +4 -0
- package/dist/types/app/layouts/market/discover-states.d.ts +3 -0
- package/dist/types/app/layouts/market/use-add-module.d.ts +0 -1
- package/dist/types/app/layouts/market/use-discover.d.ts +1 -0
- package/dist/types/app/layouts/rightbar/MarketView.d.ts +3 -1
- package/dist/types/app/layouts/rightbar/market-names.d.ts +8 -0
- package/dist/types/app/layouts/rightbar/market-row-types.d.ts +11 -3
- package/dist/types/app/layouts/rightbar/market-rows.d.ts +6 -4
- package/dist/types/app/layouts/rightbar/market-view-text.d.ts +4 -3
- package/dist/types/app/units/unit-titles.d.ts +3 -0
- package/dist/types/kernel/contract/bundle-install.d.ts +1 -1
- package/dist/types/kernel/contract/market-index.d.ts +1 -1
- package/dist/types/modules/panels/model/diy-tools.d.ts +1 -1
- package/dist/types/modules/panels/model/market-dispatch.d.ts +8 -0
- package/dist/types/modules/panels/model/market-follow-up.d.ts +16 -0
- package/dist/types/modules/panels/model/market-sources-act.d.ts +2 -0
- package/dist/types/modules/panels/model/market-types.d.ts +5 -0
- package/dist/types/modules/panels/model/market.d.ts +2 -0
- package/dist/types/modules/panels/model/publish-preview-routes.d.ts +1 -1
- package/dist/types/shared/api/host/diy-publish-preview.d.ts +11 -0
- package/dist/types/shared/api/host/follow-up-dismiss.d.ts +2 -0
- package/dist/types/shared/api/host/migrate-workbench.d.ts +20 -0
- package/dist/types/shared/api/host/migration-follow-up.d.ts +12 -0
- package/dist/types/shared/hooks/market-queries.d.ts +3 -2
- package/dist/types/shared/hooks/resource-view.d.ts +14 -0
- package/dist/types/shared/hooks/use-api-resource.d.ts +3 -7
- package/package.json +3 -3
- package/skills/workbench-module-diy/FAMILY.md +1 -1
- package/skills/workbench-module-diy/REVIEW.md +2 -2
- package/skills/workbench-module-diy/SKILL.md +1 -0
- package/skills/workbench-module-diy/TOOLS.md +1 -1
- package/skills/workbench-module-diy/WIRING.md +3 -1
- package/skills/workbench-module-diy/WRITES.md +1 -1
package/dist/client/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Button, Checkbox, CodeBlock, DiffBlock, DisclosureRow, HoverCard, IconCheckCircleFillRegular, IconCheckOutlineRegular, IconChevronDownOutlineRegular, IconCodeOutlineRegular, IconCordisPluginOutlineRegular, IconDownloadOutlineRegular, IconEditOutlineRegular, IconEllipsisOutlineRegular, IconFlatListOutlineRegular, IconFolderCloseRegular, IconFolderOpenRegular, IconInfoOutlineRegular, IconLinkOutlineRegular, IconNewChatOutlineRegular, IconPanelLeftOutlineRegular, IconPauseOutlineRegular, IconPinFillRegular, IconPlayOutlineRegular, IconPlusOutlineRegular, IconRefreshOutlineRegular, IconRightUpOutlineRegular, IconSearchOutlineRegular, IconSettingsOutlineRegular, IconSlidersTwoOutlineRegular, IconStopFillRegular, IconTrashOutlineRegular, IconWarningOutlineRegular, Input, MarkdownText, Menu, Modal, Pill, PluginArtworkDefault, RiskConfirmation, SegmentedTabs, StateDot, Switch, Tag, TextShimmer, Tooltip, useAnchoredPosition, useDismissOnOutsidePointer, writeClipboard } from "@deepseek-ai/dsh-client-ui-primitives";
|
|
1
|
+
import { Button, Checkbox, CodeBlock, DiffBlock, DisclosureRow, HoverCard, IconCheckCircleFillRegular, IconCheckOutlineRegular, IconChevronDownOutlineRegular, IconCloseOutlineRegular, IconCodeOutlineRegular, IconCordisPluginOutlineRegular, IconDownloadOutlineRegular, IconEditOutlineRegular, IconEllipsisOutlineRegular, IconFlatListOutlineRegular, IconFolderCloseRegular, IconFolderOpenRegular, IconInfoOutlineRegular, IconLinkOutlineRegular, IconNewChatOutlineRegular, IconPanelLeftOutlineRegular, IconPauseOutlineRegular, IconPinFillRegular, IconPlayOutlineRegular, IconPlusOutlineRegular, IconRefreshOutlineRegular, IconRightUpOutlineRegular, IconSearchOutlineRegular, IconSettingsOutlineRegular, IconSlidersTwoOutlineRegular, IconStopFillRegular, IconTrashOutlineRegular, IconWarningOutlineRegular, Input, MarkdownText, Menu, Modal, Pill, PluginArtworkDefault, RiskConfirmation, SegmentedTabs, StateDot, Switch, Tag, TextShimmer, Tooltip, useAnchoredPosition, useDismissOnOutsidePointer, writeClipboard } from "@deepseek-ai/dsh-client-ui-primitives";
|
|
2
2
|
import { Fragment, createElement, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
|
|
3
3
|
//#region \0rolldown/runtime.js
|
|
4
4
|
var __create = Object.create;
|
|
@@ -2726,6 +2726,32 @@ var SIDEBAR_EDITION_RESOURCE = "sidebarEdition";
|
|
|
2726
2726
|
//#region ../shared/dist/contract/protocol/unit-manifests.js
|
|
2727
2727
|
var UNIT_MANIFESTS_ROUTE = "unit-manifests";
|
|
2728
2728
|
//#endregion
|
|
2729
|
+
//#region ../shared/dist/contract/unit.js
|
|
2730
|
+
/**
|
|
2731
|
+
* 外壳替模块名合成的词表键:模块自己不必写名字键,名字直接从清单里的 title 注册进来。
|
|
2732
|
+
* @param unit 单元 id。
|
|
2733
|
+
* @returns 该单元名字在词表里的键。
|
|
2734
|
+
*/
|
|
2735
|
+
function unitTitleKey(unit) {
|
|
2736
|
+
return `dsh-workbench.unit.${unit}.title`;
|
|
2737
|
+
}
|
|
2738
|
+
/**
|
|
2739
|
+
* 模块声明的全部环境需要(没写就是空表)。
|
|
2740
|
+
* @param manifest 模块清单。
|
|
2741
|
+
* @returns need 列表。
|
|
2742
|
+
*/
|
|
2743
|
+
function needsOf(manifest) {
|
|
2744
|
+
return manifest.needs ?? [];
|
|
2745
|
+
}
|
|
2746
|
+
/**
|
|
2747
|
+
* 市场门槛要看的那些需要:声明了 extension / lib 就算(不要求写了来源)。
|
|
2748
|
+
* @param manifest 模块清单。
|
|
2749
|
+
* @returns extension / lib 的 need 列表。
|
|
2750
|
+
*/
|
|
2751
|
+
function supplyNeedsOf(manifest) {
|
|
2752
|
+
return needsOf(manifest).filter((need) => need.kind === "extension" || need.kind === "lib");
|
|
2753
|
+
}
|
|
2754
|
+
//#endregion
|
|
2729
2755
|
//#region ../shared/dist/contract/needs.js
|
|
2730
2756
|
function text(value) {
|
|
2731
2757
|
return typeof value === "string" ? value.trim() : "";
|
|
@@ -2788,24 +2814,6 @@ Object.freeze({
|
|
|
2788
2814
|
})
|
|
2789
2815
|
});
|
|
2790
2816
|
//#endregion
|
|
2791
|
-
//#region ../shared/dist/contract/unit.js
|
|
2792
|
-
/**
|
|
2793
|
-
* 模块声明的全部环境需要(没写就是空表)。
|
|
2794
|
-
* @param manifest 模块清单。
|
|
2795
|
-
* @returns need 列表。
|
|
2796
|
-
*/
|
|
2797
|
-
function needsOf(manifest) {
|
|
2798
|
-
return manifest.needs ?? [];
|
|
2799
|
-
}
|
|
2800
|
-
/**
|
|
2801
|
-
* 市场门槛要看的那些需要:声明了 extension / lib 就算(不要求写了来源)。
|
|
2802
|
-
* @param manifest 模块清单。
|
|
2803
|
-
* @returns extension / lib 的 need 列表。
|
|
2804
|
-
*/
|
|
2805
|
-
function supplyNeedsOf(manifest) {
|
|
2806
|
-
return needsOf(manifest).filter((need) => need.kind === "extension" || need.kind === "lib");
|
|
2807
|
-
}
|
|
2808
|
-
//#endregion
|
|
2809
2817
|
//#region ../shared/dist/i18n/settings.js
|
|
2810
2818
|
/** 「工作台设置」这一组的词条:配置同步 / 新建工作台。 */
|
|
2811
2819
|
var zhSettings = {
|
|
@@ -3074,15 +3082,14 @@ var en = {
|
|
|
3074
3082
|
"panels.market.update": "Update",
|
|
3075
3083
|
"panels.market.swapSlow": "Not swapped yet — maybe a slow or failed download. Press Update again; if it stays like this, restart dsh.",
|
|
3076
3084
|
"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.",
|
|
3077
|
-
"panels.market.updateNoChange": "
|
|
3085
|
+
"panels.market.updateNoChange": "Update failed: still {from}. The newest on the registry is {latest} — press Update again.",
|
|
3078
3086
|
"panels.market.updateUnknownVersion": "(unknown)",
|
|
3079
|
-
"panels.market.updateGone": "
|
|
3080
|
-
"panels.market.updateRestored": "
|
|
3087
|
+
"panels.market.updateGone": "Update failed: the module is gone after the update.",
|
|
3088
|
+
"panels.market.updateRestored": "Update failed: the new version could not be found after the update, so {version} was put back.",
|
|
3081
3089
|
"panels.market.updateBehind": "Installed {installed}, but the newest on the registry is {latest} — not the latest; you can update once more.",
|
|
3082
|
-
"panels.market.selfUpdateFailed": "
|
|
3090
|
+
"panels.market.selfUpdateFailed": "Workbench update failed: {reason}",
|
|
3083
3091
|
"panels.market.selfUpdateUnknown": "the outside process left no reason (see ~/.dsh/workbench/self-update.log)",
|
|
3084
|
-
"panels.market.selfUpdateRolledBack": "
|
|
3085
|
-
"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).",
|
|
3092
|
+
"panels.market.selfUpdateRolledBack": "Workbench update failed; rolled back to {version}.",
|
|
3086
3093
|
"panels.market.uninstall": "Uninstall",
|
|
3087
3094
|
"panels.market.uninstallLabel": "Uninstall {name}",
|
|
3088
3095
|
"panels.market.installing": "Installing…",
|
|
@@ -3104,9 +3111,27 @@ var en = {
|
|
|
3104
3111
|
"panels.market.empty": "No modules available",
|
|
3105
3112
|
"panels.market.sectionPlugins": "Installed opencli plugins",
|
|
3106
3113
|
"panels.market.moduleOutdated": "update available",
|
|
3114
|
+
"panels.market.updateNeedsWorkbench": "this version needs a newer workbench first",
|
|
3115
|
+
"panels.market.updateIncompatible": "the new version does not match this workbench, so it cannot be installed now",
|
|
3107
3116
|
"panels.market.moduleRefused": "This module does not match this workbench, so it cannot be used for now.",
|
|
3108
3117
|
"panels.market.moduleRestartHint": "restart dsh once to bring it up",
|
|
3109
3118
|
"panels.market.pendingRestart": "restart required",
|
|
3119
|
+
"panels.market.pendingFollowUp": "old data to migrate",
|
|
3120
|
+
"panels.market.migrationHint": "old sessions and projects are not merged yet",
|
|
3121
|
+
"panels.market.migrateAction": "Migrate old data",
|
|
3122
|
+
"panels.market.migrating": "Migrating…",
|
|
3123
|
+
"panels.market.migrateConfirmTitle": "Migrate old data?",
|
|
3124
|
+
"panels.market.migrateConfirmDetail": "Quit dsh web / Desktop first. Only missing data is added; nothing is overwritten.",
|
|
3125
|
+
"panels.market.migrateConfirmAck": "I've quit dsh web / Desktop",
|
|
3126
|
+
"panels.market.migrateConfirmYes": "Start migration",
|
|
3127
|
+
"panels.market.migrateDone": "Migration complete: {added} projects added; restart the workbench and dsh web to see them.",
|
|
3128
|
+
"panels.market.dismissFollowUp": "Don't remind me",
|
|
3129
|
+
"panels.market.dismissing": "Dismissing…",
|
|
3130
|
+
"panels.market.dismissFollowUpTitle": "Stop reminding about this?",
|
|
3131
|
+
"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.",
|
|
3132
|
+
"panels.market.dismissFollowUpAck": "I understand the old data won't appear automatically",
|
|
3133
|
+
"panels.market.dismissFollowUpYes": "Don't remind me",
|
|
3134
|
+
"panels.market.dismissed": "No longer reminded; old data stays in the old directory and can still be migrated with dsh-workbench migrate.",
|
|
3110
3135
|
"panels.market.workbenchName": "Workbench",
|
|
3111
3136
|
"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.",
|
|
3112
3137
|
"panels.market.restartNeeded": "The new version is installed — restart once to pick it up.",
|
|
@@ -3190,7 +3215,7 @@ var en = {
|
|
|
3190
3215
|
"panels.market.add.exampleTitle": "Examples",
|
|
3191
3216
|
"panels.market.add.exampleFill": "Fill in an example",
|
|
3192
3217
|
"panels.market.add.registryLabel": "Source",
|
|
3193
|
-
"panels.market.add.registryProfile": "This
|
|
3218
|
+
"panels.market.add.registryProfile": "This workbench's registry",
|
|
3194
3219
|
"panels.market.add.registryPnpm": "pnpm's own registry",
|
|
3195
3220
|
"panels.market.add.check": "Check",
|
|
3196
3221
|
"panels.market.add.checking": "Checking…",
|
|
@@ -3211,14 +3236,19 @@ var en = {
|
|
|
3211
3236
|
"panels.market.tabs": "The two faces of the module market",
|
|
3212
3237
|
"panels.tab.discover": "Discover",
|
|
3213
3238
|
"panels.discover.loading": "Reading the index",
|
|
3239
|
+
"panels.discover.slowHint": "Slow to load: finish any authorization prompt, or switch sources.",
|
|
3214
3240
|
"panels.discover.lead": "Browse modules from an index source; install and go.",
|
|
3215
3241
|
"panels.discover.addSource": "Add",
|
|
3216
3242
|
"panels.discover.addingSource": "Adding…",
|
|
3217
3243
|
"panels.discover.addFirstSource": "Add index source",
|
|
3218
3244
|
"panels.discover.removeSource": "Remove",
|
|
3219
3245
|
"panels.discover.removeSourceNamed": "Remove {url}",
|
|
3246
|
+
"panels.discover.useSource": "Use",
|
|
3247
|
+
"panels.discover.useSourceNamed": "Use {label}",
|
|
3248
|
+
"panels.discover.sourceCurrent": "In use",
|
|
3220
3249
|
"panels.discover.refresh": "Refresh",
|
|
3221
3250
|
"panels.discover.search": "Search modules",
|
|
3251
|
+
"panels.discover.clearSearch": "Clear search",
|
|
3222
3252
|
"panels.discover.all": "All",
|
|
3223
3253
|
"panels.discover.sourceLabel": "Name",
|
|
3224
3254
|
"panels.discover.sourceKind": "Type",
|
|
@@ -3228,8 +3258,8 @@ var en = {
|
|
|
3228
3258
|
"panels.discover.sourcePlaceholder": "https://example.com/index.json or git@git.example.com:wb/market.git",
|
|
3229
3259
|
"panels.discover.sourceRef": "Branch",
|
|
3230
3260
|
"panels.discover.sourcePath": "Index file",
|
|
3231
|
-
"panels.discover.sourceLocal": "Local
|
|
3232
|
-
"panels.discover.sourceLocalHint": "Leave empty to
|
|
3261
|
+
"panels.discover.sourceLocal": "Local copy folder (optional)",
|
|
3262
|
+
"panels.discover.sourceLocalHint": "Leave empty to keep it in ~/.dsh/workbench/market-index/.",
|
|
3233
3263
|
"panels.discover.save": "Save and refresh",
|
|
3234
3264
|
"panels.discover.cancel": "Cancel",
|
|
3235
3265
|
"panels.discover.retry": "Retry",
|
|
@@ -3242,9 +3272,9 @@ var en = {
|
|
|
3242
3272
|
"panels.discover.missingIndex": "This repository has no {path} yet.",
|
|
3243
3273
|
"panels.discover.initTitle": "Initialize this repository as a module market index?",
|
|
3244
3274
|
"panels.discover.initCta": "Initialize market index",
|
|
3245
|
-
"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
|
|
3275
|
+
"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.",
|
|
3246
3276
|
"panels.discover.initBranch": "Branch",
|
|
3247
|
-
"panels.discover.initBranchHint": "The index and
|
|
3277
|
+
"panels.discover.initBranchHint": "The index and build files go to this branch; an empty repository gets it created.",
|
|
3248
3278
|
"panels.discover.initBranchBad": "Use only letters, digits, dots, underscores, slashes, or dashes in a branch name.",
|
|
3249
3279
|
"panels.discover.initOk": "Initialize",
|
|
3250
3280
|
"panels.discover.initBusy": "Initializing…",
|
|
@@ -3348,11 +3378,11 @@ var en = {
|
|
|
3348
3378
|
"panels.market.add.doneApplied": "Installed and live.",
|
|
3349
3379
|
"panels.market.add.doneRestart": "Installed — restart once to pick it up.",
|
|
3350
3380
|
"panels.market.add.restartWhy": "Why this needs a restart: {reason}",
|
|
3351
|
-
"panels.market.add.restartWhy.no-hmr": "this configuration only
|
|
3381
|
+
"panels.market.add.restartWhy.no-hmr": "this configuration is only read at startup, so a restart is needed",
|
|
3352
3382
|
"panels.market.add.restartWhy.package-moved": "an installed package now resolves to another directory, or the change replaced something dsh itself provides",
|
|
3353
3383
|
"panels.market.add.restartWhy.host-module": "the change reaches modules dsh itself loaded",
|
|
3354
|
-
"panels.market.add.restartWhy.unmanaged-plugin": "the change reaches a plugin running
|
|
3355
|
-
"panels.market.add.restartWhy.module-comparison": "dsh could not
|
|
3384
|
+
"panels.market.add.restartWhy.unmanaged-plugin": "the change reaches a plugin that is running but not on the install list",
|
|
3385
|
+
"panels.market.add.restartWhy.module-comparison": "dsh could not confirm that the running plugin is the copy installed on this machine",
|
|
3356
3386
|
"panels.market.add.cancelled": "Cancelled.",
|
|
3357
3387
|
"panels.market.add.failed": "Didn't work: {reason}",
|
|
3358
3388
|
"panels.market.add.removed": "It has been removed.",
|
|
@@ -3362,10 +3392,10 @@ var en = {
|
|
|
3362
3392
|
"panels.market.add.removedRestart": "Removed — restart once to finish.",
|
|
3363
3393
|
"panels.market.add.remove": "Remove it",
|
|
3364
3394
|
"panels.market.add.problem.invalidSpec": "That is not a spec we accept: it cannot be empty or start with a dash.",
|
|
3365
|
-
"panels.market.add.problem.alreadyInstalled": "That package is already in
|
|
3395
|
+
"panels.market.add.problem.alreadyInstalled": "That package is already in this workbench (add @version to switch versions).",
|
|
3366
3396
|
"panels.market.add.problem.notFound": "No such package on that source. Try another name or version.",
|
|
3367
3397
|
"panels.market.add.problem.notAPackage": "There is no package at that location. Pick a folder that contains a package.json.",
|
|
3368
|
-
"panels.market.add.problem.notABundle": "It is an npm package, but not a dsh plugin (
|
|
3398
|
+
"panels.market.add.problem.notABundle": "It is an npm package, but not a dsh plugin (dsh cannot find what to load inside it).",
|
|
3369
3399
|
"panels.market.add.problem.network": "The source is unreachable. Check the network and retry.",
|
|
3370
3400
|
"panels.market.add.problem.unknown": "The check did not pass (reason unknown). Open the install details for the raw output, or retry.",
|
|
3371
3401
|
"panels.market.add.reason.invalidSpec": "the spec is not accepted",
|
|
@@ -3373,7 +3403,7 @@ var en = {
|
|
|
3373
3403
|
"panels.market.add.reason.notBundle": "it is not a dsh plugin package",
|
|
3374
3404
|
"panels.market.add.reason.notRemovable": "it ships with the installation and cannot be removed",
|
|
3375
3405
|
"panels.market.add.reason.bundleInUse": "something is still using it",
|
|
3376
|
-
"panels.market.add.reason.stopProfile": "this configuration
|
|
3406
|
+
"panels.market.add.reason.stopProfile": "this configuration needs a restart, so stop the workbench first",
|
|
3377
3407
|
"panels.market.add.reason.staleApproval": "the scripts to allow changed — start over",
|
|
3378
3408
|
"panels.market.add.reason.operationError": "pnpm failed (see the install output)",
|
|
3379
3409
|
"panels.market.add.reason.buildBlocked": "pnpm blocked install scripts",
|
|
@@ -3403,8 +3433,8 @@ var en = {
|
|
|
3403
3433
|
"blocker.forbidden.titleGeneric": "No access",
|
|
3404
3434
|
"blocker.forbidden.hint": "You are signed in, but this project/repo is not permitted for your account.",
|
|
3405
3435
|
"blocker.forbidden.open": "Open permissions page",
|
|
3406
|
-
"blocker.timeout.hint": "The
|
|
3407
|
-
"blocker.exec.hint": "Make sure opencli is installed and
|
|
3436
|
+
"blocker.timeout.hint": "The background browser may not have started; retrying usually helps.",
|
|
3437
|
+
"blocker.exec.hint": "Make sure opencli is installed and runs from your terminal (which opencli).",
|
|
3408
3438
|
"blocker.unknown.title": "Something went wrong",
|
|
3409
3439
|
"panels.reading": "Reading the panel setup…",
|
|
3410
3440
|
"panels.cardBroken": "This module will not render: {unit} ({reason})",
|
|
@@ -3418,7 +3448,7 @@ var en = {
|
|
|
3418
3448
|
"env.elapsed": "Waiting {seconds}s",
|
|
3419
3449
|
"env.stepFailed.install": "install failed",
|
|
3420
3450
|
"env.stepFailed.path": "installed but not found",
|
|
3421
|
-
"env.stepFailed.shell": "
|
|
3451
|
+
"env.stepFailed.shell": "cannot reach the command line",
|
|
3422
3452
|
"env.toolchain.ok": "Looks good",
|
|
3423
3453
|
"env.toolchain.warn": "Almost ready",
|
|
3424
3454
|
"env.opencli.ok": "Ready",
|
|
@@ -3435,10 +3465,10 @@ var en = {
|
|
|
3435
3465
|
"env.fix.title": "How to fix it",
|
|
3436
3466
|
"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.",
|
|
3437
3467
|
"env.fix.whyPath": "The background tool is installed, but this environment cannot find it — usually a PATH or shell-session issue.",
|
|
3438
|
-
"env.fix.whyShell": "The workbench
|
|
3468
|
+
"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.",
|
|
3439
3469
|
"env.fix.step": "Run this in a terminal, then hit Retry:",
|
|
3440
3470
|
"env.fix.stepPath": "Open a new terminal window (or make sure npm’s global bin directory is on PATH), then hit Retry.",
|
|
3441
|
-
"env.fix.stepShell": "Restart the workbench (or dsh); if it keeps happening, the
|
|
3471
|
+
"env.fix.stepShell": "Restart the workbench (or dsh); if it keeps happening, the workbench still cannot reach the command line.",
|
|
3442
3472
|
"env.fix.permission": "Permission denied: rerun with sudo, or point npm’s global directory at your home.",
|
|
3443
3473
|
"env.fix.network": "Network unreachable: check your network or proxy, then retry.",
|
|
3444
3474
|
"env.fix.details": "Details (for troubleshooting)",
|
|
@@ -3467,9 +3497,9 @@ var en = {
|
|
|
3467
3497
|
"env.warm.done": "Ready ({n} sites)",
|
|
3468
3498
|
"env.warm.short": "Could not sign in early this time — nothing breaks; the first read fills it in",
|
|
3469
3499
|
"env.unit.failed": "This module cannot start",
|
|
3470
|
-
"env.unit.failedHint": "It failed while
|
|
3471
|
-
"env.unit.unchecked": "Cannot check: no
|
|
3472
|
-
"env.unit.uncheckedHint": "The module is not the problem — the
|
|
3500
|
+
"env.unit.failedHint": "It failed while starting up; other modules are unaffected.",
|
|
3501
|
+
"env.unit.unchecked": "Cannot check: no command line",
|
|
3502
|
+
"env.unit.uncheckedHint": "The module is not the problem — the workbench cannot reach the command line. Restart the workbench.",
|
|
3473
3503
|
"adapterSet.not-configured": "No adapter set configured; using the default.",
|
|
3474
3504
|
"adapterSet.no-profile": "No profile found, so the adapter set cannot load; using the default.",
|
|
3475
3505
|
"adapterSet.malformed": "An adapter set must be a package name (for example @acme/adapters-set); using the default.",
|
|
@@ -3512,7 +3542,7 @@ var en = {
|
|
|
3512
3542
|
"sidebarEdition.official": "Official",
|
|
3513
3543
|
"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.",
|
|
3514
3544
|
"sidebarEdition.custom": "Custom",
|
|
3515
|
-
"sidebarEdition.customHint": "Built for multi-project work: one project per dropdown, recency-first sessions,
|
|
3545
|
+
"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.",
|
|
3516
3546
|
"sidebarEdition.saving": "Configuring…",
|
|
3517
3547
|
"sidebarEdition.reloadRequired": "Saved. Reload the page to apply — no workbench restart needed.",
|
|
3518
3548
|
"sidebarEdition.reload": "Reload page",
|
|
@@ -3541,25 +3571,25 @@ var en = {
|
|
|
3541
3571
|
"record.act.halt": "Halt",
|
|
3542
3572
|
"approval.record.site": "Site",
|
|
3543
3573
|
"approval.record.what": "Records",
|
|
3544
|
-
"approval.record.lands": "
|
|
3574
|
+
"approval.record.lands": "Saves to",
|
|
3545
3575
|
"approval.record.noUrl": "no site given (this call gets refused)",
|
|
3546
3576
|
"approval.record.oneAction": "one action",
|
|
3547
3577
|
"approval.record.noSwitch": "it will not switch you back (the leftbar footer shows the state)",
|
|
3548
|
-
"approval.longTask.what": "
|
|
3549
|
-
"approval.longTask.signal": "stopping only sends an interrupt signal —
|
|
3578
|
+
"approval.longTask.what": "Task to stop",
|
|
3579
|
+
"approval.longTask.signal": "stopping only sends an interrupt signal — wrapping up the run is up to the module",
|
|
3550
3580
|
"approval.publish.module": "Module",
|
|
3551
3581
|
"approval.publish.target": "Target",
|
|
3552
3582
|
"approval.publish.version": "Version",
|
|
3553
3583
|
"approval.publish.author": "Author",
|
|
3554
|
-
"approval.publish.authorMissing": "unsigned
|
|
3584
|
+
"approval.publish.authorMissing": "unsigned",
|
|
3555
3585
|
"approval.publish.registry": "Registry",
|
|
3556
3586
|
"approval.publish.repo": "Repository",
|
|
3557
3587
|
"approval.publish.branch": "Branch",
|
|
3558
3588
|
"approval.publish.defaultBranch": "default branch",
|
|
3559
|
-
"approval.publish.artifacts": "
|
|
3589
|
+
"approval.publish.artifacts": "Build files",
|
|
3560
3590
|
"approval.publish.index": "Index",
|
|
3561
3591
|
"approval.publish.commits": "Commits",
|
|
3562
|
-
"approval.publish.twoCommits": "
|
|
3592
|
+
"approval.publish.twoCommits": "build files + market.json in 2 commits, one push",
|
|
3563
3593
|
"approval.publish.reading": "Reading…",
|
|
3564
3594
|
"approval.publish.changelog": "Changelog for {version}",
|
|
3565
3595
|
"approval.publish.changelogMissing": "No changelog entry for {version}; publishing will be blocked",
|
|
@@ -3707,15 +3737,14 @@ var dictionaries = {
|
|
|
3707
3737
|
"panels.market.update": "更新",
|
|
3708
3738
|
"panels.market.swapSlow": "还没换上:可能网慢或没装上。再点一次「更新」;一直这样就把 dsh 重启一遍。",
|
|
3709
3739
|
"panels.market.removeSlow": "还没卸掉:可能网慢或卸载没走完。等一下再看;一直这样就把 dsh 重启一遍。",
|
|
3710
|
-
"panels.market.updateNoChange": "
|
|
3740
|
+
"panels.market.updateNoChange": "更新失败:还是 {from};源上最新是 {latest},可以再点一次「更新」。",
|
|
3711
3741
|
"panels.market.updateUnknownVersion": "(问不到)",
|
|
3712
|
-
"panels.market.updateGone": "
|
|
3713
|
-
"panels.market.updateRestored": "
|
|
3742
|
+
"panels.market.updateGone": "更新失败:更新后找不到这个模块。",
|
|
3743
|
+
"panels.market.updateRestored": "更新失败:更新后找不到新版本,已把 {version} 装回去。",
|
|
3714
3744
|
"panels.market.updateBehind": "装上了 {installed},但源上最新是 {latest} —— 没更到最新,可以再点一次。",
|
|
3715
|
-
"panels.market.selfUpdateFailed": "
|
|
3745
|
+
"panels.market.selfUpdateFailed": "工作台更新失败:{reason}",
|
|
3716
3746
|
"panels.market.selfUpdateUnknown": "外部进程没留下原因(看 ~/.dsh/workbench/self-update.log)",
|
|
3717
|
-
"panels.market.selfUpdateRolledBack": "
|
|
3718
|
-
"panels.market.selfUpdateNeedsMigrate": "工作台已更新。旧会话 / 项目不会自动并:先退出所有 dsh,再运行 dsh-workbench migrate(--force 可补并)。",
|
|
3747
|
+
"panels.market.selfUpdateRolledBack": "工作台更新失败,已回滚到 {version}。",
|
|
3719
3748
|
"panels.market.uninstall": "卸载",
|
|
3720
3749
|
"panels.market.uninstallLabel": "卸载 {name}",
|
|
3721
3750
|
"panels.market.installing": "正在安装…",
|
|
@@ -3737,9 +3766,27 @@ var dictionaries = {
|
|
|
3737
3766
|
"panels.market.empty": "暂无可用模块",
|
|
3738
3767
|
"panels.market.sectionPlugins": "已安装 opencli 插件",
|
|
3739
3768
|
"panels.market.moduleOutdated": "有新版",
|
|
3769
|
+
"panels.market.updateNeedsWorkbench": "新版本要先把工作台升级才能用",
|
|
3770
|
+
"panels.market.updateIncompatible": "新版本和当前的工作台不匹配,暂时不能更新",
|
|
3740
3771
|
"panels.market.moduleRefused": "模块版本与工作台不匹配,暂时无法使用",
|
|
3741
3772
|
"panels.market.moduleRestartHint": "重启后生效",
|
|
3742
3773
|
"panels.market.pendingRestart": "重启后生效",
|
|
3774
|
+
"panels.market.pendingFollowUp": "旧数据待迁移",
|
|
3775
|
+
"panels.market.migrationHint": "旧会话和项目还没搬过来",
|
|
3776
|
+
"panels.market.migrateAction": "迁移旧数据",
|
|
3777
|
+
"panels.market.migrating": "正在迁移…",
|
|
3778
|
+
"panels.market.migrateConfirmTitle": "迁移旧数据?",
|
|
3779
|
+
"panels.market.migrateConfirmDetail": "先退出 dsh web / Desktop。迁移只补缺、不覆盖;旧目录保留。",
|
|
3780
|
+
"panels.market.migrateConfirmAck": "我已经退出 dsh web / Desktop",
|
|
3781
|
+
"panels.market.migrateConfirmYes": "开始迁移",
|
|
3782
|
+
"panels.market.migrateDone": "迁移完成:补了 {added} 个项目;重启工作台和 dsh web 后出现。",
|
|
3783
|
+
"panels.market.dismissFollowUp": "不再提醒",
|
|
3784
|
+
"panels.market.dismissing": "正在收起…",
|
|
3785
|
+
"panels.market.dismissFollowUpTitle": "不再提醒这件事?",
|
|
3786
|
+
"panels.market.dismissFollowUpDetail": "提示会从模块市场收起,但不会迁移或删除旧数据。旧会话和项目仍留在旧目录,新版本里看不到;以后需要时仍可运行 dsh-workbench migrate。",
|
|
3787
|
+
"panels.market.dismissFollowUpAck": "我知道旧数据不会自动出现",
|
|
3788
|
+
"panels.market.dismissFollowUpYes": "不再提醒",
|
|
3789
|
+
"panels.market.dismissed": "已不再提醒;旧数据仍在旧目录,需要时仍可运行 dsh-workbench migrate。",
|
|
3743
3790
|
"panels.market.workbenchName": "工作台",
|
|
3744
3791
|
"panels.market.pluginBroken": "这份插件装坏了:认不出它是什么。可以先卸载,再让 agent 按包名重装一次。",
|
|
3745
3792
|
"panels.market.restartNeeded": "新版装好了,重启一次才生效。",
|
|
@@ -3823,7 +3870,7 @@ var dictionaries = {
|
|
|
3823
3870
|
"panels.market.add.exampleTitle": "示例",
|
|
3824
3871
|
"panels.market.add.exampleFill": "填入示例",
|
|
3825
3872
|
"panels.market.add.registryLabel": "安装源",
|
|
3826
|
-
"panels.market.add.registryProfile": "
|
|
3873
|
+
"panels.market.add.registryProfile": "这份工作台配的源",
|
|
3827
3874
|
"panels.market.add.registryPnpm": "pnpm 自己配的源",
|
|
3828
3875
|
"panels.market.add.check": "预检",
|
|
3829
3876
|
"panels.market.add.checking": "正在预检…",
|
|
@@ -3844,14 +3891,19 @@ var dictionaries = {
|
|
|
3844
3891
|
"panels.market.tabs": "模块市场的两个面",
|
|
3845
3892
|
"panels.tab.discover": "发现",
|
|
3846
3893
|
"panels.discover.loading": "正在读取索引",
|
|
3894
|
+
"panels.discover.slowHint": "读取较慢:如有授权提示,先完成它,或换一个索引源。",
|
|
3847
3895
|
"panels.discover.lead": "从索引源浏览模块;装上就能用。",
|
|
3848
3896
|
"panels.discover.addSource": "添加",
|
|
3849
3897
|
"panels.discover.addingSource": "正在添加…",
|
|
3850
3898
|
"panels.discover.addFirstSource": "添加索引源",
|
|
3851
3899
|
"panels.discover.removeSource": "移除",
|
|
3852
3900
|
"panels.discover.removeSourceNamed": "移除 {url}",
|
|
3901
|
+
"panels.discover.useSource": "使用",
|
|
3902
|
+
"panels.discover.useSourceNamed": "使用 {label}",
|
|
3903
|
+
"panels.discover.sourceCurrent": "当前使用",
|
|
3853
3904
|
"panels.discover.refresh": "刷新",
|
|
3854
3905
|
"panels.discover.search": "搜索模块",
|
|
3906
|
+
"panels.discover.clearSearch": "清除搜索",
|
|
3855
3907
|
"panels.discover.all": "全部",
|
|
3856
3908
|
"panels.discover.sourceLabel": "名字",
|
|
3857
3909
|
"panels.discover.sourceKind": "类型",
|
|
@@ -3861,8 +3913,8 @@ var dictionaries = {
|
|
|
3861
3913
|
"panels.discover.sourcePlaceholder": "https://example.com/index.json 或 git@git.example.com:wb/market.git",
|
|
3862
3914
|
"panels.discover.sourceRef": "分支",
|
|
3863
3915
|
"panels.discover.sourcePath": "索引文件",
|
|
3864
|
-
"panels.discover.sourceLocal": "
|
|
3865
|
-
"panels.discover.sourceLocalHint": "
|
|
3916
|
+
"panels.discover.sourceLocal": "本地副本目录(可选)",
|
|
3917
|
+
"panels.discover.sourceLocalHint": "不填就放到 ~/.dsh/workbench/market-index/。",
|
|
3866
3918
|
"panels.discover.save": "保存并刷新",
|
|
3867
3919
|
"panels.discover.cancel": "取消",
|
|
3868
3920
|
"panels.discover.retry": "重试",
|
|
@@ -3875,9 +3927,9 @@ var dictionaries = {
|
|
|
3875
3927
|
"panels.discover.missingIndex": "仓库里还没有索引文件 {path}",
|
|
3876
3928
|
"panels.discover.initTitle": "把这个仓库初始化成模块市场索引?",
|
|
3877
3929
|
"panels.discover.initCta": "初始化成市场索引",
|
|
3878
|
-
"panels.discover.initWhat": "会在 {branch} 分支写 market.json 与 README.md
|
|
3930
|
+
"panels.discover.initWhat": "会在 {branch} 分支写 market.json 与 README.md,提交一次并推上去;之后从这个工作台发布的模块会把打包好的文件提交到 packages/<unit>/。仓库的写权限归它的所有者。",
|
|
3879
3931
|
"panels.discover.initBranch": "分支",
|
|
3880
|
-
"panels.discover.initBranchHint": "
|
|
3932
|
+
"panels.discover.initBranchHint": "索引和打包文件都发到这个分支;空仓库会新建它。",
|
|
3881
3933
|
"panels.discover.initBranchBad": "分支名只能用字母、数字、点、下划线、斜杠或短横线",
|
|
3882
3934
|
"panels.discover.initOk": "初始化",
|
|
3883
3935
|
"panels.discover.initBusy": "正在初始化…",
|
|
@@ -3981,11 +4033,11 @@ var dictionaries = {
|
|
|
3981
4033
|
"panels.market.add.doneApplied": "装好了,已经生效。",
|
|
3982
4034
|
"panels.market.add.doneRestart": "装好了,重启一次才生效。",
|
|
3983
4035
|
"panels.market.add.restartWhy": "为什么这一版要重启:{reason}",
|
|
3984
|
-
"panels.market.add.restartWhy.no-hmr": "
|
|
4036
|
+
"panels.market.add.restartWhy.no-hmr": "这份配置只在启动时读一次,改了得重启",
|
|
3985
4037
|
"panels.market.add.restartWhy.package-moved": "某个已经装着的包换到了新的目录,或者这一下换掉了 dsh 自己提供的那份",
|
|
3986
4038
|
"panels.market.add.restartWhy.host-module": "这一下动到了 dsh 自己加载的模块",
|
|
3987
|
-
"panels.market.add.restartWhy.unmanaged-plugin": "
|
|
3988
|
-
"panels.market.add.restartWhy.module-comparison": "dsh
|
|
4039
|
+
"panels.market.add.restartWhy.unmanaged-plugin": "这一下动到了没登记过、正在运行的插件",
|
|
4040
|
+
"panels.market.add.restartWhy.module-comparison": "dsh 没法确认正在跑的插件就是这台机器上装好的那一份",
|
|
3989
4041
|
"panels.market.add.cancelled": "已取消。",
|
|
3990
4042
|
"panels.market.add.failed": "没成功:{reason}",
|
|
3991
4043
|
"panels.market.add.removed": "已经移除了。",
|
|
@@ -3995,10 +4047,10 @@ var dictionaries = {
|
|
|
3995
4047
|
"panels.market.add.removedRestart": "卸掉了,重启一次才彻底生效。",
|
|
3996
4048
|
"panels.market.add.remove": "移除它",
|
|
3997
4049
|
"panels.market.add.problem.invalidSpec": "这个写法不认:不能是空的,也不能以横杠开头。",
|
|
3998
|
-
"panels.market.add.problem.alreadyInstalled": "
|
|
4050
|
+
"panels.market.add.problem.alreadyInstalled": "这个包已经在这份工作台里了(要换版本请带上 @版本)。",
|
|
3999
4051
|
"panels.market.add.problem.notFound": "源上没有这个包。换个包名或版本再试。",
|
|
4000
4052
|
"panels.market.add.problem.notAPackage": "这个位置没有包。选一个包含 package.json 的目录。",
|
|
4001
|
-
"panels.market.add.problem.notABundle": "它是一个 npm 包,但不是 dsh
|
|
4053
|
+
"panels.market.add.problem.notABundle": "它是一个 npm 包,但不是 dsh 插件包(dsh 在里面找不到该加载什么)。",
|
|
4002
4054
|
"panels.market.add.problem.network": "源连不上。检查网络后重试。",
|
|
4003
4055
|
"panels.market.add.problem.unknown": "预检没通过(原因未知)。展开安装详情看原始输出,或重试。",
|
|
4004
4056
|
"panels.market.add.reason.invalidSpec": "写法不认",
|
|
@@ -4006,7 +4058,7 @@ var dictionaries = {
|
|
|
4006
4058
|
"panels.market.add.reason.notBundle": "它不是一个 dsh 插件包",
|
|
4007
4059
|
"panels.market.add.reason.notRemovable": "它是安装自带的组合包,不能卸",
|
|
4008
4060
|
"panels.market.add.reason.bundleInUse": "还有东西在用它,卸不掉",
|
|
4009
|
-
"panels.market.add.reason.stopProfile": "
|
|
4061
|
+
"panels.market.add.reason.stopProfile": "这份配置改了要重启,得先停掉工作台",
|
|
4010
4062
|
"panels.market.add.reason.staleApproval": "要允许的安装脚本已经变了,重新来一次",
|
|
4011
4063
|
"panels.market.add.reason.operationError": "pnpm 执行出错(详情见安装输出)",
|
|
4012
4064
|
"panels.market.add.reason.buildBlocked": "pnpm 拦下了安装脚本",
|
|
@@ -4029,15 +4081,15 @@ var dictionaries = {
|
|
|
4029
4081
|
"blocker.market.open": "去模块市场",
|
|
4030
4082
|
"blocker.login.title": "需要登录 {platform}",
|
|
4031
4083
|
"blocker.login.titleGeneric": "需要登录",
|
|
4032
|
-
"blocker.login.hint": "
|
|
4084
|
+
"blocker.login.hint": "工作台借你浏览器里的登录状态;登录一次就行,之后不用再登。",
|
|
4033
4085
|
"blocker.login.go": "去登录",
|
|
4034
4086
|
"blocker.login.manual": "在终端执行该插件的登录命令(见插件的文档),按提示完成登录后重试。",
|
|
4035
4087
|
"blocker.forbidden.title": "没有权限访问 {platform}",
|
|
4036
4088
|
"blocker.forbidden.titleGeneric": "没有权限",
|
|
4037
4089
|
"blocker.forbidden.hint": "账号已登录,但没有这个项目/仓库的权限;申请之后再试。",
|
|
4038
4090
|
"blocker.forbidden.open": "打开权限页",
|
|
4039
|
-
"blocker.timeout.hint": "
|
|
4040
|
-
"blocker.exec.hint": "确认 opencli
|
|
4091
|
+
"blocker.timeout.hint": "后台浏览器没起来,重试一次通常就好。",
|
|
4092
|
+
"blocker.exec.hint": "确认 opencli 已经装好、在终端里能直接运行(which opencli)。",
|
|
4041
4093
|
"blocker.unknown.title": "出了点问题",
|
|
4042
4094
|
"panels.reading": "正在读取面板配置…",
|
|
4043
4095
|
"panels.cardBroken": "这个模块起不来:{unit}({reason})",
|
|
@@ -4051,7 +4103,7 @@ var dictionaries = {
|
|
|
4051
4103
|
"env.elapsed": "已等待 {seconds} 秒",
|
|
4052
4104
|
"env.stepFailed.install": "装不上",
|
|
4053
4105
|
"env.stepFailed.path": "装了但还找不到",
|
|
4054
|
-
"env.stepFailed.shell": "
|
|
4106
|
+
"env.stepFailed.shell": "连不上命令行",
|
|
4055
4107
|
"env.toolchain.ok": "正常",
|
|
4056
4108
|
"env.toolchain.warn": "还没完全准备好",
|
|
4057
4109
|
"env.opencli.ok": "已就绪",
|
|
@@ -4068,10 +4120,10 @@ var dictionaries = {
|
|
|
4068
4120
|
"env.fix.title": "怎么解决",
|
|
4069
4121
|
"env.fix.why": "工作台用它自己那份后台工具(与你在终端里那套分开装,互不影响),这台机器上还没装好它。",
|
|
4070
4122
|
"env.fix.whyPath": "后台工具装上了,但当前环境还找不到它 —— 通常是 PATH 或终端会话的问题。",
|
|
4071
|
-
"env.fix.whyShell": "
|
|
4123
|
+
"env.fix.whyShell": "工作台拿不到这台机器的命令行,所以取不了数据 —— 这一步你装不了,需要有人处理后台环境。",
|
|
4072
4124
|
"env.fix.step": "在终端里运行下面这条命令,装好之后点「重试」:",
|
|
4073
4125
|
"env.fix.stepPath": "新开一个终端窗口(或确认 npm 的全局 bin 目录在 PATH 里),然后点「重试」。",
|
|
4074
|
-
"env.fix.stepShell": "重启一次工作台(或 dsh
|
|
4126
|
+
"env.fix.stepShell": "重启一次工作台(或 dsh);如果反复出现,说明工作台还是拿不到命令行。",
|
|
4075
4127
|
"env.fix.permission": "权限不够:在命令前加 sudo 重跑,或先把 npm 的全局目录配到你的用户目录。",
|
|
4076
4128
|
"env.fix.network": "网络不通:检查网络或代理设置后重试。",
|
|
4077
4129
|
"env.fix.details": "详细输出(排障用)",
|
|
@@ -4100,9 +4152,9 @@ var dictionaries = {
|
|
|
4100
4152
|
"env.warm.done": "已就绪({n} 个站点)",
|
|
4101
4153
|
"env.warm.short": "这次没提前连上 —— 不影响用,第一次取数会自己补",
|
|
4102
4154
|
"env.unit.failed": "这个模块起不来",
|
|
4103
|
-
"env.unit.failedHint": "
|
|
4104
|
-
"env.unit.unchecked": "
|
|
4105
|
-
"env.unit.uncheckedHint": "
|
|
4155
|
+
"env.unit.failedHint": "它自己启动时报了错,别的模块不受影响。",
|
|
4156
|
+
"env.unit.unchecked": "检测不了:拿不到命令行",
|
|
4157
|
+
"env.unit.uncheckedHint": "不是这个模块的问题,是工作台拿不到命令行 —— 重启一次工作台再试。",
|
|
4106
4158
|
"adapterSet.not-configured": "没配置适配器集合,用默认的。",
|
|
4107
4159
|
"adapterSet.no-profile": "找不到 profile,没法加载适配器集合;先用默认的。",
|
|
4108
4160
|
"adapterSet.malformed": "适配器集合要写包名(如 @acme/adapters-set);先用默认的。",
|
|
@@ -4145,7 +4197,7 @@ var dictionaries = {
|
|
|
4145
4197
|
"sidebarEdition.official": "官方",
|
|
4146
4198
|
"sidebarEdition.officialHint": "跟 dsh 官方一致、最稳:搜索、视图选项、显示更多、归档、添加工作区都齐,升级也不等我们适配。想省心就选它。",
|
|
4147
4199
|
"sidebarEdition.custom": "自定义",
|
|
4148
|
-
"sidebarEdition.customHint": "
|
|
4200
|
+
"sidebarEdition.customHint": "为多项目工作流做的:项目下拉一屏一个项目,会话按最近更新排,名字自动滚动、两侧渐隐,工坊 DIY 新会话。项目多时更顺手。",
|
|
4149
4201
|
"sidebarEdition.saving": "配置中…",
|
|
4150
4202
|
"sidebarEdition.reloadRequired": "已写入。刷新页面后生效(不用重启工作台)。",
|
|
4151
4203
|
"sidebarEdition.reload": "刷新页面",
|
|
@@ -4174,25 +4226,25 @@ var dictionaries = {
|
|
|
4174
4226
|
"record.act.halt": "停",
|
|
4175
4227
|
"approval.record.site": "站点",
|
|
4176
4228
|
"approval.record.what": "录制功能",
|
|
4177
|
-
"approval.record.lands": "
|
|
4229
|
+
"approval.record.lands": "保存到",
|
|
4178
4230
|
"approval.record.noUrl": "没给站点地址(这次会被当场拒)",
|
|
4179
4231
|
"approval.record.oneAction": "一次操作",
|
|
4180
4232
|
"approval.record.noSwitch": "录完不会替你切回来(左栏底部会亮一条状态)",
|
|
4181
|
-
"approval.longTask.what": "
|
|
4182
|
-
"approval.longTask.signal": "停了只是让工作台发出中断信号 ——
|
|
4233
|
+
"approval.longTask.what": "要停的那次任务",
|
|
4234
|
+
"approval.longTask.signal": "停了只是让工作台发出中断信号 —— 这次任务怎么收尾由模块自己负责",
|
|
4183
4235
|
"approval.publish.module": "模块",
|
|
4184
4236
|
"approval.publish.target": "目标",
|
|
4185
4237
|
"approval.publish.version": "版本",
|
|
4186
4238
|
"approval.publish.author": "作者",
|
|
4187
|
-
"approval.publish.authorMissing": "
|
|
4239
|
+
"approval.publish.authorMissing": "未署名",
|
|
4188
4240
|
"approval.publish.registry": "源",
|
|
4189
4241
|
"approval.publish.repo": "仓库",
|
|
4190
4242
|
"approval.publish.branch": "分支",
|
|
4191
4243
|
"approval.publish.defaultBranch": "默认分支",
|
|
4192
|
-
"approval.publish.artifacts": "
|
|
4244
|
+
"approval.publish.artifacts": "打包文件",
|
|
4193
4245
|
"approval.publish.index": "索引",
|
|
4194
4246
|
"approval.publish.commits": "提交",
|
|
4195
|
-
"approval.publish.twoCommits": "
|
|
4247
|
+
"approval.publish.twoCommits": "打包文件 + market.json 两次提交,一次推送",
|
|
4196
4248
|
"approval.publish.reading": "读取中…",
|
|
4197
4249
|
"approval.publish.changelog": "{version} 的更新日志",
|
|
4198
4250
|
"approval.publish.changelogMissing": "这一版还没有更新日志({version}),发布会被拦下",
|
|
@@ -4950,7 +5002,11 @@ function sharedRows(manifests, capabilities) {
|
|
|
4950
5002
|
id: `${bucket.kind}:${bucket.name}`,
|
|
4951
5003
|
kind: bucket.kind,
|
|
4952
5004
|
label: bucket.label,
|
|
4953
|
-
usedByKeys: bucket.users.map((unit) =>
|
|
5005
|
+
usedByKeys: bucket.users.map((unit) => {
|
|
5006
|
+
const manifest = byId.get(unit);
|
|
5007
|
+
if (manifest === void 0) return unit;
|
|
5008
|
+
return manifest.titleKey;
|
|
5009
|
+
}),
|
|
4954
5010
|
state,
|
|
4955
5011
|
canUpdate: state === "outdated" || state === "unsatisfied",
|
|
4956
5012
|
...version === void 0 ? {} : { version }
|
|
@@ -4968,6 +5024,7 @@ var MARKET_STATE_KEY = {
|
|
|
4968
5024
|
broken: "panels.market.broken",
|
|
4969
5025
|
outdated: "panels.market.moduleOutdated",
|
|
4970
5026
|
"pending-restart": "panels.market.pendingRestart",
|
|
5027
|
+
"pending-followup": "panels.market.pendingFollowUp",
|
|
4971
5028
|
missing: "panels.market.missing",
|
|
4972
5029
|
unchecked: "panels.market.unchecked",
|
|
4973
5030
|
unknown: "panels.market.unchecked"
|
|
@@ -4980,6 +5037,7 @@ var MARKET_DOT = {
|
|
|
4980
5037
|
broken: "error",
|
|
4981
5038
|
outdated: "warning",
|
|
4982
5039
|
"pending-restart": "warning",
|
|
5040
|
+
"pending-followup": "warning",
|
|
4983
5041
|
missing: "idle",
|
|
4984
5042
|
unchecked: "idle",
|
|
4985
5043
|
unknown: "idle"
|
|
@@ -5004,35 +5062,32 @@ function refusalReasons(host, client) {
|
|
|
5004
5062
|
if (reported.length > 0) return reported;
|
|
5005
5063
|
return [...new Set(client ?? [])];
|
|
5006
5064
|
}
|
|
5007
|
-
function
|
|
5008
|
-
|
|
5009
|
-
for (const manifest of manifests) {
|
|
5010
|
-
const titleKey = manifest.card?.titleKey;
|
|
5011
|
-
if (titleKey === void 0 || known.has(manifest.id)) continue;
|
|
5012
|
-
next ??= new Map(known);
|
|
5013
|
-
next.set(manifest.id, titleKey);
|
|
5014
|
-
}
|
|
5015
|
-
return next ?? known;
|
|
5065
|
+
function updateBlockHintOf(block) {
|
|
5066
|
+
return block === "needs-workbench" ? "panels.market.updateNeedsWorkbench" : "panels.market.updateIncompatible";
|
|
5016
5067
|
}
|
|
5017
5068
|
function installedIdSet(installed) {
|
|
5018
5069
|
if (installed === void 0) return null;
|
|
5019
5070
|
return new Set(installed.map((item) => item.unit));
|
|
5020
5071
|
}
|
|
5021
|
-
function installedRows(modules, manifests, listed,
|
|
5022
|
-
const titles = new Map(manifests.map((manifest) => [manifest.id, manifest.
|
|
5072
|
+
function installedRows(modules, manifests, listed, names, defaults = /* @__PURE__ */ new Set(), changed = {}) {
|
|
5073
|
+
const titles = new Map(manifests.map((manifest) => [manifest.id, manifest.titleKey]));
|
|
5023
5074
|
const rows = [];
|
|
5024
5075
|
for (const module of modules) {
|
|
5025
5076
|
if (listed.has(module.unit)) continue;
|
|
5026
5077
|
const latest = module.local === true ? void 0 : module.latest;
|
|
5027
5078
|
const outdated = latest !== void 0 && latest !== module.installed;
|
|
5079
|
+
const blocked = outdated ? module.latestBlocked : void 0;
|
|
5028
5080
|
const loaded = titles.has(module.unit);
|
|
5029
5081
|
const refused = refusalReasons(module.refused, module.clientRefused);
|
|
5030
5082
|
const pending = !loaded && refused.length === 0;
|
|
5083
|
+
const titleKey = titles.get(module.unit);
|
|
5084
|
+
const remembered = titleKey === void 0 ? names?.get(module.unit) : void 0;
|
|
5031
5085
|
rows.push({
|
|
5032
5086
|
id: module.unit,
|
|
5033
|
-
titleKey:
|
|
5087
|
+
titleKey: titleKey ?? module.unit,
|
|
5088
|
+
...remembered === void 0 ? {} : { label: remembered },
|
|
5034
5089
|
state: outdated ? "outdated" : refused.length > 0 ? "unusable" : pending ? "inactive" : "installed",
|
|
5035
|
-
...pending ? { hint: "panels.market.moduleRestartHint" } : {},
|
|
5090
|
+
...pending ? { hint: "panels.market.moduleRestartHint" } : blocked === void 0 ? {} : { hint: updateBlockHintOf(blocked) },
|
|
5036
5091
|
...refused.length === 0 ? {} : { note: {
|
|
5037
5092
|
key: "panels.market.moduleRefused",
|
|
5038
5093
|
params: {}
|
|
@@ -5040,7 +5095,7 @@ function installedRows(modules, manifests, listed, known, defaults = /* @__PURE_
|
|
|
5040
5095
|
...module.local === true ? { local: true } : {},
|
|
5041
5096
|
pkg: module.pkg,
|
|
5042
5097
|
canInstall: false,
|
|
5043
|
-
canUpdate: outdated,
|
|
5098
|
+
canUpdate: outdated && blocked === void 0,
|
|
5044
5099
|
canUninstall: true,
|
|
5045
5100
|
version: {
|
|
5046
5101
|
installed: module.installed,
|
|
@@ -5048,7 +5103,8 @@ function installedRows(modules, manifests, listed, known, defaults = /* @__PURE_
|
|
|
5048
5103
|
},
|
|
5049
5104
|
...outdated ? { moduleUpdate: {
|
|
5050
5105
|
installed: module.installed,
|
|
5051
|
-
latest
|
|
5106
|
+
latest,
|
|
5107
|
+
...blocked === void 0 ? {} : { blocked }
|
|
5052
5108
|
} } : {},
|
|
5053
5109
|
defaultShown: defaults.has(module.unit),
|
|
5054
5110
|
defaultChanged: changed[module.unit] ?? 0
|
|
@@ -5061,11 +5117,14 @@ function marketSwitchLocked(row) {
|
|
|
5061
5117
|
return SWITCH_LOCKED.has(row.state);
|
|
5062
5118
|
}
|
|
5063
5119
|
function marketActions$1(row) {
|
|
5064
|
-
if (row.workbench === true)
|
|
5120
|
+
if (row.workbench === true) {
|
|
5121
|
+
if (row.followUp !== void 0 && row.state === "pending-followup") return row.followUp.hard ? ["migrate-workbench"] : ["migrate-workbench", "dismiss-followup"];
|
|
5122
|
+
return row.canUpdate ? ["update-workbench"] : [];
|
|
5123
|
+
}
|
|
5065
5124
|
if (row.plugin === true) return [...row.canUpdate ? ["update-plugin"] : [], ...row.canUninstall ? ["uninstall-plugin"] : []];
|
|
5066
5125
|
return [
|
|
5067
5126
|
...row.canInstall ? ["install"] : [],
|
|
5068
|
-
...row.moduleUpdate === void 0 ? row.canUpdate ? ["update"] : [] : ["update-bundle"],
|
|
5127
|
+
...row.moduleUpdate === void 0 ? row.canUpdate ? ["update"] : [] : row.moduleUpdate.blocked === void 0 ? ["update-bundle"] : [],
|
|
5069
5128
|
...row.canUninstall ? [row.pkg === void 0 ? "uninstall" : "remove-bundle"] : []
|
|
5070
5129
|
];
|
|
5071
5130
|
}
|
|
@@ -5143,7 +5202,7 @@ function liveManifests(manifests, capabilities, installed) {
|
|
|
5143
5202
|
return manifests.filter((manifest) => !gone.has(manifest.id));
|
|
5144
5203
|
}
|
|
5145
5204
|
function marketHasUpdates(rows, shared = []) {
|
|
5146
|
-
return rows.some((row) => row.state === "outdated"
|
|
5205
|
+
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");
|
|
5147
5206
|
}
|
|
5148
5207
|
function marketUpdatesOf(modules) {
|
|
5149
5208
|
if (modules === null) return {};
|
|
@@ -5153,6 +5212,7 @@ function marketUpdatesOf(modules) {
|
|
|
5153
5212
|
next[module.unit] = {
|
|
5154
5213
|
installed: module.installed,
|
|
5155
5214
|
...local || module.latest === void 0 ? {} : { latest: module.latest },
|
|
5215
|
+
...local || module.latest === void 0 || module.latestBlocked === void 0 ? {} : { blocked: module.latestBlocked },
|
|
5156
5216
|
...local ? { local: true } : {}
|
|
5157
5217
|
};
|
|
5158
5218
|
}
|
|
@@ -5191,17 +5251,19 @@ function marketRows(manifests, capabilities, updates = {}, defaults = /* @__PURE
|
|
|
5191
5251
|
const reAdopt = capability?.released === true && !installDeclared;
|
|
5192
5252
|
const moduleUpdate = entry === void 0 || entry.latest === void 0 || entry.latest === entry.installed ? void 0 : {
|
|
5193
5253
|
installed: entry.installed,
|
|
5194
|
-
latest: entry.latest
|
|
5254
|
+
latest: entry.latest,
|
|
5255
|
+
...entry.blocked === void 0 ? {} : { blocked: entry.blocked }
|
|
5195
5256
|
};
|
|
5196
5257
|
const shown = moduleUpdate === void 0 ? state : "outdated";
|
|
5258
|
+
const hint = moduleUpdate?.blocked === void 0 ? shown === "unknown" || shown === "unchecked" ? "panels.market.uncheckedHint" : void 0 : updateBlockHintOf(moduleUpdate.blocked);
|
|
5197
5259
|
rows.push({
|
|
5198
5260
|
id: manifest.id,
|
|
5199
|
-
titleKey: manifest.
|
|
5261
|
+
titleKey: manifest.titleKey,
|
|
5200
5262
|
state: shown,
|
|
5201
5263
|
canInstall: state !== "installed" && (install || reAdopt),
|
|
5202
5264
|
canUpdate: onMachine && isOutdated(capability),
|
|
5203
5265
|
canUninstall: onMachine,
|
|
5204
|
-
...
|
|
5266
|
+
...hint === void 0 ? {} : { hint },
|
|
5205
5267
|
...entry === void 0 ? {} : { version: {
|
|
5206
5268
|
installed: entry.installed,
|
|
5207
5269
|
...entry.latest === void 0 ? {} : { latest: entry.latest }
|
|
@@ -5266,11 +5328,14 @@ function workbenchRow(version) {
|
|
|
5266
5328
|
installed: version.installed,
|
|
5267
5329
|
latest
|
|
5268
5330
|
} : void 0;
|
|
5331
|
+
const stale = !local && version.running !== void 0 && version.running !== version.installed;
|
|
5332
|
+
const followUp = version.followUp;
|
|
5333
|
+
const followUpState = !stale && followUp !== void 0;
|
|
5269
5334
|
return {
|
|
5270
5335
|
id: WORKBENCH_ROW_ID,
|
|
5271
5336
|
titleKey: WORKBENCH_TITLE_KEY,
|
|
5272
5337
|
workbench: true,
|
|
5273
|
-
state:
|
|
5338
|
+
state: stale ? "pending-restart" : followUpState ? "pending-followup" : update === void 0 ? "installed" : "outdated",
|
|
5274
5339
|
canInstall: false,
|
|
5275
5340
|
canUpdate: update !== void 0,
|
|
5276
5341
|
canUninstall: false,
|
|
@@ -5280,6 +5345,8 @@ function workbenchRow(version) {
|
|
|
5280
5345
|
...latest === void 0 ? {} : { latest }
|
|
5281
5346
|
},
|
|
5282
5347
|
...update === void 0 ? {} : { moduleUpdate: update },
|
|
5348
|
+
...followUp === void 0 ? {} : { followUp },
|
|
5349
|
+
...followUpState ? { hint: "panels.market.migrationHint" } : {},
|
|
5283
5350
|
pkg: version.pkg
|
|
5284
5351
|
};
|
|
5285
5352
|
}
|
|
@@ -5287,6 +5354,7 @@ function workbenchRow(version) {
|
|
|
5287
5354
|
//#region src/app/layouts/rightbar/market-hint.ts
|
|
5288
5355
|
var PROBLEM_KEY = "panels.market.hasProblem";
|
|
5289
5356
|
var RESTART_KEY = "panels.market.pendingRestart";
|
|
5357
|
+
var FOLLOWUP_KEY = "panels.market.pendingFollowUp";
|
|
5290
5358
|
var UNKNOWN_KEY = "panels.market.unchecked";
|
|
5291
5359
|
var UPDATES_KEY = "panels.market.hasNew";
|
|
5292
5360
|
function isProblem(row) {
|
|
@@ -5317,12 +5385,14 @@ function marketHintOf(input) {
|
|
|
5317
5385
|
];
|
|
5318
5386
|
const problem = rows.some(isProblem);
|
|
5319
5387
|
const restart = rows.some(isRestart) || awaitsRestart(input.manifests, installed);
|
|
5388
|
+
const followUp = rows.some((row) => row.state === "pending-followup");
|
|
5320
5389
|
const rosterRead = input.modules !== null;
|
|
5321
5390
|
const unknown = rows.some((row) => isUnknown(row, rosterRead));
|
|
5322
5391
|
const updates = marketHasUpdates(rows, sharedRows(marketable, input.capabilities));
|
|
5323
5392
|
const more = [];
|
|
5324
5393
|
if (problem) {
|
|
5325
5394
|
if (restart) more.push(RESTART_KEY);
|
|
5395
|
+
if (followUp) more.push(FOLLOWUP_KEY);
|
|
5326
5396
|
if (unknown) more.push(UNKNOWN_KEY);
|
|
5327
5397
|
if (updates) more.push(UPDATES_KEY);
|
|
5328
5398
|
return {
|
|
@@ -5332,6 +5402,7 @@ function marketHintOf(input) {
|
|
|
5332
5402
|
};
|
|
5333
5403
|
}
|
|
5334
5404
|
if (restart) {
|
|
5405
|
+
if (followUp) more.push(FOLLOWUP_KEY);
|
|
5335
5406
|
if (unknown) more.push(UNKNOWN_KEY);
|
|
5336
5407
|
if (updates) more.push(UPDATES_KEY);
|
|
5337
5408
|
return {
|
|
@@ -5340,6 +5411,15 @@ function marketHintOf(input) {
|
|
|
5340
5411
|
...more.length === 0 ? {} : { moreKeys: more }
|
|
5341
5412
|
};
|
|
5342
5413
|
}
|
|
5414
|
+
if (followUp) {
|
|
5415
|
+
if (unknown) more.push(UNKNOWN_KEY);
|
|
5416
|
+
if (updates) more.push(UPDATES_KEY);
|
|
5417
|
+
return {
|
|
5418
|
+
labelKey: FOLLOWUP_KEY,
|
|
5419
|
+
tone: "warning",
|
|
5420
|
+
...more.length === 0 ? {} : { moreKeys: more }
|
|
5421
|
+
};
|
|
5422
|
+
}
|
|
5343
5423
|
if (unknown) {
|
|
5344
5424
|
if (updates) more.push(UPDATES_KEY);
|
|
5345
5425
|
return {
|
|
@@ -5635,114 +5715,121 @@ function useMarketTransient(input) {
|
|
|
5635
5715
|
};
|
|
5636
5716
|
}
|
|
5637
5717
|
var MarketPage_module_default = {
|
|
5638
|
-
marketList: "
|
|
5639
|
-
marketRow: "
|
|
5640
|
-
marketIcon: "
|
|
5641
|
-
marketMain: "
|
|
5642
|
-
marketName: "
|
|
5643
|
-
marketStatus: "
|
|
5644
|
-
marketStateText: "
|
|
5645
|
-
marketSep: "
|
|
5646
|
-
marketReason: "
|
|
5647
|
-
marketVersion: "
|
|
5648
|
-
marketLocalTag: "
|
|
5649
|
-
marketEnd: "
|
|
5650
|
-
marketSwitchSeat: "
|
|
5651
|
-
marketActions: "
|
|
5652
|
-
marketUpdateAction: "
|
|
5653
|
-
marketSelfDivider: "
|
|
5654
|
-
marketSection: "
|
|
5655
|
-
marketSectionHead: "
|
|
5656
|
-
marketSectionIcon: "
|
|
5657
|
-
marketSectionTitle: "
|
|
5658
|
-
marketSectionCount: "
|
|
5659
|
-
marketSectionQuiet: "
|
|
5660
|
-
marketProgress: "
|
|
5661
|
-
marketNote: "
|
|
5662
|
-
marketFailure: "
|
|
5663
|
-
marketEmpty: "
|
|
5664
|
-
marketPage: "
|
|
5665
|
-
marketPageHead: "
|
|
5666
|
-
marketPageTitle: "
|
|
5667
|
-
marketPageIntro: "
|
|
5668
|
-
marketPageTools: "
|
|
5669
|
-
marketPanel: "
|
|
5670
|
-
marketTabs: "
|
|
5671
|
-
marketTabList: "
|
|
5672
|
-
marketIconButton: "
|
|
5673
|
-
marketIconWrap: "
|
|
5674
|
-
marketIconButtonSpinning: "
|
|
5675
|
-
"wb-spin": "_wb-
|
|
5676
|
-
marketAddButton: "
|
|
5677
|
-
marketEmptyTitle: "
|
|
5678
|
-
discoverPage: "
|
|
5679
|
-
discoverBar: "
|
|
5680
|
-
discoverTools: "
|
|
5681
|
-
discoverMarket: "
|
|
5682
|
-
discoverMarketButton: "
|
|
5683
|
-
discoverMarketName: "
|
|
5684
|
-
discoverLabels: "
|
|
5685
|
-
discoverSort: "
|
|
5686
|
-
discoverRefresh: "
|
|
5687
|
-
discoverSearch: "
|
|
5688
|
-
|
|
5689
|
-
|
|
5690
|
-
|
|
5691
|
-
|
|
5692
|
-
|
|
5693
|
-
|
|
5694
|
-
|
|
5695
|
-
|
|
5696
|
-
|
|
5697
|
-
|
|
5698
|
-
|
|
5699
|
-
|
|
5700
|
-
|
|
5701
|
-
|
|
5702
|
-
|
|
5703
|
-
|
|
5704
|
-
|
|
5705
|
-
|
|
5706
|
-
|
|
5707
|
-
|
|
5708
|
-
|
|
5709
|
-
|
|
5710
|
-
|
|
5711
|
-
|
|
5712
|
-
|
|
5713
|
-
|
|
5714
|
-
|
|
5715
|
-
|
|
5716
|
-
|
|
5717
|
-
|
|
5718
|
-
|
|
5719
|
-
|
|
5720
|
-
|
|
5721
|
-
|
|
5722
|
-
|
|
5723
|
-
|
|
5724
|
-
|
|
5725
|
-
|
|
5726
|
-
|
|
5727
|
-
|
|
5728
|
-
|
|
5729
|
-
|
|
5730
|
-
|
|
5731
|
-
|
|
5732
|
-
|
|
5733
|
-
|
|
5734
|
-
|
|
5735
|
-
|
|
5736
|
-
|
|
5737
|
-
|
|
5738
|
-
|
|
5739
|
-
|
|
5740
|
-
|
|
5741
|
-
|
|
5742
|
-
|
|
5743
|
-
|
|
5744
|
-
|
|
5745
|
-
|
|
5718
|
+
marketList: "_marketList_1idrk_1",
|
|
5719
|
+
marketRow: "_marketRow_1idrk_10",
|
|
5720
|
+
marketIcon: "_marketIcon_1idrk_20",
|
|
5721
|
+
marketMain: "_marketMain_1idrk_32",
|
|
5722
|
+
marketName: "_marketName_1idrk_39",
|
|
5723
|
+
marketStatus: "_marketStatus_1idrk_48",
|
|
5724
|
+
marketStateText: "_marketStateText_1idrk_58",
|
|
5725
|
+
marketSep: "_marketSep_1idrk_62",
|
|
5726
|
+
marketReason: "_marketReason_1idrk_66",
|
|
5727
|
+
marketVersion: "_marketVersion_1idrk_72",
|
|
5728
|
+
marketLocalTag: "_marketLocalTag_1idrk_94",
|
|
5729
|
+
marketEnd: "_marketEnd_1idrk_105",
|
|
5730
|
+
marketSwitchSeat: "_marketSwitchSeat_1idrk_112",
|
|
5731
|
+
marketActions: "_marketActions_1idrk_125",
|
|
5732
|
+
marketUpdateAction: "_marketUpdateAction_1idrk_131",
|
|
5733
|
+
marketSelfDivider: "_marketSelfDivider_1idrk_137",
|
|
5734
|
+
marketSection: "_marketSection_1idrk_143",
|
|
5735
|
+
marketSectionHead: "_marketSectionHead_1idrk_150",
|
|
5736
|
+
marketSectionIcon: "_marketSectionIcon_1idrk_156",
|
|
5737
|
+
marketSectionTitle: "_marketSectionTitle_1idrk_163",
|
|
5738
|
+
marketSectionCount: "_marketSectionCount_1idrk_169",
|
|
5739
|
+
marketSectionQuiet: "_marketSectionQuiet_1idrk_175",
|
|
5740
|
+
marketProgress: "_marketProgress_1idrk_188",
|
|
5741
|
+
marketNote: "_marketNote_1idrk_198",
|
|
5742
|
+
marketFailure: "_marketFailure_1idrk_205",
|
|
5743
|
+
marketEmpty: "_marketEmpty_1idrk_212",
|
|
5744
|
+
marketPage: "_marketPage_1idrk_217",
|
|
5745
|
+
marketPageHead: "_marketPageHead_1idrk_235",
|
|
5746
|
+
marketPageTitle: "_marketPageTitle_1idrk_243",
|
|
5747
|
+
marketPageIntro: "_marketPageIntro_1idrk_248",
|
|
5748
|
+
marketPageTools: "_marketPageTools_1idrk_254",
|
|
5749
|
+
marketPanel: "_marketPanel_1idrk_263",
|
|
5750
|
+
marketTabs: "_marketTabs_1idrk_273",
|
|
5751
|
+
marketTabList: "_marketTabList_1idrk_278",
|
|
5752
|
+
marketIconButton: "_marketIconButton_1idrk_283",
|
|
5753
|
+
marketIconWrap: "_marketIconWrap_1idrk_308",
|
|
5754
|
+
marketIconButtonSpinning: "_marketIconButtonSpinning_1idrk_312",
|
|
5755
|
+
"wb-spin": "_wb-spin_1idrk_1",
|
|
5756
|
+
marketAddButton: "_marketAddButton_1idrk_316",
|
|
5757
|
+
marketEmptyTitle: "_marketEmptyTitle_1idrk_333",
|
|
5758
|
+
discoverPage: "_discoverPage_1idrk_347",
|
|
5759
|
+
discoverBar: "_discoverBar_1idrk_354",
|
|
5760
|
+
discoverTools: "_discoverTools_1idrk_361",
|
|
5761
|
+
discoverMarket: "_discoverMarket_1idrk_367",
|
|
5762
|
+
discoverMarketButton: "_discoverMarketButton_1idrk_372",
|
|
5763
|
+
discoverMarketName: "_discoverMarketName_1idrk_379",
|
|
5764
|
+
discoverLabels: "_discoverLabels_1idrk_385",
|
|
5765
|
+
discoverSort: "_discoverSort_1idrk_390",
|
|
5766
|
+
discoverRefresh: "_discoverRefresh_1idrk_395",
|
|
5767
|
+
discoverSearch: "_discoverSearch_1idrk_399",
|
|
5768
|
+
discoverSearchField: "_discoverSearchField_1idrk_407",
|
|
5769
|
+
discoverSearchFieldFilled: "_discoverSearchFieldFilled_1idrk_412",
|
|
5770
|
+
discoverSearchClear: "_discoverSearchClear_1idrk_421",
|
|
5771
|
+
discoverChips: "_discoverChips_1idrk_472",
|
|
5772
|
+
discoverList: "_discoverList_1idrk_479",
|
|
5773
|
+
discoverCard: "_discoverCard_1idrk_488",
|
|
5774
|
+
discoverArtwork: "_discoverArtwork_1idrk_502",
|
|
5775
|
+
discoverArtworkImage: "_discoverArtworkImage_1idrk_514",
|
|
5776
|
+
discoverMain: "_discoverMain_1idrk_518",
|
|
5777
|
+
discoverTitleRow: "_discoverTitleRow_1idrk_526",
|
|
5778
|
+
discoverCardOpen: "_discoverCardOpen_1idrk_534",
|
|
5779
|
+
discoverStrong: "_discoverStrong_1idrk_565",
|
|
5780
|
+
discoverDesc: "_discoverDesc_1idrk_571",
|
|
5781
|
+
discoverMeta: "_discoverMeta_1idrk_580",
|
|
5782
|
+
discoverMuted: "_discoverMuted_1idrk_587",
|
|
5783
|
+
discoverEnd: "_discoverEnd_1idrk_593",
|
|
5784
|
+
discoverBlocked: "_discoverBlocked_1idrk_602",
|
|
5785
|
+
discoverEmpty: "_discoverEmpty_1idrk_607",
|
|
5786
|
+
discoverEmptyTitle: "_discoverEmptyTitle_1idrk_616",
|
|
5787
|
+
discoverDetail: "_discoverDetail_1idrk_626",
|
|
5788
|
+
discoverCrumb: "_discoverCrumb_1idrk_632",
|
|
5789
|
+
discoverCrumbIcon: "_discoverCrumbIcon_1idrk_655",
|
|
5790
|
+
discoverDetailHead: "_discoverDetailHead_1idrk_659",
|
|
5791
|
+
discoverDetailTitle: "_discoverDetailTitle_1idrk_665",
|
|
5792
|
+
discoverDetailText: "_discoverDetailText_1idrk_671",
|
|
5793
|
+
discoverDetailPanel: "_discoverDetailPanel_1idrk_678",
|
|
5794
|
+
discoverDetailTabs: "_discoverDetailTabs_1idrk_685",
|
|
5795
|
+
discoverDetailTabList: "_discoverDetailTabList_1idrk_690",
|
|
5796
|
+
discoverDocBody: "_discoverDocBody_1idrk_695",
|
|
5797
|
+
discoverDocNotice: "_discoverDocNotice_1idrk_700",
|
|
5798
|
+
discoverSection: "_discoverSection_1idrk_706",
|
|
5799
|
+
discoverSectionTitle: "_discoverSectionTitle_1idrk_713",
|
|
5800
|
+
discoverFacts: "_discoverFacts_1idrk_719",
|
|
5801
|
+
discoverFactRow: "_discoverFactRow_1idrk_724",
|
|
5802
|
+
discoverFactKind: "_discoverFactKind_1idrk_734",
|
|
5803
|
+
discoverFactValue: "_discoverFactValue_1idrk_740",
|
|
5804
|
+
discoverCode: "_discoverCode_1idrk_748",
|
|
5805
|
+
discoverTags: "_discoverTags_1idrk_757",
|
|
5806
|
+
discoverLink: "_discoverLink_1idrk_764",
|
|
5807
|
+
discoverVersions: "_discoverVersions_1idrk_774",
|
|
5808
|
+
discoverVersionRow: "_discoverVersionRow_1idrk_782",
|
|
5809
|
+
discoverVersionName: "_discoverVersionName_1idrk_790",
|
|
5810
|
+
discoverError: "_discoverError_1idrk_795",
|
|
5811
|
+
discoverFailure: "_discoverFailure_1idrk_804",
|
|
5812
|
+
discoverLoading: "_discoverLoading_1idrk_810",
|
|
5813
|
+
discoverNotice: "_discoverNotice_1idrk_819",
|
|
5814
|
+
discoverMore: "_discoverMore_1idrk_837",
|
|
5815
|
+
discoverDialog: "_discoverDialog_1idrk_841",
|
|
5816
|
+
discoverDialogBody: "_discoverDialogBody_1idrk_845",
|
|
5817
|
+
discoverSourceList: "_discoverSourceList_1idrk_851",
|
|
5818
|
+
discoverSourceRow: "_discoverSourceRow_1idrk_859",
|
|
5819
|
+
discoverSourceCurrent: "_discoverSourceCurrent_1idrk_868",
|
|
5820
|
+
discoverSourceLoading: "_discoverSourceLoading_1idrk_875",
|
|
5821
|
+
discoverSourceHint: "_discoverSourceHint_1idrk_885",
|
|
5822
|
+
discoverSourceError: "_discoverSourceError_1idrk_899",
|
|
5823
|
+
discoverSourceForm: "_discoverSourceForm_1idrk_905",
|
|
5824
|
+
discoverGrow: "_discoverGrow_1idrk_911",
|
|
5825
|
+
discoverField: "_discoverField_1idrk_916",
|
|
5826
|
+
discoverFieldLabel: "_discoverFieldLabel_1idrk_922",
|
|
5827
|
+
discoverConfirmHead: "_discoverConfirmHead_1idrk_927",
|
|
5828
|
+
discoverSkeletonFill: "_discoverSkeletonFill_1idrk_933",
|
|
5829
|
+
"wb-skeleton": "_wb-skeleton_1idrk_1",
|
|
5830
|
+
discoverSkeletonBar: "_discoverSkeletonBar_1idrk_942",
|
|
5831
|
+
discoverSkeletonTitle: "_discoverSkeletonTitle_1idrk_949",
|
|
5832
|
+
discoverSkeletonDesc: "_discoverSkeletonDesc_1idrk_953"
|
|
5746
5833
|
};
|
|
5747
5834
|
//#endregion
|
|
5748
5835
|
//#region src/app/layouts/market/discover-states.tsx
|
|
@@ -5766,6 +5853,13 @@ function DiscoverSkeleton({ label }) {
|
|
|
5766
5853
|
function DiscoverEmptyText({ text }) {
|
|
5767
5854
|
return /* @__PURE__ */ createElement("p", { className: MarketPage_module_default.discoverMuted }, text);
|
|
5768
5855
|
}
|
|
5856
|
+
function DiscoverLoading({ label }) {
|
|
5857
|
+
return /* @__PURE__ */ createElement("p", {
|
|
5858
|
+
className: MarketPage_module_default.discoverLoading,
|
|
5859
|
+
role: "status",
|
|
5860
|
+
"aria-live": "polite"
|
|
5861
|
+
}, /* @__PURE__ */ createElement(StateDot, { state: "ongoing" }), label);
|
|
5862
|
+
}
|
|
5769
5863
|
function DiscoverFailure({ t, text, onRetry }) {
|
|
5770
5864
|
return /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverFailure }, /* @__PURE__ */ createElement("p", {
|
|
5771
5865
|
className: MarketPage_module_default.discoverError,
|
|
@@ -5834,6 +5928,18 @@ function sharedRowKind(row) {
|
|
|
5834
5928
|
return row.kind === "extension" ? "plugin" : "lib";
|
|
5835
5929
|
}
|
|
5836
5930
|
//#endregion
|
|
5931
|
+
//#region src/app/layouts/rightbar/market-names.ts
|
|
5932
|
+
function namesOf(t, modules, titleOf) {
|
|
5933
|
+
const shown = /* @__PURE__ */ new Map();
|
|
5934
|
+
for (const module of modules) {
|
|
5935
|
+
const key = unitTitleKey(module.unit);
|
|
5936
|
+
const live = t(key);
|
|
5937
|
+
const name = live !== key && live !== "" ? live : titleOf(module.title);
|
|
5938
|
+
if (name !== "") shown.set(module.unit, name);
|
|
5939
|
+
}
|
|
5940
|
+
return shown;
|
|
5941
|
+
}
|
|
5942
|
+
//#endregion
|
|
5837
5943
|
//#region src/app/layouts/rightbar/market-view-text.ts
|
|
5838
5944
|
var PROGRESS_KEY = {
|
|
5839
5945
|
install: "panels.market.installing",
|
|
@@ -5844,7 +5950,9 @@ var PROGRESS_KEY = {
|
|
|
5844
5950
|
"update-dependency": "panels.market.updating",
|
|
5845
5951
|
"update-plugin": "panels.market.updating",
|
|
5846
5952
|
"uninstall-plugin": "panels.market.uninstalling",
|
|
5847
|
-
"update-workbench": "panels.market.updating"
|
|
5953
|
+
"update-workbench": "panels.market.updating",
|
|
5954
|
+
"migrate-workbench": "panels.market.migrating",
|
|
5955
|
+
"dismiss-followup": "panels.market.dismissing"
|
|
5848
5956
|
};
|
|
5849
5957
|
var ACTION_LABEL_KEY = {
|
|
5850
5958
|
install: "panels.market.install",
|
|
@@ -5855,7 +5963,9 @@ var ACTION_LABEL_KEY = {
|
|
|
5855
5963
|
"update-dependency": "panels.market.update",
|
|
5856
5964
|
"update-plugin": "panels.market.update",
|
|
5857
5965
|
"uninstall-plugin": "panels.market.uninstall",
|
|
5858
|
-
"update-workbench": "panels.market.update"
|
|
5966
|
+
"update-workbench": "panels.market.update",
|
|
5967
|
+
"migrate-workbench": "panels.market.migrateAction",
|
|
5968
|
+
"dismiss-followup": "panels.market.dismissFollowUp"
|
|
5859
5969
|
};
|
|
5860
5970
|
function holdOf(pending, application) {
|
|
5861
5971
|
if (pending === null || pending.row === void 0) return void 0;
|
|
@@ -5903,12 +6013,9 @@ function withPinnedRow(rows, pinned) {
|
|
|
5903
6013
|
function marketFootVisible(shown, installed) {
|
|
5904
6014
|
return shown.length > 0 || installed.length > 0;
|
|
5905
6015
|
}
|
|
5906
|
-
|
|
5907
|
-
|
|
5908
|
-
|
|
5909
|
-
if (!mocked) setTitles((known) => mergeTitles(known, manifests));
|
|
5910
|
-
}, [manifests, mocked]);
|
|
5911
|
-
return titles;
|
|
6016
|
+
var NO_NAMES = /* @__PURE__ */ new Map();
|
|
6017
|
+
function marketNamesOf(t, modules, titleOf, mocked) {
|
|
6018
|
+
return mocked ? NO_NAMES : namesOf(t, modules, titleOf);
|
|
5912
6019
|
}
|
|
5913
6020
|
function useHeldRow(pending, backInRoster) {
|
|
5914
6021
|
const [held, setHeld] = useState(void 0);
|
|
@@ -5944,10 +6051,11 @@ function pendingRowOf(input) {
|
|
|
5944
6051
|
const { pending, removing } = input;
|
|
5945
6052
|
if (removing === null || pending === null) return void 0;
|
|
5946
6053
|
if (input.rows.some((row) => row.id === removing)) return void 0;
|
|
6054
|
+
const name = pending.label ?? input.names.get(removing);
|
|
5947
6055
|
return {
|
|
5948
6056
|
id: removing,
|
|
5949
|
-
titleKey: pending.titleKey ??
|
|
5950
|
-
...
|
|
6057
|
+
titleKey: pending.titleKey ?? removing,
|
|
6058
|
+
...name === void 0 ? {} : { label: name },
|
|
5951
6059
|
state: "installed",
|
|
5952
6060
|
canInstall: false,
|
|
5953
6061
|
canUpdate: false,
|
|
@@ -6064,49 +6172,120 @@ var updateActions = [
|
|
|
6064
6172
|
"update-plugin",
|
|
6065
6173
|
"update-workbench"
|
|
6066
6174
|
];
|
|
6175
|
+
function MigrationConfirm({ t, onConfirm, onCancel }) {
|
|
6176
|
+
const [acknowledged, setAcknowledged] = useState(false);
|
|
6177
|
+
return /* @__PURE__ */ createElement(RiskConfirmation, {
|
|
6178
|
+
open: true,
|
|
6179
|
+
title: t("panels.market.migrateConfirmTitle"),
|
|
6180
|
+
description: t("panels.market.migrateConfirmDetail"),
|
|
6181
|
+
acknowledgeLabel: t("panels.market.migrateConfirmAck"),
|
|
6182
|
+
cancelLabel: t("panels.market.confirmNo"),
|
|
6183
|
+
closeLabel: t("panels.market.confirmNo"),
|
|
6184
|
+
confirmLabel: t("panels.market.migrateConfirmYes"),
|
|
6185
|
+
acknowledged,
|
|
6186
|
+
onAcknowledgedChange: setAcknowledged,
|
|
6187
|
+
onCancel,
|
|
6188
|
+
onConfirm
|
|
6189
|
+
});
|
|
6190
|
+
}
|
|
6191
|
+
function DismissFollowUpConfirm({ t, onConfirm, onCancel }) {
|
|
6192
|
+
const [acknowledged, setAcknowledged] = useState(false);
|
|
6193
|
+
return /* @__PURE__ */ createElement(RiskConfirmation, {
|
|
6194
|
+
open: true,
|
|
6195
|
+
title: t("panels.market.dismissFollowUpTitle"),
|
|
6196
|
+
description: t("panels.market.dismissFollowUpDetail"),
|
|
6197
|
+
acknowledgeLabel: t("panels.market.dismissFollowUpAck"),
|
|
6198
|
+
cancelLabel: t("panels.market.confirmNo"),
|
|
6199
|
+
closeLabel: t("panels.market.confirmNo"),
|
|
6200
|
+
confirmLabel: t("panels.market.dismissFollowUpYes"),
|
|
6201
|
+
acknowledged,
|
|
6202
|
+
onAcknowledgedChange: setAcknowledged,
|
|
6203
|
+
onCancel,
|
|
6204
|
+
onConfirm
|
|
6205
|
+
});
|
|
6206
|
+
}
|
|
6207
|
+
function MarketLineDialogs({ t, migrationOpen, dismissOpen, onMigrationCancel, onMigrationConfirm, onDismissCancel, onDismissConfirm }) {
|
|
6208
|
+
return /* @__PURE__ */ createElement(Fragment, null, migrationOpen ? /* @__PURE__ */ createElement(MigrationConfirm, {
|
|
6209
|
+
t,
|
|
6210
|
+
onCancel: onMigrationCancel,
|
|
6211
|
+
onConfirm: onMigrationConfirm
|
|
6212
|
+
}) : null, dismissOpen ? /* @__PURE__ */ createElement(DismissFollowUpConfirm, {
|
|
6213
|
+
t,
|
|
6214
|
+
onCancel: onDismissCancel,
|
|
6215
|
+
onConfirm: onDismissConfirm
|
|
6216
|
+
}) : null);
|
|
6217
|
+
}
|
|
6218
|
+
function MarketLineStatus({ t, row, quiet }) {
|
|
6219
|
+
const stateText = t(MARKET_STATE_KEY[row.state]);
|
|
6220
|
+
const noteText = row.note === void 0 ? null : t(row.note.key, row.note.params);
|
|
6221
|
+
if (quiet) return null;
|
|
6222
|
+
return /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketStatus }, row.state === "checking" ? /* @__PURE__ */ createElement(Spinner, { size: 14 }) : /* @__PURE__ */ createElement(StateDot, {
|
|
6223
|
+
state: MARKET_DOT[row.state],
|
|
6224
|
+
size: 9
|
|
6225
|
+
}), /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketStateText }, stateText), row.hint === void 0 ? null : /* @__PURE__ */ createElement(Fragment, null, /* @__PURE__ */ createElement("span", {
|
|
6226
|
+
className: MarketPage_module_default.marketSep,
|
|
6227
|
+
"aria-hidden": "true"
|
|
6228
|
+
}, "·"), /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketReason }, t(row.hint))), noteText === null ? null : /* @__PURE__ */ createElement(Fragment, null, /* @__PURE__ */ createElement("span", {
|
|
6229
|
+
className: MarketPage_module_default.marketSep,
|
|
6230
|
+
"aria-hidden": "true"
|
|
6231
|
+
}, "·"), /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketReason }, noteText)));
|
|
6232
|
+
}
|
|
6067
6233
|
function MarketLine({ t, row, pending, failure, onAct, onDefault, boardBusy }) {
|
|
6068
6234
|
const running = pending !== null && pending.id === row.id ? pending : null;
|
|
6069
6235
|
const locked = pending !== null;
|
|
6236
|
+
const [migrationOpen, setMigrationOpen] = useState(false);
|
|
6237
|
+
const [dismissOpen, setDismissOpen] = useState(false);
|
|
6070
6238
|
const quiet = row.workbench === true && row.state === "installed" && row.hint === void 0;
|
|
6071
6239
|
const actions = marketActions$1(row);
|
|
6072
6240
|
const switchLocked = marketSwitchLocked(row);
|
|
6073
|
-
const stateText = t(MARKET_STATE_KEY[row.state]);
|
|
6074
|
-
const noteText = row.note === void 0 ? null : t(row.note.key, row.note.params);
|
|
6075
6241
|
return /* @__PURE__ */ createElement("li", { className: MarketPage_module_default.marketRow }, /* @__PURE__ */ createElement("span", {
|
|
6076
6242
|
className: MarketPage_module_default.marketIcon,
|
|
6077
6243
|
"aria-hidden": "true"
|
|
6078
6244
|
}, packageIcon(marketRowKind(row))), /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketMain }, /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketName }, marketRowTitle(row, t), row.versionLabel === void 0 ? null : /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketVersion }, row.versionLabel), row.version === void 0 || row.versionLabel !== void 0 ? null : /* @__PURE__ */ 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", {
|
|
6079
6245
|
from: row.version.installed,
|
|
6080
6246
|
to: row.version.latest
|
|
6081
|
-
}) : row.version.installed ?? row.version.latest ?? ""), row.local === true ? /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketLocalTag }, t("panels.market.localMark")) : null),
|
|
6082
|
-
|
|
6083
|
-
|
|
6084
|
-
|
|
6085
|
-
|
|
6086
|
-
"aria-hidden": "true"
|
|
6087
|
-
}, "·"), /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketReason }, t(row.hint))), noteText === null ? null : /* @__PURE__ */ createElement(Fragment, null, /* @__PURE__ */ createElement("span", {
|
|
6088
|
-
className: MarketPage_module_default.marketSep,
|
|
6089
|
-
"aria-hidden": "true"
|
|
6090
|
-
}, "·"), /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketReason }, noteText)))), /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketEnd }, running !== null ? /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketProgress }, /* @__PURE__ */ createElement(Spinner, { size: 14 }), t(PROGRESS_KEY[running.action])) : actions.length === 0 ? null : /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketActions }, actions.map((action) => {
|
|
6247
|
+
}) : row.version.installed ?? row.version.latest ?? ""), row.local === true ? /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketLocalTag }, t("panels.market.localMark")) : null), /* @__PURE__ */ createElement(MarketLineStatus, {
|
|
6248
|
+
t,
|
|
6249
|
+
row,
|
|
6250
|
+
quiet
|
|
6251
|
+
})), /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketEnd }, running !== null ? /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketProgress }, /* @__PURE__ */ createElement(Spinner, { size: 14 }), t(PROGRESS_KEY[running.action])) : actions.length === 0 ? null : /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketActions }, actions.map((action) => {
|
|
6091
6252
|
const danger = dangerActions.includes(action);
|
|
6092
6253
|
const update = updateActions.includes(action);
|
|
6093
6254
|
return /* @__PURE__ */ createElement(Button, {
|
|
6094
6255
|
key: action,
|
|
6095
6256
|
type: "button",
|
|
6096
6257
|
size: "sm",
|
|
6097
|
-
variant: action === "install" ? "primary" : "outline",
|
|
6258
|
+
variant: action === "install" || action === "migrate-workbench" ? "primary" : "outline",
|
|
6098
6259
|
className: danger ? "wb-dangerAction" : update ? MarketPage_module_default.marketUpdateAction : void 0,
|
|
6099
6260
|
icon: danger ? /* @__PURE__ */ createElement(IconTrashOutlineRegular, { size: 13 }) : void 0,
|
|
6100
6261
|
"aria-label": danger ? t("panels.market.uninstallLabel", { name: marketRowTitle(row, t) }) : void 0,
|
|
6101
6262
|
disabled: locked,
|
|
6102
|
-
onClick: () =>
|
|
6263
|
+
onClick: () => {
|
|
6264
|
+
if (action === "migrate-workbench") setMigrationOpen(true);
|
|
6265
|
+
else if (action === "dismiss-followup") setDismissOpen(true);
|
|
6266
|
+
else onAct(action);
|
|
6267
|
+
}
|
|
6103
6268
|
}, t(ACTION_LABEL_KEY[action]));
|
|
6104
6269
|
})), row.defaultShown === void 0 ? null : /* @__PURE__ */ createElement(Tip, { label: t(switchLocked ? "panels.market.defaultLocked" : "panels.market.defaultHint") }, /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketSwitchSeat }, /* @__PURE__ */ createElement(Switch, {
|
|
6105
6270
|
checked: row.defaultShown,
|
|
6106
6271
|
disabled: boardBusy === true || locked || switchLocked,
|
|
6107
6272
|
label: `${marketRowTitle(row, t)} · ${t("panels.market.defaultLabel")}`,
|
|
6108
6273
|
onChange: (next) => onDefault?.(next)
|
|
6109
|
-
})))), failure === null ? null : /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketFailure }, failure)
|
|
6274
|
+
})))), failure === null ? null : /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketFailure }, failure), /* @__PURE__ */ createElement(MarketLineDialogs, {
|
|
6275
|
+
t,
|
|
6276
|
+
migrationOpen,
|
|
6277
|
+
dismissOpen,
|
|
6278
|
+
onMigrationCancel: () => setMigrationOpen(false),
|
|
6279
|
+
onMigrationConfirm: () => {
|
|
6280
|
+
setMigrationOpen(false);
|
|
6281
|
+
onAct("migrate-workbench");
|
|
6282
|
+
},
|
|
6283
|
+
onDismissCancel: () => setDismissOpen(false),
|
|
6284
|
+
onDismissConfirm: () => {
|
|
6285
|
+
setDismissOpen(false);
|
|
6286
|
+
onAct("dismiss-followup");
|
|
6287
|
+
}
|
|
6288
|
+
}));
|
|
6110
6289
|
}
|
|
6111
6290
|
function MarketSection({ t, titleKey, icon, rows, pending, failureOf, act, confirmActions, onConfirming, onDefault, boardBusy }) {
|
|
6112
6291
|
if (rows.length === 0) return null;
|
|
@@ -6421,10 +6600,13 @@ function marketActOf(options) {
|
|
|
6421
6600
|
seats.setConfirming(null);
|
|
6422
6601
|
seats.setFailed(null);
|
|
6423
6602
|
seats.setNotice(null);
|
|
6424
|
-
const outcome = await send(action === "
|
|
6603
|
+
const outcome = await send(action === "dismiss-followup" ? {
|
|
6604
|
+
action,
|
|
6605
|
+
id: row?.followUp?.id ?? ""
|
|
6606
|
+
} : action === "update-dependency" ? {
|
|
6425
6607
|
action,
|
|
6426
6608
|
id
|
|
6427
|
-
} : action === "remove-bundle" || action === "update-plugin" || action === "uninstall-plugin" || action === "update-workbench" ? {
|
|
6609
|
+
} : action === "remove-bundle" || action === "update-plugin" || action === "uninstall-plugin" || action === "update-workbench" || action === "migrate-workbench" ? {
|
|
6428
6610
|
action,
|
|
6429
6611
|
name: row?.pkg ?? ""
|
|
6430
6612
|
} : {
|
|
@@ -6442,6 +6624,21 @@ function marketActOf(options) {
|
|
|
6442
6624
|
return;
|
|
6443
6625
|
}
|
|
6444
6626
|
const value = outcome.value;
|
|
6627
|
+
if (action === "dismiss-followup") {
|
|
6628
|
+
onChanged({ force: true });
|
|
6629
|
+
seats.setPending(null);
|
|
6630
|
+
seats.setHeld(void 0);
|
|
6631
|
+
seats.setNotice(t("panels.market.dismissed"));
|
|
6632
|
+
return;
|
|
6633
|
+
}
|
|
6634
|
+
if (action === "migrate-workbench") {
|
|
6635
|
+
const added = recordOf(value)?.["added"];
|
|
6636
|
+
onChanged({ force: true });
|
|
6637
|
+
seats.setPending(null);
|
|
6638
|
+
seats.setHeld(void 0);
|
|
6639
|
+
seats.setNotice(t("panels.market.migrateDone", { added: typeof added === "number" ? String(added) : "0" }));
|
|
6640
|
+
return;
|
|
6641
|
+
}
|
|
6445
6642
|
const change = changeOf(value);
|
|
6446
6643
|
const failure = updateVerdictText(updateVerdictOf({
|
|
6447
6644
|
action,
|
|
@@ -6496,9 +6693,6 @@ var CONFIRM_UNINSTALL = [
|
|
|
6496
6693
|
"remove-bundle",
|
|
6497
6694
|
"uninstall-plugin"
|
|
6498
6695
|
];
|
|
6499
|
-
function marketMigrationNotice(t, update) {
|
|
6500
|
-
return update?.migration === "needed" ? t("panels.market.selfUpdateNeedsMigrate") : null;
|
|
6501
|
-
}
|
|
6502
6696
|
function ConfirmUninstall({ t, name, onConfirm, onCancel }) {
|
|
6503
6697
|
const [acknowledged, setAcknowledged] = useState(false);
|
|
6504
6698
|
return /* @__PURE__ */ createElement(RiskConfirmation, {
|
|
@@ -6568,8 +6762,8 @@ function MarketBody({ t, self, shown, pluginList, installedList, shared, pending
|
|
|
6568
6762
|
}));
|
|
6569
6763
|
}
|
|
6570
6764
|
function useMarketScene(input) {
|
|
6571
|
-
const { manifests, installable, capabilities, updates, installed, settling, mock, defaults, changed, pending, failed } = input;
|
|
6572
|
-
const
|
|
6765
|
+
const { t, titleOf, manifests, installable, capabilities, updates, installed, settling, mock, defaults, changed, pending, failed } = input;
|
|
6766
|
+
const names = marketNamesOf(t, installed ?? [], titleOf, mock !== void 0);
|
|
6573
6767
|
const catalog = mock?.manifests ?? manifests;
|
|
6574
6768
|
const marketable = mock === void 0 ? marketCatalog(manifests, installable) : catalog;
|
|
6575
6769
|
const effective = mock === void 0 ? capabilities : mock.capabilities;
|
|
@@ -6583,13 +6777,13 @@ function useMarketScene(input) {
|
|
|
6583
6777
|
const pinned = pinnedRowOf(pending, steady.held);
|
|
6584
6778
|
const busyId = heldIdOf(pending, steady.held);
|
|
6585
6779
|
return {
|
|
6586
|
-
|
|
6780
|
+
names,
|
|
6587
6781
|
catalog,
|
|
6588
6782
|
effective,
|
|
6589
6783
|
updateMap,
|
|
6590
6784
|
rows,
|
|
6591
6785
|
shared,
|
|
6592
|
-
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)),
|
|
6786
|
+
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),
|
|
6593
6787
|
byDefault,
|
|
6594
6788
|
steady,
|
|
6595
6789
|
pinned,
|
|
@@ -6597,12 +6791,14 @@ function useMarketScene(input) {
|
|
|
6597
6791
|
busyId
|
|
6598
6792
|
};
|
|
6599
6793
|
}
|
|
6600
|
-
function MarketView({ t, manifests, installable, capabilities, freshness, onChanged, onPending, updates, installed, installedRead, workbench, selfUpdate, plugins, settling, mock, defaults = [], changed = {} }) {
|
|
6794
|
+
function MarketView({ t, titleOf, manifests, installable, capabilities, freshness, onChanged, onPending, updates, installed, installedRead, workbench, selfUpdate, plugins, settling, mock, defaults = [], changed = {} }) {
|
|
6601
6795
|
const { pending, setPending, confirming, setConfirming, failed, setFailed, notice, setNotice } = useMarketTransient({
|
|
6602
6796
|
mock,
|
|
6603
6797
|
onPending
|
|
6604
6798
|
});
|
|
6605
|
-
const {
|
|
6799
|
+
const { names, effective, updateMap, rows, shared, installedList, byDefault, steady, pinned, removing, busyId } = useMarketScene({
|
|
6800
|
+
t,
|
|
6801
|
+
titleOf,
|
|
6606
6802
|
manifests,
|
|
6607
6803
|
installable,
|
|
6608
6804
|
capabilities,
|
|
@@ -6647,7 +6843,7 @@ function MarketView({ t, manifests, installable, capabilities, freshness, onChan
|
|
|
6647
6843
|
pending,
|
|
6648
6844
|
removing,
|
|
6649
6845
|
rows,
|
|
6650
|
-
|
|
6846
|
+
names
|
|
6651
6847
|
});
|
|
6652
6848
|
const self = workbenchRow(mock === void 0 ? workbench : mock.workbench);
|
|
6653
6849
|
const shown = withPinnedRow(pendingRow === void 0 ? rows : [...rows, pendingRow], pinned);
|
|
@@ -6675,21 +6871,18 @@ function MarketView({ t, manifests, installable, capabilities, freshness, onChan
|
|
|
6675
6871
|
send: (body) => provision.send(body),
|
|
6676
6872
|
onChanged
|
|
6677
6873
|
});
|
|
6678
|
-
const landed = pendingLanded(pending, updateMap, effective, workbench?.installed, shared, pluginSource === null ? null : pluginList, {
|
|
6679
|
-
units: installed === void 0 ? null : new Set(installed.map((module) => module.unit)),
|
|
6680
|
-
plugins: pluginSource === null ? null : new Set(pluginList.map((row) => row.id))
|
|
6681
|
-
});
|
|
6682
|
-
const effectiveSelfUpdate = mock?.selfUpdate ?? selfUpdate;
|
|
6683
6874
|
useSettleHold({
|
|
6684
6875
|
pending,
|
|
6685
|
-
landed,
|
|
6876
|
+
landed: pendingLanded(pending, updateMap, effective, workbench?.installed, shared, pluginSource === null ? null : pluginList, {
|
|
6877
|
+
units: installed === void 0 ? null : new Set(installed.map((module) => module.unit)),
|
|
6878
|
+
plugins: pluginSource === null ? null : new Set(pluginList.map((row) => row.id))
|
|
6879
|
+
}),
|
|
6686
6880
|
t,
|
|
6687
6881
|
onChanged,
|
|
6688
|
-
selfUpdate:
|
|
6882
|
+
selfUpdate: mock?.selfUpdate ?? selfUpdate,
|
|
6689
6883
|
setPending,
|
|
6690
6884
|
setFailed
|
|
6691
6885
|
});
|
|
6692
|
-
const migrationNotice = marketMigrationNotice(t, effectiveSelfUpdate);
|
|
6693
6886
|
const settled = marketSettled(freshness, installedRead);
|
|
6694
6887
|
const nothing = shown.length === 0 && self === void 0 && installedList.length === 0 && pluginList.length === 0;
|
|
6695
6888
|
if (!settled || (settling?.size ?? 0) > 0 && shown.length === 0 && installedList.length === 0) return /* @__PURE__ */ createElement(MarketChecking, { t });
|
|
@@ -6703,7 +6896,7 @@ function MarketView({ t, manifests, installable, capabilities, freshness, onChan
|
|
|
6703
6896
|
shared,
|
|
6704
6897
|
pending,
|
|
6705
6898
|
failed,
|
|
6706
|
-
notice
|
|
6899
|
+
notice,
|
|
6707
6900
|
act,
|
|
6708
6901
|
onConfirming: setConfirming,
|
|
6709
6902
|
setDefault,
|
|
@@ -6919,7 +7112,7 @@ function sourceFromUrl(raw) {
|
|
|
6919
7112
|
if (url === "" || url.includes("#") || hasCredentials(url)) return { ok: false };
|
|
6920
7113
|
if (HTTP.test(url)) {
|
|
6921
7114
|
const asGit = REPO_FILE.test(url);
|
|
6922
|
-
const label = hostOf(url);
|
|
7115
|
+
const label = asGit ? sourceSuffix(url) || hostOf(url) : hostOf(url);
|
|
6923
7116
|
if (label === "") return { ok: false };
|
|
6924
7117
|
return {
|
|
6925
7118
|
ok: true,
|
|
@@ -6952,6 +7145,13 @@ function sameSourceUrl(left, right) {
|
|
|
6952
7145
|
function sourceSuffix(url) {
|
|
6953
7146
|
return (withoutTrailingSlash(url).split(/[/:]/).filter((part) => part !== "").pop() ?? "").replace(/\.git$/, "");
|
|
6954
7147
|
}
|
|
7148
|
+
function sourceTransport(url) {
|
|
7149
|
+
if (GIT_SSH.test(url) || /^ssh:\/\//i.test(url) || /^git\+ssh:\/\//i.test(url)) return "ssh";
|
|
7150
|
+
if (/^git:\/\//i.test(url)) return "git";
|
|
7151
|
+
if (/^https:\/\//i.test(url)) return "https";
|
|
7152
|
+
if (/^http:\/\//i.test(url)) return "http";
|
|
7153
|
+
return "";
|
|
7154
|
+
}
|
|
6955
7155
|
function sourceLabelsOf(sources) {
|
|
6956
7156
|
const counts = /* @__PURE__ */ new Map();
|
|
6957
7157
|
for (const source of sources) counts.set(source.label, (counts.get(source.label) ?? 0) + 1);
|
|
@@ -6962,7 +7162,8 @@ function sourceLabelsOf(sources) {
|
|
|
6962
7162
|
continue;
|
|
6963
7163
|
}
|
|
6964
7164
|
const suffix = sourceSuffix(source.url);
|
|
6965
|
-
|
|
7165
|
+
const detail = suffix !== "" && suffix !== source.label ? suffix : sourceTransport(source.url);
|
|
7166
|
+
labels.set(source.id, detail === "" ? source.url : `${detail} · ${source.label}`);
|
|
6966
7167
|
}
|
|
6967
7168
|
return labels;
|
|
6968
7169
|
}
|
|
@@ -7089,11 +7290,15 @@ function DiscoverVersions({ t, locale, entry, onInstall }) {
|
|
|
7089
7290
|
var MARKET_DISCOVER_ROUTE = "panels/market-discover";
|
|
7090
7291
|
var MARKET_DOC_ROUTE = "panels/market-doc";
|
|
7091
7292
|
var MARKET_PUBLISH_PREVIEW_ROUTE = "panels/market-publish-preview";
|
|
7293
|
+
var MARKET_SOURCES_ROUTE = "panels/market-sources";
|
|
7092
7294
|
//#endregion
|
|
7093
7295
|
//#region src/shared/hooks/market-queries.ts
|
|
7094
7296
|
function readMarketDiscover(options = {}) {
|
|
7095
7297
|
return apiGet(MARKET_DISCOVER_ROUTE, options.force === true ? { force: "1" } : {});
|
|
7096
7298
|
}
|
|
7299
|
+
function readMarketSources() {
|
|
7300
|
+
return apiGet(MARKET_SOURCES_ROUTE);
|
|
7301
|
+
}
|
|
7097
7302
|
function readMarketDoc(name, version, kind) {
|
|
7098
7303
|
return apiGet(MARKET_DOC_ROUTE, {
|
|
7099
7304
|
name,
|
|
@@ -7101,10 +7306,11 @@ function readMarketDoc(name, version, kind) {
|
|
|
7101
7306
|
kind
|
|
7102
7307
|
});
|
|
7103
7308
|
}
|
|
7104
|
-
function readPublishPreview(unit, version) {
|
|
7309
|
+
function readPublishPreview(unit, version, author) {
|
|
7105
7310
|
return apiGet(MARKET_PUBLISH_PREVIEW_ROUTE, {
|
|
7106
7311
|
unit,
|
|
7107
|
-
...version === void 0 || version === "" ? {} : { version }
|
|
7312
|
+
...version === void 0 || version === "" ? {} : { version },
|
|
7313
|
+
...author === void 0 || author === "" ? {} : { author }
|
|
7108
7314
|
});
|
|
7109
7315
|
}
|
|
7110
7316
|
//#endregion
|
|
@@ -7358,6 +7564,7 @@ function DiscoverSourcesDialog(props) {
|
|
|
7358
7564
|
const [url, setUrl] = useState("");
|
|
7359
7565
|
const [problem, setProblem] = useState(null);
|
|
7360
7566
|
const pending = props.busy || props.adding;
|
|
7567
|
+
const selectedVisible = props.sources.some((source) => source.id === props.selected);
|
|
7361
7568
|
const add = () => {
|
|
7362
7569
|
if (pending) return;
|
|
7363
7570
|
const parsed = sourceFromUrl(url);
|
|
@@ -7380,13 +7587,29 @@ function DiscoverSourcesDialog(props) {
|
|
|
7380
7587
|
closeLabel: t("panels.discover.close"),
|
|
7381
7588
|
description: t("panels.discover.sourcesIntro"),
|
|
7382
7589
|
className: MarketPage_module_default.discoverDialog
|
|
7383
|
-
}, /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverDialogBody }, props.
|
|
7590
|
+
}, /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverDialogBody }, props.loading && !selectedVisible ? props.slow ? /* @__PURE__ */ createElement("p", {
|
|
7591
|
+
className: MarketPage_module_default.discoverNotice,
|
|
7592
|
+
role: "note"
|
|
7593
|
+
}, /* @__PURE__ */ createElement(IconWarningOutlineRegular, {
|
|
7594
|
+
size: 14,
|
|
7595
|
+
"aria-hidden": "true"
|
|
7596
|
+
}), /* @__PURE__ */ createElement("span", null, t("panels.discover.slowHint"))) : /* @__PURE__ */ createElement(DiscoverLoading, { label: t("panels.discover.loading") }) : null, props.sources.length === 0 ? null : /* @__PURE__ */ createElement("ul", {
|
|
7384
7597
|
className: MarketPage_module_default.discoverSourceList,
|
|
7385
7598
|
"aria-label": t("panels.discover.sourcesLabel")
|
|
7386
7599
|
}, props.sources.map((source) => /* @__PURE__ */ createElement("li", {
|
|
7387
7600
|
key: source.id,
|
|
7388
7601
|
className: MarketPage_module_default.discoverSourceRow
|
|
7389
|
-
}, /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverMain }, /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverStrong }, source.label), /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverMeta }, source.url), props.problem?.id === source.id ? /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverSourceError }, props.problem.detail) : null), /* @__PURE__ */ createElement(
|
|
7602
|
+
}, /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverMain }, /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverStrong }, source.label), /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverMeta }, source.url), !props.loading && props.problem?.id === source.id ? /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverSourceError }, props.problem.detail) : null), source.id === props.selected ? props.loading ? /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverSourceLoading }, /* @__PURE__ */ createElement(StateDot, { state: "ongoing" }), t("panels.discover.loading")) : /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverSourceCurrent }, t("panels.discover.sourceCurrent")) : /* @__PURE__ */ createElement(Button, {
|
|
7603
|
+
type: "button",
|
|
7604
|
+
variant: "ghost",
|
|
7605
|
+
size: "sm",
|
|
7606
|
+
"aria-label": t("panels.discover.useSourceNamed", { label: source.label }),
|
|
7607
|
+
disabled: pending,
|
|
7608
|
+
onClick: () => {
|
|
7609
|
+
props.onSelect(source.id);
|
|
7610
|
+
props.onClose();
|
|
7611
|
+
}
|
|
7612
|
+
}, t("panels.discover.useSource")), /* @__PURE__ */ createElement(Tooltip, {
|
|
7390
7613
|
label: t("panels.discover.removeSource"),
|
|
7391
7614
|
side: "bottom",
|
|
7392
7615
|
portal: true,
|
|
@@ -7399,7 +7622,13 @@ function DiscoverSourcesDialog(props) {
|
|
|
7399
7622
|
"aria-label": t("panels.discover.removeSourceNamed", { url: source.url }),
|
|
7400
7623
|
disabled: pending,
|
|
7401
7624
|
onClick: () => props.onRemove(source.id)
|
|
7402
|
-
}))
|
|
7625
|
+
})), source.id === props.selected && props.loading && props.slow ? /* @__PURE__ */ createElement("span", {
|
|
7626
|
+
className: MarketPage_module_default.discoverSourceHint,
|
|
7627
|
+
role: "note"
|
|
7628
|
+
}, /* @__PURE__ */ createElement(IconWarningOutlineRegular, {
|
|
7629
|
+
size: 12,
|
|
7630
|
+
"aria-hidden": "true"
|
|
7631
|
+
}), t("panels.discover.slowHint")) : null))), /* @__PURE__ */ createElement("form", {
|
|
7403
7632
|
className: MarketPage_module_default.discoverSourceForm,
|
|
7404
7633
|
onSubmit: (event) => {
|
|
7405
7634
|
event.preventDefault();
|
|
@@ -7442,12 +7671,16 @@ function DiscoverDialogs({ t, d }) {
|
|
|
7442
7671
|
t,
|
|
7443
7672
|
open: d.manageOpen,
|
|
7444
7673
|
sources: d.sources,
|
|
7674
|
+
selected: d.selected,
|
|
7675
|
+
loading: d.loading,
|
|
7676
|
+
slow: d.slow,
|
|
7445
7677
|
problem: d.problem,
|
|
7446
7678
|
busy: d.busy,
|
|
7447
7679
|
adding: d.addingSource,
|
|
7448
7680
|
onClose: () => d.setManageOpen(false),
|
|
7449
7681
|
onAdd: d.addSource,
|
|
7450
|
-
onRemove: d.removeSourceById
|
|
7682
|
+
onRemove: d.removeSourceById,
|
|
7683
|
+
onSelect: d.selectSource
|
|
7451
7684
|
}), /* @__PURE__ */ createElement(DiscoverConfirm, {
|
|
7452
7685
|
t,
|
|
7453
7686
|
locale: d.locale,
|
|
@@ -7484,6 +7717,34 @@ function DiscoverCategories({ t, categories, category, onCategory }) {
|
|
|
7484
7717
|
}, item)));
|
|
7485
7718
|
}
|
|
7486
7719
|
//#endregion
|
|
7720
|
+
//#region src/app/layouts/market/discover-search.tsx
|
|
7721
|
+
function DiscoverSearch({ t, value, disabled, onChange }) {
|
|
7722
|
+
const field = useRef(null);
|
|
7723
|
+
return /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverSearch }, /* @__PURE__ */ createElement(Input, {
|
|
7724
|
+
ref: field,
|
|
7725
|
+
className: value === "" ? MarketPage_module_default.discoverSearchField : `${MarketPage_module_default.discoverSearchField} ${MarketPage_module_default.discoverSearchFieldFilled}`,
|
|
7726
|
+
type: "search",
|
|
7727
|
+
icon: /* @__PURE__ */ createElement(IconSearchOutlineRegular, { size: 14 }),
|
|
7728
|
+
value,
|
|
7729
|
+
placeholder: t("panels.discover.search"),
|
|
7730
|
+
"aria-label": t("panels.discover.search"),
|
|
7731
|
+
disabled,
|
|
7732
|
+
onChange: (event) => onChange(event.currentTarget.value)
|
|
7733
|
+
}), value === "" ? null : /* @__PURE__ */ createElement(Button, {
|
|
7734
|
+
type: "button",
|
|
7735
|
+
size: "sm",
|
|
7736
|
+
variant: "ghost",
|
|
7737
|
+
className: MarketPage_module_default.discoverSearchClear,
|
|
7738
|
+
"aria-label": t("panels.discover.clearSearch"),
|
|
7739
|
+
disabled,
|
|
7740
|
+
icon: /* @__PURE__ */ createElement(IconCloseOutlineRegular, { size: 14 }),
|
|
7741
|
+
onClick: () => {
|
|
7742
|
+
onChange("");
|
|
7743
|
+
field.current?.focus();
|
|
7744
|
+
}
|
|
7745
|
+
}));
|
|
7746
|
+
}
|
|
7747
|
+
//#endregion
|
|
7487
7748
|
//#region src/app/layouts/market/discover-toolbar.tsx
|
|
7488
7749
|
var TEXT_DELAY_MS = 250;
|
|
7489
7750
|
function DiscoverToolbar(props) {
|
|
@@ -7537,14 +7798,11 @@ function DiscoverToolbar(props) {
|
|
|
7537
7798
|
size: 12,
|
|
7538
7799
|
"aria-hidden": "true"
|
|
7539
7800
|
}))
|
|
7540
|
-
}), /* @__PURE__ */ createElement(
|
|
7541
|
-
|
|
7542
|
-
type: "search",
|
|
7543
|
-
icon: /* @__PURE__ */ createElement(IconSearchOutlineRegular, { size: 14 }),
|
|
7801
|
+
}), /* @__PURE__ */ createElement(DiscoverSearch, {
|
|
7802
|
+
t,
|
|
7544
7803
|
value: text,
|
|
7545
|
-
|
|
7546
|
-
|
|
7547
|
-
onChange: (event) => setText(event.currentTarget.value)
|
|
7804
|
+
disabled: props.loading,
|
|
7805
|
+
onChange: setText
|
|
7548
7806
|
}), props.labels.length === 0 ? null : /* @__PURE__ */ createElement(Menu, {
|
|
7549
7807
|
className: MarketPage_module_default.discoverLabels,
|
|
7550
7808
|
open: open === "filter",
|
|
@@ -7592,6 +7850,7 @@ function DiscoverToolbar(props) {
|
|
|
7592
7850
|
variant: "ghost",
|
|
7593
7851
|
"aria-haspopup": "menu",
|
|
7594
7852
|
"aria-expanded": open === "sort",
|
|
7853
|
+
disabled: props.loading,
|
|
7595
7854
|
onClick: () => setOpen(open === "sort" ? null : "sort")
|
|
7596
7855
|
}, t("panels.discover.sortWith", { label: sortName }), /* @__PURE__ */ createElement(IconChevronDownOutlineRegular, {
|
|
7597
7856
|
size: 12,
|
|
@@ -7630,6 +7889,12 @@ var SHIPPED = [
|
|
|
7630
7889
|
"restart-required",
|
|
7631
7890
|
"overridden"
|
|
7632
7891
|
];
|
|
7892
|
+
function sourceRowsOf(sources) {
|
|
7893
|
+
return sources.map((source) => ({
|
|
7894
|
+
...source,
|
|
7895
|
+
writable: source.kind === "http" ? false : null
|
|
7896
|
+
}));
|
|
7897
|
+
}
|
|
7633
7898
|
function installVerdictOf(value, t) {
|
|
7634
7899
|
const change = changeOf(value);
|
|
7635
7900
|
if (change === void 0) return { kind: "quiet" };
|
|
@@ -7643,6 +7908,7 @@ function installVerdictOf(value, t) {
|
|
|
7643
7908
|
function useDiscover(t, active, onInstalled) {
|
|
7644
7909
|
const [payload, setPayload] = useState(null);
|
|
7645
7910
|
const [loading, setLoading] = useState(true);
|
|
7911
|
+
const [slow, setSlow] = useState(false);
|
|
7646
7912
|
const [failure, setFailure] = useState(null);
|
|
7647
7913
|
const [query, setQuery] = useState("");
|
|
7648
7914
|
const [category, setCategory] = useState(null);
|
|
@@ -7655,7 +7921,10 @@ function useDiscover(t, active, onInstalled) {
|
|
|
7655
7921
|
const [choice, setChoice] = useState(null);
|
|
7656
7922
|
const [notice, setNotice] = useState(null);
|
|
7657
7923
|
const [addingSource, setAddingSource] = useState(false);
|
|
7924
|
+
const [knownSources, setKnownSources] = useState(null);
|
|
7658
7925
|
const loaded = useRef(false);
|
|
7926
|
+
const loadTicket = useRef(0);
|
|
7927
|
+
const sourceTicket = useRef(0);
|
|
7659
7928
|
const locale = useMemo(() => localeNow(), []);
|
|
7660
7929
|
const sources = useHostWrite({
|
|
7661
7930
|
channel: "actions",
|
|
@@ -7666,11 +7935,27 @@ function useDiscover(t, active, onInstalled) {
|
|
|
7666
7935
|
channel: "provision",
|
|
7667
7936
|
networkText: t("panels.discover.failed")
|
|
7668
7937
|
});
|
|
7938
|
+
const loadSources = useCallback(async () => {
|
|
7939
|
+
const ticket = sourceTicket.current + 1;
|
|
7940
|
+
sourceTicket.current = ticket;
|
|
7941
|
+
const response = await readMarketSources().catch(() => null);
|
|
7942
|
+
if (sourceTicket.current !== ticket) return;
|
|
7943
|
+
if (response === null || !response.ok) return;
|
|
7944
|
+
setKnownSources({
|
|
7945
|
+
sources: sourceRowsOf(response.sources),
|
|
7946
|
+
selected: response.selected
|
|
7947
|
+
});
|
|
7948
|
+
}, []);
|
|
7669
7949
|
const load = useCallback(async (force = false) => {
|
|
7950
|
+
const ticket = loadTicket.current + 1;
|
|
7951
|
+
loadTicket.current = ticket;
|
|
7670
7952
|
setLoading(true);
|
|
7953
|
+
setSlow(false);
|
|
7671
7954
|
setFailure(null);
|
|
7672
7955
|
const response = await readMarketDiscover({ force }).catch(() => null);
|
|
7956
|
+
if (loadTicket.current !== ticket) return;
|
|
7673
7957
|
setLoading(false);
|
|
7958
|
+
setSlow(false);
|
|
7674
7959
|
if (response === null || !response.ok) {
|
|
7675
7960
|
setFailure(t("panels.discover.unreadable"));
|
|
7676
7961
|
return;
|
|
@@ -7678,11 +7963,29 @@ function useDiscover(t, active, onInstalled) {
|
|
|
7678
7963
|
setPayload(response);
|
|
7679
7964
|
setLimit(50);
|
|
7680
7965
|
}, [t]);
|
|
7966
|
+
const beginSwitch = () => {
|
|
7967
|
+
loadTicket.current += 1;
|
|
7968
|
+
sourceTicket.current += 1;
|
|
7969
|
+
setFailure(null);
|
|
7970
|
+
setPayload(null);
|
|
7971
|
+
setLoading(true);
|
|
7972
|
+
setSlow(false);
|
|
7973
|
+
};
|
|
7681
7974
|
useEffect(() => {
|
|
7682
7975
|
if (!active || loaded.current) return;
|
|
7683
7976
|
loaded.current = true;
|
|
7977
|
+
loadSources();
|
|
7684
7978
|
load();
|
|
7685
|
-
}, [
|
|
7979
|
+
}, [
|
|
7980
|
+
active,
|
|
7981
|
+
load,
|
|
7982
|
+
loadSources
|
|
7983
|
+
]);
|
|
7984
|
+
useEffect(() => {
|
|
7985
|
+
if (!loading) return void 0;
|
|
7986
|
+
const timer = setTimeout(() => setSlow(true), 8e3);
|
|
7987
|
+
return () => clearTimeout(timer);
|
|
7988
|
+
}, [loading]);
|
|
7686
7989
|
useEffect(() => subscribeFactRevision(CAPABILITY_FACT, () => {
|
|
7687
7990
|
if (!loaded.current) return;
|
|
7688
7991
|
load(true);
|
|
@@ -7736,6 +8039,8 @@ function useDiscover(t, active, onInstalled) {
|
|
|
7736
8039
|
const done = typeof value?.["branch"] === "string" ? value["branch"] : branch;
|
|
7737
8040
|
setInitOpen(false);
|
|
7738
8041
|
setNotice(t("panels.discover.initDone", { branch: done }));
|
|
8042
|
+
beginSwitch();
|
|
8043
|
+
await loadSources();
|
|
7739
8044
|
await load(true);
|
|
7740
8045
|
});
|
|
7741
8046
|
};
|
|
@@ -7753,8 +8058,11 @@ function useDiscover(t, active, onInstalled) {
|
|
|
7753
8058
|
id
|
|
7754
8059
|
},
|
|
7755
8060
|
select: true
|
|
7756
|
-
}).then(
|
|
7757
|
-
if (outcome.ok)
|
|
8061
|
+
}).then((outcome) => {
|
|
8062
|
+
if (!outcome.ok) return;
|
|
8063
|
+
beginSwitch();
|
|
8064
|
+
loadSources();
|
|
8065
|
+
load(true);
|
|
7758
8066
|
}).finally(() => setAddingSource(false));
|
|
7759
8067
|
};
|
|
7760
8068
|
const removeSourceById = (id) => {
|
|
@@ -7766,6 +8074,8 @@ function useDiscover(t, active, onInstalled) {
|
|
|
7766
8074
|
}).then(async (outcome) => {
|
|
7767
8075
|
if (!outcome.ok) return;
|
|
7768
8076
|
setDetail(null);
|
|
8077
|
+
beginSwitch();
|
|
8078
|
+
await loadSources();
|
|
7769
8079
|
await load(true);
|
|
7770
8080
|
});
|
|
7771
8081
|
};
|
|
@@ -7778,11 +8088,23 @@ function useDiscover(t, active, onInstalled) {
|
|
|
7778
8088
|
setSelectedLabels([]);
|
|
7779
8089
|
setSort("default");
|
|
7780
8090
|
setDetail(null);
|
|
8091
|
+
beginSwitch();
|
|
8092
|
+
setKnownSources((current) => current === null ? current : {
|
|
8093
|
+
sources: current.sources,
|
|
8094
|
+
selected: id
|
|
8095
|
+
});
|
|
7781
8096
|
sources.send({
|
|
7782
8097
|
action: "select",
|
|
7783
8098
|
id
|
|
7784
8099
|
}).then(async (outcome) => {
|
|
7785
|
-
if (outcome.ok)
|
|
8100
|
+
if (!outcome.ok) {
|
|
8101
|
+
setLoading(false);
|
|
8102
|
+
setSlow(false);
|
|
8103
|
+
loadSources();
|
|
8104
|
+
return;
|
|
8105
|
+
}
|
|
8106
|
+
await loadSources();
|
|
8107
|
+
await load(true);
|
|
7786
8108
|
});
|
|
7787
8109
|
};
|
|
7788
8110
|
const install = () => {
|
|
@@ -7817,9 +8139,10 @@ function useDiscover(t, active, onInstalled) {
|
|
|
7817
8139
|
locale,
|
|
7818
8140
|
payload,
|
|
7819
8141
|
loading,
|
|
8142
|
+
slow,
|
|
7820
8143
|
failure,
|
|
7821
|
-
sources: payload?.sources ?? [],
|
|
7822
|
-
selected: payload?.selected ?? null,
|
|
8144
|
+
sources: payload?.sources ?? knownSources?.sources ?? [],
|
|
8145
|
+
selected: payload?.selected ?? knownSources?.selected ?? null,
|
|
7823
8146
|
entries,
|
|
7824
8147
|
shown,
|
|
7825
8148
|
total: sorted.length,
|
|
@@ -7890,35 +8213,45 @@ function DiscoverPanel({ t, active, onInstalled, onShowInstalled }) {
|
|
|
7890
8213
|
t,
|
|
7891
8214
|
d
|
|
7892
8215
|
});
|
|
7893
|
-
|
|
8216
|
+
const slowHint = !d.manageOpen && d.loading && d.slow ? /* @__PURE__ */ createElement("p", {
|
|
8217
|
+
className: MarketPage_module_default.discoverNotice,
|
|
8218
|
+
role: "note"
|
|
8219
|
+
}, /* @__PURE__ */ createElement(IconWarningOutlineRegular, {
|
|
8220
|
+
size: 14,
|
|
8221
|
+
"aria-hidden": "true"
|
|
8222
|
+
}), /* @__PURE__ */ createElement("span", null, t("panels.discover.slowHint"))) : null;
|
|
8223
|
+
if (d.payload === null) return /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverPage }, d.sources.length === 0 ? null : toolbar, d.loading ? /* @__PURE__ */ createElement(DiscoverSkeleton, { label: t("panels.discover.loading") }) : /* @__PURE__ */ createElement(DiscoverFailure, {
|
|
7894
8224
|
t,
|
|
7895
8225
|
text: t("panels.discover.sourcesFailed"),
|
|
7896
8226
|
onRetry: d.reload
|
|
7897
|
-
}), dialogs);
|
|
8227
|
+
}), slowHint, d.writeFailed === null ? null : /* @__PURE__ */ createElement("p", { className: MarketPage_module_default.discoverError }, d.writeFailed), dialogs);
|
|
7898
8228
|
if (d.payload.state === "no-source") return /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverPage }, /* @__PURE__ */ createElement(DiscoverNoSource, {
|
|
7899
8229
|
t,
|
|
7900
8230
|
onAdd: () => d.setManageOpen(true)
|
|
7901
8231
|
}), dialogs);
|
|
7902
|
-
const
|
|
8232
|
+
const failed = d.payload.state === "invalid" || d.payload.state === "unreadable";
|
|
8233
|
+
const readFailed = !d.loading && failed ? d.payload.state === "invalid" ? t("panels.discover.invalid") : t("panels.discover.unreadable") : null;
|
|
8234
|
+
const uninitialized = d.loading ? null : d.uninitialized;
|
|
8235
|
+
const retrying = d.loading && failed;
|
|
7903
8236
|
const emptyText = unfiltered({
|
|
7904
8237
|
query: d.query,
|
|
7905
8238
|
category: d.category,
|
|
7906
8239
|
labels: d.selectedLabels
|
|
7907
8240
|
}) ? t("panels.discover.empty") : t("panels.discover.noMatch");
|
|
7908
|
-
return /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverPage }, toolbar, d.payload.stale === true ? /* @__PURE__ */ createElement("p", {
|
|
8241
|
+
return /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverPage }, toolbar, d.loading && !d.manageOpen ? /* @__PURE__ */ createElement(DiscoverLoading, { label: t("panels.discover.loading") }) : null, slowHint, !d.loading && d.payload.stale === true ? /* @__PURE__ */ createElement("p", {
|
|
7909
8242
|
className: MarketPage_module_default.discoverNotice,
|
|
7910
8243
|
role: "note"
|
|
7911
8244
|
}, /* @__PURE__ */ createElement(IconWarningOutlineRegular, {
|
|
7912
8245
|
size: 14,
|
|
7913
8246
|
"aria-hidden": "true"
|
|
7914
|
-
}), /* @__PURE__ */ createElement("span", null, t("panels.discover.stale"))) : null,
|
|
8247
|
+
}), /* @__PURE__ */ createElement("span", null, t("panels.discover.stale"))) : null, uninitialized === null ? readFailed === null ? null : /* @__PURE__ */ createElement(DiscoverFailure, {
|
|
7915
8248
|
t,
|
|
7916
8249
|
text: readFailed,
|
|
7917
8250
|
onRetry: d.reload
|
|
7918
8251
|
}) : /* @__PURE__ */ createElement(DiscoverUninitialized, {
|
|
7919
8252
|
t,
|
|
7920
|
-
path:
|
|
7921
|
-
empty:
|
|
8253
|
+
path: uninitialized.path,
|
|
8254
|
+
empty: uninitialized.empty,
|
|
7922
8255
|
onInit: () => d.setInitOpen(true)
|
|
7923
8256
|
}), d.notice === null ? null : /* @__PURE__ */ createElement("p", {
|
|
7924
8257
|
className: MarketPage_module_default.discoverNotice,
|
|
@@ -7937,7 +8270,7 @@ function DiscoverPanel({ t, active, onInstalled, onShowInstalled }) {
|
|
|
7937
8270
|
version
|
|
7938
8271
|
}),
|
|
7939
8272
|
onShowInstalled
|
|
7940
|
-
}) : readFailed !== null ||
|
|
8273
|
+
}) : readFailed !== null || uninitialized !== null || retrying ? null : d.shown.length === 0 ? /* @__PURE__ */ createElement(DiscoverEmptyText, { text: emptyText }) : /* @__PURE__ */ createElement(DiscoverRows, {
|
|
7941
8274
|
t,
|
|
7942
8275
|
locale: d.locale,
|
|
7943
8276
|
entries: d.shown,
|
|
@@ -8718,7 +9051,7 @@ function newRequestId() {
|
|
|
8718
9051
|
return crypto.randomUUID();
|
|
8719
9052
|
}
|
|
8720
9053
|
function useAddModule(options) {
|
|
8721
|
-
const {
|
|
9054
|
+
const { onInstalled, failedText } = options;
|
|
8722
9055
|
const [spec, setSpec] = useState("");
|
|
8723
9056
|
const [choice, setChoice] = useState({
|
|
8724
9057
|
kind: "default",
|
|
@@ -8749,7 +9082,6 @@ function useAddModule(options) {
|
|
|
8749
9082
|
networkText: failedText
|
|
8750
9083
|
});
|
|
8751
9084
|
useEffect(() => {
|
|
8752
|
-
if (!open) return void 0;
|
|
8753
9085
|
let alive = true;
|
|
8754
9086
|
readBundleRegistries().then((response) => {
|
|
8755
9087
|
if (!alive) return;
|
|
@@ -8758,19 +9090,8 @@ function useAddModule(options) {
|
|
|
8758
9090
|
return () => {
|
|
8759
9091
|
alive = false;
|
|
8760
9092
|
};
|
|
8761
|
-
}, [
|
|
9093
|
+
}, []);
|
|
8762
9094
|
const registry = registryOf(choice, custom);
|
|
8763
|
-
useEffect(() => {
|
|
8764
|
-
if (open) return;
|
|
8765
|
-
generationRef.current += 1;
|
|
8766
|
-
setGuideOpen(false);
|
|
8767
|
-
setRegistryOpen(false);
|
|
8768
|
-
setProblem(null);
|
|
8769
|
-
setPreview(null);
|
|
8770
|
-
setOutcome(null);
|
|
8771
|
-
setFailure(null);
|
|
8772
|
-
setPhase("idle");
|
|
8773
|
-
}, [open]);
|
|
8774
9095
|
const check = useCallback(() => {
|
|
8775
9096
|
const wanted = spec.trim();
|
|
8776
9097
|
if (wanted === "") return;
|
|
@@ -8907,15 +9228,21 @@ function useAddModule(options) {
|
|
|
8907
9228
|
//#endregion
|
|
8908
9229
|
//#region src/app/layouts/market/AddModuleDialog.tsx
|
|
8909
9230
|
function AddModuleDialog({ t, open, onClose, onInstalled }) {
|
|
9231
|
+
if (!open) return null;
|
|
9232
|
+
return /* @__PURE__ */ createElement(AddModuleContent, {
|
|
9233
|
+
t,
|
|
9234
|
+
onClose,
|
|
9235
|
+
onInstalled
|
|
9236
|
+
});
|
|
9237
|
+
}
|
|
9238
|
+
function AddModuleContent({ t, onClose, onInstalled }) {
|
|
8910
9239
|
const real = useAddModule({
|
|
8911
|
-
open,
|
|
8912
9240
|
onInstalled,
|
|
8913
9241
|
failedText: t("panels.failed")
|
|
8914
9242
|
});
|
|
8915
9243
|
const devAdd = devSurface.useStrips("addModule", []);
|
|
8916
9244
|
const mock = devAdd.current;
|
|
8917
9245
|
const state = mock === void 0 ? real : devSurface.addModuleState(real, mock);
|
|
8918
|
-
if (!open) return null;
|
|
8919
9246
|
const installing = state.phase === "installing";
|
|
8920
9247
|
const checking = state.phase === "inspecting";
|
|
8921
9248
|
const empty = state.spec.trim() === "";
|
|
@@ -8975,7 +9302,7 @@ function AddModuleDialog({ t, open, onClose, onInstalled }) {
|
|
|
8975
9302
|
onClick: () => state.install()
|
|
8976
9303
|
}, t("panels.market.add.retry")) : null) : null);
|
|
8977
9304
|
return /* @__PURE__ */ createElement(Modal, {
|
|
8978
|
-
open,
|
|
9305
|
+
open: true,
|
|
8979
9306
|
onClose: () => {
|
|
8980
9307
|
if (!installing) onClose();
|
|
8981
9308
|
},
|
|
@@ -9048,7 +9375,7 @@ function makeMarketEntryIcon(units) {
|
|
|
9048
9375
|
return /* @__PURE__ */ createElement(IconModules, { size });
|
|
9049
9376
|
};
|
|
9050
9377
|
}
|
|
9051
|
-
function MarketPanel({ t, units }) {
|
|
9378
|
+
function MarketPanel({ t, units, titleOf }) {
|
|
9052
9379
|
const manifests = useLiveManifests(units);
|
|
9053
9380
|
const installable = useInstallableUnits(units);
|
|
9054
9381
|
const { capabilities, checkedAt, checking, forceProbe, reload: reloadCapability } = useCapabilityMap(0);
|
|
@@ -9146,6 +9473,7 @@ function MarketPanel({ t, units }) {
|
|
|
9146
9473
|
}, /* @__PURE__ */ createElement(MarketView, {
|
|
9147
9474
|
key: `${mock?.id ?? "real-market"}-${mockNonce}`,
|
|
9148
9475
|
t,
|
|
9476
|
+
titleOf,
|
|
9149
9477
|
manifests,
|
|
9150
9478
|
installable,
|
|
9151
9479
|
capabilities,
|
|
@@ -9181,6 +9509,10 @@ function MarketPanel({ t, units }) {
|
|
|
9181
9509
|
}
|
|
9182
9510
|
function registerMarketPanel(ctx, units) {
|
|
9183
9511
|
const t = ctx.locale.bind(LOCALE_NS);
|
|
9512
|
+
const titleOf = (title) => title === void 0 ? "" : ctx.locale.resolveText?.({
|
|
9513
|
+
zh: title.zh,
|
|
9514
|
+
en: title.en
|
|
9515
|
+
}) ?? title.zh;
|
|
9184
9516
|
ctx.slots.inject("sidebar.panellist", () => ctx.slots.register({
|
|
9185
9517
|
name: "sidebar.panellist",
|
|
9186
9518
|
id: MARKET_PANEL_ID,
|
|
@@ -9192,7 +9524,10 @@ function registerMarketPanel(ctx, units) {
|
|
|
9192
9524
|
name: "main",
|
|
9193
9525
|
key: MARKET_PANEL_ID,
|
|
9194
9526
|
locale: LOCALE_NS,
|
|
9195
|
-
inject: () => ({
|
|
9527
|
+
inject: () => ({
|
|
9528
|
+
units,
|
|
9529
|
+
titleOf
|
|
9530
|
+
})
|
|
9196
9531
|
}, MarketPanel));
|
|
9197
9532
|
}
|
|
9198
9533
|
//#endregion
|
|
@@ -9244,6 +9579,14 @@ function flush() {
|
|
|
9244
9579
|
}).catch(() => void 0);
|
|
9245
9580
|
}
|
|
9246
9581
|
//#endregion
|
|
9582
|
+
//#region src/shared/hooks/resource-view.ts
|
|
9583
|
+
var IDLE = { phase: "idle" };
|
|
9584
|
+
var LOADING = { phase: "loading" };
|
|
9585
|
+
function resourceViewOf(enabled, current, identity) {
|
|
9586
|
+
if (!enabled) return IDLE;
|
|
9587
|
+
return current.identity === identity ? current.state : LOADING;
|
|
9588
|
+
}
|
|
9589
|
+
//#endregion
|
|
9247
9590
|
//#region src/shared/hooks/use-api-resource.ts
|
|
9248
9591
|
var use_api_resource_exports = /* @__PURE__ */ __exportAll({
|
|
9249
9592
|
readKeyOf: () => readKeyOf,
|
|
@@ -9315,7 +9658,10 @@ function useApiResource(route, query, refreshToken, options = {}) {
|
|
|
9315
9658
|
const identity = resourceIdentity(route, query, options.key);
|
|
9316
9659
|
const factRev = useFactRevision(options.fact ?? factOfRoute(route));
|
|
9317
9660
|
const key = readKeyOf(identity, refreshToken, factRev);
|
|
9318
|
-
const [
|
|
9661
|
+
const [current, setCurrent] = useState(() => ({
|
|
9662
|
+
identity,
|
|
9663
|
+
state: enabled ? LOADING : IDLE
|
|
9664
|
+
}));
|
|
9319
9665
|
const lastIdentity = useRef(null);
|
|
9320
9666
|
const queryRef = useRef(query);
|
|
9321
9667
|
useEffect(() => {
|
|
@@ -9324,17 +9670,23 @@ function useApiResource(route, query, refreshToken, options = {}) {
|
|
|
9324
9670
|
useEffect(() => {
|
|
9325
9671
|
if (!enabled) {
|
|
9326
9672
|
lastIdentity.current = null;
|
|
9327
|
-
setState({ phase: "idle" });
|
|
9328
9673
|
return;
|
|
9329
9674
|
}
|
|
9330
9675
|
let cancelled = false;
|
|
9676
|
+
const put = (state) => setCurrent({
|
|
9677
|
+
identity,
|
|
9678
|
+
state
|
|
9679
|
+
});
|
|
9331
9680
|
const sameIdentity = lastIdentity.current === identity;
|
|
9332
9681
|
lastIdentity.current = identity;
|
|
9333
|
-
|
|
9334
|
-
|
|
9335
|
-
|
|
9336
|
-
|
|
9337
|
-
|
|
9682
|
+
setCurrent((prev) => ({
|
|
9683
|
+
identity,
|
|
9684
|
+
state: sameIdentity && prev.state.value !== void 0 ? {
|
|
9685
|
+
phase: "loading",
|
|
9686
|
+
value: prev.state.value,
|
|
9687
|
+
...prev.state.at === void 0 ? {} : { at: prev.state.at }
|
|
9688
|
+
} : LOADING
|
|
9689
|
+
}));
|
|
9338
9690
|
const flight = requestResource(route, queryRef.current, key);
|
|
9339
9691
|
const owner = options.report === false ? null : unitOfRoute(route);
|
|
9340
9692
|
if (owner !== null) reportPanelRead({
|
|
@@ -9345,7 +9697,7 @@ function useApiResource(route, query, refreshToken, options = {}) {
|
|
|
9345
9697
|
flight.task.then((response) => {
|
|
9346
9698
|
if (cancelled) return;
|
|
9347
9699
|
if (response.ok) {
|
|
9348
|
-
|
|
9700
|
+
put({
|
|
9349
9701
|
phase: "ready",
|
|
9350
9702
|
value: response,
|
|
9351
9703
|
at: Date.now()
|
|
@@ -9357,7 +9709,7 @@ function useApiResource(route, query, refreshToken, options = {}) {
|
|
|
9357
9709
|
});
|
|
9358
9710
|
return;
|
|
9359
9711
|
}
|
|
9360
|
-
|
|
9712
|
+
put({
|
|
9361
9713
|
phase: "error",
|
|
9362
9714
|
error: response.error
|
|
9363
9715
|
});
|
|
@@ -9373,7 +9725,7 @@ function useApiResource(route, query, refreshToken, options = {}) {
|
|
|
9373
9725
|
}).catch((reason) => {
|
|
9374
9726
|
if (cancelled) return;
|
|
9375
9727
|
const message = reason instanceof Error ? reason.message : String(reason);
|
|
9376
|
-
|
|
9728
|
+
put({
|
|
9377
9729
|
phase: "error",
|
|
9378
9730
|
error: {
|
|
9379
9731
|
code: "network",
|
|
@@ -9404,7 +9756,7 @@ function useApiResource(route, query, refreshToken, options = {}) {
|
|
|
9404
9756
|
options.fact,
|
|
9405
9757
|
options.report
|
|
9406
9758
|
]);
|
|
9407
|
-
return
|
|
9759
|
+
return resourceViewOf(enabled, current, identity);
|
|
9408
9760
|
}
|
|
9409
9761
|
//#endregion
|
|
9410
9762
|
//#region src/shared/hooks/use-diy-debug.ts
|
|
@@ -10451,6 +10803,26 @@ function assembleClientUnits(registry) {
|
|
|
10451
10803
|
for (const face of CLIENT_UNITS) registry.register(face);
|
|
10452
10804
|
}
|
|
10453
10805
|
//#endregion
|
|
10806
|
+
//#region src/app/units/unit-titles.ts
|
|
10807
|
+
var UNIT_TITLES_OWNER = "dsh-workbench";
|
|
10808
|
+
function unitTitlesOf(manifests) {
|
|
10809
|
+
const zh = {};
|
|
10810
|
+
const en = {};
|
|
10811
|
+
for (const manifest of manifests) {
|
|
10812
|
+
const title = manifest.title;
|
|
10813
|
+
if (title === void 0 || title.zh.trim() === "" || title.en.trim() === "") continue;
|
|
10814
|
+
zh[unitTitleKey(manifest.id)] = title.zh;
|
|
10815
|
+
en[unitTitleKey(manifest.id)] = title.en;
|
|
10816
|
+
}
|
|
10817
|
+
return {
|
|
10818
|
+
unit: UNIT_TITLES_OWNER,
|
|
10819
|
+
messages: {
|
|
10820
|
+
zh,
|
|
10821
|
+
en
|
|
10822
|
+
}
|
|
10823
|
+
};
|
|
10824
|
+
}
|
|
10825
|
+
//#endregion
|
|
10454
10826
|
//#region src/kernel/client/board-registry.ts
|
|
10455
10827
|
function createBoardRegistry() {
|
|
10456
10828
|
const modules = [];
|
|
@@ -10511,7 +10883,7 @@ function toBoardModule(face, manifest) {
|
|
|
10511
10883
|
if (View === void 0) return void 0;
|
|
10512
10884
|
return {
|
|
10513
10885
|
id: manifest.id,
|
|
10514
|
-
titleKey: manifest.
|
|
10886
|
+
titleKey: manifest.titleKey,
|
|
10515
10887
|
order: manifest.card?.order ?? 100,
|
|
10516
10888
|
View,
|
|
10517
10889
|
...face.steps === void 0 ? {} : { steps: face.steps }
|
|
@@ -10526,6 +10898,10 @@ function createClientUnitRegistry(options = {}) {
|
|
|
10526
10898
|
let installableIds = null;
|
|
10527
10899
|
let revision = 0;
|
|
10528
10900
|
let manifestsCache;
|
|
10901
|
+
let titleSignature = "";
|
|
10902
|
+
function titlesOf(manifests) {
|
|
10903
|
+
return manifests.flatMap((manifest) => manifest.title === void 0 ? [] : [`${manifest.id}=${manifest.title.zh}/${manifest.title.en}`]).join("|");
|
|
10904
|
+
}
|
|
10529
10905
|
function notify() {
|
|
10530
10906
|
revision += 1;
|
|
10531
10907
|
for (const listener of [...listeners]) try {
|
|
@@ -10605,7 +10981,10 @@ function createClientUnitRegistry(options = {}) {
|
|
|
10605
10981
|
for (const entry of registrations) {
|
|
10606
10982
|
const next = known.get(entry.unit);
|
|
10607
10983
|
if (entry.mounted === null) {
|
|
10608
|
-
if (next !== void 0
|
|
10984
|
+
if (next !== void 0) {
|
|
10985
|
+
attach(entry);
|
|
10986
|
+
changed = true;
|
|
10987
|
+
}
|
|
10609
10988
|
continue;
|
|
10610
10989
|
}
|
|
10611
10990
|
if (next === void 0) {
|
|
@@ -10614,6 +10993,11 @@ function createClientUnitRegistry(options = {}) {
|
|
|
10614
10993
|
changed = true;
|
|
10615
10994
|
}
|
|
10616
10995
|
}
|
|
10996
|
+
const titles = titlesOf(manifests);
|
|
10997
|
+
if (titles !== titleSignature) {
|
|
10998
|
+
titleSignature = titles;
|
|
10999
|
+
changed = true;
|
|
11000
|
+
}
|
|
10617
11001
|
if (!changed) return;
|
|
10618
11002
|
manifestsCache = void 0;
|
|
10619
11003
|
notify();
|
|
@@ -11384,6 +11768,7 @@ function publishRows(args, preview, t) {
|
|
|
11384
11768
|
const unit = textOf(args, "unit");
|
|
11385
11769
|
const target = textOf(args, "target");
|
|
11386
11770
|
const version = textOf(args, "version");
|
|
11771
|
+
const author = textOf(args, "author");
|
|
11387
11772
|
const rows = [
|
|
11388
11773
|
{
|
|
11389
11774
|
label: t("approval.publish.module"),
|
|
@@ -11399,7 +11784,7 @@ function publishRows(args, preview, t) {
|
|
|
11399
11784
|
},
|
|
11400
11785
|
{
|
|
11401
11786
|
label: t("approval.publish.author"),
|
|
11402
|
-
value: preview === void 0 ? t("approval.publish.reading") : preview?.author === void 0 || preview.author === "" ? t("approval.publish.authorMissing") : preview.author
|
|
11787
|
+
value: author !== "" ? author : preview === void 0 ? t("approval.publish.reading") : preview?.author === void 0 || preview.author === "" ? t("approval.publish.authorMissing") : preview.author
|
|
11403
11788
|
}
|
|
11404
11789
|
];
|
|
11405
11790
|
const market = preview?.market;
|
|
@@ -11446,17 +11831,22 @@ function PublishChangelogSeat({ changelog, t }) {
|
|
|
11446
11831
|
function PublishApprovalSeat({ args, t }) {
|
|
11447
11832
|
const unit = textOf(args, "unit");
|
|
11448
11833
|
const version = textOf(args, "version");
|
|
11834
|
+
const author = textOf(args, "author");
|
|
11449
11835
|
const [preview, setPreview] = useState(() => unit === "" ? null : void 0);
|
|
11450
11836
|
useEffect(() => {
|
|
11451
11837
|
if (unit === "") return;
|
|
11452
11838
|
let live = true;
|
|
11453
|
-
readPublishPreview(unit, version).then((response) => {
|
|
11839
|
+
readPublishPreview(unit, version, author).then((response) => {
|
|
11454
11840
|
if (live) setPreview(response.ok ? response.preview : null);
|
|
11455
11841
|
});
|
|
11456
11842
|
return () => {
|
|
11457
11843
|
live = false;
|
|
11458
11844
|
};
|
|
11459
|
-
}, [
|
|
11845
|
+
}, [
|
|
11846
|
+
unit,
|
|
11847
|
+
version,
|
|
11848
|
+
author
|
|
11849
|
+
]);
|
|
11460
11850
|
return createElement(ApprovalPlan, { rows: publishRows(args, preview, t) }, createElement(PublishChangelogSeat, {
|
|
11461
11851
|
changelog: preview?.changelog,
|
|
11462
11852
|
t
|
|
@@ -12221,10 +12611,10 @@ function dismissPanelByPointer(next, scope, onOpenChange) {
|
|
|
12221
12611
|
//#region src/app/layouts/rightbar/PanelModules.tsx
|
|
12222
12612
|
function PanelModules({ t, open, onOpenChange, enabledUnits, workspace, refreshToken, manifests, onOpenMarket }) {
|
|
12223
12613
|
const { capabilities, checkedAt, forceProbe } = useCapabilityMap(refreshToken);
|
|
12224
|
-
const
|
|
12614
|
+
const decided = useRef(false);
|
|
12225
12615
|
useEffect(() => {
|
|
12226
|
-
if (!open || decided) return;
|
|
12227
|
-
|
|
12616
|
+
if (!open || decided.current) return;
|
|
12617
|
+
decided.current = true;
|
|
12228
12618
|
if (!shouldProbeOnEnter({
|
|
12229
12619
|
checkedAt,
|
|
12230
12620
|
now: Date.now(),
|
|
@@ -12234,7 +12624,6 @@ function PanelModules({ t, open, onOpenChange, enabledUnits, workspace, refreshT
|
|
|
12234
12624
|
forceProbe();
|
|
12235
12625
|
}, [
|
|
12236
12626
|
open,
|
|
12237
|
-
decided,
|
|
12238
12627
|
checkedAt,
|
|
12239
12628
|
forceProbe
|
|
12240
12629
|
]);
|
|
@@ -14374,7 +14763,7 @@ function messagesOf(units) {
|
|
|
14374
14763
|
...face.messages === void 0 ? {} : { messages: face.messages }
|
|
14375
14764
|
}));
|
|
14376
14765
|
}
|
|
14377
|
-
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*/";
|
|
14766
|
+
var COMPONENT_CSS_MARKER = ".wb-activityBlock {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n padding-top: var(--wb-len-10);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n.wb-activityBlock:first-child {\n padding-top: 0;\n border-top: none;\n}\n\n.wb-activityBlockHead {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-8);\n}\n\n.wb-activityLine {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-activityLineText {\n flex: none;\n min-width: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n max-height: var(--wb-len-72);\n overflow-y: auto;\n}\n\n.wb-activityLineAt {\n flex: none;\n margin-left: auto;\n font-size: var(--wb-font-10);\n line-height: var(--wb-line-16);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-activityLine > .wb-activityLineAt,\n.wb-activityLine > .wb-activityLineActions {\n margin-left: auto;\n}\n\n.wb-activityLine > .wb-activityLineAt + .wb-activityLineActions {\n margin-left: 0;\n}\n\n.wb-activityLineActions {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n.wb-activityActionFailed {\n color: var(--dsw-alias-state-error-primary);\n}\n.wb-note {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-problem {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n.wb-approvalCommand {\n max-width: 100%;\n}\n.wb-approvalPlan {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n.wb-approvalHint {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n.wb-approvalRows {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n margin: 0;\n}\n.wb-approvalRow {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n.wb-approvalLabel {\n flex: none;\n width: var(--wb-len-56);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-approvalValue {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n.wb-approvalWarn {\n color: var(--dsw-alias-label-secondary);\n}\n.wb-cardHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n flex: none;\n padding: var(--wb-len-8) var(--wb-len-10) var(--wb-len-8) var(--wb-card-gutter);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n.wb-cardTitle {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n font-weight: 600;\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-cardMeta {\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-cardMeta::before {\n content: '\\00b7';\n margin-right: var(--wb-len-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardOpen {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n margin-left: auto;\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-4);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardOpen ~ .wb-cardRefresh {\n margin-left: 0;\n}\n\n.wb-cardOpen:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-cardRefresh {\n margin-left: auto;\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-4);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardRefresh:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-cardRefresh:disabled {\n cursor: default;\n opacity: 1;\n}\n\n.wb-cardGear {\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-3);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardGear:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n.wb-card {\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-xl);\n background: var(--dsw-alias-bg-layer-1);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n flex: none;\n}\n.wb-cardBody {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n padding: var(--wb-len-12) var(--wb-card-gutter);\n font-size: var(--dsw-font-xxs-12-font-size);\n}\n.wb-cardBleed {\n margin-inline: calc(-1 * var(--wb-card-gutter));\n}\n._anchor_yq4s2_1 {\n display: contents;\n}\n.wb-spinner {\n display: inline-flex;\n align-items: center;\n flex: none;\n}\n.wb-choiceMenu {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n background: transparent;\n}\n\n.wb-choiceMenu[data-variant='boxed'] {\n padding: var(--wb-len-4);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n}\n\n.wb-choiceOption {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: pointer;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-choiceOptionOn {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-checkbox {\n position: absolute;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: 0;\n opacity: 0;\n pointer-events: none;\n}\n\n.wb-checkboxBox {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n border: 1px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-xs);\n corner-shape: round;\n color: var(--dsw-alias-label-primary-foreground);\n transition:\n background-color var(--wb-dur-0-12) ease, border-color var(--wb-dur-0-12) ease;\n}\n\n.wb-choiceOption:hover .wb-checkboxBox {\n border-color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-checkbox:checked + .wb-checkboxBox {\n border-color: var(--dsw-alias-brand-primary);\n background: var(--dsw-alias-brand-primary);\n}\n\n.wb-checkbox:disabled + .wb-checkboxBox {\n cursor: default;\n}\n\n.wb-checkbox:focus-visible + .wb-checkboxBox {\n outline: var(--dsw-focus-ring-width, var(--wb-len-2)) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n.wb-choiceOption:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-choiceOption:has(:disabled) {\n cursor: default;\n opacity: 0.5;\n}\n\n.wb-choiceOption:has(:disabled),\n.wb-choiceOption:has(:disabled):hover {\n background: transparent;\n}\n\n.wb-choiceLabel {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.wb-choiceLabelText {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-choiceLabel:has(.wb-choiceDescription) .wb-choiceLabelText {\n overflow: visible;\n white-space: normal;\n overflow-wrap: anywhere;\n}\n\n.wb-choiceDescription {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n.wb-choiceLoading {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-choiceLoadingText {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-choiceEmpty {\n display: flex;\n align-items: center;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-radio {\n appearance: none;\n -webkit-appearance: none;\n flex: none;\n box-sizing: border-box;\n width: var(--wb-len-12);\n height: var(--wb-len-12);\n margin: 0;\n border: 1px solid var(--dsw-alias-border-l3);\n border-radius: 50%;\n corner-shape: round;\n background-color: transparent;\n cursor: pointer;\n transition:\n background-color var(--wb-dur-0-12) ease, border-color var(--wb-dur-0-12) ease;\n}\n\n.wb-radio:not(:checked):hover {\n border-color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-radio:checked {\n border-color: var(--dsw-alias-brand-primary);\n background-image: radial-gradient(\n circle at center,\n var(--dsw-alias-brand-primary) 0 3px,\n transparent 3px\n );\n}\n\n.wb-radio:disabled {\n cursor: default;\n}\n\n.wb-radio:focus-visible {\n outline: var(--dsw-focus-ring-width, var(--wb-len-2)) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n.wb-formActions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\n}\n\n.wb-formActionDanger {\n color: var(--dsw-alias-state-error-primary);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 30%, transparent);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-error-primary) 8%, transparent);\n}\n.wb-rows {\n display: grid;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n column-gap: var(--wb-len-8);\n}\n.wb-rows > :not(.wb-row) {\n grid-column: 1 / -1;\n}\n.wb-row {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n align-items: baseline;\n gap: var(--wb-len-8);\n padding: var(--wb-len-4) 0;\n}\n.wb-row + .wb-row {\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n.wb-rowKey {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-rowValue {\n min-width: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n\n.wb-rows > .wb-row {\n grid-template-columns: subgrid;\n}\n\n@supports not (grid-template-columns: subgrid) {\n .wb-rows > .wb-row {\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n }\n}\n.wb-confirmBar {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n width: 100%;\n box-sizing: border-box;\n padding: var(--wb-len-10) var(--wb-len-12);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n}\n.wb-confirmBarTitle {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 600;\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n.wb-confirmBarHint {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n.wb-field {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n.wb-fieldLabel {\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-fieldHint {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-field:has(:disabled) .wb-fieldLabel {\n opacity: 0.4;\n}\n.wb-formRows {\n display: grid;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n column-gap: var(--wb-len-8);\n row-gap: var(--wb-len-12);\n}\n\n.wb-formRows > :not(.wb-formRow) {\n grid-column: 1 / -1;\n}\n\n.wb-formRow {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n align-items: center;\n column-gap: var(--wb-len-8);\n row-gap: var(--wb-len-8);\n}\n\n.wb-formRow[data-layout='stacked'] {\n grid-template-columns: minmax(0, 1fr);\n align-items: stretch;\n gap: var(--wb-len-6);\n}\n\n.wb-formRows > .wb-formRow[data-layout='stacked'] {\n grid-template-columns: minmax(0, 1fr);\n}\n\n.wb-formLabel {\n justify-self: start;\n min-width: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n white-space: nowrap;\n}\n\n.wb-formRow[data-layout='stacked'] .wb-formLabel {\n white-space: normal;\n}\n\n.wb-formRow[data-layout='stacked'] .wb-formHint,\n.wb-formRow[data-layout='stacked'] .wb-formProblem {\n grid-column: 1 / -1;\n}\n\n.wb-formControl {\n display: flex;\n align-items: center;\n min-width: 0;\n}\n\n.wb-formControl\n > :where(\n .wb-selectAnchor,\n .wb-choiceMenu,\n input:not(\n [type='checkbox'],\n [type='radio'],\n [type='button'],\n [type='submit'],\n [type='reset'],\n [type='image'],\n [type='color'],\n [type='range']\n ),\n select,\n textarea\n ) {\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n}\n\n.wb-formHint {\n grid-column: 2;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-formProblem {\n grid-column: 2;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-formRow:has(.wb-formProblem) .wb-formLabel {\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-formRow:has(:disabled) .wb-formLabel {\n opacity: 0.4;\n}\n\n.wb-formRows > .wb-formRow {\n grid-template-columns: subgrid;\n}\n\n@supports not (grid-template-columns: subgrid) {\n .wb-formRows > .wb-formRow {\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n }\n}\n.wb-form {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n width: 100%;\n}\n:where(.wb-link) {\n margin-left: var(--wb-len-2);\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n font: inherit;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n white-space: nowrap;\n vertical-align: baseline;\n}\n\n:where(.wb-link:hover) {\n text-decoration: underline;\n}\n\n:where(.wb-link:focus-visible) {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n.wb-longTask {\n padding-top: var(--wb-len-12);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n.wb-longTaskHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n}\n\n.wb-longTaskLink {\n flex: none;\n}\n\n.wb-longTaskHeadline {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-longTaskProblem {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n.wb-longTaskDump {\n margin: var(--wb-len-2) 0 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-longTaskDump pre {\n margin: var(--wb-len-4) 0 0;\n max-height: var(--wb-len-220);\n overflow: auto;\n}\n\n.wb-longTaskStop {\n display: inline-flex;\n flex: none;\n align-items: center;\n align-self: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n padding: 0;\n margin-left: auto;\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-specific-menu);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n.wb-longTaskStop:hover:not(:disabled),\n.wb-longTaskStop:focus-visible {\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-longTaskStop:disabled {\n cursor: default;\n}\n\n.wb-longTaskStopArmed,\n.wb-longTaskStopArmed:hover:not(:disabled),\n.wb-longTaskStopArmed:focus-visible {\n gap: var(--wb-len-4);\n width: auto;\n padding: 0 var(--wb-len-7);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent);\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-longTaskStopLabel {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n.wb-longTaskStopWhy {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n.wb-centered.wb-centeredCompact {\n flex: none;\n min-height: 0;\n gap: var(--wb-len-8);\n padding: var(--wb-len-20) var(--wb-len-16);\n}\n\n.wb-centered.wb-centeredCompact .wb-centeredHero {\n margin-bottom: var(--wb-len-4);\n}\n\n.wb-skeleton {\n display: flex;\n flex-direction: column;\n}\n\n.wb-skeletonRow {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n}\n\n.wb-skeletonRow + .wb-skeletonRow::before {\n content: '';\n align-self: stretch;\n height: var(--wb-len-0-5);\n margin: 0 var(--wb-len-8) var(--wb-len-neg-0-5);\n background: var(--dsw-alias-border-l2);\n}\n\n.wb-skeletonBar {\n display: block;\n height: var(--wb-len-13);\n border-radius: var(--dsw-radius-xs);\n background: var(--dsw-alias-bg-skeleton);\n animation: wb-skeleton-pulse var(--wb-dur-1-4) var(--ds-ease-in-out) infinite;\n}\n\n.wb-skeletonBarTitle {\n width: 62%;\n}\n\n.wb-skeletonBarMeta {\n width: 32%;\n height: var(--wb-len-10);\n}\n\n.wb-skeletonRow:nth-child(2n) .wb-skeletonBarTitle {\n width: 74%;\n}\n\n.wb-skeletonRow:nth-child(3n) .wb-skeletonBarTitle {\n width: 52%;\n}\n\n@keyframes wb-skeleton-pulse {\n 50% {\n opacity: 0.45;\n }\n}\n\n.wb-centered {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: var(--wb-len-14);\n flex: 1;\n min-height: var(--wb-len-240);\n padding: 0 var(--wb-len-24) var(--wb-len-24);\n text-align: center;\n}\n\n.wb-centeredHero {\n display: flex;\n margin-bottom: var(--wb-len-16);\n color: var(--dsw-alias-label-dimmed);\n}\n\n.wb-centeredTitle {\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-centeredHint {\n max-width: var(--wb-len-300);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-centeredDetail {\n max-width: var(--wb-len-320);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-dimmed);\n word-break: break-all;\n}\n\n.wb-centeredAction {\n display: flex;\n justify-content: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-2);\n}\n@media (prefers-reduced-motion: reduce) {\n .wb-skeletonBar {\n animation: none;\n }}\n.wb-textField {\n box-sizing: border-box;\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-primary);\n outline: none;\n}\n\n.wb-textField:focus {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-textField:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.wb-textField[aria-invalid='true'] {\n border-color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-textField[aria-invalid='true']:focus {\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-error-primary);\n}\n\n:where(.wb-textField) {\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n}\n:where(.wb-selectTrigger) {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n width: 100%;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-primary);\n text-align: left;\n cursor: pointer;\n}\n\n.wb-selectTrigger:focus-visible {\n outline: none;\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-selectTrigger[aria-invalid='true'] {\n border-color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-selectTrigger[aria-invalid='true']:focus-visible {\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-error-primary);\n}\n\n.wb-selectTrigger:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.wb-selectLoading:disabled {\n cursor: default;\n opacity: 1;\n}\n\n.wb-selectGhost {\n gap: var(--wb-gap-xs);\n min-height: 0;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: none;\n background: transparent;\n font-size: var(--wb-font-row);\n}\n\n.wb-selectGhost:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-selectGhost:focus-visible {\n outline: var(--dsw-focus-ring-width) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n border-color: transparent;\n box-shadow: none;\n}\n\n.wb-selectIconOnly {\n width: var(--wb-len-36);\n height: var(--wb-len-36);\n min-height: 0;\n gap: 0;\n padding: 0;\n justify-content: center;\n}\n\n.wb-selectReveal {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.wb-selectIconOnly .wb-selectIcon {\n width: 100%;\n height: 100%;\n}\n\n.wb-selectAnchor {\n display: block;\n width: 100%;\n}\n\n.wb-selectIcon {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-16);\n height: var(--wb-len-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-selectValue {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-6);\n line-height: var(--wb-line-20);\n overflow: hidden;\n}\n\n.wb-selectPlaceholder {\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-selectChevron {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-caption);\n}\n\n.wb-selectMenu {\n min-width: var(--wb-len-240);\n max-width: var(--wb-len-360);\n max-height: min(var(--wb-len-320), calc(100vh - var(--wb-len-24)));\n}\n\n:where(.wb-selectSearch) {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n width: 100%;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n}\n\n.wb-selectSearch:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-selectSearch.wb-selectGhost {\n gap: var(--wb-gap-xs);\n min-height: 0;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: 0.5px solid var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n.wb-selectSearch.wb-selectGhost:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: none;\n}\n\n.wb-selectSearchIcon {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-textField.wb-selectSearchInput {\n flex: 1;\n min-width: 0;\n min-height: 0;\n padding: 0;\n border: none;\n background: transparent;\n}\n\n.wb-textField.wb-selectSearchInput:focus {\n box-shadow: none;\n}\n\n.wb-selectFallback {\n width: 100%;\n}\n\n.wb-selectHint {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\nsection.wb-settings {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n padding: var(--wb-len-12) var(--wb-len-16);\n border: 0;\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-settings-card-fill);\n}\n.wb-settingsHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n.wb-settings .wb-settingsTitle {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-s-strong-14-font-size);\n line-height: var(--wb-line-24);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n.wb-stack {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n min-height: 0;\n}\n.wb-stateBlock {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n.wb-stateBlockTitle {\n margin: 0;\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n}\n.wb-stateBlockHint {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-stateBlockActions {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-2);\n}\n.wb-stateBlockResolving {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._marketList_1idrk_1 {\n list-style: none;\n margin: 0;\n padding: var(--wb-len-6);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._marketRow_1idrk_10 {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: center;\n column-gap: var(--wb-len-14);\n row-gap: var(--wb-len-4);\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-lg);\n}\n\n._marketIcon_1idrk_20 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-48);\n height: var(--wb-len-48);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketMain_1idrk_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._marketName_1idrk_39 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketStatus_1idrk_48 {\n display: inline-flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketStateText_1idrk_58 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSep_1idrk_62 {\n color: var(--dsw-alias-label-caption);\n}\n\n._marketReason_1idrk_66 {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._marketName_1idrk_39 ._marketVersion_1idrk_72 {\n margin-left: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 400;\n line-height: var(--wb-line-18);\n}\n\n._marketVersion_1idrk_72 {\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketVersion_1idrk_72::before {\n content: '';\n display: inline-block;\n width: var(--wb-len-1);\n height: var(--wb-len-10);\n margin: 0 var(--wb-len-8) 0 var(--wb-len-2);\n vertical-align: -1px;\n background: var(--dsw-alias-border-l2);\n}\n\n._marketLocalTag_1idrk_94 {\n margin-left: var(--wb-len-8);\n padding: 0 var(--wb-len-6);\n border: var(--wb-len-1) solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 400;\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-caption);\n}\n\n._marketEnd_1idrk_105 {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_1idrk_112 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_1idrk_112::before {\n content: '';\n width: 0;\n height: var(--wb-len-14);\n border-left: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n._marketActions_1idrk_125 {\n flex: none;\n display: flex;\n gap: var(--wb-len-6);\n}\n\n._marketUpdateAction_1idrk_131 {\n color: var(--dsw-alias-state-warn-primary);\n border-color: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 30%, transparent);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._marketSelfDivider_1idrk_137 {\n height: 0;\n margin-top: calc(0px - var(--wb-len-16));\n border-top: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n._marketSection_1idrk_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._marketSectionHead_1idrk_150 {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n\n._marketSectionIcon_1idrk_156 {\n display: inline-flex;\n align-items: center;\n align-self: center;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionTitle_1idrk_163 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketSectionCount_1idrk_169 {\n font: var(--dsw-font-s-14);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionQuiet_1idrk_175 ._marketSectionTitle_1idrk_163 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_1idrk_175 ._marketName_1idrk_39 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_1idrk_175 ._marketIcon_1idrk_20 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n\n._marketProgress_1idrk_188 {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-height: var(--wb-len-32);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketNote_1idrk_198 {\n grid-column: 2 / -1;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-warn-primary);\n overflow-wrap: anywhere;\n}\n\n._marketFailure_1idrk_205 {\n grid-column: 2 / -1;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._marketEmpty_1idrk_212 {\n padding: var(--wb-len-18) var(--wb-len-16);\n text-align: center;\n}\n\n._marketPage_1idrk_217 {\n box-sizing: border-box;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-32);\n padding: 0 clamp(var(--wb-len-24), 4vw, var(--wb-len-48)) var(--wb-len-48);\n overflow-x: hidden;\n overflow-y: auto;\n color: var(--dsw-alias-label-primary);\n}\n\n._marketPage_1idrk_217 > * {\n width: 100%;\n max-width: var(--wb-len-960);\n}\n\n._marketPageHead_1idrk_235 {\n box-sizing: border-box;\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-16);\n padding-top: var(--wb-len-28);\n}\n\n._marketPageTitle_1idrk_243 {\n margin: 0;\n font: var(--dsw-font-l-20);\n}\n\n._marketPageIntro_1idrk_248 {\n margin: var(--wb-len-4) 0 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketPageTools_1idrk_254 {\n flex: none;\n align-self: center;\n margin-left: auto;\n display: flex;\n align-items: center;\n gap: var(--wb-len-16);\n}\n\n._marketPanel_1idrk_263 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-32);\n}\n\n._marketPanel_1idrk_263[hidden] {\n display: none;\n}\n\n._marketTabs_1idrk_273 {\n display: flex;\n margin: calc(0px - var(--wb-len-16)) 0;\n}\n\n._marketTabList_1idrk_278 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._marketIconButton_1idrk_283 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n border: 0;\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n color: var(--dsw-alias-label-caption);\n cursor: pointer;\n}\n\n._marketIconButton_1idrk_283:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketIconButton_1idrk_283:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._marketIconWrap_1idrk_308 {\n display: inline-flex;\n}\n\n._marketIconButtonSpinning_1idrk_312 svg {\n animation: _wb-spin_1idrk_1 var(--wb-dur-0-9) linear infinite;\n}\n\n._marketAddButton_1idrk_316 {\n height: var(--wb-len-32);\n padding: 0 var(--wb-len-12);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n border-radius: var(--dsw-radius-md);\n}\n\n._marketEmpty_1idrk_212 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-64) var(--wb-len-16);\n text-align: center;\n}\n\n._marketEmptyTitle_1idrk_333 {\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n@keyframes _wb-spin_1idrk_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n._discoverPage_1idrk_347 {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverBar_1idrk_354 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n container-type: inline-size;\n}\n\n._discoverTools_1idrk_361 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverMarket_1idrk_367 {\n flex: 0 1 auto;\n min-width: 0;\n}\n\n._discoverMarketButton_1idrk_372 {\n min-width: 0;\n max-width: var(--wb-len-240);\n margin-left: calc(0px - var(--wb-len-8));\n font-weight: 500;\n}\n\n._discoverMarketName_1idrk_379 {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._discoverLabels_1idrk_385 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverSort_1idrk_390 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverRefresh_1idrk_395 {\n flex: none;\n}\n\n._discoverSearch_1idrk_399 {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex: 1 1 var(--wb-len-120);\n min-width: var(--wb-len-120);\n}\n\n._discoverSearchField_1idrk_407 {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._discoverSearchFieldFilled_1idrk_412 input {\n padding-inline-end: var(--wb-len-20);\n}\n\n._discoverSearchField_1idrk_407 input::-webkit-search-cancel-button {\n appearance: none;\n -webkit-appearance: none;\n}\n\n._discoverSearch_1idrk_399 ._discoverSearchClear_1idrk_421 {\n position: absolute;\n top: 50%;\n inset-inline-end: var(--wb-len-4);\n width: var(--wb-len-24);\n height: var(--wb-len-24);\n padding: 0;\n border-radius: var(--dsw-radius-sm);\n color: var(--dsw-alias-label-tertiary);\n transform: translateY(-50%);\n}\n\n._discoverSearchClear_1idrk_421:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n@container (max-width: 560px) {\n ._discoverTools_1idrk_361 {\n display: grid;\n grid-template-columns: minmax(0, auto) minmax(var(--wb-len-120), 1fr) auto;\n grid-template-areas:\n 'market search refresh'\n 'labels sort sort';\n }\n\n ._discoverMarket_1idrk_367 {\n grid-area: market;\n }\n\n ._discoverMarketButton_1idrk_372 {\n margin-left: 0;\n }\n\n ._discoverLabels_1idrk_385 {\n grid-area: labels;\n }\n\n ._discoverSearch_1idrk_399 {\n grid-area: search;\n }\n\n ._discoverSort_1idrk_390 {\n grid-area: sort;\n justify-self: end;\n }\n\n ._discoverRefresh_1idrk_395 {\n grid-area: refresh;\n }\n}\n\n._discoverChips_1idrk_472 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n._discoverList_1idrk_479 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._discoverCard_1idrk_488 {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n margin: 0 calc(0px - var(--wb-len-8));\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCard_1idrk_488:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._discoverArtwork_1idrk_502 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-48);\n height: var(--wb-len-48);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverArtworkImage_1idrk_514 {\n object-fit: contain;\n}\n\n._discoverMain_1idrk_518 {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--wb-len-2);\n min-width: 0;\n}\n\n._discoverTitleRow_1idrk_526 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._discoverCardOpen_1idrk_534 {\n max-width: 100%;\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n text-align: left;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n cursor: pointer;\n}\n\n._discoverCardOpen_1idrk_534::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCardOpen_1idrk_534:focus-visible {\n outline: none;\n}\n\n._discoverCardOpen_1idrk_534:focus-visible::after {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n._discoverStrong_1idrk_565 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n overflow-wrap: anywhere;\n}\n\n._discoverDesc_1idrk_571 {\n display: -webkit-box;\n overflow: hidden;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverMeta_1idrk_580 {\n margin: 0;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._discoverMuted_1idrk_587 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverEnd_1idrk_593 {\n position: relative;\n z-index: var(--wb-z-10);\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverBlocked_1idrk_602 {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n._discoverEmpty_1idrk_607 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-64) 0;\n text-align: center;\n}\n\n._discoverEmptyTitle_1idrk_616 {\n margin: var(--wb-len-8) 0 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverEmpty_1idrk_607 > button {\n margin-top: var(--wb-len-8);\n}\n\n._discoverDetail_1idrk_626 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverCrumb_1idrk_632 {\n align-self: flex-start;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n padding: 0;\n border: 0;\n background: 0 0;\n color: var(--dsw-alias-label-tertiary);\n font: inherit;\n font-size: var(--wb-font-12-5);\n cursor: pointer;\n}\n\n._discoverCrumb_1idrk_632:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._discoverCrumb_1idrk_632:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n._discoverCrumbIcon_1idrk_655 {\n transform: rotate(90deg);\n}\n\n._discoverDetailHead_1idrk_659 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverDetailTitle_1idrk_665 {\n margin: 0;\n font: var(--dsw-font-l-20);\n font-weight: 500;\n}\n\n._discoverDetailText_1idrk_671 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._discoverDetailPanel_1idrk_678 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n min-width: 0;\n}\n\n._discoverDetailTabs_1idrk_685 {\n display: flex;\n margin-bottom: calc(0px - var(--wb-len-4));\n}\n\n._discoverDetailTabList_1idrk_690 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._discoverDocBody_1idrk_695 {\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n._discoverDocNotice_1idrk_700 {\n margin: var(--wb-len-16) 0 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverSection_1idrk_706 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n margin-top: var(--wb-len-16);\n}\n\n._discoverSectionTitle_1idrk_713 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverFacts_1idrk_719 {\n margin: 0;\n padding: 0;\n}\n\n._discoverFactRow_1idrk_724 {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--wb-len-16);\n min-height: var(--wb-len-44);\n padding: var(--wb-len-8) var(--wb-len-2);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverFactKind_1idrk_734 {\n flex: none;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverFactValue_1idrk_740 {\n min-width: 0;\n margin: 0;\n text-align: end;\n overflow-wrap: anywhere;\n font: var(--dsw-font-xs-13);\n}\n\n._discoverCode_1idrk_748 {\n padding: var(--wb-len-2) var(--wb-len-6);\n border-radius: var(--wb-radius-6);\n background: var(--dsw-alias-bg-module-platform);\n font-family: var(--ds-font-family-code);\n font-size: var(--dsw-font-xxs-12-font-size);\n box-decoration-break: clone;\n}\n\n._discoverTags_1idrk_757 {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: var(--wb-len-6);\n}\n\n._discoverLink_1idrk_764 {\n color: var(--dsw-alias-link);\n overflow-wrap: anywhere;\n text-decoration: none;\n}\n\n._discoverLink_1idrk_764:hover {\n text-decoration: underline;\n}\n\n._discoverVersions_1idrk_774 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverVersionRow_1idrk_782 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverVersionName_1idrk_790 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverError_1idrk_795 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._discoverFailure_1idrk_804 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._discoverLoading_1idrk_810 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xs-13);\n}\n\n._discoverNotice_1idrk_819 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-10) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-state-warn-tertiary);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n}\n\n._discoverNotice_1idrk_819 svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverMore_1idrk_837 {\n align-self: center;\n}\n\n._discoverDialog_1idrk_841 {\n width: min(var(--wb-len-480), calc(100vw - var(--wb-len-32)));\n}\n\n._discoverDialogBody_1idrk_845 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._discoverSourceList_1idrk_851 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverSourceRow_1idrk_859 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverSourceCurrent_1idrk_868 {\n flex: none;\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n white-space: nowrap;\n}\n\n._discoverSourceLoading_1idrk_875 {\n display: flex;\n flex: none;\n align-items: center;\n gap: var(--wb-len-6);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n white-space: nowrap;\n}\n\n._discoverSourceHint_1idrk_885 {\n display: flex;\n flex-basis: 100%;\n align-items: center;\n gap: var(--wb-len-6);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n}\n\n._discoverSourceHint_1idrk_885 svg {\n flex: none;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverSourceError_1idrk_899 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._discoverSourceForm_1idrk_905 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverGrow_1idrk_911 {\n flex: 1;\n min-width: 0;\n}\n\n._discoverField_1idrk_916 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._discoverFieldLabel_1idrk_922 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverConfirmHead_1idrk_927 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverSkeletonFill_1idrk_933 {\n background: var(--dsw-alias-bg-skeleton);\n animation: _wb-skeleton_1idrk_1 var(--wb-dur-1-5) cubic-bezier(0.36, 0, 0.64, 1) infinite;\n}\n\n._discoverArtwork_1idrk_502._discoverSkeletonFill_1idrk_933 {\n border-color: transparent;\n}\n\n._discoverSkeletonBar_1idrk_942 {\n display: block;\n height: var(--wb-len-12);\n margin: var(--wb-len-4) 0;\n border-radius: var(--dsw-radius-xs);\n}\n\n._discoverSkeletonTitle_1idrk_949 {\n width: min(var(--wb-len-144), 60%);\n}\n\n._discoverSkeletonDesc_1idrk_953 {\n width: min(var(--wb-len-280), 85%);\n}\n\n@keyframes _wb-skeleton_1idrk_1 {\n 0% {\n opacity: 1;\n }\n 40% {\n opacity: 0.6;\n }\n 80%,\n to {\n opacity: 1;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._discoverSkeletonFill_1idrk_933 {\n animation: none;\n }\n}\n\n._foot_1ud1j_1 {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) var(--wb-len-14) var(--wb-len-10);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._footText_1ud1j_13 {\n flex: 1;\n min-width: 0;\n}\n\n._footTextMd_1ud1j_18 {\n flex: 1;\n min-width: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n._wide_1lv8f_1 {\n justify-content: center;\n width: 100%;\n height: var(--wb-len-40);\n border-radius: var(--dsw-radius-md);\n}\n\n._dialog_1lv8f_8 {\n width: min(var(--wb-len-560), 100%);\n max-height: min(var(--wb-len-800), 100%);\n}\n\n._content_1lv8f_13 {\n min-height: 0;\n overflow: auto;\n}\n\n._stack_1lv8f_18 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._body_1lv8f_25 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._field_1lv8f_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n._input_1lv8f_39 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-14);\n}\n\n._registryField_1lv8f_45 {\n height: var(--wb-len-32);\n margin-left: var(--wb-len-26);\n padding: 0 var(--wb-len-10);\n}\n\n._options_1lv8f_51 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-8) var(--wb-len-12);\n}\n\n._guideToggle_1lv8f_59 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-4);\n align-self: flex-start;\n margin-top: var(--wb-len-4);\n padding: 0;\n border: 0;\n background: transparent;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._guideToggle_1lv8f_59:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._guideToggle_1lv8f_59 svg,\n._registryToggle_1lv8f_78 svg {\n transition: transform var(--wb-dur-0-12) ease;\n}\n\n._guideToggle_1lv8f_59[aria-expanded='true'] svg,\n._registryToggle_1lv8f_78[aria-expanded='true'] svg {\n transform: rotate(180deg);\n}\n\n._registryWrap_1lv8f_87 {\n position: relative;\n flex: none;\n}\n\n._registryToggle_1lv8f_78 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n height: var(--wb-len-26);\n padding: 0 var(--wb-len-8) 0 var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-2);\n font: inherit;\n font-size: var(--wb-font-12-5);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._registryToggle_1lv8f_78:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._registryToggle_1lv8f_78:disabled {\n cursor: default;\n opacity: 0.6;\n}\n\n._registryToggle_1lv8f_78[aria-expanded='true'] {\n border-color: var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-3);\n}\n\n._registryChosen_1lv8f_121 {\n color: var(--dsw-alias-label-primary);\n font-weight: 500;\n}\n\n._registry_1lv8f_45 {\n position: fixed;\n z-index: var(--wb-z-1100);\n box-sizing: border-box;\n width: min(var(--wb-len-440), 100vw - var(--wb-len-24));\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10) var(--wb-len-12);\n border: 0;\n border-radius: var(--dsw-radius-lg);\n background: var(--dsw-alias-bg-layer-2);\n --dsw-elevation-stroke-color: var(--dsw-alias-border-l3);\n box-shadow: var(--dsw-elevation-prominent);\n}\n\n._registryOption_1lv8f_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid transparent;\n border-radius: var(--dsw-radius-lg);\n cursor: pointer;\n}\n\nlabel._registryOption_1lv8f_143 {\n flex-direction: row;\n align-items: flex-start;\n gap: var(--wb-len-10);\n}\n\n._registryPick_1lv8f_159 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n cursor: pointer;\n}\n\n._registryOption_1lv8f_143[data-checked='true'] {\n border-color: color-mix(in srgb, var(--dsw-alias-brand-primary) 40%, transparent);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n._registryOption_1lv8f_143 input[type='radio'] {\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: var(--wb-len-2) 0 0;\n accent-color: var(--dsw-alias-brand-primary);\n}\n\n._registryTitle_1lv8f_179 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n font: var(--dsw-font-xs-13);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-primary);\n}\n\n._registryHint_1lv8f_189 {\n margin-left: var(--wb-len-26);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._inputError_1lv8f_197 {\n margin: var(--wb-len-neg-4) 0 0 var(--wb-len-26);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._guide_1lv8f_59 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) var(--wb-len-14) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-lg);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._guideList_1lv8f_214 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n._guideItem_1lv8f_223 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) 0;\n}\n\n._guideIndex_1lv8f_230 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n border-radius: var(--wb-radius-pill);\n corner-shape: round;\n background: var(--dsw-alias-bg-module-platform);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._guideMain_1lv8f_244 {\n display: flex;\n flex-direction: column;\n flex: 1;\n gap: 0;\n min-width: 0;\n}\n\n._guideTitle_1lv8f_252 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n\n._guideHint_1lv8f_258 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._guideExample_1lv8f_264 {\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._guideExample_1lv8f_264 code {\n font-family: var(--dsw-font-mono, monospace);\n}\n\n._guideExampleLabel_1lv8f_274 {\n color: var(--dsw-alias-label-caption);\n}\n\n._footer_1lv8f_278 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-20);\n width: 100%;\n}\n\n._hero_1lv8f_285 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) 0 var(--wb-len-4);\n text-align: center;\n}\n\n._heroIcon_1lv8f_294 {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-44);\n height: var(--wb-len-44);\n color: var(--dsw-alias-label-secondary);\n}\n\n._heroIcon_1lv8f_294[data-state='done'] {\n color: var(--dsw-alias-state-success-secondary);\n}\n\n._heroIcon_1lv8f_294[data-state='error'] {\n color: var(--dsw-alias-state-warn-label);\n}\n\n._pendingTitle_1lv8f_311 {\n margin: 0;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n font-weight: 500;\n color: var(--dsw-alias-label-secondary);\n}\n\n._wizardTitle_1lv8f_319 {\n margin: 0;\n font-size: var(--wb-font-18);\n line-height: var(--wb-len-26);\n font-weight: 600;\n}\n\n._subject_1lv8f_326 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-6);\n padding: var(--wb-len-16);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n text-align: center;\n}\n\n._subjectName_1lv8f_337 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n overflow-wrap: anywhere;\n}\n\n._subjectMeta_1lv8f_343,\n._subjectDesc_1lv8f_344 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._result_1lv8f_351,\n._resultWarn_1lv8f_352 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: color-mix(in srgb, var(--dsw-alias-state-success-primary) 10%, transparent);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-primary);\n}\n\n._resultWarn_1lv8f_352 {\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 12%, transparent);\n}\n\n._resultMeta_1lv8f_365 {\n margin: 0;\n padding: 0 var(--wb-len-12);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._approval_1lv8f_373 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-12) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-state-warn-primary);\n border-radius: var(--dsw-radius-lg);\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._approvalTitle_1lv8f_383 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._approvalText_1lv8f_390 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._approvalCaution_1lv8f_396 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n font-weight: 600;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._note_1lv8f_403 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._noteWarn_1lv8f_410 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._noteError_1lv8f_414 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._problem_1lv8f_418 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._detailLabel_1lv8f_425 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._detail_1lv8f_425 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l1);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-3);\n font-family: var(--dsw-font-mono, monospace);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n}\n._note_1enlz_1 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-10) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-state-warn-tertiary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n._note_1enlz_1 > svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n._slot_1t7dx_1 {\n display: flex;\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._slot_1t7dx_1 > * {\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._action_1t7dx_12 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 1 0;\n width: 100%;\n min-width: 0;\n min-height: var(--wb-len-36);\n margin: 0 var(--wb-len-2);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: default;\n overflow: hidden;\n gap: var(--wb-len-4);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n}\n\n._live_1t7dx_31 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._paused_1t7dx_35 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._trouble_1t7dx_39 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._pulse_1t7dx_43 {\n animation: _wb-debug-breathe_1t7dx_1 var(--wb-dur-1-5) var(--ds-ease-in-out, ease-in-out) infinite;\n}\n\n@keyframes _wb-debug-breathe_1t7dx_1 {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.35;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._pulse_1t7dx_43 {\n animation: none;\n }\n}\n\n._entry_1t7dx_64 {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._entryInner_1t7dx_71 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._acts_1t7dx_78 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-2);\n flex: none;\n}\n\n._act_1t7dx_12 {\n appearance: none;\n border: 0;\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: 0;\n border-radius: var(--dsw-radius-sm, var(--wb-len-6));\n flex: none;\n cursor: pointer;\n}\n\n._act_1t7dx_12:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._act_1t7dx_12:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n\n._actStop_1t7dx_110:hover,\n._actStop_1t7dx_110:focus-visible {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._actArmed_1t7dx_115,\n._actArmed_1t7dx_115:hover,\n._actArmed_1t7dx_115:focus-visible {\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);\n width: auto;\n color: var(--dsw-alias-state-error-primary);\n gap: var(--wb-len-4);\n padding: 0 var(--wb-len-7);\n}\n\n._actLabel_1t7dx_125 {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n._entryLine_1t7dx_131 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._actionRail_1t7dx_138 {\n justify-content: center;\n flex: none;\n width: var(--wb-len-36);\n min-width: var(--wb-len-36);\n height: var(--wb-len-36);\n margin: 0;\n padding: 0;\n corner-shape: round;\n border-radius: 50%;\n}\n\n._card_1t7dx_150 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._cardTitle_1t7dx_156 {\n color: var(--dsw-alias-label-primary);\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n}\n\n._cardNote_1t7dx_162 {\n color: var(--dsw-alias-label-secondary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n._slot_1gkj9_1 {\n display: flex;\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._slot_1gkj9_1 > * {\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._action_1gkj9_12 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 1 0;\n width: 100%;\n min-width: 0;\n min-height: var(--wb-len-36);\n margin: 0 var(--wb-len-2);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: default;\n overflow: hidden;\n gap: var(--wb-len-4);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n}\n\n._live_1gkj9_31 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._done_1gkj9_35 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._pulse_1gkj9_39 {\n animation: _wb-record-breathe_1gkj9_1 var(--wb-dur-1-5) var(--ds-ease-in-out, ease-in-out) infinite;\n}\n\n@keyframes _wb-record-breathe_1gkj9_1 {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.35;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._pulse_1gkj9_39 {\n animation: none;\n }\n}\n\n._entry_1gkj9_60 {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._entryInner_1gkj9_67 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._acts_1gkj9_74 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-2);\n flex: none;\n}\n\n._act_1gkj9_12 {\n appearance: none;\n border: 0;\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: var(--wb-len-22);\n padding: 0 var(--wb-len-7);\n border-radius: var(--dsw-radius-sm, var(--wb-len-6));\n flex: none;\n cursor: pointer;\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n._act_1gkj9_12:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._act_1gkj9_12:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n\n._entryLine_1gkj9_108 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._actionRail_1gkj9_115 {\n justify-content: center;\n flex: none;\n width: var(--wb-len-36);\n min-width: var(--wb-len-36);\n height: var(--wb-len-36);\n margin: 0;\n padding: 0;\n corner-shape: round;\n border-radius: 50%;\n}\n\n._card_1gkj9_127 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._cardTitle_1gkj9_133 {\n color: var(--dsw-alias-label-primary);\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n}\n\n._cardNote_1gkj9_139 {\n color: var(--dsw-alias-label-secondary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n._item_lyox9_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n}\n\n._item_lyox9_1 + ._item_lyox9_1 {\n padding-top: var(--wb-len-14);\n border-top: var(--wb-len-0-5) solid var(--dsw-alias-settings-card-stroke);\n}\n\n._head_lyox9_12 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._title_lyox9_19 {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._description_lyox9_31 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._rows_85r3w_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n._row_85r3w_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n padding: var(--wb-len-12) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-settings-card-stroke);\n border-radius: var(--dsw-radius-xl);\n background: var(--dsw-alias-settings-card-fill);\n}\n\n._head_85r3w_20 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._pick_85r3w_27 {\n flex: 0 1 auto;\n min-width: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n._pick_85r3w_27 > span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._code_85r3w_39 {\n --dsl-code-block-background: var(--dsw-alias-bg-layer-1);\n margin: 0;\n}\n\n._missing_85r3w_44,\n._conflict_85r3w_45 {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-warn-primary);\n}\n._body_11oac_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._sources_11oac_7 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._sourcesLabel_11oac_14 {\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-secondary);\n}\n\nbutton._sourceOn_11oac_19 {\n border-color: var(--dsw-alias-brand-primary);\n}\n._sourceCount_11oac_22 {\n margin-left: var(--wb-len-4);\n font-variant-numeric: tabular-nums;\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._reading_11oac_29 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._status_11oac_35 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._failure_11oac_45 {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n column-gap: var(--wb-len-10);\n row-gap: var(--wb-len-2);\n color: var(--dsw-alias-state-error-primary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n\n._failureTitle_11oac_55 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._failureHint_11oac_62 {\n grid-column: 1;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._failureAction_11oac_67 {\n grid-column: 2;\n grid-row: 1;\n justify-self: end;\n}\n\n._foot_11oac_73 {\n display: flex;\n justify-content: flex-end;\n}\n._body_lox98_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._field_lox98_7 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._input_lox98_13 {\n width: 100%;\n}\n\n._label_lox98_17 {\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-secondary);\n}\n\n._hint_lox98_22 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._copy_lox98_28 {\n display: flex;\n flex-wrap: wrap;\n gap: var(--wb-len-8) var(--wb-len-16);\n margin: 0;\n padding: 0;\n border: 0;\n}\n\n._copy_lox98_28 legend {\n padding: 0;\n margin-bottom: var(--wb-len-6);\n}\n\n._actions_lox98_42 {\n display: flex;\n justify-content: flex-end;\n}\n\n._commandLabel_lox98_47 {\n display: block;\n margin-top: var(--wb-len-4);\n}\n\n._command_lox98_47 {\n display: block;\n margin-top: var(--wb-len-4);\n padding: var(--wb-len-6) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxs-12-font-size);\n overflow-wrap: anywhere;\n}\n._body_zi2j5_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._lead_zi2j5_7 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n._title_zi2j5_14 {\n font-size: var(--wb-font-18);\n line-height: var(--wb-line-24);\n}\n._hint_zyzt3_1[hidden],\n._actions_zyzt3_2[hidden],\n._progress_zyzt3_3[hidden],\n._commandRow_zyzt3_4[hidden],\n._bridge_zyzt3_5[hidden],\n._raw_zyzt3_6[hidden] {\n display: none;\n}\n\n._gate_zyzt3_10 {\n position: fixed;\n inset: 0;\n z-index: var(--wb-z-top);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--wb-len-24);\n background: var(--dsw-alias-bg-base);\n}\n\n._card_zyzt3_21 {\n width: 100%;\n max-width: var(--wb-len-420);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-16);\n text-align: center;\n}\n\n._card_zyzt3_21:has(._actions_zyzt3_2:not([hidden])),\n._card_zyzt3_21:has(._bridge_zyzt3_5:not([hidden])) {\n max-width: var(--wb-len-520);\n}\n\n._title_zyzt3_36 {\n margin: 0;\n font-size: var(--dsw-font-base-16-font-size);\n line-height: var(--wb-line-24);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._hint_zyzt3_1 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._steps_zyzt3_51 {\n list-style: none;\n margin: var(--wb-len-6) 0 0;\n padding: 0;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n text-align: left;\n}\n\n._step_zyzt3_51 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-6) var(--wb-len-10);\n border-radius: var(--dsw-radius-sm);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._step_zyzt3_51[data-status='running'] {\n color: var(--dsw-alias-label-primary);\n}\n\n._mark_zyzt3_78 {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-14);\n height: var(--wb-len-14);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n}\n\n._step_zyzt3_51[data-status='ok'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._step_zyzt3_51[data-status='warn'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._step_zyzt3_51[data-status='failed'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._label_zyzt3_103 {\n flex: none;\n}\n\n._detail_zyzt3_107 {\n margin-left: auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._progress_zyzt3_3 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._elapsed_zyzt3_125 {\n flex: none;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n}\n\n._error_zyzt3_133 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n max-height: var(--wb-len-120);\n overflow: auto;\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n white-space: pre-wrap;\n word-break: break-all;\n text-align: left;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._commandRow_zyzt3_4 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-4);\n margin: 0 0 var(--wb-len-8);\n padding-right: var(--wb-len-4);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n._copy_zyzt3_159 {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-24);\n height: var(--wb-len-24);\n padding: 0;\n border: none;\n border-radius: var(--wb-radius-6);\n background: transparent;\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._copy_zyzt3_159:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._command_zyzt3_4 {\n flex: 1;\n min-width: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n overflow-wrap: anywhere;\n color: var(--dsw-alias-label-primary);\n}\n\n._buttons_zyzt3_192 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-12);\n}\n\n._mockSlot_zyzt3_199 {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n justify-content: center;\n background: var(--dsw-alias-bg-base);\n}\n\n._button_zyzt3_192 {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: var(--wb-len-28);\n padding: 0 var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n font: inherit;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n}\n\n._button_zyzt3_192:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._button_zyzt3_192:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n._actions_zyzt3_2,\n._bridge_zyzt3_5 {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--wb-len-10);\n margin-top: var(--wb-len-4);\n padding: var(--wb-len-14) var(--wb-len-16);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-14);\n background: var(--dsw-alias-bg-layer-1);\n text-align: left;\n}\n\n._fixTitle_zyzt3_250 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._actions_zyzt3_2 ._hint_zyzt3_1,\n._bridge_zyzt3_5 ._hint_zyzt3_1 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-19);\n color: var(--dsw-alias-label-secondary);\n}\n\n._actions_zyzt3_2 ._commandRow_zyzt3_4,\n._bridge_zyzt3_5 ._commandRow_zyzt3_4 {\n margin: 0;\n}\n\n._actions_zyzt3_2 ._buttons_zyzt3_192,\n._bridge_zyzt3_5 ._buttons_zyzt3_192 {\n justify-content: flex-start;\n}\n\n._raw_zyzt3_6 {\n box-sizing: border-box;\n width: 100%;\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n text-align: left;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._rawSummary_zyzt3_286 {\n cursor: pointer;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._actions_zyzt3_2 ._error_zyzt3_133,\n._bridge_zyzt3_5 ._error_zyzt3_133 {\n margin-top: var(--wb-len-6);\n}\n\n._bridgeLines_zyzt3_296 {\n margin: 0;\n padding-left: var(--wb-len-18);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-19);\n color: var(--dsw-alias-label-secondary);\n}\n\n._bridgeLine_zyzt3_296 a {\n display: block;\n margin-top: var(--wb-len-4);\n width: fit-content;\n}\n\n._link_zyzt3_313 {\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n}\n\n._link_zyzt3_313::after {\n content: '↗';\n margin-left: var(--wb-len-2);\n}\n\n._link_zyzt3_313:hover {\n text-decoration: underline;\n}\n\n._loading_zyzt3_327 {\n flex: none;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._loading_zyzt3_327[hidden] {\n display: none;\n}\n\n._loadingMotion_zyzt3_336 {\n transform-origin: center;\n animation: _wb-spin_zyzt3_1 var(--wb-dur-1-5) linear infinite;\n}\n\n._loadingTrack_zyzt3_341,\n._loadingArc_zyzt3_342 {\n fill: none;\n stroke: currentColor;\n stroke-width: 2;\n stroke-linecap: round;\n}\n\n._loadingTrack_zyzt3_341 {\n opacity: 0.25;\n}\n\n._loadingArc_zyzt3_342 {\n stroke-dasharray: 12 150;\n animation: _wb-dash_zyzt3_1 var(--wb-dur-1-5) ease-in-out infinite;\n}\n\n@keyframes _wb-spin_zyzt3_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes _wb-dash_zyzt3_1 {\n 0% {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 24 150;\n stroke-dashoffset: -6;\n }\n to {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._loadingMotion_zyzt3_336,\n ._loadingArc_zyzt3_342 {\n animation: none;\n }\n}\n._changelog_1q6pj_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n margin-top: var(--wb-len-10);\n min-width: 0;\n}\n\n._changelogTitle_1q6pj_9 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._changelogMissing_1q6pj_15 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-primary);\n}\n\n._changelogBody_1q6pj_21 {\n max-height: var(--wb-len-320);\n overflow: auto;\n padding: var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n}\n._group_1hxis_1 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n}\n\n._button_1hxis_7 {\n flex: none;\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n color: var(--dsw-alias-label-secondary);\n}\n\n._button_1hxis_7:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._active_1hxis_19 {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._icon_1hxis_23 {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n._icon_1hxis_23 svg {\n display: block;\n width: var(--wb-len-15);\n height: var(--wb-len-15);\n}\n\n._mirror_1hxis_35 {\n transform: scaleX(-1);\n}\n._stripTabs_1dqp4_1 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-4);\n min-width: 0;\n overflow: hidden;\n}\n\n._tab_1dqp4_9 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n flex: none;\n height: var(--wb-len-28);\n padding: 0 var(--wb-len-10);\n border: 0;\n border-radius: var(--dsw-radius-sm);\n background: none;\n font: inherit;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-16);\n max-width: 100%;\n}\n\n._tabActive_1dqp4_25 {\n color: var(--dsw-alias-label-primary);\n}\n\n._tabQuiet_1dqp4_29 {\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._tabQuiet_1dqp4_29:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._tabTitle_1dqp4_39 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._sep_1dqp4_49 {\n flex: none;\n color: var(--dsw-alias-label-dimmed);\n}\n._trigger_15ptp_1 {\n display: flex;\n align-items: center;\n}\n\n._pop_15ptp_6 {\n position: absolute;\n top: calc(var(--wb-len-38) + var(--wb-len-8));\n right: var(--wb-len-6);\n z-index: var(--wb-z-30);\n width: min(var(--wb-len-360), calc(100% - var(--wb-len-12)));\n max-width: calc(100vw - var(--wb-len-48));\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-14);\n background: var(--dsw-alias-bg-layer-2);\n box-shadow: var(--dsw-shadow-lv3);\n overflow: hidden;\n}\n\n._head_15ptp_20 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-10) var(--wb-len-12) var(--wb-len-9) var(--wb-len-14);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._title_15ptp_28 {\n flex: 1;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._rowControls_15ptp_36 {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._reset_15ptp_43 {\n flex: none;\n padding: var(--wb-len-3) var(--wb-len-8);\n border: none;\n border-radius: var(--wb-radius-6);\n background: transparent;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._reset_15ptp_43:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._reset_15ptp_43:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._list_15ptp_65 {\n list-style: none;\n margin: 0;\n padding: var(--wb-len-6);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._row_15ptp_36 {\n position: relative;\n display: grid;\n grid-template-columns: 12px minmax(0, 1fr) auto;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-sm);\n cursor: default;\n}\n\n._rowDragging_15ptp_85 {\n cursor: grabbing;\n}\n\n._rowBlocked_15ptp_89 {\n cursor: not-allowed;\n}\n\n._listDragging_15ptp_93 ._rowControls_15ptp_36 {\n pointer-events: none;\n}\n\n._row_15ptp_36:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._rowOff_15ptp_101 {\n opacity: 0.55;\n}\n\n._rowOff_15ptp_101:hover {\n opacity: 1;\n}\n\n._rowOver_15ptp_109::before {\n content: '';\n position: absolute;\n top: var(--wb-len-neg-3);\n left: var(--wb-len-8);\n right: var(--wb-len-8);\n height: var(--wb-len-2);\n background: var(--dsw-alias-brand-primary);\n}\n\n._ghost_15ptp_119 {\n position: fixed;\n z-index: var(--wb-z-40);\n pointer-events: none;\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n box-shadow: var(--wb-static-shadow-ghost);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n white-space: nowrap;\n}\n\n._grip_15ptp_134 {\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n text-align: center;\n color: var(--dsw-alias-label-tertiary);\n user-select: none;\n cursor: grab;\n touch-action: none;\n}\n\n._gripDragging_15ptp_144 {\n cursor: grabbing;\n}\n\n._gripBlocked_15ptp_148 {\n cursor: not-allowed;\n}\n\n._label_15ptp_152 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._name_15ptp_159 {\n min-width: 0;\n flex: 0 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n}\n\n._error_15ptp_170 {\n margin: 0;\n padding: 0 var(--wb-len-14) var(--wb-len-10);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._dep_15ptp_178 {\n flex: none;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n white-space: nowrap;\n}\n\n._group_15ptp_186 {\n padding-top: var(--wb-len-6);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._groupTitle_15ptp_191 {\n margin: 0;\n padding: var(--wb-len-2) var(--wb-len-8) 0 var(--wb-len-14);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n font-weight: 400;\n color: var(--dsw-alias-label-tertiary);\n}\n._panel_1whum_1 {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: var(--wb-z-10);\n visibility: hidden;\n}\n\n._panel_1whum_1[data-fullscreen] {\n z-index: var(--wb-z-40);\n}\n\n._panel_1whum_1[data-open] {\n visibility: visible;\n}\n\n._columns_1whum_18 {\n display: block;\n column-gap: var(--wb-len-12);\n}\n\n._cell_1whum_23 {\n display: flow-root;\n min-width: 0;\n break-inside: avoid;\n margin-bottom: var(--wb-len-12);\n}\n._root_1cmz0_1 {\n position: relative;\n flex: none;\n margin: 0 var(--wb-len-2) var(--wb-len-4);\n}\n\n._rail_1cmz0_7 {\n margin: 0 0 var(--wb-len-4);\n}\n\n._glyphBox_1cmz0_11 {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n}\n\n._glyph_1cmz0_11 {\n position: relative;\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-16);\n height: var(--wb-len-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._glyphActive_1cmz0_30 {\n color: var(--dsw-alias-state-business-primary);\n}\n\n._triggerName_1cmz0_34 {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-6);\n font-size: var(--wb-font-row);\n line-height: var(--wb-line-20);\n overflow: hidden;\n}\n\n._dir_1cmz0_45 {\n flex: 0 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._name_1cmz0_53 {\n flex: 0 1 auto;\n max-width: 50%;\n font-size: var(--dsw-font-xxs-12-font-size);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._triggerName_1cmz0_34 ._name_1cmz0_53 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._row_1cmz0_66 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n width: 100%;\n min-width: 0;\n}\n\n._trailing_1cmz0_74 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n margin-inline-start: auto;\n}\n\n._trailing_1cmz0_74 ._rowAction_1cmz0_84 {\n width: var(--wb-len-20);\n min-width: var(--wb-len-20);\n height: var(--wb-len-20);\n min-height: var(--wb-len-20);\n padding: 0;\n border-radius: var(--dsw-radius-sm);\n}\n\n._row_1cmz0_66 ._name_1cmz0_53 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._current_1cmz0_97 {\n flex: none;\n display: inline-flex;\n align-items: center;\n color: var(--dsw-alias-label-primary);\n}\n._dot_sosf1_1 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n._overlay_sosf1_8 {\n position: absolute;\n inset-block-start: var(--wb-len-neg-3);\n inset-inline-end: var(--wb-len-neg-3);\n}\n._tag_g9dg8_1 {\n flex: none;\n margin-inline-start: auto;\n}\n._dialog_1vye5_1 {\n width: min(var(--wb-len-420), 100%);\n}\n\n._stack_1vye5_5 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._input_1vye5_12 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-12);\n}\n\n._meta_1vye5_18 {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n._dot_14w1n_1 {\n display: inline-flex;\n align-items: center;\n}\n\n._hover_14w1n_6 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._blocker_1oaj0_1 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-6);\n padding: var(--wb-len-20) var(--wb-len-16);\n text-align: center;\n}\n\n._icon_1oaj0_10 {\n display: flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._title_1oaj0_15 {\n margin: var(--wb-len-2) 0 0;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._hint_1oaj0_23 {\n margin: 0;\n max-width: var(--wb-len-42em);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n text-wrap: pretty;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 {\n align-items: flex-start;\n gap: var(--wb-len-6);\n padding: var(--wb-len-4) 0 var(--wb-len-2);\n text-align: left;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._title_1oaj0_15 {\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._hint_1oaj0_23 {\n max-width: 100%;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._actions_1oaj0_48 {\n margin-top: var(--wb-len-8);\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._raw_1oaj0_52 {\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._actions_1oaj0_48 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n margin-top: var(--wb-len-6);\n}\n\n._raw_1oaj0_52 {\n margin-top: var(--wb-len-10);\n width: 100%;\n max-width: var(--wb-len-360);\n text-align: left;\n}\n\n._notice_1oaj0_71 {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: start;\n column-gap: var(--wb-len-10);\n margin: 0 0 var(--wb-len-10);\n padding: var(--wb-len-10) var(--wb-len-12);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-left: 2px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._notice_1oaj0_71._noticeFlat_1oaj0_84 {\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n}\n\n._noticeText_1oaj0_91 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-3);\n min-width: 0;\n}\n\n._noticeTitle_1oaj0_98 {\n font-size: var(--wb-font-12-5);\n line-height: var(--wb-line-18);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._noticeHint_1oaj0_105 {\n font-size: var(--wb-font-11-5);\n line-height: var(--wb-line-17);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._noticeActions_1oaj0_112 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin-top: var(--wb-len-neg-2);\n}\n\n._failure_1oaj0_119 {\n margin: var(--wb-len-8) 0 0;\n font-size: var(--wb-font-11-5);\n line-height: var(--wb-line-17);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._failureDetail_1oaj0_127 {\n display: block;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-label-tertiary);\n white-space: pre-wrap;\n}\n\n._inlineAction_1oaj0_134 {\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n}\n\n._inlineAction_1oaj0_134:disabled {\n opacity: 0.6;\n cursor: default;\n}\n\n._rawText_1oaj0_146 {\n margin: var(--wb-len-6) 0 0;\n max-width: 100%;\n}\n/*$vite$:1*/";
|
|
14378
14767
|
function workbenchCss() {
|
|
14379
14768
|
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}`;
|
|
14380
14769
|
}
|
|
@@ -14426,7 +14815,7 @@ function mount(ctx) {
|
|
|
14426
14815
|
let disposeDictionary;
|
|
14427
14816
|
const publish = () => {
|
|
14428
14817
|
disposeDictionary?.();
|
|
14429
|
-
const { dictionaries: merged, problems } = mergeMessagesSkipping(dictionaries, messagesOf(units.all()));
|
|
14818
|
+
const { dictionaries: merged, problems } = mergeMessagesSkipping(dictionaries, [unitTitlesOf(units.manifests()), ...messagesOf(units.all())]);
|
|
14430
14819
|
for (const problem of problems) console.warn(`[dsh-workbench] 套件 ${problem.unit} 的文案没并进来(只有它少了这几句):${problem.reason}`);
|
|
14431
14820
|
disposeDictionary = ctx.locale.register(LOCALE_NS, merged);
|
|
14432
14821
|
};
|