@flanksource/clicky-ui 0.3.41 → 0.3.43

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 (487) hide show
  1. package/dist/ai.cjs +4 -0
  2. package/dist/ai.cjs.map +1 -1
  3. package/dist/ai.js +4 -0
  4. package/dist/ai.js.map +1 -1
  5. package/dist/comments/CommentCard.cjs +3 -1
  6. package/dist/comments/CommentCard.cjs.map +1 -1
  7. package/dist/comments/CommentCard.d.ts.map +1 -1
  8. package/dist/comments/CommentCard.js +4 -2
  9. package/dist/comments/CommentCard.js.map +1 -1
  10. package/dist/comments/CommentCardParts.cjs +16 -0
  11. package/dist/comments/CommentCardParts.cjs.map +1 -1
  12. package/dist/comments/CommentCardParts.d.ts +4 -1
  13. package/dist/comments/CommentCardParts.d.ts.map +1 -1
  14. package/dist/comments/CommentCardParts.js +16 -0
  15. package/dist/comments/CommentCardParts.js.map +1 -1
  16. package/dist/comments/comment-types.cjs.map +1 -1
  17. package/dist/comments/comment-types.d.ts +4 -0
  18. package/dist/comments/comment-types.d.ts.map +1 -1
  19. package/dist/comments/comment-types.js.map +1 -1
  20. package/dist/components/Combobox.cjs +54 -8
  21. package/dist/components/Combobox.cjs.map +1 -1
  22. package/dist/components/Combobox.d.ts.map +1 -1
  23. package/dist/components/Combobox.js +56 -10
  24. package/dist/components/Combobox.js.map +1 -1
  25. package/dist/components/ComboboxMenu.cjs +139 -113
  26. package/dist/components/ComboboxMenu.cjs.map +1 -1
  27. package/dist/components/ComboboxMenu.d.ts +3 -1
  28. package/dist/components/ComboboxMenu.d.ts.map +1 -1
  29. package/dist/components/ComboboxMenu.js +139 -113
  30. package/dist/components/ComboboxMenu.js.map +1 -1
  31. package/dist/components/ComboboxMenuTrigger.cjs +87 -0
  32. package/dist/components/ComboboxMenuTrigger.cjs.map +1 -0
  33. package/dist/components/ComboboxMenuTrigger.d.ts +23 -0
  34. package/dist/components/ComboboxMenuTrigger.d.ts.map +1 -0
  35. package/dist/components/ComboboxMenuTrigger.js +87 -0
  36. package/dist/components/ComboboxMenuTrigger.js.map +1 -0
  37. package/dist/components/JsonSchemaForm.cjs +30 -7
  38. package/dist/components/JsonSchemaForm.cjs.map +1 -1
  39. package/dist/components/JsonSchemaForm.d.ts.map +1 -1
  40. package/dist/components/JsonSchemaForm.js +30 -7
  41. package/dist/components/JsonSchemaForm.js.map +1 -1
  42. package/dist/components/SegmentedControl.cjs +20 -3
  43. package/dist/components/SegmentedControl.cjs.map +1 -1
  44. package/dist/components/SegmentedControl.d.ts +11 -0
  45. package/dist/components/SegmentedControl.d.ts.map +1 -1
  46. package/dist/components/SegmentedControl.js +21 -4
  47. package/dist/components/SegmentedControl.js.map +1 -1
  48. package/dist/components/combobox-types.d.ts +8 -0
  49. package/dist/components/combobox-types.d.ts.map +1 -1
  50. package/dist/components/json-schema-form-debug-badge.cjs +108 -0
  51. package/dist/components/json-schema-form-debug-badge.cjs.map +1 -0
  52. package/dist/components/json-schema-form-debug-badge.d.ts +10 -0
  53. package/dist/components/json-schema-form-debug-badge.d.ts.map +1 -0
  54. package/dist/components/json-schema-form-debug-badge.js +108 -0
  55. package/dist/components/json-schema-form-debug-badge.js.map +1 -0
  56. package/dist/components/json-schema-form-debug-glyph-map.cjs +129 -0
  57. package/dist/components/json-schema-form-debug-glyph-map.cjs.map +1 -0
  58. package/dist/components/json-schema-form-debug-glyph-map.d.ts +20 -0
  59. package/dist/components/json-schema-form-debug-glyph-map.d.ts.map +1 -0
  60. package/dist/components/json-schema-form-debug-glyph-map.js +129 -0
  61. package/dist/components/json-schema-form-debug-glyph-map.js.map +1 -0
  62. package/dist/components/json-schema-form-debug-glyph.cjs +13 -0
  63. package/dist/components/json-schema-form-debug-glyph.cjs.map +1 -0
  64. package/dist/components/json-schema-form-debug-glyph.d.ts +6 -0
  65. package/dist/components/json-schema-form-debug-glyph.d.ts.map +1 -0
  66. package/dist/components/json-schema-form-debug-glyph.js +13 -0
  67. package/dist/components/json-schema-form-debug-glyph.js.map +1 -0
  68. package/dist/components/json-schema-form-debug-groups.cjs +56 -0
  69. package/dist/components/json-schema-form-debug-groups.cjs.map +1 -0
  70. package/dist/components/json-schema-form-debug-groups.d.ts +8 -0
  71. package/dist/components/json-schema-form-debug-groups.d.ts.map +1 -0
  72. package/dist/components/json-schema-form-debug-groups.js +56 -0
  73. package/dist/components/json-schema-form-debug-groups.js.map +1 -0
  74. package/dist/components/json-schema-form-debug-keywords.cjs +159 -0
  75. package/dist/components/json-schema-form-debug-keywords.cjs.map +1 -0
  76. package/dist/components/json-schema-form-debug-keywords.d.ts +6 -0
  77. package/dist/components/json-schema-form-debug-keywords.d.ts.map +1 -0
  78. package/dist/components/json-schema-form-debug-keywords.js +159 -0
  79. package/dist/components/json-schema-form-debug-keywords.js.map +1 -0
  80. package/dist/components/json-schema-form-debug-listeners.cjs +102 -0
  81. package/dist/components/json-schema-form-debug-listeners.cjs.map +1 -0
  82. package/dist/components/json-schema-form-debug-listeners.d.ts +6 -0
  83. package/dist/components/json-schema-form-debug-listeners.d.ts.map +1 -0
  84. package/dist/components/json-schema-form-debug-listeners.js +102 -0
  85. package/dist/components/json-schema-form-debug-listeners.js.map +1 -0
  86. package/dist/components/json-schema-form-debug.cjs +31 -0
  87. package/dist/components/json-schema-form-debug.cjs.map +1 -0
  88. package/dist/components/json-schema-form-debug.d.ts +11 -0
  89. package/dist/components/json-schema-form-debug.d.ts.map +1 -0
  90. package/dist/components/json-schema-form-debug.js +31 -0
  91. package/dist/components/json-schema-form-debug.js.map +1 -0
  92. package/dist/components/json-schema-form-enum-choice.cjs +114 -0
  93. package/dist/components/json-schema-form-enum-choice.cjs.map +1 -0
  94. package/dist/components/json-schema-form-enum-choice.d.ts +14 -0
  95. package/dist/components/json-schema-form-enum-choice.d.ts.map +1 -0
  96. package/dist/components/json-schema-form-enum-choice.js +114 -0
  97. package/dist/components/json-schema-form-enum-choice.js.map +1 -0
  98. package/dist/components/json-schema-form-fields.cjs +3 -93
  99. package/dist/components/json-schema-form-fields.cjs.map +1 -1
  100. package/dist/components/json-schema-form-fields.d.ts.map +1 -1
  101. package/dist/components/json-schema-form-fields.js +1 -91
  102. package/dist/components/json-schema-form-fields.js.map +1 -1
  103. package/dist/components/json-schema-form-listeners.cjs +7 -1
  104. package/dist/components/json-schema-form-listeners.cjs.map +1 -1
  105. package/dist/components/json-schema-form-listeners.d.ts.map +1 -1
  106. package/dist/components/json-schema-form-listeners.js +7 -1
  107. package/dist/components/json-schema-form-listeners.js.map +1 -1
  108. package/dist/components/json-schema-form-preferences.cjs +1 -0
  109. package/dist/components/json-schema-form-preferences.cjs.map +1 -1
  110. package/dist/components/json-schema-form-preferences.d.ts +1 -0
  111. package/dist/components/json-schema-form-preferences.d.ts.map +1 -1
  112. package/dist/components/json-schema-form-preferences.js +1 -0
  113. package/dist/components/json-schema-form-preferences.js.map +1 -1
  114. package/dist/components/json-schema-form-render.cjs +21 -5
  115. package/dist/components/json-schema-form-render.cjs.map +1 -1
  116. package/dist/components/json-schema-form-render.d.ts.map +1 -1
  117. package/dist/components/json-schema-form-render.js +21 -5
  118. package/dist/components/json-schema-form-render.js.map +1 -1
  119. package/dist/components/json-schema-form-runtime-types.d.ts +1 -0
  120. package/dist/components/json-schema-form-runtime-types.d.ts.map +1 -1
  121. package/dist/components/json-schema-form-tone.cjs +12 -0
  122. package/dist/components/json-schema-form-tone.cjs.map +1 -1
  123. package/dist/components/json-schema-form-tone.js +12 -0
  124. package/dist/components/json-schema-form-tone.js.map +1 -1
  125. package/dist/components/json-schema-form-types.d.ts +1 -0
  126. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  127. package/dist/data/GraphDiagram.cjs +125 -138
  128. package/dist/data/GraphDiagram.cjs.map +1 -1
  129. package/dist/data/GraphDiagram.d.ts +30 -23
  130. package/dist/data/GraphDiagram.d.ts.map +1 -1
  131. package/dist/data/GraphDiagram.js +128 -141
  132. package/dist/data/GraphDiagram.js.map +1 -1
  133. package/dist/data/GraphDiagramEdges.cjs +208 -0
  134. package/dist/data/GraphDiagramEdges.cjs.map +1 -0
  135. package/dist/data/GraphDiagramEdges.d.ts +40 -0
  136. package/dist/data/GraphDiagramEdges.d.ts.map +1 -0
  137. package/dist/data/GraphDiagramEdges.js +208 -0
  138. package/dist/data/GraphDiagramEdges.js.map +1 -0
  139. package/dist/data/GraphDiagramNodes.cjs +142 -0
  140. package/dist/data/GraphDiagramNodes.cjs.map +1 -0
  141. package/dist/data/GraphDiagramNodes.d.ts +22 -0
  142. package/dist/data/GraphDiagramNodes.d.ts.map +1 -0
  143. package/dist/data/GraphDiagramNodes.js +142 -0
  144. package/dist/data/GraphDiagramNodes.js.map +1 -0
  145. package/dist/data/ai/PromptRunEditor/RuntimeRows.cjs +8 -3
  146. package/dist/data/ai/PromptRunEditor/RuntimeRows.cjs.map +1 -1
  147. package/dist/data/ai/PromptRunEditor/RuntimeRows.d.ts.map +1 -1
  148. package/dist/data/ai/PromptRunEditor/RuntimeRows.js +8 -3
  149. package/dist/data/ai/PromptRunEditor/RuntimeRows.js.map +1 -1
  150. package/dist/data/ai/PromptRunEditor/index.cjs +37 -43
  151. package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
  152. package/dist/data/ai/PromptRunEditor/index.d.ts +3 -1
  153. package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
  154. package/dist/data/ai/PromptRunEditor/index.js +38 -44
  155. package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
  156. package/dist/data/ai/PromptRunEditor/runtimeActions.cjs +16 -5
  157. package/dist/data/ai/PromptRunEditor/runtimeActions.cjs.map +1 -1
  158. package/dist/data/ai/PromptRunEditor/runtimeActions.d.ts +4 -1
  159. package/dist/data/ai/PromptRunEditor/runtimeActions.d.ts.map +1 -1
  160. package/dist/data/ai/PromptRunEditor/runtimeActions.js +17 -6
  161. package/dist/data/ai/PromptRunEditor/runtimeActions.js.map +1 -1
  162. package/dist/data/ai/SessionInspector.approvals-model.cjs +12 -0
  163. package/dist/data/ai/SessionInspector.approvals-model.cjs.map +1 -1
  164. package/dist/data/ai/SessionInspector.approvals-model.d.ts +11 -2
  165. package/dist/data/ai/SessionInspector.approvals-model.d.ts.map +1 -1
  166. package/dist/data/ai/SessionInspector.approvals-model.js +12 -0
  167. package/dist/data/ai/SessionInspector.approvals-model.js.map +1 -1
  168. package/dist/data/ai/SessionInspector.approvals.cjs +25 -1
  169. package/dist/data/ai/SessionInspector.approvals.cjs.map +1 -1
  170. package/dist/data/ai/SessionInspector.approvals.d.ts.map +1 -1
  171. package/dist/data/ai/SessionInspector.approvals.js +26 -2
  172. package/dist/data/ai/SessionInspector.approvals.js.map +1 -1
  173. package/dist/data/ai/SessionInspector.summary.cjs +9 -3
  174. package/dist/data/ai/SessionInspector.summary.cjs.map +1 -1
  175. package/dist/data/ai/SessionInspector.summary.d.ts.map +1 -1
  176. package/dist/data/ai/SessionInspector.summary.js +9 -3
  177. package/dist/data/ai/SessionInspector.summary.js.map +1 -1
  178. package/dist/data/ai/SessionInspector.transcript.cjs +4 -0
  179. package/dist/data/ai/SessionInspector.transcript.cjs.map +1 -1
  180. package/dist/data/ai/SessionInspector.transcript.d.ts.map +1 -1
  181. package/dist/data/ai/SessionInspector.transcript.js +4 -0
  182. package/dist/data/ai/SessionInspector.transcript.js.map +1 -1
  183. package/dist/data/ai/SessionViewer.approval-body.cjs +146 -0
  184. package/dist/data/ai/SessionViewer.approval-body.cjs.map +1 -0
  185. package/dist/data/ai/SessionViewer.approval-body.d.ts +11 -0
  186. package/dist/data/ai/SessionViewer.approval-body.d.ts.map +1 -0
  187. package/dist/data/ai/SessionViewer.approval-body.js +146 -0
  188. package/dist/data/ai/SessionViewer.approval-body.js.map +1 -0
  189. package/dist/data/ai/SessionViewer.approval-forms.cjs +150 -0
  190. package/dist/data/ai/SessionViewer.approval-forms.cjs.map +1 -0
  191. package/dist/data/ai/SessionViewer.approval-forms.d.ts +23 -0
  192. package/dist/data/ai/SessionViewer.approval-forms.d.ts.map +1 -0
  193. package/dist/data/ai/SessionViewer.approval-forms.js +150 -0
  194. package/dist/data/ai/SessionViewer.approval-forms.js.map +1 -0
  195. package/dist/data/ai/SessionViewer.cjs +57 -20
  196. package/dist/data/ai/SessionViewer.cjs.map +1 -1
  197. package/dist/data/ai/SessionViewer.d.ts +13 -3
  198. package/dist/data/ai/SessionViewer.d.ts.map +1 -1
  199. package/dist/data/ai/SessionViewer.decision-controls.cjs +313 -0
  200. package/dist/data/ai/SessionViewer.decision-controls.cjs.map +1 -0
  201. package/dist/data/ai/SessionViewer.decision-controls.d.ts +43 -0
  202. package/dist/data/ai/SessionViewer.decision-controls.d.ts.map +1 -0
  203. package/dist/data/ai/SessionViewer.decision-controls.js +313 -0
  204. package/dist/data/ai/SessionViewer.decision-controls.js.map +1 -0
  205. package/dist/data/ai/SessionViewer.decision.cjs +21 -0
  206. package/dist/data/ai/SessionViewer.decision.cjs.map +1 -0
  207. package/dist/data/ai/SessionViewer.decision.d.ts +12 -0
  208. package/dist/data/ai/SessionViewer.decision.d.ts.map +1 -0
  209. package/dist/data/ai/SessionViewer.decision.js +21 -0
  210. package/dist/data/ai/SessionViewer.decision.js.map +1 -0
  211. package/dist/data/ai/SessionViewer.input.cjs +14 -0
  212. package/dist/data/ai/SessionViewer.input.cjs.map +1 -1
  213. package/dist/data/ai/SessionViewer.input.d.ts +5 -0
  214. package/dist/data/ai/SessionViewer.input.d.ts.map +1 -1
  215. package/dist/data/ai/SessionViewer.input.js +14 -0
  216. package/dist/data/ai/SessionViewer.input.js.map +1 -1
  217. package/dist/data/ai/SessionViewer.js +58 -21
  218. package/dist/data/ai/SessionViewer.js.map +1 -1
  219. package/dist/data/ai/SessionViewer.model.cjs.map +1 -1
  220. package/dist/data/ai/SessionViewer.model.d.ts +4 -0
  221. package/dist/data/ai/SessionViewer.model.d.ts.map +1 -1
  222. package/dist/data/ai/SessionViewer.model.js.map +1 -1
  223. package/dist/data/ai/SessionViewer.rows.cjs +6 -3
  224. package/dist/data/ai/SessionViewer.rows.cjs.map +1 -1
  225. package/dist/data/ai/SessionViewer.rows.d.ts +2 -1
  226. package/dist/data/ai/SessionViewer.rows.d.ts.map +1 -1
  227. package/dist/data/ai/SessionViewer.rows.js +6 -3
  228. package/dist/data/ai/SessionViewer.rows.js.map +1 -1
  229. package/dist/data/ai/SessionViewer.tool-row.cjs +29 -237
  230. package/dist/data/ai/SessionViewer.tool-row.cjs.map +1 -1
  231. package/dist/data/ai/SessionViewer.tool-row.d.ts.map +1 -1
  232. package/dist/data/ai/SessionViewer.tool-row.js +27 -235
  233. package/dist/data/ai/SessionViewer.tool-row.js.map +1 -1
  234. package/dist/data/ai/SessionViewer.unified.d.ts +4 -0
  235. package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
  236. package/dist/data/ai/SessionViewerMenu.cjs +8 -2
  237. package/dist/data/ai/SessionViewerMenu.cjs.map +1 -1
  238. package/dist/data/ai/SessionViewerMenu.d.ts +4 -1
  239. package/dist/data/ai/SessionViewerMenu.d.ts.map +1 -1
  240. package/dist/data/ai/SessionViewerMenu.js +8 -2
  241. package/dist/data/ai/SessionViewerMenu.js.map +1 -1
  242. package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs +28 -17
  243. package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs.map +1 -1
  244. package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts +10 -2
  245. package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts.map +1 -1
  246. package/dist/data/ai/SpecRuntimeEditor/CommitSection.js +29 -18
  247. package/dist/data/ai/SpecRuntimeEditor/CommitSection.js.map +1 -1
  248. package/dist/data/ai/SpecRuntimeEditor/index.cjs +9 -1
  249. package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -1
  250. package/dist/data/ai/SpecRuntimeEditor/index.d.ts +9 -2
  251. package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -1
  252. package/dist/data/ai/SpecRuntimeEditor/index.js +9 -1
  253. package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -1
  254. package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.cjs +1 -1
  255. package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.js +1 -1
  256. package/dist/data/ai/SpecRuntimeEditor/summaries.cjs.map +1 -1
  257. package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts +8 -2
  258. package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts.map +1 -1
  259. package/dist/data/ai/SpecRuntimeEditor/summaries.js.map +1 -1
  260. package/dist/data/ai/SpecRuntimeEditor/update.cjs +14 -6
  261. package/dist/data/ai/SpecRuntimeEditor/update.cjs.map +1 -1
  262. package/dist/data/ai/SpecRuntimeEditor/update.d.ts +1 -0
  263. package/dist/data/ai/SpecRuntimeEditor/update.d.ts.map +1 -1
  264. package/dist/data/ai/SpecRuntimeEditor/update.js +14 -6
  265. package/dist/data/ai/SpecRuntimeEditor/update.js.map +1 -1
  266. package/dist/data/ai/approval-request.cjs +75 -0
  267. package/dist/data/ai/approval-request.cjs.map +1 -0
  268. package/dist/data/ai/approval-request.d.ts +155 -0
  269. package/dist/data/ai/approval-request.d.ts.map +1 -0
  270. package/dist/data/ai/approval-request.js +75 -0
  271. package/dist/data/ai/approval-request.js.map +1 -0
  272. package/dist/data/ai/index.d.ts +3 -0
  273. package/dist/data/ai/index.d.ts.map +1 -1
  274. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.cjs +125 -0
  275. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.cjs.map +1 -0
  276. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.d.ts +11 -0
  277. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.d.ts.map +1 -0
  278. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.js +125 -0
  279. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.js.map +1 -0
  280. package/dist/data/ai/runtime-preset-menu/index.d.ts +3 -0
  281. package/dist/data/ai/runtime-preset-menu/index.d.ts.map +1 -0
  282. package/dist/data/ai/runtime-preset-menu/model.cjs +73 -0
  283. package/dist/data/ai/runtime-preset-menu/model.cjs.map +1 -0
  284. package/dist/data/ai/runtime-preset-menu/model.d.ts +13 -0
  285. package/dist/data/ai/runtime-preset-menu/model.d.ts.map +1 -0
  286. package/dist/data/ai/runtime-preset-menu/model.js +73 -0
  287. package/dist/data/ai/runtime-preset-menu/model.js.map +1 -0
  288. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.cjs +149 -0
  289. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.cjs.map +1 -0
  290. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.d.ts +15 -0
  291. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.d.ts.map +1 -0
  292. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.js +149 -0
  293. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.js.map +1 -0
  294. package/dist/data/ai/runtime-spec-fields.cjs +166 -0
  295. package/dist/data/ai/runtime-spec-fields.cjs.map +1 -0
  296. package/dist/data/ai/runtime-spec-fields.d.ts +13 -0
  297. package/dist/data/ai/runtime-spec-fields.d.ts.map +1 -0
  298. package/dist/data/ai/runtime-spec-fields.js +166 -0
  299. package/dist/data/ai/runtime-spec-fields.js.map +1 -0
  300. package/dist/data/ai/session-categories.cjs +4 -0
  301. package/dist/data/ai/session-categories.cjs.map +1 -1
  302. package/dist/data/ai/session-categories.d.ts +1 -0
  303. package/dist/data/ai/session-categories.d.ts.map +1 -1
  304. package/dist/data/ai/session-categories.js +4 -0
  305. package/dist/data/ai/session-categories.js.map +1 -1
  306. package/dist/data/ai/use-session-scroll.cjs +49 -21
  307. package/dist/data/ai/use-session-scroll.cjs.map +1 -1
  308. package/dist/data/ai/use-session-scroll.d.ts +2 -0
  309. package/dist/data/ai/use-session-scroll.d.ts.map +1 -1
  310. package/dist/data/ai/use-session-scroll.js +49 -21
  311. package/dist/data/ai/use-session-scroll.js.map +1 -1
  312. package/dist/data/chat/Chat.runtime.cjs +1 -1
  313. package/dist/data/chat/Chat.runtime.cjs.map +1 -1
  314. package/dist/data/chat/Chat.runtime.d.ts.map +1 -1
  315. package/dist/data/chat/Chat.runtime.js +1 -1
  316. package/dist/data/chat/Chat.runtime.js.map +1 -1
  317. package/dist/data/graph-columns-layout.cjs +216 -0
  318. package/dist/data/graph-columns-layout.cjs.map +1 -0
  319. package/dist/data/graph-columns-layout.d.ts +56 -0
  320. package/dist/data/graph-columns-layout.d.ts.map +1 -0
  321. package/dist/data/graph-columns-layout.js +216 -0
  322. package/dist/data/graph-columns-layout.js.map +1 -0
  323. package/dist/data/graph-diagram-model.cjs +73 -0
  324. package/dist/data/graph-diagram-model.cjs.map +1 -0
  325. package/dist/data/graph-diagram-model.d.ts +90 -0
  326. package/dist/data/graph-diagram-model.d.ts.map +1 -0
  327. package/dist/data/graph-diagram-model.js +73 -0
  328. package/dist/data/graph-diagram-model.js.map +1 -0
  329. package/dist/data/graph-edge-routing.cjs +235 -0
  330. package/dist/data/graph-edge-routing.cjs.map +1 -0
  331. package/dist/data/graph-edge-routing.d.ts +73 -0
  332. package/dist/data/graph-edge-routing.d.ts.map +1 -0
  333. package/dist/data/graph-edge-routing.js +235 -0
  334. package/dist/data/graph-edge-routing.js.map +1 -0
  335. package/dist/data/graph-layout.cjs +0 -82
  336. package/dist/data/graph-layout.cjs.map +1 -1
  337. package/dist/data/graph-layout.d.ts +1 -28
  338. package/dist/data/graph-layout.d.ts.map +1 -1
  339. package/dist/data/graph-layout.js +1 -83
  340. package/dist/data/graph-layout.js.map +1 -1
  341. package/dist/data/har/HarPanel.cjs +129 -33
  342. package/dist/data/har/HarPanel.cjs.map +1 -1
  343. package/dist/data/har/HarPanel.d.ts +13 -1
  344. package/dist/data/har/HarPanel.d.ts.map +1 -1
  345. package/dist/data/har/HarPanel.js +130 -34
  346. package/dist/data/har/HarPanel.js.map +1 -1
  347. package/dist/data/har/fixtures.d.ts +12 -0
  348. package/dist/data/har/fixtures.d.ts.map +1 -1
  349. package/dist/data/har/types.d.ts +12 -0
  350. package/dist/data/har/types.d.ts.map +1 -1
  351. package/dist/data/runtime/RuntimeBar.cjs +67 -84
  352. package/dist/data/runtime/RuntimeBar.cjs.map +1 -1
  353. package/dist/data/runtime/RuntimeBar.d.ts +4 -5
  354. package/dist/data/runtime/RuntimeBar.d.ts.map +1 -1
  355. package/dist/data/runtime/RuntimeBar.fields.cjs +170 -0
  356. package/dist/data/runtime/RuntimeBar.fields.cjs.map +1 -0
  357. package/dist/data/runtime/RuntimeBar.fields.d.ts +16 -0
  358. package/dist/data/runtime/RuntimeBar.fields.d.ts.map +1 -0
  359. package/dist/data/runtime/RuntimeBar.fields.js +170 -0
  360. package/dist/data/runtime/RuntimeBar.fields.js.map +1 -0
  361. package/dist/data/runtime/RuntimeBar.js +70 -87
  362. package/dist/data/runtime/RuntimeBar.js.map +1 -1
  363. package/dist/data/runtime/RuntimeBar.selection.cjs +56 -0
  364. package/dist/data/runtime/RuntimeBar.selection.cjs.map +1 -0
  365. package/dist/data/runtime/RuntimeBar.selection.d.ts +20 -0
  366. package/dist/data/runtime/RuntimeBar.selection.d.ts.map +1 -0
  367. package/dist/data/runtime/RuntimeBar.selection.js +56 -0
  368. package/dist/data/runtime/RuntimeBar.selection.js.map +1 -0
  369. package/dist/data/runtime/RuntimeBarActions.cjs +10 -6
  370. package/dist/data/runtime/RuntimeBarActions.cjs.map +1 -1
  371. package/dist/data/runtime/RuntimeBarActions.d.ts +8 -1
  372. package/dist/data/runtime/RuntimeBarActions.d.ts.map +1 -1
  373. package/dist/data/runtime/RuntimeBarActions.js +10 -6
  374. package/dist/data/runtime/RuntimeBarActions.js.map +1 -1
  375. package/dist/data/runtime/RuntimeBarIdentity.cjs +166 -0
  376. package/dist/data/runtime/RuntimeBarIdentity.cjs.map +1 -0
  377. package/dist/data/runtime/RuntimeBarIdentity.d.ts +25 -0
  378. package/dist/data/runtime/RuntimeBarIdentity.d.ts.map +1 -0
  379. package/dist/data/runtime/RuntimeBarIdentity.js +166 -0
  380. package/dist/data/runtime/RuntimeBarIdentity.js.map +1 -0
  381. package/dist/data/runtime/RuntimeBarLayout.cjs +95 -0
  382. package/dist/data/runtime/RuntimeBarLayout.cjs.map +1 -0
  383. package/dist/data/runtime/RuntimeBarLayout.d.ts +9 -0
  384. package/dist/data/runtime/RuntimeBarLayout.d.ts.map +1 -0
  385. package/dist/data/runtime/RuntimeBarLayout.js +95 -0
  386. package/dist/data/runtime/RuntimeBarLayout.js.map +1 -0
  387. package/dist/data/runtime/RuntimeBarSegment.cjs +25 -14
  388. package/dist/data/runtime/RuntimeBarSegment.cjs.map +1 -1
  389. package/dist/data/runtime/RuntimeBarSegment.d.ts +4 -0
  390. package/dist/data/runtime/RuntimeBarSegment.d.ts.map +1 -1
  391. package/dist/data/runtime/RuntimeBarSegment.js +25 -14
  392. package/dist/data/runtime/RuntimeBarSegment.js.map +1 -1
  393. package/dist/data/runtime/RuntimeLimitInput.cjs +41 -0
  394. package/dist/data/runtime/RuntimeLimitInput.cjs.map +1 -0
  395. package/dist/data/runtime/RuntimeLimitInput.d.ts +9 -0
  396. package/dist/data/runtime/RuntimeLimitInput.d.ts.map +1 -0
  397. package/dist/data/runtime/RuntimeLimitInput.js +41 -0
  398. package/dist/data/runtime/RuntimeLimitInput.js.map +1 -0
  399. package/dist/data/runtime/use-runtime-bar-overflow.cjs +70 -0
  400. package/dist/data/runtime/use-runtime-bar-overflow.cjs.map +1 -0
  401. package/dist/data/runtime/use-runtime-bar-overflow.d.ts +13 -0
  402. package/dist/data/runtime/use-runtime-bar-overflow.d.ts.map +1 -0
  403. package/dist/data/runtime/use-runtime-bar-overflow.js +70 -0
  404. package/dist/data/runtime/use-runtime-bar-overflow.js.map +1 -0
  405. package/dist/data/use-edge-focus.cjs +20 -0
  406. package/dist/data/use-edge-focus.cjs.map +1 -0
  407. package/dist/data/use-edge-focus.d.ts +23 -0
  408. package/dist/data/use-edge-focus.d.ts.map +1 -0
  409. package/dist/data/use-edge-focus.js +20 -0
  410. package/dist/data/use-edge-focus.js.map +1 -0
  411. package/dist/data/use-pan-zoom.cjs +159 -0
  412. package/dist/data/use-pan-zoom.cjs.map +1 -0
  413. package/dist/data/use-pan-zoom.d.ts +79 -0
  414. package/dist/data/use-pan-zoom.d.ts.map +1 -0
  415. package/dist/data/use-pan-zoom.js +159 -0
  416. package/dist/data/use-pan-zoom.js.map +1 -0
  417. package/dist/data/version-info.cjs +3 -3
  418. package/dist/data/version-info.js +3 -3
  419. package/dist/data.cjs +5 -1
  420. package/dist/data.cjs.map +1 -1
  421. package/dist/data.d.ts +4 -3
  422. package/dist/data.d.ts.map +1 -1
  423. package/dist/data.js +6 -2
  424. package/dist/data.js.map +1 -1
  425. package/dist/index.cjs +5 -1
  426. package/dist/index.cjs.map +1 -1
  427. package/dist/index.js +6 -2
  428. package/dist/index.js.map +1 -1
  429. package/dist/overlay/DropdownMenu.cjs +1 -0
  430. package/dist/overlay/DropdownMenu.cjs.map +1 -1
  431. package/dist/overlay/DropdownMenu.d.ts +4 -0
  432. package/dist/overlay/DropdownMenu.d.ts.map +1 -1
  433. package/dist/overlay/DropdownMenu.js +1 -0
  434. package/dist/overlay/DropdownMenu.js.map +1 -1
  435. package/dist/overlay/DropdownMenuSubmenu.cjs +31 -15
  436. package/dist/overlay/DropdownMenuSubmenu.cjs.map +1 -1
  437. package/dist/overlay/DropdownMenuSubmenu.d.ts.map +1 -1
  438. package/dist/overlay/DropdownMenuSubmenu.js +31 -15
  439. package/dist/overlay/DropdownMenuSubmenu.js.map +1 -1
  440. package/dist/profiles/fields/profileFieldFilterEditor.cjs +5 -2
  441. package/dist/profiles/fields/profileFieldFilterEditor.cjs.map +1 -1
  442. package/dist/profiles/fields/profileFieldFilterEditor.js +5 -2
  443. package/dist/profiles/fields/profileFieldFilterEditor.js.map +1 -1
  444. package/dist/profiles/fields/profileFieldIcons.cjs +2 -0
  445. package/dist/profiles/fields/profileFieldIcons.cjs.map +1 -1
  446. package/dist/profiles/fields/profileFieldIcons.d.ts.map +1 -1
  447. package/dist/profiles/fields/profileFieldIcons.js +2 -0
  448. package/dist/profiles/fields/profileFieldIcons.js.map +1 -1
  449. package/dist/profiles/wizard/profileWizardModel.cjs +1 -0
  450. package/dist/profiles/wizard/profileWizardModel.cjs.map +1 -1
  451. package/dist/profiles/wizard/profileWizardModel.d.ts +3 -0
  452. package/dist/profiles/wizard/profileWizardModel.d.ts.map +1 -1
  453. package/dist/profiles/wizard/profileWizardModel.js +1 -0
  454. package/dist/profiles/wizard/profileWizardModel.js.map +1 -1
  455. package/dist/rpc/OperationCatalog.cjs +3 -1
  456. package/dist/rpc/OperationCatalog.cjs.map +1 -1
  457. package/dist/rpc/OperationCatalog.d.ts +3 -1
  458. package/dist/rpc/OperationCatalog.d.ts.map +1 -1
  459. package/dist/rpc/OperationCatalog.js +3 -1
  460. package/dist/rpc/OperationCatalog.js.map +1 -1
  461. package/dist/rpc/useOperationPages.cjs +6 -1
  462. package/dist/rpc/useOperationPages.cjs.map +1 -1
  463. package/dist/rpc/useOperationPages.d.ts +3 -1
  464. package/dist/rpc/useOperationPages.d.ts.map +1 -1
  465. package/dist/rpc/useOperationPages.js +6 -1
  466. package/dist/rpc/useOperationPages.js.map +1 -1
  467. package/dist/styles.css +1 -1
  468. package/package.json +1 -1
  469. package/schemas/json-schema-form.schema.json +5 -0
  470. package/dist/data/runtime/RuntimeBarCombo.cjs +0 -423
  471. package/dist/data/runtime/RuntimeBarCombo.cjs.map +0 -1
  472. package/dist/data/runtime/RuntimeBarCombo.d.ts +0 -33
  473. package/dist/data/runtime/RuntimeBarCombo.d.ts.map +0 -1
  474. package/dist/data/runtime/RuntimeBarCombo.js +0 -423
  475. package/dist/data/runtime/RuntimeBarCombo.js.map +0 -1
  476. package/dist/data/runtime/RuntimeBarLimits.cjs +0 -262
  477. package/dist/data/runtime/RuntimeBarLimits.cjs.map +0 -1
  478. package/dist/data/runtime/RuntimeBarLimits.d.ts +0 -17
  479. package/dist/data/runtime/RuntimeBarLimits.d.ts.map +0 -1
  480. package/dist/data/runtime/RuntimeBarLimits.js +0 -262
  481. package/dist/data/runtime/RuntimeBarLimits.js.map +0 -1
  482. package/dist/data/runtime/RuntimeBarSegments.cjs +0 -346
  483. package/dist/data/runtime/RuntimeBarSegments.cjs.map +0 -1
  484. package/dist/data/runtime/RuntimeBarSegments.d.ts +0 -37
  485. package/dist/data/runtime/RuntimeBarSegments.d.ts.map +0 -1
  486. package/dist/data/runtime/RuntimeBarSegments.js +0 -346
  487. package/dist/data/runtime/RuntimeBarSegments.js.map +0 -1
