@flanksource/clicky-ui 0.3.44 → 0.3.45

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 (471) hide show
  1. package/README.md +2 -0
  2. package/dist/ai.cjs +4 -2
  3. package/dist/ai.cjs.map +1 -1
  4. package/dist/ai.js +3 -1
  5. package/dist/components/MdxEditorField.cjs +40 -22
  6. package/dist/components/MdxEditorField.cjs.map +1 -1
  7. package/dist/components/MdxEditorField.d.ts.map +1 -1
  8. package/dist/components/MdxEditorField.js +41 -23
  9. package/dist/components/MdxEditorField.js.map +1 -1
  10. package/dist/components/json-schema-form-item-summary.cjs +6 -1
  11. package/dist/components/json-schema-form-item-summary.cjs.map +1 -1
  12. package/dist/components/json-schema-form-item-summary.d.ts.map +1 -1
  13. package/dist/components/json-schema-form-item-summary.js +6 -1
  14. package/dist/components/json-schema-form-item-summary.js.map +1 -1
  15. package/dist/data/CodeBlock.cjs +3 -2
  16. package/dist/data/CodeBlock.cjs.map +1 -1
  17. package/dist/data/CodeBlock.d.ts +3 -1
  18. package/dist/data/CodeBlock.d.ts.map +1 -1
  19. package/dist/data/CodeBlock.js +3 -2
  20. package/dist/data/CodeBlock.js.map +1 -1
  21. package/dist/data/GraphDiagram.cjs +18 -6
  22. package/dist/data/GraphDiagram.cjs.map +1 -1
  23. package/dist/data/GraphDiagram.d.ts +9 -1
  24. package/dist/data/GraphDiagram.d.ts.map +1 -1
  25. package/dist/data/GraphDiagram.js +18 -6
  26. package/dist/data/GraphDiagram.js.map +1 -1
  27. package/dist/data/GraphDiagramNodes.cjs +38 -29
  28. package/dist/data/GraphDiagramNodes.cjs.map +1 -1
  29. package/dist/data/GraphDiagramNodes.d.ts +8 -2
  30. package/dist/data/GraphDiagramNodes.d.ts.map +1 -1
  31. package/dist/data/GraphDiagramNodes.js +38 -29
  32. package/dist/data/GraphDiagramNodes.js.map +1 -1
  33. package/dist/data/JsonView.cjs +118 -49
  34. package/dist/data/JsonView.cjs.map +1 -1
  35. package/dist/data/JsonView.d.ts +13 -10
  36. package/dist/data/JsonView.d.ts.map +1 -1
  37. package/dist/data/JsonView.js +118 -49
  38. package/dist/data/JsonView.js.map +1 -1
  39. package/dist/data/MarkdownEditor.cjs +2 -2
  40. package/dist/data/MarkdownEditor.cjs.map +1 -1
  41. package/dist/data/MarkdownEditor.js +2 -2
  42. package/dist/data/MarkdownEditor.js.map +1 -1
  43. package/dist/data/ai/AdvancedChatConfig.cjs +90 -249
  44. package/dist/data/ai/AdvancedChatConfig.cjs.map +1 -1
  45. package/dist/data/ai/AdvancedChatConfig.d.ts +2 -5
  46. package/dist/data/ai/AdvancedChatConfig.d.ts.map +1 -1
  47. package/dist/data/ai/AdvancedChatConfig.js +91 -250
  48. package/dist/data/ai/AdvancedChatConfig.js.map +1 -1
  49. package/dist/data/ai/ChatButton.cjs +2 -0
  50. package/dist/data/ai/ChatButton.cjs.map +1 -1
  51. package/dist/data/ai/ChatButton.d.ts +1 -1
  52. package/dist/data/ai/ChatButton.d.ts.map +1 -1
  53. package/dist/data/ai/ChatButton.js +2 -0
  54. package/dist/data/ai/ChatButton.js.map +1 -1
  55. package/dist/data/ai/ChatFab.cjs +5 -1
  56. package/dist/data/ai/ChatFab.cjs.map +1 -1
  57. package/dist/data/ai/ChatFab.d.ts +5 -1
  58. package/dist/data/ai/ChatFab.d.ts.map +1 -1
  59. package/dist/data/ai/ChatFab.js +5 -1
  60. package/dist/data/ai/ChatFab.js.map +1 -1
  61. package/dist/data/ai/ChatWindow.cjs +2 -8
  62. package/dist/data/ai/ChatWindow.cjs.map +1 -1
  63. package/dist/data/ai/ChatWindow.d.ts.map +1 -1
  64. package/dist/data/ai/ChatWindow.js +2 -8
  65. package/dist/data/ai/ChatWindow.js.map +1 -1
  66. package/dist/data/ai/ChatWindow.runtime.cjs +0 -5
  67. package/dist/data/ai/ChatWindow.runtime.cjs.map +1 -1
  68. package/dist/data/ai/ChatWindow.runtime.d.ts +0 -2
  69. package/dist/data/ai/ChatWindow.runtime.d.ts.map +1 -1
  70. package/dist/data/ai/ChatWindow.runtime.js +0 -5
  71. package/dist/data/ai/ChatWindow.runtime.js.map +1 -1
  72. package/dist/data/ai/PromptRunEditor/runtimeActions.cjs +2 -2
  73. package/dist/data/ai/PromptRunEditor/runtimeActions.cjs.map +1 -1
  74. package/dist/data/ai/PromptRunEditor/runtimeActions.d.ts.map +1 -1
  75. package/dist/data/ai/PromptRunEditor/runtimeActions.js +2 -2
  76. package/dist/data/ai/PromptRunEditor/runtimeActions.js.map +1 -1
  77. package/dist/data/ai/SessionInspector.approvals.cjs +3 -6
  78. package/dist/data/ai/SessionInspector.approvals.cjs.map +1 -1
  79. package/dist/data/ai/SessionInspector.approvals.js +3 -6
  80. package/dist/data/ai/SessionInspector.approvals.js.map +1 -1
  81. package/dist/data/ai/SessionViewer.cjs +13 -4
  82. package/dist/data/ai/SessionViewer.cjs.map +1 -1
  83. package/dist/data/ai/SessionViewer.d.ts +5 -1
  84. package/dist/data/ai/SessionViewer.d.ts.map +1 -1
  85. package/dist/data/ai/SessionViewer.header.cjs +1 -1
  86. package/dist/data/ai/SessionViewer.header.cjs.map +1 -1
  87. package/dist/data/ai/SessionViewer.header.js +1 -1
  88. package/dist/data/ai/SessionViewer.header.js.map +1 -1
  89. package/dist/data/ai/SessionViewer.js +13 -4
  90. package/dist/data/ai/SessionViewer.js.map +1 -1
  91. package/dist/data/ai/SessionViewer.model.cjs +2 -0
  92. package/dist/data/ai/SessionViewer.model.cjs.map +1 -1
  93. package/dist/data/ai/SessionViewer.model.d.ts +1 -0
  94. package/dist/data/ai/SessionViewer.model.d.ts.map +1 -1
  95. package/dist/data/ai/SessionViewer.model.js +2 -0
  96. package/dist/data/ai/SessionViewer.model.js.map +1 -1
  97. package/dist/data/ai/SessionViewer.rows.cjs +41 -27
  98. package/dist/data/ai/SessionViewer.rows.cjs.map +1 -1
  99. package/dist/data/ai/SessionViewer.rows.d.ts +4 -2
  100. package/dist/data/ai/SessionViewer.rows.d.ts.map +1 -1
  101. package/dist/data/ai/SessionViewer.rows.js +41 -27
  102. package/dist/data/ai/SessionViewer.rows.js.map +1 -1
  103. package/dist/data/ai/SessionViewer.tokens.cjs +35 -0
  104. package/dist/data/ai/SessionViewer.tokens.cjs.map +1 -0
  105. package/dist/data/ai/SessionViewer.tokens.d.ts +5 -0
  106. package/dist/data/ai/SessionViewer.tokens.d.ts.map +1 -0
  107. package/dist/data/ai/SessionViewer.tokens.js +35 -0
  108. package/dist/data/ai/SessionViewer.tokens.js.map +1 -0
  109. package/dist/data/ai/SessionViewer.tool-cost.cjs +128 -0
  110. package/dist/data/ai/SessionViewer.tool-cost.cjs.map +1 -0
  111. package/dist/data/ai/SessionViewer.tool-cost.d.ts +6 -0
  112. package/dist/data/ai/SessionViewer.tool-cost.d.ts.map +1 -0
  113. package/dist/data/ai/SessionViewer.tool-cost.js +128 -0
  114. package/dist/data/ai/SessionViewer.tool-cost.js.map +1 -0
  115. package/dist/data/ai/SessionViewer.tool-details.cjs +3 -1
  116. package/dist/data/ai/SessionViewer.tool-details.cjs.map +1 -1
  117. package/dist/data/ai/SessionViewer.tool-details.d.ts.map +1 -1
  118. package/dist/data/ai/SessionViewer.tool-details.js +3 -1
  119. package/dist/data/ai/SessionViewer.tool-details.js.map +1 -1
  120. package/dist/data/ai/SessionViewer.tool-row.cjs +55 -35
  121. package/dist/data/ai/SessionViewer.tool-row.cjs.map +1 -1
  122. package/dist/data/ai/SessionViewer.tool-row.d.ts +2 -1
  123. package/dist/data/ai/SessionViewer.tool-row.d.ts.map +1 -1
  124. package/dist/data/ai/SessionViewer.tool-row.js +55 -35
  125. package/dist/data/ai/SessionViewer.tool-row.js.map +1 -1
  126. package/dist/data/ai/SessionViewer.unified.d.ts +4 -0
  127. package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
  128. package/dist/data/ai/SessionViewerMenu.cjs +18 -1
  129. package/dist/data/ai/SessionViewerMenu.cjs.map +1 -1
  130. package/dist/data/ai/SessionViewerMenu.d.ts +6 -1
  131. package/dist/data/ai/SessionViewerMenu.d.ts.map +1 -1
  132. package/dist/data/ai/SessionViewerMenu.js +18 -1
  133. package/dist/data/ai/SessionViewerMenu.js.map +1 -1
  134. package/dist/data/ai/ToolPreferences.cjs +149 -143
  135. package/dist/data/ai/ToolPreferences.cjs.map +1 -1
  136. package/dist/data/ai/ToolPreferences.d.ts +20 -6
  137. package/dist/data/ai/ToolPreferences.d.ts.map +1 -1
  138. package/dist/data/ai/ToolPreferences.js +151 -146
  139. package/dist/data/ai/ToolPreferences.js.map +1 -1
  140. package/dist/data/ai/ToolPreferences.model.cjs +14 -10
  141. package/dist/data/ai/ToolPreferences.model.cjs.map +1 -1
  142. package/dist/data/ai/ToolPreferences.model.d.ts +1 -0
  143. package/dist/data/ai/ToolPreferences.model.d.ts.map +1 -1
  144. package/dist/data/ai/ToolPreferences.model.js +15 -11
  145. package/dist/data/ai/ToolPreferences.model.js.map +1 -1
  146. package/dist/data/ai/ToolPreferencesList.cjs +1 -0
  147. package/dist/data/ai/ToolPreferencesList.cjs.map +1 -1
  148. package/dist/data/ai/ToolPreferencesList.d.ts +4 -1
  149. package/dist/data/ai/ToolPreferencesList.d.ts.map +1 -1
  150. package/dist/data/ai/ToolPreferencesList.js +2 -1
  151. package/dist/data/ai/ToolPreferencesList.js.map +1 -1
  152. package/dist/data/ai/ToolSchemaBrowser.cjs +52 -53
  153. package/dist/data/ai/ToolSchemaBrowser.cjs.map +1 -1
  154. package/dist/data/ai/ToolSchemaBrowser.d.ts +6 -3
  155. package/dist/data/ai/ToolSchemaBrowser.d.ts.map +1 -1
  156. package/dist/data/ai/ToolSchemaBrowser.directory-header.cjs +9 -13
  157. package/dist/data/ai/ToolSchemaBrowser.directory-header.cjs.map +1 -1
  158. package/dist/data/ai/ToolSchemaBrowser.directory-header.d.ts +5 -2
  159. package/dist/data/ai/ToolSchemaBrowser.directory-header.d.ts.map +1 -1
  160. package/dist/data/ai/ToolSchemaBrowser.directory-header.js +9 -13
  161. package/dist/data/ai/ToolSchemaBrowser.directory-header.js.map +1 -1
  162. package/dist/data/ai/ToolSchemaBrowser.js +53 -54
  163. package/dist/data/ai/ToolSchemaBrowser.js.map +1 -1
  164. package/dist/data/ai/ToolSchemaBrowser.model.cjs +19 -27
  165. package/dist/data/ai/ToolSchemaBrowser.model.cjs.map +1 -1
  166. package/dist/data/ai/ToolSchemaBrowser.model.d.ts +9 -6
  167. package/dist/data/ai/ToolSchemaBrowser.model.d.ts.map +1 -1
  168. package/dist/data/ai/ToolSchemaBrowser.model.js +20 -28
  169. package/dist/data/ai/ToolSchemaBrowser.model.js.map +1 -1
  170. package/dist/data/ai/ToolSchemaBrowser.sidebar.cjs +12 -213
  171. package/dist/data/ai/ToolSchemaBrowser.sidebar.cjs.map +1 -1
  172. package/dist/data/ai/ToolSchemaBrowser.sidebar.d.ts +1 -3
  173. package/dist/data/ai/ToolSchemaBrowser.sidebar.d.ts.map +1 -1
  174. package/dist/data/ai/ToolSchemaBrowser.sidebar.js +13 -214
  175. package/dist/data/ai/ToolSchemaBrowser.sidebar.js.map +1 -1
  176. package/dist/data/ai/ToolSchemaBrowser.strategies.cjs +54 -0
  177. package/dist/data/ai/ToolSchemaBrowser.strategies.cjs.map +1 -0
  178. package/dist/data/ai/ToolSchemaBrowser.strategies.d.ts +9 -0
  179. package/dist/data/ai/ToolSchemaBrowser.strategies.d.ts.map +1 -0
  180. package/dist/data/ai/ToolSchemaBrowser.strategies.js +54 -0
  181. package/dist/data/ai/ToolSchemaBrowser.strategies.js.map +1 -0
  182. package/dist/data/ai/ToolSchemaBrowser.tree.cjs +179 -0
  183. package/dist/data/ai/ToolSchemaBrowser.tree.cjs.map +1 -0
  184. package/dist/data/ai/ToolSchemaBrowser.tree.d.ts +20 -0
  185. package/dist/data/ai/ToolSchemaBrowser.tree.d.ts.map +1 -0
  186. package/dist/data/ai/ToolSchemaBrowser.tree.js +179 -0
  187. package/dist/data/ai/ToolSchemaBrowser.tree.js.map +1 -0
  188. package/dist/data/ai/index.d.ts +2 -2
  189. package/dist/data/ai/index.d.ts.map +1 -1
  190. package/dist/data/ai/runtime-profiles/PermissionStrategiesEditor.cjs +8 -28
  191. package/dist/data/ai/runtime-profiles/PermissionStrategiesEditor.cjs.map +1 -1
  192. package/dist/data/ai/runtime-profiles/PermissionStrategiesEditor.d.ts.map +1 -1
  193. package/dist/data/ai/runtime-profiles/PermissionStrategiesEditor.js +9 -29
  194. package/dist/data/ai/runtime-profiles/PermissionStrategiesEditor.js.map +1 -1
  195. package/dist/data/ai/session-token-sizing.d.ts +32 -0
  196. package/dist/data/ai/session-token-sizing.d.ts.map +1 -0
  197. package/dist/data/ai/use-session-token-sizing.cjs +73 -0
  198. package/dist/data/ai/use-session-token-sizing.cjs.map +1 -0
  199. package/dist/data/ai/use-session-token-sizing.d.ts +21 -0
  200. package/dist/data/ai/use-session-token-sizing.d.ts.map +1 -0
  201. package/dist/data/ai/use-session-token-sizing.js +73 -0
  202. package/dist/data/ai/use-session-token-sizing.js.map +1 -0
  203. package/dist/data/call-graph/CallGraph.cjs +250 -0
  204. package/dist/data/call-graph/CallGraph.cjs.map +1 -0
  205. package/dist/data/call-graph/CallGraph.d.ts +69 -0
  206. package/dist/data/call-graph/CallGraph.d.ts.map +1 -0
  207. package/dist/data/call-graph/CallGraph.js +250 -0
  208. package/dist/data/call-graph/CallGraph.js.map +1 -0
  209. package/dist/data/call-graph/CallGraphGlyphs.cjs +39 -0
  210. package/dist/data/call-graph/CallGraphGlyphs.cjs.map +1 -0
  211. package/dist/data/call-graph/CallGraphGlyphs.d.ts +19 -0
  212. package/dist/data/call-graph/CallGraphGlyphs.d.ts.map +1 -0
  213. package/dist/data/call-graph/CallGraphGlyphs.js +39 -0
  214. package/dist/data/call-graph/CallGraphGlyphs.js.map +1 -0
  215. package/dist/data/call-graph/CallGraphMembers.cjs +50 -0
  216. package/dist/data/call-graph/CallGraphMembers.cjs.map +1 -0
  217. package/dist/data/call-graph/CallGraphMembers.d.ts +22 -0
  218. package/dist/data/call-graph/CallGraphMembers.d.ts.map +1 -0
  219. package/dist/data/call-graph/CallGraphMembers.js +50 -0
  220. package/dist/data/call-graph/CallGraphMembers.js.map +1 -0
  221. package/dist/data/call-graph/CallGraphParts.cjs +204 -0
  222. package/dist/data/call-graph/CallGraphParts.cjs.map +1 -0
  223. package/dist/data/call-graph/CallGraphParts.d.ts +44 -0
  224. package/dist/data/call-graph/CallGraphParts.d.ts.map +1 -0
  225. package/dist/data/call-graph/CallGraphParts.js +204 -0
  226. package/dist/data/call-graph/CallGraphParts.js.map +1 -0
  227. package/dist/data/call-graph/CallGraphToolbar.cjs +186 -0
  228. package/dist/data/call-graph/CallGraphToolbar.cjs.map +1 -0
  229. package/dist/data/call-graph/CallGraphToolbar.d.ts +45 -0
  230. package/dist/data/call-graph/CallGraphToolbar.d.ts.map +1 -0
  231. package/dist/data/call-graph/CallGraphToolbar.js +186 -0
  232. package/dist/data/call-graph/CallGraphToolbar.js.map +1 -0
  233. package/dist/data/call-graph/call-graph-exclude.cjs +75 -0
  234. package/dist/data/call-graph/call-graph-exclude.cjs.map +1 -0
  235. package/dist/data/call-graph/call-graph-exclude.d.ts +31 -0
  236. package/dist/data/call-graph/call-graph-exclude.d.ts.map +1 -0
  237. package/dist/data/call-graph/call-graph-exclude.js +75 -0
  238. package/dist/data/call-graph/call-graph-exclude.js.map +1 -0
  239. package/dist/data/call-graph/call-graph-labels.cjs +96 -0
  240. package/dist/data/call-graph/call-graph-labels.cjs.map +1 -0
  241. package/dist/data/call-graph/call-graph-labels.d.ts +53 -0
  242. package/dist/data/call-graph/call-graph-labels.d.ts.map +1 -0
  243. package/dist/data/call-graph/call-graph-labels.js +96 -0
  244. package/dist/data/call-graph/call-graph-labels.js.map +1 -0
  245. package/dist/data/call-graph/call-graph-model.cjs +161 -0
  246. package/dist/data/call-graph/call-graph-model.cjs.map +1 -0
  247. package/dist/data/call-graph/call-graph-model.d.ts +102 -0
  248. package/dist/data/call-graph/call-graph-model.d.ts.map +1 -0
  249. package/dist/data/call-graph/call-graph-model.js +161 -0
  250. package/dist/data/call-graph/call-graph-model.js.map +1 -0
  251. package/dist/data/call-graph/call-graph-vocabulary.cjs +177 -0
  252. package/dist/data/call-graph/call-graph-vocabulary.cjs.map +1 -0
  253. package/dist/data/call-graph/call-graph-vocabulary.d.ts +72 -0
  254. package/dist/data/call-graph/call-graph-vocabulary.d.ts.map +1 -0
  255. package/dist/data/call-graph/call-graph-vocabulary.js +177 -0
  256. package/dist/data/call-graph/call-graph-vocabulary.js.map +1 -0
  257. package/dist/data/call-graph/call-graph.fixtures.d.ts +63 -0
  258. package/dist/data/call-graph/call-graph.fixtures.d.ts.map +1 -0
  259. package/dist/data/call-graph/index.d.ts +7 -0
  260. package/dist/data/call-graph/index.d.ts.map +1 -0
  261. package/dist/data/call-graph/types.cjs +5 -0
  262. package/dist/data/call-graph/types.cjs.map +1 -0
  263. package/dist/data/call-graph/types.d.ts +135 -0
  264. package/dist/data/call-graph/types.d.ts.map +1 -0
  265. package/dist/data/call-graph/types.js +5 -0
  266. package/dist/data/call-graph/types.js.map +1 -0
  267. package/dist/data/call-graph/use-call-graph.cjs +93 -0
  268. package/dist/data/call-graph/use-call-graph.cjs.map +1 -0
  269. package/dist/data/call-graph/use-call-graph.d.ts +24 -0
  270. package/dist/data/call-graph/use-call-graph.d.ts.map +1 -0
  271. package/dist/data/call-graph/use-call-graph.js +93 -0
  272. package/dist/data/call-graph/use-call-graph.js.map +1 -0
  273. package/dist/data/chat/Chat.cjs +39 -15
  274. package/dist/data/chat/Chat.cjs.map +1 -1
  275. package/dist/data/chat/Chat.d.ts.map +1 -1
  276. package/dist/data/chat/Chat.fixtures.cjs +2 -2
  277. package/dist/data/chat/Chat.fixtures.cjs.map +1 -1
  278. package/dist/data/chat/Chat.fixtures.js +2 -2
  279. package/dist/data/chat/Chat.fixtures.js.map +1 -1
  280. package/dist/data/chat/Chat.js +40 -16
  281. package/dist/data/chat/Chat.js.map +1 -1
  282. package/dist/data/chat/ChatRuntimeToolbar.cjs +3 -6
  283. package/dist/data/chat/ChatRuntimeToolbar.cjs.map +1 -1
  284. package/dist/data/chat/ChatRuntimeToolbar.d.ts.map +1 -1
  285. package/dist/data/chat/ChatRuntimeToolbar.js +3 -6
  286. package/dist/data/chat/ChatRuntimeToolbar.js.map +1 -1
  287. package/dist/data/chat/ContextMeter.bar.cjs +5 -8
  288. package/dist/data/chat/ContextMeter.bar.cjs.map +1 -1
  289. package/dist/data/chat/ContextMeter.bar.d.ts +1 -1
  290. package/dist/data/chat/ContextMeter.bar.d.ts.map +1 -1
  291. package/dist/data/chat/ContextMeter.bar.js +5 -8
  292. package/dist/data/chat/ContextMeter.bar.js.map +1 -1
  293. package/dist/data/chat/ContextMeter.cjs +18 -19
  294. package/dist/data/chat/ContextMeter.cjs.map +1 -1
  295. package/dist/data/chat/ContextMeter.d.ts +1 -1
  296. package/dist/data/chat/ContextMeter.d.ts.map +1 -1
  297. package/dist/data/chat/ContextMeter.js +18 -19
  298. package/dist/data/chat/ContextMeter.js.map +1 -1
  299. package/dist/data/chat/Conversation.cjs +2 -1
  300. package/dist/data/chat/Conversation.cjs.map +1 -1
  301. package/dist/data/chat/Conversation.d.ts +4 -1
  302. package/dist/data/chat/Conversation.d.ts.map +1 -1
  303. package/dist/data/chat/Conversation.js +2 -1
  304. package/dist/data/chat/Conversation.js.map +1 -1
  305. package/dist/data/chat/Message.cjs +39 -12
  306. package/dist/data/chat/Message.cjs.map +1 -1
  307. package/dist/data/chat/Message.d.ts +1 -1
  308. package/dist/data/chat/Message.d.ts.map +1 -1
  309. package/dist/data/chat/Message.js +40 -13
  310. package/dist/data/chat/Message.js.map +1 -1
  311. package/dist/data/chat/ToolCall.cjs +60 -5
  312. package/dist/data/chat/ToolCall.cjs.map +1 -1
  313. package/dist/data/chat/ToolCall.d.ts +7 -2
  314. package/dist/data/chat/ToolCall.d.ts.map +1 -1
  315. package/dist/data/chat/ToolCall.js +60 -5
  316. package/dist/data/chat/ToolCall.js.map +1 -1
  317. package/dist/data/chat/approval.cjs.map +1 -1
  318. package/dist/data/chat/approval.d.ts +2 -2
  319. package/dist/data/chat/approval.d.ts.map +1 -1
  320. package/dist/data/chat/approval.js.map +1 -1
  321. package/dist/data/chat/tool-policy.cjs +59 -2
  322. package/dist/data/chat/tool-policy.cjs.map +1 -1
  323. package/dist/data/chat/tool-policy.d.ts +9 -0
  324. package/dist/data/chat/tool-policy.d.ts.map +1 -1
  325. package/dist/data/chat/tool-policy.js +59 -2
  326. package/dist/data/chat/tool-policy.js.map +1 -1
  327. package/dist/data/chat/types.cjs +6 -0
  328. package/dist/data/chat/types.cjs.map +1 -1
  329. package/dist/data/chat/types.d.ts +13 -4
  330. package/dist/data/chat/types.d.ts.map +1 -1
  331. package/dist/data/chat/types.js +7 -1
  332. package/dist/data/chat/types.js.map +1 -1
  333. package/dist/data/chat/usage-snapshot.cjs +11 -6
  334. package/dist/data/chat/usage-snapshot.cjs.map +1 -1
  335. package/dist/data/chat/usage-snapshot.d.ts +0 -1
  336. package/dist/data/chat/usage-snapshot.d.ts.map +1 -1
  337. package/dist/data/chat/usage-snapshot.js +11 -6
  338. package/dist/data/chat/usage-snapshot.js.map +1 -1
  339. package/dist/data/diagnostics/StackFrameRow.cjs +3 -3
  340. package/dist/data/diagnostics/StackFrameRow.cjs.map +1 -1
  341. package/dist/data/diagnostics/StackFrameRow.js +3 -3
  342. package/dist/data/diagnostics/StackFrameRow.js.map +1 -1
  343. package/dist/data/graph-columns-layout.cjs +26 -10
  344. package/dist/data/graph-columns-layout.cjs.map +1 -1
  345. package/dist/data/graph-columns-layout.d.ts +8 -0
  346. package/dist/data/graph-columns-layout.d.ts.map +1 -1
  347. package/dist/data/graph-columns-layout.js +26 -10
  348. package/dist/data/graph-columns-layout.js.map +1 -1
  349. package/dist/data/graph-diagram-model.cjs.map +1 -1
  350. package/dist/data/graph-diagram-model.d.ts +5 -0
  351. package/dist/data/graph-diagram-model.d.ts.map +1 -1
  352. package/dist/data/graph-diagram-model.js.map +1 -1
  353. package/dist/data/graph-edge-routing.cjs +9 -3
  354. package/dist/data/graph-edge-routing.cjs.map +1 -1
  355. package/dist/data/graph-edge-routing.d.ts +2 -0
  356. package/dist/data/graph-edge-routing.d.ts.map +1 -1
  357. package/dist/data/graph-edge-routing.js +9 -3
  358. package/dist/data/graph-edge-routing.js.map +1 -1
  359. package/dist/data/json-view/JsonSource.cjs +84 -0
  360. package/dist/data/json-view/JsonSource.cjs.map +1 -0
  361. package/dist/data/json-view/JsonSource.d.ts +7 -0
  362. package/dist/data/json-view/JsonSource.d.ts.map +1 -0
  363. package/dist/data/json-view/JsonSource.js +84 -0
  364. package/dist/data/json-view/JsonSource.js.map +1 -0
  365. package/dist/data/json-view/parse-prefix.cjs +132 -0
  366. package/dist/data/json-view/parse-prefix.cjs.map +1 -0
  367. package/dist/data/json-view/parse-prefix.d.ts +11 -0
  368. package/dist/data/json-view/parse-prefix.d.ts.map +1 -0
  369. package/dist/data/json-view/parse-prefix.js +132 -0
  370. package/dist/data/json-view/parse-prefix.js.map +1 -0
  371. package/dist/data/json-view/parse-source.cjs +62 -0
  372. package/dist/data/json-view/parse-source.cjs.map +1 -0
  373. package/dist/data/json-view/parse-source.d.ts +16 -0
  374. package/dist/data/json-view/parse-source.d.ts.map +1 -0
  375. package/dist/data/json-view/parse-source.js +62 -0
  376. package/dist/data/json-view/parse-source.js.map +1 -0
  377. package/dist/data/json-view/story-fixtures.d.ts +6 -0
  378. package/dist/data/json-view/story-fixtures.d.ts.map +1 -0
  379. package/dist/data/json-view/types.d.ts +14 -0
  380. package/dist/data/json-view/types.d.ts.map +1 -0
  381. package/dist/data/runtime/RuntimeBar.cjs +2 -5
  382. package/dist/data/runtime/RuntimeBar.cjs.map +1 -1
  383. package/dist/data/runtime/RuntimeBar.d.ts +2 -4
  384. package/dist/data/runtime/RuntimeBar.d.ts.map +1 -1
  385. package/dist/data/runtime/RuntimeBar.fields.cjs +2 -2
  386. package/dist/data/runtime/RuntimeBar.fields.cjs.map +1 -1
  387. package/dist/data/runtime/RuntimeBar.fields.js +2 -2
  388. package/dist/data/runtime/RuntimeBar.fields.js.map +1 -1
  389. package/dist/data/runtime/RuntimeBar.js +2 -5
  390. package/dist/data/runtime/RuntimeBar.js.map +1 -1
  391. package/dist/data/runtime/RuntimeBar.selection.cjs +4 -1
  392. package/dist/data/runtime/RuntimeBar.selection.cjs.map +1 -1
  393. package/dist/data/runtime/RuntimeBar.selection.d.ts.map +1 -1
  394. package/dist/data/runtime/RuntimeBar.selection.js +5 -2
  395. package/dist/data/runtime/RuntimeBar.selection.js.map +1 -1
  396. package/dist/data/runtime/RuntimeBarActions.cjs +1 -5
  397. package/dist/data/runtime/RuntimeBarActions.cjs.map +1 -1
  398. package/dist/data/runtime/RuntimeBarActions.d.ts +1 -1
  399. package/dist/data/runtime/RuntimeBarActions.d.ts.map +1 -1
  400. package/dist/data/runtime/RuntimeBarActions.js +1 -5
  401. package/dist/data/runtime/RuntimeBarActions.js.map +1 -1
  402. package/dist/data/runtime/RuntimeBarIdentity.cjs +6 -14
  403. package/dist/data/runtime/RuntimeBarIdentity.cjs.map +1 -1
  404. package/dist/data/runtime/RuntimeBarIdentity.d.ts +0 -1
  405. package/dist/data/runtime/RuntimeBarIdentity.d.ts.map +1 -1
  406. package/dist/data/runtime/RuntimeBarIdentity.js +6 -14
  407. package/dist/data/runtime/RuntimeBarIdentity.js.map +1 -1
  408. package/dist/data/runtime/RuntimeBarLayout.cjs +8 -27
  409. package/dist/data/runtime/RuntimeBarLayout.cjs.map +1 -1
  410. package/dist/data/runtime/RuntimeBarLayout.d.ts.map +1 -1
  411. package/dist/data/runtime/RuntimeBarLayout.js +8 -27
  412. package/dist/data/runtime/RuntimeBarLayout.js.map +1 -1
  413. package/dist/data/runtime/RuntimeBarSegment.cjs +1 -5
  414. package/dist/data/runtime/RuntimeBarSegment.cjs.map +1 -1
  415. package/dist/data/runtime/RuntimeBarSegment.d.ts.map +1 -1
  416. package/dist/data/runtime/RuntimeBarSegment.js +1 -5
  417. package/dist/data/runtime/RuntimeBarSegment.js.map +1 -1
  418. package/dist/data/runtime/use-runtime-bar-overflow.cjs +4 -10
  419. package/dist/data/runtime/use-runtime-bar-overflow.cjs.map +1 -1
  420. package/dist/data/runtime/use-runtime-bar-overflow.d.ts +1 -2
  421. package/dist/data/runtime/use-runtime-bar-overflow.d.ts.map +1 -1
  422. package/dist/data/runtime/use-runtime-bar-overflow.js +4 -10
  423. package/dist/data/runtime/use-runtime-bar-overflow.js.map +1 -1
  424. package/dist/data/test-runner/TestRunner.fixtures.d.ts +0 -20
  425. package/dist/data/test-runner/TestRunner.fixtures.d.ts.map +1 -1
  426. package/dist/data/test-runner/TestRunner.large-fixtures.d.ts +22 -0
  427. package/dist/data/test-runner/TestRunner.large-fixtures.d.ts.map +1 -0
  428. package/dist/data/use-pan-zoom.cjs +23 -10
  429. package/dist/data/use-pan-zoom.cjs.map +1 -1
  430. package/dist/data/use-pan-zoom.d.ts +16 -2
  431. package/dist/data/use-pan-zoom.d.ts.map +1 -1
  432. package/dist/data/use-pan-zoom.js +23 -10
  433. package/dist/data/use-pan-zoom.js.map +1 -1
  434. package/dist/data/version-info.cjs +3 -3
  435. package/dist/data/version-info.js +3 -3
  436. package/dist/data.cjs +26 -2
  437. package/dist/data.cjs.map +1 -1
  438. package/dist/data.d.ts +1 -0
  439. package/dist/data.d.ts.map +1 -1
  440. package/dist/data.js +24 -0
  441. package/dist/data.js.map +1 -1
  442. package/dist/index.cjs +28 -4
  443. package/dist/index.cjs.map +1 -1
  444. package/dist/index.js +24 -0
  445. package/dist/index.js.map +1 -1
  446. package/dist/layout/Workspace.cjs +13 -4
  447. package/dist/layout/Workspace.cjs.map +1 -1
  448. package/dist/layout/Workspace.d.ts +7 -2
  449. package/dist/layout/Workspace.d.ts.map +1 -1
  450. package/dist/layout/Workspace.js +13 -4
  451. package/dist/layout/Workspace.js.map +1 -1
  452. package/dist/lib/permission-strategies.cjs +71 -11
  453. package/dist/lib/permission-strategies.cjs.map +1 -1
  454. package/dist/lib/permission-strategies.d.ts +3 -0
  455. package/dist/lib/permission-strategies.d.ts.map +1 -1
  456. package/dist/lib/permission-strategies.js +71 -11
  457. package/dist/lib/permission-strategies.js.map +1 -1
  458. package/dist/styles.css +1 -1
  459. package/package.json +5 -3
  460. package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.cjs +0 -57
  461. package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.cjs.map +0 -1
  462. package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.d.ts +0 -7
  463. package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.d.ts.map +0 -1
  464. package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.js +0 -57
  465. package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.js.map +0 -1
  466. package/dist/data/runtime/RuntimeBar.context.cjs +0 -8
  467. package/dist/data/runtime/RuntimeBar.context.cjs.map +0 -1
  468. package/dist/data/runtime/RuntimeBar.context.d.ts +0 -2
  469. package/dist/data/runtime/RuntimeBar.context.d.ts.map +0 -1
  470. package/dist/data/runtime/RuntimeBar.context.js +0 -8
  471. package/dist/data/runtime/RuntimeBar.context.js.map +0 -1
