vscode-behavior3 2.1.3 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Binary file
@@ -5,8 +5,12 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <link rel="stylesheet" href="./codicons/codicon.css" />
7
7
  <title>Behavior3 Editor</title>
8
- <script type="module" crossorigin src="./assets/editor-RJ_NkY97.js"></script>
9
- <link rel="stylesheet" crossorigin href="./assets/editor-Ko79XsIi.css">
8
+ <script type="module" crossorigin src="./assets/editor-466vlAsX.js"></script>
9
+ <link rel="modulepreload" crossorigin href="./assets/rolldown-runtime-BYbx6iT9.js">
10
+ <link rel="modulepreload" crossorigin href="./assets/graph-vendor-ww5KcpJ-.js">
11
+ <link rel="modulepreload" crossorigin href="./assets/ui-vendor-CpXf__no.js">
12
+ <link rel="modulepreload" crossorigin href="./assets/vendor-Ctok02TG.js">
13
+ <link rel="stylesheet" crossorigin href="./assets/editor-CTBBjkkm.css">
10
14
  </head>
11
15
  <body>
12
16
  <div id="root"></div>
@@ -46,6 +46,7 @@
46
46
  "reload": "Reload",
47
47
  "reset": "Reset",
48
48
  "reset.confirm": "Reset to original value?",
49
+ "reset.defaultConfirm": "Reset to default value?",
49
50
  "rename": "Rename...",
50
51
  "replace": "Replace",
51
52
  "reportIssue": "Report Issue",
@@ -169,6 +170,11 @@
169
170
  "editor.newerVersionEditDenied": "This file is created by a newer version of Behavior3({{version}}). Please upgrade to the latest version.",
170
171
  "inspector.noActiveDocument": "Open a Behavior3 editor to inspect and edit the active tree.",
171
172
  "inspector.embeddedModeNotice": "Inspector is configured to appear inside the Behavior3 editor.",
173
+ "inspector.embeddedToolbar.build": "Build Behavior Tree",
174
+ "inspector.embeddedToolbar.toggleEditorMode": "Toggle Editor Mode",
175
+ "inspector.embeddedToolbar.toggleInspectorNodeJson": "Toggle Raw Node JSON",
176
+ "inspector.embeddedToolbar.createProject": "Create Project",
177
+ "inspector.embeddedToolbar.createTree": "Create Behavior Tree",
172
178
 
173
179
  "mutation.invalidJsonPath": "Invalid JSON path: {{path}}",
174
180
  "mutation.missingSelectedNode": "No selected node is available for this mutation.",
@@ -45,6 +45,7 @@
45
45
  "reload": "重新加载",
46
46
  "reset": "重置",
47
47
  "reset.confirm": "重置为原始值?",
48
+ "reset.defaultConfirm": "重置为默认值?",
48
49
  "rename": "重命名...",
49
50
  "replace": "替换",
50
51
  "reportIssue": "问题反馈",
@@ -168,6 +169,11 @@
168
169
  "editor.newerVersionEditDenied": "此文件由新版本 Behavior3({{version}}) 创建,请升级到最新版本后再编辑。",
169
170
  "inspector.noActiveDocument": "打开一个 Behavior3 编辑器后,这里会显示当前行为树的 Inspector,并支持直接编辑。",
170
171
  "inspector.embeddedModeNotice": "Inspector 当前配置为在 Behavior3 编辑器内部显示。",
172
+ "inspector.embeddedToolbar.build": "构建行为树",
173
+ "inspector.embeddedToolbar.toggleEditorMode": "切换编辑器模式",
174
+ "inspector.embeddedToolbar.toggleInspectorNodeJson": "切换原始节点 JSON",
175
+ "inspector.embeddedToolbar.createProject": "新建项目",
176
+ "inspector.embeddedToolbar.createTree": "新建行为树",
171
177
 
172
178
  "mutation.invalidJsonPath": "无效的 JSON 路径: {{path}}",
173
179
  "mutation.missingSelectedNode": "当前没有可用于提交此修改的选中节点。",
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "vscode-behavior3",
3
3
  "displayName": "%extension.displayName%",
4
4
  "description": "%extension.description%",
5
- "version": "2.1.3",
5
+ "version": "2.3.0",
6
6
  "publisher": "codetypess",
7
7
  "repository": {
8
8
  "type": "git",
@@ -36,6 +36,7 @@
36
36
  "dist/extension.js",
37
37
  "dist/webview/",
38
38
  "icon.png",
39
+ "LICENSE",
39
40
  "media/icons/icon.svg",
40
41
  "package.nls.json",
41
42
  "package.nls.zh-cn.json",
@@ -48,8 +49,8 @@
48
49
  },
49
50
  "license": "MIT",
50
51
  "engines": {
51
- "node": ">=18",
52
- "vscode": "^1.85.0"
52
+ "node": ">=20.19",
53
+ "vscode": "^1.105.0"
53
54
  },
54
55
  "categories": [
55
56
  "Other"
@@ -112,8 +113,18 @@
112
113
  "icon": "$(debug-alt)"
113
114
  },