@@ -1,11 +1,13 @@
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");
4
5
  const utils = require("../../lib/utils.cjs");
5
6
  const DropdownMenu = require("../../overlay/DropdownMenu.cjs");
6
7
  const Icon = require("../Icon.cjs");
7
- const UiChevronDown = require("../../icons/components/UiChevronDown.cjs");
8
+ const RuntimeBar_context = require("./RuntimeBar.context.cjs");
8
9
  const UiCheck = require("../../icons/components/UiCheck.cjs");
10
+ const UiChevronDown = require("../../icons/components/UiChevronDown.cjs");
9
11
  const SEGMENT_CAPTION_CLASS = "truncate text-xs font-semibold text-foreground";
10
12
  const SEGMENT_KEY_CLASS = "text-[11px] font-semibold uppercase leading-none tracking-wide text-muted-foreground";
11
13
  function RuntimeSegment({
@@ -18,6 +20,7 @@ function RuntimeSegment({
18
20
  className,
19
21
  children
20
22
  }) {
23
+ const variant = react.useContext(RuntimeBar_context.RuntimeBarVariantContext);
21
24
  return /* @__PURE__ */ jsxRuntime.jsx(
22
25
  DropdownMenu.DropdownMenu,
23
26
  {
@@ -25,33 +28,40 @@ function RuntimeSegment({
25
28
  menuLabel,
26
29
  items,
27
30
  ...header ? { header } : {},
28
- menuClassName: "min-w-56 max-w-80",
31
+ menuClassName: "max-h-[70vh] min-w-56 max-w-80 overflow-y-auto",
29
32
  className: utils.cn(
30
- "min-w-0 border-l border-border first:border-l-0 [&>span]:min-w-0 [&>span]:w-full",
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",
31
35
  className
32
36
  ),
33
- trigger: /* @__PURE__ */ jsxRuntime.jsxs(
37
+ trigger: /* @__PURE__ */ jsxRuntime.jsx(
34
38
  "button",
35
39
  {
36
40
  type: "button",
37
41
  disabled,
38
42
  title,
39
43
  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",
40
- children: [
41
- children,
42
- !hideChevron && /* @__PURE__ */ jsxRuntime.jsx(
43
- Icon.Icon,
44
- {
45
- icon: UiChevronDown.UiChevronDown,
46
- className: "size-3 shrink-0 text-muted-foreground/70"
47
- }
48
- )
49
- ]
44
+ children: /* @__PURE__ */ jsxRuntime.jsx(RuntimeSegmentCaption, { hideChevron, children })
50
45
  }
51
46
  )
52
47
  }
53
48
  );
54
49
  }
50
+ function RuntimeSegmentCaption({
51
+ children,
52
+ hideChevron = false
53
+ }) {
54
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
55
+ children,
56
+ !hideChevron && /* @__PURE__ */ jsxRuntime.jsx(
57
+ Icon.Icon,
58
+ {
59
+ icon: UiChevronDown.UiChevronDown,
60
+ className: "size-3 shrink-0 text-muted-foreground/70"
61
+ }
62
+ )
63
+ ] });
64
+ }
55
65
  function SegmentItemLabel({
56
66
  text,
57
67
  hint,
@@ -77,6 +87,7 @@ function SegmentItemLabel({
77
87
  ] });
78
88
  }
79
89
  exports.RuntimeSegment = RuntimeSegment;
90
+ exports.RuntimeSegmentCaption = RuntimeSegmentCaption;
80
91
  exports.SEGMENT_CAPTION_CLASS = SEGMENT_CAPTION_CLASS;
81
92
  exports.SEGMENT_KEY_CLASS = SEGMENT_KEY_CLASS;
82
93
  exports.SegmentItemLabel = SegmentItemLabel;
@@ -1 +1 @@
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 = \"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=\"min-w-56 max-w-80\"\n className={cn(\n \"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 {children}\n {!hideChevron && (\n <Icon\n icon={UiChevronDown}\n className=\"size-3 shrink-0 text-muted-foreground/70\"\n />\n )}\n </button>\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","Icon","UiChevronDown","Fragment","UiCheck"],"mappings":";;;;;;;;AASO,MAAM,wBAAwB;AAC9B,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,SACEC,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL;AAAA,UACA;AAAA,UACA,WAAU;AAAA,UAET,UAAA;AAAA,YAAA;AAAA,YACA,CAAC,eACAH,2BAAAA;AAAAA,cAACI,KAAAA;AAAAA,cAAA;AAAA,gBACC,MAAMC,cAAAA;AAAAA,gBACN,WAAU;AAAA,cAAA;AAAA,YAAA;AAAA,UACZ;AAAA,QAAA;AAAA,MAAA;AAAA,IAEJ;AAAA,EAAA;AAIR;AAEO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AACZ,GAKG;AACD,SACEF,2BAAAA,KAAAG,qBAAA,EACE,UAAA;AAAA,IAAAH,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,MAACI,KAAAA;AAAAA,MAAA;AAAA,QACC,MAAMG,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 { 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;;;;;;"}
@@ -13,6 +13,10 @@ export declare function RuntimeSegment({ items, menuLabel, title, header, disabl
13
13
  className?: string | undefined;
14
14
  children: ReactNode;
15
15
  }): import("react").JSX.Element;
