@kiberon-labs/behave-graph-flow 1.0.0 → 3.0.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.
Files changed (378) hide show
  1. package/.fallowrc.json +16 -0
  2. package/.storybook/main.ts +32 -0
  3. package/.storybook/manager.ts +6 -0
  4. package/.storybook/preview.ts +64 -0
  5. package/.storybook/styles.css +16 -0
  6. package/.turbo/turbo-build.log +7 -0
  7. package/CHANGELOG.md +368 -0
  8. package/LICENSE +6 -0
  9. package/README.md +2 -2
  10. package/data/Polynomial.json +510 -0
  11. package/data/sequence.json +337 -0
  12. package/data/trigger-event.json +241 -0
  13. package/data/variable-change.json +210 -0
  14. package/dist/AnyControlImpl-Ds-CShIB.js +20 -0
  15. package/dist/AnyControlImpl-Ds-CShIB.js.map +1 -0
  16. package/dist/DocumentationBrowserPanelImpl-deZNzFX8.js +166 -0
  17. package/dist/DocumentationBrowserPanelImpl-deZNzFX8.js.map +1 -0
  18. package/dist/entry.css +4 -0
  19. package/dist/index.css +42 -0
  20. package/dist/index.css.map +1 -0
  21. package/dist/index.d.ts +3597 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +18009 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/noteImpl-KkrrWgJd.js +242 -0
  26. package/dist/noteImpl-KkrrWgJd.js.map +1 -0
  27. package/dist/styles.module-CvmpDkZj.css +3 -0
  28. package/dist/styles.module-CvmpDkZj.css.map +1 -0
  29. package/dist/styles.module-DZxg8aW9.js +271 -0
  30. package/dist/styles.module-DZxg8aW9.js.map +1 -0
  31. package/dist/useChangeNodeData-ChQGK7AI.js +23 -0
  32. package/dist/useChangeNodeData-ChQGK7AI.js.map +1 -0
  33. package/docs/notifications.md +246 -0
  34. package/docs/protocol.md +702 -0
  35. package/docs/specifics.md +191 -0
  36. package/package.json +82 -22
  37. package/postcss.config.ts +3 -4
  38. package/src/annotations/index.ts +32 -0
  39. package/src/components/FloatingToolbar/index.module.css +37 -0
  40. package/src/components/FloatingToolbar/index.tsx +256 -0
  41. package/src/components/Flow.tsx +287 -75
  42. package/src/components/contextMenus/DynamicContextMenu.tsx +85 -0
  43. package/src/components/contextMenus/NodePicker.module.css +274 -0
  44. package/src/components/contextMenus/NodePicker.tsx +481 -0
  45. package/src/components/contextMenus/edge.tsx +22 -0
  46. package/src/components/contextMenus/node.tsx +15 -0
  47. package/src/components/contextMenus/selection.tsx +11 -0
  48. package/src/components/controls/any/AnyControlImpl.tsx +14 -0
  49. package/src/components/controls/any/index.tsx +19 -0
  50. package/src/components/controls/boolean/index.tsx +13 -0
  51. package/src/components/controls/colorPicker/InputPopover.module.css +100 -0
  52. package/src/components/controls/colorPicker/InputPopover.tsx +31 -0
  53. package/src/components/controls/colorPicker/index.module.css +18 -0
  54. package/src/components/controls/colorPicker/index.tsx +61 -0
  55. package/src/components/controls/number/index.tsx +35 -0
  56. package/src/components/controls/string/index.tsx +16 -0
  57. package/src/components/edges/index.tsx +475 -0
  58. package/src/components/edges/offsetBezier.ts +134 -0
  59. package/src/components/hotKeys.tsx +20 -0
  60. package/src/components/layoutController/index.module.css +13 -0
  61. package/src/components/layoutController/index.tsx +140 -0
  62. package/src/components/layoutController/utils.ts +248 -0
  63. package/src/components/menubar/defaults.tsx +516 -0
  64. package/src/components/menubar/index.tsx +49 -0
  65. package/src/components/menubar/menuItem.module.css +31 -0
  66. package/src/components/menubar/menuItem.tsx +65 -0
  67. package/src/components/nodes/behave/Node.module.css +23 -0
  68. package/src/components/nodes/behave/Node.tsx +176 -0
  69. package/src/components/nodes/behave/NodeContainer.module.css +88 -0
  70. package/src/components/nodes/behave/NodeContainer.tsx +46 -0
  71. package/src/components/nodes/behave/index.tsx +14 -0
  72. package/src/components/nodes/group/index.tsx +109 -0
  73. package/src/components/nodes/wrapper/index.tsx +73 -0
  74. package/src/components/nodes/wrapper/styles.module.css +87 -0
  75. package/src/components/notifications/NotificationProvider.tsx +81 -0
  76. package/src/components/notifications/index.ts +2 -0
  77. package/src/components/notifications/utils.ts +71 -0
  78. package/src/components/panels/alignment/index.module.css +10 -0
  79. package/src/components/panels/alignment/index.tsx +244 -0
  80. package/src/components/panels/base/index.tsx +5 -0
  81. package/src/components/panels/base/styles.module.css +12 -0
  82. package/src/components/panels/common/PanelHeader.module.css +24 -0
  83. package/src/components/panels/common/PanelHeader.tsx +22 -0
  84. package/src/components/panels/common/SectionTitle.module.css +13 -0
  85. package/src/components/panels/common/SectionTitle.tsx +10 -0
  86. package/src/components/panels/events/EditEventPanel.tsx +324 -0
  87. package/src/components/panels/events/ManageEventsPanel.tsx +101 -0
  88. package/src/components/panels/events/index.tsx +23 -0
  89. package/src/components/panels/events/styles.module.css +178 -0
  90. package/src/components/panels/graphProperties/index.tsx +125 -0
  91. package/src/components/panels/history/index.tsx +92 -0
  92. package/src/components/panels/history/styles.module.css +97 -0
  93. package/src/components/panels/keymaps/index.module.css +68 -0
  94. package/src/components/panels/keymaps/index.tsx +166 -0
  95. package/src/components/panels/layers/index.tsx +245 -0
  96. package/src/components/panels/layers/styles.module.css +107 -0
  97. package/src/components/panels/legend/index.module.css +6 -0
  98. package/src/components/panels/legend/index.tsx +76 -0
  99. package/src/components/panels/logs/index.module.css +218 -0
  100. package/src/components/panels/logs/index.tsx +288 -0
  101. package/src/components/panels/nodeInputs/InputControl.tsx +63 -0
  102. package/src/components/panels/nodeInputs/InputsGroup.tsx +65 -0
  103. package/src/components/panels/nodeInputs/MultipleNodesView.tsx +37 -0
  104. package/src/components/panels/nodeInputs/NodeSettings.tsx +92 -0
  105. package/src/components/panels/nodeInputs/NodeTitleEditor.tsx +125 -0
  106. package/src/components/panels/nodeInputs/OutputsGroup.tsx +55 -0
  107. package/src/components/panels/nodeInputs/SocketGenerators.tsx +32 -0
  108. package/src/components/panels/nodeInputs/index.module.css +308 -0
  109. package/src/components/panels/nodeInputs/index.tsx +349 -0
  110. package/src/components/panels/nodeInputs/useNodeHandlers.ts +76 -0
  111. package/src/components/panels/nodeInputs/useNodeInputsData.ts +153 -0
  112. package/src/components/panels/nodePicker/index.tsx +115 -0
  113. package/src/components/panels/panel/index.module.css +66 -0
  114. package/src/components/panels/panel/index.tsx +88 -0
  115. package/src/components/panels/search/index.module.css +16 -0
  116. package/src/components/panels/search/index.tsx +215 -0
  117. package/src/components/panels/systemSettings/ConversionsSettings.tsx +203 -0
  118. package/src/components/panels/systemSettings/index.tsx +251 -0
  119. package/src/components/panels/systemSettings/styles.module.css +138 -0
  120. package/src/components/panels/traces/GridLines.tsx +38 -0
  121. package/src/components/panels/traces/TimeGrid.tsx +48 -0
  122. package/src/components/panels/traces/TraceLane.tsx +62 -0
  123. package/src/components/panels/traces/TraceTooltip.tsx +22 -0
  124. package/src/components/panels/traces/TracesHeader.tsx +56 -0
  125. package/src/components/panels/traces/index.module.css +159 -0
  126. package/src/components/panels/traces/index.tsx +298 -0
  127. package/src/components/panels/traces/types.ts +48 -0
  128. package/src/components/panels/traces/useDerivedSpans.ts +307 -0
  129. package/src/components/panels/traces/utils.ts +33 -0
  130. package/src/components/panels/variables/CreateVariableScreen.tsx +162 -0
  131. package/src/components/panels/variables/ManageVariablesScreen.tsx +147 -0
  132. package/src/components/panels/variables/index.tsx +125 -0
  133. package/src/components/panels/variables/styles.module.css +149 -0
  134. package/src/components/primitives/icon.module.css +45 -0
  135. package/src/components/primitives/icon.tsx +38 -0
  136. package/src/components/sockets/input/index.tsx +83 -0
  137. package/src/components/sockets/input/styles.module.css +26 -0
  138. package/src/components/sockets/output/index.tsx +68 -0
  139. package/src/components/sockets/output/styles.module.css +22 -0
  140. package/src/css/notes.css +135 -0
  141. package/src/css/prosemirror.css +57 -0
  142. package/src/css/rc-dock.css +212 -0
  143. package/src/css/rc-menu.css +101 -0
  144. package/src/css/themes/kiberon.css +127 -0
  145. package/src/css/vars.css +198 -0
  146. package/src/css/vscode-elements.css +124 -0
  147. package/src/entry.css +4 -0
  148. package/src/generators/CallSubgraphGenerator.tsx +136 -0
  149. package/src/generators/CustomEventOnTriggeredGenerator.tsx +85 -0
  150. package/src/generators/GraphBoundaryGenerator.module.css +32 -0
  151. package/src/generators/GraphBoundaryGenerator.tsx +193 -0
  152. package/src/generators/SequenceGenerator.tsx +104 -0
  153. package/src/generators/SwitchOnIntegerGenerator.tsx +256 -0
  154. package/src/generators/SwitchOnStringGenerator.tsx +263 -0
  155. package/src/generators/callSubgraphSync.ts +126 -0
  156. package/src/generators/registerDefaultGenerators.ts +55 -0
  157. package/src/generators/registerDefaults.ts +26 -0
  158. package/src/hooks/useBehaveGraphFlow.ts +17 -16
  159. package/src/hooks/useFlowHandlers.ts +154 -30
  160. package/src/hooks/useWasdPan.ts +210 -0
  161. package/src/index.css +134 -0
  162. package/src/index.ts +53 -18
  163. package/src/manifest/contributionRegistry.ts +93 -0
  164. package/src/manifest/index.ts +4 -0
  165. package/src/manifest/loadManifest.ts +82 -0
  166. package/src/manifest/manifestPlugin.ts +29 -0
  167. package/src/manifest/passthroughValueType.ts +40 -0
  168. package/src/plugin/alignment/index.ts +91 -0
  169. package/src/plugin/autosave/controller.ts +366 -0
  170. package/src/plugin/autosave/index.tsx +114 -0
  171. package/src/plugin/autosave/panel/BackupPanel.tsx +141 -0
  172. package/src/plugin/autosave/panel/index.tsx +1 -0
  173. package/src/plugin/autosave/panel/styles.module.css +56 -0
  174. package/src/plugin/autosave/settings.ts +65 -0
  175. package/src/plugin/autosave/storage.ts +147 -0
  176. package/src/plugin/docs/index.tsx +297 -0
  177. package/src/plugin/docs/panel/DocumentationBrowserPanelImpl.tsx +200 -0
  178. package/src/plugin/docs/panel/index.tsx +21 -0
  179. package/src/plugin/docs/panel/styles.module.css +174 -0
  180. package/src/plugin/graphrunner/actions.ts +326 -0
  181. package/src/plugin/graphrunner/buttons.tsx +95 -0
  182. package/src/plugin/graphrunner/client.ts +707 -0
  183. package/src/plugin/graphrunner/index.tsx +184 -0
  184. package/src/plugin/graphrunner/panel.tsx +386 -0
  185. package/src/plugin/graphrunner/runController.ts +283 -0
  186. package/src/plugin/graphrunner/runner.ts +187 -0
  187. package/src/plugin/graphrunner/session.ts +243 -0
  188. package/src/plugin/graphrunner/store.ts +196 -0
  189. package/src/plugin/graphrunner/styles.module.css +171 -0
  190. package/src/plugin/graphrunner/transport.ts +250 -0
  191. package/src/plugin/graphrunner/types.ts +693 -0
  192. package/src/plugin/graphrunner-local/execution-utils.ts +637 -0
  193. package/src/plugin/graphrunner-local/index.tsx +172 -0
  194. package/src/plugin/graphrunner-local/panel.tsx +187 -0
  195. package/src/plugin/graphrunner-local/store.ts +41 -0
  196. package/src/plugin/graphrunner-local/styles.module.css +82 -0
  197. package/src/plugin/graphrunner-local/transport.ts +1339 -0
  198. package/src/plugin/graphrunner-local/types.ts +10 -0
  199. package/src/plugin/graphrunner-webworker/graph-executor.worker.ts +635 -0
  200. package/src/plugin/graphrunner-webworker/index.tsx +140 -0
  201. package/src/plugin/graphrunner-webworker/panel.tsx +173 -0
  202. package/src/plugin/graphrunner-webworker/store.ts +98 -0
  203. package/src/plugin/graphrunner-webworker/worker-transport.ts +123 -0
  204. package/src/plugin/kitchen-sink/index.ts +38 -0
  205. package/src/plugin/layout/dagre.ts +131 -0
  206. package/src/plugin/layout/elk.ts +216 -0
  207. package/src/plugin/layout/index.ts +80 -0
  208. package/src/plugin/notes/FormatToolbar.tsx +200 -0
  209. package/src/plugin/notes/index.tsx +191 -0
  210. package/src/plugin/notes/nodeActions.ts +100 -0
  211. package/src/plugin/notes/note.tsx +20 -0
  212. package/src/plugin/notes/noteImpl.tsx +89 -0
  213. package/src/plugin/realtime/realtimeRunner.ts +624 -0
  214. package/src/specifics/CustomEventOnTriggeredSpecific.tsx +92 -0
  215. package/src/specifics/CustomEventTriggerSpecific.tsx +141 -0
  216. package/src/specifics/VariableGetSpecific.tsx +110 -0
  217. package/src/specifics/VariableSetSpecific.tsx +110 -0
  218. package/src/store/actions.tsx +698 -0
  219. package/src/store/commands.ts +278 -0
  220. package/src/store/contextMenu.ts +192 -0
  221. package/src/store/controls.tsx +62 -0
  222. package/src/store/conversions.ts +47 -0
  223. package/src/store/documentation.tsx +69 -0
  224. package/src/store/events.tsx +116 -0
  225. package/src/store/flow.tsx +230 -0
  226. package/src/store/graphMeta.ts +39 -0
  227. package/src/store/hotKeys.tsx +364 -0
  228. package/src/store/layers.ts +259 -0
  229. package/src/store/legend.tsx +76 -0
  230. package/src/store/logs.ts +28 -0
  231. package/src/store/menubar.ts +41 -0
  232. package/src/store/refs.ts +84 -0
  233. package/src/store/registry.ts +51 -0
  234. package/src/store/selection.ts +22 -0
  235. package/src/store/settings.ts +99 -0
  236. package/src/store/settingsSchema.ts +210 -0
  237. package/src/store/socketGenerator.tsx +54 -0
  238. package/src/store/specific.tsx +75 -0
  239. package/src/store/specs.tsx +35 -0
  240. package/src/store/tabs.ts +282 -0
  241. package/src/store/toolbar.tsx +45 -0
  242. package/src/store/traces.ts +240 -0
  243. package/src/store/variables.ts +37 -0
  244. package/src/system/graph.ts +131 -0
  245. package/src/system/graphSession.ts +172 -0
  246. package/src/system/index.ts +6 -0
  247. package/src/system/notifications.ts +111 -0
  248. package/src/system/persistence.ts +82 -0
  249. package/src/system/plugin.ts +55 -0
  250. package/src/system/provider.tsx +86 -0
  251. package/src/system/pubsub.ts +323 -0
  252. package/src/system/system.ts +653 -0
  253. package/src/system/tabLoader.tsx +303 -0
  254. package/src/system/undoRedo.ts +103 -0
  255. package/src/transformers/Uigraph.ts +61 -0
  256. package/src/transformers/behaveToFlow.ts +16 -4
  257. package/src/transformers/contract.ts +87 -0
  258. package/src/transformers/flowToBehave.ts +40 -12
  259. package/src/types/NodeMetadata.ts +27 -0
  260. package/src/types/graph.ts +49 -0
  261. package/src/types/nodes.ts +50 -0
  262. package/src/types.ts +18 -0
  263. package/src/util/autoConvert.ts +200 -0
  264. package/src/util/colors.ts +1 -29
  265. package/src/util/downloadJson.ts +18 -0
  266. package/src/util/extractNodeMetadata.ts +16 -0
  267. package/src/util/getPickerFilters.ts +1 -1
  268. package/src/util/isBehaveNode.ts +6 -0
  269. package/src/util/isValidConnection.ts +51 -17
  270. package/src/util/mergeSockets.ts +29 -0
  271. package/src/util/serializeVariables.ts +66 -0
  272. package/src/util/sockets.ts +43 -0
  273. package/stories/apex/layoutController/example-graph.worker.ts +39 -0
  274. package/stories/apex/layoutController/index.stories.tsx +48 -0
  275. package/stories/apex/layoutController/webworker.stories.tsx +103 -0
  276. package/stories/apex/menubar/menubar.stories.tsx +19 -0
  277. package/stories/components/colorpicker/index.stories.tsx +20 -0
  278. package/stories/components/contextMenus/edge.stories.tsx +32 -0
  279. package/stories/components/contextMenus/node.stories.tsx +26 -0
  280. package/stories/components/contextMenus/nodePicker.stories.tsx +115 -0
  281. package/stories/components/controls/any/index.stories.tsx +19 -0
  282. package/stories/components/controls/boolean/index.stories.tsx +19 -0
  283. package/stories/components/controls/colorPicker/index.stories.tsx +49 -0
  284. package/stories/components/controls/number/index.stories.tsx +19 -0
  285. package/stories/components/controls/string/index.stories.tsx +19 -0
  286. package/stories/components/nodes/behaveNode.stories.tsx +108 -0
  287. package/stories/components/panels/alignment.stories.tsx +24 -0
  288. package/stories/components/panels/events.stories.tsx +38 -0
  289. package/stories/components/panels/graphRunner.stories.tsx +317 -0
  290. package/stories/components/panels/history.stories.tsx +37 -0
  291. package/stories/components/panels/keymaps.stories.tsx +21 -0
  292. package/stories/components/panels/legend.stories.tsx +37 -0
  293. package/stories/components/panels/logs.stories.tsx +24 -0
  294. package/stories/components/panels/nodeInputs.stories.tsx +21 -0
  295. package/stories/components/panels/nodePicker.stories.tsx +37 -0
  296. package/stories/components/panels/panel.stories.tsx +39 -0
  297. package/stories/components/panels/search.stories.tsx +24 -0
  298. package/stories/components/panels/systemSettings.stories.tsx +26 -0
  299. package/stories/components/panels/traces.stories.tsx +225 -0
  300. package/stories/components/panels/variables.stories.tsx +24 -0
  301. package/stories/defaults/defaultStoryProvider.tsx +170 -0
  302. package/stories/defaults/systemGenerator.ts +43 -0
  303. package/stories/plugins/notes.stories.tsx +100 -0
  304. package/tests/autoConvert.test.ts +329 -0
  305. package/tests/autosavePlugin.test.ts +204 -0
  306. package/tests/callSubgraphSync.test.ts +148 -0
  307. package/tests/commandRegistry.test.ts +137 -0
  308. package/tests/components/edges/offsetBezier.test.ts +51 -0
  309. package/tests/components/layoutController/utils.test.ts +68 -0
  310. package/tests/components/panels/traces/utils.test.ts +52 -0
  311. package/tests/contract.test.ts +51 -0
  312. package/tests/contractSerialize.test.ts +62 -0
  313. package/tests/deriveSpans.test.ts +71 -0
  314. package/tests/flowToBehave.test.ts +27 -4
  315. package/tests/hotkeys.test.ts +79 -0
  316. package/tests/keepAliveLifecycle.test.ts +167 -0
  317. package/tests/loadManifest.test.ts +113 -0
  318. package/tests/noteMarkdown.test.ts +65 -0
  319. package/tests/notesPlugin.test.ts +162 -0
  320. package/tests/notifications.test.ts +87 -0
  321. package/tests/persistence.test.ts +51 -0
  322. package/tests/saveLoad.test.ts +373 -0
  323. package/tests/settings.test.ts +178 -0
  324. package/tests/traceStore.test.ts +46 -0
  325. package/tests/util/calculateNewEdge.test.ts +98 -0
  326. package/tests/util/getSocketsByNodeTypeAndHandleType.test.ts +31 -0
  327. package/tests/util/hasPositionMetaData.test.ts +33 -0
  328. package/tests/util/isBehaveNode.test.ts +22 -0
  329. package/tests/util/isHandleConnected.test.ts +37 -0
  330. package/tests/util/mergeSockets.test.ts +43 -0
  331. package/tests/visual/README.md +64 -0
  332. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-alignment-chromium-win32.png +0 -0
  333. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-conversation-chromium-win32.png +0 -0
  334. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-events-chromium-win32.png +0 -0
  335. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-history-chromium-win32.png +0 -0
  336. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-keymaps-chromium-win32.png +0 -0
  337. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-layers-chromium-win32.png +0 -0
  338. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-legend-chromium-win32.png +0 -0
  339. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-localGraphRunner-chromium-win32.png +0 -0
  340. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-logs-chromium-win32.png +0 -0
  341. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-nodeInputs-chromium-win32.png +0 -0
  342. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-nodePicker-chromium-win32.png +0 -0
  343. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-panel-chromium-win32.png +0 -0
  344. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-search-chromium-win32.png +0 -0
  345. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-systemSettings-chromium-win32.png +0 -0
  346. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-traces-chromium-win32.png +0 -0
  347. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-variables-chromium-win32.png +0 -0
  348. package/tests/visual/panels.visual.test.tsx +76 -0
  349. package/tests/wasdPan.test.ts +71 -0
  350. package/tsconfig.base.json +39 -0
  351. package/tsconfig.json +18 -59
  352. package/tsconfig.prod.json +23 -0
  353. package/tsdown.config.ts +15 -3
  354. package/typedoc.json +7 -7
  355. package/vite.config.js +7 -0
  356. package/vitest.config.ts +5 -2
  357. package/vitest.visual.config.ts +55 -0
  358. package/src/components/AutoSizeInput.tsx +0 -65
  359. package/src/components/Controls.tsx +0 -87
  360. package/src/components/InputSocket.tsx +0 -142
  361. package/src/components/Node.tsx +0 -68
  362. package/src/components/NodeContainer.tsx +0 -46
  363. package/src/components/NodePicker.tsx +0 -77
  364. package/src/components/OutputSocket.tsx +0 -58
  365. package/src/components/modals/ClearModal.tsx +0 -40
  366. package/src/components/modals/HelpModal.tsx +0 -36
  367. package/src/components/modals/LoadModal.tsx +0 -96
  368. package/src/components/modals/Modal.tsx +0 -64
  369. package/src/components/modals/SaveModal.tsx +0 -60
  370. package/src/hooks/useCustomNodeTypes.tsx +0 -31
  371. package/src/hooks/useGraphRunner.ts +0 -104
  372. package/src/hooks/useMergeMap.ts +0 -14
  373. package/src/hooks/useNodeSpecJson.ts +0 -20
  374. package/src/hooks/useQueriableDefinitions.ts +0 -22
  375. package/src/styles.css +0 -8
  376. package/tailwind.config.ts +0 -19
  377. package/tests/tsconfig.json +0 -10
  378. /package/src/{types.d.ts → types-declarations.d.ts} +0 -0
