@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
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeBarIdentity.d.ts","sourceRoot":"","sources":["../../../src/data/runtime/RuntimeBarIdentity.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAO/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAG/E,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,IAAI,EAAE,qBAAqB,CAAC;IAC5B,KAAK,EAAE,qBAAqB,EAAE,CAAC;IAC/B,MAAM,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;IAC9C,aAAa,EAAE,SAAS,GAAG,SAAS,CAAC;IACrC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC;IAC/B,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,aAAa,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAC1C,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,EACjC,OAAe,EACf,GAAG,KAAK,EACT,EAAE,uBAAuB,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,+BA8CjD"}
1
+ {"version":3,"file":"RuntimeBarIdentity.d.ts","sourceRoot":"","sources":["../../../src/data/runtime/RuntimeBarIdentity.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAO/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAG/E,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,IAAI,EAAE,qBAAqB,CAAC;IAC5B,KAAK,EAAE,qBAAqB,EAAE,CAAC;IAC/B,MAAM,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;IAC9C,aAAa,EAAE,SAAS,GAAG,SAAS,CAAC;IACrC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,aAAa,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAC1C,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,EACjC,OAAe,EACf,GAAG,KAAK,EACT,EAAE,uBAAuB,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,+BA2CjD"}
@@ -23,12 +23,9 @@ function RuntimeBarIdentity({
23
23
  "div",
24
24
  {
25
25
  "data-runtime-bar-section": measure ? void 0 : "identity",
26
- className: cn(
27
- "flex h-control-h min-w-0 items-stretch",
28
- props.variant === "combo" && "gap-1"
29
- ),
26
+ className: "flex h-control-h min-w-0 items-stretch",
30
27
  children: [
31
- measure ? /* @__PURE__ */ jsx(IdentityMeasure, { variant: props.variant, children: modeCaption }) : /* @__PURE__ */ jsx(
28
+ measure ? /* @__PURE__ */ jsx(IdentityMeasure, { children: modeCaption }) : /* @__PURE__ */ jsx(
32
29
  RuntimeSegment,
33
30
  {
34
31
  menuLabel: "Runtime mode",
@@ -43,13 +40,12 @@ function RuntimeBarIdentity({
43
40
  children: modeCaption
44
41
  }
45
42
  ),
46
- measure ? /* @__PURE__ */ jsx(IdentityMeasure, { variant: props.variant, model: true, children: /* @__PURE__ */ jsx(ModelCaption, { ...props }) }) : /* @__PURE__ */ jsx(RuntimeModelPicker, { ...props })
43
+ measure ? /* @__PURE__ */ jsx(IdentityMeasure, { model: true, children: /* @__PURE__ */ jsx(ModelCaption, { ...props }) }) : /* @__PURE__ */ jsx(RuntimeModelPicker, { ...props })
47
44
  ]
48
45
  }
49
46
  );
50
47
  }
51
48
  function IdentityMeasure({
52
- variant,
53
49
  model = false,
54
50
  children
55
51
  }) {
@@ -57,9 +53,8 @@ function IdentityMeasure({
57
53
  "div",
58
54
  {
59
55
  className: cn(
60
- "flex h-control-h items-center gap-1.5 px-density-2",
61
- model && "max-w-56 min-w-0",
62
- variant === "combo" ? "rounded-md border border-input" : "border-l border-border first:border-l-0"
56
+ "flex h-control-h items-center gap-1.5 border-l border-border px-density-2 first:border-l-0",
57
+ model && "max-w-56 min-w-0"
63
58
  ),
64
59
  children: /* @__PURE__ */ jsx(RuntimeSegmentCaption, { children })
65
60
  }
@@ -139,10 +134,7 @@ function RuntimeModelPicker(props) {
139
134
  disabled: props.locked,
140
135
  value: props.unavailable ? "" : ((_a = props.selectedModel) == null ? void 0 : _a.id) ?? props.model ?? "",
141
136
  options,
142
- className: cn(
143
- "h-control-h min-w-0 max-w-56 flex-1",
144
- props.variant === "combo" ? "rounded-md border border-input bg-background" : "border-l border-border first:border-l-0"
145
- ),
137
+ className: "h-control-h min-w-0 max-w-56 flex-1 border-l border-border first:border-l-0",
146
138
  triggerClassName: "h-full rounded-none border-0 px-density-2 focus-visible:ring-inset aria-expanded:bg-muted",
147
139
  triggerContent: /* @__PURE__ */ jsx(ModelCaption, { ...props }),
148
140
  onNew: (value) => ({ value, label: `Use custom: ${value}` }),
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeBarIdentity.js","sources":["../../../src/data/runtime/RuntimeBarIdentity.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Combobox, type ComboboxOption } from \"../../components/Combobox\";\nimport { cn } from \"../../lib/utils\";\nimport { Icon } from \"../Icon\";\nimport type { ChatModel } from \"../chat/types\";\nimport { runtimeFamilyBrand } from \"./RuntimeBar.model\";\nimport {\n RuntimeSegment,\n RuntimeSegmentCaption,\n SEGMENT_CAPTION_CLASS,\n} from \"./RuntimeBarSegment\";\nimport { modelGroupsForMode } from \"./RuntimeBar.selection\";\nimport type { SpecRuntimeFamily, SpecRuntimeModeOption } from \"./runtime-mode\";\nimport { UNSPECIFIED_LABEL, unspecifiedHint } from \"./unspecified\";\n\nexport type RuntimeBarIdentityProps = {\n family: SpecRuntimeFamily;\n mode: SpecRuntimeModeOption;\n modes: SpecRuntimeModeOption[];\n groups: ReturnType<typeof modelGroupsForMode>;\n selectedModel: ChatModel | undefined;\n model: string | undefined;\n unavailable: boolean;\n inheritedModelLabel: string | undefined;\n locked: boolean;\n showModel: boolean;\n variant: \"segmented\" | \"combo\";\n onModeChange: (mode: string) => void;\n onModelSelect: (model: ChatModel) => void;\n onModelClear: () => void;\n onCustomModel: (model: string) => void;\n onFamilySelect: (family: string) => void;\n};\n\nexport function RuntimeBarIdentity({\n measure = false,\n ...props\n}: RuntimeBarIdentityProps & { measure?: boolean }) {\n const modeCaption = (\n <>\n {props.mode.icon && (\n <Icon\n icon={props.mode.icon}\n className=\"size-4 shrink-0 text-muted-foreground\"\n />\n )}\n <span className={SEGMENT_CAPTION_CLASS}>{props.mode.label}</span>\n </>\n );\n return (\n <div\n data-runtime-bar-section={measure ? undefined : \"identity\"}\n className={cn(\n \"flex h-control-h min-w-0 items-stretch\",\n props.variant === \"combo\" && \"gap-1\",\n )}\n >\n {measure ? (\n <IdentityMeasure variant={props.variant}>{modeCaption}</IdentityMeasure>\n ) : (\n <RuntimeSegment\n menuLabel=\"Runtime mode\"\n title={`Runtime mode — ${props.mode.label}`}\n disabled={props.locked}\n className=\"shrink-0\"\n items={props.modes.map((mode) => ({\n label: mode.label,\n ...(mode.icon ? { icon: mode.icon } : {}),\n onSelect: () => props.onModeChange(mode.id),\n }))}\n >\n {modeCaption}\n </RuntimeSegment>\n )}\n {measure ? (\n <IdentityMeasure variant={props.variant} model>\n <ModelCaption {...props} />\n </IdentityMeasure>\n ) : (\n <RuntimeModelPicker {...props} />\n )}\n </div>\n );\n}\n\nfunction IdentityMeasure({\n variant,\n model = false,\n children,\n}: {\n variant: \"segmented\" | \"combo\";\n model?: boolean;\n children: ReactNode;\n}) {\n return (\n <div\n className={cn(\n \"flex h-control-h items-center gap-1.5 px-density-2\",\n model && \"max-w-56 min-w-0\",\n variant === \"combo\"\n ? \"rounded-md border border-input\"\n : \"border-l border-border first:border-l-0\",\n )}\n >\n <RuntimeSegmentCaption>{children}</RuntimeSegmentCaption>\n </div>\n );\n}\n\nfunction ModelCaption(props: RuntimeBarIdentityProps) {\n const brand = runtimeFamilyBrand(props.family);\n const label = props.showModel\n ? props.unavailable\n ? \"Unavailable selection\"\n : (props.selectedModel?.label ?? props.model ?? UNSPECIFIED_LABEL)\n : props.family.label;\n return (\n <>\n {props.showModel && (\n <span className=\"sr-only\">{props.family.label} </span>\n )}\n {brand.icon && (\n <Icon\n icon={brand.icon}\n className={cn(\"size-4 shrink-0\", brand.color)}\n />\n )}\n <span className=\"min-w-0 truncate font-mono text-xs font-semibold text-foreground\">\n {label}\n </span>\n </>\n );\n}\n\nfunction RuntimeModelPicker(props: RuntimeBarIdentityProps) {\n const title = props.showModel\n ? `Model — ${props.unavailable ? \"unavailable selection\" : props.model || \"unspecified\"}`\n : `Family — ${props.family.label}`;\n if (!props.showModel)\n return (\n <RuntimeSegment\n menuLabel=\"Family\"\n title={title}\n disabled={props.locked}\n className=\"min-w-0 max-w-56 flex-1\"\n items={props.groups.map(({ family }) => {\n const brand = runtimeFamilyBrand(family);\n return {\n label: family.label,\n ...(brand.icon ? { icon: brand.icon } : {}),\n onSelect: () => props.onFamilySelect(family.id),\n };\n })}\n >\n <ModelCaption {...props} />\n </RuntimeSegment>\n );\n const options: ComboboxOption[] = [\n {\n value: \"\",\n label: UNSPECIFIED_LABEL,\n description: unspecifiedHint(props.inheritedModelLabel),\n },\n ...props.groups.flatMap(({ family, models }) => {\n const brand = runtimeFamilyBrand(family);\n const icon = brand.icon ? (\n <Icon icon={brand.icon} className={cn(\"size-4\", brand.color)} />\n ) : undefined;\n return models.length\n ? models.map((model) => ({\n value: model.id,\n label: model.label.trim() || model.id,\n group: family.label,\n icon,\n }))\n : [\n {\n value: `family:${family.id}`,\n label: \"Custom model…\",\n group: family.label,\n icon,\n },\n ];\n }),\n ];\n return (\n <Combobox\n searchPlacement=\"menu\"\n ariaLabel=\"Model\"\n title={title}\n disabled={props.locked}\n value={\n props.unavailable ? \"\" : (props.selectedModel?.id ?? props.model ?? \"\")\n }\n options={options}\n className={cn(\n \"h-control-h min-w-0 max-w-56 flex-1\",\n props.variant === \"combo\"\n ? \"rounded-md border border-input bg-background\"\n : \"border-l border-border first:border-l-0\",\n )}\n triggerClassName=\"h-full rounded-none border-0 px-density-2 focus-visible:ring-inset aria-expanded:bg-muted\"\n triggerContent={<ModelCaption {...props} />}\n onNew={(value) => ({ value, label: `Use custom: ${value}` })}\n onChange={(value) => {\n if (!value) return props.onModelClear();\n const family = props.groups.find(\n ({ family }) => value === `family:${family.id}`,\n )?.family;\n if (family) return props.onFamilySelect(family.id);\n const model = props.groups\n .flatMap(({ models }) => models)\n .find((model) => model.id === value);\n if (model) props.onModelSelect(model);\n else props.onCustomModel(value);\n }}\n />\n );\n}\n"],"names":["_a","family","model"],"mappings":"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"}
1
+ {"version":3,"file":"RuntimeBarIdentity.js","sources":["../../../src/data/runtime/RuntimeBarIdentity.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Combobox, type ComboboxOption } from \"../../components/Combobox\";\nimport { cn } from \"../../lib/utils\";\nimport { Icon } from \"../Icon\";\nimport type { ChatModel } from \"../chat/types\";\nimport { runtimeFamilyBrand } from \"./RuntimeBar.model\";\nimport {\n RuntimeSegment,\n RuntimeSegmentCaption,\n SEGMENT_CAPTION_CLASS,\n} from \"./RuntimeBarSegment\";\nimport { modelGroupsForMode } from \"./RuntimeBar.selection\";\nimport type { SpecRuntimeFamily, SpecRuntimeModeOption } from \"./runtime-mode\";\nimport { UNSPECIFIED_LABEL, unspecifiedHint } from \"./unspecified\";\n\nexport type RuntimeBarIdentityProps = {\n family: SpecRuntimeFamily;\n mode: SpecRuntimeModeOption;\n modes: SpecRuntimeModeOption[];\n groups: ReturnType<typeof modelGroupsForMode>;\n selectedModel: ChatModel | undefined;\n model: string | undefined;\n unavailable: boolean;\n inheritedModelLabel: string | undefined;\n locked: boolean;\n showModel: boolean;\n onModeChange: (mode: string) => void;\n onModelSelect: (model: ChatModel) => void;\n onModelClear: () => void;\n onCustomModel: (model: string) => void;\n onFamilySelect: (family: string) => void;\n};\n\nexport function RuntimeBarIdentity({\n measure = false,\n ...props\n}: RuntimeBarIdentityProps & { measure?: boolean }) {\n const modeCaption = (\n <>\n {props.mode.icon && (\n <Icon\n icon={props.mode.icon}\n className=\"size-4 shrink-0 text-muted-foreground\"\n />\n )}\n <span className={SEGMENT_CAPTION_CLASS}>{props.mode.label}</span>\n </>\n );\n return (\n <div\n data-runtime-bar-section={measure ? undefined : \"identity\"}\n className=\"flex h-control-h min-w-0 items-stretch\"\n >\n {measure ? (\n <IdentityMeasure>{modeCaption}</IdentityMeasure>\n ) : (\n <RuntimeSegment\n menuLabel=\"Runtime mode\"\n title={`Runtime mode — ${props.mode.label}`}\n disabled={props.locked}\n className=\"shrink-0\"\n items={props.modes.map((mode) => ({\n label: mode.label,\n ...(mode.icon ? { icon: mode.icon } : {}),\n onSelect: () => props.onModeChange(mode.id),\n }))}\n >\n {modeCaption}\n </RuntimeSegment>\n )}\n {measure ? (\n <IdentityMeasure model>\n <ModelCaption {...props} />\n </IdentityMeasure>\n ) : (\n <RuntimeModelPicker {...props} />\n )}\n </div>\n );\n}\n\nfunction IdentityMeasure({\n model = false,\n children,\n}: {\n model?: boolean;\n children: ReactNode;\n}) {\n return (\n <div\n className={cn(\n \"flex h-control-h items-center gap-1.5 border-l border-border px-density-2 first:border-l-0\",\n model && \"max-w-56 min-w-0\",\n )}\n >\n <RuntimeSegmentCaption>{children}</RuntimeSegmentCaption>\n </div>\n );\n}\n\nfunction ModelCaption(props: RuntimeBarIdentityProps) {\n const brand = runtimeFamilyBrand(props.family);\n const label = props.showModel\n ? props.unavailable\n ? \"Unavailable selection\"\n : (props.selectedModel?.label ?? props.model ?? UNSPECIFIED_LABEL)\n : props.family.label;\n return (\n <>\n {props.showModel && (\n <span className=\"sr-only\">{props.family.label} </span>\n )}\n {brand.icon && (\n <Icon\n icon={brand.icon}\n className={cn(\"size-4 shrink-0\", brand.color)}\n />\n )}\n <span className=\"min-w-0 truncate font-mono text-xs font-semibold text-foreground\">\n {label}\n </span>\n </>\n );\n}\n\nfunction RuntimeModelPicker(props: RuntimeBarIdentityProps) {\n const title = props.showModel\n ? `Model — ${props.unavailable ? \"unavailable selection\" : props.model || \"unspecified\"}`\n : `Family — ${props.family.label}`;\n if (!props.showModel)\n return (\n <RuntimeSegment\n menuLabel=\"Family\"\n title={title}\n disabled={props.locked}\n className=\"min-w-0 max-w-56 flex-1\"\n items={props.groups.map(({ family }) => {\n const brand = runtimeFamilyBrand(family);\n return {\n label: family.label,\n ...(brand.icon ? { icon: brand.icon } : {}),\n onSelect: () => props.onFamilySelect(family.id),\n };\n })}\n >\n <ModelCaption {...props} />\n </RuntimeSegment>\n );\n const options: ComboboxOption[] = [\n {\n value: \"\",\n label: UNSPECIFIED_LABEL,\n description: unspecifiedHint(props.inheritedModelLabel),\n },\n ...props.groups.flatMap(({ family, models }) => {\n const brand = runtimeFamilyBrand(family);\n const icon = brand.icon ? (\n <Icon icon={brand.icon} className={cn(\"size-4\", brand.color)} />\n ) : undefined;\n return models.length\n ? models.map((model) => ({\n value: model.id,\n label: model.label.trim() || model.id,\n group: family.label,\n icon,\n }))\n : [\n {\n value: `family:${family.id}`,\n label: \"Custom model…\",\n group: family.label,\n icon,\n },\n ];\n }),\n ];\n return (\n <Combobox\n searchPlacement=\"menu\"\n ariaLabel=\"Model\"\n title={title}\n disabled={props.locked}\n value={\n props.unavailable ? \"\" : (props.selectedModel?.id ?? props.model ?? \"\")\n }\n options={options}\n className=\"h-control-h min-w-0 max-w-56 flex-1 border-l border-border first:border-l-0\"\n triggerClassName=\"h-full rounded-none border-0 px-density-2 focus-visible:ring-inset aria-expanded:bg-muted\"\n triggerContent={<ModelCaption {...props} />}\n onNew={(value) => ({ value, label: `Use custom: ${value}` })}\n onChange={(value) => {\n if (!value) return props.onModelClear();\n const family = props.groups.find(\n ({ family }) => value === `family:${family.id}`,\n )?.family;\n if (family) return props.onFamilySelect(family.id);\n const model = props.groups\n .flatMap(({ models }) => models)\n .find((model) => model.id === value);\n if (model) props.onModelSelect(model);\n else props.onCustomModel(value);\n }}\n />\n );\n}\n"],"names":["_a","family","model"],"mappings":"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"}
@@ -29,11 +29,7 @@ function RuntimeBarLayout({
29
29
  {
30
30
  role: "group",
31
31
  "aria-label": ariaLabel,
32
- "data-runtime-bar-variant": identity.variant,
33
- className: utils.cn(
34
- "inline-flex h-control-h max-w-full items-stretch",
35
- identity.variant === "combo" ? "gap-1" : "overflow-hidden rounded-md border border-input bg-background"
36
- ),
32
+ className: "inline-flex h-control-h max-w-full items-stretch overflow-hidden rounded-md border border-input bg-background",
37
33
  children: [
38
34
  /* @__PURE__ */ jsxRuntime.jsx(RuntimeBarIdentity.RuntimeBarIdentity, { ...identity }),
39
35
  /* @__PURE__ */ jsxRuntime.jsx(RuntimeBarActions.RuntimeBarActions, { ...actions, visibleCount })
@@ -49,39 +45,24 @@ function RuntimeBarLayout({
49
45
  "div",
50
46
  {
51
47
  ref: measurementRef,
52
- className: utils.cn(
53
- "pointer-events-none invisible absolute left-0 top-0 flex w-max items-stretch",
54
- identity.variant === "combo" && "gap-1"
55
- ),
48
+ className: "pointer-events-none invisible absolute left-0 top-0 flex w-max items-stretch",
56
49
  children: [
57
50
  /* @__PURE__ */ jsxRuntime.jsx(RuntimeBarIdentity.RuntimeBarIdentity, { ...identity, measure: true }),
58
51
  supplied.map((field) => /* @__PURE__ */ jsxRuntime.jsx(
59
52
  "div",
60
53
  {
61
- className: utils.cn(
62
- "flex h-control-h items-center gap-1.5 px-density-2",
63
- identity.variant === "combo" ? "rounded-md border border-input" : "border-l border-border"
64
- ),
54
+ className: "flex h-control-h items-center gap-1.5 border-l border-border px-density-2",
65
55
  children: /* @__PURE__ */ jsxRuntime.jsx(RuntimeBarSegment.RuntimeSegmentCaption, { children: field.caption })
66
56
  },
67
57
  field.id
68
58
  )),
69
- /* @__PURE__ */ jsxRuntime.jsx(
70
- "div",
59
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-control-h items-center border-l border-border px-density-2", children: /* @__PURE__ */ jsxRuntime.jsx(
60
+ Icon.Icon,
71
61
  {
72
- className: utils.cn(
73
- "flex h-control-h items-center px-density-2",
74
- identity.variant === "combo" ? "rounded-md border border-input" : "border-l border-border"
75
- ),
76
- children: /* @__PURE__ */ jsxRuntime.jsx(
77
- Icon.Icon,
78
- {
79
- icon: UiDotsVertical.UiDotsVertical,
80
- className: "size-4 shrink-0 text-muted-foreground"
81
- }
82
- )
62
+ icon: UiDotsVertical.UiDotsVertical,
63
+ className: "size-4 shrink-0 text-muted-foreground"
83
64
  }
84
- )
65
+ ) })
85
66
  ]
86
67
  }
87
68
  )
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeBarLayout.cjs","sources":["../../../src/data/runtime/RuntimeBarLayout.tsx"],"sourcesContent":["import { UiDotsVertical } from \"../../icons\";\nimport { cn } from \"../../lib/utils\";\nimport { Icon } from \"../Icon\";\nimport {\n RuntimeBarActions,\n type RuntimeBarActionsProps,\n} from \"./RuntimeBarActions\";\nimport {\n RuntimeBarIdentity,\n type RuntimeBarIdentityProps,\n} from \"./RuntimeBarIdentity\";\nimport { RuntimeSegmentCaption } from \"./RuntimeBarSegment\";\nimport { useRuntimeBarOverflow } from \"./use-runtime-bar-overflow\";\n\nexport function RuntimeBarLayout({\n identity,\n actions,\n ariaLabel,\n className,\n}: {\n identity: RuntimeBarIdentityProps;\n actions: RuntimeBarActionsProps;\n ariaLabel: string;\n className?: string | undefined;\n}) {\n const { containerRef, measurementRef, visibleCount } =\n useRuntimeBarOverflow();\n const supplied = actions.fields?.filter((field) => field.isSet) ?? [];\n const hasMenu = Boolean(actions.fields?.length || actions.menu?.length);\n return (\n <div\n ref={containerRef}\n className={cn(\"relative w-full min-w-0\", className)}\n >\n <div\n role=\"group\"\n aria-label={ariaLabel}\n data-runtime-bar-variant={identity.variant}\n className={cn(\n \"inline-flex h-control-h max-w-full items-stretch\",\n identity.variant === \"combo\"\n ? \"gap-1\"\n : \"overflow-hidden rounded-md border border-input bg-background\",\n )}\n >\n <RuntimeBarIdentity {...identity} />\n <RuntimeBarActions {...actions} visibleCount={visibleCount} />\n </div>\n {hasMenu && (\n <div\n className=\"pointer-events-none absolute inset-0 overflow-hidden\"\n aria-hidden=\"true\"\n >\n <div\n ref={measurementRef}\n className={cn(\n \"pointer-events-none invisible absolute left-0 top-0 flex w-max items-stretch\",\n identity.variant === \"combo\" && \"gap-1\",\n )}\n >\n <RuntimeBarIdentity {...identity} measure />\n {supplied.map((field) => (\n <div\n key={field.id}\n className={cn(\n \"flex h-control-h items-center gap-1.5 px-density-2\",\n identity.variant === \"combo\"\n ? \"rounded-md border border-input\"\n : \"border-l border-border\",\n )}\n >\n <RuntimeSegmentCaption>{field.caption}</RuntimeSegmentCaption>\n </div>\n ))}\n <div\n className={cn(\n \"flex h-control-h items-center px-density-2\",\n identity.variant === \"combo\"\n ? \"rounded-md border border-input\"\n : \"border-l border-border\",\n )}\n >\n <Icon\n icon={UiDotsVertical}\n className=\"size-4 shrink-0 text-muted-foreground\"\n />\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n"],"names":["useRuntimeBarOverflow","jsxs","cn","jsx","RuntimeBarIdentity","RuntimeBarActions","RuntimeSegmentCaption","Icon","UiDotsVertical"],"mappings":";;;;;;;;;;AAcO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKG;;AACD,QAAM,EAAE,cAAc,gBAAgB,aAAA,IACpCA,sBAAAA,sBAAA;AACF,QAAM,aAAW,aAAQ,WAAR,mBAAgB,OAAO,CAAC,UAAU,MAAM,WAAU,CAAA;AACnE,QAAM,UAAU,UAAQ,aAAQ,WAAR,mBAAgB,aAAU,aAAQ,SAAR,mBAAc,OAAM;AACtE,SACEC,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAK;AAAA,MACL,WAAWC,MAAAA,GAAG,2BAA2B,SAAS;AAAA,MAElD,UAAA;AAAA,QAAAD,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,cAAY;AAAA,YACZ,4BAA0B,SAAS;AAAA,YACnC,WAAWC,MAAAA;AAAAA,cACT;AAAA,cACA,SAAS,YAAY,UACjB,UACA;AAAA,YAAA;AAAA,YAGN,UAAA;AAAA,cAAAC,2BAAAA,IAACC,mBAAAA,oBAAA,EAAoB,GAAG,UAAU;AAAA,cAClCD,2BAAAA,IAACE,kBAAAA,mBAAA,EAAmB,GAAG,SAAS,aAAA,CAA4B;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAE7D,WACCF,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,eAAY;AAAA,YAEZ,UAAAF,2BAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,KAAK;AAAA,gBACL,WAAWC,MAAAA;AAAAA,kBACT;AAAA,kBACA,SAAS,YAAY,WAAW;AAAA,gBAAA;AAAA,gBAGlC,UAAA;AAAA,kBAAAC,2BAAAA,IAACC,mBAAAA,oBAAA,EAAoB,GAAG,UAAU,SAAO,KAAA,CAAC;AAAA,kBACzC,SAAS,IAAI,CAAC,UACbD,2BAAAA;AAAAA,oBAAC;AAAA,oBAAA;AAAA,sBAEC,WAAWD,MAAAA;AAAAA,wBACT;AAAA,wBACA,SAAS,YAAY,UACjB,mCACA;AAAA,sBAAA;AAAA,sBAGN,UAAAC,2BAAAA,IAACG,kBAAAA,uBAAA,EAAuB,UAAA,MAAM,QAAA,CAAQ;AAAA,oBAAA;AAAA,oBARjC,MAAM;AAAA,kBAAA,CAUd;AAAA,kBACDH,2BAAAA;AAAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,WAAWD,MAAAA;AAAAA,wBACT;AAAA,wBACA,SAAS,YAAY,UACjB,mCACA;AAAA,sBAAA;AAAA,sBAGN,UAAAC,2BAAAA;AAAAA,wBAACI,KAAAA;AAAAA,wBAAA;AAAA,0BACC,MAAMC,eAAAA;AAAAA,0BACN,WAAU;AAAA,wBAAA;AAAA,sBAAA;AAAA,oBACZ;AAAA,kBAAA;AAAA,gBACF;AAAA,cAAA;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAIR;;"}
1
+ {"version":3,"file":"RuntimeBarLayout.cjs","sources":["../../../src/data/runtime/RuntimeBarLayout.tsx"],"sourcesContent":["import { UiDotsVertical } from \"../../icons\";\nimport { cn } from \"../../lib/utils\";\nimport { Icon } from \"../Icon\";\nimport {\n RuntimeBarActions,\n type RuntimeBarActionsProps,\n} from \"./RuntimeBarActions\";\nimport {\n RuntimeBarIdentity,\n type RuntimeBarIdentityProps,\n} from \"./RuntimeBarIdentity\";\nimport { RuntimeSegmentCaption } from \"./RuntimeBarSegment\";\nimport { useRuntimeBarOverflow } from \"./use-runtime-bar-overflow\";\n\nexport function RuntimeBarLayout({\n identity,\n actions,\n ariaLabel,\n className,\n}: {\n identity: RuntimeBarIdentityProps;\n actions: RuntimeBarActionsProps;\n ariaLabel: string;\n className?: string | undefined;\n}) {\n const { containerRef, measurementRef, visibleCount } =\n useRuntimeBarOverflow();\n const supplied = actions.fields?.filter((field) => field.isSet) ?? [];\n const hasMenu = Boolean(actions.fields?.length || actions.menu?.length);\n return (\n <div\n ref={containerRef}\n className={cn(\"relative w-full min-w-0\", className)}\n >\n <div\n role=\"group\"\n aria-label={ariaLabel}\n className=\"inline-flex h-control-h max-w-full items-stretch overflow-hidden rounded-md border border-input bg-background\"\n >\n <RuntimeBarIdentity {...identity} />\n <RuntimeBarActions {...actions} visibleCount={visibleCount} />\n </div>\n {hasMenu && (\n <div\n className=\"pointer-events-none absolute inset-0 overflow-hidden\"\n aria-hidden=\"true\"\n >\n <div\n ref={measurementRef}\n className=\"pointer-events-none invisible absolute left-0 top-0 flex w-max items-stretch\"\n >\n <RuntimeBarIdentity {...identity} measure />\n {supplied.map((field) => (\n <div\n key={field.id}\n className=\"flex h-control-h items-center gap-1.5 border-l border-border px-density-2\"\n >\n <RuntimeSegmentCaption>{field.caption}</RuntimeSegmentCaption>\n </div>\n ))}\n <div className=\"flex h-control-h items-center border-l border-border px-density-2\">\n <Icon\n icon={UiDotsVertical}\n className=\"size-4 shrink-0 text-muted-foreground\"\n />\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n"],"names":["useRuntimeBarOverflow","jsxs","cn","jsx","RuntimeBarIdentity","RuntimeBarActions","RuntimeSegmentCaption","Icon","UiDotsVertical"],"mappings":";;;;;;;;;;AAcO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKG;;AACD,QAAM,EAAE,cAAc,gBAAgB,aAAA,IACpCA,sBAAAA,sBAAA;AACF,QAAM,aAAW,aAAQ,WAAR,mBAAgB,OAAO,CAAC,UAAU,MAAM,WAAU,CAAA;AACnE,QAAM,UAAU,UAAQ,aAAQ,WAAR,mBAAgB,aAAU,aAAQ,SAAR,mBAAc,OAAM;AACtE,SACEC,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAK;AAAA,MACL,WAAWC,MAAAA,GAAG,2BAA2B,SAAS;AAAA,MAElD,UAAA;AAAA,QAAAD,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,cAAY;AAAA,YACZ,WAAU;AAAA,YAEV,UAAA;AAAA,cAAAE,2BAAAA,IAACC,mBAAAA,oBAAA,EAAoB,GAAG,UAAU;AAAA,cAClCD,2BAAAA,IAACE,kBAAAA,mBAAA,EAAmB,GAAG,SAAS,aAAA,CAA4B;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAE7D,WACCF,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,eAAY;AAAA,YAEZ,UAAAF,2BAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,KAAK;AAAA,gBACL,WAAU;AAAA,gBAEV,UAAA;AAAA,kBAAAE,2BAAAA,IAACC,mBAAAA,oBAAA,EAAoB,GAAG,UAAU,SAAO,KAAA,CAAC;AAAA,kBACzC,SAAS,IAAI,CAAC,UACbD,2BAAAA;AAAAA,oBAAC;AAAA,oBAAA;AAAA,sBAEC,WAAU;AAAA,sBAEV,UAAAA,2BAAAA,IAACG,kBAAAA,uBAAA,EAAuB,UAAA,MAAM,QAAA,CAAQ;AAAA,oBAAA;AAAA,oBAHjC,MAAM;AAAA,kBAAA,CAKd;AAAA,kBACDH,2BAAAA,IAAC,OAAA,EAAI,WAAU,qEACb,UAAAA,2BAAAA;AAAAA,oBAACI,KAAAA;AAAAA,oBAAA;AAAA,sBACC,MAAMC,eAAAA;AAAAA,sBACN,WAAU;AAAA,oBAAA;AAAA,kBAAA,EACZ,CACF;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAIR;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeBarLayout.d.ts","sourceRoot":"","sources":["../../../src/data/runtime/RuntimeBarLayout.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,sBAAsB,CAAC;AAI9B,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,OAAO,EACP,SAAS,EACT,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,uBAAuB,CAAC;IAClC,OAAO,EAAE,sBAAsB,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC,+BAoEA"}
1
+ {"version":3,"file":"RuntimeBarLayout.d.ts","sourceRoot":"","sources":["../../../src/data/runtime/RuntimeBarLayout.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,sBAAsB,CAAC;AAI9B,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,OAAO,EACP,SAAS,EACT,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,uBAAuB,CAAC;IAClC,OAAO,EAAE,sBAAsB,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC,+BA+CA"}
@@ -27,11 +27,7 @@ function RuntimeBarLayout({
27
27
  {
28
28
  role: "group",
29
29
  "aria-label": ariaLabel,
30
- "data-runtime-bar-variant": identity.variant,
31
- className: cn(
32
- "inline-flex h-control-h max-w-full items-stretch",
33
- identity.variant === "combo" ? "gap-1" : "overflow-hidden rounded-md border border-input bg-background"
34
- ),
30
+ className: "inline-flex h-control-h max-w-full items-stretch overflow-hidden rounded-md border border-input bg-background",
35
31
  children: [
36
32
  /* @__PURE__ */ jsx(RuntimeBarIdentity, { ...identity }),
37
33
  /* @__PURE__ */ jsx(RuntimeBarActions, { ...actions, visibleCount })
@@ -47,39 +43,24 @@ function RuntimeBarLayout({
47
43
  "div",
48
44
  {
49
45
  ref: measurementRef,
50
- className: cn(
51
- "pointer-events-none invisible absolute left-0 top-0 flex w-max items-stretch",
52
- identity.variant === "combo" && "gap-1"
53
- ),
46
+ className: "pointer-events-none invisible absolute left-0 top-0 flex w-max items-stretch",
54
47
  children: [
55
48
  /* @__PURE__ */ jsx(RuntimeBarIdentity, { ...identity, measure: true }),
56
49
  supplied.map((field) => /* @__PURE__ */ jsx(
57
50
  "div",
58
51
  {
59
- className: cn(
60
- "flex h-control-h items-center gap-1.5 px-density-2",
61
- identity.variant === "combo" ? "rounded-md border border-input" : "border-l border-border"
62
- ),
52
+ className: "flex h-control-h items-center gap-1.5 border-l border-border px-density-2",
63
53
  children: /* @__PURE__ */ jsx(RuntimeSegmentCaption, { children: field.caption })
64
54
  },
65
55
  field.id
66
56
  )),
67
- /* @__PURE__ */ jsx(
68
- "div",
57
+ /* @__PURE__ */ jsx("div", { className: "flex h-control-h items-center border-l border-border px-density-2", children: /* @__PURE__ */ jsx(
58
+ Icon,
69
59
  {
70
- className: cn(
71
- "flex h-control-h items-center px-density-2",
72
- identity.variant === "combo" ? "rounded-md border border-input" : "border-l border-border"
73
- ),
74
- children: /* @__PURE__ */ jsx(
75
- Icon,
76
- {
77
- icon: UiDotsVertical,
78
- className: "size-4 shrink-0 text-muted-foreground"
79
- }
80
- )
60
+ icon: UiDotsVertical,
61
+ className: "size-4 shrink-0 text-muted-foreground"
81
62
  }
82
- )
63
+ ) })
83
64
  ]
84
65
  }
85
66
  )
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeBarLayout.js","sources":["../../../src/data/runtime/RuntimeBarLayout.tsx"],"sourcesContent":["import { UiDotsVertical } from \"../../icons\";\nimport { cn } from \"../../lib/utils\";\nimport { Icon } from \"../Icon\";\nimport {\n RuntimeBarActions,\n type RuntimeBarActionsProps,\n} from \"./RuntimeBarActions\";\nimport {\n RuntimeBarIdentity,\n type RuntimeBarIdentityProps,\n} from \"./RuntimeBarIdentity\";\nimport { RuntimeSegmentCaption } from \"./RuntimeBarSegment\";\nimport { useRuntimeBarOverflow } from \"./use-runtime-bar-overflow\";\n\nexport function RuntimeBarLayout({\n identity,\n actions,\n ariaLabel,\n className,\n}: {\n identity: RuntimeBarIdentityProps;\n actions: RuntimeBarActionsProps;\n ariaLabel: string;\n className?: string | undefined;\n}) {\n const { containerRef, measurementRef, visibleCount } =\n useRuntimeBarOverflow();\n const supplied = actions.fields?.filter((field) => field.isSet) ?? [];\n const hasMenu = Boolean(actions.fields?.length || actions.menu?.length);\n return (\n <div\n ref={containerRef}\n className={cn(\"relative w-full min-w-0\", className)}\n >\n <div\n role=\"group\"\n aria-label={ariaLabel}\n data-runtime-bar-variant={identity.variant}\n className={cn(\n \"inline-flex h-control-h max-w-full items-stretch\",\n identity.variant === \"combo\"\n ? \"gap-1\"\n : \"overflow-hidden rounded-md border border-input bg-background\",\n )}\n >\n <RuntimeBarIdentity {...identity} />\n <RuntimeBarActions {...actions} visibleCount={visibleCount} />\n </div>\n {hasMenu && (\n <div\n className=\"pointer-events-none absolute inset-0 overflow-hidden\"\n aria-hidden=\"true\"\n >\n <div\n ref={measurementRef}\n className={cn(\n \"pointer-events-none invisible absolute left-0 top-0 flex w-max items-stretch\",\n identity.variant === \"combo\" && \"gap-1\",\n )}\n >\n <RuntimeBarIdentity {...identity} measure />\n {supplied.map((field) => (\n <div\n key={field.id}\n className={cn(\n \"flex h-control-h items-center gap-1.5 px-density-2\",\n identity.variant === \"combo\"\n ? \"rounded-md border border-input\"\n : \"border-l border-border\",\n )}\n >\n <RuntimeSegmentCaption>{field.caption}</RuntimeSegmentCaption>\n </div>\n ))}\n <div\n className={cn(\n \"flex h-control-h items-center px-density-2\",\n identity.variant === \"combo\"\n ? \"rounded-md border border-input\"\n : \"border-l border-border\",\n )}\n >\n <Icon\n icon={UiDotsVertical}\n className=\"size-4 shrink-0 text-muted-foreground\"\n />\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;;AAcO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKG;;AACD,QAAM,EAAE,cAAc,gBAAgB,aAAA,IACpC,sBAAA;AACF,QAAM,aAAW,aAAQ,WAAR,mBAAgB,OAAO,CAAC,UAAU,MAAM,WAAU,CAAA;AACnE,QAAM,UAAU,UAAQ,aAAQ,WAAR,mBAAgB,aAAU,aAAQ,SAAR,mBAAc,OAAM;AACtE,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAK;AAAA,MACL,WAAW,GAAG,2BAA2B,SAAS;AAAA,MAElD,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,cAAY;AAAA,YACZ,4BAA0B,SAAS;AAAA,YACnC,WAAW;AAAA,cACT;AAAA,cACA,SAAS,YAAY,UACjB,UACA;AAAA,YAAA;AAAA,YAGN,UAAA;AAAA,cAAA,oBAAC,oBAAA,EAAoB,GAAG,UAAU;AAAA,cAClC,oBAAC,mBAAA,EAAmB,GAAG,SAAS,aAAA,CAA4B;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAE7D,WACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,eAAY;AAAA,YAEZ,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,KAAK;AAAA,gBACL,WAAW;AAAA,kBACT;AAAA,kBACA,SAAS,YAAY,WAAW;AAAA,gBAAA;AAAA,gBAGlC,UAAA;AAAA,kBAAA,oBAAC,oBAAA,EAAoB,GAAG,UAAU,SAAO,KAAA,CAAC;AAAA,kBACzC,SAAS,IAAI,CAAC,UACb;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBAEC,WAAW;AAAA,wBACT;AAAA,wBACA,SAAS,YAAY,UACjB,mCACA;AAAA,sBAAA;AAAA,sBAGN,UAAA,oBAAC,uBAAA,EAAuB,UAAA,MAAM,QAAA,CAAQ;AAAA,oBAAA;AAAA,oBARjC,MAAM;AAAA,kBAAA,CAUd;AAAA,kBACD;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,WAAW;AAAA,wBACT;AAAA,wBACA,SAAS,YAAY,UACjB,mCACA;AAAA,sBAAA;AAAA,sBAGN,UAAA;AAAA,wBAAC;AAAA,wBAAA;AAAA,0BACC,MAAM;AAAA,0BACN,WAAU;AAAA,wBAAA;AAAA,sBAAA;AAAA,oBACZ;AAAA,kBAAA;AAAA,gBACF;AAAA,cAAA;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAIR;"}
1
+ {"version":3,"file":"RuntimeBarLayout.js","sources":["../../../src/data/runtime/RuntimeBarLayout.tsx"],"sourcesContent":["import { UiDotsVertical } from \"../../icons\";\nimport { cn } from \"../../lib/utils\";\nimport { Icon } from \"../Icon\";\nimport {\n RuntimeBarActions,\n type RuntimeBarActionsProps,\n} from \"./RuntimeBarActions\";\nimport {\n RuntimeBarIdentity,\n type RuntimeBarIdentityProps,\n} from \"./RuntimeBarIdentity\";\nimport { RuntimeSegmentCaption } from \"./RuntimeBarSegment\";\nimport { useRuntimeBarOverflow } from \"./use-runtime-bar-overflow\";\n\nexport function RuntimeBarLayout({\n identity,\n actions,\n ariaLabel,\n className,\n}: {\n identity: RuntimeBarIdentityProps;\n actions: RuntimeBarActionsProps;\n ariaLabel: string;\n className?: string | undefined;\n}) {\n const { containerRef, measurementRef, visibleCount } =\n useRuntimeBarOverflow();\n const supplied = actions.fields?.filter((field) => field.isSet) ?? [];\n const hasMenu = Boolean(actions.fields?.length || actions.menu?.length);\n return (\n <div\n ref={containerRef}\n className={cn(\"relative w-full min-w-0\", className)}\n >\n <div\n role=\"group\"\n aria-label={ariaLabel}\n className=\"inline-flex h-control-h max-w-full items-stretch overflow-hidden rounded-md border border-input bg-background\"\n >\n <RuntimeBarIdentity {...identity} />\n <RuntimeBarActions {...actions} visibleCount={visibleCount} />\n </div>\n {hasMenu && (\n <div\n className=\"pointer-events-none absolute inset-0 overflow-hidden\"\n aria-hidden=\"true\"\n >\n <div\n ref={measurementRef}\n className=\"pointer-events-none invisible absolute left-0 top-0 flex w-max items-stretch\"\n >\n <RuntimeBarIdentity {...identity} measure />\n {supplied.map((field) => (\n <div\n key={field.id}\n className=\"flex h-control-h items-center gap-1.5 border-l border-border px-density-2\"\n >\n <RuntimeSegmentCaption>{field.caption}</RuntimeSegmentCaption>\n </div>\n ))}\n <div className=\"flex h-control-h items-center border-l border-border px-density-2\">\n <Icon\n icon={UiDotsVertical}\n className=\"size-4 shrink-0 text-muted-foreground\"\n />\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;;AAcO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKG;;AACD,QAAM,EAAE,cAAc,gBAAgB,aAAA,IACpC,sBAAA;AACF,QAAM,aAAW,aAAQ,WAAR,mBAAgB,OAAO,CAAC,UAAU,MAAM,WAAU,CAAA;AACnE,QAAM,UAAU,UAAQ,aAAQ,WAAR,mBAAgB,aAAU,aAAQ,SAAR,mBAAc,OAAM;AACtE,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAK;AAAA,MACL,WAAW,GAAG,2BAA2B,SAAS;AAAA,MAElD,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,cAAY;AAAA,YACZ,WAAU;AAAA,YAEV,UAAA;AAAA,cAAA,oBAAC,oBAAA,EAAoB,GAAG,UAAU;AAAA,cAClC,oBAAC,mBAAA,EAAmB,GAAG,SAAS,aAAA,CAA4B;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAE7D,WACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,eAAY;AAAA,YAEZ,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,KAAK;AAAA,gBACL,WAAU;AAAA,gBAEV,UAAA;AAAA,kBAAA,oBAAC,oBAAA,EAAoB,GAAG,UAAU,SAAO,KAAA,CAAC;AAAA,kBACzC,SAAS,IAAI,CAAC,UACb;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBAEC,WAAU;AAAA,sBAEV,UAAA,oBAAC,uBAAA,EAAuB,UAAA,MAAM,QAAA,CAAQ;AAAA,oBAAA;AAAA,oBAHjC,MAAM;AAAA,kBAAA,CAKd;AAAA,kBACD,oBAAC,OAAA,EAAI,WAAU,qEACb,UAAA;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,MAAM;AAAA,sBACN,WAAU;AAAA,oBAAA;AAAA,kBAAA,EACZ,CACF;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAIR;"}
@@ -1,11 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
- const react = require("react");
5
4
  const utils = require("../../lib/utils.cjs");
6
5
  const DropdownMenu = require("../../overlay/DropdownMenu.cjs");
7
6
  const Icon = require("../Icon.cjs");
8
- const RuntimeBar_context = require("./RuntimeBar.context.cjs");
9
7
  const UiCheck = require("../../icons/components/UiCheck.cjs");
10
8
  const UiChevronDown = require("../../icons/components/UiChevronDown.cjs");
11
9
  const SEGMENT_CAPTION_CLASS = "truncate text-xs font-semibold text-foreground";
@@ -20,7 +18,6 @@ function RuntimeSegment({
20
18
  className,
21
19
  children
22
20
  }) {
23
- const variant = react.useContext(RuntimeBar_context.RuntimeBarVariantContext);
24
21
  return /* @__PURE__ */ jsxRuntime.jsx(
25
22
  DropdownMenu.DropdownMenu,
26
23
  {
@@ -30,8 +27,7 @@ function RuntimeSegment({
30
27
  ...header ? { header } : {},
31
28
  menuClassName: "max-h-[70vh] min-w-56 max-w-80 overflow-y-auto",
32
29
  className: utils.cn(
33
- "h-control-h min-w-0 [&>span]:min-w-0 [&>span]:w-full",
34
- variant === "combo" ? "rounded-md border border-input bg-background" : "border-l border-border first:border-l-0",
30
+ "h-control-h min-w-0 border-l border-border first:border-l-0 [&>span]:min-w-0 [&>span]:w-full",
35
31
  className
36
32
  ),
37
33
  trigger: /* @__PURE__ */ jsxRuntime.jsx(
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeBarSegment.cjs","sources":["../../../src/data/runtime/RuntimeBarSegment.tsx"],"sourcesContent":["import { useContext, type ReactNode } from \"react\";\nimport { UiCheck, UiChevronDown } from \"../../icons\";\nimport { cn } from \"../../lib/utils\";\nimport {\n DropdownMenu,\n type DropdownMenuItem,\n} from \"../../overlay/DropdownMenu\";\nimport { Icon } from \"../Icon\";\nimport { RuntimeBarVariantContext } from \"./RuntimeBar.context\";\n\nexport const SEGMENT_CAPTION_CLASS =\n \"truncate text-xs font-semibold text-foreground\";\nexport const SEGMENT_KEY_CLASS =\n \"text-[11px] font-semibold uppercase leading-none tracking-wide text-muted-foreground\";\n\n// One trigger in the segmented runtime bar: a dropdown whose button carries the\n// segment's current value. `min-w-0` on the root lets a segment shrink past its\n// content — without it the flex item's automatic minimum size is its max-content\n// width, so a row of segments overflows a narrow container instead of ellipsing\n// its captions.\nexport function RuntimeSegment({\n items,\n menuLabel,\n title,\n header,\n disabled = false,\n hideChevron = false,\n className,\n children,\n}: {\n items: DropdownMenuItem[];\n menuLabel: string;\n title: string;\n header?: ReactNode;\n disabled?: boolean;\n /** Drops the trailing chevron, for a segment whose caption is a bare glyph. */\n hideChevron?: boolean;\n className?: string | undefined;\n children: ReactNode;\n}) {\n const variant = useContext(RuntimeBarVariantContext);\n return (\n <DropdownMenu\n align=\"left\"\n menuLabel={menuLabel}\n items={items}\n {...(header ? { header } : {})}\n menuClassName=\"max-h-[70vh] min-w-56 max-w-80 overflow-y-auto\"\n className={cn(\n \"h-control-h min-w-0 [&>span]:min-w-0 [&>span]:w-full\",\n variant === \"combo\"\n ? \"rounded-md border border-input bg-background\"\n : \"border-l border-border first:border-l-0\",\n className,\n )}\n trigger={\n <button\n type=\"button\"\n disabled={disabled}\n title={title}\n className=\"inline-flex h-full w-full min-w-0 items-center gap-1.5 px-density-2 transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring [[aria-expanded=true]_&]:bg-muted\"\n >\n <RuntimeSegmentCaption hideChevron={hideChevron}>\n {children}\n </RuntimeSegmentCaption>\n </button>\n }\n />\n );\n}\n\nexport function RuntimeSegmentCaption({\n children,\n hideChevron = false,\n}: {\n children: ReactNode;\n hideChevron?: boolean;\n}) {\n return (\n <>\n {children}\n {!hideChevron && (\n <Icon\n icon={UiChevronDown}\n className=\"size-3 shrink-0 text-muted-foreground/70\"\n />\n )}\n </>\n );\n}\n\nexport function SegmentItemLabel({\n text,\n hint,\n selected,\n stacked = false,\n}: {\n text: string;\n hint?: string | undefined;\n selected: boolean;\n stacked?: boolean | undefined;\n}) {\n return (\n <>\n <span className=\"min-w-0 flex-1\">\n <span className={cn(\"block truncate\", selected && \"font-semibold\")}>\n {text}\n </span>\n {hint && stacked && (\n <span className=\"block whitespace-normal text-[11px] leading-4 text-muted-foreground\">\n {hint}\n </span>\n )}\n </span>\n {hint && !stacked && (\n <span className=\"shrink-0 text-[11px] text-muted-foreground\">\n {hint}\n </span>\n )}\n <Icon\n icon={UiCheck}\n className={cn(\n \"size-3.5 shrink-0 text-primary\",\n !selected && \"invisible\",\n )}\n />\n </>\n );\n}\n"],"names":["useContext","RuntimeBarVariantContext","jsx","DropdownMenu","cn","jsxs","Fragment","Icon","UiChevronDown","UiCheck"],"mappings":";;;;;;;;;;AAUO,MAAM,wBACX;AACK,MAAM,oBACX;AAOK,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,cAAc;AAAA,EACd;AAAA,EACA;AACF,GAUG;AACD,QAAM,UAAUA,MAAAA,WAAWC,2CAAwB;AACnD,SACEC,2BAAAA;AAAAA,IAACC,aAAAA;AAAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN;AAAA,MACA;AAAA,MACC,GAAI,SAAS,EAAE,OAAA,IAAW,CAAA;AAAA,MAC3B,eAAc;AAAA,MACd,WAAWC,MAAAA;AAAAA,QACT;AAAA,QACA,YAAY,UACR,iDACA;AAAA,QACJ;AAAA,MAAA;AAAA,MAEF,SACEF,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL;AAAA,UACA;AAAA,UACA,WAAU;AAAA,UAEV,UAAAA,2BAAAA,IAAC,uBAAA,EAAsB,aACpB,SAAA,CACH;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAIR;AAEO,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA,cAAc;AAChB,GAGG;AACD,SACEG,2BAAAA,KAAAC,qBAAA,EACG,UAAA;AAAA,IAAA;AAAA,IACA,CAAC,eACAJ,2BAAAA;AAAAA,MAACK,KAAAA;AAAAA,MAAA;AAAA,QACC,MAAMC,cAAAA;AAAAA,QACN,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EACZ,GAEJ;AAEJ;AAEO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AACZ,GAKG;AACD,SACEH,2BAAAA,KAAAC,qBAAA,EACE,UAAA;AAAA,IAAAD,2BAAAA,KAAC,QAAA,EAAK,WAAU,kBACd,UAAA;AAAA,MAAAH,2BAAAA,IAAC,UAAK,WAAWE,SAAG,kBAAkB,YAAY,eAAe,GAC9D,UAAA,MACH;AAAA,MACC,QAAQ,WACPF,2BAAAA,IAAC,QAAA,EAAK,WAAU,uEACb,UAAA,KAAA,CACH;AAAA,IAAA,GAEJ;AAAA,IACC,QAAQ,CAAC,0CACP,QAAA,EAAK,WAAU,8CACb,UAAA,MACH;AAAA,IAEFA,2BAAAA;AAAAA,MAACK,KAAAA;AAAAA,MAAA;AAAA,QACC,MAAME,QAAAA;AAAAA,QACN,WAAWL,MAAAA;AAAAA,UACT;AAAA,UACA,CAAC,YAAY;AAAA,QAAA;AAAA,MACf;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;;;;;;"}
1
+ {"version":3,"file":"RuntimeBarSegment.cjs","sources":["../../../src/data/runtime/RuntimeBarSegment.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { UiCheck, UiChevronDown } from \"../../icons\";\nimport { cn } from \"../../lib/utils\";\nimport {\n DropdownMenu,\n type DropdownMenuItem,\n} from \"../../overlay/DropdownMenu\";\nimport { Icon } from \"../Icon\";\n\nexport const SEGMENT_CAPTION_CLASS =\n \"truncate text-xs font-semibold text-foreground\";\nexport const SEGMENT_KEY_CLASS =\n \"text-[11px] font-semibold uppercase leading-none tracking-wide text-muted-foreground\";\n\n// One trigger in the segmented runtime bar: a dropdown whose button carries the\n// segment's current value. `min-w-0` on the root lets a segment shrink past its\n// content — without it the flex item's automatic minimum size is its max-content\n// width, so a row of segments overflows a narrow container instead of ellipsing\n// its captions.\nexport function RuntimeSegment({\n items,\n menuLabel,\n title,\n header,\n disabled = false,\n hideChevron = false,\n className,\n children,\n}: {\n items: DropdownMenuItem[];\n menuLabel: string;\n title: string;\n header?: ReactNode;\n disabled?: boolean;\n /** Drops the trailing chevron, for a segment whose caption is a bare glyph. */\n hideChevron?: boolean;\n className?: string | undefined;\n children: ReactNode;\n}) {\n return (\n <DropdownMenu\n align=\"left\"\n menuLabel={menuLabel}\n items={items}\n {...(header ? { header } : {})}\n menuClassName=\"max-h-[70vh] min-w-56 max-w-80 overflow-y-auto\"\n className={cn(\n \"h-control-h min-w-0 border-l border-border first:border-l-0 [&>span]:min-w-0 [&>span]:w-full\",\n className,\n )}\n trigger={\n <button\n type=\"button\"\n disabled={disabled}\n title={title}\n className=\"inline-flex h-full w-full min-w-0 items-center gap-1.5 px-density-2 transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring [[aria-expanded=true]_&]:bg-muted\"\n >\n <RuntimeSegmentCaption hideChevron={hideChevron}>\n {children}\n </RuntimeSegmentCaption>\n </button>\n }\n />\n );\n}\n\nexport function RuntimeSegmentCaption({\n children,\n hideChevron = false,\n}: {\n children: ReactNode;\n hideChevron?: boolean;\n}) {\n return (\n <>\n {children}\n {!hideChevron && (\n <Icon\n icon={UiChevronDown}\n className=\"size-3 shrink-0 text-muted-foreground/70\"\n />\n )}\n </>\n );\n}\n\nexport function SegmentItemLabel({\n text,\n hint,\n selected,\n stacked = false,\n}: {\n text: string;\n hint?: string | undefined;\n selected: boolean;\n stacked?: boolean | undefined;\n}) {\n return (\n <>\n <span className=\"min-w-0 flex-1\">\n <span className={cn(\"block truncate\", selected && \"font-semibold\")}>\n {text}\n </span>\n {hint && stacked && (\n <span className=\"block whitespace-normal text-[11px] leading-4 text-muted-foreground\">\n {hint}\n </span>\n )}\n </span>\n {hint && !stacked && (\n <span className=\"shrink-0 text-[11px] text-muted-foreground\">\n {hint}\n </span>\n )}\n <Icon\n icon={UiCheck}\n className={cn(\n \"size-3.5 shrink-0 text-primary\",\n !selected && \"invisible\",\n )}\n />\n </>\n );\n}\n"],"names":["jsx","DropdownMenu","cn","jsxs","Fragment","Icon","UiChevronDown","UiCheck"],"mappings":";;;;;;;;AASO,MAAM,wBACX;AACK,MAAM,oBACX;AAOK,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,cAAc;AAAA,EACd;AAAA,EACA;AACF,GAUG;AACD,SACEA,2BAAAA;AAAAA,IAACC,aAAAA;AAAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN;AAAA,MACA;AAAA,MACC,GAAI,SAAS,EAAE,OAAA,IAAW,CAAA;AAAA,MAC3B,eAAc;AAAA,MACd,WAAWC,MAAAA;AAAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAEF,SACEF,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL;AAAA,UACA;AAAA,UACA,WAAU;AAAA,UAEV,UAAAA,2BAAAA,IAAC,uBAAA,EAAsB,aACpB,SAAA,CACH;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAIR;AAEO,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA,cAAc;AAChB,GAGG;AACD,SACEG,2BAAAA,KAAAC,qBAAA,EACG,UAAA;AAAA,IAAA;AAAA,IACA,CAAC,eACAJ,2BAAAA;AAAAA,MAACK,KAAAA;AAAAA,MAAA;AAAA,QACC,MAAMC,cAAAA;AAAAA,QACN,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EACZ,GAEJ;AAEJ;AAEO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AACZ,GAKG;AACD,SACEH,2BAAAA,KAAAC,qBAAA,EACE,UAAA;AAAA,IAAAD,2BAAAA,KAAC,QAAA,EAAK,WAAU,kBACd,UAAA;AAAA,MAAAH,2BAAAA,IAAC,UAAK,WAAWE,SAAG,kBAAkB,YAAY,eAAe,GAC9D,UAAA,MACH;AAAA,MACC,QAAQ,WACPF,2BAAAA,IAAC,QAAA,EAAK,WAAU,uEACb,UAAA,KAAA,CACH;AAAA,IAAA,GAEJ;AAAA,IACC,QAAQ,CAAC,0CACP,QAAA,EAAK,WAAU,8CACb,UAAA,MACH;AAAA,IAEFA,2BAAAA;AAAAA,MAACK,KAAAA;AAAAA,MAAA;AAAA,QACC,MAAME,QAAAA;AAAAA,QACN,WAAWL,MAAAA;AAAAA,UACT;AAAA,UACA,CAAC,YAAY;AAAA,QAAA;AAAA,MACf;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeBarSegment.d.ts","sourceRoot":"","sources":["../../../src/data/runtime/RuntimeBarSegment.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGnD,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,4BAA4B,CAAC;AAIpC,eAAO,MAAM,qBAAqB,mDACgB,CAAC;AACnD,eAAO,MAAM,iBAAiB,yFAC0D,CAAC;AAOzF,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,SAAS,EACT,KAAK,EACL,MAAM,EACN,QAAgB,EAChB,WAAmB,EACnB,SAAS,EACT,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,QAAQ,EAAE,SAAS,CAAC;CACrB,+BA8BA;AAED,wBAAgB,qBAAqB,CAAC,EACpC,QAAQ,EACR,WAAmB,GACpB,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,+BAYA;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,OAAe,GAChB,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B,+BA2BA"}
1
+ {"version":3,"file":"RuntimeBarSegment.d.ts","sourceRoot":"","sources":["../../../src/data/runtime/RuntimeBarSegment.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,4BAA4B,CAAC;AAGpC,eAAO,MAAM,qBAAqB,mDACgB,CAAC;AACnD,eAAO,MAAM,iBAAiB,yFAC0D,CAAC;AAOzF,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,SAAS,EACT,KAAK,EACL,MAAM,EACN,QAAgB,EAChB,WAAmB,EACnB,SAAS,EACT,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,QAAQ,EAAE,SAAS,CAAC;CACrB,+BA0BA;AAED,wBAAgB,qBAAqB,CAAC,EACpC,QAAQ,EACR,WAAmB,GACpB,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,+BAYA;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,OAAe,GAChB,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B,+BA2BA"}
@@ -1,9 +1,7 @@
1
1
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
- import { useContext } from "react";
3
2
  import { cn } from "../../lib/utils.js";
4
3
  import { DropdownMenu } from "../../overlay/DropdownMenu.js";
5
4
  import { Icon } from "../Icon.js";
6
- import { RuntimeBarVariantContext } from "./RuntimeBar.context.js";
7
5
  import { UiCheck } from "../../icons/components/UiCheck.js";
8
6
  import { UiChevronDown } from "../../icons/components/UiChevronDown.js";
9
7
  const SEGMENT_CAPTION_CLASS = "truncate text-xs font-semibold text-foreground";
@@ -18,7 +16,6 @@ function RuntimeSegment({
18
16
  className,
19
17
  children
20
18
  }) {
21
- const variant = useContext(RuntimeBarVariantContext);
22
19
  return /* @__PURE__ */ jsx(
23
20
  DropdownMenu,
24
21
  {
@@ -28,8 +25,7 @@ function RuntimeSegment({
28
25
  ...header ? { header } : {},
29
26
  menuClassName: "max-h-[70vh] min-w-56 max-w-80 overflow-y-auto",
30
27
  className: cn(
31
- "h-control-h min-w-0 [&>span]:min-w-0 [&>span]:w-full",
32
- variant === "combo" ? "rounded-md border border-input bg-background" : "border-l border-border first:border-l-0",
28
+ "h-control-h min-w-0 border-l border-border first:border-l-0 [&>span]:min-w-0 [&>span]:w-full",
33
29
  className
34
30
  ),
35
31
  trigger: /* @__PURE__ */ jsx(
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeBarSegment.js","sources":["../../../src/data/runtime/RuntimeBarSegment.tsx"],"sourcesContent":["import { useContext, type ReactNode } from \"react\";\nimport { UiCheck, UiChevronDown } from \"../../icons\";\nimport { cn } from \"../../lib/utils\";\nimport {\n DropdownMenu,\n type DropdownMenuItem,\n} from \"../../overlay/DropdownMenu\";\nimport { Icon } from \"../Icon\";\nimport { RuntimeBarVariantContext } from \"./RuntimeBar.context\";\n\nexport const SEGMENT_CAPTION_CLASS =\n \"truncate text-xs font-semibold text-foreground\";\nexport const SEGMENT_KEY_CLASS =\n \"text-[11px] font-semibold uppercase leading-none tracking-wide text-muted-foreground\";\n\n// One trigger in the segmented runtime bar: a dropdown whose button carries the\n// segment's current value. `min-w-0` on the root lets a segment shrink past its\n// content — without it the flex item's automatic minimum size is its max-content\n// width, so a row of segments overflows a narrow container instead of ellipsing\n// its captions.\nexport function RuntimeSegment({\n items,\n menuLabel,\n title,\n header,\n disabled = false,\n hideChevron = false,\n className,\n children,\n}: {\n items: DropdownMenuItem[];\n menuLabel: string;\n title: string;\n header?: ReactNode;\n disabled?: boolean;\n /** Drops the trailing chevron, for a segment whose caption is a bare glyph. */\n hideChevron?: boolean;\n className?: string | undefined;\n children: ReactNode;\n}) {\n const variant = useContext(RuntimeBarVariantContext);\n return (\n <DropdownMenu\n align=\"left\"\n menuLabel={menuLabel}\n items={items}\n {...(header ? { header } : {})}\n menuClassName=\"max-h-[70vh] min-w-56 max-w-80 overflow-y-auto\"\n className={cn(\n \"h-control-h min-w-0 [&>span]:min-w-0 [&>span]:w-full\",\n variant === \"combo\"\n ? \"rounded-md border border-input bg-background\"\n : \"border-l border-border first:border-l-0\",\n className,\n )}\n trigger={\n <button\n type=\"button\"\n disabled={disabled}\n title={title}\n className=\"inline-flex h-full w-full min-w-0 items-center gap-1.5 px-density-2 transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring [[aria-expanded=true]_&]:bg-muted\"\n >\n <RuntimeSegmentCaption hideChevron={hideChevron}>\n {children}\n </RuntimeSegmentCaption>\n </button>\n }\n />\n );\n}\n\nexport function RuntimeSegmentCaption({\n children,\n hideChevron = false,\n}: {\n children: ReactNode;\n hideChevron?: boolean;\n}) {\n return (\n <>\n {children}\n {!hideChevron && (\n <Icon\n icon={UiChevronDown}\n className=\"size-3 shrink-0 text-muted-foreground/70\"\n />\n )}\n </>\n );\n}\n\nexport function SegmentItemLabel({\n text,\n hint,\n selected,\n stacked = false,\n}: {\n text: string;\n hint?: string | undefined;\n selected: boolean;\n stacked?: boolean | undefined;\n}) {\n return (\n <>\n <span className=\"min-w-0 flex-1\">\n <span className={cn(\"block truncate\", selected && \"font-semibold\")}>\n {text}\n </span>\n {hint && stacked && (\n <span className=\"block whitespace-normal text-[11px] leading-4 text-muted-foreground\">\n {hint}\n </span>\n )}\n </span>\n {hint && !stacked && (\n <span className=\"shrink-0 text-[11px] text-muted-foreground\">\n {hint}\n </span>\n )}\n <Icon\n icon={UiCheck}\n className={cn(\n \"size-3.5 shrink-0 text-primary\",\n !selected && \"invisible\",\n )}\n />\n </>\n );\n}\n"],"names":[],"mappings":";;;;;;;;AAUO,MAAM,wBACX;AACK,MAAM,oBACX;AAOK,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,cAAc;AAAA,EACd;AAAA,EACA;AACF,GAUG;AACD,QAAM,UAAU,WAAW,wBAAwB;AACnD,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN;AAAA,MACA;AAAA,MACC,GAAI,SAAS,EAAE,OAAA,IAAW,CAAA;AAAA,MAC3B,eAAc;AAAA,MACd,WAAW;AAAA,QACT;AAAA,QACA,YAAY,UACR,iDACA;AAAA,QACJ;AAAA,MAAA;AAAA,MAEF,SACE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL;AAAA,UACA;AAAA,UACA,WAAU;AAAA,UAEV,UAAA,oBAAC,uBAAA,EAAsB,aACpB,SAAA,CACH;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAIR;AAEO,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA,cAAc;AAChB,GAGG;AACD,SACE,qBAAA,UAAA,EACG,UAAA;AAAA,IAAA;AAAA,IACA,CAAC,eACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EACZ,GAEJ;AAEJ;AAEO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AACZ,GAKG;AACD,SACE,qBAAA,UAAA,EACE,UAAA;AAAA,IAAA,qBAAC,QAAA,EAAK,WAAU,kBACd,UAAA;AAAA,MAAA,oBAAC,UAAK,WAAW,GAAG,kBAAkB,YAAY,eAAe,GAC9D,UAAA,MACH;AAAA,MACC,QAAQ,WACP,oBAAC,QAAA,EAAK,WAAU,uEACb,UAAA,KAAA,CACH;AAAA,IAAA,GAEJ;AAAA,IACC,QAAQ,CAAC,+BACP,QAAA,EAAK,WAAU,8CACb,UAAA,MACH;AAAA,IAEF;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,WAAW;AAAA,UACT;AAAA,UACA,CAAC,YAAY;AAAA,QAAA;AAAA,MACf;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;"}
1
+ {"version":3,"file":"RuntimeBarSegment.js","sources":["../../../src/data/runtime/RuntimeBarSegment.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { UiCheck, UiChevronDown } from \"../../icons\";\nimport { cn } from \"../../lib/utils\";\nimport {\n DropdownMenu,\n type DropdownMenuItem,\n} from \"../../overlay/DropdownMenu\";\nimport { Icon } from \"../Icon\";\n\nexport const SEGMENT_CAPTION_CLASS =\n \"truncate text-xs font-semibold text-foreground\";\nexport const SEGMENT_KEY_CLASS =\n \"text-[11px] font-semibold uppercase leading-none tracking-wide text-muted-foreground\";\n\n// One trigger in the segmented runtime bar: a dropdown whose button carries the\n// segment's current value. `min-w-0` on the root lets a segment shrink past its\n// content — without it the flex item's automatic minimum size is its max-content\n// width, so a row of segments overflows a narrow container instead of ellipsing\n// its captions.\nexport function RuntimeSegment({\n items,\n menuLabel,\n title,\n header,\n disabled = false,\n hideChevron = false,\n className,\n children,\n}: {\n items: DropdownMenuItem[];\n menuLabel: string;\n title: string;\n header?: ReactNode;\n disabled?: boolean;\n /** Drops the trailing chevron, for a segment whose caption is a bare glyph. */\n hideChevron?: boolean;\n className?: string | undefined;\n children: ReactNode;\n}) {\n return (\n <DropdownMenu\n align=\"left\"\n menuLabel={menuLabel}\n items={items}\n {...(header ? { header } : {})}\n menuClassName=\"max-h-[70vh] min-w-56 max-w-80 overflow-y-auto\"\n className={cn(\n \"h-control-h min-w-0 border-l border-border first:border-l-0 [&>span]:min-w-0 [&>span]:w-full\",\n className,\n )}\n trigger={\n <button\n type=\"button\"\n disabled={disabled}\n title={title}\n className=\"inline-flex h-full w-full min-w-0 items-center gap-1.5 px-density-2 transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring [[aria-expanded=true]_&]:bg-muted\"\n >\n <RuntimeSegmentCaption hideChevron={hideChevron}>\n {children}\n </RuntimeSegmentCaption>\n </button>\n }\n />\n );\n}\n\nexport function RuntimeSegmentCaption({\n children,\n hideChevron = false,\n}: {\n children: ReactNode;\n hideChevron?: boolean;\n}) {\n return (\n <>\n {children}\n {!hideChevron && (\n <Icon\n icon={UiChevronDown}\n className=\"size-3 shrink-0 text-muted-foreground/70\"\n />\n )}\n </>\n );\n}\n\nexport function SegmentItemLabel({\n text,\n hint,\n selected,\n stacked = false,\n}: {\n text: string;\n hint?: string | undefined;\n selected: boolean;\n stacked?: boolean | undefined;\n}) {\n return (\n <>\n <span className=\"min-w-0 flex-1\">\n <span className={cn(\"block truncate\", selected && \"font-semibold\")}>\n {text}\n </span>\n {hint && stacked && (\n <span className=\"block whitespace-normal text-[11px] leading-4 text-muted-foreground\">\n {hint}\n </span>\n )}\n </span>\n {hint && !stacked && (\n <span className=\"shrink-0 text-[11px] text-muted-foreground\">\n {hint}\n </span>\n )}\n <Icon\n icon={UiCheck}\n className={cn(\n \"size-3.5 shrink-0 text-primary\",\n !selected && \"invisible\",\n )}\n />\n </>\n );\n}\n"],"names":[],"mappings":";;;;;;AASO,MAAM,wBACX;AACK,MAAM,oBACX;AAOK,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,cAAc;AAAA,EACd;AAAA,EACA;AACF,GAUG;AACD,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN;AAAA,MACA;AAAA,MACC,GAAI,SAAS,EAAE,OAAA,IAAW,CAAA;AAAA,MAC3B,eAAc;AAAA,MACd,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAEF,SACE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL;AAAA,UACA;AAAA,UACA,WAAU;AAAA,UAEV,UAAA,oBAAC,uBAAA,EAAsB,aACpB,SAAA,CACH;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAIR;AAEO,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA,cAAc;AAChB,GAGG;AACD,SACE,qBAAA,UAAA,EACG,UAAA;AAAA,IAAA;AAAA,IACA,CAAC,eACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EACZ,GAEJ;AAEJ;AAEO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AACZ,GAKG;AACD,SACE,qBAAA,UAAA,EACE,UAAA;AAAA,IAAA,qBAAC,QAAA,EAAK,WAAU,kBACd,UAAA;AAAA,MAAA,oBAAC,UAAK,WAAW,GAAG,kBAAkB,YAAY,eAAe,GAC9D,UAAA,MACH;AAAA,MACC,QAAQ,WACP,oBAAC,QAAA,EAAK,WAAU,uEACb,UAAA,KAAA,CACH;AAAA,IAAA,GAEJ;AAAA,IACC,QAAQ,CAAC,+BACP,QAAA,EAAK,WAAU,8CACb,UAAA,MACH;AAAA,IAEF;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,WAAW;AAAA,UACT;AAAA,UACA,CAAC,YAAY;AAAA,QAAA;AAAA,MACf;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;"}
@@ -5,13 +5,12 @@ function runtimeBarInlineCount({
5
5
  width,
6
6
  identity,
7
7
  trigger,
8
- fields,
9
- gap
8
+ fields
10
9
  }) {
11
- let occupied = identity + trigger + gap;
10
+ let occupied = identity + trigger;
12
11
  let count = 0;
13
12
  for (const field of fields) {
14
- occupied += field + gap;
13
+ occupied += field;
15
14
  if (occupied > width) break;
16
15
  count++;
17
16
  }
@@ -31,16 +30,11 @@ function useRuntimeBarOverflow() {
31
30
  throw new Error(
32
31
  "Runtime bar measurement requires identity and a menu trigger"
33
32
  );
34
- const spacing = getComputedStyle(measurement).columnGap;
35
- const gap = spacing === "normal" || spacing === "" ? 0 : Number.parseFloat(spacing);
36
- if (!Number.isFinite(gap))
37
- throw new Error(`Invalid runtime bar spacing: ${spacing}`);
38
33
  const count = runtimeBarInlineCount({
39
34
  width: width - 2,
40
35
  identity: identity.getBoundingClientRect().width,
41
36
  trigger: trigger.getBoundingClientRect().width,
42
- fields: controls.map((node) => node.getBoundingClientRect().width),
43
- gap
37
+ fields: controls.map((node) => node.getBoundingClientRect().width)
44
38
  });
45
39
  setVisibleCount((previous) => previous === count ? previous : count);
46
40
  }, [container, measurement]);
@@ -1 +1 @@
1
- {"version":3,"file":"use-runtime-bar-overflow.cjs","sources":["../../../src/data/runtime/use-runtime-bar-overflow.ts"],"sourcesContent":["import { useCallback, useLayoutEffect, useState } from \"react\";\n\nexport function runtimeBarInlineCount({\n width,\n identity,\n trigger,\n fields,\n gap,\n}: {\n width: number;\n identity: number;\n trigger: number;\n fields: number[];\n gap: number;\n}) {\n let occupied = identity + trigger + gap;\n let count = 0;\n for (const field of fields) {\n occupied += field + gap;\n if (occupied > width) break;\n count++;\n }\n return count;\n}\n\nexport function useRuntimeBarOverflow() {\n const [container, setContainer] = useState<HTMLDivElement | null>(null);\n const [measurement, setMeasurement] = useState<HTMLDivElement | null>(null);\n const [visibleCount, setVisibleCount] = useState(Infinity);\n\n const measure = useCallback(() => {\n if (!container || !measurement) return;\n const width = container.getBoundingClientRect().width;\n if (width <= 0) return;\n const [identity, ...controls] = [...measurement.children];\n const trigger = controls.pop();\n if (!identity || !trigger)\n throw new Error(\n \"Runtime bar measurement requires identity and a menu trigger\",\n );\n const spacing = getComputedStyle(measurement).columnGap;\n const gap =\n spacing === \"normal\" || spacing === \"\" ? 0 : Number.parseFloat(spacing);\n if (!Number.isFinite(gap))\n throw new Error(`Invalid runtime bar spacing: ${spacing}`);\n const count = runtimeBarInlineCount({\n width: width - 2,\n identity: identity.getBoundingClientRect().width,\n trigger: trigger.getBoundingClientRect().width,\n fields: controls.map((node) => node.getBoundingClientRect().width),\n gap,\n });\n setVisibleCount((previous) => (previous === count ? previous : count));\n }, [container, measurement]);\n\n useLayoutEffect(() => {\n measure();\n });\n\n useLayoutEffect(() => {\n if (!container || !measurement) return;\n measure();\n const observer =\n typeof ResizeObserver === \"undefined\"\n ? undefined\n : new ResizeObserver(measure);\n observer?.observe(container);\n observer?.observe(measurement);\n window.addEventListener(\"resize\", measure);\n return () => {\n observer?.disconnect();\n window.removeEventListener(\"resize\", measure);\n };\n }, [container, measurement, measure]);\n\n return {\n containerRef: setContainer,\n measurementRef: setMeasurement,\n visibleCount,\n };\n}\n"],"names":["useState","useCallback","useLayoutEffect"],"mappings":";;;AAEO,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMG;AACD,MAAI,WAAW,WAAW,UAAU;AACpC,MAAI,QAAQ;AACZ,aAAW,SAAS,QAAQ;AAC1B,gBAAY,QAAQ;AACpB,QAAI,WAAW,MAAO;AACtB;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,wBAAwB;AACtC,QAAM,CAAC,WAAW,YAAY,IAAIA,MAAAA,SAAgC,IAAI;AACtE,QAAM,CAAC,aAAa,cAAc,IAAIA,MAAAA,SAAgC,IAAI;AAC1E,QAAM,CAAC,cAAc,eAAe,IAAIA,MAAAA,SAAS,QAAQ;AAEzD,QAAM,UAAUC,MAAAA,YAAY,MAAM;AAChC,QAAI,CAAC,aAAa,CAAC,YAAa;AAChC,UAAM,QAAQ,UAAU,sBAAA,EAAwB;AAChD,QAAI,SAAS,EAAG;AAChB,UAAM,CAAC,UAAU,GAAG,QAAQ,IAAI,CAAC,GAAG,YAAY,QAAQ;AACxD,UAAM,UAAU,SAAS,IAAA;AACzB,QAAI,CAAC,YAAY,CAAC;AAChB,YAAM,IAAI;AAAA,QACR;AAAA,MAAA;AAEJ,UAAM,UAAU,iBAAiB,WAAW,EAAE;AAC9C,UAAM,MACJ,YAAY,YAAY,YAAY,KAAK,IAAI,OAAO,WAAW,OAAO;AACxE,QAAI,CAAC,OAAO,SAAS,GAAG;AACtB,YAAM,IAAI,MAAM,gCAAgC,OAAO,EAAE;AAC3D,UAAM,QAAQ,sBAAsB;AAAA,MAClC,OAAO,QAAQ;AAAA,MACf,UAAU,SAAS,sBAAA,EAAwB;AAAA,MAC3C,SAAS,QAAQ,sBAAA,EAAwB;AAAA,MACzC,QAAQ,SAAS,IAAI,CAAC,SAAS,KAAK,sBAAA,EAAwB,KAAK;AAAA,MACjE;AAAA,IAAA,CACD;AACD,oBAAgB,CAAC,aAAc,aAAa,QAAQ,WAAW,KAAM;AAAA,EACvE,GAAG,CAAC,WAAW,WAAW,CAAC;AAE3BC,QAAAA,gBAAgB,MAAM;AACpB,YAAA;AAAA,EACF,CAAC;AAEDA,QAAAA,gBAAgB,MAAM;AACpB,QAAI,CAAC,aAAa,CAAC,YAAa;AAChC,YAAA;AACA,UAAM,WACJ,OAAO,mBAAmB,cACtB,SACA,IAAI,eAAe,OAAO;AAChC,yCAAU,QAAQ;AAClB,yCAAU,QAAQ;AAClB,WAAO,iBAAiB,UAAU,OAAO;AACzC,WAAO,MAAM;AACX,2CAAU;AACV,aAAO,oBAAoB,UAAU,OAAO;AAAA,IAC9C;AAAA,EACF,GAAG,CAAC,WAAW,aAAa,OAAO,CAAC;AAEpC,SAAO;AAAA,IACL,cAAc;AAAA,IACd,gBAAgB;AAAA,IAChB;AAAA,EAAA;AAEJ;;;"}
1
+ {"version":3,"file":"use-runtime-bar-overflow.cjs","sources":["../../../src/data/runtime/use-runtime-bar-overflow.ts"],"sourcesContent":["import { useCallback, useLayoutEffect, useState } from \"react\";\n\nexport function runtimeBarInlineCount({\n width,\n identity,\n trigger,\n fields,\n}: {\n width: number;\n identity: number;\n trigger: number;\n fields: number[];\n}) {\n let occupied = identity + trigger;\n let count = 0;\n for (const field of fields) {\n occupied += field;\n if (occupied > width) break;\n count++;\n }\n return count;\n}\n\nexport function useRuntimeBarOverflow() {\n const [container, setContainer] = useState<HTMLDivElement | null>(null);\n const [measurement, setMeasurement] = useState<HTMLDivElement | null>(null);\n const [visibleCount, setVisibleCount] = useState(Infinity);\n\n const measure = useCallback(() => {\n if (!container || !measurement) return;\n const width = container.getBoundingClientRect().width;\n if (width <= 0) return;\n const [identity, ...controls] = [...measurement.children];\n const trigger = controls.pop();\n if (!identity || !trigger)\n throw new Error(\n \"Runtime bar measurement requires identity and a menu trigger\",\n );\n const count = runtimeBarInlineCount({\n width: width - 2,\n identity: identity.getBoundingClientRect().width,\n trigger: trigger.getBoundingClientRect().width,\n fields: controls.map((node) => node.getBoundingClientRect().width),\n });\n setVisibleCount((previous) => (previous === count ? previous : count));\n }, [container, measurement]);\n\n useLayoutEffect(() => {\n measure();\n });\n\n useLayoutEffect(() => {\n if (!container || !measurement) return;\n measure();\n const observer =\n typeof ResizeObserver === \"undefined\"\n ? undefined\n : new ResizeObserver(measure);\n observer?.observe(container);\n observer?.observe(measurement);\n window.addEventListener(\"resize\", measure);\n return () => {\n observer?.disconnect();\n window.removeEventListener(\"resize\", measure);\n };\n }, [container, measurement, measure]);\n\n return {\n containerRef: setContainer,\n measurementRef: setMeasurement,\n visibleCount,\n };\n}\n"],"names":["useState","useCallback","useLayoutEffect"],"mappings":";;;AAEO,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKG;AACD,MAAI,WAAW,WAAW;AAC1B,MAAI,QAAQ;AACZ,aAAW,SAAS,QAAQ;AAC1B,gBAAY;AACZ,QAAI,WAAW,MAAO;AACtB;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,wBAAwB;AACtC,QAAM,CAAC,WAAW,YAAY,IAAIA,MAAAA,SAAgC,IAAI;AACtE,QAAM,CAAC,aAAa,cAAc,IAAIA,MAAAA,SAAgC,IAAI;AAC1E,QAAM,CAAC,cAAc,eAAe,IAAIA,MAAAA,SAAS,QAAQ;AAEzD,QAAM,UAAUC,MAAAA,YAAY,MAAM;AAChC,QAAI,CAAC,aAAa,CAAC,YAAa;AAChC,UAAM,QAAQ,UAAU,sBAAA,EAAwB;AAChD,QAAI,SAAS,EAAG;AAChB,UAAM,CAAC,UAAU,GAAG,QAAQ,IAAI,CAAC,GAAG,YAAY,QAAQ;AACxD,UAAM,UAAU,SAAS,IAAA;AACzB,QAAI,CAAC,YAAY,CAAC;AAChB,YAAM,IAAI;AAAA,QACR;AAAA,MAAA;AAEJ,UAAM,QAAQ,sBAAsB;AAAA,MAClC,OAAO,QAAQ;AAAA,MACf,UAAU,SAAS,sBAAA,EAAwB;AAAA,MAC3C,SAAS,QAAQ,sBAAA,EAAwB;AAAA,MACzC,QAAQ,SAAS,IAAI,CAAC,SAAS,KAAK,sBAAA,EAAwB,KAAK;AAAA,IAAA,CAClE;AACD,oBAAgB,CAAC,aAAc,aAAa,QAAQ,WAAW,KAAM;AAAA,EACvE,GAAG,CAAC,WAAW,WAAW,CAAC;AAE3BC,QAAAA,gBAAgB,MAAM;AACpB,YAAA;AAAA,EACF,CAAC;AAEDA,QAAAA,gBAAgB,MAAM;AACpB,QAAI,CAAC,aAAa,CAAC,YAAa;AAChC,YAAA;AACA,UAAM,WACJ,OAAO,mBAAmB,cACtB,SACA,IAAI,eAAe,OAAO;AAChC,yCAAU,QAAQ;AAClB,yCAAU,QAAQ;AAClB,WAAO,iBAAiB,UAAU,OAAO;AACzC,WAAO,MAAM;AACX,2CAAU;AACV,aAAO,oBAAoB,UAAU,OAAO;AAAA,IAC9C;AAAA,EACF,GAAG,CAAC,WAAW,aAAa,OAAO,CAAC;AAEpC,SAAO;AAAA,IACL,cAAc;AAAA,IACd,gBAAgB;AAAA,IAChB;AAAA,EAAA;AAEJ;;;"}
@@ -1,9 +1,8 @@
1
- export declare function runtimeBarInlineCount({ width, identity, trigger, fields, gap, }: {
1
+ export declare function runtimeBarInlineCount({ width, identity, trigger, fields, }: {
2
2
  width: number;
3
3
  identity: number;
4
4
  trigger: number;
5
5
  fields: number[];
6
- gap: number;
7
6
  }): number;
8
7
  export declare function useRuntimeBarOverflow(): {
9
8
  containerRef: import('react').Dispatch<import('react').SetStateAction<HTMLDivElement | null>>;
@@ -1 +1 @@
1
- {"version":3,"file":"use-runtime-bar-overflow.d.ts","sourceRoot":"","sources":["../../../src/data/runtime/use-runtime-bar-overflow.ts"],"names":[],"mappings":"AAEA,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,QAAQ,EACR,OAAO,EACP,MAAM,EACN,GAAG,GACJ,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb,UASA;AAED,wBAAgB,qBAAqB;;;;EAuDpC"}
1
+ {"version":3,"file":"use-runtime-bar-overflow.d.ts","sourceRoot":"","sources":["../../../src/data/runtime/use-runtime-bar-overflow.ts"],"names":[],"mappings":"AAEA,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,QAAQ,EACR,OAAO,EACP,MAAM,GACP,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,UASA;AAED,wBAAgB,qBAAqB;;;;EAiDpC"}
@@ -3,13 +3,12 @@ function runtimeBarInlineCount({
3
3
  width,
4
4
  identity,
5
5
  trigger,
6
- fields,
7
- gap
6
+ fields
8
7
  }) {
9
- let occupied = identity + trigger + gap;
8
+ let occupied = identity + trigger;
10
9
  let count = 0;
11
10
  for (const field of fields) {
12
- occupied += field + gap;
11
+ occupied += field;
13
12
  if (occupied > width) break;
14
13
  count++;
15
14
  }
@@ -29,16 +28,11 @@ function useRuntimeBarOverflow() {
29
28
  throw new Error(
30
29
  "Runtime bar measurement requires identity and a menu trigger"
31
30
  );
32
- const spacing = getComputedStyle(measurement).columnGap;
33
- const gap = spacing === "normal" || spacing === "" ? 0 : Number.parseFloat(spacing);
34
- if (!Number.isFinite(gap))
35
- throw new Error(`Invalid runtime bar spacing: ${spacing}`);
36
31
  const count = runtimeBarInlineCount({
37
32
  width: width - 2,
38
33
  identity: identity.getBoundingClientRect().width,
39
34
  trigger: trigger.getBoundingClientRect().width,
40
- fields: controls.map((node) => node.getBoundingClientRect().width),
41
- gap
35
+ fields: controls.map((node) => node.getBoundingClientRect().width)
42
36
  });
43
37
  setVisibleCount((previous) => previous === count ? previous : count);
44
38
  }, [container, measurement]);
@@ -1 +1 @@
1
- {"version":3,"file":"use-runtime-bar-overflow.js","sources":["../../../src/data/runtime/use-runtime-bar-overflow.ts"],"sourcesContent":["import { useCallback, useLayoutEffect, useState } from \"react\";\n\nexport function runtimeBarInlineCount({\n width,\n identity,\n trigger,\n fields,\n gap,\n}: {\n width: number;\n identity: number;\n trigger: number;\n fields: number[];\n gap: number;\n}) {\n let occupied = identity + trigger + gap;\n let count = 0;\n for (const field of fields) {\n occupied += field + gap;\n if (occupied > width) break;\n count++;\n }\n return count;\n}\n\nexport function useRuntimeBarOverflow() {\n const [container, setContainer] = useState<HTMLDivElement | null>(null);\n const [measurement, setMeasurement] = useState<HTMLDivElement | null>(null);\n const [visibleCount, setVisibleCount] = useState(Infinity);\n\n const measure = useCallback(() => {\n if (!container || !measurement) return;\n const width = container.getBoundingClientRect().width;\n if (width <= 0) return;\n const [identity, ...controls] = [...measurement.children];\n const trigger = controls.pop();\n if (!identity || !trigger)\n throw new Error(\n \"Runtime bar measurement requires identity and a menu trigger\",\n );\n const spacing = getComputedStyle(measurement).columnGap;\n const gap =\n spacing === \"normal\" || spacing === \"\" ? 0 : Number.parseFloat(spacing);\n if (!Number.isFinite(gap))\n throw new Error(`Invalid runtime bar spacing: ${spacing}`);\n const count = runtimeBarInlineCount({\n width: width - 2,\n identity: identity.getBoundingClientRect().width,\n trigger: trigger.getBoundingClientRect().width,\n fields: controls.map((node) => node.getBoundingClientRect().width),\n gap,\n });\n setVisibleCount((previous) => (previous === count ? previous : count));\n }, [container, measurement]);\n\n useLayoutEffect(() => {\n measure();\n });\n\n useLayoutEffect(() => {\n if (!container || !measurement) return;\n measure();\n const observer =\n typeof ResizeObserver === \"undefined\"\n ? undefined\n : new ResizeObserver(measure);\n observer?.observe(container);\n observer?.observe(measurement);\n window.addEventListener(\"resize\", measure);\n return () => {\n observer?.disconnect();\n window.removeEventListener(\"resize\", measure);\n };\n }, [container, measurement, measure]);\n\n return {\n containerRef: setContainer,\n measurementRef: setMeasurement,\n visibleCount,\n };\n}\n"],"names":[],"mappings":";AAEO,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMG;AACD,MAAI,WAAW,WAAW,UAAU;AACpC,MAAI,QAAQ;AACZ,aAAW,SAAS,QAAQ;AAC1B,gBAAY,QAAQ;AACpB,QAAI,WAAW,MAAO;AACtB;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,wBAAwB;AACtC,QAAM,CAAC,WAAW,YAAY,IAAI,SAAgC,IAAI;AACtE,QAAM,CAAC,aAAa,cAAc,IAAI,SAAgC,IAAI;AAC1E,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,QAAQ;AAEzD,QAAM,UAAU,YAAY,MAAM;AAChC,QAAI,CAAC,aAAa,CAAC,YAAa;AAChC,UAAM,QAAQ,UAAU,sBAAA,EAAwB;AAChD,QAAI,SAAS,EAAG;AAChB,UAAM,CAAC,UAAU,GAAG,QAAQ,IAAI,CAAC,GAAG,YAAY,QAAQ;AACxD,UAAM,UAAU,SAAS,IAAA;AACzB,QAAI,CAAC,YAAY,CAAC;AAChB,YAAM,IAAI;AAAA,QACR;AAAA,MAAA;AAEJ,UAAM,UAAU,iBAAiB,WAAW,EAAE;AAC9C,UAAM,MACJ,YAAY,YAAY,YAAY,KAAK,IAAI,OAAO,WAAW,OAAO;AACxE,QAAI,CAAC,OAAO,SAAS,GAAG;AACtB,YAAM,IAAI,MAAM,gCAAgC,OAAO,EAAE;AAC3D,UAAM,QAAQ,sBAAsB;AAAA,MAClC,OAAO,QAAQ;AAAA,MACf,UAAU,SAAS,sBAAA,EAAwB;AAAA,MAC3C,SAAS,QAAQ,sBAAA,EAAwB;AAAA,MACzC,QAAQ,SAAS,IAAI,CAAC,SAAS,KAAK,sBAAA,EAAwB,KAAK;AAAA,MACjE;AAAA,IAAA,CACD;AACD,oBAAgB,CAAC,aAAc,aAAa,QAAQ,WAAW,KAAM;AAAA,EACvE,GAAG,CAAC,WAAW,WAAW,CAAC;AAE3B,kBAAgB,MAAM;AACpB,YAAA;AAAA,EACF,CAAC;AAED,kBAAgB,MAAM;AACpB,QAAI,CAAC,aAAa,CAAC,YAAa;AAChC,YAAA;AACA,UAAM,WACJ,OAAO,mBAAmB,cACtB,SACA,IAAI,eAAe,OAAO;AAChC,yCAAU,QAAQ;AAClB,yCAAU,QAAQ;AAClB,WAAO,iBAAiB,UAAU,OAAO;AACzC,WAAO,MAAM;AACX,2CAAU;AACV,aAAO,oBAAoB,UAAU,OAAO;AAAA,IAC9C;AAAA,EACF,GAAG,CAAC,WAAW,aAAa,OAAO,CAAC;AAEpC,SAAO;AAAA,IACL,cAAc;AAAA,IACd,gBAAgB;AAAA,IAChB;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"use-runtime-bar-overflow.js","sources":["../../../src/data/runtime/use-runtime-bar-overflow.ts"],"sourcesContent":["import { useCallback, useLayoutEffect, useState } from \"react\";\n\nexport function runtimeBarInlineCount({\n width,\n identity,\n trigger,\n fields,\n}: {\n width: number;\n identity: number;\n trigger: number;\n fields: number[];\n}) {\n let occupied = identity + trigger;\n let count = 0;\n for (const field of fields) {\n occupied += field;\n if (occupied > width) break;\n count++;\n }\n return count;\n}\n\nexport function useRuntimeBarOverflow() {\n const [container, setContainer] = useState<HTMLDivElement | null>(null);\n const [measurement, setMeasurement] = useState<HTMLDivElement | null>(null);\n const [visibleCount, setVisibleCount] = useState(Infinity);\n\n const measure = useCallback(() => {\n if (!container || !measurement) return;\n const width = container.getBoundingClientRect().width;\n if (width <= 0) return;\n const [identity, ...controls] = [...measurement.children];\n const trigger = controls.pop();\n if (!identity || !trigger)\n throw new Error(\n \"Runtime bar measurement requires identity and a menu trigger\",\n );\n const count = runtimeBarInlineCount({\n width: width - 2,\n identity: identity.getBoundingClientRect().width,\n trigger: trigger.getBoundingClientRect().width,\n fields: controls.map((node) => node.getBoundingClientRect().width),\n });\n setVisibleCount((previous) => (previous === count ? previous : count));\n }, [container, measurement]);\n\n useLayoutEffect(() => {\n measure();\n });\n\n useLayoutEffect(() => {\n if (!container || !measurement) return;\n measure();\n const observer =\n typeof ResizeObserver === \"undefined\"\n ? undefined\n : new ResizeObserver(measure);\n observer?.observe(container);\n observer?.observe(measurement);\n window.addEventListener(\"resize\", measure);\n return () => {\n observer?.disconnect();\n window.removeEventListener(\"resize\", measure);\n };\n }, [container, measurement, measure]);\n\n return {\n containerRef: setContainer,\n measurementRef: setMeasurement,\n visibleCount,\n };\n}\n"],"names":[],"mappings":";AAEO,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKG;AACD,MAAI,WAAW,WAAW;AAC1B,MAAI,QAAQ;AACZ,aAAW,SAAS,QAAQ;AAC1B,gBAAY;AACZ,QAAI,WAAW,MAAO;AACtB;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,wBAAwB;AACtC,QAAM,CAAC,WAAW,YAAY,IAAI,SAAgC,IAAI;AACtE,QAAM,CAAC,aAAa,cAAc,IAAI,SAAgC,IAAI;AAC1E,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,QAAQ;AAEzD,QAAM,UAAU,YAAY,MAAM;AAChC,QAAI,CAAC,aAAa,CAAC,YAAa;AAChC,UAAM,QAAQ,UAAU,sBAAA,EAAwB;AAChD,QAAI,SAAS,EAAG;AAChB,UAAM,CAAC,UAAU,GAAG,QAAQ,IAAI,CAAC,GAAG,YAAY,QAAQ;AACxD,UAAM,UAAU,SAAS,IAAA;AACzB,QAAI,CAAC,YAAY,CAAC;AAChB,YAAM,IAAI;AAAA,QACR;AAAA,MAAA;AAEJ,UAAM,QAAQ,sBAAsB;AAAA,MAClC,OAAO,QAAQ;AAAA,MACf,UAAU,SAAS,sBAAA,EAAwB;AAAA,MAC3C,SAAS,QAAQ,sBAAA,EAAwB;AAAA,MACzC,QAAQ,SAAS,IAAI,CAAC,SAAS,KAAK,sBAAA,EAAwB,KAAK;AAAA,IAAA,CAClE;AACD,oBAAgB,CAAC,aAAc,aAAa,QAAQ,WAAW,KAAM;AAAA,EACvE,GAAG,CAAC,WAAW,WAAW,CAAC;AAE3B,kBAAgB,MAAM;AACpB,YAAA;AAAA,EACF,CAAC;AAED,kBAAgB,MAAM;AACpB,QAAI,CAAC,aAAa,CAAC,YAAa;AAChC,YAAA;AACA,UAAM,WACJ,OAAO,mBAAmB,cACtB,SACA,IAAI,eAAe,OAAO;AAChC,yCAAU,QAAQ;AAClB,yCAAU,QAAQ;AAClB,WAAO,iBAAiB,UAAU,OAAO;AACzC,WAAO,MAAM;AACX,2CAAU;AACV,aAAO,oBAAoB,UAAU,OAAO;AAAA,IAC9C;AAAA,EACF,GAAG,CAAC,WAAW,aAAa,OAAO,CAAC;AAEpC,SAAO;AAAA,IACL,cAAc;AAAA,IACd,gBAAgB;AAAA,IAChB;AAAA,EAAA;AAEJ;"}
@@ -4,26 +4,6 @@ import { Test } from './types.js';
4
4
  export declare const completedTests: Test[];
5
5
  /** Same forest, but as an in-flight run: some running, some queued. */
6
6
  export declare const runningTests: Test[];
7
- /**
8
- * A suite whose leaves carry very large payloads: a 6×4 deep object, a
9
- * 500-row array, and an 800-line log — to stress JsonView, LogViewer, and the
10
- * detail pane's independent scrolling.
11
- */
12
- export declare const largeDetailTests: Test[];
13
- /**
14
- * A large forest (4 roots × depth 3 × breadth 4 = 340 nodes / 256 leaves) whose
15
- * every leaf carries the LargePayloads-sized detail (deep object + 500-row array
16
- * + 800-line log). Used for the dialog stress test: a long scrolling tree on the
17
- * left and very large detail payloads on the right.
18
- *
19
- * Depth is 3, not 4: at depth 4 (~1024 leaves) the jsdom unit test auto-expands
20
- * the failing branches and renders the whole tree, which OOM'd CI's
21
- * memory-constrained shared vitest worker (a STACK_TRACE_ERROR on the "very
22
- * large tree" test) once this package's suite grew. 340 nodes still scrolls and
23
- * stresses the detail panes while staying within the worker's budget; the
24
- * browser story renders the same fixture without the jsdom memory ceiling.
25
- */
26
- export declare const largeTreeTests: Test[];
27
7
  /**
28
8
  * Demo adapter proving the registry extension point: nodes named "setup" get a
29
9
  * custom detail body, an extra "Context" tab, and a node action — the seam that
@@ -1 +1 @@
1
- {"version":3,"file":"TestRunner.fixtures.d.ts","sourceRoot":"","sources":["../../../src/data/test-runner/TestRunner.fixtures.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAIpC,mFAAmF;AACnF,eAAO,MAAM,cAAc,EAAE,IAAI,EAmFhC,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,YAAY,EAAE,IAAI,EA+B9B,CAAC;AAsCF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,IAAI,EA0BlC,CAAC;AA0DF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc,EAAE,IAAI,EAEhC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,eA0C1B,CAAC"}
1
+ {"version":3,"file":"TestRunner.fixtures.d.ts","sourceRoot":"","sources":["../../../src/data/test-runner/TestRunner.fixtures.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAIpC,mFAAmF;AACnF,eAAO,MAAM,cAAc,EAAE,IAAI,EAmFhC,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,YAAY,EAAE,IAAI,EA+B9B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,eA0C1B,CAAC"}