16
+ export declare function RuntimeSegmentCaption({ children, hideChevron, }: {
17
+ children: ReactNode;
18
+ hideChevron?: boolean;
19
+ }): import("react").JSX.Element;
16
20
  export declare function SegmentItemLabel({ text, hint, selected, stacked, }: {
17
21
  text: string;
18
22
  hint?: string | undefined;
@@ -1 +1 @@
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,mDAAmD,CAAC;AACtF,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,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,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,9 +1,11 @@
1
1
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
+ import { useContext } from "react";
2
3
  import { cn } from "../../lib/utils.js";
3
4
  import { DropdownMenu } from "../../overlay/DropdownMenu.js";
4
5
  import { Icon } from "../Icon.js";
5
- import { UiChevronDown } from "../../icons/components/UiChevronDown.js";
6
+ import { RuntimeBarVariantContext } from "./RuntimeBar.context.js";
6
7
  import { UiCheck } from "../../icons/components/UiCheck.js";
8
+ import { UiChevronDown } from "../../icons/components/UiChevronDown.js";
7
9
  const SEGMENT_CAPTION_CLASS = "truncate text-xs font-semibold text-foreground";
8
10
  const SEGMENT_KEY_CLASS = "text-[11px] font-semibold uppercase leading-none tracking-wide text-muted-foreground";
9
11
  function RuntimeSegment({
@@ -16,6 +18,7 @@ function RuntimeSegment({
16
18
  className,
17
19
  children
18
20
  }) {
21
+ const variant = useContext(RuntimeBarVariantContext);
19
22
  return /* @__PURE__ */ jsx(
20
23
  DropdownMenu,
21
24
  {
@@ -23,33 +26,40 @@ function RuntimeSegment({
23
26
  menuLabel,
24
27
  items,
25
28
  ...header ? { header } : {},
26
- menuClassName: "min-w-56 max-w-80",
29
+ menuClassName: "max-h-[70vh] min-w-56 max-w-80 overflow-y-auto",
27
30
  className: cn(
28
- "min-w-0 border-l border-border first:border-l-0 [&>span]:min-w-0 [&>span]:w-full",
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",
29
33
  className
30
34
  ),
31
- trigger: /* @__PURE__ */ jsxs(
35
+ trigger: /* @__PURE__ */ jsx(
32
36
  "button",
33
37
  {
34
38
  type: "button",
35
39
  disabled,
36
40
  title,
37
41
  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",
38
- children: [
39
- children,
40
- !hideChevron && /* @__PURE__ */ jsx(
41
- Icon,
42
- {
43
- icon: UiChevronDown,
44
- className: "size-3 shrink-0 text-muted-foreground/70"
45
- }
46
- )
47
- ]
42
+ children: /* @__PURE__ */ jsx(RuntimeSegmentCaption, { hideChevron, children })
48
43
  }
49
44
  )
50
45
  }
51
46
  );
52
47
  }
48
+ function RuntimeSegmentCaption({
49
+ children,
50
+ hideChevron = false
51
+ }) {
52
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
53
+ children,
54
+ !hideChevron && /* @__PURE__ */ jsx(
55
+ Icon,
56
+ {
57
+ icon: UiChevronDown,
58
+ className: "size-3 shrink-0 text-muted-foreground/70"
59
+ }
60
+ )
61
+ ] });
62
+ }
53
63
  function SegmentItemLabel({
54
64
  text,
55
65
  hint,
@@ -76,6 +86,7 @@ function SegmentItemLabel({
76
86
  }
77
87
  export {
78
88
  RuntimeSegment,
89
+ RuntimeSegmentCaption,
79
90
  SEGMENT_CAPTION_CLASS,
80
91
  SEGMENT_KEY_CLASS,
81
92
  SegmentItemLabel
@@ -1 +1 @@
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 = \"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=\"min-w-56 max-w-80\"\n className={cn(\n \"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 {children}\n {!hideChevron && (\n <Icon\n icon={UiChevronDown}\n className=\"size-3 shrink-0 text-muted-foreground/70\"\n />\n )}\n </button>\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,wBAAwB;AAC9B,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,UAET,UAAA;AAAA,YAAA;AAAA,YACA,CAAC,eACA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAM;AAAA,gBACN,WAAU;AAAA,cAAA;AAAA,YAAA;AAAA,UACZ;AAAA,QAAA;AAAA,MAAA;AAAA,IAEJ;AAAA,EAAA;AAIR;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 { 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;"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const react = require("react");
5
+ const InputField = require("../../components/InputField.cjs");
6
+ function RuntimeLimitInput({
7
+ inputLabel,
8
+ text,
9
+ placeholder,
10
+ parse,
11
+ current,
12
+ onChange
13
+ }) {
14
+ const [draft, setDraft] = react.useState();
15
+ const shown = draft ?? text;
16
+ const invalid = shown.trim() !== "" && parse(shown) === void 0;
17
+ return /* @__PURE__ */ jsxRuntime.jsx(
18
+ InputField.InputField,
19
+ {
20
+ value: shown,
21
+ "aria-label": inputLabel,
22
+ placeholder,
23
+ invalid,
24
+ onFocus: () => setDraft(text),
25
+ onBlur: () => setDraft(void 0),
26
+ onChange: (next) => {
27
+ setDraft(next);
28
+ if (next.trim() === "") {
29
+ if (current !== void 0) onChange(void 0);
30
+ return;
31
+ }
32
+ const parsed = parse(next);
33
+ if (parsed !== void 0) onChange(parsed);
34
+ },
35
+ inputClassName: "font-mono text-xs",
36
+ className: "bg-background"
37
+ }
38
+ );
39
+ }
40
+ exports.RuntimeLimitInput = RuntimeLimitInput;
41
+ //# sourceMappingURL=RuntimeLimitInput.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuntimeLimitInput.cjs","sources":["../../../src/data/runtime/RuntimeLimitInput.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { InputField } from \"../../components/InputField\";\n\nexport function RuntimeLimitInput<V extends string | number>({\n inputLabel,\n text,\n placeholder,\n parse,\n current,\n onChange,\n}: {\n inputLabel: string;\n text: string;\n placeholder: string;\n parse: (text: string) => V | undefined;\n current: string | undefined;\n onChange: (next: V | undefined) => void;\n}) {\n const [draft, setDraft] = useState<string>();\n const shown = draft ?? text;\n const invalid = shown.trim() !== \"\" && parse(shown) === undefined;\n return (\n <InputField\n value={shown}\n aria-label={inputLabel}\n placeholder={placeholder}\n invalid={invalid}\n onFocus={() => setDraft(text)}\n onBlur={() => setDraft(undefined)}\n onChange={(next) => {\n setDraft(next);\n if (next.trim() === \"\") {\n if (current !== undefined) onChange(undefined);\n return;\n }\n const parsed = parse(next);\n if (parsed !== undefined) onChange(parsed);\n }}\n inputClassName=\"font-mono text-xs\"\n className=\"bg-background\"\n />\n );\n}\n"],"names":["useState","jsx","InputField"],"mappings":";;;;;AAGO,SAAS,kBAA6C;AAAA,EAC3D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAOG;AACD,QAAM,CAAC,OAAO,QAAQ,IAAIA,eAAA;AAC1B,QAAM,QAAQ,SAAS;AACvB,QAAM,UAAU,MAAM,KAAA,MAAW,MAAM,MAAM,KAAK,MAAM;AACxD,SACEC,2BAAAA;AAAAA,IAACC,WAAAA;AAAAA,IAAA;AAAA,MACC,OAAO;AAAA,MACP,cAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA,SAAS,MAAM,SAAS,IAAI;AAAA,MAC5B,QAAQ,MAAM,SAAS,MAAS;AAAA,MAChC,UAAU,CAAC,SAAS;AAClB,iBAAS,IAAI;AACb,YAAI,KAAK,KAAA,MAAW,IAAI;AACtB,cAAI,YAAY,OAAW,UAAS,MAAS;AAC7C;AAAA,QACF;AACA,cAAM,SAAS,MAAM,IAAI;AACzB,YAAI,WAAW,OAAW,UAAS,MAAM;AAAA,MAC3C;AAAA,MACA,gBAAe;AAAA,MACf,WAAU;AAAA,IAAA;AAAA,EAAA;AAGhB;;"}
@@ -0,0 +1,9 @@
1
+ export declare function RuntimeLimitInput<V extends string | number>({ inputLabel, text, placeholder, parse, current, onChange, }: {
2
+ inputLabel: string;
3
+ text: string;
4
+ placeholder: string;
5
+ parse: (text: string) => V | undefined;
6
+ current: string | undefined;
7
+ onChange: (next: V | undefined) => void;
8
+ }): import("react").JSX.Element;
9
+ //# sourceMappingURL=RuntimeLimitInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuntimeLimitInput.d.ts","sourceRoot":"","sources":["../../../src/data/runtime/RuntimeLimitInput.tsx"],"names":[],"mappings":"AAGA,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,EAC3D,UAAU,EACV,IAAI,EACJ,WAAW,EACX,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC;IACvC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS,KAAK,IAAI,CAAC;CACzC,+BAyBA"}
@@ -0,0 +1,41 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { InputField } from "../../components/InputField.js";
4
+ function RuntimeLimitInput({
5
+ inputLabel,
6
+ text,
7
+ placeholder,
8
+ parse,
9
+ current,
10
+ onChange
11
+ }) {
12
+ const [draft, setDraft] = useState();
13
+ const shown = draft ?? text;
14
+ const invalid = shown.trim() !== "" && parse(shown) === void 0;
15
+ return /* @__PURE__ */ jsx(
16
+ InputField,
17
+ {
18
+ value: shown,
19
+ "aria-label": inputLabel,
20
+ placeholder,
21
+ invalid,
22
+ onFocus: () => setDraft(text),
23
+ onBlur: () => setDraft(void 0),
24
+ onChange: (next) => {
25
+ setDraft(next);
26
+ if (next.trim() === "") {
27
+ if (current !== void 0) onChange(void 0);
28
+ return;
29
+ }
30
+ const parsed = parse(next);
31
+ if (parsed !== void 0) onChange(parsed);
32
+ },
33
+ inputClassName: "font-mono text-xs",
34
+ className: "bg-background"
35
+ }
36
+ );
37
+ }
38
+ export {
39
+ RuntimeLimitInput
40
+ };
41
+ //# sourceMappingURL=RuntimeLimitInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuntimeLimitInput.js","sources":["../../../src/data/runtime/RuntimeLimitInput.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { InputField } from \"../../components/InputField\";\n\nexport function RuntimeLimitInput<V extends string | number>({\n inputLabel,\n text,\n placeholder,\n parse,\n current,\n onChange,\n}: {\n inputLabel: string;\n text: string;\n placeholder: string;\n parse: (text: string) => V | undefined;\n current: string | undefined;\n onChange: (next: V | undefined) => void;\n}) {\n const [draft, setDraft] = useState<string>();\n const shown = draft ?? text;\n const invalid = shown.trim() !== \"\" && parse(shown) === undefined;\n return (\n <InputField\n value={shown}\n aria-label={inputLabel}\n placeholder={placeholder}\n invalid={invalid}\n onFocus={() => setDraft(text)}\n onBlur={() => setDraft(undefined)}\n onChange={(next) => {\n setDraft(next);\n if (next.trim() === \"\") {\n if (current !== undefined) onChange(undefined);\n return;\n }\n const parsed = parse(next);\n if (parsed !== undefined) onChange(parsed);\n }}\n inputClassName=\"font-mono text-xs\"\n className=\"bg-background\"\n />\n );\n}\n"],"names":[],"mappings":";;;AAGO,SAAS,kBAA6C;AAAA,EAC3D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAOG;AACD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAA;AAC1B,QAAM,QAAQ,SAAS;AACvB,QAAM,UAAU,MAAM,KAAA,MAAW,MAAM,MAAM,KAAK,MAAM;AACxD,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,MACP,cAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA,SAAS,MAAM,SAAS,IAAI;AAAA,MAC5B,QAAQ,MAAM,SAAS,MAAS;AAAA,MAChC,UAAU,CAAC,SAAS;AAClB,iBAAS,IAAI;AACb,YAAI,KAAK,KAAA,MAAW,IAAI;AACtB,cAAI,YAAY,OAAW,UAAS,MAAS;AAC7C;AAAA,QACF;AACA,cAAM,SAAS,MAAM,IAAI;AACzB,YAAI,WAAW,OAAW,UAAS,MAAM;AAAA,MAC3C;AAAA,MACA,gBAAe;AAAA,MACf,WAAU;AAAA,IAAA;AAAA,EAAA;AAGhB;"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const react = require("react");
4
+ function runtimeBarInlineCount({
5
+ width,
6
+ identity,
7
+ trigger,
8
+ fields,
9
+ gap
10
+ }) {
11
+ let occupied = identity + trigger + gap;
12
+ let count = 0;
13
+ for (const field of fields) {
14
+ occupied += field + gap;
15
+ if (occupied > width) break;
16
+ count++;
17
+ }
18
+ return count;
19
+ }
20
+ function useRuntimeBarOverflow() {
21
+ const [container, setContainer] = react.useState(null);
22
+ const [measurement, setMeasurement] = react.useState(null);
23
+ const [visibleCount, setVisibleCount] = react.useState(Infinity);
24
+ const measure = react.useCallback(() => {
25
+ if (!container || !measurement) return;
26
+ const width = container.getBoundingClientRect().width;
27
+ if (width <= 0) return;
28
+ const [identity, ...controls] = [...measurement.children];
29
+ const trigger = controls.pop();
30
+ if (!identity || !trigger)
31
+ throw new Error(
32
+ "Runtime bar measurement requires identity and a menu trigger"
33
+ );
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
+ const count = runtimeBarInlineCount({
39
+ width: width - 2,
40
+ identity: identity.getBoundingClientRect().width,
41
+ trigger: trigger.getBoundingClientRect().width,
42
+ fields: controls.map((node) => node.getBoundingClientRect().width),
43
+ gap
44
+ });
45
+ setVisibleCount((previous) => previous === count ? previous : count);
46
+ }, [container, measurement]);
47
+ react.useLayoutEffect(() => {
48
+ measure();
49
+ });
50
+ react.useLayoutEffect(() => {
51
+ if (!container || !measurement) return;
52
+ measure();
53
+ const observer = typeof ResizeObserver === "undefined" ? void 0 : new ResizeObserver(measure);
54
+ observer == null ? void 0 : observer.observe(container);
55
+ observer == null ? void 0 : observer.observe(measurement);
56
+ window.addEventListener("resize", measure);
57
+ return () => {
58
+ observer == null ? void 0 : observer.disconnect();
59
+ window.removeEventListener("resize", measure);
60
+ };
61
+ }, [container, measurement, measure]);
62
+ return {
63
+ containerRef: setContainer,
64
+ measurementRef: setMeasurement,
65
+ visibleCount
66
+ };
67
+ }
68
+ exports.runtimeBarInlineCount = runtimeBarInlineCount;
69
+ exports.useRuntimeBarOverflow = useRuntimeBarOverflow;
70
+ //# sourceMappingURL=use-runtime-bar-overflow.cjs.map
@@ -0,0 +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;;;"}
@@ -0,0 +1,13 @@
1
+ export declare function runtimeBarInlineCount({ width, identity, trigger, fields, gap, }: {
2
+ width: number;
3
+ identity: number;
4
+ trigger: number;
5
+ fields: number[];
6
+ gap: number;
7
+ }): number;
8
+ export declare function useRuntimeBarOverflow(): {
9
+ containerRef: import('react').Dispatch<import('react').SetStateAction<HTMLDivElement | null>>;
10
+ measurementRef: import('react').Dispatch<import('react').SetStateAction<HTMLDivElement | null>>;
11
+ visibleCount: number;
12
+ };
13
+ //# sourceMappingURL=use-runtime-bar-overflow.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,70 @@
1
+ import { useState, useCallback, useLayoutEffect } from "react";
2
+ function runtimeBarInlineCount({
3
+ width,
4
+ identity,
5
+ trigger,
6
+ fields,
7
+ gap
8
+ }) {
9
+ let occupied = identity + trigger + gap;
10
+ let count = 0;
11
+ for (const field of fields) {
12
+ occupied += field + gap;
13
+ if (occupied > width) break;
14
+ count++;
15
+ }
16
+ return count;
17
+ }
18
+ function useRuntimeBarOverflow() {
19
+ const [container, setContainer] = useState(null);
20
+ const [measurement, setMeasurement] = useState(null);
21
+ const [visibleCount, setVisibleCount] = useState(Infinity);
22
+ const measure = useCallback(() => {
23
+ if (!container || !measurement) return;
24
+ const width = container.getBoundingClientRect().width;
25
+ if (width <= 0) return;
26
+ const [identity, ...controls] = [...measurement.children];
27
+ const trigger = controls.pop();
28
+ if (!identity || !trigger)
29
+ throw new Error(
30
+ "Runtime bar measurement requires identity and a menu trigger"
31
+ );
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
+ const count = runtimeBarInlineCount({
37
+ width: width - 2,
38
+ identity: identity.getBoundingClientRect().width,
39
+ trigger: trigger.getBoundingClientRect().width,
40
+ fields: controls.map((node) => node.getBoundingClientRect().width),
41
+ gap
42
+ });
43
+ setVisibleCount((previous) => previous === count ? previous : count);
44
+ }, [container, measurement]);
45
+ useLayoutEffect(() => {
46
+ measure();
47
+ });
48
+ useLayoutEffect(() => {
49
+ if (!container || !measurement) return;
50
+ measure();
51
+ const observer = typeof ResizeObserver === "undefined" ? void 0 : new ResizeObserver(measure);
52
+ observer == null ? void 0 : observer.observe(container);
53
+ observer == null ? void 0 : observer.observe(measurement);
54
+ window.addEventListener("resize", measure);
55
+ return () => {
56
+ observer == null ? void 0 : observer.disconnect();
57
+ window.removeEventListener("resize", measure);
58
+ };
59
+ }, [container, measurement, measure]);
60
+ return {
61
+ containerRef: setContainer,
62
+ measurementRef: setMeasurement,
63
+ visibleCount
64
+ };
65
+ }
66
+ export {
67
+ runtimeBarInlineCount,
68
+ useRuntimeBarOverflow
69
+ };
70
+ //# sourceMappingURL=use-runtime-bar-overflow.js.map
@@ -0,0 +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;"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const react = require("react");
4
+ const graphDiagramModel = require("./graph-diagram-model.cjs");
5
+ function useEdgeFocus({ mode, edges, selectedId, selectedEdgeId }) {
6
+ const [hoveredNode, setHoveredNode] = react.useState();
7
+ const [hoveredEdge, setHoveredEdge] = react.useState();
8
+ const on = graphDiagramModel.edgeFocusOn(mode, edges.length);
9
+ const state = react.useMemo(
10
+ () => on ? {
11
+ focused: graphDiagramModel.focusedEdgeIds(edges, { nodes: [selectedId, hoveredNode], edges: [selectedEdgeId, hoveredEdge] }),
12
+ pinned: graphDiagramModel.focusedEdgeIds(edges, { nodes: [selectedId], edges: [selectedEdgeId] }),
13
+ nodes: new Set([selectedId, hoveredNode].filter((id) => id !== void 0))
14
+ } : void 0,
15
+ [on, edges, selectedId, selectedEdgeId, hoveredNode, hoveredEdge]
16
+ );
17
+ return { state, onNodeHover: on ? setHoveredNode : void 0, onEdgeHover: on ? setHoveredEdge : void 0 };
18
+ }
19
+ exports.useEdgeFocus = useEdgeFocus;
20
+ //# sourceMappingURL=use-edge-focus.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-edge-focus.cjs","sources":["../../src/data/use-edge-focus.ts"],"sourcesContent":["import { useMemo, useState } from \"react\";\nimport { edgeFocusOn, focusedEdgeIds, type GraphDiagramEdge, type GraphDiagramEdgeFocus } from \"./graph-diagram-model\";\n\nexport interface EdgeFocusState {\n /** Every edge in focus, by selection or by hover. Empty when nothing is. */\n focused: ReadonlySet<string>;\n /** The edges the selection put in focus. Their pills stay put, so they take the pointer. */\n pinned: ReadonlySet<string>;\n /** The nodes in focus: the selected one and the hovered one. */\n nodes: ReadonlySet<string>;\n}\n\nexport interface EdgeFocus {\n /** Undefined when the diagram is not focused: every edge then draws in full, with its pill. */\n state: EdgeFocusState | undefined;\n onNodeHover: ((id: string | undefined) => void) | undefined;\n onEdgeHover: ((id: string | undefined) => void) | undefined;\n}\n\nexport interface UseEdgeFocusOptions {\n mode: GraphDiagramEdgeFocus;\n edges: readonly GraphDiagramEdge[];\n selectedId: string | undefined;\n selectedEdgeId: string | undefined;\n}\n\nexport function useEdgeFocus({ mode, edges, selectedId, selectedEdgeId }: UseEdgeFocusOptions): EdgeFocus {\n const [hoveredNode, setHoveredNode] = useState<string>();\n const [hoveredEdge, setHoveredEdge] = useState<string>();\n const on = edgeFocusOn(mode, edges.length);\n const state = useMemo(\n () =>\n on\n ? {\n focused: focusedEdgeIds(edges, { nodes: [selectedId, hoveredNode], edges: [selectedEdgeId, hoveredEdge] }),\n pinned: focusedEdgeIds(edges, { nodes: [selectedId], edges: [selectedEdgeId] }),\n nodes: new Set([selectedId, hoveredNode].filter((id): id is string => id !== undefined)),\n }\n : undefined,\n [on, edges, selectedId, selectedEdgeId, hoveredNode, hoveredEdge],\n );\n return { state, onNodeHover: on ? setHoveredNode : undefined, onEdgeHover: on ? setHoveredEdge : undefined };\n}\n"],"names":["useState","edgeFocusOn","useMemo","focusedEdgeIds"],"mappings":";;;;AA0BO,SAAS,aAAa,EAAE,MAAM,OAAO,YAAY,kBAAkD;AACxG,QAAM,CAAC,aAAa,cAAc,IAAIA,eAAA;AACtC,QAAM,CAAC,aAAa,cAAc,IAAIA,eAAA;AACtC,QAAM,KAAKC,kBAAAA,YAAY,MAAM,MAAM,MAAM;AACzC,QAAM,QAAQC,MAAAA;AAAAA,IACZ,MACE,KACI;AAAA,MACE,SAASC,kBAAAA,eAAe,OAAO,EAAE,OAAO,CAAC,YAAY,WAAW,GAAG,OAAO,CAAC,gBAAgB,WAAW,GAAG;AAAA,MACzG,QAAQA,kBAAAA,eAAe,OAAO,EAAE,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,cAAc,GAAG;AAAA,MAC9E,OAAO,IAAI,IAAI,CAAC,YAAY,WAAW,EAAE,OAAO,CAAC,OAAqB,OAAO,MAAS,CAAC;AAAA,IAAA,IAEzF;AAAA,IACN,CAAC,IAAI,OAAO,YAAY,gBAAgB,aAAa,WAAW;AAAA,EAAA;AAElE,SAAO,EAAE,OAAO,aAAa,KAAK,iBAAiB,QAAW,aAAa,KAAK,iBAAiB,OAAA;AACnG;;"}
@@ -0,0 +1,23 @@
1
+ import { GraphDiagramEdge, GraphDiagramEdgeFocus } from './graph-diagram-model.js';
2
+ export interface EdgeFocusState {
3
+ /** Every edge in focus, by selection or by hover. Empty when nothing is. */
4
+ focused: ReadonlySet<string>;
5
+ /** The edges the selection put in focus. Their pills stay put, so they take the pointer. */
6
+ pinned: ReadonlySet<string>;
7
+ /** The nodes in focus: the selected one and the hovered one. */
8
+ nodes: ReadonlySet<string>;
9
+ }
10
+ export interface EdgeFocus {
11
+ /** Undefined when the diagram is not focused: every edge then draws in full, with its pill. */
12
+ state: EdgeFocusState | undefined;
13
+ onNodeHover: ((id: string | undefined) => void) | undefined;
14
+ onEdgeHover: ((id: string | undefined) => void) | undefined;
15
+ }
16
+ export interface UseEdgeFocusOptions {
17
+ mode: GraphDiagramEdgeFocus;
18
+ edges: readonly GraphDiagramEdge[];
19
+ selectedId: string | undefined;
20
+ selectedEdgeId: string | undefined;
21
+ }
22
+ export declare function useEdgeFocus({ mode, edges, selectedId, selectedEdgeId }: UseEdgeFocusOptions): EdgeFocus;
23
+ //# sourceMappingURL=use-edge-focus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-edge-focus.d.ts","sourceRoot":"","sources":["../../src/data/use-edge-focus.ts"],"names":[],"mappings":"AACA,OAAO,EAA+B,KAAK,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEvH,MAAM,WAAW,cAAc;IAC7B,4EAA4E;IAC5E,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,4FAA4F;IAC5F,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5B,gEAAgE;IAChE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,SAAS;IACxB,+FAA+F;IAC/F,KAAK,EAAE,cAAc,GAAG,SAAS,CAAC;IAClC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC5D,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAC7D;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,KAAK,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACnC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC;AAED,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,mBAAmB,GAAG,SAAS,CAgBxG"}
@@ -0,0 +1,20 @@
1
+ import { useState, useMemo } from "react";
2
+ import { edgeFocusOn, focusedEdgeIds } from "./graph-diagram-model.js";
3
+ function useEdgeFocus({ mode, edges, selectedId, selectedEdgeId }) {
4
+ const [hoveredNode, setHoveredNode] = useState();
5
+ const [hoveredEdge, setHoveredEdge] = useState();
6
+ const on = edgeFocusOn(mode, edges.length);
7
+ const state = useMemo(
8
+ () => on ? {
9
+ focused: focusedEdgeIds(edges, { nodes: [selectedId, hoveredNode], edges: [selectedEdgeId, hoveredEdge] }),
10
+ pinned: focusedEdgeIds(edges, { nodes: [selectedId], edges: [selectedEdgeId] }),
11
+ nodes: new Set([selectedId, hoveredNode].filter((id) => id !== void 0))
12
+ } : void 0,
13
+ [on, edges, selectedId, selectedEdgeId, hoveredNode, hoveredEdge]
14
+ );
15
+ return { state, onNodeHover: on ? setHoveredNode : void 0, onEdgeHover: on ? setHoveredEdge : void 0 };
16
+ }
17
+ export {
18
+ useEdgeFocus
19
+ };
20
+ //# sourceMappingURL=use-edge-focus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-edge-focus.js","sources":["../../src/data/use-edge-focus.ts"],"sourcesContent":["import { useMemo, useState } from \"react\";\nimport { edgeFocusOn, focusedEdgeIds, type GraphDiagramEdge, type GraphDiagramEdgeFocus } from \"./graph-diagram-model\";\n\nexport interface EdgeFocusState {\n /** Every edge in focus, by selection or by hover. Empty when nothing is. */\n focused: ReadonlySet<string>;\n /** The edges the selection put in focus. Their pills stay put, so they take the pointer. */\n pinned: ReadonlySet<string>;\n /** The nodes in focus: the selected one and the hovered one. */\n nodes: ReadonlySet<string>;\n}\n\nexport interface EdgeFocus {\n /** Undefined when the diagram is not focused: every edge then draws in full, with its pill. */\n state: EdgeFocusState | undefined;\n onNodeHover: ((id: string | undefined) => void) | undefined;\n onEdgeHover: ((id: string | undefined) => void) | undefined;\n}\n\nexport interface UseEdgeFocusOptions {\n mode: GraphDiagramEdgeFocus;\n edges: readonly GraphDiagramEdge[];\n selectedId: string | undefined;\n selectedEdgeId: string | undefined;\n}\n\nexport function useEdgeFocus({ mode, edges, selectedId, selectedEdgeId }: UseEdgeFocusOptions): EdgeFocus {\n const [hoveredNode, setHoveredNode] = useState<string>();\n const [hoveredEdge, setHoveredEdge] = useState<string>();\n const on = edgeFocusOn(mode, edges.length);\n const state = useMemo(\n () =>\n on\n ? {\n focused: focusedEdgeIds(edges, { nodes: [selectedId, hoveredNode], edges: [selectedEdgeId, hoveredEdge] }),\n pinned: focusedEdgeIds(edges, { nodes: [selectedId], edges: [selectedEdgeId] }),\n nodes: new Set([selectedId, hoveredNode].filter((id): id is string => id !== undefined)),\n }\n : undefined,\n [on, edges, selectedId, selectedEdgeId, hoveredNode, hoveredEdge],\n );\n return { state, onNodeHover: on ? setHoveredNode : undefined, onEdgeHover: on ? setHoveredEdge : undefined };\n}\n"],"names":[],"mappings":";;AA0BO,SAAS,aAAa,EAAE,MAAM,OAAO,YAAY,kBAAkD;AACxG,QAAM,CAAC,aAAa,cAAc,IAAI,SAAA;AACtC,QAAM,CAAC,aAAa,cAAc,IAAI,SAAA;AACtC,QAAM,KAAK,YAAY,MAAM,MAAM,MAAM;AACzC,QAAM,QAAQ;AAAA,IACZ,MACE,KACI;AAAA,MACE,SAAS,eAAe,OAAO,EAAE,OAAO,CAAC,YAAY,WAAW,GAAG,OAAO,CAAC,gBAAgB,WAAW,GAAG;AAAA,MACzG,QAAQ,eAAe,OAAO,EAAE,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,cAAc,GAAG;AAAA,MAC9E,OAAO,IAAI,IAAI,CAAC,YAAY,WAAW,EAAE,OAAO,CAAC,OAAqB,OAAO,MAAS,CAAC;AAAA,IAAA,IAEzF;AAAA,IACN,CAAC,IAAI,OAAO,YAAY,gBAAgB,aAAa,WAAW;AAAA,EAAA;AAElE,SAAO,EAAE,OAAO,aAAa,KAAK,iBAAiB,QAAW,aAAa,KAAK,iBAAiB,OAAA;AACnG;"}