@@ -0,0 +1,210 @@
1
+ {
2
+ "v": "1.0.0",
3
+ "name": "Untitled Graph",
4
+ "annotations": {},
5
+ "data": {},
6
+ "flow": {
7
+ "nodes": [
8
+ {
9
+ "id": "0",
10
+ "type": "lifecycle/onStart",
11
+ "flows": {
12
+ "flow": {
13
+ "nodeId": "5c88827a-7f08-41a1-8610-62f1f847f1f2",
14
+ "socket": "flow"
15
+ }
16
+ }
17
+ },
18
+ {
19
+ "id": "5c88827a-7f08-41a1-8610-62f1f847f1f2",
20
+ "type": "variable/set",
21
+ "configuration": {
22
+ "variableId": "test"
23
+ },
24
+ "parameters": {
25
+ "value": {
26
+ "value": "2"
27
+ }
28
+ },
29
+ "flows": {
30
+ "flow": {
31
+ "nodeId": "e95938b8-22e8-44ae-92aa-95cd6e67998c",
32
+ "socket": "flow"
33
+ }
34
+ }
35
+ },
36
+ {
37
+ "id": "e95938b8-22e8-44ae-92aa-95cd6e67998c",
38
+ "type": "debug/log",
39
+ "parameters": {
40
+ "text": {
41
+ "link": {
42
+ "nodeId": "525be50e-f3c5-4acf-b3de-bb2f25650f94",
43
+ "socket": "value"
44
+ }
45
+ }
46
+ }
47
+ },
48
+ {
49
+ "id": "525be50e-f3c5-4acf-b3de-bb2f25650f94",
50
+ "type": "variable/get",
51
+ "configuration": {
52
+ "variableId": "test"
53
+ }
54
+ }
55
+ ],
56
+ "variables": [
57
+ {
58
+ "id": "test",
59
+ "name": "test",
60
+ "valueTypeName": "string",
61
+ "initialValue": "1"
62
+ }
63
+ ],
64
+ "customEvents": []
65
+ },
66
+ "nodes": [
67
+ {
68
+ "id": "0",
69
+ "type": "behaveNode",
70
+ "position": {
71
+ "x": 0,
72
+ "y": 0
73
+ },
74
+ "data": {
75
+ "annotations": {},
76
+ "configuration": {},
77
+ "type": "lifecycle/onStart",
78
+ "ports": {}
79
+ },
80
+ "width": 120,
81
+ "height": 74
82
+ },
83
+ {
84
+ "id": "5c88827a-7f08-41a1-8610-62f1f847f1f2",
85
+ "type": "behaveNode",
86
+ "position": {
87
+ "x": 241.0187615366221,
88
+ "y": -3.911119760474037
89
+ },
90
+ "data": {
91
+ "configuration": {
92
+ "variableId": "test"
93
+ },
94
+ "type": "variable/set",
95
+ "ports": {
96
+ "value": "2"
97
+ },
98
+ "dynamicPorts": {
99
+ "inputs": [
100
+ {
101
+ "name": "value",
102
+ "key": "value",
103
+ "valueType": "string"
104
+ }
105
+ ]
106
+ },
107
+ "annotations": {
108
+ "ui.executing": false
109
+ }
110
+ },
111
+ "width": 218,
112
+ "height": 162,
113
+ "selected": false,
114
+ "positionAbsolute": {
115
+ "x": 241.0187615366221,
116
+ "y": -3.911119760474037
117
+ },
118
+ "dragging": false
119
+ },
120
+ {
121
+ "id": "e95938b8-22e8-44ae-92aa-95cd6e67998c",
122
+ "type": "behaveNode",
123
+ "position": {
124
+ "x": 579.9295166853638,
125
+ "y": -3.004941270771468
126
+ },
127
+ "data": {
128
+ "configuration": {},
129
+ "type": "debug/log",
130
+ "ports": {},
131
+ "annotations": {
132
+ "ui.executing": false
133
+ }
134
+ },
135
+ "width": 120,
136
+ "height": 138,
137
+ "selected": false,
138
+ "positionAbsolute": {
139
+ "x": 579.9295166853638,
140
+ "y": -3.004941270771468
141
+ },
142
+ "dragging": false
143
+ },
144
+ {
145
+ "id": "525be50e-f3c5-4acf-b3de-bb2f25650f94",
146
+ "type": "behaveNode",
147
+ "position": {
148
+ "x": 243.05969888360318,
149
+ "y": 205.51287897278377
150
+ },
151
+ "data": {
152
+ "configuration": {
153
+ "variableId": "test"
154
+ },
155
+ "type": "variable/get",
156
+ "ports": {},
157
+ "dynamicPorts": {
158
+ "outputs": [
159
+ {
160
+ "name": "value",
161
+ "key": "value",
162
+ "valueType": "string"
163
+ }
164
+ ]
165
+ },
166
+ "annotations": {
167
+ "ui.executing": false
168
+ }
169
+ },
170
+ "width": 218,
171
+ "height": 130,
172
+ "selected": true,
173
+ "positionAbsolute": {
174
+ "x": 243.05969888360318,
175
+ "y": 205.51287897278377
176
+ },
177
+ "dragging": false
178
+ }
179
+ ],
180
+ "edges": [
181
+ {
182
+ "id": "5d72484f-f036-401f-b980-db34b04fb4bc",
183
+ "source": "5c88827a-7f08-41a1-8610-62f1f847f1f2",
184
+ "target": "e95938b8-22e8-44ae-92aa-95cd6e67998c",
185
+ "sourceHandle": "flow",
186
+ "targetHandle": "flow"
187
+ },
188
+ {
189
+ "id": "062e04d8-3013-4cc3-a074-6023f7f00f07",
190
+ "source": "525be50e-f3c5-4acf-b3de-bb2f25650f94",
191
+ "target": "e95938b8-22e8-44ae-92aa-95cd6e67998c",
192
+ "sourceHandle": "value",
193
+ "targetHandle": "text"
194
+ },
195
+ {
196
+ "id": "01ca255a-b971-4490-81cb-3e705a4b4014",
197
+ "source": "0",
198
+ "target": "5c88827a-7f08-41a1-8610-62f1f847f1f2",
199
+ "sourceHandle": "flow",
200
+ "targetHandle": "flow"
201
+ }
202
+ ],
203
+ "user": {
204
+ "viewport": {
205
+ "x": -66.40958570729731,
206
+ "y": 238.88586204212606,
207
+ "zoom": 1.267629245287132
208
+ }
209
+ }
210
+ }
@@ -0,0 +1,20 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { JsonEditor } from "json-edit-react";
3
+
4
+ //#region src/components/controls/any/AnyControlImpl.tsx
5
+ /**
6
+ * The actual `any`-typed value editor. Split into its own module so the heavy
7
+ * `json-edit-react` dependency (~50 kB) is loaded lazily by [`AnyControl`](./index.tsx)
8
+ * only when an `any` control is first rendered, instead of sitting in the
9
+ * editor's first-paint bundle.
10
+ */
11
+ const AnyControlImpl = (props) => {
12
+ return /* @__PURE__ */ jsx(JsonEditor, {
13
+ data: props.value,
14
+ setData: (data) => props.onChange(data)
15
+ });
16
+ };
17
+
18
+ //#endregion
19
+ export { AnyControlImpl };
20
+ //# sourceMappingURL=AnyControlImpl-Ds-CShIB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnyControlImpl-Ds-CShIB.js","names":[],"sources":["../src/components/controls/any/AnyControlImpl.tsx"],"sourcesContent":["import type { ControlProps } from '@/store/controls';\nimport { JsonEditor } from 'json-edit-react';\n\n/**\n * The actual `any`-typed value editor. Split into its own module so the heavy\n * `json-edit-react` dependency (~50 kB) is loaded lazily by [`AnyControl`](./index.tsx)\n * only when an `any` control is first rendered, instead of sitting in the\n * editor's first-paint bundle.\n */\nexport const AnyControlImpl = (props: ControlProps) => {\n return (\n <JsonEditor data={props.value} setData={(data) => props.onChange(data)} />\n );\n};\n"],"mappings":";;;;;;;;;;AASA,MAAa,kBAAkB,UAAwB;AACrD,QACE,oBAAC;EAAW,MAAM,MAAM;EAAO,UAAU,SAAS,MAAM,SAAS,KAAK;GAAI"}
@@ -0,0 +1,166 @@
1
+ import { l as removeTabFromLayout, n as useOnPressKey, t as styles_module_default, y as useSystem } from "./styles.module-DZxg8aW9.js";
2
+ import { useCallback, useMemo } from "react";
3
+ import { useStore } from "zustand";
4
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
5
+ import { EditorContent, useEditor } from "@tiptap/react";
6
+ import StarterKit from "@tiptap/starter-kit";
7
+ import { Markdown } from "tiptap-markdown";
8
+
9
+ //#region src/plugin/docs/panel/DocumentationBrowserPanelImpl.tsx
10
+ /**
11
+ * A titled list of node sockets (Inputs / Outputs / Configuration). Renders
12
+ * nothing when the socket list is empty so callers can drop it in
13
+ * unconditionally.
14
+ */
15
+ function SocketSection({ title, sockets, getIconForType, getColorForType }) {
16
+ if (!sockets || sockets.length === 0) return null;
17
+ return /* @__PURE__ */ jsxs("div", {
18
+ className: styles_module_default.section,
19
+ children: [/* @__PURE__ */ jsx("h3", {
20
+ className: styles_module_default.sectionTitle,
21
+ children: title
22
+ }), /* @__PURE__ */ jsx("div", {
23
+ className: styles_module_default.socketList,
24
+ children: sockets.map((socket, index) => {
25
+ const IconComponent = getIconForType(socket.valueType);
26
+ const color = getColorForType(socket.valueType);
27
+ return /* @__PURE__ */ jsxs("div", {
28
+ className: styles_module_default.socketItem,
29
+ children: [
30
+ /* @__PURE__ */ jsx("div", {
31
+ className: styles_module_default.socketIcon,
32
+ style: { color },
33
+ children: /* @__PURE__ */ jsx(IconComponent, {})
34
+ }),
35
+ /* @__PURE__ */ jsx("div", {
36
+ className: styles_module_default.socketName,
37
+ children: socket.name
38
+ }),
39
+ /* @__PURE__ */ jsx("div", {
40
+ className: styles_module_default.socketType,
41
+ style: { color },
42
+ children: socket.valueType
43
+ })
44
+ ]
45
+ }, index);
46
+ })
47
+ })]
48
+ });
49
+ }
50
+ function DocumentationBrowserPanelImpl() {
51
+ const sys = useSystem();
52
+ const selectedNodeType = useStore(sys.refStore, (x) => x.refs.selectedDocumentationType);
53
+ const documentation = useStore(sys.documentationStore, (x) => x.docs);
54
+ const specs = useStore(sys.specStore, (x) => x.specs);
55
+ const icons = useStore(sys.legendStore, (x) => x.icons);
56
+ const defaultIcon = useStore(sys.legendStore, (x) => x.defaultIcon);
57
+ const valueTypeColors = useStore(sys.legendStore, (x) => x.valueTypeColors);
58
+ const nodeSpec = useMemo(() => {
59
+ if (!selectedNodeType) return null;
60
+ return specs.find((s) => s.type === selectedNodeType) ?? null;
61
+ }, [selectedNodeType, specs]);
62
+ const getIconForType = useCallback((valueType) => {
63
+ return icons[valueType] || defaultIcon;
64
+ }, [icons, defaultIcon]);
65
+ const getColorForType = useCallback((valueType) => {
66
+ return valueTypeColors[valueType] || "#6c727e";
67
+ }, [valueTypeColors]);
68
+ const nodeDoc = useMemo(() => {
69
+ if (!selectedNodeType) return null;
70
+ return documentation.get(selectedNodeType);
71
+ }, [selectedNodeType, documentation]);
72
+ const editor = useEditor({
73
+ extensions: [StarterKit, Markdown],
74
+ content: nodeDoc?.markdownDescription || "",
75
+ editable: false
76
+ }, [nodeDoc?.markdownDescription]);
77
+ useOnPressKey("Escape", useCallback(() => {
78
+ const currentLayout = sys.tabStore.getState().layout;
79
+ const newLayout = removeTabFromLayout(currentLayout, "docbrowser");
80
+ sys.tabStore.getState().setLayout(newLayout);
81
+ }, [sys]));
82
+ if (!selectedNodeType) return /* @__PURE__ */ jsx("div", {
83
+ className: styles_module_default.container,
84
+ children: /* @__PURE__ */ jsxs("div", {
85
+ className: styles_module_default.empty,
86
+ children: [
87
+ /* @__PURE__ */ jsx("div", {
88
+ className: styles_module_default.emptyIcon,
89
+ children: "📚"
90
+ }),
91
+ /* @__PURE__ */ jsx("div", {
92
+ className: styles_module_default.emptyText,
93
+ children: "No documentation selected"
94
+ }),
95
+ /* @__PURE__ */ jsx("div", {
96
+ className: styles_module_default.emptySub,
97
+ children: "Click the info icon on a node to view its documentation"
98
+ })
99
+ ]
100
+ })
101
+ });
102
+ const hasMarkdown = nodeDoc?.markdownDescription;
103
+ const hasShortDescription = nodeDoc?.shortDescription || nodeSpec?.description;
104
+ const hasTags = nodeDoc?.tags && nodeDoc.tags.length > 0;
105
+ return /* @__PURE__ */ jsxs("div", {
106
+ className: styles_module_default.container,
107
+ children: [/* @__PURE__ */ jsxs("div", {
108
+ className: styles_module_default.header,
109
+ children: [/* @__PURE__ */ jsxs("div", {
110
+ className: styles_module_default.titleSection,
111
+ children: [nodeDoc?.icon && /* @__PURE__ */ jsx("div", {
112
+ className: styles_module_default.iconLarge,
113
+ children: nodeDoc.icon
114
+ }), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("h2", {
115
+ className: styles_module_default.title,
116
+ children: nodeSpec?.label || selectedNodeType
117
+ }), /* @__PURE__ */ jsx("div", {
118
+ className: styles_module_default.nodeType,
119
+ children: selectedNodeType
120
+ })] })]
121
+ }), hasTags && nodeDoc?.tags && /* @__PURE__ */ jsx("div", {
122
+ className: styles_module_default.tags,
123
+ children: nodeDoc.tags.map((tag, index) => /* @__PURE__ */ jsx("span", {
124
+ className: styles_module_default.tag,
125
+ children: tag
126
+ }, index))
127
+ })]
128
+ }), /* @__PURE__ */ jsxs("div", {
129
+ className: styles_module_default.content,
130
+ children: [
131
+ hasShortDescription && /* @__PURE__ */ jsx("div", {
132
+ className: styles_module_default.description,
133
+ children: nodeDoc?.shortDescription || nodeSpec?.description
134
+ }),
135
+ hasMarkdown && nodeDoc?.markdownDescription ? /* @__PURE__ */ jsx(EditorContent, { editor }) : /* @__PURE__ */ jsx("div", {
136
+ className: styles_module_default.noContent,
137
+ children: /* @__PURE__ */ jsx("p", { children: "No detailed documentation available for this node." })
138
+ }),
139
+ nodeSpec && /* @__PURE__ */ jsxs(Fragment$1, { children: [
140
+ /* @__PURE__ */ jsx(SocketSection, {
141
+ title: "Inputs",
142
+ sockets: nodeSpec.inputs,
143
+ getIconForType,
144
+ getColorForType
145
+ }),
146
+ /* @__PURE__ */ jsx(SocketSection, {
147
+ title: "Outputs",
148
+ sockets: nodeSpec.outputs,
149
+ getIconForType,
150
+ getColorForType
151
+ }),
152
+ /* @__PURE__ */ jsx(SocketSection, {
153
+ title: "Configuration",
154
+ sockets: nodeSpec.configuration,
155
+ getIconForType,
156
+ getColorForType
157
+ })
158
+ ] })
159
+ ]
160
+ })]
161
+ });
162
+ }
163
+
164
+ //#endregion
165
+ export { DocumentationBrowserPanelImpl };
166
+ //# sourceMappingURL=DocumentationBrowserPanelImpl-deZNzFX8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocumentationBrowserPanelImpl-deZNzFX8.js","names":["styles"],"sources":["../src/plugin/docs/panel/DocumentationBrowserPanelImpl.tsx"],"sourcesContent":["import { useMemo, useCallback, type ComponentType } from 'react';\nimport { useEditor, EditorContent } from '@tiptap/react';\nimport StarterKit from '@tiptap/starter-kit';\nimport { useSystem } from '@/system/provider';\nimport { Markdown } from 'tiptap-markdown';\nimport { useStore } from 'zustand';\nimport type { ExtendedNodeSpecJSON } from '@/components/contextMenus/NodePicker';\nimport { useOnPressKey } from '@/hooks/useOnPressKey';\nimport { removeTabFromLayout } from '@/components/layoutController/utils';\nimport styles from './styles.module.css';\n\n/** One named socket (name + value type) rendered in a documentation section. */\ninterface DocSocket {\n name: string;\n valueType: string;\n}\n\ninterface SocketSectionProps {\n title: string;\n sockets: DocSocket[] | undefined;\n getIconForType: (valueType: string) => ComponentType;\n getColorForType: (valueType: string) => string;\n}\n\n/**\n * A titled list of node sockets (Inputs / Outputs / Configuration). Renders\n * nothing when the socket list is empty so callers can drop it in\n * unconditionally.\n */\nfunction SocketSection({\n title,\n sockets,\n getIconForType,\n getColorForType\n}: SocketSectionProps) {\n if (!sockets || sockets.length === 0) return null;\n\n return (\n <div className={styles.section}>\n <h3 className={styles.sectionTitle}>{title}</h3>\n <div className={styles.socketList}>\n {sockets.map((socket, index) => {\n const IconComponent = getIconForType(socket.valueType);\n const color = getColorForType(socket.valueType);\n return (\n <div key={index} className={styles.socketItem}>\n <div className={styles.socketIcon} style={{ color }}>\n <IconComponent />\n </div>\n <div className={styles.socketName}>{socket.name}</div>\n <div className={styles.socketType} style={{ color }}>\n {socket.valueType}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nexport function DocumentationBrowserPanelImpl() {\n const sys = useSystem();\n const selectedNodeType = useStore(\n sys.refStore,\n (x) => x.refs.selectedDocumentationType\n );\n const documentation = useStore(sys.documentationStore, (x) => x.docs);\n const specs = useStore(sys.specStore, (x) => x.specs);\n const icons = useStore(sys.legendStore, (x) => x.icons);\n const defaultIcon = useStore(sys.legendStore, (x) => x.defaultIcon);\n const valueTypeColors = useStore(sys.legendStore, (x) => x.valueTypeColors);\n\n const nodeSpec = useMemo((): ExtendedNodeSpecJSON | null => {\n if (!selectedNodeType) return null;\n return specs.find((s) => s.type === selectedNodeType) ?? null;\n }, [selectedNodeType, specs]);\n\n const getIconForType = useCallback(\n (valueType: string): ComponentType => {\n const IconComponent = icons[valueType] || defaultIcon;\n return IconComponent;\n },\n [icons, defaultIcon]\n );\n\n const getColorForType = useCallback(\n (valueType: string) => {\n return valueTypeColors[valueType] || '#6c727e';\n },\n [valueTypeColors]\n );\n\n const nodeDoc = useMemo(() => {\n if (!selectedNodeType) return null;\n return documentation.get(selectedNodeType);\n }, [selectedNodeType, documentation]);\n\n const editor = useEditor(\n {\n extensions: [StarterKit, Markdown],\n content: nodeDoc?.markdownDescription || '',\n editable: false\n },\n [nodeDoc?.markdownDescription]\n );\n\n const closePanel = useCallback(() => {\n const currentLayout = sys.tabStore.getState().layout;\n const newLayout = removeTabFromLayout(currentLayout, 'docbrowser');\n sys.tabStore.getState().setLayout(newLayout);\n }, [sys]);\n\n useOnPressKey('Escape', closePanel);\n\n if (!selectedNodeType) {\n return (\n <div className={styles.container}>\n <div className={styles.empty}>\n <div className={styles.emptyIcon}>📚</div>\n <div className={styles.emptyText}>No documentation selected</div>\n <div className={styles.emptySub}>\n Click the info icon on a node to view its documentation\n </div>\n </div>\n </div>\n );\n }\n\n const hasMarkdown = nodeDoc?.markdownDescription;\n const hasShortDescription =\n nodeDoc?.shortDescription || nodeSpec?.description;\n const hasTags = nodeDoc?.tags && nodeDoc.tags.length > 0;\n\n return (\n <div className={styles.container}>\n <div className={styles.header}>\n <div className={styles.titleSection}>\n {nodeDoc?.icon && (\n <div className={styles.iconLarge}>{nodeDoc.icon}</div>\n )}\n <div>\n <h2 className={styles.title}>\n {nodeSpec?.label || selectedNodeType}\n </h2>\n <div className={styles.nodeType}>{selectedNodeType}</div>\n </div>\n </div>\n {hasTags && nodeDoc?.tags && (\n <div className={styles.tags}>\n {nodeDoc.tags.map((tag, index) => (\n <span key={index} className={styles.tag}>\n {tag}\n </span>\n ))}\n </div>\n )}\n </div>\n\n <div className={styles.content}>\n {hasShortDescription && (\n <div className={styles.description}>\n {nodeDoc?.shortDescription || nodeSpec?.description}\n </div>\n )}\n\n {hasMarkdown && nodeDoc?.markdownDescription ? (\n <EditorContent editor={editor} />\n ) : (\n <div className={styles.noContent}>\n <p>No detailed documentation available for this node.</p>\n </div>\n )}\n\n {nodeSpec && (\n <>\n <SocketSection\n title=\"Inputs\"\n sockets={nodeSpec.inputs}\n getIconForType={getIconForType}\n getColorForType={getColorForType}\n />\n <SocketSection\n title=\"Outputs\"\n sockets={nodeSpec.outputs}\n getIconForType={getIconForType}\n getColorForType={getColorForType}\n />\n <SocketSection\n title=\"Configuration\"\n sockets={nodeSpec.configuration}\n getIconForType={getIconForType}\n getColorForType={getColorForType}\n />\n </>\n )}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;AA6BA,SAAS,cAAc,EACrB,OACA,SACA,gBACA,mBACqB;AACrB,KAAI,CAAC,WAAW,QAAQ,WAAW,EAAG,QAAO;AAE7C,QACE,qBAAC;EAAI,WAAWA,sBAAO;aACrB,oBAAC;GAAG,WAAWA,sBAAO;aAAe;IAAW,EAChD,oBAAC;GAAI,WAAWA,sBAAO;aACpB,QAAQ,KAAK,QAAQ,UAAU;IAC9B,MAAM,gBAAgB,eAAe,OAAO,UAAU;IACtD,MAAM,QAAQ,gBAAgB,OAAO,UAAU;AAC/C,WACE,qBAAC;KAAgB,WAAWA,sBAAO;;MACjC,oBAAC;OAAI,WAAWA,sBAAO;OAAY,OAAO,EAAE,OAAO;iBACjD,oBAAC,kBAAgB;QACb;MACN,oBAAC;OAAI,WAAWA,sBAAO;iBAAa,OAAO;QAAW;MACtD,oBAAC;OAAI,WAAWA,sBAAO;OAAY,OAAO,EAAE,OAAO;iBAChD,OAAO;QACJ;;OAPE,MAQJ;KAER;IACE;GACF;;AAIV,SAAgB,gCAAgC;CAC9C,MAAM,MAAM,WAAW;CACvB,MAAM,mBAAmB,SACvB,IAAI,WACH,MAAM,EAAE,KAAK,0BACf;CACD,MAAM,gBAAgB,SAAS,IAAI,qBAAqB,MAAM,EAAE,KAAK;CACrE,MAAM,QAAQ,SAAS,IAAI,YAAY,MAAM,EAAE,MAAM;CACrD,MAAM,QAAQ,SAAS,IAAI,cAAc,MAAM,EAAE,MAAM;CACvD,MAAM,cAAc,SAAS,IAAI,cAAc,MAAM,EAAE,YAAY;CACnE,MAAM,kBAAkB,SAAS,IAAI,cAAc,MAAM,EAAE,gBAAgB;CAE3E,MAAM,WAAW,cAA2C;AAC1D,MAAI,CAAC,iBAAkB,QAAO;AAC9B,SAAO,MAAM,MAAM,MAAM,EAAE,SAAS,iBAAiB,IAAI;IACxD,CAAC,kBAAkB,MAAM,CAAC;CAE7B,MAAM,iBAAiB,aACpB,cAAqC;AAEpC,SADsB,MAAM,cAAc;IAG5C,CAAC,OAAO,YAAY,CACrB;CAED,MAAM,kBAAkB,aACrB,cAAsB;AACrB,SAAO,gBAAgB,cAAc;IAEvC,CAAC,gBAAgB,CAClB;CAED,MAAM,UAAU,cAAc;AAC5B,MAAI,CAAC,iBAAkB,QAAO;AAC9B,SAAO,cAAc,IAAI,iBAAiB;IACzC,CAAC,kBAAkB,cAAc,CAAC;CAErC,MAAM,SAAS,UACb;EACE,YAAY,CAAC,YAAY,SAAS;EAClC,SAAS,SAAS,uBAAuB;EACzC,UAAU;EACX,EACD,CAAC,SAAS,oBAAoB,CAC/B;AAQD,eAAc,UANK,kBAAkB;EACnC,MAAM,gBAAgB,IAAI,SAAS,UAAU,CAAC;EAC9C,MAAM,YAAY,oBAAoB,eAAe,aAAa;AAClE,MAAI,SAAS,UAAU,CAAC,UAAU,UAAU;IAC3C,CAAC,IAAI,CAAC,CAE0B;AAEnC,KAAI,CAAC,iBACH,QACE,oBAAC;EAAI,WAAWA,sBAAO;YACrB,qBAAC;GAAI,WAAWA,sBAAO;;IACrB,oBAAC;KAAI,WAAWA,sBAAO;eAAW;MAAQ;IAC1C,oBAAC;KAAI,WAAWA,sBAAO;eAAW;MAA+B;IACjE,oBAAC;KAAI,WAAWA,sBAAO;eAAU;MAE3B;;IACF;GACF;CAIV,MAAM,cAAc,SAAS;CAC7B,MAAM,sBACJ,SAAS,oBAAoB,UAAU;CACzC,MAAM,UAAU,SAAS,QAAQ,QAAQ,KAAK,SAAS;AAEvD,QACE,qBAAC;EAAI,WAAWA,sBAAO;aACrB,qBAAC;GAAI,WAAWA,sBAAO;cACrB,qBAAC;IAAI,WAAWA,sBAAO;eACpB,SAAS,QACR,oBAAC;KAAI,WAAWA,sBAAO;eAAY,QAAQ;MAAW,EAExD,qBAAC,oBACC,oBAAC;KAAG,WAAWA,sBAAO;eACnB,UAAU,SAAS;MACjB,EACL,oBAAC;KAAI,WAAWA,sBAAO;eAAW;MAAuB,IACrD;KACF,EACL,WAAW,SAAS,QACnB,oBAAC;IAAI,WAAWA,sBAAO;cACpB,QAAQ,KAAK,KAAK,KAAK,UACtB,oBAAC;KAAiB,WAAWA,sBAAO;eACjC;OADQ,MAEJ,CACP;KACE;IAEJ,EAEN,qBAAC;GAAI,WAAWA,sBAAO;;IACpB,uBACC,oBAAC;KAAI,WAAWA,sBAAO;eACpB,SAAS,oBAAoB,UAAU;MACpC;IAGP,eAAe,SAAS,sBACvB,oBAAC,iBAAsB,SAAU,GAEjC,oBAAC;KAAI,WAAWA,sBAAO;eACrB,oBAAC,iBAAE,uDAAsD;MACrD;IAGP,YACC;KACE,oBAAC;MACC,OAAM;MACN,SAAS,SAAS;MACF;MACC;OACjB;KACF,oBAAC;MACC,OAAM;MACN,SAAS,SAAS;MACF;MACC;OACjB;KACF,oBAAC;MACC,OAAM;MACN,SAAS,SAAS;MACF;MACC;OACjB;QACD;;IAED;GACF"}
package/dist/entry.css ADDED
@@ -0,0 +1,4 @@
1
+ @import "reactflow/dist/style.css";
2
+ @import 'rc-menu/assets/index.css';
3
+ @import "rc-dock/dist/rc-dock-dark.css";
4
+ @import "./index.css";
package/dist/index.css ADDED
@@ -0,0 +1,42 @@
1
+ :root{--ds-font-ui:"Segoe UI",system-ui,sans-serif;--ds-font-mono:"Consolas","Courier New",monospace;--ds-font-mono-size:14px;--ds-fg:#ccc;--ds-fg-muted:#9d9d9d;--ds-icon-fg:#ccc;--ds-editor-fg:#ccc;--ds-widget-fg:#ccc;--ds-editor-bg:#1f1f1f;--ds-widget-bg:#202020;--ds-sidebar-bg:#181818;--ds-tabs-bg:#181818;--ds-tab-inactive-bg:#181818;--ds-section-header-bg:#181818;--ds-section-header-fg:#ccc;--ds-section-header-border:#2b2b2b;--ds-border:#313131;--ds-border-subtle:#454545;--ds-border-muted:#ffffff17;--ds-panel-border:#2b2b2b;--ds-focus-border:#0078d4;--ds-sash-hover-border:#0078d4;--ds-sash-border:#2b2b2b;--ds-button-bg:#0078d4;--ds-button-fg:#fff;--ds-button-hover-bg:#026ec1;--ds-button-secondary-bg:#313131;--ds-button-border:#313131;--ds-input-bg:#313131;--ds-input-border:#3c3c3c;--ds-input-fg:#ccc;--ds-input-option-active-bg:#2489db82;--ds-input-option-active-border:#2488db;--ds-input-option-active-fg:#fff;--ds-list-active-bg:#04395e;--ds-list-active-fg:#fff;--ds-list-hover-bg:#2a2d2e;--ds-toolbar-active-bg:#6366674f;--ds-toolbar-hover-bg:#5a5d5e4f;--ds-badge-bg:#616161;--ds-badge-fg:#f8f8f8;--ds-preformat-fg:#d0d0d0;--ds-blockquote-bg:#2b2b2b;--ds-blockquote-border:#616161;--ds-code-bg:#2b2b2b;--ds-inactive-selection-bg:#3a3d41;--ds-find-match-bg:#ea5c0054;--ds-error:#f14c4c;--ds-warning:#cca700;--ds-success:#89d185;--ds-error-bg:#5a1d1d;--ds-error-border:#be1100;--ds-error-fg:#ccc;--ds-info-bg:#063b49;--ds-info-border:#007acc;--ds-chart-blue:#59a4f9;--ds-git-added:#81b88b;--ds-git-modified:#e2c08d;--ds-terminal-cyan:#11a8cd;--ds-menu-bg:var(--ds-widget-bg);--ds-menu-fg:var(--ds-fg);--ds-menu-border:var(--ds-border);--ds-menu-selection-bg:var(--ds-list-hover-bg);--ds-menu-selection-fg:var(--ds-fg);--ds-node-red:#d16969;--ds-node-green:#89d185;--ds-node-lime:#b5cea8;--ds-node-purple:#c586c0;--ds-node-blue:#4fc1ff;--ds-node-radius:4px;--colors-bgCanvas:var(--ds-editor-bg);--colors-bgDefault:var(--ds-sidebar-bg);--colors-bgPanel:var(--ds-sidebar-bg);--colors-bgSecondary:var(--ds-widget-bg);--colors-bgEmphasis:var(--ds-toolbar-hover-bg);--colors-bgSubtle:var(--ds-widget-bg);--colors-bgSurface:var(--ds-widget-bg);--colors-border:var(--ds-border);--colors-borderDefault:var(--ds-border);--colors-borderMuted:var(--ds-border-muted);--colors-borderSubtle:var(--ds-border-subtle);--colors-fg:var(--ds-fg);--colors-text:var(--ds-fg);--colors-fgSubtle:var(--ds-fg-muted);--colors-inputBg:var(--ds-input-bg);--colors-inputBorderRest:var(--ds-input-border);--colors-error:var(--ds-error);--colors-success:var(--ds-success);--chip-color:var(--ds-badge-bg);--color-neutral-stroke-subtle:var(--ds-border-subtle);--color-neutral-stroke-default:var(--ds-border);--color-neutral-canvas-subtle-bg:var(--ds-tabs-bg);--color-neutral-canvas-default-bg:var(--ds-editor-bg);--color-neutral-background-strong:var(--ds-code-bg);--color-neutral-canvas-minimal-fg-default:var(--ds-fg);--color-neutral-canvas-minimal-fg-subtle:var(--ds-fg-muted);--color-neutral-canvas-subtle-fg-subtle:#0000005c;--color-danger-surface-default-idle-bg:var(--ds-error-bg);--color-danger-surface-default-idle-fg-default:var(--ds-error);--fs-section:.7rem;--fs-label:.8rem;--fs-desc:.72rem;--fs-body:.8125rem;--space-0:.125rem;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--component-spacing-xs:var(--space-1);--component-spacing-sm:var(--space-2);--component-spacing-md:var(--space-3);--component-radii-sm:4px;--component-radii-md:6px;--component-border-width-md:1px;--sizes-2:.5rem;--sizes-4:1rem;--fontSizes-small:var(--fs-desc,.72rem);--font-body-sm:400 .8rem/1.4 var(--ds-font-ui);--font-body-xs:400 .72rem/1.4 var(--ds-font-ui);--shadows-contextMenu:0 2px 8px #0000005c;--shadows-focus:0 0 0 1px var(--ds-focus-border)}
2
+ [data-flow-theme=kiberon],.flow-theme-kiberon{--ds-font-ui:"Geist","Inter",system-ui,-apple-system,sans-serif;--ds-font-mono:"Geist Mono","SF Mono","JetBrains Mono",ui-monospace,monospace;--ds-fg:#e3e3e3;--ds-fg-muted:#a8a8a8;--ds-icon-fg:#e3e3e3;--ds-editor-fg:#e3e3e3;--ds-widget-fg:#e3e3e3;--ds-editor-bg:#090909;--ds-widget-bg:#1f1f1f;--ds-sidebar-bg:#0e0e0e;--ds-tabs-bg:#0e0e0e;--ds-tab-inactive-bg:#0e0e0e;--ds-section-header-bg:#0e0e0e;--ds-section-header-fg:#e3e3e3;--ds-section-header-border:#1f1f1f;--ds-border:#1f1f1f;--ds-border-subtle:#2d2d2d;--ds-border-muted:#e3e3e30f;--ds-panel-border:#1f1f1f;--ds-focus-border:#876adb;--ds-sash-hover-border:#876adb;--ds-sash-border:#1f1f1f;--ds-button-bg:#7b5dcd;--ds-button-fg:#e3e1ed;--ds-button-hover-bg:#7052be;--ds-button-secondary-bg:#1f1f1f;--ds-button-border:#1f1f1f;--ds-input-bg:#1f1f1f;--ds-input-border:#2d2d2d;--ds-input-fg:#e3e3e3;--ds-input-option-active-bg:#7b5dcd80;--ds-input-option-active-border:#7b5dcd;--ds-input-option-active-fg:#e3e1ed;--ds-list-active-bg:#7b5dcd4d;--ds-list-active-fg:#e3e3e3;--ds-list-hover-bg:#252525;--ds-toolbar-active-bg:#e3e3e314;--ds-toolbar-hover-bg:#252525;--ds-badge-bg:#2d2d2d;--ds-badge-fg:#e3e3e3;--ds-preformat-fg:#e3e3e3;--ds-blockquote-bg:#141414;--ds-blockquote-border:#2d2d2d;--ds-code-bg:#141414;--ds-inactive-selection-bg:#7b5dcd26;--ds-find-match-bg:#fecc5c47;--ds-error:#ff6578;--ds-warning:#ff7f30;--ds-success:#4beb8f;--ds-error-bg:#310005;--ds-error-border:#ff6578;--ds-error-fg:#fbe4e4;--ds-info-bg:#001135;--ds-info-border:#006bea;--ds-chart-blue:#1e7eff;--ds-git-added:#4beb8f;--ds-git-modified:#fecc5c;--ds-terminal-cyan:#1e7eff;--ds-menu-bg:#0e0e0e;--ds-menu-fg:#e3e3e3;--ds-menu-border:#1f1f1f;--ds-menu-selection-bg:#252525;--ds-menu-selection-fg:#e3e3e3;--ds-node-red:#ee397a;--ds-node-green:#4beb8f;--ds-node-lime:#fecc5c;--ds-node-purple:#9462f4;--ds-node-blue:#627af4;--ds-node-radius:.5rem;--shadows-focus:0 0 0 2px #876adb;--shadows-contextMenu:0px 0px 0px 1px #23292f,0px 6px 12px -3px #01040966,0px 6px 18px 0px #01040966}
3
+ :root,[data-flow-theme=kiberon],.flow-theme-kiberon{--vscode-font-family:var(--ds-font-ui);--vscode-foreground:var(--ds-fg);--vscode-disabledForeground:var(--ds-fg-muted);--vscode-descriptionForeground:var(--ds-fg-muted);--vscode-icon-foreground:var(--ds-icon-fg);--vscode-focusBorder:var(--ds-focus-border);--vscode-widget-border:var(--ds-border);--vscode-contrastBorder:var(--ds-border);--vscode-button-background:var(--ds-button-bg);--vscode-button-foreground:var(--ds-button-fg);--vscode-button-hoverBackground:var(--ds-button-hover-bg);--vscode-button-border:var(--ds-button-border);--vscode-button-secondaryBackground:var(--ds-button-secondary-bg);--vscode-button-secondaryForeground:var(--ds-fg);--vscode-button-secondaryHoverBackground:var(--ds-list-hover-bg);--vscode-input-background:var(--ds-input-bg);--vscode-input-foreground:var(--ds-input-fg);--vscode-input-border:var(--ds-input-border);--vscode-input-placeholderForeground:var(--ds-fg-muted);--vscode-settings-textInputBackground:var(--ds-input-bg);--vscode-settings-textInputForeground:var(--ds-input-fg);--vscode-settings-textInputBorder:var(--ds-input-border);--vscode-checkbox-background:var(--ds-input-bg);--vscode-checkbox-foreground:var(--ds-fg);--vscode-checkbox-border:var(--ds-input-border);--vscode-checkbox-selectBackground:var(--ds-button-bg);--vscode-checkbox-selectBorder:var(--ds-button-bg);--vscode-settings-checkboxBackground:var(--ds-input-bg);--vscode-settings-checkboxForeground:var(--ds-fg);--vscode-settings-checkboxBorder:var(--ds-input-border);--vscode-dropdown-background:var(--ds-widget-bg);--vscode-dropdown-foreground:var(--ds-fg);--vscode-dropdown-border:var(--ds-input-border);--vscode-dropdown-listBackground:var(--ds-widget-bg);--vscode-settings-dropdownBackground:var(--ds-widget-bg);--vscode-settings-dropdownForeground:var(--ds-fg);--vscode-settings-dropdownBorder:var(--ds-input-border);--vscode-badge-background:var(--ds-badge-bg);--vscode-badge-foreground:var(--ds-badge-fg);--vscode-list-activeSelectionBackground:var(--ds-list-active-bg);--vscode-list-activeSelectionForeground:var(--ds-list-active-fg);--vscode-list-inactiveSelectionBackground:var(--ds-list-hover-bg);--vscode-list-hoverBackground:var(--ds-list-hover-bg);--vscode-list-hoverForeground:var(--ds-fg);--vscode-list-focusBackground:var(--ds-list-active-bg);--vscode-list-focusOutline:var(--ds-focus-border);--vscode-toolbar-hoverBackground:var(--ds-toolbar-hover-bg);--vscode-toolbar-activeBackground:var(--ds-toolbar-active-bg);--vscode-editorWidget-background:var(--ds-widget-bg);--vscode-editorWidget-foreground:var(--ds-widget-fg);--vscode-editorWidget-border:var(--ds-border-subtle);--vscode-panel-border:var(--ds-panel-border);--vscode-sideBar-background:var(--ds-sidebar-bg);--vscode-sideBarSectionHeader-background:var(--ds-section-header-bg);--vscode-sideBarSectionHeader-foreground:var(--ds-section-header-fg);--vscode-sideBarSectionHeader-border:var(--ds-section-header-border);--vscode-settings-headerForeground:var(--ds-fg)}input[type=checkbox],input[type=radio],input[type=range]{accent-color:var(--ds-button-bg)}vscode-textfield,vscode-textarea,vscode-single-select{max-width:100%}
4
+ .dock{border:1px solid var(--ds-sash-border)}.dock-panel{color:inherit;background:var(--colors-bgCanvas);border:none}.dock-bar,.dock-top .dock-bar{background:var(--ds-tabs-bg,#181818);border-bottom:1px solid var(--colors-borderMuted);padding-left:0}.dock-tab{border:none;border-right:1px solid var(--colors-borderMuted);background:var(--ds-tabs-bg,#181818);height:30px;color:var(--colors-fgSubtle);font-size:var(--fs-body,.8125rem);z-index:10;margin-right:0;font-weight:400}.dock-tab:hover{color:var(--colors-fg)}.dock-tab-active,.dock-tab-active:hover{color:var(--colors-fg);background:var(--colors-bgCanvas)}.dock-tab-close-btn{border-radius:4px;position:static}.dock-tab-close-btn:hover{background:var(--colors-bgEmphasis)}.dock-panel.dock-style-main .dock-bar,.dock-panel.dock-style-card .dock-bar{background:var(--ds-tabs-bg,#181818);border-bottom:1px solid var(--colors-borderMuted);overflow:hidden}.dock-panel.dock-style-main .dock-tab,.dock-panel.dock-style-card .dock-tab{border:none;border-right:1px solid var(--colors-borderMuted);background:var(--ds-tabs-bg,#181818);border-radius:0;margin-right:0}.dock-panel.dock-style-main .dock-tab.dock-tab-active,.dock-panel.dock-style-card .dock-tab.dock-tab-active{background:var(--colors-bgCanvas)}.dock-panel.dock-style-card .dock-nav-wrap{padding-top:0;transform:none}.dock-panel.dock-style-card .dock-extra-content{height:30px}.dock-nav-operations-hidden{display:none}.dock-fbox{overflow:hidden}.dock-nav{flex-grow:1}.dock-nav-wrap{cursor:move}.dock-extra-content{align-items:center;padding-right:4px;display:flex}.dock-fbox>.dock-panel{box-shadow:0 0 .25rem var(--color-neutral-canvas-subtle-fg-subtle)}.drag-initiator{align-items:center;gap:.4em;transition:width .2s;display:flex}.drag-initiator:not(.dock-divider){padding:0}.dock-divider{background:var(--ds-border);opacity:1;flex:0 0 4px;padding:0;transition:background .1s}.dock-hbox>.dock-divider{cursor:ew-resize;width:4px;margin:0;transform:none}.dock-vbox>.dock-divider{cursor:ns-resize;height:4px;margin:0;transform:none}.dock-divider:hover{background:var(--ds-sash-hover-border,var(--ds-focus-border,#0078d4))}.dock-ink-bar{background-color:var(--ds-focus-border,#0078d4)}.dock-dropdown-menu{background-color:var(--ds-menu-bg,var(--colors-bgSurface));border:1px solid var(--ds-menu-border,var(--colors-borderDefault));box-shadow:var(--shadows-contextMenu,0 2px 8px #0000005c)}.dock-dropdown-menu-item{color:var(--ds-menu-fg,var(--colors-fg))}.dock-dropdown-menu-item:hover{background:var(--ds-menu-selection-bg,var(--ds-list-hover-bg,var(--colors-bgEmphasis)));color:var(--ds-menu-selection-fg,var(--colors-fg))}.dock-dropdown-menu-item-disabled,.dock-dropdown-menu-item-disabled:hover{color:var(--colors-fgSubtle);background:0 0}.dock-drop-layer .dock-drop-square{color:var(--colors-fgSubtle);background:var(--colors-bgSurface)}.dock-drop-layer .dock-drop-square .dock-drop-square-box{border:1px solid var(--colors-borderDefault)}.dock-drop-layer .dock-drop-square-dropping{background:var(--ds-list-active-bg,var(--ds-focus-border,#0078d4));color:var(--ds-list-active-fg,#fff)}.dock-panel-max-btn,.dock-panel-min-btn{color:var(--colors-fgSubtle)}.dock-panel-max-btn:hover,.dock-panel-min-btn:hover{color:var(--colors-fg)}
5
+ .rc-menu{color:var(--colors-fg);font-family:var(--ds-font-mono,monospace);font-size:var(--fs-label,.8rem);box-shadow:none;border:none}.rc-menu-horizontal{background-color:var(--ds-tabs-bg,var(--colors-bgCanvas));color:var(--colors-fg);border-bottom:1px solid var(--colors-borderMuted);box-shadow:none;border-radius:0;gap:.15rem;margin:0;padding:.15rem .25rem;display:flex}.rc-menu-horizontal>.rc-menu-item,.rc-menu-horizontal>.rc-menu-submenu>.rc-menu-submenu-title{font-size:var(--fs-label,.8rem);border-bottom:none;border-radius:4px;padding:2px 8px}.rc-menu-horizontal>.rc-menu-item:hover,.rc-menu-horizontal>.rc-menu-submenu>.rc-menu-submenu-title:hover,.rc-menu-horizontal>.rc-menu-submenu-active,.rc-menu-horizontal>.rc-menu-item-active{background:var(--ds-list-hover-bg,#2a2d2e);color:var(--ds-fg);border-bottom:none;border-radius:4px}.rc-menu-item-selected,.rc-menu-submenu-selected{background-color:unset}.rc-menu-submenu>.rc-menu,.rc-menu-sub{background-color:var(--ds-widget-bg,#202020);border:1px solid var(--ds-border-subtle,#454545);box-shadow:var(--shadows-contextMenu,0 2px 8px #0000005c);font-size:var(--fs-label,.8rem);border-radius:4px;min-width:200px;padding:4px}.rc-menu-vertical>.rc-menu-item,.rc-menu-vertical-left>.rc-menu-item,.rc-menu-vertical-right>.rc-menu-item,.rc-menu-inline>.rc-menu-item,.rc-menu-sub>.rc-menu-item,.rc-menu-vertical>.rc-menu-submenu>.rc-menu-submenu-title,.rc-menu-sub>.rc-menu-submenu>.rc-menu-submenu-title{cursor:pointer;border-radius:4px;padding:2px 20px 2px 10px;line-height:1.4}.rc-menu-vertical>.rc-menu-item:hover,.rc-menu-sub>.rc-menu-item:hover,.rc-menu-vertical>.rc-menu-submenu>.rc-menu-submenu-title:hover,.rc-menu-sub>.rc-menu-submenu>.rc-menu-submenu-title:hover,.rc-menu-item-active,.rc-menu-submenu-active>.rc-menu-submenu-title{background:var(--ds-list-hover-bg,#2a2d2e);color:var(--ds-fg);cursor:pointer}.rc-menu-item-divider{background-color:var(--ds-border-subtle,#454545);height:1px;margin:4px 6px}.rc-menu-item:hover .inner-menu-item{background-color:var(--ds-button-bg,#0078d4)}.rc-menu-submenu-popup{z-index:1000}.dock-style-headless .dock-nav-list{display:none}.dock-style-headless .drag-initiator{height:.5em}
6
+ .ProseMirror{& h1{margin:.67em 0;font-size:2em;font-weight:700}& h2{margin:.75em 0;font-size:1.5em;font-weight:700}& h3{margin:.83em 0;font-size:1.17em;font-weight:700}& p{margin:.5em 0}& ul,& ol{margin:.5em 0;padding-left:1.5em}& code{background:var(--ds-code-bg);font-family:var(--ds-font-mono);border-radius:3px;padding:.125em .25em}& pre{background:var(--ds-code-bg);border-radius:4px;margin:.5em 0;padding:.75em;overflow-x:auto}& pre code{background:0 0;padding:0}& li{margin:.25em 0}& ul{list-style-type:disc}}
7
+ .notes-node-root{width:100%;min-width:160px;height:100%;min-height:80px;position:relative}.notes-node{background:var(--ds-editor-bg);color:var(--ds-editor-fg);border:1px solid var(--ds-blockquote-border);border-radius:2px;flex-direction:column;width:100%;height:100%;display:flex;overflow:hidden}.notes-node__header{background:var(--colors-bgSurface);border-bottom:1px solid var(--ds-border-subtle);color:var(--ds-fg);cursor:grab;user-select:none;letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:6px;padding:2px 8px;font-size:10px;display:flex}.notes-node__grip{opacity:.6}.notes-node__editor{cursor:text;color:var(--ds-editor-fg);flex:1;padding:4px 10px;overflow:auto}.notes-node__editor .ProseMirror{min-height:100%;caret-color:var(--ds-editor-fg);outline:none}.notes-node__editor .ProseMirror blockquote{border-left:3px solid var(--ds-blockquote-border);margin:.5em 0;padding-left:1em;font-style:italic}.notes-node__editor .ProseMirror div[data-youtube-video]{margin:.5em 0}.notes-node__editor .ProseMirror div[data-youtube-video] iframe{aspect-ratio:16/9;border:0;border-radius:3px;width:100%;height:auto;display:block}.notes-toolbar{background:var(--ds-widget-bg);border:1px solid var(--ds-border-subtle);z-index:1000;pointer-events:auto;border-radius:4px;flex-direction:column;gap:4px;padding:4px;animation:.15s notes-toolbar-fade-in;display:flex;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);box-shadow:0 2px 8px #0000004d}.notes-toolbar__row{align-items:center;gap:2px;display:flex}.notes-toolbar__embed{align-items:center;gap:4px;display:flex}.notes-toolbar__embed vscode-textfield{flex:1;min-width:220px}@keyframes notes-toolbar-fade-in{0%{opacity:0;transform:translate(-50%)translateY(-5px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.notes-toolbar__separator{background:var(--ds-border-subtle);width:1px;height:20px;margin:0 4px}
8
+ *{box-sizing:border-box}.reactflow{color:var(--colors-fg);background:#262626;position:static!important}.react-flow__node{display:flex;&.filtered{opacity:.25!important}}.react-flow__edge-default{fill:none}.react-flow__handle>*{user-select:none;pointer-events:none;flex:1}.react-flow__handle{border-radius:4px;align-items:center;width:16px;height:16px;font-size:8px;display:flex}.react-flow__handle-left{left:-12px}.react-flow__handle-right{right:-12px}.dock-content-holder{color:var(--colors-fg)}.container{flex-direction:row;justify-content:space-between;gap:2rem;padding:0 .5rem;display:flex;position:relative}.dock-tab{align-items:center;display:flex}.dock-top .dock-bar{border-bottom:none}.dock-panel.dock-style-main .dock-bar{border-bottom-color:var(--color-neutral-stroke-subtle)}.dock-content-holder{scrollbar-color:var(--color-neutral-canvas-subtle-bg)transparent;scrollbar-width:thin;border-bottom:var(--component-border-width-md)solid var(--color-neutral-stroke-subtle)}.dock-top .dock-ink-bar{background:var(--colors-bgCanvas);z-index:0;border-radius:var(--component-radii-sm);height:100%}*{scrollbar-width:thin;scrollbar-color:#4a4a4a #262626}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#262626;border-radius:4px}::-webkit-scrollbar-thumb{background:#4a4a4a;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#5a5a5a}::-webkit-scrollbar-corner{background:#262626}
9
+ .VKTv4W_row{flex-grow:1;justify-content:flex-start;align-items:center;height:1.375rem;display:flex}.VKTv4W_hidden{display:none}.VKTv4W_name{text-transform:capitalize;margin-right:.5rem}.VKTv4W_socket svg{stroke:currentColor}.VKTv4W_disconnected{background:var(--ds-widget-bg,#333)!important}
10
+ .o6IlGa_container{border-radius:var(--ds-node-radius,4px);min-width:120px;color:var(--ds-widget-fg,var(--ds-fg));font-size:var(--fs-body,.8125rem);background-color:var(--ds-widget-bg,#2b2b2b);border:1px solid var(--ds-border-subtle,var(--ds-input-border,#80808059));box-sizing:border-box;--node-accent:var(--ds-focus-border,#0078d4)}.o6IlGa_selected{box-shadow:0 0 0 1px var(--ds-focus-border,#0078d4)}.o6IlGa_header{background-color:var(--ds-section-header-bg,var(--ds-widget-bg,var(--ds-editor-bg)));border-bottom:1px solid var(--ds-border-subtle,var(--ds-input-border,#80808059));border-top-left-radius:var(--ds-node-radius,4px);border-top-right-radius:var(--ds-node-radius,4px);border-left:3px solid var(--node-accent);align-items:center;min-height:22px;padding:3px 8px;display:flex}.o6IlGa_title{letter-spacing:.01em;min-width:0;color:var(--ds-fg);white-space:nowrap;text-overflow:ellipsis;flex:auto;font-weight:600;overflow:hidden}.o6IlGa_actions{flex:none;align-items:center;gap:4px;margin-left:auto;padding-left:8px;display:flex}.o6IlGa_content{flex-direction:column;padding-top:4px;padding-bottom:4px;display:flex}.o6IlGa_red{--node-accent:var(--ds-node-red,#d16969)}.o6IlGa_green{--node-accent:var(--ds-node-green,#89d185)}.o6IlGa_lime{--node-accent:var(--ds-node-lime,#b5cea8)}.o6IlGa_purple{--node-accent:var(--ds-node-purple,#c586c0)}.o6IlGa_blue{--node-accent:var(--ds-node-blue,#4fc1ff)}.o6IlGa_gray{--node-accent:var(--ds-fg-muted,#ccc)}.o6IlGa_white{--node-accent:var(--ds-fg,#ccc)}
11
+ .yuNsAq_row{flex-grow:1;justify-content:flex-end;align-items:center;height:1.375rem;display:flex}.yuNsAq_hidden{display:none}.yuNsAq_name{text-transform:capitalize;margin-right:.5rem}.yuNsAq_socket svg{stroke:currentColor}
12
+ ._1e74Uq_nodeWrapper{box-shadow:var(--shadows-contextMenu);border-radius:var(--component-radii-md);background:var(--color-neutral-canvas-default-bg);border:1px solid var(--color-neutral-stroke-subtle);flex:1;display:flex;position:relative}._1e74Uq_nodeWrapper._1e74Uq_error{--nodeBorderColor:var(--color-danger-surface-default-idle-fg-default);--nodeBgColor:var(--color-danger-surface-default-idle-bg);--nodeTextColor:var(--color-danger-surface-default-idle-fg-default)}._1e74Uq_nodeWrapper._1e74Uq_executing{border-color:var(--ds-focus-border);box-shadow:0 0 8px var(--ds-focus-border);animation:1s ease-in-out infinite _1e74Uq_pulse-border}._1e74Uq_nodeWrapper._1e74Uq_hidden{opacity:.1}._1e74Uq_nodeWrapper._1e74Uq_pinned{cursor:not-allowed;border-color:var(--ds-warning)}._1e74Uq_smallIcon{width:1em;height:1em}@keyframes _1e74Uq_pulse-border{0%,to{box-shadow:0 0 8px var(--ds-focus-border)}50%{box-shadow:0 0 16px var(--ds-focus-border)}}._1e74Uq_icons{display:flex}._1e74Uq_header{justify-content:space-between;align-items:center;width:100%;display:flex;position:absolute;top:-1.25em}._1e74Uq_headerContent{align-items:center;gap:.5rem;display:flex}._1e74Uq_titleContainer{flex-direction:column;display:flex}._1e74Uq_controls{gap:.5rem;display:flex}._1e74Uq_title{font:var(--font-body-sm);color:var(--color-neutral-canvas-minimal-fg-default)}._1e74Uq_subtitle{font:var(--font-body-xs);color:var(--color-neutral-canvas-minimal-fg-subtle)}
13
+ .oZj_Cq_pairRow{flex-direction:row;justify-content:space-between;column-gap:2rem;padding:.125rem .5rem;display:flex;position:relative}.oZj_Cq_valueInputRow{flex-direction:row;justify-content:flex-start;column-gap:2rem;padding:.125rem .5rem;display:flex;position:relative}
14
+ .pTBRlW_searchRow{padding-bottom:var(--space-2,.5rem)}.pTBRlW_list{flex-direction:column;display:flex}.pTBRlW_labelRow{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.pTBRlW_modified{background:var(--ds-focus-border,#0078d4);vertical-align:middle;border-radius:50%;width:6px;height:6px;margin-left:.4rem;display:inline-block}.pTBRlW_reset{border-radius:var(--component-radii-sm,4px);color:var(--ds-fg-muted);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:.15rem;display:inline-flex}.pTBRlW_reset:hover{background:var(--ds-toolbar-hover-bg,#5a5d5e4f);color:var(--ds-fg)}.pTBRlW_setting{padding:var(--space-1,.25rem)0;flex-direction:column;gap:.15rem;display:flex}.pTBRlW_toggle{flex-direction:row;align-items:center;gap:.5rem}.pTBRlW_toggle .pTBRlW_body{flex-direction:column;gap:.1rem;min-width:0;display:flex}.pTBRlW_label{font-size:var(--fs-label,.8rem);color:var(--ds-fg);line-height:1.3}.pTBRlW_description{font-size:var(--fs-desc,.72rem);color:var(--ds-fg-muted);line-height:1.35}.pTBRlW_divider{margin:.25rem 0}.pTBRlW_conversions{border-left:1px solid var(--ds-sash-border,var(--ds-border,#2b2b2b));flex-direction:column;gap:.4rem;margin-top:.35rem;padding-left:.5rem;display:flex}.pTBRlW_conversionsLabel{font-size:var(--fs-desc,.72rem);color:var(--ds-fg-muted)}.pTBRlW_empty{font-size:var(--fs-desc,.72rem);color:var(--ds-fg-muted);opacity:.8}.pTBRlW_rule{align-items:center;gap:.4rem;display:flex}.pTBRlW_ruleText{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:.75rem;overflow:hidden}.pTBRlW_ruleNode{opacity:.65}.pTBRlW_addForm{flex-direction:column;gap:.3rem;display:flex}.pTBRlW_addForm vscode-single-select,.pTBRlW_addForm vscode-button{width:100%}
15
+ .G4S1uq_root{background-color:var(--ds-tab-inactive-bg,#181818);width:100%;height:100%;color:var(--ds-editor-fg);flex-direction:column;flex:1;gap:.25rem;padding:.5rem;display:flex;overflow:auto}
16
+ .n05LSq_title{font-size:var(--fs-section,.7rem);text-transform:uppercase;letter-spacing:.06em;color:var(--ds-fg);opacity:.65;margin:var(--space-3,.75rem)0 var(--space-1,.25rem);font-weight:600}.n05LSq_title:first-child{margin-top:0}
17
+ .g0WdIG_toolbar{border-bottom:1px solid var(--ds-panel-border);flex-direction:column;gap:8px;padding-bottom:8px;display:flex}.g0WdIG_searchBar{align-items:center;gap:6px;display:flex}.g0WdIG_searchField{flex:1;align-items:center;gap:4px;display:flex}.g0WdIG_searchIcon{opacity:.6;flex:none}.g0WdIG_searchInput{flex:1}.g0WdIG_toolbarActions{align-items:center;gap:2px;display:flex}.g0WdIG_toolbarActions svg{width:16px;height:16px}.g0WdIG_actionActive{color:var(--ds-focus-border,#3794ff)}.g0WdIG_filters{flex-wrap:wrap;align-items:center;gap:6px;padding:0 2px;display:flex}.g0WdIG_levelChip{background-color:color-mix(in srgb,var(--chip-color)18%,transparent);color:var(--chip-color);cursor:pointer;user-select:none;border:1px solid #0000;border-radius:11px;align-items:center;gap:5px;padding:2px 9px;font-size:.72rem;line-height:1.5;transition:opacity .1s,background-color .1s;display:inline-flex}.g0WdIG_levelChip:hover{background-color:color-mix(in srgb,var(--chip-color)28%,transparent)}.g0WdIG_levelChip:focus-visible{outline:1px solid var(--ds-focus-border);outline-offset:1px}.g0WdIG_levelOff{color:var(--ds-fg-muted,#9d9d9d);opacity:.6;background-color:#0000}.g0WdIG_levelChipIcon{width:12px;height:12px;display:inline-flex}.g0WdIG_levelChipIcon svg{width:12px;height:12px}.g0WdIG_levelChipLabel{text-transform:capitalize}.g0WdIG_levelChipCount{font-variant-numeric:tabular-nums;opacity:.8;font-size:.9em}.g0WdIG_levelOff .g0WdIG_levelChipCount{opacity:.6}.g0WdIG_logCount{color:var(--ds-fg-muted,#9d9d9d);font-variant-numeric:tabular-nums;align-self:center;margin-left:auto;padding-right:2px;font-size:.72rem;line-height:1}.g0WdIG_logsContainer{min-height:0;margin:0 calc(-1*var(--component-spacing-xs,.25rem));flex:1;overflow:auto}.g0WdIG_emptyState{height:100%;min-height:64px;color:var(--ds-fg-muted,#9d9d9d);justify-content:center;align-items:center;font-size:.85rem;display:flex}.g0WdIG_logsList{font-family:var(--ds-font-mono,monospace);font-size:var(--ds-font-mono-size,12px);flex-direction:column;line-height:18px;display:flex}.g0WdIG_row{user-select:text;white-space:pre-wrap;overflow-wrap:anywhere;border-left:2px solid #0000;align-items:baseline;gap:8px;padding:1px 8px;display:flex}.g0WdIG_row:hover{background-color:var(--ds-list-hover-bg,#ffffff0f)}.g0WdIG_row[data-severity=warning]{border-left-color:color-mix(in srgb,var(--ds-warning,#cca700)60%,transparent)}.g0WdIG_row[data-severity=error]{border-left-color:var(--ds-error,#f48771);background-color:color-mix(in srgb,var(--ds-error,#f48771)8%,transparent)}.g0WdIG_rowIcon{flex:none;align-self:center;align-items:center;width:14px;height:14px;display:inline-flex}.g0WdIG_rowIcon svg{width:14px;height:14px}.g0WdIG_rowTime{color:var(--ds-fg-muted,#9d9d9d);opacity:.85;font-variant-numeric:tabular-nums;flex:none}.g0WdIG_rowMessage{min-width:0;color:var(--ds-fg);flex:1}.g0WdIG_row[data-severity=error] .g0WdIG_rowMessage{color:var(--ds-error,#f48771)}.g0WdIG_row[data-severity=verbose] .g0WdIG_rowMessage{color:var(--ds-fg-muted,#9d9d9d)}.g0WdIG_highlight{background-color:var(--ds-find-match-bg,#ea5c0054);color:inherit;border-radius:2px}
18
+ .JtM8cG_icon{cursor:pointer;color:var(--ds-icon-fg,#ccc);background:0 0;border:none;border-radius:5px;justify-content:center;align-items:center;padding:0;transition:background-color .1s;display:inline-flex}.JtM8cG_icon:hover:not(.JtM8cG_disabled){background-color:var(--ds-toolbar-hover-bg)}.JtM8cG_icon:active:not(.JtM8cG_disabled){background-color:var(--ds-toolbar-active-bg)}.JtM8cG_icon:focus-visible{outline:1px solid var(--ds-focus-border);outline-offset:-1px}.JtM8cG_icon.JtM8cG_disabled{cursor:default;opacity:.4}.JtM8cG_icon.JtM8cG_small{width:20px;height:20px}.JtM8cG_icon.JtM8cG_medium{width:24px;height:24px}.JtM8cG_icon.JtM8cG_large{width:28px;height:28px}
19
+ ._9RH7Bq_root{flex-direction:column;flex:1;gap:0;height:100%;display:flex;overflow:hidden}._9RH7Bq_headerRow{justify-content:space-between;align-items:center;display:flex}._9RH7Bq_section{flex-direction:column;gap:.25em;display:flex}._9RH7Bq_sectionPadded{padding:.25em}._9RH7Bq_variableList{flex:1;min-height:0;padding:8px;overflow-y:auto}._9RH7Bq_emptyState{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:32px 16px;display:flex}._9RH7Bq_emptyStateText{opacity:.7;font-size:13px}._9RH7Bq_emptyStateHint{opacity:.5;font-size:12px}._9RH7Bq_field{flex-direction:column;gap:.25em;display:flex}._9RH7Bq_actionsRow{gap:.25em;display:flex}._9RH7Bq_tree{display:block}._9RH7Bq_tree vscode-tree-item{--vscode-tree-item-padding:0}._9RH7Bq_treeItemContent{align-items:center;gap:12px;width:100%;padding:.25em .5em;display:flex}._9RH7Bq_treeItemIcon{opacity:.85;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-size:18px;display:flex}._9RH7Bq_treeItemInfo{flex:1}._9RH7Bq_selectedEditor{border-top:1px solid var(--ds-panel-border,#ffffff1a);background:var(--ds-sidebar-bg,var(--colors-bgPanel));flex-direction:column;flex-shrink:0;gap:0;display:flex}._9RH7Bq_editorHeader{border-bottom:1px solid var(--ds-panel-border,#ffffff14);padding:12px 16px}._9RH7Bq_editorTitle{opacity:.6;text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px;font-size:11px;font-weight:600}._9RH7Bq_editorVariableName{font-size:13px;font-weight:500}._9RH7Bq_editorFields{flex-direction:column;gap:8px;padding:16px;display:flex}._9RH7Bq_fieldLabel{opacity:.8;margin-bottom:4px;font-size:12px;font-weight:500}._9RH7Bq_fieldControl{flex-direction:column;display:flex}._9RH7Bq_editorActions{border-top:1px solid var(--ds-panel-border,#ffffff14);flex-direction:row;justify-content:end;gap:.5em;padding:12px 16px;display:flex}
20
+ .NQ-87q_header{flex-shrink:0;justify-content:space-between;align-items:center;gap:.5rem;padding:.25rem 0;display:flex}.NQ-87q_title{font-size:var(--fs-section,.7rem);text-transform:uppercase;letter-spacing:.06em;color:var(--ds-fg);opacity:.65;font-weight:600}.NQ-87q_actions{flex-shrink:0;align-items:center;gap:4px;display:flex}
21
+ ._1lC7Cq_panel{flex-direction:column;flex:1;gap:.5rem;height:100%;padding:.5rem;display:flex}._1lC7Cq_listGap1{flex-direction:column;gap:.25rem;display:flex}._1lC7Cq_stackGap2{flex-direction:column;gap:.5rem;display:flex}._1lC7Cq_sectionTitle{font-size:1.05em;font-weight:600}._1lC7Cq_nodeCard{border:1px solid var(--color-neutral-stroke-subtle);border-radius:var(--component-spacing-xs);padding:.5rem}._1lC7Cq_nodeCardTitle{font-size:.9em;font-weight:700}._1lC7Cq_nodeCardMeta{opacity:.7;font-size:.8em}._1lC7Cq_emptyState{font-size:var(--fs-desc,.72rem);color:var(--ds-fg-muted);text-align:center;padding:2rem 1rem;line-height:1.4}._1lC7Cq_panelTitle{text-align:left;cursor:text;white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:.95rem;font-weight:600;overflow:hidden}._1lC7Cq_panelTitleContainer{justify-content:flex-start;align-items:center;gap:.4rem;display:flex;position:relative}._1lC7Cq_nodeTitleIcon{opacity:.8;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;display:flex}._1lC7Cq_nodeTitleIcon svg,._1lC7Cq_nodeTitleIcon img{width:18px;height:18px}._1lC7Cq_infoButton{opacity:.5;cursor:pointer;color:var(--colors-fg);background:0 0;border:none;border-radius:.25rem;justify-content:center;align-items:center;padding:.25rem;transition:opacity .2s;display:flex}._1lC7Cq_infoButton:hover{background:var(--ds-button-secondary-bg,#313131);opacity:1!important}._1lC7Cq_infoButton svg{width:16px;height:16px}._1lC7Cq_panelTitleEdit{justify-content:center;display:flex}._1lC7Cq_panelTitleTextfield,._1lC7Cq_tabs{width:100%}._1lC7Cq_panelId{font-size:var(--fs-desc,.72rem);color:var(--ds-fg-muted);opacity:.8;text-align:left;font-variant-numeric:tabular-nums;margin-bottom:.25rem;font-weight:400}._1lC7Cq_toolbar{width:100%}._1lC7Cq_noInputs{font-size:var(--fs-desc,.72rem);color:var(--ds-fg-muted);padding:.75rem .2em}._1lC7Cq_stackColPadded{flex-direction:column;padding:.2em;display:flex}._1lC7Cq_inputRow{flex-direction:column;gap:.25rem;padding:.25rem .2em;display:flex}._1lC7Cq_inputRow>div:last-child{width:100%}._1lC7Cq_inputMeta{align-items:baseline;gap:.4rem;display:flex}._1lC7Cq_inputName{font-size:var(--fs-label,.8rem);text-transform:capitalize;font-weight:600}._1lC7Cq_inputSubtext{font-size:var(--fs-desc,.72rem);color:var(--ds-fg-muted);opacity:.8}._1lC7Cq_connectedMessage{font-size:var(--fs-desc,.72rem);color:var(--ds-fg-muted)}._1lC7Cq_stackGap2Padded{flex-direction:column;gap:.5rem;padding:.2em;display:flex}._1lC7Cq_subTitle{font-size:var(--fs-section,.7rem);text-transform:uppercase;letter-spacing:.06em;color:var(--ds-fg);opacity:.65;font-weight:600}._1lC7Cq_settingsRow{font-size:var(--fs-label,.8rem);justify-content:space-between;gap:.4em;display:flex}._1lC7Cq_settingsRow>div:first-child{color:var(--ds-fg-muted)}._1lC7Cq_settingsRow>div:last-child{text-align:right;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums;min-width:0;overflow:hidden}._1lC7Cq_descriptionSection{flex-direction:column;gap:.35rem;display:flex}._1lC7Cq_descriptionTextarea{width:100%}._1lC7Cq_annotationsSection{flex-direction:column;gap:.35rem;display:flex}._1lC7Cq_annotationsEmpty{font-size:var(--fs-desc,.72rem);color:var(--ds-fg-muted)}._1lC7Cq_annotationsValue{font-size:var(--fs-desc,.72rem)}._1lC7Cq_annotationsList{margin:0;padding-left:1.25rem}._1lC7Cq_annotationsListItem{font-size:var(--fs-desc,.72rem)}._1lC7Cq_annotationsPre{border:1px solid var(--color-neutral-stroke-subtle);border-radius:var(--component-radii-sm,4px);background:var(--color-neutral-background-strong);font-size:var(--fs-desc,.72rem);white-space:pre-wrap;word-break:break-word;margin:0;padding:.5rem;overflow:auto}._1lC7Cq_panelHeader{border-bottom:1px solid var(--color-neutral-stroke-subtle);justify-content:space-between;align-items:center;margin-bottom:.25rem;padding:.25rem .2em;display:flex}._1lC7Cq_panelHeaderLabel{font-size:var(--fs-section,.7rem);text-transform:uppercase;letter-spacing:.06em;color:var(--ds-fg);opacity:.65;font-weight:600}._1lC7Cq_inputWithToggle{align-items:flex-start;gap:.25rem;display:flex}._1lC7Cq_inputToggle{opacity:.45;transition:opacity .1s}._1lC7Cq_inputWithToggle:hover ._1lC7Cq_inputToggle,._1lC7Cq_inputToggle:focus-visible{opacity:1}._1lC7Cq_inputControlWrapper{flex:1;min-width:0}
22
+ ._0jNqVG_content{flex-direction:column;display:flex}._0jNqVG_row{flex:1;height:100%;display:flex}
23
+ .ATQk8G_searchGroup{flex-direction:column;gap:4px;display:flex}.ATQk8G_searchRow{align-items:center;gap:4px;display:flex}.ATQk8G_fullWidth{width:100%}
24
+ .Gx7a7W_content{flex-direction:column;gap:1rem;display:flex}.Gx7a7W_header{padding-bottom:.5rem}.Gx7a7W_helpText{opacity:.7;font-size:.75rem}.Gx7a7W_table{width:100%}.Gx7a7W_actionCell{width:40%}.Gx7a7W_actionInfo{flex-direction:column;gap:.25rem;display:flex}.Gx7a7W_actionLabel{font-weight:500}.Gx7a7W_actionId{opacity:.6;font-size:.75rem}.Gx7a7W_keybindingCell{width:40%}.Gx7a7W_keyBadge{font-size:.875rem;font-family:var(--ds-font-mono);background:var(--ds-widget-bg);border:1px solid var(--ds-border-subtle);border-radius:var(--component-radii-sm);word-break:break-all;padding:.25rem .5rem;display:inline-block}.Gx7a7W_actionsCell{text-align:right;width:20%}.Gx7a7W_buttonGroup{flex-wrap:wrap;justify-content:flex-end;gap:.25rem;display:flex}.Gx7a7W_textfield{width:100%}
25
+ .vQ4f7a_root{flex-direction:column;flex:1;gap:0;height:100%;display:flex;overflow:hidden}.vQ4f7a_content{padding:8px}.vQ4f7a_headerTitle{align-items:center;gap:1em;font-size:1.1em;font-weight:700;display:flex}.vQ4f7a_emptyState{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:32px 16px;display:flex}.vQ4f7a_emptyStateText{opacity:.7;font-size:13px}.vQ4f7a_eventName{font-size:13px;font-weight:500;line-height:1.4}.vQ4f7a_eventMeta{opacity:.6;font-size:11px;line-height:1.2}.vQ4f7a_editRoot{flex-direction:column;gap:0;height:100%;display:flex;overflow:hidden}.vQ4f7a_editorHeader{border-bottom:1px solid var(--ds-panel-border,#ffffff14);align-items:center;gap:1em;padding:12px 16px;display:flex}.vQ4f7a_editorFields{flex-direction:column;gap:8px;padding:16px;display:flex}.vQ4f7a_formGrid{flex-direction:column;gap:8px;display:flex}.vQ4f7a_formField{flex-direction:column;gap:.25em;display:flex}.vQ4f7a_formLabel{opacity:.8;margin-bottom:4px;font-size:12px;font-weight:500}.vQ4f7a_parametersSection{border-top:1px solid var(--ds-panel-border,#ffffff1a);background:var(--ds-sidebar-bg,var(--colors-bgPanel));flex-direction:column;flex:1;gap:0;min-height:0;display:flex}.vQ4f7a_parametersHeader{border-bottom:1px solid var(--ds-panel-border,#ffffff14);justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.vQ4f7a_parametersTitle{opacity:.6;text-transform:uppercase;letter-spacing:.5px;font-size:11px;font-weight:600}.vQ4f7a_parametersContent{flex:1;min-height:0;padding:16px;overflow-y:auto}.vQ4f7a_parametersEmpty{opacity:.7;font-size:13px}.vQ4f7a_parametersGrid{flex-direction:column;gap:16px;display:flex}.vQ4f7a_parameterRow{background:var(--ds-input-bg,#ffffff0d);border-radius:4px;flex-direction:column;gap:8px;padding:12px;display:flex;position:relative}.vQ4f7a_controlWrapper{min-width:0;display:flex}.vQ4f7a_parameterField{flex-direction:column;gap:4px;display:flex}.vQ4f7a_parameterFieldLabel{opacity:.7;font-size:11px;font-weight:500}.vQ4f7a_parameterDelete{position:absolute;top:8px;right:8px}.vQ4f7a_editorActions{border-top:1px solid var(--ds-panel-border,#ffffff14);padding:12px 16px}.vQ4f7a_actions{gap:.25em;display:flex}
26
+ .na343q_header{flex-direction:column;gap:.5rem;padding:.5rem;display:flex}.na343q_title{font-size:1.125rem;font-weight:600;line-height:1.75rem}.na343q_subtitle{color:#9ca3af;font-size:.75rem;line-height:1rem}.na343q_windowControls{color:#9ca3af;align-items:center;gap:.5rem;margin-left:.5rem;font-size:.75rem;line-height:1rem;display:flex}.na343q_windowLabel{align-items:center;gap:.5rem;display:flex}.na343q_windowSelect{color:#e5e7eb;background-color:#111827;border:1px solid #374151;border-radius:.25rem;padding:.125rem .25rem}.na343q_stats{color:#9ca3af;align-items:center;gap:.75rem;margin-left:auto;font-size:.75rem;line-height:1rem;display:flex}.na343q_statValue{color:#e5e7eb}.na343q_empty{color:#9ca3af;padding:.75rem;font-size:.875rem;line-height:1.25rem}.na343q_scroll{flex:1;min-height:0;position:relative;overflow:auto}.na343q_lanes{box-sizing:border-box;width:100%}.na343q_laneRow{border-bottom:1px solid #1f2937;position:relative;overflow:hidden}.na343q_span{cursor:pointer;font-size:11px;font-family:var(--ds-font-ui);color:#fffffff2;text-shadow:0 1px 2px #00000080;white-space:nowrap;pointer-events:auto;border-style:solid;border-width:1px;border-radius:.25rem;align-items:center;display:flex;position:absolute;overflow:hidden}.na343q_spanLabel{text-overflow:ellipsis;padding-left:4px;font-weight:500;overflow:hidden}.na343q_tooltip{z-index:10;pointer-events:none;color:#f3f4f6;background-color:#111827;border:1px solid #374151;border-radius:.25rem;max-width:70%;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;position:absolute;bottom:.5rem;left:.5rem}.na343q_tooltipTitle{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.na343q_tooltipDuration{color:#d1d5db}.na343q_tooltipNodeId{color:#6b7280;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}
27
+ ._6cvDJG_legendCol{border:1px solid;border-radius:.125rem;width:1rem;height:1rem}
28
+ .LpoP_G_sectionTitle{color:#ffffffb8;user-select:none;justify-content:space-between;align-items:center;gap:8px;font-size:.85em;display:flex}.LpoP_G_countBadge{font-variant-numeric:tabular-nums}.LpoP_G_list{background:0 0;border:1px solid #ffffff1a;border-radius:6px;flex-direction:column;gap:4px;padding:10px;display:flex;overflow:auto}.LpoP_G_row{cursor:default;background:#ffffff0a;border:1px solid #ffffff1a;border-radius:6px;grid-template-columns:76px 52px 1fr;align-items:center;column-gap:12px;padding:8px 10px;display:grid}.LpoP_G_row:hover{background:#ffffff14}.LpoP_G_undo{border-left:3px solid #f14c4c}.LpoP_G_redo{border-left:3px solid #73c991}.LpoP_G_badgeCell{justify-content:flex-start;align-items:center;min-width:0;display:flex}.LpoP_G_kindBadge{flex:none}.LpoP_G_index{color:#ffffffb8;opacity:.9;text-align:right;font-variant-numeric:tabular-nums;font-size:.85em}.LpoP_G_name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:500;overflow:hidden}.LpoP_G_empty{color:#ffffffb8;opacity:.9;padding:10px;font-size:.9em}.LpoP_G_now{user-select:none;flex-direction:column;gap:6px;margin:6px 0;display:flex}.LpoP_G_nowLabel{color:#ffffffb8;text-align:center;font-size:.8em}
29
+ .oeIJiq_container{width:100%;height:100%;color:var(--colors-fg);background:var(--colors-bgCanvas);flex-direction:column;display:flex;position:relative;overflow:hidden}.oeIJiq_grid{flex:1;display:flex;overflow:auto}.oeIJiq_sidebar{border-right:1px solid var(--ds-input-border,var(--colors-borderSubtle));background:var(--colors-bgPanel);flex-direction:column;width:100px;display:flex}.oeIJiq_sidebarList{padding:.25rem;overflow:auto}.oeIJiq_sidebarItem{cursor:pointer;user-select:none;border-radius:.25rem;align-items:center;gap:.5rem;padding:.15rem .5rem;font-size:.8em;display:flex}.oeIJiq_sidebarItem:hover{background:var(--ds-button-hover-bg,#026ec1)}.oeIJiq_sidebarItemActive{background:var(--ds-button-secondary-bg,#313131);color:var(--ds-list-active-fg)}.oeIJiq_main{flex-direction:column;flex:1;min-width:0;display:flex}.oeIJiq_topbar{border-bottom:1px solid var(--ds-input-border,var(--colors-borderSubtle));align-items:center;gap:.5rem;padding:.5rem;display:flex}.oeIJiq_search{flex:1;min-width:0;display:flex}.oeIJiq_viewToggles{gap:.25rem;display:flex}.oeIJiq_content{flex:1;padding:.25rem .5rem;overflow-y:scroll}.oeIJiq_groupTitle{opacity:.9;padding:.25rem;font-weight:600}.oeIJiq_list{flex-direction:column;gap:.25rem;display:flex}.oeIJiq_nodeRow{cursor:pointer;border-radius:.25rem;grid-template-columns:28px 1fr auto;align-items:center;gap:.25rem;padding:.15rem .5rem;display:grid}.oeIJiq_gridView{grid-template-columns:repeat(auto-fill,minmax(60px,1fr));gap:.5rem;display:grid}.oeIJiq_nodeRow:hover{background:var(--ds-button-hover-bg,#026ec1)}.oeIJiq_infoButton{opacity:0;cursor:pointer;color:var(--colors-fg);background:0 0;border:none;border-radius:.25rem;justify-content:center;align-items:center;padding:.25rem;transition:opacity .2s;display:flex}.oeIJiq_infoButton:hover{background:var(--ds-button-secondary-bg,#313131);opacity:1!important}.oeIJiq_nodeRow:hover .oeIJiq_infoButton{opacity:.7}.oeIJiq_infoButton svg{width:16px;height:16px}.oeIJiq_thumb{border:1px solid var(--ds-input-border,var(--colors-borderSubtle));background:var(--colors-bgCanvas);border-radius:.25rem;flex:none;justify-content:center;align-items:center;width:28px;height:28px;display:flex;overflow:hidden}.oeIJiq_thumb img{object-fit:cover;width:100%;height:100%}.oeIJiq_icon{justify-content:center;align-items:center;width:100%;height:100%;display:flex}.oeIJiq_icon svg{width:100%;height:100%}.oeIJiq_nodeText{flex-direction:column;min-width:0;display:flex}.oeIJiq_nodeTitle{white-space:nowrap;text-overflow:ellipsis;font-size:.9rem;line-height:1.2rem;overflow:hidden}.oeIJiq_gridView .oeIJiq_nodeTitle{font-size:.75rem}.oeIJiq_nodeSub{opacity:.75;white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;overflow:hidden}.oeIJiq_tags{flex-wrap:wrap;gap:.25rem;margin-top:.25rem;display:flex}.oeIJiq_tag{background:var(--ds-badge-bg,#4d4d4d);color:var(--ds-badge-fg,#fff);opacity:.85;border-radius:.25rem;padding:.1rem .35rem;font-size:.65rem}.oeIJiq_card{cursor:pointer;background:var(--colors-bgCanvas);border-radius:.25rem;overflow:hidden}.oeIJiq_card:hover{background:var(--ds-button-hover-bg,#026ec1)}.oeIJiq_cardInner{grid-template-columns:56px 1fr;align-items:center;gap:.15rem;padding:.5rem;display:grid}.oeIJiq_gridView .oeIJiq_cardInner{text-align:center;flex-direction:column;grid-template-columns:1fr;display:flex}.oeIJiq_cardThumb{border:1px solid var(--ds-input-border,var(--colors-borderSubtle));border-radius:.25rem;justify-content:center;align-items:center;width:56px;height:56px;display:flex;overflow:hidden}.oeIJiq_cardThumb img{object-fit:cover;width:100%;height:100%}.oeIJiq_footer{border-top:1px solid var(--ds-input-border,var(--colors-borderSubtle));opacity:.8;justify-content:space-between;gap:.5rem;padding:.35rem .5rem;font-size:.75rem;display:flex}.oeIJiq_empty{opacity:.8;padding:1rem}
30
+ .CoEoEq_container{flex-direction:column;gap:1rem;height:100%;display:flex}.CoEoEq_header{border-bottom:1px solid var(--ds-panel-border);justify-content:space-between;align-items:center;padding-bottom:.5rem;display:flex}.CoEoEq_title{margin:0;font-size:1.1rem;font-weight:600}.CoEoEq_count{color:var(--ds-fg-muted);font-size:.9rem}.CoEoEq_table{flex:1;overflow:auto}.CoEoEq_titleCell{font-weight:500}.CoEoEq_idCell code{color:var(--ds-preformat-fg);background-color:var(--ds-code-bg);border-radius:3px;padding:.125rem .375rem;font-size:.85rem}.CoEoEq_groupCell{color:var(--ds-fg-muted);font-size:.9rem}.CoEoEq_optionsCell{flex-wrap:wrap;gap:.375rem}.CoEoEq_badge{background-color:var(--ds-badge-bg);color:var(--ds-badge-fg);border-radius:10px;padding:.125rem .5rem;font-size:.75rem;font-weight:500;display:inline-block}.CoEoEq_actionCell{text-align:right}
31
+ .ExR4dG_container{flex-direction:column;gap:.75rem;height:100%;display:flex}.ExR4dG_header{justify-content:space-between;align-items:baseline;display:flex}.ExR4dG_title{font-size:1rem;font-weight:600}.ExR4dG_subtitle{color:var(--ds-fg-muted);font-size:.85rem}.ExR4dG_addRow{gap:.5rem;display:flex}.ExR4dG_nameInput{background:var(--ds-input-bg);color:var(--ds-input-fg);border:1px solid var(--ds-input-border);border-radius:4px;flex:1;padding:.35rem .5rem}.ExR4dG_list{flex-direction:column;gap:.75rem;display:flex;overflow:auto}.ExR4dG_row{border:1px solid var(--ds-panel-border);border-radius:6px;flex-direction:column;gap:.5rem;padding:.6rem;display:flex}.ExR4dG_rowTop{align-items:center;gap:.35rem;display:flex}.ExR4dG_layerName{color:var(--ds-editor-fg);background:0 0;border:1px solid #0000;border-radius:4px;flex:1;padding:.2rem .3rem}.ExR4dG_layerName:focus{border-color:var(--ds-focus-border);outline:none}.ExR4dG_badge{color:var(--ds-badge-fg);background:var(--ds-badge-bg);border-radius:99px;padding:.1rem .45rem;font-size:.7rem}.ExR4dG_controls{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.ExR4dG_checkboxLabel{font-size:.85rem}.ExR4dG_opacityLabel{align-items:center;gap:.4rem;font-size:.85rem;display:flex}.ExR4dG_opacityLabel input[type=range]{width:110px}.ExR4dG_actions{gap:.4rem;display:flex}
32
+ .lDoYmW_root{border-radius:.25rem;align-items:center;gap:.25rem;width:100%;display:flex}.lDoYmW_inner{border-radius:.25rem;justify-content:space-between;align-items:center;gap:1.5rem;width:100%;min-width:300px;padding:.25rem .5rem;display:flex}.lDoYmW_label{flex:auto;min-width:0}.lDoYmW_keybinding{opacity:.6;font-variant-numeric:tabular-nums;white-space:nowrap;flex:none;font-size:.85em}
33
+ @keyframes TSabVa_slideUpAndFade{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}@keyframes TSabVa_slideRightAndFade{0%{opacity:0;transform:translate(-2px)}to{opacity:1;transform:translate(0)}}@keyframes TSabVa_slideDownAndFade{0%{opacity:0;transform:translateY(-2px)}to{opacity:1;transform:translateY(0)}}@keyframes TSabVa_slideLeftAndFade{0%{opacity:0;transform:translate(2px)}to{opacity:1;transform:translate(0)}}.TSabVa_popoverContent{border-radius:var(--component-radii-md);border:1px solid var(--color-neutral-stroke-subtle);z-index:10000;background-color:var(--colors-bgCanvas);will-change:transform,opacity;width:300px;padding:0;animation-duration:.4s;animation-timing-function:cubic-bezier(.16,1,.3,1);box-shadow:0 10px 38px -10px #0e121659,0 10px 20px -15px #0e121633}.TSabVa_popoverContent[data-state=open][data-side=top]{animation-name:TSabVa_slideDownAndFade}.TSabVa_popoverContent[data-state=open][data-side=right]{animation-name:TSabVa_slideLeftAndFade}.TSabVa_popoverContent[data-state=open][data-side=bottom]{animation-name:TSabVa_slideUpAndFade}.TSabVa_popoverContent[data-state=open][data-side=left]{animation-name:TSabVa_slideRightAndFade}.TSabVa_popoverContent:focus{box-shadow:0 10px 38px -10px #0e121659,0 10px 20px -15px #0e121633,0 0 0 2px #000}.TSabVa_popoverArrow{fill:var(--colors-bgCanvas)}.TSabVa_popoverClose{all:unset;cursor:pointer;width:25px;height:25px;color:var(--colors-fg);border-radius:100%;justify-content:center;align-items:center;font-family:inherit;display:inline-flex;position:absolute;top:5px;right:5px}
34
+ .jBt58a_colorPickerTrigger{cursor:pointer;border-radius:var(--component-radii-sm);border:1px solid var(--color-neutral-stroke-subtle);flex-shrink:0;width:16px;height:16px;padding:0;&:hover{outline:1px solid var(--color-neutral-stroke-default)}}.jBt58a_popoverCloseRemoveButton{all:unset;margin:var(--component-spacing-md)}
35
+ .wvnzHW_list{flex-direction:column;gap:.4rem;display:flex}.wvnzHW_param{border:1px solid var(--ds-border-subtle,#454545);border-radius:var(--component-radii-sm,4px);background:var(--ds-widget-bg,#202020);flex-direction:column;gap:.3rem;padding:.4rem;display:flex}.wvnzHW_topRow{align-items:center;gap:.3rem;display:flex}.wvnzHW_name{flex:1;min-width:0}.wvnzHW_type{width:100%}
36
+ .YfUpeW_panel{pointer-events:auto;margin:.5rem}.YfUpeW_toolbar{background:var(--ds-widget-bg,#292929);border:1px solid var(--ds-border-subtle,#454545);border-radius:.375rem;gap:.5rem;padding:.25rem;display:flex;box-shadow:0 2px 8px #0000005c}.YfUpeW_buttonGroup{gap:.125rem;padding:.125rem;display:flex}.YfUpeW_buttonGroup vscode-button{min-width:28px;height:28px}.YfUpeW_zoomLevel{font-size:var(--fs-label,.8rem);color:var(--ds-fg);user-select:none;justify-content:center;align-items:center;min-width:3rem;padding:0 .5rem;font-weight:500;display:flex}
37
+ .H8EqXq_panelExtra{align-items:center;gap:4px;padding:0 4px;display:flex}.H8EqXq_root{flex-direction:column;height:100%;display:flex;overflow:hidden}
38
+ ._6DHf2W_content{flex-direction:column;gap:1rem;display:flex}._6DHf2W_header{flex-direction:column;gap:.25rem;padding-bottom:.25rem;display:flex}._6DHf2W_helpText{opacity:.7;font-size:.75rem}._6DHf2W_toolbar{gap:.5rem;display:flex}._6DHf2W_table{width:100%}._6DHf2W_nameCell{width:40%}._6DHf2W_name{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-weight:500;display:inline-block;overflow:hidden}._6DHf2W_actionsCell{text-align:right}._6DHf2W_buttonGroup{flex-wrap:wrap;justify-content:flex-end;gap:.25rem;display:flex}._6DHf2W_empty{opacity:.7;padding:1rem 0;font-size:.8125rem}
39
+ ._7ZOWRq_panel{flex-direction:column;height:100%;display:flex;overflow:hidden}._7ZOWRq_scrollContainer{flex-direction:column;flex:1;gap:1rem;padding:1rem;display:flex;overflow:auto}._7ZOWRq_title{justify-content:space-between;align-items:center;margin:0;display:flex}._7ZOWRq_connectionForm{flex-direction:column;gap:.75rem;display:flex}._7ZOWRq_formField{width:100%}._7ZOWRq_buttonGroup{flex-wrap:wrap;gap:.5rem;display:flex}._7ZOWRq_button{flex:auto;min-width:120px}._7ZOWRq_errorBox{background-color:var(--ds-error-bg);border:1px solid var(--ds-error-border);color:var(--ds-error-fg);word-break:break-word;border-radius:4px;padding:.75rem;font-size:.875rem}._7ZOWRq_infoBox{background-color:var(--ds-info-bg);border:1px solid var(--ds-info-border);border-radius:4px;flex-direction:column;gap:.25rem;padding:.75rem;font-size:.875rem;display:flex}._7ZOWRq_infoField{word-break:break-word}._7ZOWRq_tabPanelGap{flex-direction:column;gap:.5rem;display:flex;overflow:auto}._7ZOWRq_tabPanelGapLarge{flex-direction:column;gap:.75rem;display:flex;overflow:auto}._7ZOWRq_emptyMessage{color:var(--ds-fg-muted);margin:0;font-size:.875rem}._7ZOWRq_codeBlock{font-size:.75rem;font-family:var(--ds-font-mono);color:var(--ds-editor-fg);background-color:var(--ds-code-bg);border-radius:2px;margin:0;padding:.5rem;overflow:auto}._7ZOWRq_messagesToolbar{background-color:var(--ds-editor-bg);border-bottom:1px solid var(--ds-panel-border);z-index:1;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;padding-bottom:.5rem;display:flex;position:sticky;top:0}._7ZOWRq_messagesCount{color:var(--ds-fg-muted);font-size:.875rem}._7ZOWRq_messageCard{border:1px solid var(--ds-panel-border);background-color:var(--ds-editor-bg);border-radius:4px;padding:.75rem;font-size:.875rem}._7ZOWRq_messageHeader{flex-wrap:wrap;justify-content:space-between;gap:.5rem;margin-bottom:.5rem;display:flex}._7ZOWRq_messageDirection{word-break:break-word;align-items:center;gap:.5rem;display:flex}._7ZOWRq_messageDirectionIcon,._7ZOWRq_messageType{font-weight:700}._7ZOWRq_messageTime{color:var(--ds-fg-muted);white-space:nowrap;font-size:.75rem}._7ZOWRq_messageContent{background-color:var(--ds-code-bg);font-size:.75rem;font-family:var(--ds-font-mono);word-break:break-all;border-radius:2px;max-height:200px;margin:0;padding:.5rem;overflow:auto}._7ZOWRq_treeItemTitle{font-weight:500}
40
+ ._9Fiycq_divider{margin:.4rem 0}._9Fiycq_statusRow{align-items:center;gap:var(--space-2,.5rem);padding:.1rem 0;display:flex}._9Fiycq_statusValue{font-size:var(--fs-label,.8rem);font-variant-numeric:tabular-nums;color:var(--ds-fg)}._9Fiycq_field{padding:var(--space-1,.25rem)0;flex-direction:column;gap:.15rem;display:flex}._9Fiycq_label{font-size:var(--fs-label,.8rem);color:var(--ds-fg);line-height:1.3}._9Fiycq_description{font-size:var(--fs-desc,.72rem);color:var(--ds-fg-muted);line-height:1.35}._9Fiycq_inputRow{gap:var(--space-2,.5rem);align-items:center;margin-top:.15rem;display:flex}._9Fiycq_input{flex:1;min-width:0}._9Fiycq_current{font-size:var(--fs-desc,.72rem);color:var(--ds-fg-muted)}._9Fiycq_presets{gap:var(--space-2,.5rem);flex-wrap:wrap;margin-top:.15rem;display:flex}._9Fiycq_helpList{gap:var(--space-2,.5rem);font-size:var(--fs-desc,.72rem);color:var(--ds-fg-muted);flex-direction:column;margin:.25rem 0 0;padding-left:1.1rem;line-height:1.5;display:flex}._9Fiycq_helpList strong{color:var(--ds-fg);font-weight:600}
41
+
42
+ /*# sourceMappingURL=index.css.map*/