114
115
  {
115
- "command": "behavior3.batchProcess",
116
- "title": "%command.batchProcess.title%",
116
+ "command": "behavior3.createBuildScript",
117
+ "title": "%command.createBuildScript.title%",
118
+ "category": "%command.category%"
119
+ },
120
+ {
121
+ "command": "behavior3.createBatchScript",
122
+ "title": "%command.createBatchScript.title%",
123
+ "category": "%command.category%"
124
+ },
125
+ {
126
+ "command": "behavior3.createCheckerScript",
127
+ "title": "%command.createCheckerScript.title%",
117
128
  "category": "%command.category%"
118
129
  },
119
130
  {
@@ -124,12 +135,14 @@
124
135
  {
125
136
  "command": "behavior3.createProject",
126
137
  "title": "%command.createProject.title%",
127
- "category": "%command.category%"
138
+ "category": "%command.category%",
139
+ "icon": "$(new-collection)"
128
140
  },
129
141
  {
130
142
  "command": "behavior3.createTree",
131
143
  "title": "%command.createTree.title%",
132
- "category": "%command.category%"
144
+ "category": "%command.category%",
145
+ "icon": "$(new-file)"
133
146
  },
134
147
  {
135
148
  "command": "behavior3.openSettings",
@@ -146,6 +159,12 @@
146
159
  "title": "%command.toggleEditorMode.title%",
147
160
  "category": "%command.category%",
148
161
  "icon": "$(edit-code)"
162
+ },
163
+ {
164
+ "command": "behavior3.toggleInspectorNodeJson",
165
+ "title": "%command.toggleInspectorNodeJson.title%",
166
+ "category": "%command.category%",
167
+ "icon": "$(code)"
149
168
  }
150
169
  ],
151
170
  "keybindings": [
@@ -168,12 +187,29 @@
168
187
  }
169
188
  ],