package/dist/data.js CHANGED
@@ -109,12 +109,17 @@ import { parseJavaStackTrace } from "./data/diagnostics/stacktrace-parse.js";
109
109
  import { CopyBadge, ErrorDetails, PrettyStackTrace } from "./data/diagnostics/ErrorDetails.js";
110
110
  import { compactStackPath, isApplicationStackFrame, normalizeErrorDiagnostics, parseDiagnosticsStackTrace, parseInlineJsonContextValue } from "./data/diagnostics/error-diagnostics.js";
111
111
  import { HarEntryDetails, HarPanel } from "./data/har/HarPanel.js";
112
+ import { CALL_GRAPH_ACCESS } from "./data/call-graph/types.js";
113
+ import { CALL_GRAPH_DATA_GLYPHS, DATA_KIND_WORDS, UIR_CALL_GRAPH_VOCABULARY, callsItself, dataNodeBacking, dataNodeStatus, interfaceMethods, isDataNode } from "./data/call-graph/call-graph-vocabulary.js";
114
+ import { CALL_GRAPH_DEFAULT_DEPTH, CALL_GRAPH_MAX_DEPTH, mergeGraph, toggleAccess } from "./data/call-graph/call-graph-model.js";
115
+ import { EXCLUDE_EXTERNAL, callGraphGroupFacts, formatExclude, matchesExclude, parseExclude } from "./data/call-graph/call-graph-exclude.js";
112
116
  import { CacheAdapterRegistry, createCacheRegistry, prefixAdapter } from "./data/cache-browser/adapter.js";