170
189
  "menus": {
171
- "editor/title": [
190
+ "view/title": [
191
+ {
192
+ "command": "behavior3.build",
193
+ "when": "view == behavior3.inspectorView",
194
+ "group": "navigation@1"
195
+ },
172
196
  {
173
197
  "command": "behavior3.toggleEditorMode",
174
- "when": "activeCustomEditorId == 'behavior3.treeEditor' || resourceExtname == .json",
175
- "group": "navigation@0"
198
+ "when": "view == behavior3.inspectorView",
199
+ "group": "navigation@2"
200
+ },
201
+ {
202
+ "command": "behavior3.toggleInspectorNodeJson",
203
+ "when": "view == behavior3.inspectorView && behavior3.inspectorSidebarMode",
204
+ "group": "navigation@2.5"
176
205
  },
206
+ {
207
+ "command": "behavior3.createProject",
208
+ "when": "view == behavior3.inspectorView",
209
+ "group": "navigation@3"
210
+ }
211
+ ],
212
+ "editor/title": [
177
213
  {
178
214
  "command": "behavior3.build",
179
215
  "when": "activeCustomEditorId == 'behavior3.treeEditor'",
@@ -195,15 +231,30 @@
195
231
  "group": "1_create@1"
196
232
  },
197
233
  {
198
- "command": "behavior3.batchProcess",
234
+ "command": "behavior3.runBatchProcessScript",
199
235
  "when": "explorerResourceIsFolder",
200
- "group": "1_create@2"
236
+ "group": "2_run@1"
201
237
  },
202
238
  {
203
239
  "command": "behavior3.createTree",
204
240
  "when": "explorerResourceIsFolder",
241
+ "group": "1_create@2"
242
+ },
243
+ {
244
+ "command": "behavior3.createBuildScript",
245
+ "when": "explorerResourceIsFolder",
205
246
  "group": "1_create@3"
206
247
  },
248
+ {
249
+ "command": "behavior3.createBatchScript",
250
+ "when": "explorerResourceIsFolder",
251
+ "group": "1_create@4"
252
+ },
253
+ {
254
+ "command": "behavior3.createCheckerScript",
255
+ "when": "explorerResourceIsFolder",
256
+ "group": "1_create@5"
257
+ },
207
258
  {
208
259
  "command": "behavior3.runBatchProcessScript",
209
260
  "when": "(resourceExtname == .ts || resourceExtname == .mts || resourceExtname == .js || resourceExtname == .mjs) && !explorerResourceIsFolder",
@@ -262,11 +313,11 @@
262
313
  },
263
314
  "scripts": {
264
315
  "vscode:prepublish": "npm run build",
265
- "build": "node esbuild.js && vite build",
316
+ "build": "node esbuild.js && node scripts/vite-webview.mjs --production",
266
317
  "build:cli": "node esbuild.js --cli",
267
- "build:dev": "node esbuild.js --dev && vite build --mode development",
318
+ "build:dev": "node esbuild.js --dev && node scripts/vite-webview.mjs --development",
268
319
  "watch:ext": "node esbuild.js --watch",
269
- "watch:webview": "vite build --watch --mode development",
320
+ "watch:webview": "node scripts/vite-webview.mjs --watch --development",
270
321
  "dev": "npm run watch:webview",
271
322
  "package": "vsce package",
272
323
  "pack:npm": "npm pack --dry-run",
@@ -282,17 +333,18 @@
282
333
  },
283
334
  "devDependencies": {
284
335
  "@ant-design/icons": "^6.1.1",
285
- "@antv/g6": "^5.0.51",
336
+ "@antv/g6": "^5.1.1",
286
337
  "@types/node": "^20.19.37",
287
338
  "@types/react": "^18.3.12",
288
339
  "@types/react-dom": "^18.3.1",
289
- "@types/vscode": "^1.85.0",
290
- "@vitejs/plugin-react": "^4.3.4",
291
- "@vscode/vsce": "^3.7.1",
340
+ "@types/vscode": "^1.105.0",
341
+ "@vitejs/plugin-react": "^5.2.0",
342
+ "@vscode/vsce": "^3.9.1",
292
343
  "ahooks": "^3.8.0",
293
344
  "antd": "^6.3.4",
294
345
  "autoprefixer": "^10.4.20",
295
- "esbuild": "^0.24.0",
346
+ "chokidar": "^4.0.3",
347
+ "esbuild": "^0.27.3",
296
348
  "i18next": "^23.12.2",
297
349
  "nanoid": "^5.1.6",
298
350
  "postcss": "^8.4.49",
@@ -307,7 +359,7 @@
307
359
  "ts-key-enum": "^2.0.12",
308
360
  "typescript": "^5.8.2",
309
361
  "usehooks-ts": "^3.1.0",
310
- "vite": "^6.3.5",
362
+ "vite": "^8.0.12",
311
363
  "zustand": "^5.0.3"
312
364
  }
313
365
  }
package/package.nls.json CHANGED
@@ -8,13 +8,16 @@
8
8
  "command.category": "Behavior Tree",
9
9
  "command.build.title": "Build Behavior Tree",
10
10
  "command.buildDebug.title": "Debug Build Behavior Tree",
11
- "command.batchProcess.title": "Batch Process Behavior Trees",
12
- "command.runBatchProcessScript.title": "Run as Batch Process",
11
+ "command.runBatchProcessScript.title": "Run Script as Batch Process",
12
+ "command.createBuildScript.title": "Create Build Script",
13
+ "command.createBatchScript.title": "Create Batch Script",
14
+ "command.createCheckerScript.title": "Create Checker Script",
13
15
  "command.createProject.title": "Create Project",
14
16
  "command.openSettings.title": "Open Node Config (.b3-setting)",
15
- "command.createTree.title": "Create Behavior3 File",
17
+ "command.createTree.title": "Create Behavior Tree File",
16
18
  "command.openWithEditor.title": "Open with Behavior3",
17
19
  "command.toggleEditorMode.title": "Toggle Text / Behavior3",
20
+ "command.toggleInspectorNodeJson.title": "Toggle Node JSON",
18
21
  "configuration.title": "Behavior3 Editor",
19
22
  "configuration.checkExpr.description": "Enable expression validation.",
20
23
  "configuration.language.description": "Editor UI language. The default follows the VS Code display language; you can also force a language.",
@@ -8,13 +8,16 @@
8
8
  "command.category": "行为树",
9
9
  "command.build.title": "构建行为树",
10
10
  "command.buildDebug.title": "调试构建行为树",
11
- "command.batchProcess.title": "批量处理行为树",
12
- "command.runBatchProcessScript.title": "作为批处理运行",
11
+ "command.runBatchProcessScript.title": "将脚本作为批处理运行",
12
+ "command.createBuildScript.title": "创建构建脚本",
13
+ "command.createBatchScript.title": "创建批处理脚本",
14
+ "command.createCheckerScript.title": "创建检查器脚本",
13
15
  "command.createProject.title": "创建项目",
14
16
  "command.openSettings.title": "打开节点配置 (.b3-setting)",
15
- "command.createTree.title": "创建 Behavior3 文件",
17
+ "command.createTree.title": "创建行为树文件",
16
18
  "command.openWithEditor.title": "使用 Behavior3 打开",
17
19
  "command.toggleEditorMode.title": "切换文本 / Behavior3",
20
+ "command.toggleInspectorNodeJson.title": "切换节点 JSON",
18
21
  "configuration.title": "Behavior3 编辑器",
19
22
  "configuration.checkExpr.description": "启用表达式校验。",
20
23
  "configuration.language.description": "编辑器界面语言。默认跟随 VS Code 显示语言,也可手动指定。",
@@ -62,14 +62,18 @@ export interface NodeArgChecker {
62
62
  }
63
63
 
64
64
  export type BuildScript = {
65
- shouldUpgradeTree?: (path: string, tree: TreeData) => boolean;
66
65
  onProcessTree?: (tree: TreeData, path: string, errors: string[]) => TreeData | null;
67
66
  onProcessNode?: (node: NodeData, errors: string[]) => NodeData | null;
68
67
  onWriteFile?: (path: string, tree: TreeData) => void;
69
68
  onComplete?: (status: "success" | "failure") => void;
70
69
  };
71
70
 
71
+ export type BatchScript = BuildScript & {
72
+ shouldUpgradeTree?: (path: string, tree: TreeData) => boolean;
73
+ };
74
+
72
75
  export type BuildHookClass<T extends BuildScript = BuildScript> = new (...args: any[]) => T;
76
+ export type BatchHookClass<T extends BatchScript = BatchScript> = new (...args: any[]) => T;
73
77
  export type NodeArgCheckerClass<T extends NodeArgChecker = NodeArgChecker> = new (
74
78
  ...args: any[]
75
79
  ) => T;
@@ -79,6 +83,11 @@ export type BuildDecorator = {
79
83
  <T extends BuildHookClass>(target: T, context: ClassDecoratorContext<T>): T | void;
80
84
  };
81
85
 
86
+ export type BatchDecorator = {
87
+ <T extends BatchHookClass>(target: T): T | void;
88
+ <T extends BatchHookClass>(target: T, context: ClassDecoratorContext<T>): T | void;
89
+ };
90
+
82
91
  export type CheckDecorator = {
83
92
  <T extends NodeArgCheckerClass>(target: T): T | void;
84
93
  <T extends NodeArgCheckerClass>(target: T, context: ClassDecoratorContext<T>): T | void;
@@ -87,10 +96,19 @@ export type CheckDecorator = {
87
96
 
88
97
  export type BuildRuntime = {
89
98
  build: BuildDecorator;
99
+ batch: BatchDecorator;
90
100
  check: CheckDecorator;
91
101
  };
92
102
 
93
- export declare class Hook implements BuildScript {
103
+ export declare class BuildHook implements BuildScript {
104
+ constructor(env: BuildEnv);
105
+ onProcessTree?(tree: TreeData, path: string, errors: string[]): TreeData | null;
106
+ onProcessNode?(node: NodeData, errors: string[]): NodeData | null;
107
+ onWriteFile?(path: string, tree: TreeData): void;
108
+ onComplete?(status: "success" | "failure"): void;
109
+ }
110
+
111
+ export declare class BatchHook implements BatchScript {
94
112
  constructor(env: BuildEnv);
95
113
  shouldUpgradeTree?(path: string, tree: TreeData): boolean;
96
114
  onProcessTree?(tree: TreeData, path: string, errors: string[]): TreeData | null;
@@ -98,3 +116,5 @@ export declare class Hook implements BuildScript {
98
116
  onWriteFile?(path: string, tree: TreeData): void;
99
117
  onComplete?(status: "success" | "failure"): void;
100
118
  }
119
+
120
+ export declare class Hook extends BuildHook {}
@@ -4,8 +4,7 @@ export type { NodeDef };
4
4
  export type NodeType = NodeDef["type"] | "Other" | "Error";
5
5
  export type NodeArg = Exclude<NodeDef["args"], undefined>[number];
6
6
 
7
- export const DOCUMENT_VERSION = "2.1.0";
8
- export const VERSION = DOCUMENT_VERSION;
7
+ export const DOCUMENT_VERSION = "2.2.0";
9
8
 
10
9
  export interface NodeData {
11
10
  id: string;
@@ -1 +0,0 @@
1
- html,body,#root{width:100%;height:100%;margin:0;padding:0}body{overflow:hidden;color:var(--ant-color-text)}body[data-webview-kind=inspector-sidebar]{--b3-inspector-sidebar-min-width: 300px;--b3-inspector-form-label-width: 110px}body[data-theme=dark]{--b3-panel-border: var(--vscode-sideBar-border, var(--vscode-panel-border, #30363d));--b3-panel-title: var(--vscode-sideBarTitle-foreground, var(--vscode-foreground, #e6edf3));--b3-graph-bg: var(--vscode-editor-background, #010409);--b3-graph-edge: #a3b1bf;--b3-text-muted: var(--vscode-descriptionForeground, #8b949e);--b3-filter-hover-bg: var(--vscode-list-hoverBackground, #30363d);--b3-filter-selected-bg: var(--vscode-list-activeSelectionBackground, #2f81f7);--b3-filter-selected-hover-bg: var( --vscode-list-inactiveSelectionBackground, var(--vscode-list-activeSelectionBackground, #388bfd) );--b3-search-bg: var(--vscode-editorWidget-background, var(--vscode-input-background, #161b22));--b3-search-border-accent: var(--vscode-focusBorder, #f78166);--b3-search-shadow: #0000005c;--b3-override-bar: #d39a21;--b3-node-content-bg: #ffffff;--b3-node-text: #111827;--b3-node-muted: #4b5563;--b3-node-divider: #666666;--b3-node-highlight-bg: #0d1117;--b3-node-highlight-text: #ffffff;--b3-node-gray-fill: #0d1117;--b3-node-gray-border: #30363d;--b3-node-gray-rail: #30363d;--b3-node-gray-text: #666666;--b3-node-id-text: var(--vscode-editorLineNumber-activeForeground, #ffffff);--b3-node-id-stroke: #000000;--b3-node-selection-base: var(--vscode-editor-background, #24303d);--b3-node-selection-strength: 58%;--b3-node-focus-ring: rgba(255, 171, 0, .22);--b3-node-focus-color: var(--vscode-focusBorder, #ffab00);--b3-node-focus-opacity: .45;--b3-node-variable-hover-bg: var(--vscode-list-hoverBackground, rgba(23, 105, 221, .08));--b3-node-variable-active-hover-bg: rgba(255, 255, 255, .14);--b3-subtree-outline: var(--vscode-descriptionForeground, var(--vscode-panel-border, #a5b1be));--b3-warning-text: var(--vscode-errorForeground, #b42318);--b3-drop-before: var(--vscode-editorWarning-foreground, #faad14);--b3-drop-child: var(--vscode-errorForeground, #ff4d4f);--b3-drag-source: var(--vscode-list-dropBackground, #ffa500);--b3-collapse-bg: var(--vscode-editorWidget-background, #ffffff);--b3-collapse-border: var(--vscode-panel-border, #666666);--b3-collapse-text: var(--vscode-descriptionForeground, #666666)}body[data-theme=light]{--b3-panel-border: var(--vscode-sideBar-border, var(--vscode-panel-border, #d0d7de));--b3-panel-title: var(--vscode-sideBarTitle-foreground, var(--vscode-foreground, #1f2328));--b3-graph-bg: var(--vscode-editor-background, #f6f8fa);--b3-graph-edge: #a3b1bf;--b3-text-muted: var(--vscode-descriptionForeground, #57606a);--b3-filter-hover-bg: var(--vscode-list-hoverBackground, #eaeef2);--b3-filter-selected-bg: var(--vscode-list-activeSelectionBackground, #0969da);--b3-filter-selected-hover-bg: var( --vscode-list-inactiveSelectionBackground, var(--vscode-list-activeSelectionBackground, #1f6feb) );--b3-search-bg: var(--vscode-editorWidget-background, var(--vscode-input-background, #ffffff));--b3-search-border-accent: var(--vscode-focusBorder, #0969da);--b3-search-shadow: #1f232826;--b3-override-bar: #d39a21;--b3-node-content-bg: #ffffff;--b3-node-text: #111827;--b3-node-muted: #4b5563;--b3-node-divider: #666666;--b3-node-highlight-bg: #0d1117;--b3-node-highlight-text: #ffffff;--b3-node-gray-fill: #0d1117;--b3-node-gray-border: #30363d;--b3-node-gray-rail: #30363d;--b3-node-gray-text: #666666;--b3-node-id-text: var( --vscode-editorLineNumber-activeForeground, var(--vscode-foreground, #1f2328) );--b3-node-id-stroke: #ffffff;--b3-node-selection-base: var(--vscode-editor-background, #ffffff);--b3-node-selection-strength: 38%;--b3-node-focus-ring: rgba(191, 135, 0, .28);--b3-node-focus-color: var(--vscode-focusBorder, #9a6700);--b3-node-focus-opacity: .5;--b3-node-variable-hover-bg: var(--vscode-list-hoverBackground, rgba(9, 105, 218, .1));--b3-node-variable-active-hover-bg: rgba(255, 255, 255, .18);--b3-subtree-outline: var(--vscode-descriptionForeground, var(--vscode-panel-border, #6e7781));--b3-warning-text: var(--vscode-errorForeground, #cf222e);--b3-drop-before: var(--vscode-editorWarning-foreground, #9a6700);--b3-drop-child: var(--vscode-errorForeground, #cf222e);--b3-drag-source: var(--vscode-list-dropBackground, #fb8500);--b3-collapse-bg: var(--vscode-editorWidget-background, #ffffff);--b3-collapse-border: var(--vscode-panel-border, #8c959f);--b3-collapse-text: var(--vscode-descriptionForeground, #57606a)}body[data-webview-kind=inspector-sidebar][data-theme=dark]{--b3-panel-border: var( --vscode-sideBarSectionHeader-border, var(--vscode-sideBar-border, #2b2b2b) );--b3-panel-title: var(--vscode-sideBarTitle-foreground, var(--vscode-foreground, #cccccc))}body[data-webview-kind=inspector-sidebar][data-theme=light]{--b3-panel-border: var( --vscode-sideBarSectionHeader-border, var(--vscode-sideBar-border, #e5e5e5) );--b3-panel-title: var(--vscode-sideBarTitle-foreground, var(--vscode-foreground, #3c3c3c))}.b3-shell{height:100%}.b3-body{display:flex;flex-direction:row;min-height:0;flex:1}.b3-content{flex:1 1 0;width:0;min-height:0;padding:0;overflow:hidden;background:var(--b3-graph-bg)}.b3-sider{border-left:1px solid var(--b3-panel-border);overflow:hidden}.b3-sider-embedded.ant-layout-sider{min-width:320px!important;max-width:460px;height:100%;background:transparent!important}.b3-sider-embedded>.ant-layout-sider-children{height:100%;background:transparent}.b3-inspector{height:100%;display:flex;flex-direction:column}.b3-inspector-empty{height:100%;padding:20px 16px;text-align:center}.b3-inspector-header{padding:12px;border-bottom:1px solid var(--b3-panel-border)}.b3-inspector-header-row{min-width:0}.b3-inspector-banner{margin:12px 12px 0}.b3-inspector-header .ant-typography{font-size:18px;font-weight:600;line-height:1.35;color:var(--b3-panel-title)}.b3-inspector-content{--b3-inspector-content-padding: 16px;min-height:0;flex:1;overflow:auto;padding:var(--b3-inspector-content-padding)}.b3-inspector-skeleton-content{display:flex;flex-direction:column;gap:10px}.b3-inspector-skeleton-title.ant-skeleton.ant-skeleton-element,.b3-inspector-skeleton-title .ant-skeleton-input{width:120px}.b3-inspector-skeleton-row{display:grid;grid-template-columns:var(--b3-inspector-form-label-width, 110px) minmax(0,1fr);column-gap:8px;align-items:center}.b3-inspector-skeleton-label.ant-skeleton.ant-skeleton-element,.b3-inspector-skeleton-label .ant-skeleton-input{width:72px;justify-self:end}.b3-inspector-skeleton-field.ant-skeleton.ant-skeleton-element,.b3-inspector-skeleton-field .ant-skeleton-input{width:100%}.b3-inspector-skeleton-section.ant-skeleton.ant-skeleton-element,.b3-inspector-skeleton-section .ant-skeleton-input{width:96px;margin-top:4px}.b3-inspector-form .ant-form-item{margin-bottom:8px}.b3-inspector-form .ant-form-item-label{min-width:var(--b3-inspector-form-label-width, 110px);max-width:var(--b3-inspector-form-label-width, 110px);flex:0 0 var(--b3-inspector-form-label-width, 110px);padding-right:0}.b3-inspector-form .ant-form-item-label>label{width:100%;height:auto;min-height:32px;align-items:flex-start;justify-content:flex-end;color:var(--ant-color-text);line-height:1.35}.b3-form-label{display:inline-flex;align-items:flex-start;justify-content:flex-end;width:100%;max-width:100%;min-width:0;padding-top:calc((32px - 1.35em)/2)}.b3-form-label-text{min-width:0;flex:1 1 auto;text-align:right;white-space:normal;word-break:break-word;overflow-wrap:anywhere}.b3-form-required-mark{color:var(--ant-color-error);margin-right:4px}.b3-form-label-colon{flex:0 0 auto;padding-left:2px;white-space:nowrap}.b3-inspector-form .ant-form-item-control{min-width:0}.b3-inspector-form .ant-form-item-control-input,.b3-inspector-form .ant-form-item-control-input-content{min-width:0;width:100%}.b3-inspector-form .ant-form-item-explain{font-size:small;word-break:break-word}.b3-inspector-form .b3-section-divider.ant-divider-horizontal.ant-divider-with-text{margin-bottom:0}.b3-inspector-form .b3-section-divider+.ant-form-item,.b3-inspector-form .b3-section-divider+.b3-list-block,.b3-inspector-form .b3-section-divider+.b3-override-bar{margin-top:6px}.b3-section-title{margin:0;font-size:1em;font-weight:600}.b3-inspector-form .ant-select,.b3-inspector-form .ant-select-auto-complete,.b3-inspector-form .ant-input-number{width:100%}.b3-list-block{display:flex;flex-direction:column;row-gap:0}.b3-inspector .ant-btn.ant-btn-dashed{background:transparent}.b3-inspector .ant-btn.ant-btn-dashed:not(:disabled):not(.ant-btn-disabled):hover,.b3-inspector .ant-btn.ant-btn-dashed:not(:disabled):not(.ant-btn-disabled):focus-visible{background:var(--ant-color-fill-tertiary)}.b3-decl-group{margin-bottom:5px}.b3-subtree-path-row{margin-bottom:6px}.b3-decl-vars{display:flex;flex-direction:column;row-gap:2px}.b3-var-row,.b3-var-row-compact{width:100%}.b3-var-counter{display:flex;align-items:center;justify-content:flex-start;gap:4px;min-width:40px;max-width:40px;padding:0 6px 0 5px;cursor:pointer;color:var(--ant-color-text-secondary);background:var(--ant-color-fill-tertiary);border:1px solid var(--ant-color-border);border-right:0;border-radius:6px 0 0 6px}.b3-custom-type-badge{display:flex;align-items:center;justify-content:center;height:32px;flex:0 0 40px;min-width:40px;max-width:40px;padding:0 6px;color:var(--ant-color-text-secondary);background:var(--ant-color-fill-tertiary);border:1px solid var(--ant-color-border);border-right:0;border-radius:6px 0 0 6px;cursor:help;-webkit-user-select:none;user-select:none;font-size:12px;font-weight:700;letter-spacing:.04em}.b3-custom-type-badge .codicon{font-size:16px}.b3-custom-type-badge.is-string{color:var(--ant-color-blue-3)}.b3-custom-type-badge.is-number{color:var(--ant-color-gold-3)}.b3-custom-type-badge.is-boolean{color:var(--ant-color-green-3)}.b3-custom-type-badge.is-invalid{color:var(--ant-color-error)}.b3-inline-remove{margin-top:10px;color:var(--ant-color-text-tertiary);cursor:pointer}.b3-inline-remove:hover{color:var(--ant-color-error)}.b3-inline-remove-compact{color:var(--ant-color-text-tertiary);cursor:pointer}.b3-inline-remove-compact:hover{color:var(--ant-color-error)}.b3-inline-action{color:var(--ant-color-text-tertiary);cursor:pointer}.b3-inline-action:hover{color:var(--ant-color-text)}.b3-row-spacer{width:14px}.b3-node-subtree-button{margin-top:12px}.b3-override-bar{position:relative}.b3-override-rail{position:absolute;top:0;left:calc(-1 * var(--b3-inspector-content-padding, 16px));bottom:0;width:6px;cursor:pointer;border-radius:0;background:var(--b3-override-bar)}.b3-markdown{padding:0 4px;margin-bottom:12px;color:var(--ant-color-text-secondary);font-size:13px;word-break:break-word}.b3-markdown code{padding:.15em .3em;border-radius:6px;background:color-mix(in srgb,var(--ant-color-fill) 72%,transparent);white-space:break-spaces}body[data-webview-kind=inspector-sidebar] .b3-inspector{overflow-x:auto;overflow-y:hidden}body[data-webview-kind=inspector-sidebar] .b3-inspector-header,body[data-webview-kind=inspector-sidebar] .b3-inspector-banner,body[data-webview-kind=inspector-sidebar] .b3-inspector-content,body[data-webview-kind=inspector-sidebar] .b3-inspector-skeleton-content{min-width:var(--b3-inspector-sidebar-min-width)}body[data-webview-kind=inspector-sidebar] .b3-inspector-form.ant-form:not(.ant-form-inline) .ant-form-item{flex-wrap:nowrap}body[data-webview-kind=inspector-sidebar] .b3-inspector-form.ant-form:not(.ant-form-inline) .ant-form-item .ant-form-item-label{padding:0!important;margin:0!important}body[data-webview-kind=inspector-sidebar] .b3-inspector-form .ant-form-item:last-child{margin-bottom:0!important}body[data-webview-kind=inspector-sidebar] .b3-inspector-form .b3-section-divider+.ant-form-item,body[data-webview-kind=inspector-sidebar] .b3-inspector-form .b3-section-divider+.b3-list-block,body[data-webview-kind=inspector-sidebar] .b3-inspector-form .b3-section-divider+.b3-override-bar{margin-top:4px}.b3-search-overlay{position:absolute;top:0;right:0;z-index:100;width:100%;justify-content:flex-end;padding:10px 10px 0 0}.b3-search-box{align-items:center;padding:4px 10px;border-left:3px solid var(--b3-search-border-accent);border-radius:4px;background:var(--b3-search-bg);box-shadow:0 0 8px 2px var(--b3-search-shadow)}.b3-search-input{width:220px}.b3-search-input.ant-input-affix-wrapper.ant-input-affix-wrapper-sm{border-radius:2px;padding-top:1px;padding-bottom:1px}.b3-search-suffix{align-items:center}.b3-search-counter{min-width:40px;padding:0 10px 0 5px;color:var(--b3-text-muted)}.b3-search-filter:hover{background-color:var(--b3-filter-hover-bg)!important}.b3-search-filter-selected{background-color:var(--b3-filter-selected-bg)!important}.b3-search-filter-selected:hover{background-color:var(--b3-filter-selected-hover-bg)!important}.b3-graph-shell{position:relative;width:100%;height:100%;min-height:0}.b3-context-menu-icon{display:inline-flex;align-items:center;justify-content:center;width:18px;font-size:17px;line-height:1}.b3-graph{position:relative;width:100%;height:100%;min-height:0;cursor:grab;-webkit-user-select:none;user-select:none;background:var(--b3-graph-bg)}.b3-graph.is-panning{cursor:grabbing}.b3-graph-viewport{position:relative;width:100%;height:100%;overflow:hidden}.b3-graph-world{position:absolute;left:0;top:0;transform-origin:0 0}.b3-graph-edges{position:absolute;top:0;right:0;bottom:0;left:0;overflow:visible;pointer-events:none;shape-rendering:geometricPrecision}.b3-graph-edges path{fill:none;stroke:var(--b3-graph-edge)}.b3-graph-nodes{position:absolute;top:0;right:0;bottom:0;left:0}.b3-graph-node{--b3-node-scale: 1;box-sizing:border-box;position:absolute;left:0;top:0;overflow:visible}.b3-node-floating-id{position:absolute;top:calc(50% + 2px * var(--b3-node-scale));right:calc(100% + 3px * var(--b3-node-scale));z-index:1;color:var(--b3-node-id-text);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:calc(20px * var(--b3-node-scale));font-weight:700;line-height:1;white-space:nowrap;pointer-events:none;transform:translateY(-50%) scale(calc(1 / var(--b3-node-scale)));transform-origin:right center;text-shadow:0 0 1px var(--b3-node-id-stroke),0 1px 0 var(--b3-node-id-stroke),1px 0 0 var(--b3-node-id-stroke),-1px 0 0 var(--b3-node-id-stroke),0 -1px 0 var(--b3-node-id-stroke)}.b3-node-floating-id.is-gray{color:var(--b3-node-gray-text)}.b3-node{--b3-node-accent: #707070;box-sizing:border-box;position:relative;width:calc(100% * var(--b3-node-scale));height:calc(100% * var(--b3-node-scale));overflow:visible;isolation:isolate;transform:scale(calc(1 / var(--b3-node-scale)));transform-origin:0 0;border-width:calc(2px * var(--b3-node-scale));border-style:solid;border-color:var(--b3-node-accent);border-radius:calc(4px * var(--b3-node-scale));background:var(--b3-node-accent);transition:border-color .12s ease,box-shadow .12s ease,opacity .15s ease}.b3-node:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;opacity:0;border-radius:calc(14px * var(--b3-node-scale));background:transparent;box-shadow:0 0 0 0 transparent;pointer-events:none;transition:opacity .12s ease,box-shadow .12s ease}.b3-node:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;pointer-events:none;transition:opacity .12s ease}.b3-node:hover,.b3-node.is-selected{box-shadow:none}.b3-node.is-selected:before{opacity:1;box-shadow:0 0 0 calc(10px * var(--b3-node-scale)) color-mix(in srgb,var(--b3-node-accent) var(--b3-node-selection-strength),var(--b3-node-selection-base))}.b3-node.is-focused{box-shadow:0 0 0 calc(3px * var(--b3-node-scale)) var(--b3-node-focus-ring)}.b3-node.is-drag-source{opacity:.7}.b3-node.is-drop-before,.b3-node.is-drop-after{border-color:var(--b3-drop-before)}.b3-node.is-drop-child{border-color:var(--b3-drop-child)}.b3-node.is-drop-before:after,.b3-node.is-drop-after:after,.b3-node.is-drop-child:after{opacity:1}.b3-node.is-drop-before:after{top:0;right:0;bottom:50%;left:0;background:color-mix(in srgb,var(--b3-drop-before) 22%,transparent)}.b3-node.is-drop-after:after{top:50%;right:0;bottom:0;left:0;background:color-mix(in srgb,var(--b3-drop-before) 22%,transparent)}.b3-node.is-drop-child:after{top:0;right:0;bottom:0;left:50%;background:color-mix(in srgb,var(--b3-drop-child) 24%,transparent)}.b3-node.is-gray{opacity:.45}.b3-node.has-var-hit{box-shadow:none}.b3-node .ant-card-body{padding:0}.b3-node-shell{box-sizing:border-box;display:grid;grid-template-columns:calc(40px * var(--b3-node-scale)) minmax(0,1fr);height:100%;min-height:calc(60px * var(--b3-node-scale));overflow:hidden;border-radius:calc(2px * var(--b3-node-scale))}.b3-node-icon-rail{display:flex;align-items:center;justify-content:center;background:transparent}.b3-node-icon{width:calc(30px * var(--b3-node-scale));height:calc(30px * var(--b3-node-scale));object-fit:contain;pointer-events:none}.b3-node-content{box-sizing:border-box;height:100%;min-width:0;background:var(--b3-node-content-bg);border-radius:0 calc(2px * var(--b3-node-scale)) calc(2px * var(--b3-node-scale)) 0;padding:calc(2px * var(--b3-node-scale)) calc(8px * var(--b3-node-scale)) calc(6px * var(--b3-node-scale)) calc(6px * var(--b3-node-scale))}.b3-node-header{display:flex;align-items:flex-start;justify-content:space-between;gap:calc(4px * var(--b3-node-scale));min-height:calc(20px * var(--b3-node-scale))}.b3-node-title{overflow:hidden;color:var(--b3-node-text);font-size:calc(14px * var(--b3-node-scale));font-weight:700;line-height:calc(20px * var(--b3-node-scale));text-overflow:ellipsis;white-space:nowrap}.b3-node-header-icons{display:flex;align-items:flex-start;gap:calc(2px * var(--b3-node-scale));flex:0 0 auto}.b3-node-flag-icon{width:calc(16px * var(--b3-node-scale));height:calc(16px * var(--b3-node-scale));object-fit:contain;margin-top:calc(4px * var(--b3-node-scale));pointer-events:none}.b3-node-status-icon{width:calc(20px * var(--b3-node-scale));height:calc(20px * var(--b3-node-scale));object-fit:contain;flex:0 0 auto;margin-top:calc(3px * var(--b3-node-scale));pointer-events:none}.b3-node-divider{height:calc(1px * var(--b3-node-scale));margin:0 0 calc(5px * var(--b3-node-scale));background:var(--b3-node-divider)}.b3-node-detail-row{display:flex;align-items:flex-start;gap:0;min-width:0;padding:0;margin:0;color:var(--b3-node-text);font-size:calc(12px * var(--b3-node-scale));line-height:calc(20px * var(--b3-node-scale));border-radius:calc(4px * var(--b3-node-scale))}.b3-node-detail-row.is-active{color:var(--b3-node-highlight-text);background:var(--b3-node-highlight-bg)}.b3-node-detail-row.is-subtle{color:var(--b3-node-muted)}.b3-node-detail-row.is-warning{color:var(--b3-warning-text)}.b3-node-detail-row.is-mark{font-weight:700}.b3-node-detail-label{flex:0 0 auto;color:inherit;font-weight:400}.b3-node-detail-value{min-width:0;flex:1;word-break:break-word}.b3-node-detail-row.is-active .b3-node-detail-label,.b3-node-detail-row.is-active .b3-node-detail-value,.b3-node-detail-row.is-active .b3-node-json-punctuation{color:inherit}.b3-node-detail-row.is-mark .b3-node-detail-value{overflow:hidden;font-weight:700;text-overflow:ellipsis;white-space:nowrap;word-break:normal}.b3-node-detail-row.is-mark .b3-node-detail-label{font-weight:700}.b3-node-detail-row.is-subtle .b3-node-detail-label{color:var(--b3-node-muted)}.b3-node-detail-row.is-warning .b3-node-detail-label{color:var(--b3-warning-text)}.b3-node-variable-button{padding:0;margin:0;color:inherit;font:inherit;font-weight:inherit;line-height:inherit;background:transparent;border:0;border-radius:calc(2px * var(--b3-node-scale));cursor:pointer}.b3-node-variable-button:hover{color:inherit;background:var(--b3-node-variable-hover-bg)}.b3-node-variable-button.is-active{color:inherit;font-weight:inherit}.b3-node-detail-row.is-active .b3-node-variable-button:hover{background:var(--b3-node-variable-active-hover-bg)}.b3-node-json-punctuation{color:inherit}.b3-node.is-composite{--b3-node-accent: #34d800}.b3-node.is-decorator{--b3-node-accent: #b2eb35}.b3-node.is-condition{--b3-node-accent: #f72585}.b3-node.is-action{--b3-node-accent: #1769dd}.b3-node.is-other{--b3-node-accent: #707070}.b3-node.is-error{--b3-node-accent: #ff0000}.b3-loading{height:100%}