113
117
  import { CacheBrowser } from "./data/cache-browser/CacheBrowser.js";
114
118
  import { CacheDetailPanel } from "./data/cache-browser/CacheDetailPanel.js";
115
119
  import { CacheNodeRow, CacheTree } from "./data/cache-browser/CacheTree.js";
116
120
  import { CacheStatsOverview } from "./data/cache-browser/CacheStatsOverview.js";
117
121
  import { CacheValue } from "./data/cache-browser/CacheValue.js";
122
+ import { CallGraph } from "./data/call-graph/CallGraph.js";
118
123
  import { ClickyExportDialog } from "./data/clicky-export/ClickyExportDialog.js";
119
124
  import { FixtureEditor } from "./data/FixtureEditor/FixtureEditor.js";
120
125
  import { GitChangedFilesSummary, GitCommitList, GitDiffPanel, GitFileList } from "./data/git/GitChangeList.js";
@@ -725,6 +730,12 @@ export {
725
730
  CALLOUT_TONES,
726
731
  CALLOUT_VARIANTS,
727
732
  CALLOUT_VARIANT_LABELS,
733
+ CALL_GRAPH_ACCESS,
734
+ CALL_GRAPH_DATA_GLYPHS,
735
+ DATA_KIND_WORDS as CALL_GRAPH_DATA_KIND_WORDS,
736
+ CALL_GRAPH_DEFAULT_DEPTH,
737
+ EXCLUDE_EXTERNAL as CALL_GRAPH_EXCLUDE_EXTERNAL,
738
+ CALL_GRAPH_MAX_DEPTH,
728
739
  CacheAdapterRegistry,
729
740
  CacheBrowser,
730
741
  CacheDetailPanel,
@@ -732,6 +743,7 @@ export {
732
743
  CacheStatsOverview,
733
744
  CacheTree,
734
745
  CacheValue,
746
+ CallGraph,
735
747
  Callout,
736
748
  CellFilterActions,
737
749
  ClickyExportDialog,
@@ -832,6 +844,7 @@ export {
832
844
  Tree,
833
845
  TreeGroupHeader,
834
846
  TreeNode,
847
+ UIR_CALL_GRAPH_VOCABULARY,
835
848
  UiAccessProtected,
836
849
  UiAccessProtectedDark,
837
850
  UiAccessPublic,
@@ -1912,7 +1925,9 @@ export {
1912
1925
  buildSchemaViewerTree,
1913
1926
  buildStepBranchTree,
1914
1927
  cacheQueryKeys,
1928
+ callGraphGroupFacts,
1915
1929
  calloutVariantStyles,
1930
+ callsItself,
1916
1931
  changeIconAliases,
1917
1932
  chooseTimestampFormat,
1918
1933
  clickyFormatForMarkdownPreview,
@@ -1933,6 +1948,8 @@ export {
1933
1948
  createFenceMarkdown,
1934
1949
  createTestRunnerRegistry,
1935
1950
  cycleFilterState,
1951
+ dataNodeBacking,
1952
+ dataNodeStatus,
1936
1953
  debugCaptureHeaders,
1937
1954
  debugConsoleAvailable,
1938
1955
  debugConsoleOpen,
@@ -1951,6 +1968,7 @@ export {
1951
1968
  fixtureFenceSchemaAliases,
1952
1969
  fixtureFenceSnippetInfo,
1953
1970
  fixtureFrontmatterState,
1971
+ formatExclude as formatCallGraphExclude,
1954
1972
  formatCount,
1955
1973
  formatDateTimeRelative,
1956
1974
  formatGitCommitDateHeader,
@@ -1972,7 +1990,9 @@ export {
1972
1990
  humanizeName,
1973
1991
  iconsByConsumerName,
1974
1992
  inferColumns,
1993
+ interfaceMethods,
1975
1994
  isApplicationStackFrame,
1995
+ isDataNode,
1976
1996
  isFailedOrWarn,
1977
1997
  isFlatMetadata,
1978
1998
  isGroupCollapsedByDefault,
@@ -1983,7 +2003,9 @@ export {
1983
2003
  latestOf,
1984
2004
  logLevelColor,
1985
2005
  markdownDocumentStats,
2006
+ matchesExclude as matchesCallGraphExclude,
1986
2007
  matchesFilterState,
2008
+ mergeGraph as mergeCallGraph,
1987
2009
  mergeSeries,
1988
2010
  metadataEntries,
1989
2011
  mockMarkdownPreview,
@@ -1993,6 +2015,7 @@ export {
1993
2015
  normalizeStatus,
1994
2016
  normalizeTags,
1995
2017
  parseBoundsValue,
2018
+ parseExclude as parseCallGraphExclude,
1996
2019
  parseDiagnosticsStackTrace,
1997
2020
  parseDurationBoundsValue,
1998
2021
  parseFixtureFrontmatter,
@@ -2060,6 +2083,7 @@ export {
2060
2083
  taskStatusColor,
2061
2084
  taskStatusIcon,
2062
2085
  testStatus,
2086
+ toggleAccess as toggleCallGraphAccess,
2063
2087
  totalDuration,
2064
2088
  updateFilterSelection,
2065
2089
  useClickyExport,
package/dist/data.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"data.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"data.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/index.cjs CHANGED
@@ -286,13 +286,18 @@ const clickyMetadata = require("./rpc/clickyMetadata.cjs");
286
286
  const commandHref = require("./rpc/commandHref.cjs");
287
287
  const router = require("./rpc/router.cjs");
288
288
  const RouterProvider = require("./rpc/RouterProvider.cjs");
289
- const types$1 = require("./rpc/types.cjs");
289
+ const types$2 = require("./rpc/types.cjs");
290
+ const types = require("./data/call-graph/types.cjs");
291
+ const callGraphVocabulary = require("./data/call-graph/call-graph-vocabulary.cjs");
292
+ const callGraphModel = require("./data/call-graph/call-graph-model.cjs");
293
+ const callGraphExclude = require("./data/call-graph/call-graph-exclude.cjs");
290
294
  const adapter = require("./data/cache-browser/adapter.cjs");
291
295
  const CacheBrowser = require("./data/cache-browser/CacheBrowser.cjs");
292
296
  const CacheDetailPanel = require("./data/cache-browser/CacheDetailPanel.cjs");
293
297
  const CacheTree = require("./data/cache-browser/CacheTree.cjs");
294
298
  const CacheStatsOverview = require("./data/cache-browser/CacheStatsOverview.cjs");
295
299
  const CacheValue = require("./data/cache-browser/CacheValue.cjs");
300
+ const CallGraph = require("./data/call-graph/CallGraph.cjs");
296
301
  const ClickyExportDialog = require("./data/clicky-export/ClickyExportDialog.cjs");
297
302
  const FixtureEditor = require("./data/FixtureEditor/FixtureEditor.cjs");
298
303
  const GitChangeList = require("./data/git/GitChangeList.cjs");
@@ -890,7 +895,7 @@ const filterState = require("./data/test-runner/filterState.cjs");
890
895
  const verifyReport = require("./data/verification/verify-report.cjs");
891
896
  const gitDates = require("./data/git/git-dates.cjs");
892
897
  const frameworkIcon = require("./data/test-runner/frameworkIcon.cjs");
893
- const types = require("./data/cache-browser/types.cjs");
898
+ const types$1 = require("./data/cache-browser/types.cjs");
894
899
  const programmingCatalog = require("./icons/programmingCatalog.cjs");
895
900
  const graphEdgeRouting = require("./data/graph-edge-routing.cjs");
896
901
  const useClickyExport = require("./data/clicky-export/useClickyExport.cjs");
@@ -1462,7 +1467,25 @@ exports.useBrowserRouter = router.useBrowserRouter;
1462
1467
  exports.useMemoryRouter = router.useMemoryRouter;
1463
1468
  exports.useRouter = router.useRouter;
1464
1469
  exports.RouterProvider = RouterProvider.RouterProvider;
1465
- exports.isPositionalParam = types$1.isPositionalParam;
1470
+ exports.isPositionalParam = types$2.isPositionalParam;
1471
+ exports.CALL_GRAPH_ACCESS = types.CALL_GRAPH_ACCESS;
1472
+ exports.CALL_GRAPH_DATA_GLYPHS = callGraphVocabulary.CALL_GRAPH_DATA_GLYPHS;
1473
+ exports.CALL_GRAPH_DATA_KIND_WORDS = callGraphVocabulary.DATA_KIND_WORDS;
1474
+ exports.UIR_CALL_GRAPH_VOCABULARY = callGraphVocabulary.UIR_CALL_GRAPH_VOCABULARY;
1475
+ exports.callsItself = callGraphVocabulary.callsItself;
1476
+ exports.dataNodeBacking = callGraphVocabulary.dataNodeBacking;
1477
+ exports.dataNodeStatus = callGraphVocabulary.dataNodeStatus;
1478
+ exports.interfaceMethods = callGraphVocabulary.interfaceMethods;
1479
+ exports.isDataNode = callGraphVocabulary.isDataNode;
1480
+ exports.CALL_GRAPH_DEFAULT_DEPTH = callGraphModel.CALL_GRAPH_DEFAULT_DEPTH;
1481
+ exports.CALL_GRAPH_MAX_DEPTH = callGraphModel.CALL_GRAPH_MAX_DEPTH;
1482
+ exports.mergeCallGraph = callGraphModel.mergeGraph;
1483
+ exports.toggleCallGraphAccess = callGraphModel.toggleAccess;
1484
+ exports.CALL_GRAPH_EXCLUDE_EXTERNAL = callGraphExclude.EXCLUDE_EXTERNAL;
1485
+ exports.callGraphGroupFacts = callGraphExclude.callGraphGroupFacts;
1486
+ exports.formatCallGraphExclude = callGraphExclude.formatExclude;
1487
+ exports.matchesCallGraphExclude = callGraphExclude.matchesExclude;
1488
+ exports.parseCallGraphExclude = callGraphExclude.parseExclude;
1466
1489
  exports.CacheAdapterRegistry = adapter.CacheAdapterRegistry;
1467
1490
  exports.createCacheRegistry = adapter.createCacheRegistry;
1468
1491
  exports.prefixAdapter = adapter.prefixAdapter;
@@ -1472,6 +1495,7 @@ exports.CacheNodeRow = CacheTree.CacheNodeRow;
1472
1495
  exports.CacheTree = CacheTree.CacheTree;
1473
1496
  exports.CacheStatsOverview = CacheStatsOverview.CacheStatsOverview;
1474
1497
  exports.CacheValue = CacheValue.CacheValue;
1498
+ exports.CallGraph = CallGraph.CallGraph;
1475
1499
  exports.ClickyExportDialog = ClickyExportDialog.ClickyExportDialog;
1476
1500
  exports.FixtureEditor = FixtureEditor.FixtureEditor;
1477
1501
  exports.GitChangedFilesSummary = GitChangeList.GitChangedFilesSummary;
@@ -2605,7 +2629,7 @@ exports.emptyVerifySummary = verifyReport.emptyVerifySummary;
2605
2629
  exports.summarizeVerifyNodes = verifyReport.summarizeVerifyNodes;
2606
2630
  exports.formatGitCommitDateHeader = gitDates.formatGitCommitDateHeader;
2607
2631
  exports.frameworkIcon = frameworkIcon.frameworkIcon;
2608
- exports.isLeaf = types.isLeaf;
2632
+ exports.isLeaf = types$1.isLeaf;
2609
2633
  exports.programmingIconCatalog = programmingCatalog.programmingIconCatalog;
2610
2634
  exports.routeEdges = graphEdgeRouting.routeEdges;
2611
2635
  exports.useClickyExport = useClickyExport.useClickyExport;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/index.js CHANGED
@@ -285,12 +285,17 @@ import { buildCommandHref, withBasePath } from "./rpc/commandHref.js";
285
285
  import { useBrowserRouter, useMemoryRouter, useRouter } from "./rpc/router.js";
286
286
  import { RouterProvider } from "./rpc/RouterProvider.js";
287
287
  import { isPositionalParam } from "./rpc/types.js";
288
+ import { CALL_GRAPH_ACCESS } from "./data/call-graph/types.js";
289
+ import { CALL_GRAPH_DATA_GLYPHS, DATA_KIND_WORDS, UIR_CALL_GRAPH_VOCABULARY, callsItself, dataNodeBacking, dataNodeStatus, interfaceMethods, isDataNode } from "./data/call-graph/call-graph-vocabulary.js";
290
+ import { CALL_GRAPH_DEFAULT_DEPTH, CALL_GRAPH_MAX_DEPTH, mergeGraph, toggleAccess } from "./data/call-graph/call-graph-model.js";
291
+ import { EXCLUDE_EXTERNAL, callGraphGroupFacts, formatExclude, matchesExclude, parseExclude } from "./data/call-graph/call-graph-exclude.js";
288
292
  import { CacheAdapterRegistry, createCacheRegistry, prefixAdapter } from "./data/cache-browser/adapter.js";
289
293
  import { CacheBrowser } from "./data/cache-browser/CacheBrowser.js";
290
294
  import { CacheDetailPanel } from "./data/cache-browser/CacheDetailPanel.js";
291
295
  import { CacheNodeRow, CacheTree } from "./data/cache-browser/CacheTree.js";
292
296
  import { CacheStatsOverview } from "./data/cache-browser/CacheStatsOverview.js";
293
297
  import { CacheValue } from "./data/cache-browser/CacheValue.js";
298
+ import { CallGraph } from "./data/call-graph/CallGraph.js";
294
299
  import { ClickyExportDialog } from "./data/clicky-export/ClickyExportDialog.js";
295
300
  import { FixtureEditor } from "./data/FixtureEditor/FixtureEditor.js";
296
301
  import { GitChangedFilesSummary, GitCommitList, GitDiffPanel, GitFileList } from "./data/git/GitChangeList.js";
@@ -909,6 +914,12 @@ export {
909
914
  CALLOUT_TONES,
910
915
  CALLOUT_VARIANTS,
911
916
  CALLOUT_VARIANT_LABELS,
917
+ CALL_GRAPH_ACCESS,
918
+ CALL_GRAPH_DATA_GLYPHS,
919
+ DATA_KIND_WORDS as CALL_GRAPH_DATA_KIND_WORDS,
920
+ CALL_GRAPH_DEFAULT_DEPTH,
921
+ EXCLUDE_EXTERNAL as CALL_GRAPH_EXCLUDE_EXTERNAL,
922
+ CALL_GRAPH_MAX_DEPTH,
912
923
  CLICKY_COLUMN_FORMAT_OPTIONS,
913
924
  CLICKY_COLUMN_UNIT_OPTIONS,
914
925
  CLICKY_FORMAT_OPTIONS,
@@ -925,6 +936,7 @@ export {
925
936
  CacheStatsOverview,
926
937
  CacheTree,
927
938
  CacheValue,
939
+ CallGraph,
928
940
  Callout,
929
941
  CellActionButton,
930
942
  CellActions,
@@ -1157,6 +1169,7 @@ export {
1157
1169
  TreePickerField,
1158
1170
  TriStateMultiSelect,
1159
1171
  TriStateToggle,
1172
+ UIR_CALL_GRAPH_VOCABULARY,
1160
1173
  UiAccessProtected,
1161
1174
  UiAccessProtectedDark,
1162
1175
  UiAccessPublic,
@@ -2257,7 +2270,9 @@ export {
2257
2270
  buttonVariants,
2258
2271
  cacheQueryKeys,
2259
2272
  calculateComboboxMenuPosition,
2273
+ callGraphGroupFacts,
2260
2274
  calloutVariantStyles,
2275
+ callsItself,
2261
2276
  changeIconAliases,
2262
2277
  chooseTimestampFormat,
2263
2278
  clickyFormatForMarkdownPreview,
@@ -2290,6 +2305,8 @@ export {
2290
2305
  createTestRunnerRegistry,
2291
2306
  createUnitFormExtensions,
2292
2307
  cycleFilterState,
2308
+ dataNodeBacking,
2309
+ dataNodeStatus,
2293
2310
  debugCaptureHeaders,
2294
2311
  debugConsoleAvailable,
2295
2312
  debugConsoleOpen,
@@ -2330,6 +2347,7 @@ export {
2330
2347
  foldersFirst,
2331
2348
  formatBytes,
2332
2349
  formatBytesPerSecond,
2350
+ formatExclude as formatCallGraphExclude,
2333
2351
  formatCount,
2334
2352
  formatDateTimeRelative,
2335
2353
  formatDuration,
@@ -2364,9 +2382,11 @@ export {
2364
2382
  humanizeName,
2365
2383
  iconsByConsumerName,
2366
2384
  inferColumns,
2385
+ interfaceMethods,
2367
2386
  isApplicationStackFrame,
2368
2387
  isConnectionLoggingCapability,
2369
2388
  isCountryCode,
2389
+ isDataNode,
2370
2390
  isFailedOrWarn,
2371
2391
  isFlatMetadata,
2372
2392
  isGroupCollapsedByDefault,
@@ -2395,11 +2415,13 @@ export {
2395
2415
  makeSurfaceDefinition,
2396
2416
  markdownDocumentStats,
2397
2417
  matchMentionsInBody,
2418
+ matchesExclude as matchesCallGraphExclude,
2398
2419
  matchesFilterState,
2399
2420
  matchesIf,
2400
2421
  matchingTools,
2401
2422
  mediaMatches,
2402
2423
  memoryTourStorage,
2424
+ mergeGraph as mergeCallGraph,
2403
2425
  mergeRuntimeSpec,
2404
2426
  mergeSeries,
2405
2427
  metadataEntries,
@@ -2422,6 +2444,7 @@ export {
2422
2444
  onMediaChange,
2423
2445
  paletteClass,
2424
2446
  parseBoundsValue,
2447
+ parseExclude as parseCallGraphExclude,
2425
2448
  parseDiagnosticsStackTrace,
2426
2449
  parseDurationBoundsValue,
2427
2450
  parseEndpointValue,
@@ -2539,6 +2562,7 @@ export {
2539
2562
  taskStatusIcon,
2540
2563
  templateValuePre,
2541
2564
  testStatus,
2565
+ toggleAccess as toggleCallGraphAccess,
2542
2566
  toneToBadgeTone,
2543
2567
  toolFieldSuggestions,
2544
2568
  totalDuration,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -61,6 +61,7 @@ function Workspace({
61
61
  onValueChange,
62
62
  storageKey,
63
63
  slots,
64
+ collapsedSides,
64
65
  className
65
66
  }) {
66
67
  Workspace_model.validateWorkspacePanes(panes);
@@ -131,6 +132,14 @@ function Workspace({
131
132
  if (storageKey && value === void 0)
132
133
  Workspace_model.writeWorkspaceLayoutState(storageKey, internal);
133
134
  }, [internal, storageKey, value]);
135
+ const held = (location) => (collapsedSides == null ? void 0 : collapsedSides.includes(location)) ?? false;
136
+ const shown = (collapsedSides == null ? void 0 : collapsedSides.length) ? {
137
+ ...state,
138
+ sideCollapsed: {
139
+ left: held("left") || state.sideCollapsed.left,
140
+ right: held("right") || state.sideCollapsed.right
141
+ }
142
+ } : state;
134
143
  return /* @__PURE__ */ jsxRuntime.jsxs(
135
144
  "div",
136
145
  {
@@ -142,8 +151,8 @@ function Workspace({
142
151
  /* @__PURE__ */ jsxRuntime.jsx(
143
152
  WorkspaceTopRight,
144
153
  {
145
- hasLeft: groups.left.length > 0,
146
- hasRight: groups.right.length > 0,
154
+ hasLeft: groups.left.length > 0 && !held("left"),
155
+ hasRight: groups.right.length > 0 && !held("right"),
147
156
  ...slots ? { slots } : {},
148
157
  state,
149
158
  update
@@ -154,7 +163,7 @@ function Workspace({
154
163
  {
155
164
  location: "left",
156
165
  panes: groups.left,
157
- state,
166
+ state: shown,
158
167
  update
159
168
  }
160
169
  ),
@@ -171,7 +180,7 @@ function Workspace({
171
180
  {
172
181
  location: "right",
173
182
  panes: groups.right,
174
- state,
183
+ state: shown,
175
184
  update
176
185
  }
177
186
  ),
@@ -1 +1 @@
1
- {"version":3,"file":"Workspace.cjs","sources":["../../src/layout/Workspace.tsx"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport { UiSidebar } from \"../icons\";\nimport { cn } from \"../lib/utils\";\nimport {\n createWorkspaceLayoutState,\n readWorkspaceLayoutState,\n validateWorkspacePanes,\n writeWorkspaceLayoutState,\n type WorkspaceLayoutDefaults,\n type WorkspaceLayoutState,\n type WorkspacePaneSpec,\n} from \"./Workspace.model\";\nimport {\n WorkspaceSideRegion,\n WorkspaceSingleRegion,\n type WorkspaceUpdate,\n} from \"./Workspace.regions\";\n\nexport type {\n WorkspaceLayoutDefaults,\n WorkspaceLayoutState,\n WorkspacePaneLocation,\n WorkspacePaneSlots,\n WorkspacePaneSpec,\n WorkspaceSideLocation,\n} from \"./Workspace.model\";\n\nexport type WorkspaceSlots = {\n topRightActions?: ReactNode;\n};\n\nexport type WorkspaceProps = {\n panes: WorkspacePaneSpec[];\n value?: WorkspaceLayoutState;\n defaultValue?: WorkspaceLayoutDefaults;\n onValueChange?: (value: WorkspaceLayoutState) => void;\n storageKey?: string;\n slots?: WorkspaceSlots;\n className?: string;\n};\n\ntype WorkspaceTopRightProps = {\n hasLeft: boolean;\n hasRight: boolean;\n slots?: WorkspaceSlots;\n state: WorkspaceLayoutState;\n update: WorkspaceUpdate;\n};\n\nfunction WorkspaceTopRight({\n hasLeft,\n hasRight,\n slots,\n state,\n update,\n}: WorkspaceTopRightProps) {\n if (!hasLeft && !hasRight && !slots?.topRightActions) return null;\n const toggleSide = (location: \"left\" | \"right\") =>\n update((current) => ({\n ...current,\n sideCollapsed: {\n ...current.sideCollapsed,\n [location]: !current.sideCollapsed[location],\n },\n }));\n return (\n <div\n data-testid=\"workspace-top-right\"\n className=\"absolute right-1 top-1 z-30 flex h-7 items-center gap-1 rounded bg-muted/90 px-1 shadow-sm backdrop-blur\"\n >\n {slots?.topRightActions}\n {hasLeft && (\n <button\n type=\"button\"\n className=\"inline-flex size-6 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n aria-expanded={!state.sideCollapsed.left}\n aria-label={`${state.sideCollapsed.left ? \"Expand\" : \"Collapse\"} left side`}\n onClick={() => toggleSide(\"left\")}\n >\n <UiSidebar className=\"size-4\" />\n </button>\n )}\n {hasRight && (\n <button\n type=\"button\"\n className=\"inline-flex size-6 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n aria-expanded={!state.sideCollapsed.right}\n aria-label={`${state.sideCollapsed.right ? \"Expand\" : \"Collapse\"} right side`}\n onClick={() => toggleSide(\"right\")}\n >\n <UiSidebar className=\"size-4 -scale-x-100\" />\n </button>\n )}\n </div>\n );\n}\n\nexport function Workspace({\n panes,\n value,\n defaultValue = {},\n onValueChange,\n storageKey,\n slots,\n className,\n}: WorkspaceProps) {\n validateWorkspacePanes(panes);\n if (value !== undefined && storageKey !== undefined) {\n throw new Error(\"Workspace cannot combine value with storageKey\");\n }\n const [internal, setInternal] = useState(() =>\n storageKey\n ? readWorkspaceLayoutState(storageKey, panes, defaultValue)\n : createWorkspaceLayoutState(panes, defaultValue),\n );\n const seenLocations = useRef(new Set(panes.map((pane) => pane.location)));\n const seenPaneIds = useRef(new Set(panes.map((pane) => pane.id)));\n const state = value ?? internal;\n const groups = useMemo(\n () => ({\n left: panes.filter((pane) => pane.location === \"left\"),\n center: panes.find(\n (pane) => pane.location === \"center\",\n ) as WorkspacePaneSpec,\n right: panes.filter((pane) => pane.location === \"right\"),\n bottom: panes.find((pane) => pane.location === \"bottom\"),\n }),\n [panes],\n );\n\n useLayoutEffect(() => {\n const addedLocations = new Set(\n panes\n .map((pane) => pane.location)\n .filter((location) => !seenLocations.current.has(location)),\n );\n const addedPanes = panes.filter(\n (pane) => !seenPaneIds.current.has(pane.id),\n );\n panes.forEach((pane) => {\n seenLocations.current.add(pane.location);\n seenPaneIds.current.add(pane.id);\n });\n if (\n value !== undefined ||\n (addedLocations.size === 0 && addedPanes.length === 0)\n )\n return;\n const defaults = createWorkspaceLayoutState(panes, defaultValue);\n const addedStackHeights = addedPanes.reduce<Record<string, number>>(\n (heights, pane) => {\n if (pane.height !== undefined) heights[pane.id] = pane.height;\n return heights;\n },\n {},\n );\n setInternal((current) => ({\n ...current,\n ...(addedLocations.has(\"left\") ? { leftWidth: defaults.leftWidth } : {}),\n ...(addedLocations.has(\"right\")\n ? { rightWidth: defaults.rightWidth }\n : {}),\n ...(addedLocations.has(\"bottom\")\n ? { bottomHeight: defaults.bottomHeight }\n : {}),\n stackHeights: { ...current.stackHeights, ...addedStackHeights },\n collapsed: {\n ...current.collapsed,\n ...Object.fromEntries(\n addedPanes.map((pane) => [pane.id, pane.defaultCollapsed ?? false]),\n ),\n },\n }));\n }, [defaultValue, panes, value]);\n\n const update = useCallback<WorkspaceUpdate>(\n (change) => {\n const next = change(state);\n if (value === undefined) setInternal(next);\n onValueChange?.(next);\n },\n [onValueChange, state, value],\n );\n\n useEffect(() => {\n if (storageKey && value === undefined)\n writeWorkspaceLayoutState(storageKey, internal);\n }, [internal, storageKey, value]);\n\n return (\n <div\n className={cn(\n \"relative grid min-h-0 w-full grid-cols-1 overflow-auto bg-background md:h-full md:grid-cols-[auto_minmax(0,1fr)_auto] md:grid-rows-[minmax(0,1fr)_auto] md:overflow-hidden\",\n className,\n )}\n >\n <WorkspaceTopRight\n hasLeft={groups.left.length > 0}\n hasRight={groups.right.length > 0}\n {...(slots ? { slots } : {})}\n state={state}\n update={update}\n />\n <WorkspaceSideRegion\n location=\"left\"\n panes={groups.left}\n state={state}\n update={update}\n />\n <WorkspaceSingleRegion\n pane={groups.center}\n state={state}\n update={update}\n />\n <WorkspaceSideRegion\n location=\"right\"\n panes={groups.right}\n state={state}\n update={update}\n />\n {groups.bottom && (\n <WorkspaceSingleRegion\n pane={groups.bottom}\n state={state}\n update={update}\n />\n )}\n </div>\n );\n}\n"],"names":["jsxs","jsx","UiSidebar","validateWorkspacePanes","useState","readWorkspaceLayoutState","createWorkspaceLayoutState","useRef","useMemo","useLayoutEffect","useCallback","useEffect","writeWorkspaceLayoutState","cn","WorkspaceSideRegion","WorkspaceSingleRegion"],"mappings":"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"}
1
+ {"version":3,"file":"Workspace.cjs","sources":["../../src/layout/Workspace.tsx"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport { UiSidebar } from \"../icons\";\nimport { cn } from \"../lib/utils\";\nimport {\n createWorkspaceLayoutState,\n readWorkspaceLayoutState,\n validateWorkspacePanes,\n writeWorkspaceLayoutState,\n type WorkspaceLayoutDefaults,\n type WorkspaceLayoutState,\n type WorkspacePaneSpec,\n type WorkspaceSideLocation,\n} from \"./Workspace.model\";\nimport {\n WorkspaceSideRegion,\n WorkspaceSingleRegion,\n type WorkspaceUpdate,\n} from \"./Workspace.regions\";\n\nexport type {\n WorkspaceLayoutDefaults,\n WorkspaceLayoutState,\n WorkspacePaneLocation,\n WorkspacePaneSlots,\n WorkspacePaneSpec,\n WorkspaceSideLocation,\n} from \"./Workspace.model\";\n\nexport type WorkspaceSlots = {\n topRightActions?: ReactNode;\n};\n\nexport type WorkspaceProps = {\n panes: WorkspacePaneSpec[];\n value?: WorkspaceLayoutState;\n defaultValue?: WorkspaceLayoutDefaults;\n onValueChange?: (value: WorkspaceLayoutState) => void;\n storageKey?: string;\n slots?: WorkspaceSlots;\n /**\n * Sides the host holds collapsed for now, such as while the center shows something that needs the\n * full width: they render collapsed and lose their toggle, and the layout state keeps how they were.\n */\n collapsedSides?: WorkspaceSideLocation[];\n className?: string;\n};\n\ntype WorkspaceTopRightProps = {\n hasLeft: boolean;\n hasRight: boolean;\n slots?: WorkspaceSlots;\n state: WorkspaceLayoutState;\n update: WorkspaceUpdate;\n};\n\nfunction WorkspaceTopRight({\n hasLeft,\n hasRight,\n slots,\n state,\n update,\n}: WorkspaceTopRightProps) {\n if (!hasLeft && !hasRight && !slots?.topRightActions) return null;\n const toggleSide = (location: \"left\" | \"right\") =>\n update((current) => ({\n ...current,\n sideCollapsed: {\n ...current.sideCollapsed,\n [location]: !current.sideCollapsed[location],\n },\n }));\n return (\n <div\n data-testid=\"workspace-top-right\"\n className=\"absolute right-1 top-1 z-30 flex h-7 items-center gap-1 rounded bg-muted/90 px-1 shadow-sm backdrop-blur\"\n >\n {slots?.topRightActions}\n {hasLeft && (\n <button\n type=\"button\"\n className=\"inline-flex size-6 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n aria-expanded={!state.sideCollapsed.left}\n aria-label={`${state.sideCollapsed.left ? \"Expand\" : \"Collapse\"} left side`}\n onClick={() => toggleSide(\"left\")}\n >\n <UiSidebar className=\"size-4\" />\n </button>\n )}\n {hasRight && (\n <button\n type=\"button\"\n className=\"inline-flex size-6 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n aria-expanded={!state.sideCollapsed.right}\n aria-label={`${state.sideCollapsed.right ? \"Expand\" : \"Collapse\"} right side`}\n onClick={() => toggleSide(\"right\")}\n >\n <UiSidebar className=\"size-4 -scale-x-100\" />\n </button>\n )}\n </div>\n );\n}\n\nexport function Workspace({\n panes,\n value,\n defaultValue = {},\n onValueChange,\n storageKey,\n slots,\n collapsedSides,\n className,\n}: WorkspaceProps) {\n validateWorkspacePanes(panes);\n if (value !== undefined && storageKey !== undefined) {\n throw new Error(\"Workspace cannot combine value with storageKey\");\n }\n const [internal, setInternal] = useState(() =>\n storageKey\n ? readWorkspaceLayoutState(storageKey, panes, defaultValue)\n : createWorkspaceLayoutState(panes, defaultValue),\n );\n const seenLocations = useRef(new Set(panes.map((pane) => pane.location)));\n const seenPaneIds = useRef(new Set(panes.map((pane) => pane.id)));\n const state = value ?? internal;\n const groups = useMemo(\n () => ({\n left: panes.filter((pane) => pane.location === \"left\"),\n center: panes.find(\n (pane) => pane.location === \"center\",\n ) as WorkspacePaneSpec,\n right: panes.filter((pane) => pane.location === \"right\"),\n bottom: panes.find((pane) => pane.location === \"bottom\"),\n }),\n [panes],\n );\n\n useLayoutEffect(() => {\n const addedLocations = new Set(\n panes\n .map((pane) => pane.location)\n .filter((location) => !seenLocations.current.has(location)),\n );\n const addedPanes = panes.filter(\n (pane) => !seenPaneIds.current.has(pane.id),\n );\n panes.forEach((pane) => {\n seenLocations.current.add(pane.location);\n seenPaneIds.current.add(pane.id);\n });\n if (\n value !== undefined ||\n (addedLocations.size === 0 && addedPanes.length === 0)\n )\n return;\n const defaults = createWorkspaceLayoutState(panes, defaultValue);\n const addedStackHeights = addedPanes.reduce<Record<string, number>>(\n (heights, pane) => {\n if (pane.height !== undefined) heights[pane.id] = pane.height;\n return heights;\n },\n {},\n );\n setInternal((current) => ({\n ...current,\n ...(addedLocations.has(\"left\") ? { leftWidth: defaults.leftWidth } : {}),\n ...(addedLocations.has(\"right\")\n ? { rightWidth: defaults.rightWidth }\n : {}),\n ...(addedLocations.has(\"bottom\")\n ? { bottomHeight: defaults.bottomHeight }\n : {}),\n stackHeights: { ...current.stackHeights, ...addedStackHeights },\n collapsed: {\n ...current.collapsed,\n ...Object.fromEntries(\n addedPanes.map((pane) => [pane.id, pane.defaultCollapsed ?? false]),\n ),\n },\n }));\n }, [defaultValue, panes, value]);\n\n const update = useCallback<WorkspaceUpdate>(\n (change) => {\n const next = change(state);\n if (value === undefined) setInternal(next);\n onValueChange?.(next);\n },\n [onValueChange, state, value],\n );\n\n useEffect(() => {\n if (storageKey && value === undefined)\n writeWorkspaceLayoutState(storageKey, internal);\n }, [internal, storageKey, value]);\n\n const held = (location: WorkspaceSideLocation) =>\n collapsedSides?.includes(location) ?? false;\n const shown: WorkspaceLayoutState = collapsedSides?.length\n ? {\n ...state,\n sideCollapsed: {\n left: held(\"left\") || state.sideCollapsed.left,\n right: held(\"right\") || state.sideCollapsed.right,\n },\n }\n : state;\n\n return (\n <div\n className={cn(\n \"relative grid min-h-0 w-full grid-cols-1 overflow-auto bg-background md:h-full md:grid-cols-[auto_minmax(0,1fr)_auto] md:grid-rows-[minmax(0,1fr)_auto] md:overflow-hidden\",\n className,\n )}\n >\n <WorkspaceTopRight\n hasLeft={groups.left.length > 0 && !held(\"left\")}\n hasRight={groups.right.length > 0 && !held(\"right\")}\n {...(slots ? { slots } : {})}\n state={state}\n update={update}\n />\n <WorkspaceSideRegion\n location=\"left\"\n panes={groups.left}\n state={shown}\n update={update}\n />\n <WorkspaceSingleRegion\n pane={groups.center}\n state={state}\n update={update}\n />\n <WorkspaceSideRegion\n location=\"right\"\n panes={groups.right}\n state={shown}\n update={update}\n />\n {groups.bottom && (\n <WorkspaceSingleRegion\n pane={groups.bottom}\n state={state}\n update={update}\n />\n )}\n </div>\n );\n}\n"],"names":["jsxs","jsx","UiSidebar","validateWorkspacePanes","useState","readWorkspaceLayoutState","createWorkspaceLayoutState","useRef","useMemo","useLayoutEffect","useCallback","useEffect","writeWorkspaceLayoutState","cn","WorkspaceSideRegion","WorkspaceSingleRegion"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { ReactNode } from 'react';
2
- import { WorkspaceLayoutDefaults, WorkspaceLayoutState, WorkspacePaneSpec } from './Workspace.model.js';
2
+ import { WorkspaceLayoutDefaults, WorkspaceLayoutState, WorkspacePaneSpec, WorkspaceSideLocation } from './Workspace.model.js';
3
3
  export type { WorkspaceLayoutDefaults, WorkspaceLayoutState, WorkspacePaneLocation, WorkspacePaneSlots, WorkspacePaneSpec, WorkspaceSideLocation, } from './Workspace.model.js';
4
4
  export type WorkspaceSlots = {
5
5
  topRightActions?: ReactNode;
@@ -11,7 +11,12 @@ export type WorkspaceProps = {
11
11
  onValueChange?: (value: WorkspaceLayoutState) => void;
12
12
  storageKey?: string;
13
13
  slots?: WorkspaceSlots;
14
+ /**
15
+ * Sides the host holds collapsed for now, such as while the center shows something that needs the
16
+ * full width: they render collapsed and lose their toggle, and the layout state keeps how they were.
17
+ */
18
+ collapsedSides?: WorkspaceSideLocation[];
14
19
  className?: string;
15
20
  };
16
- export declare function Workspace({ panes, value, defaultValue, onValueChange, storageKey, slots, className, }: WorkspaceProps): import("react").JSX.Element;
21
+ export declare function Workspace({ panes, value, defaultValue, onValueChange, storageKey, slots, collapsedSides, className, }: WorkspaceProps): import("react").JSX.Element;
17
22
  //# sourceMappingURL=Workspace.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Workspace.d.ts","sourceRoot":"","sources":["../../src/layout/Workspace.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,EAKL,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAO3B,YAAY,EACV,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,cAAc,GAAG;IAC3B,eAAe,CAAC,EAAE,SAAS,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,oBAAoB,CAAC;IAC7B,YAAY,CAAC,EAAE,uBAAuB,CAAC;IACvC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AA0DF,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,YAAiB,EACjB,aAAa,EACb,UAAU,EACV,KAAK,EACL,SAAS,GACV,EAAE,cAAc,+BA4HhB"}
1
+ {"version":3,"file":"Workspace.d.ts","sourceRoot":"","sources":["../../src/layout/Workspace.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,EAKL,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC3B,MAAM,mBAAmB,CAAC;AAO3B,YAAY,EACV,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,cAAc,GAAG;IAC3B,eAAe,CAAC,EAAE,SAAS,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,oBAAoB,CAAC;IAC7B,YAAY,CAAC,EAAE,uBAAuB,CAAC;IACvC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB;;;OAGG;IACH,cAAc,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AA0DF,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,YAAiB,EACjB,aAAa,EACb,UAAU,EACV,KAAK,EACL,cAAc,EACd,SAAS,GACV,EAAE,cAAc,+BAwIhB"}
@@ -59,6 +59,7 @@ function Workspace({
59
59
  onValueChange,
60
60
  storageKey,
61
61
  slots,
62
+ collapsedSides,
62
63
  className
63
64
  }) {
64
65
  validateWorkspacePanes(panes);
@@ -129,6 +130,14 @@ function Workspace({
129
130
  if (storageKey && value === void 0)
130
131
  writeWorkspaceLayoutState(storageKey, internal);
131
132
  }, [internal, storageKey, value]);
133
+ const held = (location) => (collapsedSides == null ? void 0 : collapsedSides.includes(location)) ?? false;
134
+ const shown = (collapsedSides == null ? void 0 : collapsedSides.length) ? {
135
+ ...state,
136
+ sideCollapsed: {
137
+ left: held("left") || state.sideCollapsed.left,
138
+ right: held("right") || state.sideCollapsed.right
139
+ }
140
+ } : state;
132
141
  return /* @__PURE__ */ jsxs(
133
142
  "div",
134
143
  {
@@ -140,8 +149,8 @@ function Workspace({
140
149
  /* @__PURE__ */ jsx(
141
150
  WorkspaceTopRight,
142
151
  {
143
- hasLeft: groups.left.length > 0,
144
- hasRight: groups.right.length > 0,
152
+ hasLeft: groups.left.length > 0 && !held("left"),
153
+ hasRight: groups.right.length > 0 && !held("right"),
145
154
  ...slots ? { slots } : {},
146
155
  state,
147
156
  update
@@ -152,7 +161,7 @@ function Workspace({
152
161
  {
153
162
  location: "left",
154
163
  panes: groups.left,
155
- state,
164
+ state: shown,
156
165
  update
157
166
  }
158
167
  ),
@@ -169,7 +178,7 @@ function Workspace({
169
178
  {
170
179
  location: "right",
171
180
  panes: groups.right,
172
- state,
181
+ state: shown,
173
182
  update
174
183
  }
175
184
  ),
@@ -1 +1 @@
1
- {"version":3,"file":"Workspace.js","sources":["../../src/layout/Workspace.tsx"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport { UiSidebar } from \"../icons\";\nimport { cn } from \"../lib/utils\";\nimport {\n createWorkspaceLayoutState,\n readWorkspaceLayoutState,\n validateWorkspacePanes,\n writeWorkspaceLayoutState,\n type WorkspaceLayoutDefaults,\n type WorkspaceLayoutState,\n type WorkspacePaneSpec,\n} from \"./Workspace.model\";\nimport {\n WorkspaceSideRegion,\n WorkspaceSingleRegion,\n type WorkspaceUpdate,\n} from \"./Workspace.regions\";\n\nexport type {\n WorkspaceLayoutDefaults,\n WorkspaceLayoutState,\n WorkspacePaneLocation,\n WorkspacePaneSlots,\n WorkspacePaneSpec,\n WorkspaceSideLocation,\n} from \"./Workspace.model\";\n\nexport type WorkspaceSlots = {\n topRightActions?: ReactNode;\n};\n\nexport type WorkspaceProps = {\n panes: WorkspacePaneSpec[];\n value?: WorkspaceLayoutState;\n defaultValue?: WorkspaceLayoutDefaults;\n onValueChange?: (value: WorkspaceLayoutState) => void;\n storageKey?: string;\n slots?: WorkspaceSlots;\n className?: string;\n};\n\ntype WorkspaceTopRightProps = {\n hasLeft: boolean;\n hasRight: boolean;\n slots?: WorkspaceSlots;\n state: WorkspaceLayoutState;\n update: WorkspaceUpdate;\n};\n\nfunction WorkspaceTopRight({\n hasLeft,\n hasRight,\n slots,\n state,\n update,\n}: WorkspaceTopRightProps) {\n if (!hasLeft && !hasRight && !slots?.topRightActions) return null;\n const toggleSide = (location: \"left\" | \"right\") =>\n update((current) => ({\n ...current,\n sideCollapsed: {\n ...current.sideCollapsed,\n [location]: !current.sideCollapsed[location],\n },\n }));\n return (\n <div\n data-testid=\"workspace-top-right\"\n className=\"absolute right-1 top-1 z-30 flex h-7 items-center gap-1 rounded bg-muted/90 px-1 shadow-sm backdrop-blur\"\n >\n {slots?.topRightActions}\n {hasLeft && (\n <button\n type=\"button\"\n className=\"inline-flex size-6 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n aria-expanded={!state.sideCollapsed.left}\n aria-label={`${state.sideCollapsed.left ? \"Expand\" : \"Collapse\"} left side`}\n onClick={() => toggleSide(\"left\")}\n >\n <UiSidebar className=\"size-4\" />\n </button>\n )}\n {hasRight && (\n <button\n type=\"button\"\n className=\"inline-flex size-6 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n aria-expanded={!state.sideCollapsed.right}\n aria-label={`${state.sideCollapsed.right ? \"Expand\" : \"Collapse\"} right side`}\n onClick={() => toggleSide(\"right\")}\n >\n <UiSidebar className=\"size-4 -scale-x-100\" />\n </button>\n )}\n </div>\n );\n}\n\nexport function Workspace({\n panes,\n value,\n defaultValue = {},\n onValueChange,\n storageKey,\n slots,\n className,\n}: WorkspaceProps) {\n validateWorkspacePanes(panes);\n if (value !== undefined && storageKey !== undefined) {\n throw new Error(\"Workspace cannot combine value with storageKey\");\n }\n const [internal, setInternal] = useState(() =>\n storageKey\n ? readWorkspaceLayoutState(storageKey, panes, defaultValue)\n : createWorkspaceLayoutState(panes, defaultValue),\n );\n const seenLocations = useRef(new Set(panes.map((pane) => pane.location)));\n const seenPaneIds = useRef(new Set(panes.map((pane) => pane.id)));\n const state = value ?? internal;\n const groups = useMemo(\n () => ({\n left: panes.filter((pane) => pane.location === \"left\"),\n center: panes.find(\n (pane) => pane.location === \"center\",\n ) as WorkspacePaneSpec,\n right: panes.filter((pane) => pane.location === \"right\"),\n bottom: panes.find((pane) => pane.location === \"bottom\"),\n }),\n [panes],\n );\n\n useLayoutEffect(() => {\n const addedLocations = new Set(\n panes\n .map((pane) => pane.location)\n .filter((location) => !seenLocations.current.has(location)),\n );\n const addedPanes = panes.filter(\n (pane) => !seenPaneIds.current.has(pane.id),\n );\n panes.forEach((pane) => {\n seenLocations.current.add(pane.location);\n seenPaneIds.current.add(pane.id);\n });\n if (\n value !== undefined ||\n (addedLocations.size === 0 && addedPanes.length === 0)\n )\n return;\n const defaults = createWorkspaceLayoutState(panes, defaultValue);\n const addedStackHeights = addedPanes.reduce<Record<string, number>>(\n (heights, pane) => {\n if (pane.height !== undefined) heights[pane.id] = pane.height;\n return heights;\n },\n {},\n );\n setInternal((current) => ({\n ...current,\n ...(addedLocations.has(\"left\") ? { leftWidth: defaults.leftWidth } : {}),\n ...(addedLocations.has(\"right\")\n ? { rightWidth: defaults.rightWidth }\n : {}),\n ...(addedLocations.has(\"bottom\")\n ? { bottomHeight: defaults.bottomHeight }\n : {}),\n stackHeights: { ...current.stackHeights, ...addedStackHeights },\n collapsed: {\n ...current.collapsed,\n ...Object.fromEntries(\n addedPanes.map((pane) => [pane.id, pane.defaultCollapsed ?? false]),\n ),\n },\n }));\n }, [defaultValue, panes, value]);\n\n const update = useCallback<WorkspaceUpdate>(\n (change) => {\n const next = change(state);\n if (value === undefined) setInternal(next);\n onValueChange?.(next);\n },\n [onValueChange, state, value],\n );\n\n useEffect(() => {\n if (storageKey && value === undefined)\n writeWorkspaceLayoutState(storageKey, internal);\n }, [internal, storageKey, value]);\n\n return (\n <div\n className={cn(\n \"relative grid min-h-0 w-full grid-cols-1 overflow-auto bg-background md:h-full md:grid-cols-[auto_minmax(0,1fr)_auto] md:grid-rows-[minmax(0,1fr)_auto] md:overflow-hidden\",\n className,\n )}\n >\n <WorkspaceTopRight\n hasLeft={groups.left.length > 0}\n hasRight={groups.right.length > 0}\n {...(slots ? { slots } : {})}\n state={state}\n update={update}\n />\n <WorkspaceSideRegion\n location=\"left\"\n panes={groups.left}\n state={state}\n update={update}\n />\n <WorkspaceSingleRegion\n pane={groups.center}\n state={state}\n update={update}\n />\n <WorkspaceSideRegion\n location=\"right\"\n panes={groups.right}\n state={state}\n update={update}\n />\n {groups.bottom && (\n <WorkspaceSingleRegion\n pane={groups.bottom}\n state={state}\n update={update}\n />\n )}\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;AAyDA,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA2B;AACzB,MAAI,CAAC,WAAW,CAAC,YAAY,EAAC,+BAAO,iBAAiB,QAAO;AAC7D,QAAM,aAAa,CAAC,aAClB,OAAO,CAAC,aAAa;AAAA,IACnB,GAAG;AAAA,IACH,eAAe;AAAA,MACb,GAAG,QAAQ;AAAA,MACX,CAAC,QAAQ,GAAG,CAAC,QAAQ,cAAc,QAAQ;AAAA,IAAA;AAAA,EAC7C,EACA;AACJ,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAY;AAAA,MACZ,WAAU;AAAA,MAET,UAAA;AAAA,QAAA,+BAAO;AAAA,QACP,WACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAU;AAAA,YACV,iBAAe,CAAC,MAAM,cAAc;AAAA,YACpC,cAAY,GAAG,MAAM,cAAc,OAAO,WAAW,UAAU;AAAA,YAC/D,SAAS,MAAM,WAAW,MAAM;AAAA,YAEhC,UAAA,oBAAC,WAAA,EAAU,WAAU,SAAA,CAAS;AAAA,UAAA;AAAA,QAAA;AAAA,QAGjC,YACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAU;AAAA,YACV,iBAAe,CAAC,MAAM,cAAc;AAAA,YACpC,cAAY,GAAG,MAAM,cAAc,QAAQ,WAAW,UAAU;AAAA,YAChE,SAAS,MAAM,WAAW,OAAO;AAAA,YAEjC,UAAA,oBAAC,WAAA,EAAU,WAAU,sBAAA,CAAsB;AAAA,UAAA;AAAA,QAAA;AAAA,MAC7C;AAAA,IAAA;AAAA,EAAA;AAIR;AAEO,SAAS,UAAU;AAAA,EACxB;AAAA,EACA;AAAA,EACA,eAAe,CAAA;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAmB;AACjB,yBAAuB,KAAK;AAC5B,MAAI,UAAU,UAAa,eAAe,QAAW;AACnD,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AACA,QAAM,CAAC,UAAU,WAAW,IAAI;AAAA,IAAS,MACvC,aACI,yBAAyB,YAAY,OAAO,YAAY,IACxD,2BAA2B,OAAO,YAAY;AAAA,EAAA;AAEpD,QAAM,gBAAgB,OAAO,IAAI,IAAI,MAAM,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC;AACxE,QAAM,cAAc,OAAO,IAAI,IAAI,MAAM,IAAI,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC;AAChE,QAAM,QAAQ,SAAS;AACvB,QAAM,SAAS;AAAA,IACb,OAAO;AAAA,MACL,MAAM,MAAM,OAAO,CAAC,SAAS,KAAK,aAAa,MAAM;AAAA,MACrD,QAAQ,MAAM;AAAA,QACZ,CAAC,SAAS,KAAK,aAAa;AAAA,MAAA;AAAA,MAE9B,OAAO,MAAM,OAAO,CAAC,SAAS,KAAK,aAAa,OAAO;AAAA,MACvD,QAAQ,MAAM,KAAK,CAAC,SAAS,KAAK,aAAa,QAAQ;AAAA,IAAA;AAAA,IAEzD,CAAC,KAAK;AAAA,EAAA;AAGR,kBAAgB,MAAM;AACpB,UAAM,iBAAiB,IAAI;AAAA,MACzB,MACG,IAAI,CAAC,SAAS,KAAK,QAAQ,EAC3B,OAAO,CAAC,aAAa,CAAC,cAAc,QAAQ,IAAI,QAAQ,CAAC;AAAA,IAAA;AAE9D,UAAM,aAAa,MAAM;AAAA,MACvB,CAAC,SAAS,CAAC,YAAY,QAAQ,IAAI,KAAK,EAAE;AAAA,IAAA;AAE5C,UAAM,QAAQ,CAAC,SAAS;AACtB,oBAAc,QAAQ,IAAI,KAAK,QAAQ;AACvC,kBAAY,QAAQ,IAAI,KAAK,EAAE;AAAA,IACjC,CAAC;AACD,QACE,UAAU,UACT,eAAe,SAAS,KAAK,WAAW,WAAW;AAEpD;AACF,UAAM,WAAW,2BAA2B,OAAO,YAAY;AAC/D,UAAM,oBAAoB,WAAW;AAAA,MACnC,CAAC,SAAS,SAAS;AACjB,YAAI,KAAK,WAAW,gBAAmB,KAAK,EAAE,IAAI,KAAK;AACvD,eAAO;AAAA,MACT;AAAA,MACA,CAAA;AAAA,IAAC;AAEH,gBAAY,CAAC,aAAa;AAAA,MACxB,GAAG;AAAA,MACH,GAAI,eAAe,IAAI,MAAM,IAAI,EAAE,WAAW,SAAS,UAAA,IAAc,CAAA;AAAA,MACrE,GAAI,eAAe,IAAI,OAAO,IAC1B,EAAE,YAAY,SAAS,WAAA,IACvB,CAAA;AAAA,MACJ,GAAI,eAAe,IAAI,QAAQ,IAC3B,EAAE,cAAc,SAAS,aAAA,IACzB,CAAA;AAAA,MACJ,cAAc,EAAE,GAAG,QAAQ,cAAc,GAAG,kBAAA;AAAA,MAC5C,WAAW;AAAA,QACT,GAAG,QAAQ;AAAA,QACX,GAAG,OAAO;AAAA,UACR,WAAW,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,KAAK,oBAAoB,KAAK,CAAC;AAAA,QAAA;AAAA,MACpE;AAAA,IACF,EACA;AAAA,EACJ,GAAG,CAAC,cAAc,OAAO,KAAK,CAAC;AAE/B,QAAM,SAAS;AAAA,IACb,CAAC,WAAW;AACV,YAAM,OAAO,OAAO,KAAK;AACzB,UAAI,UAAU,OAAW,aAAY,IAAI;AACzC,qDAAgB;AAAA,IAClB;AAAA,IACA,CAAC,eAAe,OAAO,KAAK;AAAA,EAAA;AAG9B,YAAU,MAAM;AACd,QAAI,cAAc,UAAU;AAC1B,gCAA0B,YAAY,QAAQ;AAAA,EAClD,GAAG,CAAC,UAAU,YAAY,KAAK,CAAC;AAEhC,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAGF,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAAS,OAAO,KAAK,SAAS;AAAA,YAC9B,UAAU,OAAO,MAAM,SAAS;AAAA,YAC/B,GAAI,QAAQ,EAAE,MAAA,IAAU,CAAA;AAAA,YACzB;AAAA,YACA;AAAA,UAAA;AAAA,QAAA;AAAA,QAEF;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,UAAS;AAAA,YACT,OAAO,OAAO;AAAA,YACd;AAAA,YACA;AAAA,UAAA;AAAA,QAAA;AAAA,QAEF;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAM,OAAO;AAAA,YACb;AAAA,YACA;AAAA,UAAA;AAAA,QAAA;AAAA,QAEF;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,UAAS;AAAA,YACT,OAAO,OAAO;AAAA,YACd;AAAA,YACA;AAAA,UAAA;AAAA,QAAA;AAAA,QAED,OAAO,UACN;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAM,OAAO;AAAA,YACb;AAAA,YACA;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAIR;"}
1
+ {"version":3,"file":"Workspace.js","sources":["../../src/layout/Workspace.tsx"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport { UiSidebar } from \"../icons\";\nimport { cn } from \"../lib/utils\";\nimport {\n createWorkspaceLayoutState,\n readWorkspaceLayoutState,\n validateWorkspacePanes,\n writeWorkspaceLayoutState,\n type WorkspaceLayoutDefaults,\n type WorkspaceLayoutState,\n type WorkspacePaneSpec,\n type WorkspaceSideLocation,\n} from \"./Workspace.model\";\nimport {\n WorkspaceSideRegion,\n WorkspaceSingleRegion,\n type WorkspaceUpdate,\n} from \"./Workspace.regions\";\n\nexport type {\n WorkspaceLayoutDefaults,\n WorkspaceLayoutState,\n WorkspacePaneLocation,\n WorkspacePaneSlots,\n WorkspacePaneSpec,\n WorkspaceSideLocation,\n} from \"./Workspace.model\";\n\nexport type WorkspaceSlots = {\n topRightActions?: ReactNode;\n};\n\nexport type WorkspaceProps = {\n panes: WorkspacePaneSpec[];\n value?: WorkspaceLayoutState;\n defaultValue?: WorkspaceLayoutDefaults;\n onValueChange?: (value: WorkspaceLayoutState) => void;\n storageKey?: string;\n slots?: WorkspaceSlots;\n /**\n * Sides the host holds collapsed for now, such as while the center shows something that needs the\n * full width: they render collapsed and lose their toggle, and the layout state keeps how they were.\n */\n collapsedSides?: WorkspaceSideLocation[];\n className?: string;\n};\n\ntype WorkspaceTopRightProps = {\n hasLeft: boolean;\n hasRight: boolean;\n slots?: WorkspaceSlots;\n state: WorkspaceLayoutState;\n update: WorkspaceUpdate;\n};\n\nfunction WorkspaceTopRight({\n hasLeft,\n hasRight,\n slots,\n state,\n update,\n}: WorkspaceTopRightProps) {\n if (!hasLeft && !hasRight && !slots?.topRightActions) return null;\n const toggleSide = (location: \"left\" | \"right\") =>\n update((current) => ({\n ...current,\n sideCollapsed: {\n ...current.sideCollapsed,\n [location]: !current.sideCollapsed[location],\n },\n }));\n return (\n <div\n data-testid=\"workspace-top-right\"\n className=\"absolute right-1 top-1 z-30 flex h-7 items-center gap-1 rounded bg-muted/90 px-1 shadow-sm backdrop-blur\"\n >\n {slots?.topRightActions}\n {hasLeft && (\n <button\n type=\"button\"\n className=\"inline-flex size-6 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n aria-expanded={!state.sideCollapsed.left}\n aria-label={`${state.sideCollapsed.left ? \"Expand\" : \"Collapse\"} left side`}\n onClick={() => toggleSide(\"left\")}\n >\n <UiSidebar className=\"size-4\" />\n </button>\n )}\n {hasRight && (\n <button\n type=\"button\"\n className=\"inline-flex size-6 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n aria-expanded={!state.sideCollapsed.right}\n aria-label={`${state.sideCollapsed.right ? \"Expand\" : \"Collapse\"} right side`}\n onClick={() => toggleSide(\"right\")}\n >\n <UiSidebar className=\"size-4 -scale-x-100\" />\n </button>\n )}\n </div>\n );\n}\n\nexport function Workspace({\n panes,\n value,\n defaultValue = {},\n onValueChange,\n storageKey,\n slots,\n collapsedSides,\n className,\n}: WorkspaceProps) {\n validateWorkspacePanes(panes);\n if (value !== undefined && storageKey !== undefined) {\n throw new Error(\"Workspace cannot combine value with storageKey\");\n }\n const [internal, setInternal] = useState(() =>\n storageKey\n ? readWorkspaceLayoutState(storageKey, panes, defaultValue)\n : createWorkspaceLayoutState(panes, defaultValue),\n );\n const seenLocations = useRef(new Set(panes.map((pane) => pane.location)));\n const seenPaneIds = useRef(new Set(panes.map((pane) => pane.id)));\n const state = value ?? internal;\n const groups = useMemo(\n () => ({\n left: panes.filter((pane) => pane.location === \"left\"),\n center: panes.find(\n (pane) => pane.location === \"center\",\n ) as WorkspacePaneSpec,\n right: panes.filter((pane) => pane.location === \"right\"),\n bottom: panes.find((pane) => pane.location === \"bottom\"),\n }),\n [panes],\n );\n\n useLayoutEffect(() => {\n const addedLocations = new Set(\n panes\n .map((pane) => pane.location)\n .filter((location) => !seenLocations.current.has(location)),\n );\n const addedPanes = panes.filter(\n (pane) => !seenPaneIds.current.has(pane.id),\n );\n panes.forEach((pane) => {\n seenLocations.current.add(pane.location);\n seenPaneIds.current.add(pane.id);\n });\n if (\n value !== undefined ||\n (addedLocations.size === 0 && addedPanes.length === 0)\n )\n return;\n const defaults = createWorkspaceLayoutState(panes, defaultValue);\n const addedStackHeights = addedPanes.reduce<Record<string, number>>(\n (heights, pane) => {\n if (pane.height !== undefined) heights[pane.id] = pane.height;\n return heights;\n },\n {},\n );\n setInternal((current) => ({\n ...current,\n ...(addedLocations.has(\"left\") ? { leftWidth: defaults.leftWidth } : {}),\n ...(addedLocations.has(\"right\")\n ? { rightWidth: defaults.rightWidth }\n : {}),\n ...(addedLocations.has(\"bottom\")\n ? { bottomHeight: defaults.bottomHeight }\n : {}),\n stackHeights: { ...current.stackHeights, ...addedStackHeights },\n collapsed: {\n ...current.collapsed,\n ...Object.fromEntries(\n addedPanes.map((pane) => [pane.id, pane.defaultCollapsed ?? false]),\n ),\n },\n }));\n }, [defaultValue, panes, value]);\n\n const update = useCallback<WorkspaceUpdate>(\n (change) => {\n const next = change(state);\n if (value === undefined) setInternal(next);\n onValueChange?.(next);\n },\n [onValueChange, state, value],\n );\n\n useEffect(() => {\n if (storageKey && value === undefined)\n writeWorkspaceLayoutState(storageKey, internal);\n }, [internal, storageKey, value]);\n\n const held = (location: WorkspaceSideLocation) =>\n collapsedSides?.includes(location) ?? false;\n const shown: WorkspaceLayoutState = collapsedSides?.length\n ? {\n ...state,\n sideCollapsed: {\n left: held(\"left\") || state.sideCollapsed.left,\n right: held(\"right\") || state.sideCollapsed.right,\n },\n }\n : state;\n\n return (\n <div\n className={cn(\n \"relative grid min-h-0 w-full grid-cols-1 overflow-auto bg-background md:h-full md:grid-cols-[auto_minmax(0,1fr)_auto] md:grid-rows-[minmax(0,1fr)_auto] md:overflow-hidden\",\n className,\n )}\n >\n <WorkspaceTopRight\n hasLeft={groups.left.length > 0 && !held(\"left\")}\n hasRight={groups.right.length > 0 && !held(\"right\")}\n {...(slots ? { slots } : {})}\n state={state}\n update={update}\n />\n <WorkspaceSideRegion\n location=\"left\"\n panes={groups.left}\n state={shown}\n update={update}\n />\n <WorkspaceSingleRegion\n pane={groups.center}\n state={state}\n update={update}\n />\n <WorkspaceSideRegion\n location=\"right\"\n panes={groups.right}\n state={shown}\n update={update}\n />\n {groups.bottom && (\n <WorkspaceSingleRegion\n pane={groups.bottom}\n state={state}\n update={update}\n />\n )}\n </div>\n );\n}\n"],"names":[],"mappings":"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"}